linux下面进行硬件仿真,可以使用modelsim,但是modelsim不是开源软件,安装需要破解,很是麻烦,而iverilog是linux下的一款开源仿真软件,利用它再配合shell脚本可以方便的实现自动化仿真并查看波形。
本文档以 Ubuntu12.04 为例子,讲解 Linux 系统下使用 iverilog 和 gtkwave 进行 verilog 的仿真。
一:安装 iverilog 以及 gtkwave
$:sudo apt-get install iverilog
$:sudo apt-get install gtkwave
二:Verilog 版 Helloworld
$:vim helloworld.v
编辑如下内容:
module main;
initial begin
$display("Hello, World!");
$finish;
end
endmodule
三:利用 gtkwave 查看波形
下面以一个简单计数器为例:
$:vim counter.v
输入以下内容:
module counter(irst, iclk, ocnt );
input irst, iclk;
output reg [3:0] ocnt;
always @ (posedge iclk)
if(irst)
ocnt <= 4'b0000;
else
ocnt <= ocnt + 1'b1;
endmodule
$:vim counter_tb.v
输入以下内容:
module counter_tb;
reg irst = 0;
reg iclk = 0;
wire [3:0] ocnt;
initial begin
irst = 1; #100;
irst = 0; #300;
$stop;
#1000;
$finish;
end
always begin #5 iclk = !iclk; end
counter counter_test(
.irst(irst),
.iclk(iclk),
.ocnt(ocnt)
);
initial
$monitor("At time %t, ocnt = %d", $time, ocnt);
initial
begin
$dumpfile("counter_test.vcd");
$dumpvars(0, counter_test);
end
endmodule
$:iverilog -o counter_test counter_tb.v counter.v
$:vvp -n counter_test -lxt2
$:cp counter_test.vcd counter_test.lxt
$:gtkwave counter_test.lxt
OK!至此就会打开 gtkwave 界面,然后添加信号就可以查看波形啦!
总结:
iverilog用于功能仿真并记录仿真结果数据,gtkwave则可以用来查看iverilog产出的数据波形文件。linux的思想就是让很多软件各司其职,大家一起协同,可靠的完成复杂的任务。如果再将以上各种命令写道一个shell脚本文件中,通过shell运行,这样就完全自动化了。