Classic simulator

Install Icarus Verilog for quick CLI simulation.

Icarus Verilog is a lightweight simulator that is easy to script and easy to pair with GTKWave. The official docs say that prepackaged binaries are the easiest path when they are available.

Best for: simple simulation loops Pair with: GTKWave Last verified: April 4, 2026
Linux quick path

Use your distro package

The official docs say prepackaged binaries are the easiest start. On Debian or Ubuntu systems, the package is commonly available directly.

sudo apt-get install iverilog

On other Linux distributions, install the packaged `iverilog` build from your system package manager.

macOS quick path

Homebrew is the simplest route

The official docs say Icarus is available through Homebrew. They also note that newer builds may need a newer GNU bison than the one bundled with Xcode.

brew install icarus-verilog
brew install bison echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
Windows quick path

Use MSYS2, not Cygwin

The official docs explicitly say MSYS2 is typically preferred over Cygwin because both GTKWave and Icarus Verilog are provided as precompiled packages there.

pacman -S mingw-w64-x86_64-iverilog

Open the matching MinGW64 shell before installing and running the tool.

Verify
iverilog -V

Success looks like version information printed in the terminal.

First useful command
iverilog -g2012 -o simv counter_tb.sv counter.sv vvp simv

This is a simple way to compile then run a small Verilog or SystemVerilog simulation.

Common pitfalls
  • On macOS, source builds may need newer bison than the Xcode default.
  • On Windows, use the MSYS2 shell where the package was installed.
  • Icarus and GTKWave are a natural pair, but they are separate installs.
Source build option

If you want the latest development head or a specific release tarball, the official installation guide also documents building from source on Unix-like systems and with MSYS2 or MinGW on Windows.

Copyright and license

This guide summarizes the official installation material and points back to the upstream project. It does not mirror the Icarus documentation or reuse long chunks of upstream text.