[dv] Remove IUS support

IUS lacks support for certain language features used in Ibex (such as
use of $clog2 in localparam definitions) so remove it as a simulator
that can be used by dv.
This commit is contained in:
Greg Chadwick 2020-04-03 11:42:49 +01:00 committed by Philipp Wagner
parent 47678a855a
commit f73da9ef3b
5 changed files with 7 additions and 90 deletions

View file

@ -75,9 +75,6 @@ endif
ifeq (${SIMULATOR},vcs)
COMPILE_OPTS += -pvalue+core_ibex_tb_top.dut.PMPNumRegions=${PMP_REGIONS}
COMPILE_OPTS += -pvalue+core_ibex_tb_top.dut.PMPGranularity=${PMP_GRANULARITY}
else ifeq (${SIMULATOR},ius)
COMPILE_OPTS += -defparam core_ibex_tb_top.dut.PMPNumRegions=${PMP_REGIONS}
COMPILE_OPTS += -defparam core_ibex_tb_top.dut.PMPGranularity=${PMP_GRANULARITY}
else ifeq (&{SIMULATOR},riviera)
SIM_OPTS +=-g/core_ibex_tb_top/dut/PMPNumRegions=${PMP_REGIONS}
SIM_OPTS +=-g/core_ibex_tb_top/dut/PMPGranularity=${PMP_GRANULARITY}

View file

@ -1,36 +0,0 @@
# set ibex_core_tracing as top of coverage tree
select_coverage -bef -module ibex_core_tracing...
# Toggle coverage should only apply to the top level of DUT
select_coverage -toggle -module ibex_core_tracing
# Remove the tracer module from all coverage collection
deselect_coverage -all -module ibex_tracer
# top level toggle coverage only collected for input/output ports
set_toggle_portsonly
# allow toggle coverage to be collected for SV multidimensional arrays and enums
set_toggle_scoring -sv_mda -sv_enum
# exclude constants from coverage collection
set_com
# enables coverage scoring for statements
set_assign_scoring
# enable coverage score for branches and ternary assignments
set_branch_scoring
# enable coverage of all operators and continuous/procedural statements
set_expr_coverable_operators -all
set_expr_coverable_statements -all
# enable coverage of FSM reset states
set_fsm_reset_scoring
# disable FSM arc coverage
set_fsm_arc_scoring -off
# enables coverage for all assertions/covergroups
select_functional

View file

@ -1,4 +0,0 @@
database -open waves.shm -default
probe -create -depth all -all
run

View file

@ -244,7 +244,7 @@ def get_test_sim_cmd(base_cmd, test, idx, output_dir, bin_dir, lsf_cmd):
return (desc, sim_cmd, sim_dir)
def run_sim_commands(command_list, use_lsf, check_return_code):
def run_sim_commands(command_list, use_lsf):
'''Run the given list of commands
command_list should be a list of tuples (desc, cmd, dirname) where desc is
@ -256,9 +256,6 @@ def run_sim_commands(command_list, use_lsf, check_return_code):
'bsub -Is'. It seems that we always use interactive bsub, so we'll have a
local process per job, which we track with run_parallel_cmd.
If check_return_code is true, we check that the commands pass and stop if
not.
'''
# If we're in LSF mode, we submit all the commands 'at once', which means
# we have to create the output directories in advance.
@ -267,7 +264,7 @@ def run_sim_commands(command_list, use_lsf, check_return_code):
for desc, cmd, dirname in command_list:
os.makedirs(dirname, exist_ok=True)
cmds.append(cmd)
run_parallel_cmd(cmds, 600, check_return_code=check_return_code)
run_parallel_cmd(cmds, 600, check_return_code=True)
return
# We're not in LSF mode, so we'll create the output directories as we go.
@ -276,11 +273,11 @@ def run_sim_commands(command_list, use_lsf, check_return_code):
for desc, cmd, dirname in command_list:
os.makedirs(dirname, exist_ok=True)
logging.info("Running " + desc)
run_cmd(cmd, 300, check_return_code=check_return_code)
run_cmd(cmd, 300, check_return_code=True)
def rtl_sim(sim_cmd, test_list, seed, opts,
output_dir, bin_dir, lsf_cmd, check_return_code):
output_dir, bin_dir, lsf_cmd):
"""Run the testbench in the simulator
sim_cmd is the base command (as returned by get_simulator_cmd). This will
@ -297,9 +294,6 @@ def rtl_sim(sim_cmd, test_list, seed, opts,
If lsf_cmd is not None, it should be prefixed on each command, which will
be run in parallel.
check_return_code is True if we should check the return codes from
simulator executions.
"""
logging.info("Running RTL simulation...")
@ -319,7 +313,7 @@ def rtl_sim(sim_cmd, test_list, seed, opts,
cmd_list.append(get_test_sim_cmd(sim_cmd, test, i,
output_dir, bin_dir, lsf_cmd))
run_sim_commands(cmd_list, lsf_cmd is not None, check_return_code)
run_sim_commands(cmd_list, lsf_cmd is not None)
def compare_test_run(test, idx, iss, output_dir, report):
@ -420,7 +414,7 @@ def compare(test_list, iss, output_dir):
return fails == 0
#TODO(udinator) - support IUS, DSim, and Riviera
#TODO(udinator) - support DSim, and Riviera
def gen_cov(base_dir, simulator, lsf_cmd):
"""Generate a merged coverage directory.
@ -541,15 +535,6 @@ def main():
# Run RTL simulation
if steps['sim']:
check_return_code = True
# Don't check return code for IUS sims, as a failure will short circuit
# the entire simulation flow
check_return_code = True
if args.simulator == "ius":
check_return_code = False
logging.debug("Disable return code checking for %s simulator"
% args.simulator)
# Pick a seed: either the one we were given, or pick one at random. In
# the latter case, print it out so the user can see what's going on.
if args.seed is None or args.seed < 0:
@ -559,7 +544,7 @@ def main():
seed = args.seed
rtl_sim(sim_cmd, matched_list, seed, args.sim_opts,
output_dir, bin_dir, args.lsf_cmd, check_return_code)
output_dir, bin_dir, args.lsf_cmd)
# Compare RTL & ISS simulation result.
if steps['compare']:

View file

@ -72,31 +72,6 @@
wave_opts: >
-waves waves.vcd
- tool: ius
compile:
cmd:
- "mkdir -p <out>/ius"
- "irun -work worklib
-access +rwc
-nclibdirpath <out>/ius
-sv -uvm -uvmhome CDNS-1.2
+define+UVM
-f ibex_dv.f
-elaborate -licqueue
-l <out>/ius/compile.log <cov_opts>"
cov_opts: >
-coverage all
-covfile cover.ccf
sim:
cmd: >
irun -R -nclibdirpath <out>/ius <sim_opts> -svseed <seed> -licqueue <wave_opts> <cov_opts>
cov_opts: >
-covoverwrite
-covworkdir <out>/cov_work
-covbaserun test
wave_opts: >
-input <cwd>/ius.tcl
- tool: riviera
env_var: ALDEC_PATH
compile: