mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge pull request #932 from davidharrishmc/dev
Added temporary --fcov2 option to start adopting open-source riscvISACOV
This commit is contained in:
commit
2dd897e7e1
11
bin/wsim
11
bin/wsim
@ -28,6 +28,7 @@ parser.add_argument("--tb", "-t", help="Testbench", choices=["testbench", "testb
|
|||||||
parser.add_argument("--gui", "-g", help="Simulate with GUI", action="store_true")
|
parser.add_argument("--gui", "-g", help="Simulate with GUI", action="store_true")
|
||||||
parser.add_argument("--ccov", "-c", help="Code Coverage", action="store_true")
|
parser.add_argument("--ccov", "-c", help="Code Coverage", action="store_true")
|
||||||
parser.add_argument("--fcov", "-f", help="Functional Coverage, implies lockstep", action="store_true")
|
parser.add_argument("--fcov", "-f", help="Functional Coverage, implies lockstep", action="store_true")
|
||||||
|
parser.add_argument("--fcov2", "-f2", help="Functional Coverage, implies lockstep", action="store_true")
|
||||||
parser.add_argument("--fcovrvvi", "-fr", help="Functional Coverage RVVI", action="store_true")
|
parser.add_argument("--fcovrvvi", "-fr", help="Functional Coverage RVVI", action="store_true")
|
||||||
parser.add_argument("--args", "-a", help="Optional arguments passed to simulator via $value$plusargs", default="")
|
parser.add_argument("--args", "-a", help="Optional arguments passed to simulator via $value$plusargs", default="")
|
||||||
parser.add_argument("--vcd", "-v", help="Generate testbench.vcd", action="store_true")
|
parser.add_argument("--vcd", "-v", help="Generate testbench.vcd", action="store_true")
|
||||||
@ -66,7 +67,7 @@ if(args.testsuite.endswith('.elf') and args.elf == ""): # No --elf argument; che
|
|||||||
|
|
||||||
|
|
||||||
# Validate arguments
|
# Validate arguments
|
||||||
if (args.gui or args.ccov or args.fcov or args.fcovrvvi or args.lockstep):
|
if (args.gui or args.ccov or args.fcov or args.fcov2 or args.fcovrvvi or args.lockstep):
|
||||||
if args.sim not in ["questa", "vcs"]:
|
if args.sim not in ["questa", "vcs"]:
|
||||||
print("Option only supported for Questa and VCS")
|
print("Option only supported for Questa and VCS")
|
||||||
exit(1)
|
exit(1)
|
||||||
@ -90,6 +91,12 @@ if (args.lockstep):
|
|||||||
else: EnableLog = 0
|
else: EnableLog = 0
|
||||||
ImperasPlusArgs = " +IDV_TRACE2COV=" + str(EnableLog) + " +TRACE2LOG_AFTER=" + str(args.covlog) + " +TRACE2COV_ENABLE=" + CovEnableStr;
|
ImperasPlusArgs = " +IDV_TRACE2COV=" + str(EnableLog) + " +TRACE2LOG_AFTER=" + str(args.covlog) + " +TRACE2COV_ENABLE=" + CovEnableStr;
|
||||||
suffix = ""
|
suffix = ""
|
||||||
|
if(args.fcov2):
|
||||||
|
CovEnableStr = "1" if int(args.covlog) > 0 else "0";
|
||||||
|
if(args.covlog >= 1): EnableLog = 1
|
||||||
|
else: EnableLog = 0
|
||||||
|
ImperasPlusArgs = " +IDV_TRACE2COV=" + str(EnableLog) + " +TRACE2LOG_AFTER=" + str(args.covlog) + " +TRACE2COV_ENABLE=" + CovEnableStr;
|
||||||
|
suffix = ""
|
||||||
else:
|
else:
|
||||||
CovEnableStr = ""
|
CovEnableStr = ""
|
||||||
suffix = "--lockstep"
|
suffix = "--lockstep"
|
||||||
@ -104,6 +111,8 @@ if (args.ccov):
|
|||||||
flags += " --ccov"
|
flags += " --ccov"
|
||||||
if (args.fcov):
|
if (args.fcov):
|
||||||
flags += " --fcov"
|
flags += " --fcov"
|
||||||
|
if (args.fcov2):
|
||||||
|
flags += " --fcov2"
|
||||||
if (args.fcovrvvi):
|
if (args.fcovrvvi):
|
||||||
flags += "--fcovrvvi"
|
flags += "--fcovrvvi"
|
||||||
|
|
||||||
|
@ -148,11 +148,33 @@ if {$FunctCoverageIndex >= 0} {
|
|||||||
set FCdefineIDV_TRACE2COV "+IDV_TRACE2COV=1"
|
set FCdefineIDV_TRACE2COV "+IDV_TRACE2COV=1"
|
||||||
set lst [lreplace $lst $FunctCoverageIndex $FunctCoverageIndex]
|
set lst [lreplace $lst $FunctCoverageIndex $FunctCoverageIndex]
|
||||||
}\
|
}\
|
||||||
|
|
||||||
|
set FunctCoverageIndex2 [lsearch -exact $lst "--fcov2"]
|
||||||
|
if {$FunctCoverageIndex2 >= 0} {
|
||||||
|
set FunctCoverage 1
|
||||||
|
set riscvISACOVsrc +incdir+$env(IMPERAS_HOME)/ImpProprietary/source/host/riscvISACOV/source
|
||||||
|
|
||||||
|
set FCdefineINCLUDE_TRACE2COV "+define+INCLUDE_TRACE2COV"
|
||||||
|
set FCdefineCOVER_BASE_RV64I "+define+COVER_BASE_RV64I"
|
||||||
|
set FCdefineCOVER_LEVEL_DV_PR_EXT "+define+COVER_LEVEL_DV_PR_EXT"
|
||||||
|
# Uncomment various cover statements below to control which extensions get functional coverage
|
||||||
|
set FCdefineCOVER_RV64I "+define+COVER_RV64I"
|
||||||
|
#set FCdefineCOVER_RV64M "+define+COVER_RV64M"
|
||||||
|
#set FCdefineCOVER_RV64A "+define+COVER_RV64A"
|
||||||
|
#set FCdefineCOVER_RV64F "+define+COVER_RV64F"
|
||||||
|
#set FCdefineCOVER_RV64D "+define+COVER_RV64D"
|
||||||
|
#set FCdefineCOVER_RV64ZICSR "+define+COVER_RV64ZICSR"
|
||||||
|
#set FCdefineCOVER_RV64C "+define+COVER_RV64C"
|
||||||
|
set FCdefineIDV_INCLUDE_TRACE2COV "+define+IDV_INCLUDE_TRACE2COV"
|
||||||
|
set FCTRACE2COV "+TRACE2COV_ENABLE=1"
|
||||||
|
set FCdefineIDV_TRACE2COV "+IDV_TRACE2COV=1"
|
||||||
|
set lst [lreplace $lst $FunctCoverageIndex2 $FunctCoverageIndex2]
|
||||||
|
}\
|
||||||
|
|
||||||
set LockStepIndex [lsearch -exact $lst "--lockstep"]
|
set LockStepIndex [lsearch -exact $lst "--lockstep"]
|
||||||
# ugh. can't have more than 9 arguments passed to vsim. why? I'll have to remove --lockstep when running
|
# ugh. can't have more than 9 arguments passed to vsim. why? I'll have to remove --lockstep when running
|
||||||
# functional coverage and imply it.
|
# functional coverage and imply it.
|
||||||
if {$LockStepIndex >= 0 || $FunctCoverageIndex >= 0} {
|
if {$LockStepIndex >= 0 || $FunctCoverageIndex >= 0 || $FunctCoverageIndex2 >= 0} {
|
||||||
set lockstep 1
|
set lockstep 1
|
||||||
|
|
||||||
# ideally this would all be one or two variables, but questa is having a real hard time
|
# ideally this would all be one or two variables, but questa is having a real hard time
|
||||||
|
Loading…
Reference in New Issue
Block a user