Skip to content

Starting HAL

Julian Speith edited this page Aug 27, 2025 · 14 revisions

Once built, HAL can be started either in GUI mode or as a pure command line tool. At the beginning, we recommend using the HAL GUI to get a better feeling for the tool. Using HAL as a command line application may become relevant for performance-critical applications, as the GUI may incur significant overhead. HAL provides a number of command line parameters to configure the startup options.

Starting HAL in GUI Mode

To start the HAL GUI, navigate to the executable (usually located in build/bin), type

./hal -g

into the command line, and press ENTER. Most other command line options will be ignored when starting the GUI, since their functionality is provided by the GUI instead. If the resolution of the HAL GUI appears to be off, try prepending QT_AUTO_SCREEN_SCALE_FACTOR=1 when invoking HAL in GUI mode. In that case, type

QT_AUTO_SCREEN_SCALE_FACTOR=1 ./hal -g

into the command line, and press ENTER.

You can now refer to "Using HAL" for an introduction to using HAL in GUI mode.

Starting HAL in Command Line Mode

Running HAL solely using its command line interfaces may be useful when executing dedicated plugins that analyze the netlist without requiring user interaction. This way, such plugins can easily be run on a server or cluster that does not provide a GUI. The most important command line options are listed below. Additional options may be provided by HAL plugins and will be listed when calling hal -h.

  • -h, --help displays information regarding the usage of HAL.
  • -v, --version displays the current version of HAL.
  • --licenses shows the licenses of open-source projects used within HAL.
  • -l, --logfile specify a name and path for the log file that is created by HAL.
  • -i, --import-netlist specify the netlist file that is then imported into a new project. This can be either a .hal file or of any netlist file format that is supported by the available netlist parsers.
  • -p, --project-dir provide the path to the project that should be loaded.
  • -gl, --gate-library specify the gate library that should be used to instantiate the netlist.
  • -e, --empty-project create an empty project using the specified gate library.
Clone this wiki locally