mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Move most of the fcov defines and args into wsim
This commit is contained in:
parent
410c279396
commit
fe4a0c1b7b
11
bin/wsim
11
bin/wsim
@ -81,6 +81,7 @@ def prepSim(args, ElfFile):
|
|||||||
paramsList = []
|
paramsList = []
|
||||||
argsList = []
|
argsList = []
|
||||||
flagsList = []
|
flagsList = []
|
||||||
|
defineList = []
|
||||||
if args.vcd:
|
if args.vcd:
|
||||||
paramsList.append("MAKE_VCD=1")
|
paramsList.append("MAKE_VCD=1")
|
||||||
if args.rvvi:
|
if args.rvvi:
|
||||||
@ -95,15 +96,19 @@ def prepSim(args, ElfFile):
|
|||||||
flagsList.append("--ccov")
|
flagsList.append("--ccov")
|
||||||
if args.fcov:
|
if args.fcov:
|
||||||
flagsList.append("--fcov")
|
flagsList.append("--fcov")
|
||||||
|
defineList.append("+define+INCLUDE_TRACE2COV", "+define+IDV_INCLUDE_TRACE2COV", "+define+COVER_BASE_RV32I") # COVER_BASE_RV32I is just needed to keep riscvISACOV happy, but does not affect tests
|
||||||
|
argsList.append("+TRACE2COV_ENABLE=1", "+IDV_TRACE2COV=1")
|
||||||
if args.gui:
|
if args.gui:
|
||||||
flagsList.append("--gui")
|
flagsList.append("--gui")
|
||||||
if args.lockstep or args.lockstepverbose:
|
if args.lockstep or args.lockstepverbose:
|
||||||
flagsList.append("--lockstep")
|
flagsList.append("--lockstep")
|
||||||
if args.lockstep or args.lockstepverbose or args.fcov:
|
if args.lockstep or args.lockstepverbose or args.fcov:
|
||||||
prefix = lockstepSetup(args)
|
prefix = lockstepSetup(args)
|
||||||
|
defineList.append("+define+USE_IMPERAS_DV")
|
||||||
# Combine into a single string
|
# Combine into a single string
|
||||||
args.args += " ".join(argsList)
|
args.args += " ".join(argsList)
|
||||||
args.params += " ".join(paramsList)
|
args.params += " ".join(paramsList)
|
||||||
|
args.define += " ".join(defineList)
|
||||||
flags = " ".join(flagsList)
|
flags = " ".join(flagsList)
|
||||||
return flags, prefix
|
return flags, prefix
|
||||||
|
|
||||||
@ -140,7 +145,7 @@ def runQuesta(args, flags, prefix):
|
|||||||
if args.define != "":
|
if args.define != "":
|
||||||
args.define = fr'--define \"{args.define}\"'
|
args.define = fr'--define \"{args.define}\"'
|
||||||
# Questa cannot accept more than 9 arguments. fcov implies lockstep
|
# Questa cannot accept more than 9 arguments. fcov implies lockstep
|
||||||
cmd = f"do wally.do {args.config} {args.testsuite} {args.tb} {args.args} {args.params} {flags}"
|
cmd = f"do wally.do {args.config} {args.testsuite} {args.tb} {args.args} {args.params} {args.define} {flags}"
|
||||||
cmd = f'cd $WALLY/sim/questa; {prefix} vsim {"-c" if not args.gui else ""} -do "{cmd}"'
|
cmd = f'cd $WALLY/sim/questa; {prefix} vsim {"-c" if not args.gui else ""} -do "{cmd}"'
|
||||||
print(f"Running Questa with command: {cmd}")
|
print(f"Running Questa with command: {cmd}")
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
@ -157,13 +162,13 @@ def runVCS(args, flags, prefix):
|
|||||||
args.params = f'--params "{args.params}"'
|
args.params = f'--params "{args.params}"'
|
||||||
if args.define != "":
|
if args.define != "":
|
||||||
args.define = f'--define "{args.define}"'
|
args.define = f'--define "{args.define}"'
|
||||||
cmd = f"cd $WALLY/sim/vcs; {prefix} ./run_vcs {args.config} {args.testsuite} --tb {args.tb} {args.args} {args.params} {flags}"
|
cmd = f"cd $WALLY/sim/vcs; {prefix} ./run_vcs {args.config} {args.testsuite} --tb {args.tb} {args.args} {args.params} {args.define} {flags}"
|
||||||
print(cmd)
|
print(cmd)
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
validateArgs(args)
|
validateArgs(args)
|
||||||
print(f"Config={args.config} tests={args.testsuite} sim={args.sim} gui={args.gui} args='{args.args}' params='{args.params}'")
|
print(f"Config={args.config} tests={args.testsuite} sim={args.sim} gui={args.gui} args='{args.args}' params='{args.params}' define='{args.define}'")
|
||||||
ElfFile = elfFileCheck(args)
|
ElfFile = elfFileCheck(args)
|
||||||
flags, prefix = prepSim(args, ElfFile)
|
flags, prefix = prepSim(args, ElfFile)
|
||||||
createDirs(args.sim)
|
createDirs(args.sim)
|
||||||
|
@ -62,7 +62,6 @@ set CoverageVsimArg ""
|
|||||||
|
|
||||||
set FunctCoverage 0
|
set FunctCoverage 0
|
||||||
set FCvlog ""
|
set FCvlog ""
|
||||||
set FCvopt ""
|
|
||||||
|
|
||||||
set lockstep 0
|
set lockstep 0
|
||||||
set lockstepvlog ""
|
set lockstepvlog ""
|
||||||
@ -105,20 +104,14 @@ if {[lcheck lst "--ccov"]} {
|
|||||||
# if --fcov found set flag and remove from list
|
# if --fcov found set flag and remove from list
|
||||||
if {[lcheck lst "--fcov"]} {
|
if {[lcheck lst "--fcov"]} {
|
||||||
set FunctCoverage 1
|
set FunctCoverage 1
|
||||||
# COVER_BASE_RV32I is just needed to keep riscvISACOV happy, but no longer affects tests
|
set FCvlog "+incdir+$env(WALLY)/addins/cvw-arch-verif/riscvISACOV/source"
|
||||||
set FCvlog "+define+INCLUDE_TRACE2COV \
|
|
||||||
+define+IDV_INCLUDE_TRACE2COV \
|
|
||||||
+define+COVER_BASE_RV32I \
|
|
||||||
+incdir+$env(WALLY)/addins/cvw-arch-verif/riscvISACOV/source"
|
|
||||||
set FCvopt "+TRACE2COV_ENABLE=1 +IDV_TRACE2COV=1"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# if --lockstep or --fcov found set flag and remove from list
|
# if --lockstep or --fcov found set flag and remove from list
|
||||||
if {[lcheck lst "--lockstep"] || $FunctCoverage == 1} {
|
if {[lcheck lst "--lockstep"] || $FunctCoverage == 1} {
|
||||||
set IMPERAS_HOME $::env(IMPERAS_HOME)
|
set IMPERAS_HOME $::env(IMPERAS_HOME)
|
||||||
set lockstep 1
|
set lockstep 1
|
||||||
set lockstepvlog "+define+USE_IMPERAS_DV \
|
set lockstepvlog "+incdir+${IMPERAS_HOME}/ImpPublic/include/host \
|
||||||
+incdir+${IMPERAS_HOME}/ImpPublic/include/host \
|
|
||||||
+incdir+${IMPERAS_HOME}/ImpProprietary/include/host \
|
+incdir+${IMPERAS_HOME}/ImpProprietary/include/host \
|
||||||
${IMPERAS_HOME}/ImpPublic/source/host/rvvi/*.sv \
|
${IMPERAS_HOME}/ImpPublic/source/host/rvvi/*.sv \
|
||||||
${IMPERAS_HOME}/ImpProprietary/source/host/idv/*.sv"
|
${IMPERAS_HOME}/ImpProprietary/source/host/idv/*.sv"
|
||||||
@ -174,7 +167,7 @@ vlog -permissive -lint -work ${WKDIR} {*}${INC_DIRS} {*}{$DefineArgs} {*}${FCvlo
|
|||||||
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
|
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
|
||||||
vopt $accFlag wkdir/${CFG}_${TESTSUITE}.${TESTBENCH} -work ${WKDIR} {*}${ExpandedParamArgs} -o testbenchopt ${CoverageVoptArg}
|
vopt $accFlag wkdir/${CFG}_${TESTSUITE}.${TESTBENCH} -work ${WKDIR} {*}${ExpandedParamArgs} -o testbenchopt ${CoverageVoptArg}
|
||||||
|
|
||||||
vsim -lib ${WKDIR} testbenchopt +TEST=${TESTSUITE} {*}${PlusArgs} -fatal 7 {*}${SVLib} {*}${FCvopt} -suppress 3829 ${CoverageVsimArg}
|
vsim -lib ${WKDIR} testbenchopt +TEST=${TESTSUITE} {*}${PlusArgs} -fatal 7 {*}${SVLib} -suppress 3829 ${CoverageVsimArg}
|
||||||
|
|
||||||
# power add generates the logging necessary for saif generation.
|
# power add generates the logging necessary for saif generation.
|
||||||
# power add -r /dut/core/*
|
# power add -r /dut/core/*
|
||||||
|
@ -59,7 +59,7 @@ INCLUDE_PATH="+incdir+" + cfgdir + "/" + args.config + " +incdir+" + cfgdir + "/
|
|||||||
|
|
||||||
# lockstep mode
|
# lockstep mode
|
||||||
if (args.lockstep):
|
if (args.lockstep):
|
||||||
LOCKSTEP_OPTIONS = " +define+USE_IMPERAS_DV +incdir+$IMPERAS_HOME/ImpPublic/include/host +incdir+$IMPERAS_HOME/ImpProprietary/include/host $IMPERAS_HOME/ImpPublic/source/host/rvvi/*.sv $IMPERAS_HOME/ImpProprietary/source/host/idv/*.sv " + tbdir + "/common/wallyTracer.sv"
|
LOCKSTEP_OPTIONS = " +incdir+$IMPERAS_HOME/ImpPublic/include/host +incdir+$IMPERAS_HOME/ImpProprietary/include/host $IMPERAS_HOME/ImpPublic/source/host/rvvi/*.sv $IMPERAS_HOME/ImpProprietary/source/host/idv/*.sv " + tbdir + "/common/wallyTracer.sv"
|
||||||
LOCKSTEP_SIMV = "-sv_lib $IMPERAS_HOME/lib/Linux64/ImperasLib/imperas.com/verification/riscv/1.0/model"
|
LOCKSTEP_SIMV = "-sv_lib $IMPERAS_HOME/lib/Linux64/ImperasLib/imperas.com/verification/riscv/1.0/model"
|
||||||
else:
|
else:
|
||||||
LOCKSTEP_OPTIONS = ""
|
LOCKSTEP_OPTIONS = ""
|
||||||
|
Loading…
Reference in New Issue
Block a user