Skip to content

Cleanup + SW verification framework (chimera-sdk)#90

Draft
Xeratec wants to merge 14 commits into
pulp-platform:mainfrom
Xeratec:dev/cleanup
Draft

Cleanup + SW verification framework (chimera-sdk)#90
Xeratec wants to merge 14 commits into
pulp-platform:mainfrom
Xeratec:dev/cleanup

Conversation

@Xeratec

@Xeratec Xeratec commented Jul 16, 2026

Copy link
Copy Markdown
Member

Cleanup and software-verification groundwork, stacked on top of the 64-bit Cheshire upgrade.

Depends on #84 (64-bit CVA6 upgrade). Merge #84 first — until then this PR's diff
includes the #84 commits. Base will effectively collapse to just the commits below once
#84 lands.

Changes

  • sw: SoC verification framework + chimera-sdk integration
  • sw: fix uartSimple test; general cleanup and chimera-sdk update
  • hw/cluster: give snitch_cluster its FP-subsystem config; expose snitch_cluster_pkg
  • build: pin peakrdl-rawheader
  • test: raise the snRT per-test simulation timeout to 3000s
  • Add Claude project files

Own commits (on top of #84)

  • 48f2d5e sw: SoC verification framework + chimera-sdk integration
  • 3fbd6b1 Fix uartSimple test
  • c728ebe Cleanup and update chimera-sdk
  • 0ad9e5f fix(cluster): give snitch_cluster its FP-subsystem config
  • d8570bc build: expose snitch_cluster_pkg for the cluster FP config; pin peakrdl-rawheader
  • 5c26f84 test: raise snrt per-test sim timeout to 3000s
  • 1863d16 Init Claude files

Xeratec and others added 14 commits July 7, 2026 15:52
Squashed the migration/framework work (9 commits) into one block for a cleaner
history and an easier rebase over the eventual 64-bit revert:
- Vendor chimera-sdk as a submodule (sw/deps/chimera-sdk) with a containerized
  build (scripts/sdk_container.sh, sw/sw.mk: `make chim-sw*`).
- pytest+ctest SoC test framework (test/, scripts/sim_runner.sh): per-test run
  dirs, SIM_TIMEOUT watchdog + per-test overrides, pytest-xdist parallelism, and
  a pre-optimized vsim snapshot (chim-opt) for parallel-safe batch runs.
- Retire the old sw/ layer: remove sw/tests (migrated to the SDK) and sw/lib;
  keep sw/include + sw/link for the Snitch bootrom (bootrom migration is a TODO).
 - Switch the Python environment to uv (.python-version, uv.lock; setuptools<81
  for reggen's pkg_resources).
- Verification docs, TODO.md, and .vscode IntelliSense config.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
chimera_cluster instantiates snitch_cluster directly (not the generated
snitch_cluster_wrapper) and enables RVF/RVD/Xssr/Xfrep/XF* per core, but left
the FP-subsystem sizing at snitch_cluster's defaults of 0
(NumFPOutstandingLoads/Mem, NumSsrs/NumSsrsMax, SsrRegs/SsrCfgs,
NumSequencerInstr/Loops). A zero-sized FP subsystem makes FP offloads fault
with an illegal instruction (e.g. the `fsd` in a cluster function prologue)
even though double is nominally enabled -- this is the matmul cluster failure.

Integrate the missing parameters from the generated wrapper: source the
config-derived pieces (Hive, SsrRegs, SsrCfgs, FPUImplementation,
AtomicIdWidth) from snitch_cluster_pkg, size the per-core arrays on NrCores
(the DMA core is the last one), and set XDivSqrt=0 to match FPUImplementation
(no div/sqrt unit) and the wrapper. Chimera's SoC-integration overrides
(TCDM/DMA/ICache sizing, external bootrom, Cfg-derived widths, PMA) are kept.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…dl-rawheader

- bender.mk: add the `snitch_cluster_wrapper` target so the generated
  snitch_cluster_pkg (Hive/SsrRegs/SsrCfgs/FPUImplementation) is compiled.
- chimera_cluster: import snitch_cluster_pkg for those config parameters.
- pyproject/uv.lock: pin peakrdl-rawheader==0.1.3 -- the snitch_cluster version
  in use relies on the rawheader 0.1 output format (0.2.x changed it).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
snrt is the slowest test (~1305s in RTL now that the cluster FP subsystem is
correctly configured and real FP executes); the 1200s cap tripped it. 3000s
gives comfortable margin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant