blob: a8935189731aa41c04dce1fa4dab246a81e59432 [file] [log] [blame] [view]
## 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
```