rtl: PopRoCCRouter v1 — funct7 decode + dispatch + per-source ordering #104
Labels
No labels
adr
agent:blocked-ci
agent:blocked-human
agent:blocked-resolver
agent:done
agent:in-progress
agent:no-touch
agent:pinged
agent:pr-open
agent:queued
agent:wip
area:board
area:funding
area:infra
area:phy
area:poplink
area:rtl
area:software
area:supply-chain
area:verification
ci-failed
ci-timeout
docs
do-not-merge
human-approved
needs-human-approval
needs-rebase
needs-triage
phase:1
ready-for-review
review:findings
review:pass
risk:tripwire
swarm:quarantined
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Fluid/fluidpop-v1#104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Implement the v1 behaviour of
PopRoCCRouteras pinned by the Draft SPEC atrtl/src/pop/specs/PopRoCCRouter.SPEC.md(#96). The existing skeleton atrtl/src/pop/PopRoCCRouter.scala(PR #69) already has thecmdandrespports plus the localRoCCCommand/RoCCResponsemirrors. This issue lands the actual decode + dispatch logic.Scope — strictly what the Draft SPEC pins
Behaviour to implement (all sourced from §Behavior of the Draft):
funct7decode: extract the top 2 bits as gemmini-id per ADR-006 Consequences (Edu 4-tile addressing).cmdpayload onto the selected per-tile attach; the rest offunct7andfunct/rs1/rs2/rdflow through unchanged.(originating-core-id, rd, xd)to restore the writeback register onresp.resp; cross-source not preserved.xd=0is fire-and-forget;xd=1paired withresp.valid.Open Questions — DO NOT INVENT
N-elementVec(N, Decoupled(_))withN: Intconstructor parameter (default 4 for Edu), but do not invent the per-tile element bundle type beyond what the Draft already exposes (RoCCCommand/RoCCResponsemirrors).inFlightDepth: Int = 8and add// Open question per SPEC §Behaviornext to the parameter declaration.// TBD per SPEC §Interface — exception pathand do not surface a port.Acceptance criteria
rtl/src/pop/PopRoCCRouter.scalabody materialises decode + dispatch + in-flight table per the bullets abovertl/tests/PopRoCCRouter/PopRoCCRouterSpec.scalaextended with at least three chiseltest scenarios:cmd.validwithxd=1→resp.validarrives with matchingrdwithininFlightDepth + 2cyclescmd.validwithxd=0→ fire-and-forget; noresp.validon the same-core portcmdstreams on different per-tile attaches make forward progress under sustained back-pressure on one of them (no-deadlock contract)sbt -no-colors compileandsbt -no-colors testgreen fromrtl/rtl/src/pop/PopRoCCRouter.scalaandrtl/tests/PopRoCCRouter/Plan refs
PLAN.md §8.2 (custom module list), §12.3 (per-module verification floor); ADR-001, ADR-006, ADR-011.