Skip to content

frontend: Drop the unreachable INIT write path from inst64 - #218

Open
DanielKellerM wants to merge 2 commits into
pulp-platform:develfrom
DanielKellerM:fix/inst64-init-write-rsp
Open

frontend: Drop the unreachable INIT write path from inst64#218
DanielKellerM wants to merge 2 commits into
pulp-platform:develfrom
DanielKellerM:fix/inst64-init-write-rsp

Conversation

@DanielKellerM

@DanielKellerM DanielKellerM commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Closes #172.

idma_inst64_top instantiated idma_backend_rw_axi_rw_init_rw_obi, a variant that carries an INIT
write manager the frontend can never reach:

  • the module exposes no INIT ports at all, so an INIT write could not leave it
  • DMINIT sets src_protocol = INIT only, with src_addr carrying the fill pattern; INIT is the
    constant generator feeding a memset
  • dst_protocol is only ever AXI or OBI

So init_write_rsp was read by the backend and driven by nothing. Spyglass reported it as three
W123 (severity Error under rtl_handoff) plus three W287a, and six W528 on the mirror signal
init_write_req.

Rather than tie the response off, this adds r_init_rw_axi_rw_obi and instantiates that. The
generated variant has only init_read_req_o/init_read_rsp_i and does not instantiate
idma_init_write, so the dead manager leaves the RTL instead of relying on synthesis to prune it.

Verification

check result
Spyglass 2024.09 lint_rtl on the inst64 frontend W123 4 -> 0, W287a 3 -> 0, W528 on init_write_req 6 -> 0, 0 Errors
tb_idma_inst64_axi_copy (Questa 2023.4) PASS, also with DMATracing=1
tb_idma_backend_r_init_rw_axi_rw_obi, all 10 job files PASS, 0 errors
make idma_verify_backend IDMA_VERIFY_ID=r_init_rw_axi_rw_obi verilator + slang + TB OK
make idma_verify_shared all tops OK
make idma_verify_codegen clean
full Questa compile of all tops 0 errors

Tracing now matches the backend instance, so the stale caveat in idma_inst64_tb_pkg is dropped.

Downstream: snitch_cluster#330 waives W123/W287a with the note "to fix in idma"; that waiver
can be removed once this lands and the iDMA pin moves.

inst64 instantiated idma_backend_rw_axi_rw_init_rw_obi, which carries an
INIT write manager the frontend can never reach. DMINIT selects INIT as a
source only, the module exposes no INIT ports, and dst_protocol is always
AXI or OBI, so init_write_rsp was read by the backend and driven by
nothing.

Add r_init_rw_axi_rw_obi and instantiate that instead. This drops the dead
write manager from the RTL rather than tying its response off, and clears
the Spyglass W123 errors and W287a warnings reported in pulp-platform#172.
Copilot AI lite review requested due to automatic review settings August 19, 2026 14:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@DanielKellerM
DanielKellerM force-pushed the fix/inst64-init-write-rsp branch from 3d890df to c588636 Compare August 19, 2026 14:54
The deploy workflow passes IDMA_BACKEND_IDS on the make command line, so
its input default overrides idma.mk. Without the new id the deployed RTL
would omit idma_backend_r_init_rw_axi_rw_obi, which inst64 now needs.
@DanielKellerM DanielKellerM linked an issue Aug 19, 2026 that may be closed by this pull request
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.

Spyglass violations in idma_inst64_top

2 participants