Skip to content

[dv,chip] Add a working rom_ctrl skip-middle at chip-level for Earlgrey - #30990

Open
rswarbrick wants to merge 1 commit into
lowRISC:masterfrom
rswarbrick:skip-plusarg-at-chip-level
Open

[dv,chip] Add a working rom_ctrl skip-middle at chip-level for Earlgrey#30990
rswarbrick wants to merge 1 commit into
lowRISC:masterfrom
rswarbrick:skip-plusarg-at-chip-level

Conversation

@rswarbrick

@rswarbrick rswarbrick commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Now that the PRs needed by the PR have been merged, it just contains the following commit:

[rom_ctrl,dv] Teach chip test to understand +skip_middle_of_rom

This works by running a copy of rom_ctrl_skip_middle_with_digest_vseq
to force the address and also the digest responses in rom_ctrl,
causing it to skip over reading the ROM at the start of the test.

The only other tricky thing that needs doing is to disable some of the
checks in the bound-in rom_ctrl_scoreboard. The problem is that we
force the signals when they arrive at the FSM. This is much easier,
because it's rather messy to get a hierarchical up-reference to a port
of rom_ctrl itself. To do so would mean that rom_ctrl_bound_if would
need all the parameters of rom_ctrl itself and then would have to
refer to it with all of them.

If we just force a signal on a port of the FSM, that works perfectly
well... except that rom_ctrl_scoreboard can't see that we forced it! I
think the right thing to do in this situation is just to disable the
checks that are based on knowing what the KMAC response contained.

This now allows a trivial change to turn on the behaviour by passing +skip_middle_of_rom=1 in tests that should use the machinery.

@rswarbrick rswarbrick added Component:DV DV issue: testbench, test case, etc. IP:rom_ctrl labels Aug 12, 2026
@rswarbrick rswarbrick changed the title Skip plusarg at chip level [dv,chip] Add a working rom_ctrl skip-middle at chip-level for Earlgrey Aug 12, 2026
@rswarbrick
rswarbrick force-pushed the skip-plusarg-at-chip-level branch 2 times, most recently from ba4ec87 to cc024e3 Compare August 14, 2026 13:13

@vogelpi vogelpi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @rswarbrick , this looks very nice!

Comment thread hw/top_earlgrey/dv/env/seq_lib/chip_base_vseq.sv
@rswarbrick
rswarbrick force-pushed the skip-plusarg-at-chip-level branch from cc024e3 to 9e992ac Compare August 18, 2026 10:41
@rswarbrick
rswarbrick marked this pull request as ready for review August 18, 2026 10:41
@rswarbrick
rswarbrick requested a review from a team as a code owner August 18, 2026 10:41
@rswarbrick
rswarbrick requested review from martin-velay and removed request for a team August 18, 2026 10:41
This works by running a copy of rom_ctrl_skip_middle_with_digest_vseq
to force the address and also the digest responses in rom_ctrl,
causing it to skip over reading the ROM at the start of the test.

The only other tricky thing that needs doing is to disable some of the
checks in the bound-in rom_ctrl_scoreboard. The problem is that we
force the signals when they arrive at the FSM. This is much easier,
because it's rather messy to get a hierarchical up-reference to a port
of rom_ctrl itself. To do so would mean that rom_ctrl_bound_if would
need all the parameters of rom_ctrl itself and then would have to
refer to it with all of them.

If we just force a signal on a port of the FSM, that works perfectly
well... except that rom_ctrl_scoreboard can't see that we forced it! I
think the right thing to do in this situation is just to disable the
checks that are based on knowing what the KMAC response contained.

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
@rswarbrick
rswarbrick force-pushed the skip-plusarg-at-chip-level branch from 9e992ac to 44b9b62 Compare August 18, 2026 11:52
@rswarbrick

Copy link
Copy Markdown
Contributor Author

Changes in force-push (prompted by review from the Claude tool):

  • I've tightened up the scoreboard checks. We have to disable checks
    of the digest_* registers, but there's no need to also disable
    checks of the exp_digest_* registers.

  • I removed a duplicate dependency from rom_ctrl_env.core.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component:DV DV issue: testbench, test case, etc. IP:rom_ctrl

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants