testfloat running through wsim; moved lint, regression, wsim to bin directory so we don't need ./

This commit is contained in:
David Harris 2024-04-06 08:22:39 -07:00
parent 4cc9dd7583
commit 4b19f6d542
9 changed files with 84 additions and 60 deletions

View File

@ -168,6 +168,10 @@ bpredtests = [
["bpred_GSHARE_10_10_10_1_rv32gc", ["embench"], "configOptions", "-GPrintHPMCounters=1"]
]
##################################
# Data Types & Functions
##################################
TestCase = namedtuple("TestCase", ['name', 'variant', 'cmd', 'grepstr'])
# name: the name of this test configuration (used in printing human-readable
# output and picking logfile names)
@ -248,6 +252,10 @@ def run_test_case(config):
print(" Check %s" % logname)
return 1
##################################
# Main body
##################################
regressionDir = os.path.dirname(os.path.abspath(__file__))
os.chdir(regressionDir)

View File

@ -7,31 +7,43 @@
# example: wsim rv64gc arch64i
# example: wsim rv64gc tests/riscof/work/riscv-arch-test/rv64i_m/I/src/ref/ref.elf
# example: wsim rv32i arch32i -s verilator
# example: wsim fdqh_ieee_rv64gc add -t testbench_fp # run TestFloat
#
# SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
import argparse
import os
# Read arguments
# Parse arguments
parser = argparse.ArgumentParser()
parser.add_argument("config", help="Configuration file")
parser.add_argument("testsuite", help="Test suite or ELF file")
parser.add_argument("--sim", "-s", help="Simulator", choices=["questa", "verilator", "vcs"], default="questa")
parser.add_argument("--tb", "-t", help="Testbench", choices=["testbench", "testbench_fp"], default="testbench")
parser.add_argument("--gui", "-g", help="Simulate with GUI", action="store_true")
parser.add_argument("--coverage", "-c", help="Code & Functional Coverage", action="store_true")
args = parser.parse_args()
print("Config: " + args.config + " tests " + args.testsuite + " sim " + args.sim + " gui " + str(args.gui))
# Validate arguments
if (args.gui):
if (args.sim != "questa"):
print("GUI option only supported for Questa")
exit(1)
if (args.coverage):
if (args.sim != "questa"):
print("Coverage option only available for Questa")
exit(1)
# Launch selected simulator
cd = "cd $WALLY/sim/" +args.sim
if (args.sim == "questa"):
cmd = "do wally-batch.do " + args.config + " " + args.testsuite
cmd = "do wally-batch.do " + args.config + " " + args.testsuite + " " + args.tb
if (args.coverage):
cmd += " -coverage"
os.system("cd $WALLY/sim/questa; vsim -c -do \"" + cmd + "\"")
os.system(cd + "; vsim -c -do \"" + cmd + "\"")
elif (args.sim == "verilator"):
print("Running Verilator")
print("Running Verilator on %s %s", args.config, args.testsuite)
elif (args.sim == "vcs"):
print("Running VCS")
else:
print("Unknown simulator")
exit(1)
print("Running VCS on %s %s", args.config, args.testsuite)

View File

@ -49,7 +49,7 @@ if {$WAV eq 0} {
# Change TEST_SIZE to only test certain FP width
# values are QP, DP, SP, HP or all for all tests
vopt +acc wkdir/work_${1}_${2}.testbenchfp -work wkdir/work_${1}_${2} -G TEST=$2 -G TEST_SIZE="all" -o testbenchopt
vopt +acc wkdir/work_${1}_${2}.testbench-fp -work wkdir/work_${1}_${2} -G TEST=$2 -G TEST_SIZE="all" -o testbenchopt
vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829
#-- Run the Simulation
run -all

View File

@ -25,11 +25,11 @@ vlib work
# start and run simulation
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
# $num = the added words after the call
vlog +incdir+../config/deriv/$1 +incdir+../config/$1 +incdir+../config/shared ../src/cvw.sv ../testbench/testbench-fp.sv ../src/fpu/*.sv ../src/fpu/*/*.sv ../src/generic/*.sv ../src/generic/flop/*.sv -suppress 2583,7063,8607,2697
vlog +incdir+../../config/deriv/$1 +incdir+../../config/$1 +incdir+../../config/shared ../../src/cvw.sv ../../testbench/testbench_fp.sv ../../src/fpu/*.sv ../../src/fpu/*/*.sv ../../src/generic/*.sv ../../src/generic/flop/*.sv -suppress 2583,7063,8607,2697
# Change TEST_SIZE to only test certain FP width
# values are QP, DP, SP, HP or all for all tests
vsim -voptargs=+acc work.testbenchfp -GTEST=$2 -GTEST_SIZE="all"
vsim -voptargs=+acc work.testbench_fp -GTEST=$2 -GTEST_SIZE="all"
# Set WAV variable to avoid having any output to wave (to limit disk space)
quietly set WAV 1;

View File

@ -8,8 +8,8 @@
#
# Takes 1:10 to run RV64IC tests using gui
# Usage: do wally-batch.do <config> <testcases>
# Example: do wally-batch.do rv32imc imperas-32i
# Usage: do wally-batch.do <config> <testcases> <testbench>
# Example: do wally-batch.do rv64gc arch64i testbench
# Use this wally-batch.do file to run this example.
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
@ -22,8 +22,12 @@ onbreak {resume}
set CFG ${1}
set TESTSUITE ${2}
set TESTBENCH ${3}
set WKDIR wkdir/${CFG}_${TESTSUITE}
set WALLY $::env(WALLY)
set CONFIG ${WALLY}/config
set SRC ${WALLY}/src
set TB ${WALLY}/testbench
# create library
if [file exists ${WKDIR}] {
@ -68,15 +72,11 @@ if {$argc >= 3} {
# "Extra checking for conflicts with always_comb done at vopt time"
# because vsim will run vopt
set CONFIG ${WALLY}/config
set SRC ${WALLY}/src
set TB ${WALLY}/testbench
vlog -lint -work ${WKDIR} +incdir+${CONFIG}/$1 +incdir+${CONFIG}/deriv/$1 +incdir+${CONFIG}/shared ${SRC}/cvw.sv ${TB}/testbench.sv ${TB}/common/*.sv ${SRC}/*/*.sv ${SRC}/*/*/*.sv -suppress 2583 -suppress 7063,2596,13286
vlog -lint -work ${WKDIR} +incdir+${CONFIG}/$1 +incdir+${CONFIG}/deriv/$1 +incdir+${CONFIG}/shared ${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 wkdir/${CFG}_${TESTSUITE}.testbench -work ${WKDIR} -G TEST=$2 ${configOptions} -o testbenchopt ${CoverageVoptArg}
vopt wkdir/${CFG}_${TESTSUITE}.${TESTBENCH} -work ${WKDIR} -G TEST=$2 ${configOptions} -o testbenchopt ${CoverageVoptArg}
vsim -lib ${WKDIR} testbenchopt -fatal 7 -suppress 3829 ${CoverageVsimArg}
# vsim -lib wkdir/work_${1}_${2} testbenchopt -fatal 7 -suppress 3829

View File

@ -1,30 +1,30 @@
add wave -noupdate /testbenchfp/clk
add wave -noupdate -radix decimal /testbenchfp/VectorNum
add wave -noupdate /testbenchfp/FrmNum
add wave -noupdate /testbenchfp/X
add wave -noupdate /testbenchfp/Y
add wave -noupdate /testbenchfp/Z
add wave -noupdate /testbenchfp/Res
add wave -noupdate /testbenchfp/Ans
add wave -noupdate /testbenchfp/reset
add wave -noupdate /testbenchfp/DivStart
add wave -noupdate /testbenchfp/FDivBusyE
add wave -noupdate /testbenchfp/CheckNow
add wave -noupdate /testbenchfp/DivDone
add wave -noupdate /testbenchfp/ResMatch
add wave -noupdate /testbenchfp/FlagMatch
add wave -noupdate /testbenchfp/CheckNow
add wave -noupdate /testbenchfp/NaNGood
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/specialcase/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/flags/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/normshift/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/shiftcorrection/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/resultsign/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/round/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/fmashiftcalc/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/divshiftcalc/*
add wave -group {PostProc} -noupdate /testbenchfp/postprocess/cvtshiftcalc/*
add wave -group {Testbench} -noupdate /testbenchfp/*
add wave -group {Testbench} -noupdate /testbenchfp/readvectors/*
add wave -noupdate /testbench_fp/clk
add wave -noupdate -radix decimal /testbench_fp/VectorNum
add wave -noupdate /testbench_fp/FrmNum
add wave -noupdate /testbench_fp/X
add wave -noupdate /testbench_fp/Y
add wave -noupdate /testbench_fp/Z
add wave -noupdate /testbench_fp/Res
add wave -noupdate /testbench_fp/Ans
add wave -noupdate /testbench_fp/reset
add wave -noupdate /testbench_fp/DivStart
add wave -noupdate /testbench_fp/FDivBusyE
add wave -noupdate /testbench_fp/CheckNow
add wave -noupdate /testbench_fp/DivDone
add wave -noupdate /testbench_fp/ResMatch
add wave -noupdate /testbench_fp/FlagMatch
add wave -noupdate /testbench_fp/CheckNow
add wave -noupdate /testbench_fp/NaNGood
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/specialcase/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/flags/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/normshift/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/shiftcorrection/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/resultsign/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/round/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/fmashiftcalc/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/divshiftcalc/*
add wave -group {PostProc} -noupdate /testbench_fp/postprocess/cvtshiftcalc/*
add wave -group {Testbench} -noupdate /testbench_fp/*
add wave -group {Testbench} -noupdate /testbench_fp/readvectors/*

View File

@ -23,15 +23,17 @@
////////////////////////////////////////////////////////////////////////////////////////////////
`include "config.vh"
`include "tests-fp.vh"
`include "tests_fp.vh"
import cvw::*;
module testbenchfp;
module testbench_fp;
// Two parameters TEST, TEST_SIZE used with testfloat.do in sim dir
// to run specific precisions (e.g., quad or all)
parameter string TEST="none";
parameter string TEST_SIZE="none";
// parameter string TEST="none";
// parameter string TEST_SIZE="none";
parameter string TEST="add";
parameter string TEST_SIZE="all";
`include "parameter-defs.vh"
@ -662,12 +664,14 @@ module testbenchfp;
TestNum = 0;
end
// set a the signals for all tests
always_comb UnitVal = Unit[TestNum];
always_comb FmtVal = Fmt[TestNum];
always_comb OpCtrlVal = OpCtrl[OpCtrlNum];
always_comb WriteIntVal = WriteInt[OpCtrlNum];
always_comb FrmVal = Frm[FrmNum];
// set the signals for all tests
always_ff @(posedge clk) begin
UnitVal = Unit[TestNum];
FmtVal = Fmt[TestNum];
OpCtrlVal = OpCtrl[OpCtrlNum];
WriteIntVal = WriteInt[OpCtrlNum];
FrmVal = Frm[FrmNum];
end
// modify the format signal if only 2 percisions supported
// - 1 for the larger precision

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////
// tests0fo.vh
// tests_fp.vh
//
// Written: Katherine Parry 2022
// Modified:
@ -24,7 +24,7 @@
// and limitations under the License.
////////////////////////////////////////////////////////////////////////////////////////////////
`define PATH "../tests/fp/vectors/"
`define PATH "../../tests/fp/vectors/"
`define ADD_OPCTRL 3'b110
`define MUL_OPCTRL 3'b100
`define SUB_OPCTRL 3'b111