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

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

3天内不再提示

VCD内部解剖详述

冬至子 来源:芯光灿烂 作者:Tianya 2023-11-07 17:43 次阅读

VCD(ValueChange Dump) 是用ASCII记录了被选择信号仿真过程中的变化情况,同时还记录了一些测试向量生成时的仿真信息,例如仿真时间精度等.目前常用的VCD主要有两种格式:

四值格式:记录了信号的数值变化情况,这里的数值仅包含0,1,x,z,不包含相关信号强度的信息;

扩展格式:记录了信号数值变化的所有情况;

本文仅以四值格式VCD为例进行详述.

图片

1 VCD生成常用的系统任务

Verilog中尝试用以下的系统任务保存测试向量VCD.

1.1 $dumpfile

该任务主要用来指定要生成的VCD文件名.

【示例】

图片

1.2 $dumpvars

该任务主要用来指定将那些变量的信息保存到$dumpfile指定的VCD文件中,其格式主要有两种:一种是有参数的,一种是没有参数的.

无参数:

该任务执行后将会将所有的变量变化情况都记录到VCD文件中.

有参数:

该任务的第一个参数用来指定从当前层开始向下记录多少层的模块的信号变化情况,第二个参数指定记录信号开始的模块(例化名).当第一个参数设置为0时将会将指定的层以下的所有层次的信号变化情况都记录下来,这里需要注意,此时的参数0-只是对后续模块参数有效,对于变量参数不影响.

【示例】仅记录top层下的所有信号的变化情况,但是不记录例化在top层下的所有信号的变化情况.

图片

【示例】记录从top层开始的所有模块中信号的变化情况.

图片

【示例】记录特定模块以下所有层信号变化情况和其他模块变量的变化情况

图片

记录了top.mod1及其所有层次的信号的变化情况,同时也记录了top.mod2.net1的变化情况,但是这里需要注意的是,第一个参数的作用对象为模块mod1,不是mod2.net1.

1.3 dumpoff和dumpon

dumpvars调用后在调用的时间槽的最后开始记录信号的变化情况,当时用dumpoff时记录挂起,此时将会产生一个记录检查点,检查点中记录的所有被选择的变量值为x,当再次使用dumpon后,挂起的记录将会继续进行,而在dumpoff和$dumpon之间的变化将不会进行记录,而是以x作为记录.

【示例】

图片

1.4 $dumpall

该任务会在VCD文件中创建一个检查点,其中记录了当前时刻所要记录的信号的值,这里需要注意,VCD记录功能使能后,VCD仅记录随着时间递增有变化的信号,如果相关的信号没有发生变化,那么将不会在对应时段进行记录,但是如果使用dumpall那么不管当前时刻前后相关信号是否发生变化,所有要被记录的信号都会记录到VCD中.当该命令紧跟着dumpvars时,将不会在VCD记录中出现,因为此时该命令的功能与$dumpvars一致,即记录所有要被记录的变量信号的值.

1.5 $dumplimit

该任务可以限定VCD文件的大小,其中参数的单位为字节,当记录的VCD文件大小达到限制,将会在文件的末尾插入如下语句表示VCD文件记录的大小已经达到设定值:

图片

1.6 $dumpflush

该任务主要用来清理VCD文件占用的系统缓存,当然在清理之前会将缓存中的数据保存到VCD文件中,一般情况下只有仿真结束了才能对VCD文件进行操作,在代码中增加该任务,可以在放真的过程中对VCD文件进行操作,因为该任务在仿真过程中将缓存中的数据更新到VCD中,所以不用等到仿真结束即可查看VCD文件.

2 VCD文件格式

VCD文件通常由三部分组成:头信息区(HeaderInformation),节点信息区(Node Information),数值变化区(Value Change).VCD文件的开始部分为头信息区,其中包括VCD产生日期、仿真器版本以及仿真时间精度等信息.节点信息区主要记录了哪些变量信号将被记录在VCD中以及在VCD中对应这些变量信号的标识符(ASCII,字符的范围从!到~,在码表中对应的十进制数为33到126).数值变化区主要记录了那些随着仿真时间推移发生变化的变量信号.

注意事项:

  • VCD中记录的数据是区分大小写的;
  • VCD不会仅记录一个矢量的一部分,也不会记录表达式;
  • 记录信号的数据格式

VCD中记录的变量一般主要包括标量和矢量,每种类型的信号被记录在VCD中的方式也略有差异.

  • 标量变量一般记录时,标识符与具体对应数值之间没有空格;
  • 矢量变量记录时,需要分两种情况:
  • 矢量变量每一位对应一个标识符,此时记录的每一位与记录标量变量一样;
  • 矢量变量整体对应一个标识符时,此时标识符与对应记录的数值之间有一个空格,记录数值的格式为:<进制><数字>;

