Port of Icarus Verilog to Microsoft Visual Studio .Net 2003
The file below includes all additional sources necessary to build the
Icarus Verilog tools using the
MSVC 7.1. The port was done by me, Dmitri Varsanofiev ( icarus [AT]
varsanofiev.com ), to further my own nefarious goals ☺. The files of this port
that are written by me are in public domain to the maximum extent possible that
is compatible with the original Icarus code by Steven Williams (under GPL) and
other copyrights used.
Download the .ZIP file (35KB)
Installation Instructions, Fair Warnings, etc.
- Install a copy of
source distribution of the Icarus Verilog on your hard drive. This code
works with at least the 12/02/2003 and 1/18/2004 snapshots. Unpack it into
some directory, say, ICARUS.
- Install CYGWIN in the \cygwin
subdirectory on the same drive. Warning: if you use another directory, you
will have to change project files (this is one of the TODOs). Another warning:
we will use flex and bison from the package - by default these are not
installed (forewarned is forearmed).
- Create a subdirectory in ICARUS, say, MSVC.
- Copy the .ZIP file above into MSVC and unpack.
- Build the only solution in the MSVC directory. You will need the VS .Net
2003 to do it.
- Enjoy! The docs are on the original Icarus site.
If It Does Not Compile
- Blame me ☺
- Look for the list of inelegancies in the TODO.txt - some of these might
have caught up with me.
- Particular potential gotcha's:
- The MSVC project files were handcrafted; new source files might need to be
added - and obsolete files removed.
- The config.h file is handcrafted to translate the *nix calls into Window
ones to the best of my abilities. If a particular nonstandard "system"
function is not defined - find an MS equivalent (usually with underscore in
front) and map it into config.h.
- _pli_types.h file is handcrafted from the _pli_types.h.in source - if
the latter changes, you might need to redo the work.
- ivl_target.h contains a particularly dirty hack to get config.h included
- VERSION strings in these tools are coming in two varieties - VERSION
macro in the include and VERSION array. As the preferences change, you
might need to add NO_VERSION to the preprocessor defines of the files that
use the array method.
The solution currently consists of 8 projects. Note that I did not port all
the parts of the original Icarus.
- iverilog: top command line interface ("driver")
- ivlpp: verilog preprocessor
- ivl: verilog compiler
- tgt-vvp: compiler plug-in that generates code for the vvp interpreter
- vvp: verilog interpreter
- vpi: interpreter plug-in that supports standard verilog packages
- libivl: verilog library for use by other projects
- draw_tt: a simple code generation utility for use by other projects