rtl: standardize package pop + restore PopRoCCRouter RoCC IO #69

Merged
navigator merged 1 commit from auto/issue-68-20260525T205321Z_issue68 into main 2026-05-25 19:41:37 -03:00
Owner

Summary

Retrospective fix for the package + IO surface drift surfaced in #68 after #63/#64/#65/#66 merged without semantic review.

  • All four Phase-1 RTL modules (PopRoCCRouter, InterGemminiXbar, PCIeHostBridge, PopLinkPHY_Behavioral) now live in package pop — matches build.sbt organization := "coop.pop.fluidpop" and decouples from the upstream Chipyard tree (rtl/README.md: "Nothing in this tree depends on Chipyard yet"). PCIeHostBridge and PopLinkPHY_Behavioral already used pop; PopRoCCRouter and InterGemminiXbar (plus their specs) moved from chipyard.pop.
  • PopRoCCRouter IO bundle now surfaces the two RoCC ABI-fixed facets — cmd (Flipped(Decoupled(RoCCCommand))) and resp (Decoupled(RoCCResponse)) — with field layout mirroring freechips.rocketchip.tile.RoCCCommand / RoCCResponse (rocket-chip LazyRoCC.scala). The bundles are declared locally in the same file because the standalone build has no rocket-chip on its classpath — Maven Central does not publish rocketchip for Chisel 6, and the Chipyard pin lands later in PLAN.md §6 Week 4. Explicit forward-link comments point to the canonical freechips.rocketchip.tile types that will replace these mirrors when Chipyard integration arrives; xLen is an explicit constructor parameter (default 64 per ADR-001 RV64GC) to side-step the upstream implicit p: Parameters dependency.
  • The two facets the SPEC still leaves TBD (per-tile fan-out toward MultiGemminiCluster, exception path back to Rocket) remain as comments.

Acceptance criteria

  • All four .scala modules declare package pop. (PopLinkPHY_Behavioral is on its own merge branch; already pop.)
  • All four spec files declare matching package.
  • sbt -no-colors compile green from rtl/.
  • PopRoCCRouter IO bundle exposes RoCCCommand (input) and RoCCResponse (output) with field layout matching freechips.rocketchip.tile, plus TBD comment block for per-tile fan-out and exception path. Local mirror used because the build is intentionally Chipyard-decoupled until §6 Week 4.
  • PopRoCCRouterSpec still elaborates green; full sbt test green across PCIeHostBridgeSpec, InterGemminiXbarSpec, PopRoCCRouterSpec.

Test plan

  • cd rtl && sbt -no-colors compile
  • cd rtl && sbt -no-colors test

Closes #68

## Summary Retrospective fix for the package + IO surface drift surfaced in #68 after #63/#64/#65/#66 merged without semantic review. - All four Phase-1 RTL modules (`PopRoCCRouter`, `InterGemminiXbar`, `PCIeHostBridge`, `PopLinkPHY_Behavioral`) now live in `package pop` — matches `build.sbt` `organization := "coop.pop.fluidpop"` and decouples from the upstream Chipyard tree (`rtl/README.md`: "Nothing in this tree depends on Chipyard yet"). `PCIeHostBridge` and `PopLinkPHY_Behavioral` already used `pop`; `PopRoCCRouter` and `InterGemminiXbar` (plus their specs) moved from `chipyard.pop`. - `PopRoCCRouter` IO bundle now surfaces the two RoCC ABI-fixed facets — `cmd` (Flipped(Decoupled(RoCCCommand))) and `resp` (Decoupled(RoCCResponse)) — with field layout mirroring `freechips.rocketchip.tile.RoCCCommand` / `RoCCResponse` (rocket-chip `LazyRoCC.scala`). The bundles are declared **locally** in the same file because the standalone build has no rocket-chip on its classpath — Maven Central does not publish rocketchip for Chisel 6, and the Chipyard pin lands later in PLAN.md §6 Week 4. Explicit forward-link comments point to the canonical `freechips.rocketchip.tile` types that will replace these mirrors when Chipyard integration arrives; `xLen` is an explicit constructor parameter (default `64` per ADR-001 RV64GC) to side-step the upstream `implicit p: Parameters` dependency. - The two facets the SPEC still leaves TBD (per-tile fan-out toward `MultiGemminiCluster`, exception path back to Rocket) remain as comments. ## Acceptance criteria - [x] All four `.scala` modules declare `package pop`. (`PopLinkPHY_Behavioral` is on its own merge branch; already `pop`.) - [x] All four spec files declare matching package. - [x] `sbt -no-colors compile` green from `rtl/`. - [x] `PopRoCCRouter` IO bundle exposes `RoCCCommand` (input) and `RoCCResponse` (output) with field layout matching `freechips.rocketchip.tile`, plus TBD comment block for per-tile fan-out and exception path. Local mirror used because the build is intentionally Chipyard-decoupled until §6 Week 4. - [x] `PopRoCCRouterSpec` still elaborates green; full `sbt test` green across `PCIeHostBridgeSpec`, `InterGemminiXbarSpec`, `PopRoCCRouterSpec`. ## Test plan - [x] `cd rtl && sbt -no-colors compile` - [x] `cd rtl && sbt -no-colors test` Closes #68
rtl: standardize package pop + restore PopRoCCRouter RoCC IO
All checks were successful
build / scalafmt-check (pull_request) Successful in 5s
build / sbt-compile (pull_request) Successful in 5s
build / shell-lint (pull_request) Successful in 19s
12b725c2cf
Retrospective fix surfaced in issue #68 after merging #63/#64/#65/#66.

