lowRISC / lowRISC/opentitan

[dvsim] Provide a method to dump UVM waves for all simulators

Open
#11,975 0 comments 0 reactions 0 assignees View on GitHub
Earlgrey-PROD Triaged Tool:dvsim Type:Enhancement
Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

When developing UVM testbenches based on behavioural models it is very useful to be able to view the fields of classes in the wave viewer.
They can be viewed as they change over time along with RTL signals.
Often there is a similar structure and fields which correspond to RTL signals.
Visual comparison of these allows for efficient debug of the RTL or model.

However it's not desirable to record these items every time waves are requested (**--waves**) as the file storage is considerably greater than if only RTL waves are dumped and the simulation is also slowed considerably.
I've achieved this for Excelium with a by using a slightly modified waves.tcl when required but a command line switch (say **--uvm-waves**) would be preferable.

The reason UVM fields are not dumped currently is that the probe command must come _after_ the UVM environment has been built, i.e. after the end of UVM build phase.
For Excelium I achieved this via the TCL command **uvm_phase** :

```
uvm_phase -stop_at build -end -stop_args -execute {
probe -create $uvm:{uvm_test_top} -depth all -tasks -functions -uvm -packed 4k -unpacked 16k -all -database $wavedump_db
} -continue
```
In this manner the probe command is only executed after build phase has ended and all the fields are present to be dumped.
There will be similar methods for the other simulators.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the existing --waves handling and the simulator-specific waves.tcl flow, using the Excelium example and its uvm_phase command as the reference. Compare how each supported simulator can run the probe after the UVM build phase, then verify that a proposed --uvm-waves option dumps UVM fields without changing ordinary RTL-only wave behavior.

Written by the indexing model from the issue text.

Assessment

Domain
testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.