Skip to content

Add experimental Z01X support to sync with in-tree OpenTitan DVSim#181

Merged
AlexJones0 merged 4 commits intolowRISC:masterfrom
AlexJones0:z01x_sync
Apr 10, 2026
Merged

Add experimental Z01X support to sync with in-tree OpenTitan DVSim#181
AlexJones0 merged 4 commits intolowRISC:masterfrom
AlexJones0:z01x_sync

Conversation

@AlexJones0
Copy link
Copy Markdown
Contributor

Since DVSim was pulled out and separated from OpenTitan, one additional PR has been made that has modified the operation of DVSim: lowRISC/opentitan#28782

This PR aims to replicate the changes from that PR, refactored to fit out-of-tree DVSim. Two of the commits specifically implement the same functionality as from that PR - the other commits are related fixes not in the original PR.

  1. For the second commit, almost nothing is changed, except for fixes to keep the Deploy tests passing.
  2. For the fourth commit, the modification to RunTest is changed to now instead add Z01X as a separate simulation tool plugin. This way, we can inherit all of the relevant plugin functionality of VCS, whilst decoupling the Z01X-specific logic from the Deploy core itself. To do this, a generic mechanism is introduced to allow tools to mutate deploy objects after all initialization and expansion.

AlexJones0 and others added 4 commits April 10, 2026 02:53
To introduce logic that uses this attribute (which should be defined on
all real flows, as a result on inheriting from the abstract base class
`FlowCfg` which defines it), it must be defined on the fake mock
configuration as well.

Signed-off-by: Alex Jones <alex.jones@lowrisc.org>
DVSim enables running commands after building has finished with the
`post_build_cmds` option, but does not provide a mechanism for passing
additional options to this post build command. Introduce this mechanism
via `post_build_opts`, defined in the HJSON configs.

Co-authored-by: Pascal Nasahl <nasahlpa@lowrisc.org>
Signed-off-by: Alex Jones <alex.jones@lowrisc.org>
It is useful to at least consider this a `Sequence` instead of an
Iterable, so we can use its length and extend it. But generally, this is
a value that we are creating and using internally - just use the actual
types, rather than the abstract collection types.

Signed-off-by: Alex Jones <alex.jones@lowrisc.org>
Add support for the VC Z01X simulation tool, which is a fault simulation
& injection tool layered on top of the VCS engine.

A new method is introduced to the SimTool protocol to allow mutating the
attributes of the Deploy objects after all attributes have been
initialized & expanded. Then, when the tool is configured as Z01X, the
RunTest job is changed to use two different run options:
- run_opts_fi_sim: the runtime options needed for Z01X.
- run_opts: Z01X itself starts the simulation using simv. Those
            run_opts parameters are then passed by Z01X to simv.

Co-authored-by: Pascal Nasahl <nasahlpa@lowrisc.org>
Signed-off-by: Alex Jones <alex.jones@lowrisc.org>
@AlexJones0 AlexJones0 changed the title Z01x sync Add experimental Z01X support to sync with in-tree OpenTitan DVSim Apr 10, 2026
Copy link
Copy Markdown
Member

@nasahlpa nasahlpa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Alex!

@AlexJones0 AlexJones0 added this pull request to the merge queue Apr 10, 2026
Merged via the queue into lowRISC:master with commit 73c6e07 Apr 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants