rtl: PopLinkPHY_Behavioral v1 — configurable line-rate + BER + drop knobs #116
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!116
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "auto/issue-113-20260526T211252Z_issue113"
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
rtl/src/pop/specs/PopLinkPHY_Behavioral.SPEC.md(Status: Draft) — fills in the delay line, BER injector and drop counter behind the existingPopLinkPHYIOsurface so PLAN.md §12.4 ARQ stress can drive the fabric against a deterministic stand-in PHY.numLanes(default 4),symbolWidthBits(default 8),latencyCycles(default 4).tx/rxVec data fields, plus DPI-style runtime knobsberDenominator(32-bit) anddropEvery(32-bit). BER knobs are deliberately kept out ofPopLinkPHYIOso the production-PHY swap stays shape-identical per SPEC §Invariants.0xACE1(taps 31/21/1/0) drives the 1-bit-flip random source. Drop wins over BER for the same cycle.linkUp := true.Balways.// synthesis translate_off/translate_onguard around the sim-only body per SPEC §Invariants ("Never synthesised").Test plan
sbt testgreen locally (17/17, including 4 newPopLinkPHY_BehavioralSpecscenarios).berDenominator=0, dropEvery=0afterlatencyCycles.berDenominator=10→ 60–140 symbol flips over 1000 cycles (loose bound; deterministic LFSR seed makes the count reproducible).dropEvery=8→ exactly 10 drops over 80 cycles (window / dropEvery).elaboratecheck preserved.Closes #113.
VERDICT: PASS
PR #116 lifts
PopLinkPHY_Behavioralfrom the elaborate-only skeleton (PR #106) into a v1 with configurable line-rate, BER injection, and drop knobs — exactly the SPEC §Behavior items it claims to deliver. Mechanical guardrails pass: existing SPDX headers preserved (CHARRUA-1.2source,AGPL-3.0-or-latertest), both files inpackage pop, no AI/Anthropic attribution, no off-limits paths, scope matches Issue #113. Rule 4 is handled with care: the canonicalPopLinkPHYIOclass is preserved (consumedFlippedbyInterChipFabricon its PHY-facing side) and gets concretetx.data/rx.dataVecs parameterised on(numLanes, symbolWidthBits); the module's IO inlines the same fields plus sim-only DPI-styleberDenominator/dropEveryknobs that are explicitly NOT part ofPopLinkPHYIO, preserving the SPEC §Invariants "Same public PopLinkPHYIO bundle as the production PHY" — a swap of behavioral → production PHY remains a ChiselModulesubstitution, not an upper-layer rewrite. SPEC §Invariants "Never synthesised — sim-only guard required" is satisfied with// synthesis translate_off/translate_ondirectives around the LFSR / delay-line body; default tie-offs sit outside the guard so a stray synthesis attempt would fail with unconnectedrx.data, which is the right fail-safe. Rule 7 is meticulously handled:numLanes=4matches PLAN.md §3.3 Edu envelope (verbatim quoted from PR #91/#95);symbolWidthBits=8is annotated as "byte-symbol default the SPEC §Interface Open question leaves until the PHY-option closes";latencyCycles=4is annotated as "SPEC §Interface Open question"; LFSR seed0xACE1is explicitly flagged with "production PHY must accept a seed input (TBD)" matching the SPEC §Behavior reproducibility-seed open framing; the LFSR taps31, 21, 1, 0correctly encode the well-known maximum-period polynomialx³² + x²² + x² + x + 1;linkUp := true.Bis annotated "no training in the behavioral model" matching SPEC §Behavior's degenerate-FSM framing. The four test scenarios map cleanly to SPEC §Behavior invariants: bit-exact passthrough verifies theBER=0invariant afterlatencyCycles, the BER-injection test verifies the §12.4 ARQ-stress driver path with a loose 60–140 / 1000-cycle bound atberDenominator=10(close to 10% expectation with reproducible-LFSR tolerance), and the drop test verifies the SPEC §Behavior drop-knob semantics with deterministic 10 drops over 80 cycles atdropEvery=8. The "drop wins over BER for the same cycle" precedence is documented inline. No fabricated VC counts, lane rates, or vendor commitments.Findings
None.
CI green (head
484183bbe7), auto-approving