Cleanup + SW verification framework (chimera-sdk)#90
Draft
Xeratec wants to merge 14 commits into
Draft
Conversation
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>
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 free
to 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.
Cleanup and software-verification groundwork, stacked on top of the 64-bit Cheshire upgrade.
Changes
sw: SoC verification framework +chimera-sdkintegrationsw: fixuartSimpletest; general cleanup andchimera-sdkupdatehw/cluster: givesnitch_clusterits FP-subsystem config; exposesnitch_cluster_pkgbuild: pinpeakrdl-rawheadertest: raise the snRT per-test simulation timeout to 3000sOwn commits (on top of #84)
48f2d5esw: SoC verification framework + chimera-sdk integration3fbd6b1Fix uartSimple testc728ebeCleanup and update chimera-sdk0ad9e5ffix(cluster): give snitch_cluster its FP-subsystem configd8570bcbuild: expose snitch_cluster_pkg for the cluster FP config; pin peakrdl-rawheader5c26f84test: raise snrt per-test sim timeout to 3000s1863d16Init Claude files