本简要介绍Icarus Verilog和GTKwave的使用,使用iverilog(Icarus Verilog)编译仿真verilog而使用GTKWave查看仿真数据波形
最近看一本书中有提到GTKwave这个软件,所以就去了解下,发现都是讲iverilog+GTKWave的使用,索性就再解了一下iverilog。这两个软件都是开源软件,而且两个软件安装包总共不足10MB,而且基本的verilog仿真都支持,普通FPGA设计的仿真完全够用。
由于其他文章都只是很简单的介绍了hello world的一个简单的例子,没有对使用各FPGA公司库的使用做介绍,所以才有本文的产生。本文从安装开始介绍;然后基本使用,最终给出包含Xilinx或Lattice IP的verilog设计的仿真方法;最后给出一些注意事项和使用技巧
本文测试文件在windows10和windows7上测试通过,其它平台请参考官方文档
下载安装
由于Icarus Verilog中已经包含了GTKWave所以直接从http://bleyer.org/icarus/下载安装,这里提供的为Windows版,我下载的为当前时间最新版:iverilog-10.1.1-x64_setup.exe,整个安装包才9.77MB,安装后也只有不到50MB。经测试,其实安装后只要把安装所在目录打包复制到其它电脑也可以用,即下载的这个安装类似一个自解压文件,但会增加两个路径到PATH。所以将安装目录打包复制到其它电脑后只要将以下两个目录(iverilog和gtkwave可执行文件所在目录)加入系统PATH环境变量中即可(这里假设放入其它电脑的目录为E:\iverilog):
E:\iverilog\bin
E:\iverilog\gtkwave\bin
或者在运行批处理文件前加入如下代码即可(即使用前将这两个路径临时加入PATH):
set iverilog_path=d:\iverilog\bin;
set gtkwave_path=d:\iverilog\gtkwave\bin;
set path=%iverilog_path%%gtkwave_path%%path%
下面给出可能会用到的网址:
- iverilog 官网:http://iverilog.icarus.com/
- iverilog windows版本:http://bleyer.org/icarus/
- iverilog User Guide:http://iverilog.wikia.com/wiki/User_Guide
- iverilog GitHub:https://github.com/steveicarus/iverilog
- GTKWave 官网:http://gtkwave.sourceforge.net/
- GTKWave 手册:http://gtkwave.sourceforge.net/gtkwave.pdf
基本使用
这里给出一个简单的hello world例程,先对使用方法有一个大概的了解
iverilog使用
仿真当然首先要提供verilog源代码,这里简单的实现了一个打印”hello world!”的例子,由于涉及到GTKWave的使用所以加入了clk和rst_n两个信号,以便介绍GTKWave的使用
/*****
** 文件名称:hello_world_tb.v
** 创 建 人:hsp
** 创建日期:2017-03-05
** 功能描述:一个iverilog和GTKWave使用方式介绍的hello world例子
*****/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module hello_world_tb;
parameter PERI = 10;
reg clk;
reg rst_n;
always #(PERI/2) clk = ~clk;
initial
begin
$dumpfile("hello_world_tb.vcd");
$dumpvars(0,hello_world_tb);
$display("hello world!");
clk = 0;
rst_n = 0;
repeat(10) @(posedge clk);
rst_n = 1;
repeat(100) @(posedge clk);
$finish;
end
endmodule
以上verilog:
- 首先定义了一个参数<