Skip to content

frontend: Model status/done_id as internal status registers#135

Draft
DanielKellerM wants to merge 1 commit into
pulp-platform:develfrom
DanielKellerM:proto/reg-optb-internal-status
Draft

frontend: Model status/done_id as internal status registers#135
DanielKellerM wants to merge 1 commit into
pulp-platform:develfrom
DanielKellerM:proto/reg-optb-internal-status

Conversation

@DanielKellerM

Copy link
Copy Markdown
Collaborator

Refines the external-register read-ack fix (#134) by modeling the two observational registers correctly instead of gating their ack.

`status` (busy) and `done_id` have no read side-effect, so they need not be `external`. This drops `external` on them in the RDL and drives the registered value through the PeakRDL `hwif .next` input; PeakRDL then emits plain internal storage with no external read handshake and no `assert_bad_ext_rd_ack` for those registers. `next_id` keeps its external read-launch interface with the `arb_ready`-gated ack from #134 (its read launches a transfer and must back-pressure).

Net effect: the external read handshake/assertion now governs only `next_id` (the one register that genuinely needs it); the change removes logic rather than gating it.

Trade-off: `status`/`done_id` reads are now registered (≤1-cycle-delayed) rather than live-combinational. This is benign for busy/done polling (you never read a value that was not true, just up to a cycle late) and the SW-facing register map is unchanged (offsets, width, `sw=r` access identical).

Status: verified structurally — regenerates cleanly, the generated reg block elaborates (slang, 0 errors), and `external_rd_ack` now ORs only `next_id`. Draft pending the same cluster/UVM sim validation #134 had (assertion clears + a SW polling read returns the expected registered value).

…otype)

status and done_id have no read side-effect, so they need not be external.
Drop 'external' in the RDL and drive the registered value via hwif .next;
PeakRDL then emits internal storage with no external read handshake and no
assert_bad_ext_rd_ack for them. next_id keeps its external read-launch +
arb_ready-gated ack. Trade-off: status/done_id reads are now registered
(<=1-cycle-delayed) rather than live-combinational.
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.

1 participant