Regressions
A regression runs the test suites listed in one manifest and combines their results.
Configure a regression
rtl-buddy-filetype: reg_config
test-configs:
- design/block_a/verif/tests.yaml
- design/block_b/verif/tests.yaml
Paths resolve from the directory containing regression.yaml. Each suite keeps its own artefacts and detailed log; the manifest directory receives the regression log and merged outputs.
See YAML Formats: regression.yaml for the schema.
Resolve the manifest
An explicit config wins:
rb regression --reg-config path/to/regression.yaml
Without it, RTL Buddy checks:
./regression.yamlin the invocation directorycfg-rtl-reg.reg-cfg-pathinroot_config.yaml
Other flow regressions use the same order: explicit -c, ./<flow>_regression.yaml, then the matching cfg-rtl-reg.<flow>-reg-cfg-path. Declare non-root flow manifests in cfg-rtl-reg so graph discovery can find them.
Filter by regression level
Tests with reglvl in the selected inclusive range run; others report SKIP:
rb regression --reg-level 2000
rb regression --start-level 1000 --reg-level 3000
The default upper level is 0, so an unqualified regression runs must-run tests with reglvl: 0. A test may define one level or builder-specific levels. See Tests.
Reuse compilation
When tests share compile inputs, reuse a compiled build:
rb regression --share-build
Verilator, VCS, and Icarus support cross-test sharing. Reuse is reported once per build directory per process on the console, and every test's compile.log (and the log file) records its own reuse; add --rebuild to compile even when the stamp says the build is current. See Sharing compiled builds for invalidation and backend limitations.
Run in parallel
The default --dispatch local runs tests sequentially in the current process. For parallel execution:
rb regression --dispatch local-parallel -j 4
rb regression --dispatch slurm
Dispatch implies shared builds. RTL Buddy expands each suite, creates one build job per unique compile key, then runs dependent simulation jobs and combines their normal results.
local-parallel uses subprocesses on the current host and needs no scheduler. It cannot enforce resources: reservations or collect usage telemetry.
Slurm dispatch requires a Linux submit host, Slurm client commands, and a filesystem shared with compute nodes. See Parallel Dispatch for cluster configuration, resources, failure recovery, and job accounting.