diff --git a/bin/wsim b/bin/wsim index 59650556f..9c4cce68f 100755 --- a/bin/wsim +++ b/bin/wsim @@ -59,7 +59,10 @@ if (args.sim == "questa"): if (args.coverage): cmd += " --coverage" if (args.gui): # launch Questa with GUI; add +acc to keep variables accessible - cmd = cd + "; vsim -do \"" + cmd + " +acc -GDEBUG=1\"" + if(args.tb == "testbench"): + cmd = cd + "; vsim -do \"" + cmd + " +acc -GDEBUG=1\"" + elif(args.tb == "testbench_fp"): + cmd = cd + "; vsim -do \"" + cmd + " +acc\"" else: # launch Questa in batch mode cmd = cd + "; vsim -c -do \"" + cmd + "\"" print("Running Questa with command: " + cmd) diff --git a/sim/questa/wally-linux-imperas.do b/sim/questa/wally-linux-imperas.do deleted file mode 100644 index b9c1abdd3..000000000 --- a/sim/questa/wally-linux-imperas.do +++ /dev/null @@ -1,84 +0,0 @@ -# wally.do -# SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1 -# -# Modification by Oklahoma State University & Harvey Mudd College -# Use with Testbench -# James Stine, 2008; David Harris 2021 -# Go Cowboys!!!!!! -# -# Takes 1:10 to run RV64IC tests using gui - -# run with vsim -do "do wally-pipelined.do rv64ic riscvarchtest-64m" - -# Use this wally-pipelined.do file to run this example. -# Either bring up ModelSim and type the following at the "ModelSim>" prompt: -# do wally.do -# or, to run from a shell, type the following at the shell prompt: -# vsim -do wally.do -c -# (omit the "-c" to see the GUI while running from the shell) - -onbreak {resume} - -# create library -if [file exists work] { - vdel -all -} -vlib work - -# compile source files -# suppress spurious warnngs about -# "Extra checking for conflicts with always_comb done at vopt time" -# because vsim will run vopt - -# start and run simulation -# remove +acc flag for faster sim during regressions if there is no need to access internal signals -if {$2 eq "buildroot"} { - vlog -lint -work work_${1}_${2} \ - +define+USE_IMPERAS_DV \ - +incdir+../../config/deriv/$1 \ - +incdir+../../config/shared \ - +incdir+$env(IMPERAS_HOME)/ImpPublic/include/host \ - +incdir+$env(IMPERAS_HOME)/ImpProprietary/include/host \ - $env(IMPERAS_HOME)/ImpPublic/source/host/rvvi/rvviApiPkg.sv \ - $env(IMPERAS_HOME)/ImpPublic/source/host/rvvi/rvviTrace.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/idvApiPkg.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/idvPkg.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/idvApiPkg.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/trace2api.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/trace2log.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/trace2cov.sv \ - $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/trace2bin.sv \ - ../../src/cvw.sv \ - ../../testbench/testbench.sv \ - ../../testbench/common/*.sv ../../src/*/*.sv \ - ../../src/*/*/*.sv -suppress 2583 - - # - # start and run simulation - # for profiling add - # vopt -fprofile - # vsim -fprofile+perf - # visualizer -fprofile+perf+dir=fprofile - # - eval vopt +acc work_${1}_${2}.testbench -work work_${1}_${2} -G RISCV_DIR=$3 \ - -o testbenchopt - eval vsim -lib work_${1}_${2} testbenchopt +TEST=$2 -suppress 8852,12070,3084,3829,13286 -fatal 7 \ - -sv_lib $env(IMPERAS_HOME)/lib/Linux64/ImperasLib/imperas.com/verification/riscv/1.0/model \ - $env(OTHERFLAGS) - - #-- Run the Simulation - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - echo "Don't forget to change DEBUG_LEVEL = 0." - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - #run 100 ns - #force -deposit testbench/dut/core/priv/priv/csr/csri/IE_REGW 16'h2aa - #force -deposit testbench/dut/uncore/uncore/clint/clint/MTIMECMP 64'h1000 - run 9800 ms - add log -recursive /testbench/dut/* - do wave.do - run 200 ms - #run -all - - exec ./slack-notifier/slack-notifier.py - -} diff --git a/sim/questa/wally.do b/sim/questa/wally.do index 56a98946e..0e717f730 100644 --- a/sim/questa/wally.do +++ b/sim/questa/wally.do @@ -18,7 +18,7 @@ # vsim -do wally-batch.do -c # (omit the "-c" to see the GUI while running from the shell) -set DEBUG 0 +set DEBUG 1 onbreak {resume} onerror {quit -f} @@ -102,15 +102,17 @@ set LockStepIndex [lsearch -exact $lst "--lockstep"] if {$LockStepIndex >= 0} { set lockstep 1 + # ideally this would all be one or two variables, but questa is having a real hard time + # with this. For now they have to be separate. set lockstepvoptstring "+define+USE_IMPERAS_DV" set ImperasPubInc +incdir+$env(IMPERAS_HOME)/ImpPublic/include/host set ImperasPrivInc +incdir+$env(IMPERAS_HOME)/ImpProprietary/include/host set rvviFiles $env(IMPERAS_HOME)/ImpPublic/source/host/rvvi/*.sv set idvFiles $env(IMPERAS_HOME)/ImpProprietary/source/host/idv/*.sv - set SVLib "-sv_lib" set SVLibPath $env(IMPERAS_HOME)/lib/Linux64/ImperasLib/imperas.com/verification/riscv/1.0/model set OtherFlags $env(OTHERFLAGS) + set lst [lreplace $lst $LockStepIndex $LockStepIndex] } @@ -137,18 +139,13 @@ if {$DEBUG > 0} { # "Extra checking for conflicts with always_comb done at vopt time" # because vsim will run vopt -echo $lockstepvoptstring - vlog -lint -work ${WKDIR} +incdir+${CONFIG}/${CFG} +incdir+${CONFIG}/deriv/${CFG} ${lockstepvoptstring} ${ImperasPubInc} ${ImperasPrivInc} +incdir+${CONFIG}/shared ${rvviFiles} ${idvFiles} ${SRC}/cvw.sv ${TB}/${TESTBENCH}.sv ${TB}/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 vopt $accFlag wkdir/${CFG}_${TESTSUITE}.${TESTBENCH} -work ${WKDIR} ${lst} -o testbenchopt ${CoverageVoptArg} -# *** tbArgs producees a warning that TEST not found in design when running sim-testfloat-batch. Need to separate -G and + arguments to pass separately to vopt and vsim vsim -lib ${WKDIR} testbenchopt +TEST=${TESTSUITE} ${PlusArgs} -fatal 7 ${SVLib} ${SVLibPath} ${OtherFlags} -suppress 3829 ${CoverageVsimArg} -# -sv_lib $env(IMPERAS_HOME)/lib/Linux64/ImperasLib/imperas.com/verification/riscv/1.0/model \ - $env(OTHERFLAGS) # vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829 # power add generates the logging necessary for said generation.