LinxCore v0.57 Verification Matrix¶
This published page mirrors the canonical LinxCore source in
rtl/LinxCore/docs/architecture/verification-matrix.md.
This matrix ties LinxCore architecture intent to strict required gates.
It is the normative mapping between:
- the LinxCore contract pages,
- contract identifiers,
- required validation commands,
- acceptance scenarios used for promotion.
G1 contract rows (normative)¶
| Contract ID | Area | Normative statement |
|---|---|---|
LC-ARCH-DOC-001 |
Architecture docs | Canonical LinxCore docs live in rtl/LinxCore/docs/architecture, are mirrored into docs/architecture/linxcore, and stay nav-wired in LinxArch docs |
LC-MA-PIPE-001 |
Pipeline | IFU is non-lockstep decoupled I-SIDE I-F0..I-F4 and B-SIDE B-F0..B-F4; I-F4 is followed by Instruction Buffer and four-wide fixed-64-bit D1 with a complete prediction record per valid lane; B-F4 runs static/final arbitration and is the last prediction-driven inner-flush point; post-B-F4 Dispatch/BRU mismatch uses BRU flush/recover and I-F0 restart |
LC-MA-RES-001 |
Resource admission | Decode groups reserve ROB/BROB, rename, IQ, and memory-order resources atomically or make no state change |
LC-MA-ROB-001 |
ROB/retirement | Instruction rows allocate in order, commit contiguously, retain cleanup sidecars through deallocation, and recover precisely |
LC-MA-HAZ-001 |
Hazards/replay | Replay, redirect, wakeup, and issue behavior do not violate correctness |
LC-MA-BLK-001 |
Block control flow | BSTART/BSTOP, separate STID plus BID_W=ceil(log2(BROB_ENTRIES)), per-STID BROB ring-qualified age/flush, and recovery-to-boundary legality are preserved |
LC-MA-PRV-001 |
Privilege/traps | ACR service-request entry/return, BI=1 block-state restore, and SSR-visible side effects are precise |
LC-MA-MMU-001 |
MMU | Translation and fault behavior are precise and gate-validated |
LC-MA-IRQ-001 |
Interrupts | Timer IRQ delivery and entry/return behavior are deterministic under strict gates |
LC-MA-MEM-001 |
Memory ordering | Load/store forwarding, replay, and commit-visible ordering stay legal |
LC-MA-ENG-001 |
Engine integration | Engine-backed execution remains visible through the lowered block stream and canonical block/BID completion model |
LC-MA-FWD-001 |
Forward progress | Branch, flush, load-miss, and replay paths preserve progress |
LC-MA-STAGE-001 |
Stage ownership | Every documented stateful boundary maps to a named @module state owner; service contributors and shared per-pipe E/W or R coordinate owners are explicit |
LC-IF-PYC-001 |
pyCircuit interface versioning | pyCircuit-LinxCore contract follows SemVer with gate-enforced compatibility |
LC-IF-PYC-002 |
pyCircuit commit payload | Required commit fields and env controls stay compatible with trace tooling |
LC-IF-TRACE-001 |
Trace schema | LinxTrace schema stays synchronized across producer and consumer tools |
LC-IF-TRACE-002 |
Trace compatibility | Breaking trace changes require major-version bump and compatibility checks |
LC-IF-SYNC-001 |
Cross-tool sync | Emitter, linter, and viewer contracts remain synchronized and gate-validated |
LC-IF-MODEL-001 |
LinxCoreModel reference | LinxCore behavior changes identify the current LinxCoreModel commit, build path, and gfsim comparison evidence when the model lane is relevant |
Gate-to-contract traceability (required PR gates)¶
| Gate key | Contract IDs covered |
|---|---|
LinxCore::microarchitecture contract harness |
LC-ARCH-DOC-001, LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-PRV-001, LC-MA-MMU-001, LC-MA-IRQ-001, LC-MA-MEM-001, LC-MA-ENG-001, LC-MA-FWD-001, LC-MA-STAGE-001, LC-IF-PYC-001, LC-IF-PYC-002, LC-IF-TRACE-001, LC-IF-TRACE-002, LC-IF-SYNC-001, LC-IF-MODEL-001 |
LinxCore::pyCircuit architecture adapter |
LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-MEM-001, LC-MA-ENG-001, LC-MA-FWD-001 |
LinxCore::Chisel architecture adapter |
LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-MEM-001, LC-MA-ENG-001, LC-MA-FWD-001, LC-MA-STAGE-001, LC-IF-TRACE-001 |
LinxCore::canonical IFU throughput |
LC-MA-PIPE-001, LC-MA-FWD-001 |
LinxCore::production D1 decode |
LC-MA-PIPE-001, LC-MA-HAZ-001, LC-MA-FWD-001 |
LinxCore::shared microarchitecture conformance |
LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-PRV-001, LC-MA-IRQ-001, LC-MA-MEM-001, LC-MA-ENG-001, LC-MA-FWD-001 |
LinxCore::focused OOO promotion |
LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-FWD-001 |
LinxCore::focused LSU promotion |
LC-MA-MEM-001, LC-MA-RES-001, LC-MA-HAZ-001, LC-MA-FWD-001 |
Architecture::LinxCore architecture contract lint |
LC-ARCH-DOC-001, LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-BLK-001, LC-MA-PRV-001, LC-MA-MMU-001, LC-MA-IRQ-001, LC-MA-MEM-001, LC-MA-ENG-001, LC-MA-FWD-001, LC-MA-STAGE-001, LC-IF-PYC-001, LC-IF-PYC-002, LC-IF-TRACE-001, LC-IF-TRACE-002, LC-IF-SYNC-001, LC-IF-MODEL-001 |
Architecture::mkdocs architecture nav/docs |
LC-ARCH-DOC-001 |
LinxCore::stage/connectivity lint |
LC-MA-PIPE-001, LC-MA-STAGE-001 |
LinxCore::opcode parity |
LC-MA-PIPE-001, LC-MA-BLK-001 |
LinxCore::runner protocol |
LC-MA-BLK-001, LC-MA-FWD-001, LC-MA-IRQ-001 |
LinxCore::trace schema and memory smoke |
LC-MA-HAZ-001, LC-MA-MEM-001, LC-IF-TRACE-001 |
LinxCore::cosim smoke |
LC-MA-PRV-001, LC-MA-MMU-001, LC-MA-IRQ-001, LC-MA-MEM-001 |
Testbench::ROB bookkeeping |
LC-MA-PIPE-001, LC-MA-RES-001, LC-MA-ROB-001, LC-MA-HAZ-001, LC-MA-FWD-001 |
Testbench::block struct pyc flow smoke |
LC-MA-BLK-001, LC-MA-HAZ-001, LC-MA-ENG-001 |
pyCircuit::CPU C++ smoke |
LC-IF-PYC-001, LC-IF-PYC-002 |
pyCircuit::QEMU vs pyCircuit trace diff |
LC-MA-PRV-001, LC-MA-MMU-001, LC-MA-MEM-001, LC-IF-PYC-002, LC-IF-TRACE-001 |
pyCircuit::interface contract gate |
LC-IF-PYC-001, LC-IF-PYC-002 |
LinxTrace::contract sync lint |
LC-IF-TRACE-001, LC-IF-SYNC-001 |
LinxTrace::sample trace lint |
LC-IF-TRACE-001, LC-IF-SYNC-001 |
LinxTrace::semver compatibility gate |
LC-IF-TRACE-002, LC-IF-TRACE-001 |
LinxCoreModel::gfsim build |
LC-IF-MODEL-001 |
LinxCoreModel::gfsim workload comparison |
LC-MA-ENG-001, LC-MA-FWD-001, LC-IF-MODEL-001 |
PR mandatory matrix¶
| Domain | Gate Key | Command | Contract intent |
|---|---|---|---|
| LinxCore | LinxCore::microarchitecture contract harness |
bash rtl/LinxCore/tests/test_microarchitecture_contract.sh |
one golden definition per contract, explicit dual-RTL ownership, top-shell roles, scenario coverage, and migration-input safety |
| LinxCore | LinxCore::pyCircuit architecture adapter |
bash rtl/LinxCore/tests/test_pycircuit_architecture_adapter.sh |
AST-backed top, parameter, state-owner, promotion, known-gap, and rejected-architecture evidence for the pyCircuit lane |
| LinxCore | LinxCore::Chisel architecture adapter |
bash rtl/LinxCore/tests/test_chisel_architecture_adapter.sh |
reduced-top role safety, parameter, named-owner, focused-test, known-gap, and rejected-architecture evidence for the Chisel lane |
| LinxCore | LinxCore::canonical IFU throughput |
bash rtl/LinxCore/tools/chisel/run_chisel_ifu_throughput_gate.sh |
generated-RTL 64-byte-line proof for thirty-two consecutive full four-wide D1 groups, final B-F4 metadata per lane, and multiple prediction joins/ordered line contexts in flight |
| LinxCore | LinxCore::production D1 decode |
bash rtl/LinxCore/tools/chisel/run_chisel_d1_instruction_decode_probe.sh |
generated-RTL proof for direct fixed-width four-lane full decode, instruction-UID preservation, final prediction sidecars, blocked-output stability, and precise older-prefix survival; Chisel I-F3 tests separately prove monotonic UID allocation |
| LinxCore | LinxCore::IFU backend feedback |
bash rtl/LinxCore/tools/chisel/run_chisel_ifu_backend_feedback_bridge_probe.sh |
generated-RTL proof for conditional direction-only comparison, Dispatch Call and BRU Return target validation, atomic training/recovery backpressure, exact request identity, actual restart PC, and typed GHR/RAS recovery |
| LinxCore | LinxCore::IFU line memory transport |
bash rtl/LinxCore/tools/chisel/run_chisel_ifu_line_memory_bridge_probe.sh |
generated-RTL proof for tagged 64-byte requests, multiple outstanding exact request rows, blocked-request stability, out-of-order tag-plus-PA response matching, retained refill data, and stale response drain |
| LinxCore | LinxCore::production IFU composition |
bash rtl/LinxCore/tools/chisel/run_chisel_linxcore_production_composition_probe.sh |
generated-RTL proof that tagged translated line fetch reaches fixed-width four-wide D1 full decode and that an exact Direct target mismatch trains the retained new-epoch checkpoint before canonical BRU recovery |
| LinxCore | LinxCore::fixed-width D1 backend ingress |
bash rtl/LinxCore/tools/chisel/run_chisel_d1_decode_rename_rob_ingress_probe.sh |
generated-RTL proof that a four-lane decoded group enters real rename/ROB without packet/window/F4Slot reconstruction; rejects verification decoder modules |
| LinxCore | LinxCore::shared microarchitecture conformance |
bash rtl/LinxCore/tests/test_microarchitecture_conformance.sh |
normalized event schema, shared invariant vectors, architectural commit fields, owner-source mappings, and deterministic cross-lane mismatch detection |
| LinxCore | LinxCore::focused OOO promotion |
bash rtl/LinxCore/tests/test_ooo_promotion.sh |
parameterized pyCircuit MapQ allocation/commit/flush and Chisel per-STID BID ring-order wrap semantics |
| LinxCore | LinxCore::focused LSU promotion |
bash rtl/LinxCore/tests/test_lsu_promotion.sh |
pyCircuit SCB coalescing, request stability, and completion in C++/Verilator plus focused Chisel forwarding, replay, STQ/SCB, and MDB suites, including unequal physical STQ/ROB/full-LSID widths and typed full-LSID STQ recovery |
| LinxCore | LinxCore::canonical scalar MDB probe |
bash rtl/LinxCore/tools/chisel/run_chisel_scalar_lsu_mdb_path_probe.sh |
generated-RTL same/cross-BID typed recovery, SSIT learning/suppression, LU/SU fanout hold, and accepted LIQ wait mutation |
| LinxCore | LinxCore::cross-RTL MDB transaction |
bash rtl/LinxCore/tests/test_lsu_mdb_transaction_cross_rtl.sh |
identical named Chisel/pyCircuit scenarios for conflict-sink backpressure, atomic record/recovery publication, and conflict-free bypass; Chisel additionally proves retained report identity, per-STID watermark selection, exact full-BID promotion, and accepted dequeue |
| LinxCore | LinxCore::MDB recovery to ROB probe |
bash rtl/LinxCore/tools/chisel/run_chisel_recovery_cleanup_rob_probe.sh |
non-oldest retention, wrong-RID lookup retention, exact allocator-stamped pointer recovery split into canonical BID_W plus pointer context, retained multi-source same-STID oldest selection, recovery-fabric class staging, invalid-STID rejection, cross-STID fairness, event-based replacement, accepted block authority, matched cause/payload provenance, and scoped resident ROB prune |
| LinxCore | LinxCore::recovery class merge probe |
bash rtl/LinxCore/tools/chisel/run_chisel_recovery_class_merge_probe.sh |
generated-RTL class-lane proof for per-STID global flush/replay, per-PE retention, same-STID cancellation, completed-block replay drop, merge transformation, dropped/canceled cause resolution, merged payload ownership, invalid STID/PE blocking, irrevocable request/provenance stability, and cross-STID serialization |
| LinxCore | LinxCore::non-LSU recovery producer probe |
bash rtl/LinxCore/tools/chisel/run_chisel_recovery_producer_probe.sh |
generated-RTL four-lane bank proof for independent BCC/IEX/PE retention, stable lane provenance, exact full-pointer payloads, typed miss/nuke/replay/inner classes, absent-oldest watchdog suppression, 0xffff -> 0 replay-pointer rollover, restart TPC preservation, and accepted drain through the canonical fabric |
| LinxCore | LinxCore::cross-RTL recovery class merge |
bash rtl/LinxCore/tests/test_ooo_recovery_class_merge_cross_rtl.sh |
identical named recovery-class scenario set in generated Chisel and pyCircuit RTL, including two STIDs, two PE lanes, cancellation, merge, cause resolution, payload ownership, invalid-scope rejection, blocked-output stability, and full drain |
| LinxCore | LinxCore::BROB order-state probe |
bash rtl/LinxCore/tools/chisel/run_chisel_brob_order_state_probe.sh |
generated Chisel proof for independent per-STID allocation/commit/count windows, exact-head completion ordering, irrevocable retire backpressure, fair cross-STID retirement, simultaneous allocate/retire, canonical BID slot resolution, diagnostic-only upper-bit mismatch, modular metadata reuse, exact strong non-flush prefixes across rollover, unsafe-head blocking, and exception exclusion |
| LinxCore | LinxCore::BROB store-range probe |
bash rtl/LinxCore/tools/chisel/run_chisel_brob_store_range_state_probe.sh |
generated Chisel proof for independent per-STID contiguous store ranges, unknown-count blocking, authoritative explicit counts, exact suffix recovery/reallocation, and BID/store-ID rollover |
| LinxCore | LinxCore::BROB store-count publisher probe |
bash rtl/LinxCore/tools/chisel/run_chisel_brob_store_count_publisher_probe.sh |
generated Chisel proof for live-window admission, retained scalar/explicit sources, same- and different-block collision policy, idempotent/conflicting duplicates, accepted-recovery cancellation, sink backpressure, and count-known head gating |
| LinxCore | LinxCore::decode memory-ID probe |
bash rtl/LinxCore/tools/chisel/run_chisel_decode_load_store_id_assign_probe.sh |
generated Chisel proof for independent per-STID LSID/load-ID/store-ID lanes, scoped restore, invalid-STID rejection, and all-lane restart clear |
| LinxCore | LinxCore::store non-flush gate probe |
bash rtl/LinxCore/tools/chisel/run_chisel_store_non_flush_gate_probe.sh |
generated Chisel proof that a committed store remains retained outside the strong BROB prefix, releases after prefix advance, and clears on accepted recovery |
| Architecture | Architecture::LinxCore architecture contract lint |
python3 tools/bringup/check_linxcore_arch_contract.py --root . --strict |
canonical submodule docs, mirrors, and cross-links are present and synchronized |
| Architecture | Architecture::mkdocs architecture nav/docs |
python3 tools/bringup/check_linxcore_arch_contract.py --root . --strict --require-mkdocs |
published docs include the mirrored LinxCore contract pages |
| LinxCore | LinxCore::stage/connectivity lint |
bash rtl/LinxCore/tests/test_stage_connectivity.sh |
pipeline naming, stage-spec ownership, and connectivity invariants |
| LinxCore | LinxCore::opcode parity |
bash rtl/LinxCore/tests/test_opcode_parity.sh |
decode and opcode parity with reference |
| LinxCore | LinxCore::runner protocol |
bash rtl/LinxCore/tests/test_runner_protocol.sh |
co-sim protocol safety and mismatch fail-fast |
| LinxCore | LinxCore::trace schema and memory smoke |
bash rtl/LinxCore/tests/test_trace_schema_and_mem.sh |
commit and trace schema plus memory event presence |
| LinxCore | LinxCore::cosim smoke |
bash rtl/LinxCore/tests/test_cosim_smoke.sh |
commit stream alignment with reference entrypoint |
| Testbench | Testbench::ROB bookkeeping |
bash rtl/LinxCore/tests/test_rob_bookkeeping.sh |
superscalar retirement ordering invariants |
| Testbench | Testbench::block struct pyc flow smoke |
bash rtl/LinxCore/tests/test_block_struct_pyc_flow.sh |
block-structure pyCircuit pipeline integration |
| pyCircuit | pyCircuit::CPU C++ smoke |
bash tools/pyCircuit/contrib/linx/flows/tools/run_linx_cpu_pyc_cpp.sh |
pyCircuit CPU flow functionality |
| pyCircuit | pyCircuit::QEMU vs pyCircuit trace diff |
bash tools/pyCircuit/contrib/linx/flows/tools/run_linx_qemu_vs_pyc.sh |
architectural trace equivalence |
| pyCircuit | pyCircuit::interface contract gate |
python3 tools/bringup/check_pycircuit_interface_contract.py --root . --strict |
versioned pyCircuit↔LinxCore interface control |
| LinxTrace | LinxTrace::contract sync lint |
python3 rtl/LinxCore/tools/linxcoresight/lint_trace_contract_sync.py |
emitter, linter, and viewer pipeline contract sync |
| LinxTrace | LinxTrace::sample trace lint |
bash rtl/LinxCore/tests/test_konata_sanity.sh |
trace validity and stage presence |
| LinxTrace | LinxTrace::semver compatibility gate |
python3 tools/bringup/check_trace_semver_compat.py --root . --strict |
schema version compatibility policy enforcement |
| LinxCoreModel | LinxCoreModel::gfsim build |
cd model/LinxCoreModel && python3 build.py all --target gfsim -j"$(sysctl -n hw.ncpu 2>/dev/null || nproc)" |
current executable-reference build remains available for comparison |
PR opt-in extensions¶
| Domain | Gate Key | Command | Contract intent |
|---|---|---|---|
| SPEC/LinxCore | SPEC::Stage-A dual-transport + 1K xcheck |
bash rtl/LinxCore/tests/test_specint_stage_a_xcheck.sh |
Stage-A closure across QEMU transport lanes and 1K commit parity against LinxCore C++ TB |
Nightly mandatory extensions¶
| Domain | Gate Key | Command | Contract intent |
|---|---|---|---|
| LinxCore | LinxCore::CoreMark crosscheck 1000 |
bash rtl/LinxCore/tests/test_coremark_crosscheck_1000.sh |
long-run architectural convergence |
| LinxCore | LinxCore::CoreMark crosscheck full |
bash rtl/LinxCore/tests/test_coremark_crosscheck_full.sh |
full-run architectural convergence with strict source/data correlation |
| LinxCore | LinxCore::CBSTOP inflation guard |
bash rtl/LinxCore/tests/test_cbstop_inflation_guard.sh |
block boundary behavior regression guard |
| LinxTrace | LinxTrace::DFX trace smoke |
bash rtl/LinxCore/tests/test_konata_dfx_pipeview.sh |
DFX trace path validity |
| LinxTrace | LinxTrace::template trace smoke |
bash rtl/LinxCore/tests/test_konata_template_pipeview.sh |
template-flow trace visibility |
| pyCircuit | pyCircuit::examples regression |
bash tools/pyCircuit/flows/scripts/run_examples.sh |
flow breadth smoke |
| pyCircuit | pyCircuit::simulation regression |
bash tools/pyCircuit/flows/scripts/run_sims.sh |
regression simulation lane |
| pyCircuit | pyCircuit::nightly simulation regression |
bash tools/pyCircuit/flows/scripts/run_sims_nightly.sh |
deep nightly flow closure |
| Integration | Integration::LinxCore performance floor |
python3 tools/bringup/check_linxcore_perf_floor.py --root . --max-regression 10.0 |
<=10% regression cap enforcement |
| LinxCoreModel | LinxCoreModel::gfsim workload comparison |
model/LinxCoreModel/bin/gfsim -f <qemu-passing-linx.elf> |
model-lane comparison for Janus-Core-visible workload behavior |
Acceptance scenarios¶
Mandatory scenario families:
ACRE/ACRCservice requests, ACR transitions, andBI=0/1return-state restoration- MMU translation and page or permission fault paths
- timer interrupt delivery and boundary interactions
- branch, block, and recovery legality
- stage taxonomy: I-F0..I-F4 and B-F0..B-F4 are independent pipelines, I-F4 writes a distinct Instruction Buffer, D1 reads four fixed 64-bit instructions, S3 is IQ visibility, W alignment is declared per producer, CMT/FLS publish at R2, and restart state publishes at R4
- B-SIDE provider arbitration:
backend typed restart > B-F4 > B-F3 > B-F2 > B-F1 > B-F0 > sequential; within B-F4 exact RAS return/high-confidence IBTB are type-selected target authorities, direction override isloop > long-TAGE > short-TAGE > BIM > static, and BTB supplies direct target - B-F1..B-F4 correction of an accepted lower-ranked prediction produces an identity-qualified inner flush and marks predictor recovery pending; the returned canonical prune restores the request-owned GHR/RAS snapshots, applies the corrected conditional or Call/Return delta, removes younger checkpoints, and restarts I-F0 without backend flush. B-F4 is the final such point. Post-B-F4 Dispatch/BRU mismatch exercises BRU flush/recover and I-F0 restart
- atomic decode-group admission failure with no partial RID/BID/rename/store allocation
- contiguous ROB commit, delayed deallocation, precise head fault/nuke, and ring-qualified BID flush across wrap without unsigned BID comparisons
- default 256-entry BROB per STID with 8-bit BID, separate STID and pointer
wrap, stale response rejection, and safe
(STID,BID)-slot reuse - two STIDs simultaneously using the same BID without response/cleanup alias, one-ring flush isolation, independent faulting heads, and fair shared issue/completion/retire arbitration
- lossless simultaneous engine responses with hold-until-fire backpressure, full trap envelope preservation, and no priority-mux drops
- one-command-per-
(STID,BID)enforcement, or transaction-ID/count handling for multiple same-block commands including duplicate-response rejection - CTU D3 parent/child reservation, child-before-final-row retirement and trace ordering, partial-expansion flush, and adjacent-boundary/BID allocation
- target TEPL-to-TAU and FIXP unsupported paths fail explicitly until their execution/completion owners are promoted
- split-store identity, strong non-flush SCB admission, byte-granular nearest-older forwarding, response retry, and replay ordering
- MDB same-BID inner recovery versus cross-BID head-taken nuke
- superscalar multi-issue, multi-commit, and flush ordering
- trace schema, contract ID sync, and SemVer policy
Focused implementation evidence¶
Focused module gates support review of individual mechanisms but do not replace the mandatory PR matrix or prove full-core promotion.
| Mechanism | Focused evidence |
|---|---|
| Decode/resource reservation | FrontendDecodeStage, DecodeRenameROBPath, DispatchROBAllocator, DecodeLoadStoreIdAssign; current allocation timing must be checked against canonical D1/D2/D3 ownership |
| Scalar and local rename | GPRRenameCheckpoint, ScalarDecodeRenameBridge, TULinkRename, TULinkRetireCommandPath |
| ROB/BROB/recovery | ROBEntryBank, ROBRecoveryWatermark, ROBFlushPrune, ReducedCommitROB, BROB, BrobLiveBidResolver, BrobOrderState, FullBidRecoveryBridge, ScalarLSURecoveryBoundary, ScalarLSURecoverySource, ScalarRedirectRecoverySource, RecoveryProducerQueue, RecoveryNonLsuProducerBank, IexIqStallRecoveryIdentity, BccRecoverySource, IexSlowInsertRecoverySource, IexIqStallRecoverySource, PeMismatchRecoverySource, RecoveryProvenance, RecoverySourceArbiter, RecoveryClassMerge, RecoveryFabric, RecoveryBackendControl, DecodeRenameROBPath; verify per-STID circular RID selection, retired-row exclusion, exact ROB/BROB watermark matching, full-pointer watchdog successor selection, BID_W cleanup width, separate pointer qualification, canonical BID slot resolution inside the owner head/live-count window, retained producer backpressure, typed event mapping, accepted-intent-only state mutation, cause resolution, matched payload-sidecar authorization, and missing-identity blocking; remaining wide producer/storage pointers are implementation context until migrated |
| IQ/speculative load readiness | ReducedScalarIssueQueue, ReducedScalarIssuePick, LoadReplayWakeup |
| Store/STQ/SCB | LSIDOrder, StoreDispatchSTQPath, STQEntryBank, STQCommitQueue, STQCommitDrain, SCBRowBank, STQSCBCommitPath, ScalarLSU |
| Load forwarding/replay | LoadStoreForwarding, LoadForwardPipeline, LoadInflightQueue, LoadMissQueue, LoadRefillTransport, LoadResolveQueue, ScalarLSULoadPath, LoadRefillWakeup; verify exact miss-response retention, dual-ingress FIFO order, post-dequeue refill credit, active-line cross-phase masks, first-phase publication suppression, one final cross-line assembly, stable blocked output, hard clear, and typed-recovery survival |
| Memory disambiguation | MDBConflictDetect, MDBSSIT, MDBQueueFanout, LoadReplayMdbLookupWaitPlan, LoadWaitStoreTimeout, ScalarLSUMDBPath, ScalarLSURecoveryBoundary, ScalarLSURecoverySource, RecoveryProvenance, RecoverySourceArbiter, RecoveryClassMerge, RecoveryFabric, RecoveryCleanupControl; verify intent/commit separation, allocation/lookup atomicity from one payload, exactly one integrated conflict/fanout owner, Wait/Repick mutation arbitration, registered store-wakeup delivery and collision hold, retained multi-row waits, generation-keyed timeout restart, atomic wait-clear/delete enqueue, SSIT decay/release, retained typed inner/nuke reports, oldest BID/RID eligibility, exact source promotion, absence of LSU-local cleanup priority, same-STID oldest selection, class cancellation/merge, matched cause/payload provenance, cross-STID fairness, registered ROB-prune acceptance, and flush-cleared transient queues |
For Chisel modules, run the repository wrapper serially, for example
bash tools/chisel/run_chisel_tests.sh --only <Module>. A unit pass proves the
named owner in its harness. Full replacement evidence additionally requires
integrated owner visibility and a neutral generated-RTL/QEMU cross-check.
Matrix maintenance rules¶
- Every contract-visible behavior in
overview.md,microarchitecture.md, andinterfaces.mdmust map to at least one gate row here. - Every required gate used for promotion must appear in this matrix.
- A contract change without a corresponding matrix update is incomplete.
- A gate rename must update this matrix and any checker or publication tooling that parses the gate key.