Icarus Verilog
Register
Advertisement

Introduction[]

NOTE: These instructions are out-of-date. Starting with the v10 release of Icarus Verilog, the preferred (and supported) method of building a standalone Windows binary is to use the Mingw-w64 toolchain, as described here.

Icarus Verilog source can be compiled with the MinGW C/C++ compilers to get a standalone Windows binary. This is the preferred Windows distribution form. The configure scripts automatically detect that the compilers in use are the MinGW compilers and will configure the Makefiles appropriately.

The base MinGW package doesn't contain tools beyond the compiler, but there is the MSYS package that the makers of MinGW publish that has enough extra tools to get most everything else working. There are a few extra packages needed beyond MinGW and MSYS, and the following instructions explain how to get and install them as well.

NOTE: If you have Cygwin installed, it is best to not use a Cygwin window to do the build, as the Cygwin tools will intermix with the MinGW tools such that it is hard to be sure you are using the right compiler. Thus, it is recommended that these steps not be done in a Cygwin window. Use a MinGW window instead, and be careful that your MSYS/MinGW tools are not masked by paths that point to Cygwin binaries.

Installing MinGW and other Tools[]

The following instructions assume you have none of the necessary build tools installed. If you have already installed MinGW and/or Git on your machine, you can of course skip the appropriate steps.

NOTE: Some steps are optional, depending on whether or not you also wish to build Git. Building Git allows you to execute Git commands in a MinGW shell, and allows the Icarus Verilog tools to report more detailed version information when called with the -V option.

Incidentally, besides MinGW, none of the packages installed in the following steps are needed after installation of Icarus Verilog is complete. They are only needed to build the compiler. The MinGW package can be used to compile VPI modules if you choose.

Step 1 - Install MinGW and MSYS Base Packages[]

From the MinGW project, download and run the MinGW graphical installer (mingw-get-inst). Select the following components to be installed:

  • C Compiler
  • C++ Compiler
  • MSYS Basic System
  • MinGW Developer Toolkit

NOTE: If the download site is responding slowly, the installer may time out. If this happens it will skip the package it is currently trying to download and continue. If this happens, you can install the skipped packages later using the mingw-get command in a MinGW shell.

The default installation path is C:\MinGW, but you can change this to anything you like (but make sure there are no spaces in the path names). This path is referred to as <mingw> in subsequent instructions.

The installation will leave a "MinGW Shell" icon in the MinGW sub-menu of your Start menu. This icon brings up a shell window (a command line) that has paths all set up for executing MSYS and MinGW commands.

NOTE: If you intend to compile VPI modules for Icarus Verilog, you need MinGW, even if you are using a precompiled binary. VPI modules only require MinGW, and none of the other libraries.

Step 2 - Install Additional MinGW Packages[]

Start a MinGW shell. In the shell window, execute the following commands:

mingw-get install libz
mingw-get install bzip2
mingw-get install msys-man

Step 3 - Install GnuWin32 Packages[]

The GnuWin32 project is a collection of open source programs and libraries ported to Windows. These also work well with the MinGW compiler, and Icarus Verilog uses a few pieces from this collection.

From the GnuWin project, download the following packages:

  • gperf-3.0.1-bin
  • readline-5.0.1-bin

NOTE: You need the binaries and the developer files, but you do not need the source to these packages.

From the downloaded gperf-3.0.1-bin zip archive:

  1. drag and drop bin\gperf.exe to <mingw>\bin

From the downloaded readline-5.0.1-bin zip archive:

  1. drag and drop bin\* to <mingw>\bin
  2. drag and drop lib\* to <mingw>\lib
  3. drag and drop include\* to <mingw>\include

where <mingw> is the location you chose to install MinGW.

NOTE: readline is only required to enable command line editing when in the vvp interactive mode.

Step 4 - Install Git for Windows[]

NOTE: Skip this step if you only wish to build from snapshots.

From the msysgit project, download and install the Git for Windows binary package.

NOTE: When installing, you must select the option of "Checkout as-is, commit Unix-style line endings".

The installation will leave a "Git Shell" icon on the desktop and in the Git sub-menu of your Start menu. This icon brings up a shell window (a command line) that has paths all set up for executing Git commands.

Step 5 - Get the Git Source (optional)[]

NOTE: Skip this step if you don't want to build Git.

Start a Git shell. In the Git shell window, change directory to the location where you wish to store the source code and execute the following command:

git clone git://repo.or.cz/git/mingw.git git

This will create a directory "git" that contains all the source code for git.

The path to the directory containing the source code is referred to as <git-source> in subsequent instructions.

NOTE: Make sure there are no spaces in the <git-source> path names. Use forward slashes in place of back slashes when using <git-source> in a MinGW shell.

Step 6 - Build and Install Git (optional)[]

NOTE: Skip this step if you don't want to build Git.

In the MinGW shell window, execute the following commands:

cd <git-source>
make NO_OPENSSL=YesPlease NO_TCLTK=YesPlease NO_GETTEXT=YesPlease INSTALL=/bin/install prefix=/usr/local install

You can now uninstall the Git for Windows binary package if you wish, as Git commands can now be executed in the MinGW shell.

Building and Installing Icarus Verilog[]

Now we have the necessary build tools installed, we can build and install Icarus Verilog.

Step 1 - Get the Icarus Verilog Source[]

In the MinGW shell window, change directory to the location where you wish to store the source code, then either follow the instructions in Obtaining Snapshots or in Obtaining Source from git.

The path to the directory containing the source code is referred to as <ivl-source> in subsequent instructions.

NOTE: If you are obtaining source from git, and you haven't built Git, you will need to execute the above in the Git shell window.

Step 2 - Configure and Build Icarus Verilog[]

Now we are all set to configure and compile Icarus Verilog. Choose a destination path where you will want to install the binaries. This choice is not permanent, so don't have too much angst over it. Just choose a name without white space. The destination path is referred to as <ivl-install> in subsequent instructions.

NOTE: Make sure there are no spaces in the <ivl-install> path names. Use forward slashes in place of back slashes when using <ivl-install> in a MinGW shell.

In the MinGW shell window, execute the following commands:

cd <ivl-source>
./configure --prefix=<ivl-install>
make

NOTE: If you execute configure without the --prefix option, the default installation path is <mingw>\msys\1.0\local, which in a MinGW shell is aliased to /usr/local/bin.

Step 3 - Install Icarus Verilog[]

If the compile ran OK, then next you install Icarus Verilog in the directory you have chosen. In the MinGW shell window, execute the following commands:

cd <ivl-source>
make install

This is part of what the configure program did for you. The Makefiles know to put the files in the <ivl-install> directory.

You now need to add <ivl-install>\bin and <mingw>\bin to your Windows "PATH" environment variable. Alternatively, you can copy the DLLs needed by Icarus Verilog from <mingw>\bin to <ivl-install>\bin, and just add <ivl-install>\bin to your Windows "PATH" environment variable.

Currently, iverilog.exe uses the path to itself to locate the libraries and modules associated with itself. In other words, if you execute the <ivl-install>\bin\iverilog.exe program, it will locate its subparts in the <ivl-install> directory and subdirectories below that. This means you can move the Icarus Verilog installation by simply moving the root directory and all its contents.

NOTE: When moving the installation to a different location, the new installation path may contain spaces in the path names.

Advertisement