This is the user guide: a collection of articles on how to use Icarus Verilog effectively. The two major parts cover working with Icarus Verilog and Icarus Verilog details. The first part contains articles that describe how and why things work, and the second part contains more advanced aspects of using Icarus Verilog. Although both sections are written in prose with examples, the second section is more detailed and presumes the basic understanding of the first part.
Working with Icarus Verilog
These are articles that describe in clear prose, with examples, the basics of using Icarus Verilog. Each article covers a significant aspect of using Icarus Verilog in the real world.
- Introduction to Verilog and Icarus Verilog
- Getting Started with Icarus Verilog
- Using Xilinx Tools
- Using VPI
- Using Loadable Target API
- Using the VHDL code generator
- Using the Verilog '95 code generator
- Using the PCB code generator
The links here contain more advanced information on select subjects. Read here for complete details on subjects that were introduced in the guides above.
- iverilog Command Flags/Arguments
- iverilog Supported Attributes
- vvp Command Flags/Arguments
- Command File Format
- Verilog Language Portability Notes
- Verilog References
- Release Notes for Icarus Verilog 11.0
- Release Notes for Icarus Verilog 10.0
- Release Notes for Icarus Verilog 0.9.7
These are some add-on products and 3rd party utilities that make working with Icarus Verilog a more complete user experience.
- GTKWave is a waveform/VCD dump viewer that is well supported by Icarus Verilog.
- Covered is a coverage analysis tool. It can be found here.
- Simbus supports distributed simulations of bussed systems.
- Cocotb uses VPI to embed the Python interpreter into the simulator and provides a Python library for accessing and assigning signal values, traversing the simulation heirarchy and writing regression tests. Documentation is available on cocotb.readthedocs.org