mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-03 02:05:21 +00:00
Updated to simplify configOptions.
This commit is contained in:
parent
a60e6ab6f1
commit
5ab88a5daa
@ -72,7 +72,7 @@ def getBuildrootTC(boot):
|
|||||||
BRcmd="vsim > {} -c <<!\ndo wally-batch.do buildroot buildroot $RISCV "+str(INSTR_LIMIT)+" 1 0 -coverage\n!"
|
BRcmd="vsim > {} -c <<!\ndo wally-batch.do buildroot buildroot $RISCV "+str(INSTR_LIMIT)+" 1 0 -coverage\n!"
|
||||||
else:
|
else:
|
||||||
print( "buildroot no coverage")
|
print( "buildroot no coverage")
|
||||||
BRcmd="vsim > {} -c <<!\ndo wally-batch.do buildroot configOptions buildroot -GINSTR_LIMIT=" +str(INSTR_LIMIT) + " \n!"
|
BRcmd="vsim > {} -c <<!\ndo wally-batch.do buildroot buildroot configOptions -GINSTR_LIMIT=" +str(INSTR_LIMIT) + " \n!"
|
||||||
BRgrepstr=str(INSTR_LIMIT)+" instructions"
|
BRgrepstr=str(INSTR_LIMIT)+" instructions"
|
||||||
return TestCase(name,variant="rv64gc",cmd=BRcmd,grepstr=BRgrepstr)
|
return TestCase(name,variant="rv64gc",cmd=BRcmd,grepstr=BRgrepstr)
|
||||||
|
|
||||||
@ -286,7 +286,7 @@ if (nightly):
|
|||||||
tests = test[1];
|
tests = test[1];
|
||||||
if(len(test) >= 4 and test[2] == "configOptions"):
|
if(len(test) >= 4 and test[2] == "configOptions"):
|
||||||
configOptions = test[3]
|
configOptions = test[3]
|
||||||
cmdPrefix = "vsim > {} -c <<!\ndo wally-batch.do "+config+" configOptions"
|
cmdPrefix = "vsim > {} -c <<!\ndo wally-batch.do "+config
|
||||||
else:
|
else:
|
||||||
configOptions = ""
|
configOptions = ""
|
||||||
cmdPrefix = "vsim > {} -c <<!\ndo wally-batch.do "+config
|
cmdPrefix = "vsim > {} -c <<!\ndo wally-batch.do "+config
|
||||||
@ -294,7 +294,7 @@ if (nightly):
|
|||||||
tc = TestCase(
|
tc = TestCase(
|
||||||
name=t,
|
name=t,
|
||||||
variant=config,
|
variant=config,
|
||||||
cmd=cmdPrefix+" "+t+" "+configOptions+"\n!",
|
cmd=cmdPrefix+" "+t+" configOption "+configOptions+"\n!",
|
||||||
grepstr="All tests ran without failures")
|
grepstr="All tests ran without failures")
|
||||||
configs.append(tc)
|
configs.append(tc)
|
||||||
|
|
||||||
|
@ -37,11 +37,24 @@ if {$2 eq "configOptions"} {
|
|||||||
mkdir -p cov
|
mkdir -p cov
|
||||||
|
|
||||||
# Check if measuring coverage
|
# Check if measuring coverage
|
||||||
set coverage 0
|
set coverage 0
|
||||||
|
set configOptions ""
|
||||||
|
puts "ARGUMENTS START"
|
||||||
|
puts $argc
|
||||||
|
puts $argv
|
||||||
|
puts "ARGUMENTS END"
|
||||||
if {$argc >= 3} {
|
if {$argc >= 3} {
|
||||||
if {$3 eq "-coverage" || ($argc >= 7 && $7 eq "-coverage")} {
|
if {$3 eq "-coverage" || ($argc >= 7 && $7 eq "-coverage")} {
|
||||||
set coverage 1
|
set coverage 1
|
||||||
|
} elseif {$3 eq "configOptions"} {
|
||||||
|
set Arguments [lrange $argv 2 2]
|
||||||
|
set ArgumentsTrim [string range $Arguments 1 end-1]
|
||||||
|
set tokens [regexp -all -inline {\S+} $ArgumentsTrim]
|
||||||
|
set params [lrange $tokens 5 end]
|
||||||
|
set configOptions $params
|
||||||
|
puts $params
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# compile source files
|
# compile source files
|
||||||
@ -51,47 +64,24 @@ if {$argc >= 3} {
|
|||||||
|
|
||||||
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
|
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
|
||||||
# do wally-pipelined-batch.do ../config/rv32imc rv32imc
|
# do wally-pipelined-batch.do ../config/rv32imc rv32imc
|
||||||
if {$2 eq "configOptions"} {
|
|
||||||
# set arguments " "
|
|
||||||
# for {set i 5} {$i <= $argc} {incr i} {
|
|
||||||
# append arguments "\$$i "
|
|
||||||
# }
|
|
||||||
# puts $arguments
|
|
||||||
# set options eval $arguments
|
|
||||||
# **** fix this so we can pass any number of +defines or top level params.
|
|
||||||
# only allows 1 right now
|
|
||||||
|
|
||||||
vlog -lint -work wkdir/work_${1}_${3}_${4} +incdir+../config/$1 +incdir+../config/deriv/$1 +incdir+../config/shared ../src/cvw.sv ../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/deriv/$1 +incdir+../config/shared ../src/cvw.sv ../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}_${3}_${4}.testbench -work wkdir/work_${1}_${3}_${4} -G TEST=$3 ${4} -o testbenchopt
|
if {$coverage} {
|
||||||
vsim -lib wkdir/work_${1}_${3}_${4} testbenchopt -fatal 7 -suppress 3829
|
# vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbectf
|
||||||
# Adding coverage increases runtime from 2:00 to 4:29. Can't run it all the time
|
|
||||||
#vopt work_$2.testbench -work work_$2 -o workopt_$2 +cover=sbectf
|
|
||||||
#vsim -coverage -lib work_$2 workopt_$2
|
|
||||||
# power add generates the logging necessary for said generation.
|
|
||||||
# power add -r /dut/core/*
|
|
||||||
run -all
|
|
||||||
# power off -r /dut/core/*
|
|
||||||
|
|
||||||
} else {
|
|
||||||
vlog -lint -work wkdir/work_${1}_${2} +incdir+../config/$1 +incdir+../config/deriv/$1 +incdir+../config/shared ../src/cvw.sv ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583 -suppress 7063,2596,13286
|
|
||||||
# start and run simulation
|
|
||||||
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
|
|
||||||
if {$coverage} {
|
|
||||||
# vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbectf
|
|
||||||
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbecf
|
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt +cover=sbecf
|
||||||
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829 -coverage
|
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829 -coverage
|
||||||
} else {
|
} else {
|
||||||
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 -o testbenchopt
|
vopt wkdir/work_${1}_${2}.testbench -work wkdir/work_${1}_${2} -G TEST=$2 ${configOptions} -o testbenchopt
|
||||||
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
|
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 -r /dut/core/*
|
|
||||||
run -all
|
|
||||||
# power off -r /dut/core/*
|
|
||||||
}
|
}
|
||||||
|
# vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
|
||||||
|
# power add generates the logging necessary for said generation.
|
||||||
|
# power add -r /dut/core/*
|
||||||
|
run -all
|
||||||
|
# power off -r /dut/core/*
|
||||||
|
|
||||||
|
|
||||||
if {$coverage} {
|
if {$coverage} {
|
||||||
echo "Saving coverage to ${1}_${2}.ucdb"
|
echo "Saving coverage to ${1}_${2}.ucdb"
|
||||||
|
@ -544,7 +544,7 @@ module testbench;
|
|||||||
logic [P.XLEN-1:0] Minstret;
|
logic [P.XLEN-1:0] Minstret;
|
||||||
assign Minstret = testbench.dut.core.priv.priv.csr.counters.counters.HPMCOUNTER_REGW[2];
|
assign Minstret = testbench.dut.core.priv.priv.csr.counters.counters.HPMCOUNTER_REGW[2];
|
||||||
always @(negedge clk) begin
|
always @(negedge clk) begin
|
||||||
if((Minstret != 0) && (Minstret % 'd100000 == 0)) $display("Reached %d instructions, %d", Minstret, INSTR_LIMIT);
|
if((Minstret != 0) && (Minstret % 'd100000 == 0)) $display("Reached %d", Minstret);
|
||||||
if((Minstret == INSTR_LIMIT) & (INSTR_LIMIT!=0)) begin $stop; $stop; end
|
if((Minstret == INSTR_LIMIT) & (INSTR_LIMIT!=0)) begin $stop; $stop; end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user