JanusHDL
Preview

HDL simulation, exact and fast.

JanusHDL is an HDL simulator written from scratch from the IEEE standards. It runs VHDL-1993 to VHDL-2019 designs and their testbenches, with PSL, compiles them to native code, and shows every signal in its own waveform viewer. Verilog and SystemVerilog come next. Free, for Windows and Linux, on x86-64 and ARM, Raspberry Pi included.

A window to work in

Run a testbench, watch its output and its waves as they happen, pause, run on, restart. Records, arrays, enumerations, fixed and floating point: every signal shows as VHDL writes it.

The JanusHDL window: the UVVM UART demo with its design hierarchy, signals, waves and the testbench's log in the terminal
The UVVM UART demo running in JanusHDL 0.6: the hierarchy and its signals on the left, the waves of a saved wave setup growing as the testbench runs, and UVVM's log below. Six themes, dark and light.

Built from the standards up

Written rule by rule from the IEEE standards, not from anyone's habits, and tested against them.

19

VHDL-1993 to 2019

Every version of the language, including the VHDL-2019 additions, and PSL assertions in VHDL or in comments.

⚡

Native code

Testbench code compiled to machine code as it runs, with the interpreter as the exact reference behind it.

∿

Waveforms built in

A waveform viewer that opens recordings while they are still being written, and shows records, arrays and every radix from binary to floating point.

✎

Language server

Errors, navigation and completion in your editor, from the same analyzer that simulates.

⇄

Your scripts keep working

Command-line front ends for the commands your flow already calls: your scripts run as they are.

▦

Verification libraries

UVVM, OSVVM and VUnit testbenches run as they are, from their own sources.

Correct first. Then fast.

A simulator is only useful if you can trust what it tells you. So correctness comes first, and is measured, on every change.

✓

Tested on real testbenches

Every change to the simulator runs them: 6,867 Open Logic tests, 1,338 of VUnit's own, OSVVM's 314, UVVM's 123 and its demos, all passing; and 3,652 of the 3,657 cases of the VHDL-93 conformance suite.

⚖

Errors that cite the standard

Code the standard forbids is reported with its clause and how to fix it. Old code that relies on it still runs, one switch away (--compat).

≡

Native code, same answers

The compiled code is checked against the interpreter on every change: the same values, the same messages, the same failures.

⚙

Deterministic

The same design gives the same result on every run and every machine. Races between processes show up instead of hiding (--order-seed).

⚡

Fast by design

Testbench code is compiled to machine code while it runs, on by default. Built for long UVVM and OSVVM regressions as much as for small RTL tests.

∞

Huge runs, ordinary computers

A 5 GB recording of 1.8 billion value changes opens in under 4 seconds and stays under 1 GB of memory: the viewer reads only what the screen shows, so the waveforms of a long run open on an ordinary laptop.

□

Free of charge

For anyone and any use, commercial work included. No licence server, no account, no install: unzip and run, offline if you like.

Why try it today

Three commands to a result

Unzip, add bin to your path, run.

jhdl counter.vhd counter_tb.vhd --top counter_tb
jhdl -f project.f --top mylib.tb --stop-time 10us --wave run.jhw
jhdlw run.jhw

Find your way