0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用VCS观察Verilog二维数组仿真值的方法

冬至子 来源:Bug记录 作者:woodfan 2023-06-06 11:12 次阅读

FIR设计过程中,不可避免使用到reg/wire的二维数组;在仿真的过程中,这些二维数组却带来不少麻烦,因为根据之前的内容,我们根本看不到这些二维数组的值。

而且,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添加信号时看到二维数组,如下图:

图片

Verdi查看可以看到二维数组

添加之后:

图片

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

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

图片

按照序号操作

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

图片

点击后选择想观察的信号

图片

显示信号结果

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

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

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

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

总结,操作顺序:

  1. Testbench加入$fsdbDumpMDA();
  2. 使用Verdi的Memory/MDA工具查看
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FIR
    FIR
    +关注

    关注

    4

    文章

    146

    浏览量

    33198
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110135
  • VCS
    VCS
    +关注

    关注

    0

    文章

    79

    浏览量

    9624
  • MDA
    MDA
    +关注

    关注

    0

    文章

    13

    浏览量

    12240
收藏 人收藏

    评论

    相关推荐

    二维数组各列循环更新程序

    程序实现了把生成的一数组更新二维数组各列功能。基本实现了LabVIEW二维数组插入的功能要求。
    发表于 10-13 13:20

    请问Verilog怎么实现二维数组输出?

    各位大哥,求教一下,Verilog如何实现二维数组输出。看过网上的例程,一般都是拆成一数组输出的,但是如果
    发表于 05-23 22:23

    Labview之自动索引功能(二维数组--一数组

    Labview之自动索引功能(二维数组--一数组),很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:56 0次下载

    Labview之簇数组二维数组显示

    Labview之簇数组二维数组显示,很好的Labview资料,快来下载学习吧。
    发表于 04-19 11:28 0次下载

    c语言二维数组定义及其规则详解

    数组只有一个下标,,称为一数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或
    发表于 11-16 08:49 2.2w次阅读
    c语言<b class='flag-5'>二维</b><b class='flag-5'>数组</b>定义及其规则详解

    c语言二维数组初始化及使用

    二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。 数组是一种构造类型的数据。
    发表于 11-16 09:15 2w次阅读
    c语言<b class='flag-5'>二维</b><b class='flag-5'>数组</b>初始化及使用

    二维数组重新排序

    labview进行二维数组的重新排序
    发表于 12-12 15:15 9次下载

    C语言程序设计教程之二维数组如何应用二维数组的资料概述

    本文档的主要内容详细介绍的是C语言程序设计教程之二维数组如何应用二维数组的资料概述主要内容包括了:1 了解二维
    发表于 10-26 16:48 3次下载

    Verilog中的二维数组说明

    Verilog中提供了两数组来帮助我们建立内存的行为模型。具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可
    的头像 发表于 09-28 11:35 3.1w次阅读

    二维数组数组指针以及指针数组

    二维数组数组指针以及指针数组
    的头像 发表于 08-16 09:02 2682次阅读

    Python将二维数组输出为图片

    使用Python读取二维数组,将二维数组输出为图片,并保存在本地。
    的头像 发表于 01-11 16:18 1418次阅读
    Python将<b class='flag-5'>二维</b><b class='flag-5'>数组</b>输出为图片

    C语言—二维数组介绍

    定义一个两行三列的二维数组,总共有6个元素
    的头像 发表于 09-11 14:51 916次阅读
    C语言—<b class='flag-5'>二维</b><b class='flag-5'>数组</b>介绍

    python怎么创建二维数组

    如何创建二维数组在Python中是一个常见的问题。在Python中,我们可以使用嵌套的列表(list of lists)或者使用NumPy库来创建二维数组。在本文中,我们将详细介绍这两
    的头像 发表于 11-21 15:10 3763次阅读

    python如何定义二维数组

    在Python中,可以通过使用列表嵌套的方式来定义二维数组。具体步骤如下: Step 1: 创建一个空的二维列表 要创建一个空的二维数组
    的头像 发表于 11-21 15:12 1790次阅读

    将一数组转为二维python

    将一数组转为二维数组是一个常见的问题,特别是在处理数据时。一数组是由一个连续的数据块组成,而
    的头像 发表于 11-23 14:54 5477次阅读