Package — the four resolver runs split between `chipyard.pop` (#63, #64)
and `pop` (#65, #66). Standardise on `pop`: shorter, matches
`build.sbt` `organization := "coop.pop.fluidpop"`, decouples from the
upstream Chipyard namespace which the rtl/ tree does not yet depend on
(`rtl/README.md`: "Nothing in this tree depends on Chipyard yet").
`FluidPopSoC` (#54) will instantiate all four modules and needs them
in a single namespace.

PopRoCCRouter IO — #63 shipped `val io = IO(new Bundle {})`, an empty
bundle: placeholder, not skeleton. Surface the two facets fixed by
Rocket's RoCC ABI as concrete ports — `cmd` (Flipped(Decoupled(RoCCCommand)))
and `resp` (Decoupled(RoCCResponse)) — with field layout mirroring
`freechips.rocketchip.tile.RoCCCommand` / `RoCCResponse` from rocket-chip
`LazyRoCC.scala`. The standalone build has no rocket-chip on its
classpath (Maven Central does not publish rocketchip for Chisel 6;
Chipyard pin lands in PLAN.md §6 Week 4), so the bundles are declared
locally with explicit forward-link comments to the canonical types and
`xLen` as an explicit constructor argument (defaults to 64 per ADR-001
RV64GC). When Chipyard integration lands the local declarations are
replaced by `import freechips.rocketchip.tile.{RoCCCommand, RoCCResponse}`.
The two facets the SPEC still leaves TBD (per-tile fan-out toward
MultiGemminiCluster, exception path) remain as comments.

Validation: `sbt -no-colors compile` green from rtl/; `sbt test` green
across PCIeHostBridgeSpec, InterGemminiXbarSpec, PopRoCCRouterSpec.
fluidpop-bot approved these changes 2026-05-25 19:41:13 -03:00
Dismissed
fluidpop-bot left a comment
Collaborator

CI green (head 12b725c2cf), auto-approving

CI green (head 12b725c2cfe642d78f1b9b04cd1d601180ea2c52), auto-approving
navigator force-pushed auto/issue-68-20260525T205321Z_issue68 from 12b725c2cf
All checks were successful
build / scalafmt-check (pull_request) Successful in 5s
build / sbt-compile (pull_request) Successful in 5s
build / shell-lint (pull_request) Successful in 19s
to 85ae4a33ca
All checks were successful
build / scalafmt-check (pull_request) Successful in 3s
build / sbt-compile (pull_request) Successful in 3s
build / shell-lint (pull_request) Successful in 11s
2026-05-25 19:41:15 -03:00
Compare
fluidpop-bot left a comment
Collaborator

CI green (head 85ae4a33ca), auto-approving

CI green (head 85ae4a33ca6997030d05b1ae6bb57623aff6b674), auto-approving
Author
Owner

VERDICT: PASS

This PR is a clean retrospective fix for the package drift and stub IO drift surfaced after #63/#64 merged without semantic review. The scope matches issue #68 exactly: four package chipyard.pop declarations flipped to package pop (consistent with build.sbt organization := "coop.pop.fluidpop" and the README's "no Chipyard dependency yet" stance), and PopRoCCRouter gains the two RoCC ABI-fixed facets the SPEC enumerates — cmd and resp — with local mirrors of RoCCCommand/RoCCResponse/RoCCInstruction that match the rocket-chip canonical field layout (RoCCInstruction widths sum to 32 bits; RoCCCommand carries inst + rs1[xLen] + rs2[xLen]; RoCCResponse carries rd[5] + data[xLen]). The two SPEC facets that are still TBD (per-tile fan-out toward MultiGemminiCluster, exception path) are correctly preserved as TBD comments rather than fabricated. xLen is a constructor parameter defaulting to 64, with an explicit ADR-001 RV64GC link in the comment, and the standalone-vs-Chipyard rationale is documented. Stub bodies assign io.cmd.ready := false.B / io.resp.valid := false.B / io.resp.bits := DontCare so the DUT still elaborates green under chiseltest. No off-limits paths touched, no AI/Anthropic attribution, no fabricated numbers or vendor claims.

Findings

None.

<!-- agent:review verdict=PASS ts=1779748910 --> **VERDICT:** PASS This PR is a clean retrospective fix for the package drift and stub IO drift surfaced after #63/#64 merged without semantic review. The scope matches issue #68 exactly: four `package chipyard.pop` declarations flipped to `package pop` (consistent with `build.sbt` `organization := "coop.pop.fluidpop"` and the README's "no Chipyard dependency yet" stance), and `PopRoCCRouter` gains the two RoCC ABI-fixed facets the SPEC enumerates — `cmd` and `resp` — with local mirrors of `RoCCCommand`/`RoCCResponse`/`RoCCInstruction` that match the rocket-chip canonical field layout (RoCCInstruction widths sum to 32 bits; `RoCCCommand` carries `inst + rs1[xLen] + rs2[xLen]`; `RoCCResponse` carries `rd[5] + data[xLen]`). The two SPEC facets that are still TBD (per-tile fan-out toward `MultiGemminiCluster`, exception path) are correctly preserved as TBD comments rather than fabricated. `xLen` is a constructor parameter defaulting to 64, with an explicit ADR-001 RV64GC link in the comment, and the standalone-vs-Chipyard rationale is documented. Stub bodies assign `io.cmd.ready := false.B` / `io.resp.valid := false.B` / `io.resp.bits := DontCare` so the DUT still elaborates green under chiseltest. No off-limits paths touched, no AI/Anthropic attribution, no fabricated numbers or vendor claims. ## Findings _None._
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Fluid/fluidpop-v1!69
No description provided.