riscv-isac icon indicating copy to clipboard operation
riscv-isac copied to clipboard

KeyError: 'inxFlag' when try to generating RV32H

Open Pagerd opened this issue 1 year ago • 2 comments

after pr #94,isac still reports an error when executing RV32H tests


pager@pager-virtual-machine:~/Desktop/work/riscv-ctg$ riscv_ctg                --cgf ./sample_cgfs/dataset.cgf  --cgf ./sample_cgfs/sample_cgfs_fext/RV32H/rv32h_fcvt.d.h.cgf --base-isa rv32i
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 51, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/ctg.py", line 79, in create_test
    gen_test(op_node, opcode)
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/ctg.py", line 52, in gen_test
    gen.gen_inst(op_comb, val_comb, node)))))
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/generator.py", line 939, in gen_inst
    cover_hits = eval_inst_coverage(cgf,instr)
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/generator.py", line 891, in eval_inst_coverage
    ext_specific_vars = instr_obj.evaluate_instr_var("ext_specific_vars", {**var_dict, 'flen': self.flen, 'iflen': self.iflen}, None, {'fcsr': hex(var_dict.get('fcsr', 0))})
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_isac/InstructionObject.py", line 351, in evaluate_instr_var
    return func(self, *args)
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_isac/InstructionObject.py", line 601, in evaluate_f_ext_sem
    self.evaluate_reg_sem_f_ext(instr_vars['rs1_val'], instr_vars['flen'], instr_vars['iflen'], "1", f_ext_vars, instr_vars['inxFlag'], instr_vars['xlen'])
KeyError: 'inxFlag'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/pager/.local/bin/riscv_ctg", line 8, in <module>
    sys.exit(cli())
  File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/main.py", line 30, in cli
    ctg(verbose, out_dir, randomize ,xlen, int(flen), cgf,procs,base_isa,inst,z_inx)
  File "/home/pager/.local/lib/python3.10/site-packages/riscv_ctg/ctg.py", line 137, in ctg
    results = pool.starmap(create_test, [(usage_str, node,label,base_isa,max_inst, op_template,
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 375, in starmap
    return self._map_async(func, iterable, starmapstar, chunksize).get()
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 774, in get
    raise self._value
KeyError: 'inxFlag'


Pagerd avatar Aug 29 '24 19:08 Pagerd

I guess riscv-ctg is broken too because of this new flag. riscv-ctg is the test generator, so that should be the better place to post this issue. riscv-isac is the coverage tool, it has no relationship with test generation. Thanks for pointing that out. I have noted this issue, I will check ctg source code to rectify this issue.

UmerShahidengr avatar Aug 30 '24 05:08 UmerShahidengr

Yes, the problem is from ctg. I did not add --z-inx True to the command, but after adding it, new problems appeared.

pager@pager-virtual-machine:~/Desktop/work/riscv-ctg$ riscv_ctg --base-isa rv32i --flen 32 --cgf ./sample_cgfs/dataset.cgf --cgf ./sample_cgfs/sample_cgfs_fext/RV32H/rv32h_fcvt.d.h.cgf -d ./tests/ -v debug --z-inx True
    INFO | ****** RISC-V Compliance Test Generator 0.12.2 *******
    INFO | Copyright (c) 2020, InCore Semiconductors Pvt. Ltd.
    INFO | All Rights Reserved.
    INFO | Copying env folder to Output directory.
   DEBUG | Generated   24 16-bit coverpoints using Model B1 for fcvt.d.h !
   DEBUG | Generated    8 16-bit coverpoints using Model B22 for fcvt.d !
   DEBUG | Generated   45 16-bit coverpoints using Model B23 for fcvt.d !
   DEBUG | Generated  160 16-bit coverpoints using Model B24 for fcvt.d !
   DEBUG | Generated    8 16-bit coverpoints using Model B27 for fcvt.d !
   DEBUG | Generated   28 16-bit coverpoints using Model B28 for fcvt.d !
   DEBUG | Generated   80 16-bit coverpoints using Model B29 for fcvt.d.h !
 WARNING | Neither mnemonics nor csr_comb node not found in covergroup: datasets
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping
 WARNING | fcvt.d.h not found in template file. Skipping

It seems that when --z-inx True, the nodes in fd.yaml will be deleted, but the fcvt.d.h instructions in Zfh are in fd.yaml, so no test cases can be generated

Pagerd avatar Sep 03 '24 14:09 Pagerd