windows上使用iverilog+gtkwave仿真,

数电,计算机组成原理要写verilog

由于我不需要编写一些大项目, 用vivado就是杀鸡用牛刀了, 不仅慢,还要配置很多地方. 于是我在网上搜索,可以使用iverlog+gtkwave命令行工具

写好各个模块后,开放仿真

$ iverilog -o reg *.v
$ vvp -n reg   -lxt2

程序正常输出了, 但是没有产生vcd仿真文件,
在官网上找到答案

windows上使用iverilog+gtkwave仿真,_第1张图片

是因为没有在testbench文件中使用命令 dumpfile, d u m p f i l e , dumpvars 所有加上

  6 initial begin
  7     $dumpfile("reg.vcd");
  8     $dumpvars(1,sim);
  9     end
 10

下面是dumpvars的介绍:

我们甚至可以在同一个$dumpvar的调用中,同时指定某些层次上的所有信号和某个单独的信号,假设模块top包含信号signal1,同时包含有子模块module1,如果我们不但希望记录signal1这个独立的信号,而且还希望记录子模块module1以下三层的所有信号,则语法举例如下:

initial
  $dumpvar (3, top.signal1, top.module1);  //指定层次数和单独指定的信号无关
                                           //所以层次数3只作用于模块top.module1, 而与信号
top.signal1无关 
上面这个例子和下面的语句是等效的:
initial
begin
  $dumpvar (0, top.signal1);
  $dumpvar (3, top.module1);
end
$dumpvar的特别用法(不带任何参数):
initial
  $dumpvar;        //无参数,表示设计中的所有信号都将被记录

再使用vvp -n reg -lxt2就能产生vcd文件了

继续

$ gtkwave  reg.vcd

报错

Could not initialize GTK! Is DISPLAY env var/xhost set?

查了很久,
原因是linux下命令行界面要连接一个窗口才能将图形显示出来, $DISPLAY就是这个环境变量, 按网上的说法设置为本机ip:0.0还是没能解决,

而且配置了DISPLAY环境变量而不连接, 其他时候使用, 打开看vim变得很慢, 所以果断去掉

我就只好在windows上下载图形化界面的gtkwave
同上 , 只需在命令行输入(先将gtkwzve的bin目录加入path) gtkwave reg.vcd

刚进入还没有波形, 需点击左侧上面窗口的sst ,然后选择tb文件, 然后再点左侧下面窗口的变量,全部显示即可
比如这是一个利用regfile, alu 求斐波那契的波形 c=a+b, a=b,b=c;

windows上使用iverilog+gtkwave仿真,_第2张图片

你可能感兴趣的:(verilog)