rtl: PopSoCConfig v1 — Field keys + Master/Slave Config classes #105
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#105
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 of
PopSoCConfig— theFieldkey declarations plus stubFluidPopMasterConfig/FluidPopSlaveConfigConfig classes — as pinned by the Draft SPEC atrtl/src/pop/specs/PopSoCConfig.SPEC.md(#97). The Draft has Open Questions on the concrete upstream ChipyardConfigkey names (resolves when Chipyard pin lands per PLAN.md §6 Week 4); until then, declare PopSolutions-local Field keys with thecoop.pop.fluidpopnamespace and document the upstream-reuse trade-off in a comment.Scope — strictly what the Draft SPEC pins
case object TileCountKey extends Field[Int]— 4 (Edu) / 16 (Pro) per ADR-001case object ScratchpadSizeKey extends Field[Int]— 256 KiB / 1 MiB per ADR-004case object FabricPortCountKey extends Field[Int]— fixed 4 per ADR-010case object IsMasterKey extends Field[Boolean]— selects PCIe presence per ADR-008case object VariantKey extends Field[Variant]wheresealed trait Variant { case object Edu / case object Pro }— Open question per §Interface on encoding; pick the enum form for future extensibility, annotate the trade-offclass FluidPopBaseConfig extends Config(...)chaining the keysclass FluidPopMasterConfig extends Config(...)settingIsMasterKey := trueclass FluidPopSlaveConfig extends Config(...)settingIsMasterKey := falseOpen Questions — DO NOT INVENT
Configkey reuse — Open per §Interface; until Chipyard pin lands, use PopSolutions-local keys and add// Open question per SPEC §Interface — upstream Chipyard key reuse vs PopSolutions-local keynext to each declaration.FluidPopMasterEduConfig, etc.) vs orthogonalVariantKeyis left to a follow-up ADR; this PR implements the orthogonal form asIsMasterKey ⊕ VariantKey.Acceptance criteria
rtl/src/pop/PopSoCConfig.scaladeclares the Field keys, theVariantsealed trait, and the three Config classes abovertl/tests/PopSoCConfig/PopSoCConfigSpec.scalaextended to verify thatFluidPopMasterConfigresolvesIsMasterKey == trueandFluidPopSlaveConfigresolvesIsMasterKey == false(use a smallParameterslookup, no full Chisel elaboration ofFluidPopSoC)sbt -no-colors compileandsbt -no-colors testgreen fromrtl/rtl/src/pop/PopSoCConfig.scalaandrtl/tests/PopSoCConfig/Plan refs
PLAN.md §8.2 (custom module list); ADR-001, ADR-004, ADR-008, ADR-010.
Notes
This PR introduces the
Variantsealed trait under the same packagepop— keep it adjacent to the Field keys, do not promote it to a separate file.