rtl: standardize Chisel package + restore PopRoCCRouter IO surface #68
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#68
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?
Retrospective code review of #63, #64, #65, #66 — 2 findings
These were merged without semantic review (pr-approver only checks CI, no diff inspection — see issue for
pr-reviewerrole coming up). Walking the diffs reveals:Finding 1 — Package name split across modules
packagePopRoCCRouterchipyard.popInterGemminiXbarchipyard.popPCIeHostBridgepopPopLinkPHY_BehavioralpopDifferent resolver runs picked different namespaces. When
FluidPopSoC(#54) eventually instantiates all four, Chisel resolution will fail until they all live in one package.rtl/build.sbtsetsorganization := "coop.pop.fluidpop"and is a standalone build (not Chipyard-integrated yet) — so neither name is "correct" in the Chipyard sense; the project just needs to pick one and apply it everywhere.Proposal: standardise on
pop(shorter, matchesorganization, decouples from Chipyard tree which is read-only upstream). Two-line fix per module.Finding 2 — PopRoCCRouter has zero IO ports
rtl/src/pop/PopRoCCRouter.scaladeclaresval io = IO(new Bundle {})— an empty IO bundle. The module elaborates but has no pins at all. While the SPEC §Interface isTBDfor widths, the signal categories (RoCC request bundle, response bundle, per-tile fan-out, exception path) are named in the spec and have canonical Chisel types available infreechips.rocketchip.tile(RoCCCommand,RoCCResponse). A skeleton ought to surface those bundles even if widths and decode logic are deferred — otherwise the module is a placeholder, not a skeleton.Compare to #66 which materialises
linkUp = Output(Bool())with a clear justification, and leaves only the unspecified items as comments.Proposal: rebase #63's body to pull in Rocket's
RoCCCommand/RoCCResponseas the request/response surface, leave per-tile and exception paths as TBD comments.Acceptance criteria
.scalamodules (PopRoCCRouter,InterGemminiXbar,PCIeHostBridge,PopLinkPHY_Behavioral) declarepackage pop.rtl/tests/<Mod>/<Mod>Spec.scaladeclare matching package.sbt -no-colors compilegreen fromrtl/.PopRoCCRouterIO bundle exposesRoCCCommand(input) andRoCCResponse(output) fromfreechips.rocketchip.tile, plus a comment block for the still-TBD per-tile fan-out and exception path.PopRoCCRouterSpecstill elaborates green.Notes
rtl/.pr-reviewerrole lands (separate work), this exact class of finding gets caught at PR time instead of retrospectively.