Uh oh!
There was an error while loading. Please reload this page.
chisel: continue natural W2 owner closure - #49
Draft
zhoubot wants to merge 102 commits into
Draft
Conversation
added 30 commits
July 30, 2026 21:07
Pin the upstream Superpowers workflow and load it at session start so agent process is versioned with the RTL repository. Refresh the Chisel owner-graph audit against the actual top-level elaboration paths and distinguish focused owner maturity from production placement. Constraint: obra/superpowers requires a real harness registration and session-start bootstrap; passive copied skill files are not a valid integration. Rejected: Copy Superpowers skills into LinxCore | copied files drift and failed the upstream clean-session acceptance. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep Superpowers on a recorded stable tag and do not claim current-head workload closure until LinxCoreBenchmarkAutonomousTop elaborates again. Tested: setup_superpowers.sh; clean Codex todo-list bootstrap; clean Chisel Test/compile; LinxCoreCompositionSpec 3/3; LinxCoreTopSpec 3/3; git diff --check; bash -n Not-tested: CoreMark/Dhrystone rerun because LinxCoreBenchmarkAutonomousTopSpec currently fails 3/15 elaborations on uninitialized replay-LIQ LRET identity/fault fields
The canonical load-return contract now carries a LIQ row lease, exact attempt identity, and an exclusive data-or-fault outcome. The compatibility workload top had not consumed those expanded fields, so current-head autonomous elaboration failed before benchmark execution. Thread the existing row-owned identity through the bridge and retained LRET entry while keeping terminal faults owned by the canonical ScalarLSU/IEX path. Constraint: The reduced workload bridge publishes only completed data returns; production terminal faults remain canonical ScalarLSU/IEX ownership Rejected: Tie off load identity and attempt metadata | would elaborate but permit stale returns after LIQ reuse Confidence: high Scope-risk: narrow Reversibility: clean Directive: Any LRET row-shape extension must be threaded through every compatibility helper and retained entry in the same change Tested: LoadReplayReturnLretPayloadSpec 4/4; LoadAttemptBindingSpec 7/7; ScalarLSULoadPathSpec 5/5; LinxCoreFrontendFetchRfAluTraceTopSpec 44/44; LinxCoreBenchmarkAutonomousTopSpec 15/15; generated RTL xcheck 3 rows and 0 mismatches Not-tested: Frozen-ELF CoreMark and Dhrystone natural benchmark gates; final production OOO/IEX/LSU top replacement
The production load path needs one atomic boundary between three OOO AGU producers, canonical LIQ residency, and the retained terminal metadata required after LIQ release. This packet composes allocation and exact replay rebind without adding another request or result queue, and separates recovery prepare fencing from common-fire destruction. Constraint: ScalarLSULoadPath remains the sole address, miss, replay, refill, and return lifecycle owner. Rejected: Allocate the OOO sidecar after LIQ fire | a second independent handshake can lose exact row/attempt ownership under backpressure. Rejected: Emit speculative wakeup at LIQ allocation | allocation is earlier than the real launch attempt and would publish an unqualified dependency generation. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Cut OooIexExecutionCluster over only after real LIQ launch/rebind drives exact wakeup/cancel; delete OooIexLoadUnit in that same green replacement packet. Tested: OooIexCanonicalLoadOwnershipSpec 5/5; OooIexLoadLiqAllocAdapterSpec 5/5; OooIexLoadTerminalMetadataSpec 3/3; ScalarLSULoadPathSpec 5/5; OooIexExecutionClusterSpec 2/2; tools/chisel/build_chisel.sh; git diff --check. Not-tested: Production execution-cluster cutover, direct STQ result composition, physical translation/cache/coherence, synthesis timing, Dhrystone, CoreMark.
Canonical LIQ allocation is earlier than a physical memory attempt, so speculative readiness must wait for an exact launch token. The existing OOO metadata sidecar now maps each accepted LIQ lease back to its physical AGU lane and derives wakeup, replay/fault cancellation, and W1 bypass without adding lifecycle residency.
Constraint: Allocation cannot publish speculative readiness; only an exact resident {loadId,attempt} launch may do so.
Rejected: Reuse allocation fire as launch | consumers could become spec-ready before the canonical LSU owns a real attempt.
Rejected: Merge same-lane fault and replay cancels | one exact generation would be lost; the rebind is serialized instead.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Cluster cutover must consume these lane-qualified wakeup/cancel/bypass ports and must not reconstruct them from allocation or abstract memory responses.
Tested: OooIexCanonicalLoadOwnershipSpec 7/7; OooIexLoadTerminalMetadataSpec 3/3; tools/chisel/build_chisel.sh; git diff --check.
Not-tested: OooIexExecutionCluster cutover, direct ScalarLSULoadPath/STQ result composition, asynchronous refill identity, physical memory system, synthesis timing, workloads.The production execution cluster now shares one canonical LIQ/terminal metadata owner across all three AGUs and propagates its typed LSU boundary through the execution, store, and closed O3 wrappers. Load recovery joins the existing common prepare/fire, and fault cancellation is published once without depending on W2 readiness. The migration load tracker, abstract request/response protocol, capacity parameter, focused test, and module page are removed only after a real E1-to-terminal replacement test is green. Constraint: Canonical ScalarLSULoadPath remains the sole address, replay, miss, and return lifecycle owner. Rejected: Keep the old load tracker as a compatibility fallback | a dormant second lifecycle owner would make recovery and replay ambiguous. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Connect the propagated canonical port directly to ScalarLSULoadPath and the three STQ result pipes; do not recreate OOO load residency. Tested: OooIexExecutionClusterSpec 4/4; OooIexCanonicalLoadOwnershipSpec 7/7; OooIexLoadTerminalMetadataSpec 3/3; OooIexExecutionStoreIntegrationSpec 4/4; OooParamsSpec 3/3; OooIexExecutionPipelineSpec 1/1; OooO3IexStorePipelineSpec 1/1; tools/chisel/build_chisel.sh; git diff --check. Not-tested: Live ScalarLSULoadPath/STQ-result top composition, physical memory system, synthesis timing, and workloads.
Asynchronous store-forwarding responses now retain the exact canonical LIQ lease, producer-qualified attempt generation, and physical return pipe through E3/E4. Malformed or cross-pipe identities fail closed before normal result qualification, while the result owner retains only the minimal identity sidecar instead of duplicating the 64-byte query image. Constraint: STQ does not know the configured canonical LIQ capacity; the LIQ owner must revalidate the slot and attempt when applying E4. Rejected: Retain the complete STQ query through E3/E4 | duplicates the 64-byte baseline line and creates unnecessary result residency. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Do not apply any asynchronous load result without matching both canonical loadId and producer-qualified attempt at the sole LIQ owner. Tested: STQLoadForwardResultPipelineSpec 6/6; STQLoadForwardingPipelineSpec 13/13; OooIexStoreStqFabricSpec 6/6; OooIexExecutionStoreIntegrationSpec 4/4; OooO3IexStorePipelineSpec 1/1; tools/chisel/build_chisel.sh; git diff --check; read-only code review. Not-tested: Direct canonical launch-to-STQ wiring, E4-to-LIQ mutation, scalar-LSU two-phase recovery, physical translation/cache/coherence, timing closure, and workloads remain later packets.
The LIQ now owns one exact forwarding-result apply boundary shared by compatibility and production modes. A result mutates a row only when its slot-plus-wrap lease, producer attempt, physical return pipe, and accepted-launch lifecycle all match; stale, duplicate, and conflicting results fail closed. Production elaboration removes the abstract compatibility store CAM entirely.
Constraint: The next live three-pipe composition must retain a transiently blocked result above this valid/accepted boundary and discard only typed permanent stale rejections.
Rejected: Keep a second production E4 row-index tracker | bare timing position cannot reject row reuse or replay-generation aliases.
Rejected: Reuse Repick alone as result authority | pick-only rows and duplicate returns would be accepted.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Do not bypass forwardPending or exact {loadId,attempt,returnPipeIndex} comparison when connecting STQ, cache, or refill return paths.
Tested: LoadAttemptBindingSpec 9/9; LoadInflightQueueSpec 16/16; ScalarLSULoadPathSpec 5/5; ScalarLSUSpec 4/4; production emitted graph excludes LoadForwardPipeline and LoadStoreForwarding; tools/chisel/build_chisel.sh; git diff --check; read-only code review.
Not-tested: Direct three-pipe launch/query/result wiring, retained result retry above LIQ, scalar-LSU two-phase recovery, physical translation/cache/coherence, timing closure, and workloads remain later packets.The live STQ seam needs a terminal distinction between stale results and results blocked only by recovery or another LIQ writer. Classify those outcomes at the canonical row owner and retain complete E4 payloads until acceptance or permanent rejection. Constraint: Hard flush clears retained transport while typed precise recovery retries the exact result. Rejected: Treat every LIQ rejection as terminal | recovery and mutation collisions would lose a valid asynchronous result. Confidence: high Scope-risk: narrow Directive: Preserve the hard-flush-clear versus precise-recovery-retry split when wiring the three STQ pipes. Tested: Superpowers RED compile failure; LoadForwardResultRetainer 1/1; LoadAttemptBinding 10/10; LoadInflightQueue 16/16; ScalarLSULoadPath 5/5; ScalarLSU aggregate 26/26; build_chisel.sh; independent review. Not-tested: Live three-pipe STQ query/response composition remains the next packet.
The scalar load owner now queues each physical STQ query, reserves retained result capacity, and revalidates exact asynchronous returns without reinstating the compatibility CAM. Hard recovery clears transport while typed precise recovery fences external handshakes and preserves survivor ownership and reservations. Constraint: Three physical scalar load return pipes and the existing projected STQ BID type remain the current production boundary. Rejected: Ready-dependent query valid | violates Decoupled retention and can deadlock. Rejected: Treat typed precise recovery as hard flush | loses surviving query and E3/E4 ownership. Confidence: high Scope-risk: moderate Directive: Replace the checked BID projection only with a common lossless OOO/STQ ordering adapter; do not remove the fail-closed high-bit guard first. Tested: ScalarLSULoadForwardIntegration 5/5; ScalarLSULoadPath 6/6; STQLoadForwardResultPipeline 7/7; LoadAttemptBinding 10/10; LoadInflightQueue 16/16; STQLoadForwardingPipeline 13/13; OooIexStoreStqFabric 6/6; OooIexExecutionStoreIntegration 4/4; ScalarLSU aggregate 32/32; Chisel build; diff check; independent re-review. Not-tested: Closed OOO/store-fabric/scalar-LSU wrapper, physical memory system, synthesis timing, Dhrystone, and CoreMark.
Close one focused OOO/LSU load-store subgraph without adding duplicate LIQ, STQ, forwarding, or terminal residency. Prospective MDB admission now precedes canonical STQ address mutation, and recovery retains one prepared dual-view authorization before common apply. Constraint: Grouped ROB member recovery cannot be projected from native BID alone. Rejected: Apply a BID-only LSU flush across all live load queues | partial-pivot members can disagree and corrupt survivor state. Rejected: Treat MDB ready-low as a protocol error | normal retained side-effect backpressure must be lossless. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Do not install this subgraph in the full O3 top by duplicating the existing canonical load owner or STQ; close hard-block and all-LSU recovery authority first. Tested: OooIexScalarLoadStorePath 5/5; OooIexStoreStqFabric 7/7; ScalarLSUMDBPath 8/8; execution/store IT 4/4; forwarding 5/5; canonical ownership 7/7; ScalarLSULoadPath 6/6; execution and O3 structural gates 1/1 each; Chisel build; diff check. Not-tested: Full Chisel suite, physical DTLB/PMP/PMA/coherence, synthesis timing, CoreMark, and Dhrystone.
Install the focused scalar load path against the execution cluster's existing metadata owner and the store wrapper's existing STQ. Keep forwarding and late-STA MDB admission private, and require execution, store, and scalar-load recovery owners to rendezvous on one fire.\n\nSeparate raw launch intent from the optional OOO metadata permit so replay rebind arbitration stays conservative without feeding terminal completion backpressure into its own ready path. Cap default LIQ population to the available ROB identity domain for small legal O3 profiles. Constraint: Canonical load metadata and STQ residency must remain single-owner Rejected: Instantiate the focused wrapper unchanged | it would duplicate both production owners Rejected: Add a completion buffer | it would complicate recovery and weaken the direct W2 atomic-release contract Confidence: high Scope-risk: moderate Reversibility: clean Directive: Preserve raw launch intent independently from the OOO metadata permit when changing launch/rebind arbitration Tested: OooIexExecutionPipelineSpec; OooIexScalarLoadStorePathSpec; OooIexExecutionStoreIntegrationSpec; OooO3IexStorePipelineSpec; LoadAttemptBindingSpec; OooIexCanonicalLoadOwnershipSpec; ScalarLSULoadPathSpec; build_chisel.sh; git diff --check Not-tested: Physical DTLB/PMP/PMA/device/coherence integration, synthesis timing, and workloads
Record the approved classification, ownership, recovery, and verification contract before changing the installed OOO/IEX scalar-load path. Constraint: Structural STQ uncertainty must not be reclassified as a cache miss or silently dropped Rejected: Export the raw hardBlock dequeue port | leaves retry and cancellation outside canonical ownership Rejected: Convert unsupported conditions into an architectural trap | no approved Linx fault payload contract exists Confidence: high Scope-risk: narrow Directive: Keep structural retry atomic across OOO terminal metadata and the canonical LIQ row Tested: Design self-review and placeholder scan Not-tested: RTL behavior is implemented in the following feature packet
Record the TDD sequence, exact interfaces, recovery constraints, and gate set for installing the retained hard-block policy without creating another lifecycle owner. Constraint: Superpowers execution requires a written task-by-task plan before production edits Rejected: Patch the existing raw O3 dequeue seam in place | it cannot prove atomic metadata and LIQ mutation Confidence: high Scope-risk: narrow Directive: Observe every RED failure before adding the production interface it specifies Tested: Spec coverage, placeholder, and type-consistency self-review Not-tested: Implementation gates follow this planning commit
Classify unknown-store, stale-snapshot, and unsupported forwarding outcomes in one compact resident owner so backpressure and recovery cannot silently drop lifecycle state. Constraint: Structural STQ uncertainty is neither a cache miss nor an approved architectural trap Rejected: Send every hard block to ordinary wait | malformed ordering authority can never produce a valid wakeup Confidence: high Scope-risk: narrow Directive: Preserve classification priority and require exact full-LSID wait keys before emitting WaitStore Tested: bash tools/chisel/run_chisel_tests.sh --only LoadStructuralBlockPolicy (4 tests) Not-tested: Canonical LIQ mutation and OOO integration follow in subsequent commits
Add a dedicated canonical LIQ transition from Repick plus forwardPending to Wait, validating full row lease, attempt generation, return pipe, wait-store authority, and same-row mutation exclusion before changing any state. Constraint: Ordinary attempt rebind must retain its existing Wait and miss lifecycle contract Rejected: Reuse generic rowMutation | it lacks exact attempt and return-pipe authority Confidence: high Scope-risk: moderate Directive: Structural retry is legal only for the exact resident Repick plus forwardPending attempt Tested: LoadStructuralRetry (4), LoadAttemptBinding (10), ScalarLSULoadForwardIntegration (5) Not-tested: OOO metadata join and typed recovery integration follow in the next commit
Install one retained policy behind the private STQ forwarding fabric, arbitrate retry through the existing OOO metadata owner, join it atomically to the exact LIQ mutation, and keep unsupported state fail closed across backpressure and incomplete recovery. Constraint: Recovery may clear policy state only when both OOO and LSU kill the exact row and every other LSU transient owner is quiescent Rejected: Export raw hardBlock to O3 | leaves lifecycle mutation outside the canonical owner Rejected: Ignore MDB residency during structural recovery | would accept a partial multi-owner recovery transaction Confidence: high Scope-risk: moderate Directive: Keep rebind conflict checks on raw mutation intent; downstream acceptance in ready logic recreates combinational cycles Tested: OooIexScalarLoadStorePath (8), LoadStructuralRetry (4), OooIexCanonicalLoadOwnership (7), OooIexStoreStqFabric (7), OooO3IexStorePipeline (1), OooIexExecutionPipeline (1) Not-tested: Cross-line forwarding remains unsupported and full MDB typed-recovery projection remains a documented gap
Record the retained hard-block policy, exact retry transaction, fail-closed cross-line behavior, and the remaining all-LSU recovery boundary. Correct the executable gate list to use real structure selectors and the repository build wrapper. Constraint: The compact policy can clear on exact dual-view recovery only while every other transient LSU owner satisfies the existing empty-state fence. Rejected: Cite Documents/a.txt as design evidence | the file is absent from the current repository and history available to this packet Confidence: high Scope-risk: narrow Directive: Do not relax unsupported structural cases until full LSID/BID authority and every LSU recovery projection are exact. Tested: policy 4/4; structural retry 4/4; LIQ 16/16; STQ result 7/7; forwarding 5/5; scalar closure 8/8; canonical ownership 7/7; store fabric 7/7; O3 structure 1/1; execution structure 1/1; Chisel build Not-tested: cross-line execution, physical memory integration, synthesis timing, and workloads
The next development cycle needs one ordered source for module ownership, typed interfaces, parameter profiles, replacement evidence, and final deletion instead of another set of parallel upgrade notes. This plan turns the approved TOP/IFU/CTU/OOO/IEX/LSU/DTU design into twenty test-gated implementation packets. Constraint: a.txt, b.txt, and superscalarNPU are reference-only and cannot override Linx semantics Constraint: Public box names stay TOP, IFU, CTU, OOO, IEX, LSU, and DTU Rejected: Delete the old chain before natural benchmark parity | removes the only working evidence path too early Rejected: Copy fixed four-lane superscalarNPU ports | conflicts with 2/4/6/8 parameterization Confidence: high Scope-risk: broad Directive: Complete interface and owner gates before moving state into the new TOP composition Tested: git diff --check; forbidden-term and placeholder scan; twenty-task structure check; referenced gate path audit Not-tested: No RTL or benchmark command ran because this commit changes documentation only
Establish a dependency-free NDF profile, stable ownership and pipeline clauses, executable coverage checks, and a per-loop workflow ledger before any stateful Chisel migration begins. Constraint: NDF clauses must express only LinxCore semantics and must not expose private design-input filenames or external architecture narrative Constraint: TOP remains routing-only while OOO owns retirement and global recovery planning Rejected: Depend on the external NDF CLI | adds an unnecessary build dependency and weakens repository-local reproducibility Rejected: Require a reference checkout HEAD to equal the pinned revision | a pinned commit may validly exist on another ref Confidence: high Scope-risk: narrow Reversibility: clean Directive: Add every future L1 MUST clause with an executable VER edge, and keep external mechanisms rewritten as LinxCore-owned contracts Tested: python3 -m unittest tests.test_ndf_profile -v (9 tests); python3 tools/spec/check_ndf_profile.py docs/spec; python3 tools/spec/check_ndf_profile.py docs/spec --verify-local-references; bash tools/chisel/build_chisel.sh; git diff --cached --check Not-tested: No RTL behavior changed in this loop; W2/W4/W6/W8 parameter elaboration starts in Task 2
Centralize core, box, width, and resource parameters so W2/W4/W6/W8 profiles fail closed before elaboration. Preserve the old chain through value-only adapters while the restructure proceeds, and extend the NDF plan with typed interface ownership, refinement, coupling, and generated-manifest gates. Constraint: The maintained profiles must support 2, 4, 6, and 8 lanes without adding dependencies or duplicating hardware state. Rejected: Keep widths in module-local parameter records | permits silent cross-box drift and makes interface generation ambiguous Confidence: high Scope-risk: moderate Reversibility: clean Directive: Remove the legacy adapters with the old chain in Task 20; do not let them become a second parameter authority. Tested: CoreConfigurationSpec (9), OooParamsSpec (3), CoreParamsInterfaceClosureSpec (2), NDF checker unit tests (10), live and strict NDF checks, tools/chisel/build_chisel.sh, git diff --check Not-tested: Typed TOP Bundle elaboration, interface manifest generation, box integration, and natural ELF workloads belong to later plan tasks.
The mainline needs stable seams before stateful boxes can migrate. Canonical transactions, directioned box IOs, NDF contract homes, and generated Bundle projections now define those seams across W2/W4/W6/W8 without connecting a second datapath. Constraint: Cross-box payloads live only under top/interface and identities retain separate slot, wrap, resident, BID, and BROB-generation domains Rejected: Hand-maintained sender and receiver payload copies | they would create competing field authorities Rejected: Fixed eight-bit native BID | configurable BROB slot counts require a derived width while generation remains separate Confidence: high Scope-risk: moderate Reversibility: clean Directive: Connect future boxes through these payloads; update canonical Bundles before regenerating the manifest Tested: NDF checker 10/10; TopInterfaceSpec 8/8; InterfaceManifestSpec 2/2; InterfaceBundles 9/9; CoreConfigurationSpec 9/9; Chisel build; generated manifest check; Verilator lint Not-tested: New-chain CTU/IFU/OOO/IEX/LSU composition and natural workloads remain later plan tasks
CTU now derives template child descriptions from generated opcode metadata and canonical row recipes, then retains ordinary and expanded operations in one ordered Instruction Buffer. Recovery fences prepare and applies exact target-STID pruning without moving backend ownership out of OOO. Constraint: CTU may describe children but D1/D2 validation and D3 backend reservation remain OOO-owned Rejected: Flatten every input packet into one combinational expansion | exceeds bounded buffer and creates poor timing and area Rejected: Compact all retained payloads on recovery | quadratic wide-mux network made verification and hardware scale poorly Confidence: high Scope-risk: moderate Reversibility: clean Directive: Do not add ROB, BROB, rename, issue, or LSU state to CTU; child descriptors must retain the raw parent Tested: CTUSpec; InstructionBufferSpec; TopInterfaceSpec; opcode parity; NDF checker and unit tests; Chisel build; Verilator lint Not-tested: New IFU-to-CTU-to-OOO composition and natural benchmark execution remain Tasks 5-7 and later
The front-end boundary now has an explicit IFU-to-CTU-to-OOO refinement chain and every later interface loop starts from a reproducible clause-centered work order. This turns payload shape, state ownership, change fanout, and adjacent-box evidence into one reviewable contract. Constraint: External references guide organization only; Linx semantics and ownership remain repository-defined Rejected: Treat generated Bundle field tables as the normative interface source | field shape alone cannot define ordering, recovery, or ownership Confidence: high Scope-risk: narrow Reversibility: clean Directive: Interface-changing loops must record the spec baseline, clause neighborhood, fanout, manifest delta, and adjacent-box evidence Tested: git diff --check; staged diff review Not-tested: No RTL behavior changed by this planning-only commit
The canonical IFU now reuses the retained translation, cache, miss, line-assembly, prediction-join, and epoch owners while placing one parameterized Fetch Buffer at the IFU-to-CTU seam. Complete 2/4/6/8-byte instructions leave IFU in 64-bit containers, and W2/W4/W6/W8 affect delivery packetization without changing the private four-lane assembly engine. Instruction translation and line traffic now carry an explicit access kind and exact generation-qualified response identity. Denied or corrupt line beats terminate assembly and become canonical fetch faults with the original cause; they cannot install substituted cache data. Trace retention is observational and cannot consume IFU-to-CTU credit. Constraint: IFU must reuse the proven ITLB, L1I, miss, cross-line, prediction-join, and recovery owners without retaining a second instruction queue Rejected: Expose the private four-lane D1 group as the cross-box interface | violates W2/W4/W6/W8 delivery profiles and duplicates retained state Rejected: Encode translation traffic as a coherence acquire | hides request purpose and makes memory routing implicit Rejected: Convert denied or corrupt line beats to zero data | discards architectural fault evidence and creates executable bytes Confidence: high Scope-risk: moderate Reversibility: clean Directive: ROB/BROB allocation and uop resource restriction remain OOO-owned; IFU emits only architectural fetch, prediction, and fault identity Tested: IFUISideSpec 4/4; CoreConfigurationSpec 10/10; LinxCoreIfuSpec 7/7; CTUSpec 11/11; TopInterfaceSpec 8/8; InterfaceManifestSpec 2/2; NDF checker tests 10/10; live NDF profile 86 clauses with zero open questions; interface manifest check; Chisel build; Verilator lint; independent review approve Not-tested: Final B-SIDE extraction, IFU-to-CTU TOP composition, and natural ELF execution remain later plan tasks
Task 6 adds public IFU package boundaries around the existing B-SIDE predictor/history owner and the canonical redirect/feedback mechanisms. LinxCoreIfu now instantiates those public boundaries directly, while public IFU keeps the fixed-width IFU-to-CTU payload unchanged and avoids a tied-off backend-feedback queue until TOP/OOO supplies a live producer. Constraint: Preserve fixed-64-bit IFU-to-CTU Bundle shape and Task 5 behavior Constraint: Backend facts must arrive through OOO-authored validation or typed recovery, with no direct IEX-to-IFU control Rejected: Instantiate a tied-off IFUBackendFeedback inside public IFU | would add unused queue state below IFU without a live OOO producer Confidence: high Scope-risk: narrow Directive: Do not add another predictor/history/recovery owner; route future backend validation through IFUBackendFeedback only when the OOO producer is wired Tested: bash tools/chisel/run_chisel_tests.sh --only IFUPredictionSpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFURecoverySpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFUCTUIntegrationSpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFUISideSpec Tested: bash tools/chisel/run_chisel_tests.sh --only CTUSpec Tested: bash tools/chisel/run_chisel_tests.sh --only InterfaceBundles Tested: bash tools/chisel/run_chisel_tests.sh --only TopInterfaceSpec Tested: bash tools/chisel/run_chisel_tests.sh --only InterfaceManifestSpec Tested: python3 tools/chisel/render_top_interface_manifest.py --check Tested: python3 -m unittest tests.test_ndf_profile -v Tested: python3 tools/spec/check_ndf_profile.py docs/spec Tested: bash tools/chisel/build_chisel.sh Tested: bash tools/chisel/run_chisel_verilator_lint.sh Tested: git diff --check Not-tested: Live TOP/OOO backend-validation wiring; deferred to later TOP/OOO integration packet
Review round 1 found that Task 6 tests named broader behavior than they actually exercised. This follow-up keeps the architecture unchanged and strengthens only the public IFU test coverage and report evidence. Constraint: Preserve the current B-SIDE and recovery architecture Constraint: Fix Important review findings without weakening test names or requirements Rejected: Rename the provider-order test to narrower B-F4 coverage | would hide the missing BF0/BF1/BF2/sequential/rank checks Rejected: Add production hooks for BF3-only observation | unnecessary for this review-fix scope because public providerRank now locks the BF3 ordering contract Confidence: high Scope-risk: narrow Directive: Keep provider-order tests tied to both public rank semantics and real public B-SIDE traffic where the pipeline exposes an observable response Tested: bash tools/chisel/run_chisel_tests.sh --only IFUPredictionSpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFURecoverySpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFUCTUIntegrationSpec Tested: bash tools/chisel/run_chisel_tests.sh --only IFUISideSpec Tested: bash tools/chisel/run_chisel_tests.sh --only CTUSpec Tested: bash tools/chisel/build_chisel.sh Tested: git diff --check Not-tested: Full repository test suite; review-fix scope changed tests only and focused plus adjacent IFU/CTU gates passed
Round 2 asked for a real public BSide BF3 simulation. Multiple public-path attempts failed before any BF3 provider could be observed, including a real BF2/BIM-then-BF3 setup that produced no progressive response within 128 cycles. The failing exploratory test edits were removed so the branch remains green, and the report now records the RED evidence for a separate production investigation/fix lane. Constraint: Do not leave a known failing BF3 exploratory test in the branch Constraint: Do not add production-only test hooks Rejected: Keep tweaking seeded prediction-sidecar tests | BSide overwrites incoming request prediction with Sequential initial state Rejected: Commit the failing BF3 test | would break the focused gate without an implemented production fix Confidence: medium Scope-risk: narrow Directive: Open a production BF3 observability/arbitration fix lane before claiming real B-F3 pipeline coverage Tested: bash tools/chisel/run_chisel_tests.sh --only IFUPredictionSpec Tested: bash tools/chisel/build_chisel.sh Tested: git diff --check Not-tested: A passing real BF3 ShortTage simulation; current public-path attempts fail before observing BF3
The prior report-only commit treated missing BF3 output as a production observability gap. Debugging showed the stimulus was invalid: BF3 is silent when ShortTage agrees with the effective tuple, and BF4 waits for exact boundary metadata. This change adds the valid public BSide regression by training target ShortTage not-taken at GHR zero, driving BIM taken through non-evicting aliases, returning the canonical prune after BF2, and observing a real BF3 ShortTage correction. Constraint: Do not rewrite or amend the earlier report-only commit Constraint: Use public BSide behavior without production-only hooks Rejected: Seed request prediction sidecars | BSide initializes requests as Sequential internally Rejected: Alias 0x5320 | evicted the target ShortTage slot and produced BF4 final instead of BF3 Confidence: high Scope-risk: narrow Directive: BF3 tests must force a tuple mismatch against the current effective prediction; agreement is intentionally silent Tested: bash tools/chisel/run_chisel_tests.sh --only IFUPredictionSpec Tested: bash tools/chisel/build_chisel.sh Tested: git diff --check Not-tested: Full repository test suite; focused BF3 regression plus build passed
Loop 6 needed three review rounds to distinguish a missing BF3 test from a production defect. Record the accepted public-path BF3 proof, the four-profile IFU-to-CTU behavior matrix, and the clean review result so Task 7 inherits an accurate boundary baseline. Constraint: Keep implementation and review-fix commits atomic Rejected: Squash the BF3 investigation history | it records why agreeing ShortTage predictions are intentionally silent Confidence: high Scope-risk: narrow Directive: Do not claim live backend validation until the later TOP/OOO integration packet supplies the OOO-authored producer Tested: IFUPredictionSpec 6/6; IFURecoverySpec 4/4; IFUCTUIntegrationSpec 2/2; IFUISideSpec 4/4; CTUSpec 11/11 Tested: InterfaceBundlesSpec 9/9; TopInterfaceSpec 8/8; InterfaceManifestSpec 2/2; manifest and NDF checks; Chisel build; Verilator lint; git diff --check Not-tested: Natural Dhrystone/CoreMark execution remains Tasks 18-19
The NDF interface plan now mirrors the executable FrontEndOp tagged union and separates D2 virtual identity planning from physical ROB/BROB publication. This removes a recursive type sketch and prevents Task 7 from creating a second allocation owner while preserving the full-width identity contract. Constraint: Bundle elaboration and the generated manifest remain the executable interface-shape source Rejected: Embed DecodedUop inside FrontEndOp | DecodedUop already retains FrontEndOp and would make the contract recursive Rejected: Allocate BROB state in D2 | BROB binding belongs to the later unique owner Confidence: high Scope-risk: narrow Reversibility: clean Directive: D2 may retain virtual RID intent but must not duplicate D3 RID-tail or BROB state Tested: python3 -m unittest tests/test_ndf_profile.py; python3 tools/spec/check_ndf_profile.py docs/spec --verify-local-references; git diff --check Not-tested: Planning-only change; no RTL behavior changed
added 30 commits
August 2, 2026 21:26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
This draft checkpoints the existing Chisel mainline continuation before the independent PTO ISA 0.58 Tile release work. It advances the connected natural W2 path, opcode recipes, OOO/IEX/LSU ownership, typed interfaces, tests, and execution ledger without claiming benchmark completion.
Fresh verification
git diff --check: PASSFrontendOperandDecode: 2/2 PASSOooD1Decode: 13/13 PASSOooIexAluPipeline: 6/6 PASSTURenameSequence: 5/5 PASSKnown gaps
RENUselector was stopped during a non-default-capacity Verilator build after reaching ~10.2 GB peak RSS. It is not reported as passing in this PR.This draft intentionally remains separate from LinxCore PTO ISA 0.58 issue #48 and must not be used as v0.58 release evidence.