spec(PopRoCCRouter): promote PopRoCCRouter.SPEC.md to Draft #96
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Fluid/fluidpop-v1!96
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "spec/poproccrouter-draft"
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?
Refs #48 (companion Chisel skeleton, area:rtl).
Refs #68 (Chisel package + PopRoCCRouter IO surface restore).
Refs #80 (spec-designer role onboarding).
This PR is opened by the autonomous
spec-designerrole; perinfra/ops/agents/roles/spec-designer.shthe role is designer-driven and runs without a dedicated source issue, so noCloses #is attached. If the swarm policy requires a tracking issue per promotion, the follow-up tweak belongs in the role script, not in this SPEC change.Summary
Promotes
rtl/src/pop/specs/PopRoCCRouter.SPEC.mdfrom Status: Stub to Status: Draft. No behaviour, no Chisel, no edits outside the single SPEC file. The IO contract is pinned to ADRs, PLAN.md sections, sibling Draft SPECs (MultiGemminiCluster,InterGemminiXbar,InterChipFabric), and to the rocket-chip RoCC ABI already mirrored in the existing elaborate-only skeleton atrtl/src/pop/PopRoCCRouter.scala. Widths and per-signal shapes that no source pins are recorded as_Open question:_rather than invented.Resolved TBDs
cmd): pinned to the local mirror offreechips.rocketchip.tile.RoCCCommandalready declared inrtl/src/pop/PopRoCCRouter.scalaand to ADR-006 Decision (Edu: 2 cores; Pro: 4) and ADR-006 Consequences (2-bit gemmini-id infunct7).resp): pinned to the local mirror offreechips.rocketchip.tile.RoCCResponsealready declared inrtl/src/pop/PopRoCCRouter.scala(rd,data,xLen).MultiGemminiCluster: tile count pinned to ADR-001 (4 Edu / 16 Pro); selection pinned to ADR-006 Consequences 2-bit gemmini-id; coherence boundary pinned to ADR-011 and cross-referenced to the consumer surface inrtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Interface.funct7decode and tile-id extraction: pinned to ADR-006 Consequences and to the inherited-Gemmini-RoCC policy indocs/spec/fluidpop-isa.md §3.rtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Behavior("Per-tile dispatch driven byPopRoCCRouter").xd/resp.validhandshake) already declared in the rocket-chip mirrors inrtl/src/pop/PopRoCCRouter.scala.rtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Behaviorcluster-stop drain (forward-link to the cluster's open question on the CSR address / drain order).rtl/src/pop/specs/InterGemminiXbar.SPEC.md §Invariants.PopSoCConfig: pinned to ADR-001 (4 Edu / 16 Pro) and the PLAN.md §8.2 Config selection.rtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Invariants.Open questions explicitly retained
cmdport across cores versus one per core: trade-off is per-core handshake clarity versus cluster-side fan-in area; not pinned by any ADR.resp): mirrors the same Open inrtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Interface; resolves jointly.funct7field reconciliation: a follow-up ADR amending the gemmini-id encoding for Pro must close before the Pro variant elaborates without an inventedfunct7encoding (mirrors the same Open inMultiGemminiCluster.SPEC.md §Behavior).docs/spec/fluidpop-isa.md §7and §9; resolves with the trap-cause ADR called out there.rtl/src/pop/specs/MultiGemminiCluster.SPEC.md §Behavior.Scope
Only
rtl/src/pop/specs/PopRoCCRouter.SPEC.mdis touched (one file, +40/-6). No edits to PLAN.md, ADRs, Chisel sources, infra, or CI workflows, per ADR-017 off-limits paths for the spec-designer role.Test plan
sbt compile+ lint) green on the SPEC-only change.pr-reviewerconfirms no fabricated widths / counts / opcodes / addresses (every commitment links back to ADR-001, ADR-006, ADR-011, PLAN.md §8.2 / §12.3, a Draft sibling SPEC, or the rocket-chip RoCC ABI already mirrored inrtl/src/pop/PopRoCCRouter.scala).pr-reviewerconfirms all four original StubTBDs are either resolved with a quoted source or recorded as_Open question:_with a one-sentence trade-off.pr-reviewerconfirms cross-references preserved: every ADR / PLAN.md section / sibling SPEC the Stub mentioned still appears in the Draft (ADRs preserved + ADR-001 / ADR-006 / ADR-011 added; PLAN.md §8.2 / §12.3 preserved).VERDICT: PASS
PR #96 promotes
rtl/src/pop/specs/PopRoCCRouter.SPEC.mdfrom Stub to Draft following the same disciplined pattern as PR #87, PR #91, PR #92, PR #93, PR #94, and PR #95. Mechanical guardrails pass: existing SPDX header preserved (diff starts at line 4), single file touched, no AI/Anthropic attribution, no off-limits paths, no Chisel module so rules 4–6 don't apply, autonomousspec-designerrole explains missingCloses #. Rule 7 is meticulously handled — every concrete claim has a verbatim source quote. Cross-checking against approved PRs in this thread: ADR-006 Decision quote ("Edu: 2x Rocket RV64GC in-order with custom RoCC router to address any of 4 local Gemminis. Pro: 4x cores; option to swap to BOOM for OoO") extends PR #93's matching quote consistently; ADR-006 Consequences ("decodes a 2-bit gemmini-id field in funct7 of custom instruction") matches PR #93; ADR-001 Decision ("Adopt 4 Gemminis per SoC in the Edu configuration, parameterized to 16 in the Pro configuration") matches PR #92/#93; ADR-011 Decision ("Within a chip, 4 Gemminis share L2 coherently") matches all prior PRs; rocket-chip RoCC ABI mirrors (RoCCInstruction, RoCCCommand, RoCCResponse, PopRoCCRouterIO withinst/rs1/rs2/rd/data/xLenparameter defaulting to 64) faithfully match the local bundles materialised in PR #69;docs/spec/fluidpop-isa.md§3 inherited-Gemmini-ISA policy and §2 funct7-TBD policy match PR #77; cross-reference toInterGemminiXbar.SPEC.md §Invariants"Per-source ordering preserved" matches PR #92's invariant. The two facets fixed by the RoCC ABI (cmd,resp) are committed with widths sourced from the in-tree skeleton rather than invented; the two facets the SPEC names abstractly (per-tile fan-out, exception path) are appropriately split between concrete pins (tile count from ADR-001, gemmini-id from ADR-006, coherence boundary from ADR-011, cluster-side surface from MultiGemminiCluster Draft) and honest Open Questions (per-tile bundle shape — mirrored on MultiGemminiCluster's side; Pro 16-tile funct7 reconciliation — mirrored on MultiGemminiCluster's side; exception cause encoding — forward-linked to thedocs/spec/fluidpop-isa.md §9trap-cause ADR). The PR retroactively confirms the funct7-encoding-attribution-to-ADR-006 claim I had repeatedly flagged on PR #77: the SPEC now explicitly cites both ADR-006 Consequences anddocs/spec/fluidpop-isa.md §2for the gemmini-id-in-funct7 policy. Sibling Draft cites (MultiGemminiCluster, InterGemminiXbar, InterChipFabric) reference SPECs that are in fact Draft per PR #93, PR #92, and PR #91; the PR body's constraint check correctly distinguishes Draft-pin sources from Stub siblings used only in Open questions. Promotion history entry is appropriate.Findings
None.
CI green (head
e6c08adebc), auto-approving