windows上使用iverilog+gtkwave仿真,

本文介绍了使用Iverilog和Gtkwave进行Verilog代码仿真的步骤。包括如何生成VCD文件并解决仿真过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

gtk

是因为没有在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;

这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值