Passive simulation tool profiles for replayable execution (verilator, iverilog, vcs, xrun, questa).
scripts/run_sim.shverilator:
scripts/run_sim.sh --sim verilator --top <tb_top> -f rtl/filelist_top.f --outdir sim/reports --traceiverilog:
scripts/run_sim.sh --sim iverilog --top <tb_top> -f rtl/filelist_top.f --outdir sim/reportsvcs:
scripts/run_sim.sh --sim vcs --top <tb_top> -f rtl/filelist_top.f --outdir sim/reportsxrun:
scripts/run_sim.sh --sim xrun --top <tb_top> -f rtl/filelist_top.f --outdir sim/reportsquesta:
scripts/run_sim.sh --sim questa --top <tb_top> -f rtl/filelist_top.f --outdir sim/reportsCode coverage must be enabled at both compile and runtime for all commercial simulators.
| Simulator | Compile Flag | Runtime Flag | Coverage DB | Merge Tool |
|---|---|---|---|---|
| VCS | -cm line+cond+fsm+tgl+branch | -cm line+cond+fsm+tgl+branch -cm_dir <dir>.vdb | .vdb directory | urg -dir *.vdb -format both |
| Xcelium | -coverage all | -coverage all -covworkdir <dir>/cov_work -covscope tb_top | cov_work/ directory | imc -exec merge.tcl |
| Questa | +cover=bcestf (at vlog) | -coverage (at vsim) + -do "coverage save -onexit <file>.ucdb" | .ucdb file | vcover merge out.ucdb *.ucdb |
Questa gotcha: +cover=bcestf at vlog compile is mandatory — runtime -coverage alone collects nothing.
UVM regression runner: skills/rtl-p5s-uvm-verify/scripts/run_regression_uvm.sh
toolstatus (pass or fail)errors_countwarnings_countlog_pathreplay_path