====== Icarus Verilog and GTKWave on a Mac ======
===== Installation: =====
The easiest way to install all the software is to use a package manager. I use MacPorts which makes it very easy to install all the dependent packages. Typically MacPorts is installed in a separate directory than the Mac OS directories. I followed the MacPorts suggested /opt approach where (almost) all the MacPort installed packages are in /opt.
- Install MacPorts (if not already done). Also you may want to do a
* sudo port -d selfupdate
- Install Icarus Verilog which is the verilog simulator.
* sudo port install iverilog
- Install GTKWave if you want to view waveforms (this is a must for debug).
* sudo port install gtkwave
===== Create a Simple Example ======
For a quick and dirty example type or copy paste this code into a text file named hello.v.
// FILE: hello.v
// This is a hello world example (comments are like C++)
module HELLO;
reg R;
initial
begin
$dumpfile("hello.vcd");
$dumpvars(0,HELLO);
end
initial
begin
$display("Hello");
#4 R = 1'b0; // Set to a logic 0
#1 R = 1'b1; // Set to a logic 1
#3 R = 1'bx; // Set to an unknown state
#1 R = 1'b0; // Set to a logic 0
#1 R = 1'bz; // Set to a tristate
#5
// Exit out
end
endmodule
To compile this code its very simple using icarus:
iverilog -o hello hello.v
Icarus takes the verlog code then generates C code and then compiles the code into an executable. To view the waveforms you will need to run the code by typing:
./hello
I got the following results:
mike$ ./hello
VCD info: dumpfile hello.vcd opened for output.
Hello!!!
Next, simply run gtkwave by typing in:
gtkwave hello.vcd
GTKWave is very easy to use. In the top left window you should see your instance HELLO. If you select that then a signal will appear it the lower left window pane. Select R and then click on Insert (or Append) to view the waveform.