base64 能放数组里面么_使用VCS观察Verilog二维数组仿真值的方法

556d707b37e0c6298f82fb637c1d68f3.png

手把手用Verilog实现FIR滤波器,非IP核 一文指出了如何使用Verilog实现FIR的实现方法;虽然功能实现了,但是却很浪费资源,这里可以使用Shift RAM代替里面使用的data_tmp数组,减少FF的使用资源,具体实现细节可以等后续。

b187df3fb598ced037df5f76a3e87bcf.png

今天谈论的是,在不可避免使用形如reg signed [DATA_BITS-1:0] data_tmp [FIR_ORDER:0] 这样的二维数组变量时,我们如何在仿真时能够看到二维数组内部的仿真值。

本文涉及VCS,Verdi的使用方法,如果没有基础可以看FPGA仿真工具VCS安装中出现的问题及解决方案文字版 以及

知乎视频​www.zhihu.com

FIR设计过程中,不可避免使用到reg/wire的二维数组;在仿真的过程中,这些二维数组却带来不少麻烦,因为根据之前FPGA仿真工具VCS安装中出现的问题及解决方案文字版 的内容,我们根本看不到这些二维数组的值。而且,Verilog的端口定义是不支持二维数组这样的定义,所以也无法把数组传到顶层观察。而实现过程中,这些二维数组却是流水线操作中的一部分,如果不知道它们的值,找BUG的过程肯定会十分艰难。

好在搜集各方资料后,经过一番实践,总算是得出了如何观察这些二维数组的值的方法。

首先,在testbench里面修改一下:

原来的版本:

initial begin
    $fsdbDumpfile("tb.fsdb");
    $fsdbDumpvars;
end

第一个语句是产生一个fsdb文件,文件名为tb.fsdb,第二句是保存所有变量的波形。这里是为了产生fsdb文件,这样Verdi才能看到根据fsdb文件显示波形

修改后的版本:

initial begin
    $fsdbDumpfile("tb.fsdb");
    $fsdbDumpvars;
    $fsdbDumpMDA();
end

第三行加了$fsdbDumpMDA(),这样就可以Dump所有的Memeory值,不管什么信号都可以保存到Memory。

VCS编译命令使用参数如下:

vcs  
*.v -LDFLAGS -Wl,--no-as-needed -timescale=1ns/1ps 
-fsdb  -full64  -R  +vc  +v2k -sverilog  -debug_all

仿真结束后,想使用Verdi查看二维数组的值,启动Verdi。

命令行如下:

verdi  -nologo 
+v2k  -sverilog  *.v -ssf tb.fsdb  &

可以在Verdi添加信号时看到二维数组,如下图:

4db4eb3b1f3f269425e0240d8cd7b0f8.png
Verdi查看可以看到二维数组

添加之后:

ecc48f642fb5dd722b89ba0f94680aea.png

可以从图中看到,很不直观,不能直接看出有什么问题。

换个思路,按照下图操作,选择Memory里的Memory/MDA工具

2c7f73ae84e1f2f22bc7aa955e7e9d60.png
按照序号操作

按照图中1,2的顺序,然后按照下图选择想查看的信号

5f98786f63429c3c0e5b15952b1be5e8.png
点击后选择想观察的信号

12578a152fda04b7c38f27fce5173992.png
显示信号结果

这里需要说明,查看二维数组内部存储的值,可以使用框1里面的键,左右可以控制仿真时间,信号的值会跟随仿真时间改变而改变。框1的时间跨度可以更改。

默认显示的信号都是十六进制,如果想改变进制显示,在2的位置右键可以改变进制显示,并选择有符号或无符号显示。

地址数据也是十六进制显示,可以在3的位置右键改变为十进制显示。

有了这些工具的帮助,便可以从出错的结果一步步往上查,追查BUG的效率提高不少。

总结,操作顺序:

  1. Testbench加入$fsdbDumpMDA();
  2. 使用Verdi的Memory/MDA工具查看

欢迎点赞留言,一起探讨这令人头秃的电​子

欢迎大家关注Bug记录专栏,用微信扫描下方二维码关注微信公众号"BugRec",回复105获取VCS,Verdi安装包文件

e0e4a42f616ebbc529503faaad650441.png

万物皆可卷积:(探讨滤波器)2. 手把手用Verilog实现FIR滤波器,非IP核​zhuanlan.zhihu.com
558351c069990dbf485bb057bdfa4216.png
(探讨滤波器)1. 从单片机,计算机实现数字滤波器学习滤波器结构​mp.weixin.qq.com
f2f7e2167980a90fed0f11d451f2a1ac.png
万物皆可卷积:【视频】30秒演示物联网云平台控制小灯​zhuanlan.zhihu.com
a6717630856427d3dd9f61cdc66e74b9.png
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值