283 lines
11 KiB
Plaintext
283 lines
11 KiB
Plaintext
Please NOTE:
|
|
|
|
These directions are slightly outdated and need to be updated.
|
|
The plan is to rewrite all this using the latest MinGW at
|
|
some time in the not too distant future (CR Aug. 2009)
|
|
|
|
|
|
MINGW PORT OF ICARUS VERILOG
|
|
|
|
Copyright 2006 Stephen Williams <steve@icarus.com>
|
|
|
|
|
|
Icarus Verilog source can be compiled with the mingw C/C++ compilers
|
|
to get a Windows binary that does not require the POSIX compatibility
|
|
cruft of the Cygwin.dll library. The resulting program can be run with
|
|
or without Cygwin, so 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 mingw patch 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 them and install them.
|
|
|
|
* Some Preliminary Comments -- PLEASE READ ME --
|
|
|
|
The Windows port of Icarus Verilog is the most difficult of all the
|
|
ports. The Windows system off the shelf is completely stripped, devoid
|
|
of any support for software development. Everything needed to compile
|
|
Icarus Verilog must be collected from various sources and stitched
|
|
together by hand. Normal human beings with a basic understanding of
|
|
software development can do this, but some patience (and access to the
|
|
Internet) is required. You may choose to print these instructions. FOR
|
|
BEST RESULTS, FOLLOW THESE INSTRUCTIONS CAREFULLY.
|
|
|
|
NOTE that 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 be *not* done in a
|
|
Cygwin window. Use an MSYS window instead, and be careful that your
|
|
msys/mingw tools are not masked by paths that point to Cygwin binaries.
|
|
|
|
I have no plans to intentionally support MSVC++ compilation. Don't ask.
|
|
|
|
* Summary of Prerequisites
|
|
|
|
This is a brief list of prerequisite packages, along with the URL
|
|
where each can be found. In most cases, the specific version is not
|
|
critical, but these are the versions I use.
|
|
|
|
msys-1.0 <http://www.mingw/org>
|
|
msysDTK-1.0 <http://www.mingw.org>
|
|
Mingw32-5.x <http://www.mingw.org>
|
|
... including the sub-packages binutils, gcc-core and gcc-g++
|
|
if you are given the option.
|
|
readline-5.0-1 <http://gnuwin32.sourceforge.net>
|
|
bzip2-1.0.3 <http://gnuwin32.sourceforge.net>
|
|
zlib-1.2.3 <http://gnuwin32.sourceforge.net>
|
|
gperf-3.0.1 <http://gnuwin32.sourceforge.net>
|
|
bison-2.1 <http://gnuwin32.sourceforge.net>
|
|
flex-2.5.4a <http://gnuwin32.sourceforge.net>
|
|
|
|
The above table lists the packages required. It is convenient to
|
|
install them in the above order. Many of these packages are also
|
|
collected into the directory:
|
|
|
|
<ftp://icarus.com/pub/eda/verilog/win32-build-parts>
|
|
|
|
Incidentally, besides Mingw32, none of these packages are needed after
|
|
installation of Icarus Verilog is complete. These are only needed to
|
|
build the compiler. The Mingw32 package can be used to compile VPI
|
|
modules if you choose.
|
|
|
|
* Install MSYS and msysDTK
|
|
|
|
The msys package is available from the mingw download site. This is
|
|
not the compiler but a collection of *nix tools ported to Windows and
|
|
wrapped in a convenient installer. The msys package is all the various
|
|
basic tools (shells, file utils, etc) and the msysDTK is extra
|
|
developer tools other than the compiler.
|
|
|
|
Download the msys-1.x.x.exe and msysdtc-1.x.x.exe binaries. These are
|
|
self-installing packages. Install msys first, and then msysDTC. Most
|
|
likely, you want to install them in c:/msys. (The msysDTK is installed
|
|
in the same location, as it is an add-on.)
|
|
|
|
This install should be easy and reliable.
|
|
|
|
The installation will leave an "msys" icon on your desktop and 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. This is what you will want to use while executing
|
|
commands below.
|
|
|
|
* Install Mingw32
|
|
|
|
The obvious step 2, then, is install the mingw compilers. These can be
|
|
found at the web page <http://www.mingw.org>. The Mingw-5.x.x package
|
|
is a convenient remote installer. Download this program and run
|
|
it. The installer will ask which components you want to install. You
|
|
need only the base C compiler and the C++ compiler. (You may install
|
|
other languages if you wish.)
|
|
|
|
When I install Mingw32 (using the installer) I typically set a
|
|
destination directory of d:\mingw or the like. You will be using
|
|
that path later.
|
|
|
|
NOTES:
|
|
If you intend to compile VPI modules for Icarus Verilog, you
|
|
need Mingw32, even if you are using a precompiled binary. VPI
|
|
modules only require Mingw32, and none of the other libraries.
|
|
|
|
Finally, as part of installing the mingw32 compilers, remember to add
|
|
the mingw/bin directory to your path. You will need that to be able to
|
|
find the compilers later.
|
|
|
|
* Install GnuWin32 Packages
|
|
|
|
The GnuWin32 project is a collections of open source programs and
|
|
libraries ported to Windows. These also work well with the Mingw
|
|
compiler, and in fact Icarus Verilog uses a few pieces from this
|
|
collection.
|
|
|
|
You will need these gnuwin32 packages to compile Icarus Verilog:
|
|
|
|
<http://gnuwin32.sourceforge.net>
|
|
bzip2-1.0.3.exe
|
|
zlib-1.2.3.exe
|
|
gperf-3.0.1.exe
|
|
bison-2.1.exe
|
|
flex-2.5.4a.exe
|
|
readline-5.0-1.exe
|
|
|
|
I suggest creating a common directory for holding all your gnuwin32
|
|
packages. I use C:\gnuwin32. The download page at the gnuwin32 site
|
|
has a "setup" link for each of these packages. Click the setup to
|
|
download the installer for each of the desired programs, then execute
|
|
the downloaded .exe files to invoke the installer. Install into the
|
|
c:\gunwin32 directory.
|
|
|
|
NOTES:
|
|
You need the binaries and the developer files, but you do not
|
|
need the source to these packages. The installer gives you the
|
|
choice.
|
|
|
|
After you are done installing the gnuwin32 tools, you should add the
|
|
c:\gnuwin32\bin directory (assuming you installed in c:\gnuwin32) to
|
|
your Windows path. The msys shell will pick up your Windows path.
|
|
|
|
* Unpack Icarus Verilog source
|
|
|
|
Unpack the compressed tar file (.tar.gz) of the source with a command
|
|
like this:
|
|
|
|
$ gunzip -d verilog-xxxxxxxx.tar.gz | tar xvf -
|
|
|
|
This will create a directory "verilog-xxxxxxxx" that contains all the
|
|
source for Icarus Verilog. Descend into that directory, as that is
|
|
where we will work from now on.
|
|
|
|
$ cd verilog-xxxxxxxx
|
|
|
|
NOTES:
|
|
The exact name of the file will vary according to the
|
|
snapshot. The 20030303 name is only an example.
|
|
|
|
Unpack the source into a directory that has no spaces. The
|
|
makefiles included in the source get confused by white space in
|
|
directory names.
|
|
|
|
* Preconfigure Icarus Verilog (Not normally needed)
|
|
|
|
Under certain cases, you may need to "preconfigure" the Icarus Verilog
|
|
source tree. You should only need to do this if you are getting the
|
|
Icarus Verilog source tree from CVS, or you are using an existing
|
|
source tree that you've patched to cause configure.in files to change.
|
|
|
|
NOTE: If you are building from a fresh, bundled source tree that
|
|
you downloaded from an FTP site, then SKIP THIS STEP. Go on to
|
|
the "Configure Icarus Verilog" step below.
|
|
|
|
First, remove any autom4te.cache directories that may exist in your
|
|
source tree. These can make a mess of autoconf runs. Then, generate
|
|
configure scripts with this command:
|
|
|
|
$ sh autoconf.sh
|
|
|
|
This script will run the "autoconf" command (part of the msysDTK) to
|
|
generate all the necessary "configure" scripts. This will take a few
|
|
minutes. This should go smoothly.
|
|
|
|
* Configure 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. I chose
|
|
on my system the directory "D:\iverilog". This choice is not
|
|
permanent, so don't get too much angst over it. Just choose a name
|
|
without white space.
|
|
|
|
Now, configure the source to make the makefiles and configuration
|
|
details. Run these commands:
|
|
|
|
$ CPPFLAGS="-Ic:/gnuwin32/include
|
|
$ LDFLAGS="-Lc:/gnuwin32/lib
|
|
$ export CPPFLAGS LDFLAGS
|
|
$ ./configure --prefix=c:/iverilog
|
|
|
|
NOTES:
|
|
The CPPFLAGS and LDFLAGS variables tell configure where
|
|
the gnuwin32 packages are. The configure program will
|
|
write these values into the Makefiles, so you only need to
|
|
keep these variables long enough for the configure program
|
|
to work.
|
|
|
|
Your PATH variable was set in the previous step.
|
|
|
|
Use forward slashes as directory characters. All the various
|
|
tools prefer the forward slash.
|
|
|
|
Substitute your chosen directory for the prefix. This will cause the
|
|
makefiles to build and the source code to configure. The configure
|
|
program will detect that this is a mingw environment and set things up
|
|
to build properly.
|
|
|
|
(For a prefix, use the drive letter notation; the mingw compiled parts
|
|
require it, and the Cygwin tools should be able to handle it. You may
|
|
need to check or upgrade your Cygwin installation if this causes
|
|
problems for you.)
|
|
|
|
|
|
* Compile Icarus Verilog
|
|
|
|
This, believe it or not, should be the easy part:
|
|
|
|
$ make
|
|
|
|
It could take a while. Now is a good time to go get some coffee or
|
|
take a tea break.
|
|
|
|
|
|
* Install Icarus Verilog
|
|
|
|
If the compile ran OK, then next you install Icarus Verilog in the
|
|
directory you have chosen. When you are ready, install like this:
|
|
|
|
$ make install
|
|
|
|
This is part of what the configure program did for you. The Makefiles
|
|
now know to put the files under the D:\iverilog directory (or whatever
|
|
directory you chose) and away you go.
|
|
|
|
You may find that you need to put some of the prerequisite DLLs into
|
|
the d:\iverilog\bin directory. These include:
|
|
|
|
c:\mingw\bin\mingw10.dll
|
|
c:\gnuwin32\bin\readline.dll
|
|
c:\gnuwin32\bin\history.dll
|
|
c:\gnuwin32\bin\bzip2.dll
|
|
c:\gnuwin32\bin\zlib.dll
|
|
|
|
If you already have these in your Windows path (i.e. your system32
|
|
directory) then you do not need to copy them into the iverilog
|
|
directory. However, prepackaged Icarus Verilog binaries include these
|
|
files.
|
|
|
|
* Running Icarus Verilog
|
|
|
|
Finally, put the C:\iverilog\bin directory in your Windows path, and
|
|
you should be able to run the iverilog and vvp commands to your
|
|
heart's content.
|
|
|
|
Currently, the iverilog.exe uses the path to itself to locate the
|
|
libraries and modules associated with itself. In other words, if you
|
|
execute the C:\iverilog\bin\iverilog.exe program, it will locate its
|
|
subparts in the C:\iverilog directory and subdirectories below
|
|
that. This means you can move the Icarus Verilog installation by
|
|
simply moving the root directory and all its contents.
|
|
|
|
The vvp.pdf and iverilog.pdf files document the main commands. View
|
|
these with Acrobat reader, or any other viewer capable of displaying
|
|
PDF format files.
|