Design Verification Setup in matcha

Revision 1.1

DV Methodology

Design Verification Methodology in Opentitan has been followed in matcha.

Currently, VCS is used as the major simulator for running DV tests in matcha.

DV Settings

At the root of shodan repo:

export ROOTDIR=`pwd`
export proj_root=$ROOTDir/hw/matcha
export titan_root=$ROOTDIR/hw/opentitan-upstream
export PYTHONPATH=$ROOTDIR/hw/matcha/util:$titan_root/util:$titan_root/util/dvsim:$PYTHONPATH

Run DV tests

cd $ROOTDIR/hw/matcha
bazel build @kelvin_hw//hdl/chisel:kelvin.core  # build kelvin RTL
util/dvsim_match/dvsim.py \
    hw/top_matcha/dv/chip_sim_cfg.hjson \
    -i <test_name>

Generate Debug Messages

Use -v option to dump out the debug messages from the simulation. For example:

util/dvsim_match/dvsim.py \
    hw/top_matcha/dv/chip_sim_cfg.hjson \
    -i <test_name>
    -v d

Generate Waveform

To dump waveforms from the simulation, use the -w or --waves option to pass the argument to dvsim.py. For example:

util/dvsim_match/dvsim.py \
    hw/top_matcha/dv/chip_sim_cfg.hjson \
    -i <test_name> \
    -w fsdb

Debug with Verdi

To debug with Verdi:

  1. Generate the waveform
  2. Invoke Verdi with the following command:
  cd ${proj_root}/scratch/<branch>/chip_matcha_asic-sim-vcs/default
	verdi -dbdir ./simv.daidir
  1. Load the waveform (fsdb, vcd, etc)
  2. Trace the signals with Verdi

Run DV tests with bazel in air-gapped environment

Sparrow HW DV Notes describes how to set up the bazel runs on EDACloud.

In an air-gapped environment like EDACloud, DV tests can be invoked from hw/matcha with bazel. Here is the sample bazel command:

bazel run //util/dvsim_matcha:dvsim.py \
          --distdir=`pwd` \
          -- hw/top_matcha/dv/chip_sim_cfg.hjson \
          -i chip_sw_uart_tx_rx

Notes

Known issues

  1. To turn off all the assertions in simulation, add the following lines in tb.sv:
initial
begin
  $assertoff(0, tb.dut);
end
  1. Add the following lines:
`define STOP_COND 0
`define PRINTF_COND 0

at the top of the files:

hw/top_matcha/ip/ml_top/rtl/xbar_sram.v

to turn off the $fatal statements and the unwanted debug messages