HBS - Hardware Build System
March 25, 2026 ยท View on GitHub
HBS - Hardware Build System
HBS is a Tcl-based, minimal common abstraction build system for hardware design projects.
Documentation
Please check the official HBS user manual.
Supported tools
- ghdl,
- gowin,
- modelsim - set tool to questa,
- nvc,
- quartus,
- questa,
- vivado-prj - Vivado project mode,
- xsim - Vivado simulator.
Changelog
[Unreleased]
[1.2] - 2026-03-25
Added
- Support for Quartus.
- Optional
doc(core documentation) parameter to thehbs::Registerprocedure. doccommand for viewing cores documentation.dumpcommand to dump cores in Tcl dictionary format.
Changed
- Hbs files are sourced as soon as they are found, not after scanning all subdirectories first.
- Vivado: Treat .tcl files as constraint files by default.
- Rename
doccommand toinfo. - Rename
whereiscommand towhere. - Rename
dump-corescommand todump-json. - Rename
list-corescommand tols-cores. - Rename
list-targetscommand tols-targets. - Rename
list-tbcommand tols-tb. - Rename
ArgsPrefixtoArgPrefix. - Rename
ArgsSuffixtoArgSuffix. - Rename
CoreDirprocedure toThisCoreDir. - All the logic is now implemented in the single Tcl file, no Python required anymore.
Fixed
- Enforcing tool via
HBS_TOOLenvironment variable calls tool customsetToolprocedure. - JSON dump path for gowin in dry run.
[1.1] - 2026-01-22
Added
dry-runcommand for dry run and previewing commands.- Questa simulator support.
HBS_DEBUGenvironment variable for debugging prints.HBS_DEVICEenvironment variable for enforcing device.HBS_EXIT_SEVERITYenvironment variable for enforcing exit severity.HBS_BUILD_DIRenvironment variable for enforcing build directory.HBS_TOOLenvironment variable for enforcing tool.HBS_STDenvironment variable for enforcing HDL standard revision.-onerror quitargument for xsim.hbs::ExitSeverityvariable for unifying exit condition in simulators.
Changed
- Improved error messages.
- Improved regex for errors and warnings.
vivado-prj: Part is set immediately ashbs::SetDeviceis called.vivado-prj: Bitstream file name changed from current project name tohbs::Top. This is required forwrite_hw_platform -include_bitcommand to work without any extra actions.- Rename
TopCoreandTopTargettoRunCoreandRunTarget. - Rename
targetDirtoRunTargetBuildDirand make it public.
Fixed
- Generics handling for xsim.
testcommand returns an error if any test fails.