- Updated to utilize a new dependency locking mechanism and improved repository management. - Introduced for running regression tests with configurable command sets for different profiles. - Added to execute commands with structured logging and result reporting. - Enhanced to support fetching specific revisions from git repositories. - Modified to use the new dependency source structure. - Updated OpenSTA makefile and TCL script to include metrics reporting. - Improved synthesis scripts to utilize the new flow execution model. - Added tests for dependency locking, flow execution, and warning analysis. - Ensured that all scripts and tools are consistent with the new structure and functionality.
retroSoC
Build Automation
The build uses committed configuration profiles and a single dependency lock. Start with the verified HAZARD3 profile:
python3 -m pip install --requirement requirements/build.txt
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk setup
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk SIMU=IVERILOG doctor
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk firmware
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk SIMU=IVERILOG RTL_SIM_TIMEOUT=5200000 sim-asm
Other open-source flows use the same profile:
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk SIMU=VERILATOR sim
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk SYNTH=YOSYS synth
make CONFIG=configs/ci/hazard3-rv32im-ihp130.mk STA=OPENSTA sta
make help lists targets, while make config prints the effective configuration and its variant
identifier. Outputs live below build/<profile>-<config-hash>/; firmware, simulator, synthesis,
STA, reports, and manifests are isolated inside that directory. make clean removes the selected
backend, make clean-all removes all build outputs, and make purge-cache explicitly removes
download and compiler caches.
Dependency sources and binary tool archives are pinned in
config/dependencies.lock.json. Downloads are checksum verified,
and every flow writes a machine-readable manifest and result records. See
docs/engineering.md for CI coverage, warning baselines, metrics promotion,
release packaging, and cluster-only flows.