Files

sim/golden — Golden-Reference Comparison

Scripts, hooks, and notes for comparing RTL behavior against a software golden reference (PS2 emulator).

The project-level reference strategy is locked in docs/decisions/0003-golden-reference.md.

Current state (2026-04-17):

  • Live-emulator harness is parked. Two attempts were made: DobieStation (blocked at runtime in the Emulator constructor) and PCSX2 (blocked at CMake configuration on missing modern deps including SDL3, plutovg, plutosvg, ryml, Qt 6.10.1). See third_party/DobieStation/NOTES.md and third_party/PCSX2/NOTES.md.
  • The generated-golden path is the completed Phase 1 result. End-to-end validated through make test_compare: clean run, deliberate corruption, and malformed input all produce the documented exit codes.
  • Live-emulator comparison is deferred until either a fuller EE front end lands (Wave 3) or a low-friction live source becomes available.
  • docs/decisions/0003-golden-reference.md is unchanged — multiple-references is still the strategy; only the phasing moved.

Implementation spec:

  • trace_compare_spec.md — defines the first compare target, common-envelope shape, diff semantics, exit-code contract, and acceptance criteria.

Current implementation (Phase 1, NOP-sled target):

  • make_nop_golden.py — generates the NOP-sled golden trace in the common envelope. Options: --count, --reset-vector, -o. Default matches the 32-fetch window produced by tb_ee_fetch_stub.
  • trace_compare.py — filtered order-based diff per spec. Exits 0/1/2/3 for pass / semantic mismatch / usage-or-missing / malformed.
  • dobiestation_runner/ — headless DobieStation harness. Builds cleanly; runtime blocked at Emulator constructor (see third_party/DobieStation/NOTES.md). Fetch tap is instrumented and ready to emit in this same envelope once the runtime block is resolved.

Expected content as this area grows:

  • build/run notes for emulator-side tools,
  • patches or instrumentation to emit traces in the chosen format,
  • additional comparison scripts as new event classes come under diff,
  • disagreement policy notes for "spec vs emulator" and later "emulator vs emulator" cases.