| ## Design Verification Setup in matcha |
| *Revision 1.1* |
| |
| |
| |
| ### DV Methodology |
| |
| [Design Verification Methodology in Opentitan](https://docs.opentitan.org/doc/ug/dv_methodology/) has been followed in matcha. |
| |
| Currently, [VCS](https://www.synopsys.com/verification/simulation/vcs.html) 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 |
| 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 |
| ``` |
| 3. Load the waveform (fsdb, vcd, etc) |
| 4. Trace the signals with Verdi |
| |
| |
| ### Run DV tests with bazel in air-gapped environment |
| |
| [Sparrow HW DV Notes](https://docs.google.com/document/d/10LiU3v8PBc06KkpTVaceIhJqqcdVIvO2GzFaJh7x_bY/edit) 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 |
| ``` |
| |