一般矢量数字的格式为右对齐,可能记录数据本身的位数与矢量定义不一致,此时会对数据的高位进行填充处理,一般遵循的高位补充规则如下表所示:

图片

【示例】

图片

从向量中可以看到,信号RIO2_REFCLK_M[3:0]在时刻#5000000、#6500000、#12000000分别为4'b1111,4'b0000,4'b1111.这里大家需要注意矢量变量在VCD中记录的格式.

2.2 VCD中常见的关键字

在VCD文件中,常见关键字命令如下表所示:

图片

2.2.1 $comment

主要是在VCD中插入一些注释提示信息等.

2.2.2 $date

主要记录了VCD是生成的时间.

2.2.3 $enddefinitions

标识头信息区和节点信息区的结束.

2.2.4 $scope

主要指示被记录变量的作用范围,一般对于以下模块关键字进行范围标志:module,task,function,begin(具有label),fork(具有label).

2.2.5 $timescale

指示VCD生成时使用的时间精度.

2.2.6 $upscope

指示设计层次结构的变化,主要是从当前层跳转到比当前层更高一级的层次时使用,即表示当前层相关描述已经结束.

2.2.7 $version

指示产生VCD的仿真器的名字和版本等信息.

2.2.8 $var

指示当前标识符和信息名对应关系.

2.2.9 $dumpall

指示当前为一个检查点,记录了所有要被记录的信号的值,而不管该信号是否发生变换.

2.2.10 $dumpoff

该命令后所有被记录的信号的值为x,直到遇到$dumpon;

2.2.11 $dumpon

表示再次使能了记录变量有效变化到VCD.

2.2.10 $dumpvars

其后紧跟着所有要被记录的变量信号的初始值.

【示例】注意示例中各关键字说明

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • VCD
    VCD
    +关注

    关注

    0

    文章

    37

    浏览量

    34425
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    82996
  • 十进制
    +关注

    关注

    0

    文章

    62

    浏览量

    13029
  • 信号仿真
    +关注

    关注

    0

    文章

    9

    浏览量

    8557
收藏 人收藏

    评论

    相关推荐

    C语言深度解剖

    本帖最后由 eehome 于 2013-1-5 09:50 编辑 C语言深度解剖
    发表于 10-17 17:17

    C语言深度解剖

    ` 本帖最后由 soupcsak007 于 2013-6-18 14:52 编辑 C语言深度解剖`
    发表于 06-18 09:35

    EMC测试项目详述

    EMC测试项目详述英文版
    发表于 05-24 15:05

    万燕320型VCD电路图

    点击查看放大图纸:万燕320型VCD机电路图
    发表于 06-07 09:12 1553次阅读
    万燕320型<b class='flag-5'>VCD</b>电路图

    智能VCD解码板的维修与使用

    智能VCD解码板的维修与使用 市面上各种VCD机使用的解码板型号很多,在维修中不一定能找到可
    发表于 04-28 15:35 3180次阅读
    智能<b class='flag-5'>VCD</b>解码板的维修与使用

    宽频带VCD电路图

    宽频带VCD电路图
    发表于 07-13 17:55 692次阅读
    宽频带<b class='flag-5'>VCD</b>电路图

    线性VCD电路图

    线性VCD电路图
    发表于 07-16 11:28 638次阅读
    线性<b class='flag-5'>VCD</b>电路图

    线性VCD电路图

    线性VCD电路图
    发表于 07-20 13:53 703次阅读
    线性<b class='flag-5'>VCD</b>电路图

    VCD/DVD基础知识教程

    VCD/DVD基础知识教程 录象带转VCDVCD质量判断 录象带转制VCD:录象带转制VCD就是把录象带录下来的信息(
    发表于 03-23 17:02 954次阅读

    C语言深度解剖

    C语言深度解剖是学习嵌入式系统开发的必须资料。
    发表于 04-06 15:16 8次下载

    基于C语言深度解剖

    基于C语言深度解剖
    发表于 10-23 17:35 24次下载
    基于C语言深度<b class='flag-5'>解剖</b>

    详细解剖DM9000A

    详细解剖DM9000A
    发表于 10-24 11:36 22次下载

    C语言深度解剖

    C语言深度解剖
    发表于 11-21 17:49 14次下载

    解剖常见电子元器件,了解内部结构

    解剖常见电子元器件,了解其内部结构
    的头像 发表于 01-15 16:35 9271次阅读

    离子刻蚀机 解剖芯片

    责任编辑:xj 原文标题:芯片解剖,逐层剥离 文章出处:【微信公众号:上海季丰电子】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 09-27 18:34 2136次阅读