forked from Github_Repos/cvw
Modified regression and wally-batch.do to support -coverage
This commit is contained in:
parent
06b99035d4
commit
a3691cc5f7
@ -27,6 +27,8 @@ from collections import namedtuple
|
|||||||
regressionDir = os.path.dirname(os.path.abspath(__file__))
|
regressionDir = os.path.dirname(os.path.abspath(__file__))
|
||||||
os.chdir(regressionDir)
|
os.chdir(regressionDir)
|
||||||
|
|
||||||
|
coverage = '-coverage' in sys.argv
|
||||||
|
|
||||||
TestCase = namedtuple("TestCase", ['name', 'variant', 'cmd', 'grepstr'])
|
TestCase = namedtuple("TestCase", ['name', 'variant', 'cmd', 'grepstr'])
|
||||||
# name: the name of this test configuration (used in printing human-readable
|
# name: the name of this test configuration (used in printing human-readable
|
||||||
# output and picking logfile names)
|
# output and picking logfile names)
|
||||||
@ -66,14 +68,6 @@ tc = TestCase(
|
|||||||
configs.append(tc)
|
configs.append(tc)
|
||||||
|
|
||||||
tests64gcimperas = ["imperas64i", "imperas64f", "imperas64d", "imperas64m", "imperas64c"] # unused
|
tests64gcimperas = ["imperas64i", "imperas64f", "imperas64d", "imperas64m", "imperas64c"] # unused
|
||||||
tests64gc = ["arch64f", "arch64d", "arch64i", "arch64priv", "arch64c", "arch64m", "arch64zi", "wally64a", "wally64periph", "wally64priv"]
|
|
||||||
for test in tests64gc:
|
|
||||||
tc = TestCase(
|
|
||||||
name=test,
|
|
||||||
variant="rv64gc",
|
|
||||||
cmd="vsim > {} -c <<!\ndo wally-batch.do rv64gc "+test+"\n!",
|
|
||||||
grepstr="All tests ran without failures")
|
|
||||||
configs.append(tc)
|
|
||||||
|
|
||||||
tests64i = ["arch64i"]
|
tests64i = ["arch64i"]
|
||||||
for test in tests64i:
|
for test in tests64i:
|
||||||
@ -131,6 +125,21 @@ for test in ahbTests:
|
|||||||
cmd="vsim > {} -c <<!\ndo wally-batch.do rv64gc ahb "+test[0]+" "+test[1]+"\n!",
|
cmd="vsim > {} -c <<!\ndo wally-batch.do rv64gc ahb "+test[0]+" "+test[1]+"\n!",
|
||||||
grepstr="All tests ran without failures")
|
grepstr="All tests ran without failures")
|
||||||
configs.append(tc)
|
configs.append(tc)
|
||||||
|
|
||||||
|
#tests64gc = ["arch64f", "arch64d", "arch64i", "arch64priv", "arch64c", "arch64m", "arch64zi", "wally64a", "wally64periph", "wally64priv"]
|
||||||
|
tests64gc = ["arch64i", "arch64c", "arch64m"]
|
||||||
|
if (coverage): # delete all but 64gc tests when running coverage
|
||||||
|
configs = []
|
||||||
|
coverStr = '-coverage'
|
||||||
|
else:
|
||||||
|
coverStr = ''
|
||||||
|
for test in tests64gc:
|
||||||
|
tc = TestCase(
|
||||||
|
name=test,
|
||||||
|
variant="rv64gc",
|
||||||
|
cmd="vsim > {} -c <<!\ndo wally-batch.do rv64gc "+test+" " + coverStr + "\n!",
|
||||||
|
grepstr="All tests ran without failures")
|
||||||
|
configs.append(tc)
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -158,7 +167,7 @@ def run_test_case(config):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""Run the tests and count the failures"""
|
"""Run the tests and count the failures"""
|
||||||
global configs
|
global configs, coverage
|
||||||
try:
|
try:
|
||||||
os.chdir(regressionDir)
|
os.chdir(regressionDir)
|
||||||
os.mkdir("logs")
|
os.mkdir("logs")
|
||||||
@ -183,6 +192,10 @@ def main():
|
|||||||
elif '-buildroot' in sys.argv:
|
elif '-buildroot' in sys.argv:
|
||||||
TIMEOUT_DUR = 30*7200 # seconds
|
TIMEOUT_DUR = 30*7200 # seconds
|
||||||
configs=[getBuildrootTC(boot=True)]
|
configs=[getBuildrootTC(boot=True)]
|
||||||
|
elif '-coverage' in sys.argv:
|
||||||
|
TIMEOUT_DUR = 20*60 # seconds
|
||||||
|
#configs.append(getBuildrootTC(boot=False))
|
||||||
|
os.system('rm cov/*.ucdb')
|
||||||
else:
|
else:
|
||||||
TIMEOUT_DUR = 10*60 # seconds
|
TIMEOUT_DUR = 10*60 # seconds
|
||||||
configs.append(getBuildrootTC(boot=False))
|
configs.append(getBuildrootTC(boot=False))
|
||||||
@ -201,6 +214,11 @@ def main():
|
|||||||
num_fail+=1
|
num_fail+=1
|
||||||
print(f"{bcolors.FAIL}%s_%s: Timeout - runtime exceeded %d seconds{bcolors.ENDC}" % (config.variant, config.name, TIMEOUT_DUR))
|
print(f"{bcolors.FAIL}%s_%s: Timeout - runtime exceeded %d seconds{bcolors.ENDC}" % (config.variant, config.name, TIMEOUT_DUR))
|
||||||
|
|
||||||
|
# Coverage report
|
||||||
|
if coverage:
|
||||||
|
print('Generating coverage report')
|
||||||
|
os.system('vcover merge -out cov/cov.ucdb cov/rv64gc_arch64i.ucdb cov/rv64gc*.ucdb -logfile cov/log')
|
||||||
|
os.system('vcover report -details cov/cov.ucdb > cov/rv64gc_coverage.rpt')
|
||||||
# Count the number of failures
|
# Count the number of failures
|
||||||
if num_fail:
|
if num_fail:
|
||||||
print(f"{bcolors.FAIL}Regression failed with %s failed configurations{bcolors.ENDC}" % num_fail)
|
print(f"{bcolors.FAIL}Regression failed with %s failed configurations{bcolors.ENDC}" % num_fail)
|
||||||
|
@ -115,27 +115,26 @@ if {$2 eq "buildroot" || $2 eq "buildroot-checkpoint"} {
|
|||||||
vlog -lint -work wkdir/work_${1}_${2} +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583 -suppress 7063,2596,13286
|
vlog -lint -work wkdir/work_${1}_${2} +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583 -suppress 7063,2596,13286
|
||||||
# start and run simulation
|
# start and run simulation
|
||||||
# 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 wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbectf
|
if {$3 eq "-coverage"} {
|
||||||
# vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829 -coverage
|
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbectf
|
||||||
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
|
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829 -coverage
|
||||||
# Adding coverage increases runtime from 2:00 to 4:29. Can't run it all the time
|
} else {
|
||||||
#vopt work_$2.testbench -work work_$2 -o workopt_$2 +cover=sbectf
|
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt
|
||||||
#vsim -coverage -lib work_$2 workopt_$2
|
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
|
||||||
|
}
|
||||||
|
# vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
|
||||||
# power add generates the logging necessary for said generation.
|
# power add generates the logging necessary for said generation.
|
||||||
# power add -r /dut/core/*
|
# power add -r /dut/core/*
|
||||||
run -all
|
run -all
|
||||||
# power off -r /dut/core/*
|
# power off -r /dut/core/*
|
||||||
}
|
}
|
||||||
|
|
||||||
coverage save -instance /testbench/dut cov/${1}_${2}.ucdb
|
if {$3 eq "-coverage"} {
|
||||||
#vcover merge -out cov/cov.ucdb cov/rv*.ucdb
|
do coverage-exclusions.do
|
||||||
#vcover merge -out cov/cov.ucdb cov/rv64gc_arch64i.ucdb cov/rv64gc*.ucdb -logfile cov/log
|
coverage save -instance /testbench/dut cov/${1}_${2}.ucdb
|
||||||
|
}
|
||||||
|
|
||||||
#vcover merge -out cov/cov.ucdb cov
|
|
||||||
#vcover report cov/cov.ucdb > cov/rpt
|
|
||||||
#coverage report -file wally-coverage.txt
|
|
||||||
# These aren't doing anything helpful
|
# These aren't doing anything helpful
|
||||||
#coverage report -memory
|
|
||||||
#profile report -calltree -file wally-calltree.rpt -cutoff 2
|
#profile report -calltree -file wally-calltree.rpt -cutoff 2
|
||||||
#power report -all -bsaif power.saif
|
#power report -all -bsaif power.saif
|
||||||
quit
|
quit
|
||||||
|
Loading…
Reference in New Issue
Block a user