HBS - Hardware Build System

March 25, 2026 ยท View on GitHub

Tests

Logo 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 the hbs::Register procedure.
  • doc command for viewing cores documentation.
  • dump command 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 doc command to info.
  • Rename whereis command to where.
  • Rename dump-cores command to dump-json.
  • Rename list-cores command to ls-cores.
  • Rename list-targets command to ls-targets.
  • Rename list-tb command to ls-tb.
  • Rename ArgsPrefix to ArgPrefix.
  • Rename ArgsSuffix to ArgSuffix.
  • Rename CoreDir procedure to ThisCoreDir.
  • All the logic is now implemented in the single Tcl file, no Python required anymore.

Fixed

  • Enforcing tool via HBS_TOOL environment variable calls tool custom setTool procedure.
  • JSON dump path for gowin in dry run.

[1.1] - 2026-01-22

Added

  • dry-run command for dry run and previewing commands.
  • Questa simulator support.
  • HBS_DEBUG environment variable for debugging prints.
  • HBS_DEVICE environment variable for enforcing device.
  • HBS_EXIT_SEVERITY environment variable for enforcing exit severity.
  • HBS_BUILD_DIR environment variable for enforcing build directory.
  • HBS_TOOL environment variable for enforcing tool.
  • HBS_STD environment variable for enforcing HDL standard revision.
  • -onerror quit argument for xsim.
  • hbs::ExitSeverity variable for unifying exit condition in simulators.

Changed

  • Improved error messages.
  • Improved regex for errors and warnings.
  • vivado-prj: Part is set immediately as hbs::SetDevice is called.
  • vivado-prj: Bitstream file name changed from current project name to hbs::Top. This is required for write_hw_platform -include_bit command to work without any extra actions.
  • Rename TopCore and TopTarget to RunCore and RunTarget.
  • Rename targetDir to RunTargetBuildDir and make it public.

Fixed

  • Generics handling for xsim.
  • test command returns an error if any test fails.