JanusHDL

Installing

Last updated: 2026-10-28

JanusHDL needs no installer, no administrator rights and no license server. You unpack the download into a folder of your choice and, if you like, put its bin folder on your PATH. To remove it, you delete the folder.

Windows

JanusHDL runs on 64-bit Windows 10 and 11.

  1. Download the zip file for Windows x86-64 from the download page.
  2. Unpack it anywhere, for example to C:\Tools. You get a folder named after the version and platform, such as C:\Tools\janushdl-VERSION-windows-x86_64.
  3. Add its bin folder to your PATH (see Putting JanusHDL on the PATH), or run the programs from that folder.
  4. Open a new terminal and check that it works:

powershell jhdl --version

It prints jhdl and the version number.

Start the window from a terminal with jhdlw, or make a shortcut to bin\jhdlw.exe on your desktop or in the Start menu. jhdlw.exe is a window program: it opens no console window of its own.

To open waveform databases (.jhw) and project files (.jhdlproj) with a double click, associate those file types with bin\jhdlw.exe: right-click such a file in Explorer, choose Open with → Choose another app, browse to jhdlw.exe and tick Always use this app.

Linux

JanusHDL runs on 64-bit Linux on x86-64 and on 64-bit ARM, with glibc 2.28 or later: for example RHEL 8 and 9, Ubuntu 20.04 and later, and Debian 10 and later. The ARM build is tested on a Raspberry Pi 5 with Raspberry Pi OS (64-bit).

  1. Download the tar.gz file for your processor: linux-x86_64 for 64-bit x86 (PC) processors, linux-aarch64 for 64-bit ARM.
  2. Unpack it, for example into ~/tools:

bash mkdir -p ~/tools tar -xzf janushdl-VERSION-linux-x86_64.tar.gz -C ~/tools

  1. Add its bin folder to your PATH, in ~/.bashrc for example:

bash export PATH=~/tools/janushdl-VERSION-linux-x86_64/bin:$PATH

  1. Open a new shell and check:

bash jhdl --version

The command line, jhdl, needs nothing else. The window, jhdlw, needs a desktop session (X11 or Wayland) and draws with the graphics card through Vulkan or OpenGL. Without a usable graphics driver, in a virtual machine or a remote session for example, it draws in software instead (see The window does not start).

On a minimal system the window may need a system library or two that is not installed, such as libxkbcommon-x11. If one is missing, jhdlw says which, and how to install it, and stops:

jhdlw: the window needs the system library libxkbcommon-x11.so, which is not installed.
Install it and start jhdlw again:
  Debian, Ubuntu:  sudo apt install libxkbcommon-x11-0
  RHEL, Fedora:    sudo dnf install libxkbcommon-x11
(The command line, jhdl, does not need it.)

On the Raspberry Pi the window uses the Pi's own graphics, and native code (see Native code) works on ARM as on x86-64.

Putting JanusHDL on the PATH

With bin on your PATH, you can run jhdl, jhdlw and jhdl-lsp from any folder, and editors find the language server.

Windows, for your user only (PowerShell; open a new terminal afterwards):

$bin = "C:\Tools\janushdl-VERSION-windows-x86_64\bin"
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";$bin", "User")

Or use Settings → System → About → Advanced system settings → Environment Variables, select Path under your user variables, choose Edit and add the bin folder.

Linux: add the export PATH=... line shown above to ~/.bashrc (or your shell's start-up file).

To run existing simulation scripts unchanged, you put one of the folders under compat on your PATH instead of bin, or before it; each of those folders has its own jhdl too. Running existing scripts explains which folder to choose.

What is in the folder

janushdl-VERSION-PLATFORM/
├── bin/                        the programs
│   ├── jhdl                    the command line (jhdl.exe on Windows)
│   ├── jhdlw                   the window
│   └── jhdl-lsp                the language server, started by editors
├── compat/                     front ends for existing scripts, one folder
│                               per family of commands (chapter 13)
├── vhdl/                       the sources of the built-in VHDL libraries, to read
│   ├── std/                    STD: standard, textio, env, reflection
│   ├── ieee/                   IEEE's packages, from IEEE 1076-2019
│   ├── ieee93/                 std_logic_1164, numeric_std and numeric_bit
│   │                           for VHDL-1993 and VHDL-2002 designs
│   ├── legacy/                 the legacy arithmetic packages
│   ├── README.txt
│   ├── LICENSE-ieee.txt
│   └── AUTHORS-ieee.md
├── README.txt
├── LICENSE.txt                 the terms of JanusHDL
└── THIRD_PARTY_LICENSES.txt    the licenses of the components JanusHDL contains

The VHDL sources folder

The vhdl folder holds the source of every built-in library, byte for byte as the programs use it. It is there to read: to look up a function's exact declaration, or to see the line a message points to. Messages that come from a built-in package cite these paths, for example ieee/numeric_std-body.vhdl:120; in the window, clicking such a location opens the file read-only.

Editing these files changes nothing: the programs carry their own copies. If the folder is lost, jhdl --write-libraries DIR writes the same files into DIR.

Libraries describes what each package is for.

Where JanusHDL keeps your settings

The window keeps its settings between sessions: the theme, the window's size and place, the layout of the tabs, the recent files and runs, and the editor's settings. They are in one file:

System File
Windows %APPDATA%\JanusHDL\data\app.ron
Linux ~/.local/share/janushdl/app.ron

A project keeps its own layout and view beside the project file, in a folder named .jhdl (see Projects).

While the window runs a simulation, it records the waveform into a file in your temporary folder, under janushdl. The window removes its own files when it exits, and files left behind by a window that did not exit normally are removed after a day.

Updating and removing

To update, unpack the new version next to the old one and change your PATH to the new bin folder. Versions do not share anything but the settings file above, so you can keep an older version for a while and go back to it.

Files your designs write keep working across versions, with one exception: typed files (file of T, other than text files and files of character) written by versions before the current file layout are not read; write them again (Files the design reads and writes). Analysis caches (--cache) are simply made again by a new version.

To remove JanusHDL, delete its folder, take it off your PATH, and delete the settings file if you want to.