rtl: FluidPopSoC v1 — end-to-end wire-up of all v1 submodules #130
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!130
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "auto/issue-125-20260618T073317Z_issue125"
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?
Summary
Lands the first end-to-end wire-up of all v1 submodules inside
FluidPopSoC:PopSoCConfig(TileCountKey,FabricPortCountKey,IsMasterKey,VariantKey).PopRoCCRouter(#107),MultiGemminiCluster(#114),InterChipFabric(#127),FabricPortCountKey×PopLinkPHY_Behavioral(#116), and — only whenIsMasterKey==trueper ADR-008 —PCIeHostBridge.PopRoCCRouter↔MultiGemminiClusterper-tile fan-out (tileCmd/tileResp↔rocc.cmd/rocc.resp).Vec(numCores, Decoupled(...))Rocket-shaped RoCC cmd/resp at top IO; defaultnumCores = 2per ADR-006 Edu.Open questions not invented (per issue scope + SPEC §Interface)
// val mem = ???marker.Vec(numCores, Decoupled(...))RoCC ports rather than instantiating Rocket directly (Chipyard pin per PLAN.md §6 Week 4).Input(UInt(32.W))placeholders, annotated.Test plan
rtl/src/pop/FluidPopSoC.scalabody instantiates and wires all the v1 submodulesrtl/tests/FluidPopSoC/FluidPopSoCSpec.scalaextended with the two mandated scenarios:FluidPopMasterConfigelaborates AND instantiatesPCIeHostBridgeFluidPopSlaveConfigelaborates AND skipsPCIeHostBridgesbt -no-colors testgreen (33/33 tests pass across all suites)rtl/src/pop/FluidPopSoC.scalaandrtl/tests/FluidPopSoC/Closes #125
VERDICT: PASS
PR #130 lifts
FluidPopSoCfrom elaborate-only into the v1 end-to-end wire-up that ties together all the v1 submodules landed in prior PRs (#107 PopRoCCRouter, #114→#126 MultiGemminiCluster, #127 InterChipFabric, #116 PopLinkPHY_Behavioral, #94→ PCIeHostBridge), scoped cleanly to Issue #125. Mechanical guardrails pass: SPDX headers preserved (CHARRUA-1.2source,AGPL-3.0-or-latertest),package popeverywhere, no AI/Anthropic attribution, no off-limits paths, scope bounded to two files. Rule 4 is handled correctly: the six SPEC §Interface categories remain surfaced —ddr5/popLink/pcie/clockResetas empty bundles with TBD comments,jtagDebug/bmcswitched from empty bundles to opaqueInput(UInt(32.W))placeholders per the issue body's explicit ask ("BMC sideband, JTAG — surfaced as opaqueInput(UInt(32.W))placeholders, annotated"). The newrocctop-level Vec(numCores) Rocket-shaped attach correctly surfaces the per-core RoCC ports since cores live outside the SoC for v1 (Chipyard pin per PLAN.md §6 Week 4 still pending). Rule 7 is meticulously handled:numCores = 2default matches ADR-006 Edu,xLen = 64matches ADR-001 RV64GC, Field keys (TileCountKey,FabricPortCountKey,IsMasterKey,VariantKey) read directly fromPopSoCConfigper PR #108, no widths invented — all the data-path attach tie-offs are documented as Open per the corresponding sibling SPECs. The variant-gated PCIeHostBridge uses an honestOption[PCIeHostBridge]with the master-onlyif (isMaster) Some(...) else Nonepattern matching ADR-008 Decision verbatim. The 32-bit opaque JTAG/BMC placeholder width is annotated as opaque rather than as any specific SPEC commitment. Per-tile wire-up correctly usestileCount(router'stileCmd/tileRespVec width matches cluster'srocc.cmd/rocc.respVec width); per-core wire-up correctly usesnumCores. PHY instances are tied off using the v1 behavioral PHY contract from PR #116 (tx.datazeros,phyResetReq/trainReqfalse,berDenominator/dropEveryzero). Fabric CSR / credits are tied off with documented "TBD per ADR-008 — eFuse / tie-off" formyChipIdand "Open question on creditReturn protocol" annotation. ClusterclusterStopheld inactive with the right reason ("chip-level CSR sequencing is Open per SPEC §Behavior"). Tests verify both Issue #125 scenarios cleanly using Scala-levelOption[PCIeHostBridge]introspection:FluidPopMasterConfig→c.pcie.isDefined,FluidPopSlaveConfig→c.pcie.isEmpty, plus an assertion on the correspondingIsMasterKeyresolution. The default constructor usesFluidPopMasterConfigso the legacyshould "elaborate"smoke test still works. The data-path attaches (cluster ↔ fabric ↔ PHY) are honestly deferred with explicit forward-links to the sibling SPECs' Open questions — the fabricphybundle stays empty, the clusterpopLink/mem/perfCounterssubbundles driveDontCareinternally, and no concrete bundle shapes are invented at this v1.Findings
None.
CI green (head
5bcd4b1b91), auto-approvingCI green (head
5bcd4b1b91), auto-approving5bcd4b1b917c0e0f5c27CI green (head
7c0e0f5c27), auto-approving