Verilog 的“值变转储文件(VCD:Value Change Dump)”,这是一项在仿真调试中至关重要的技术,可以帮助你“看见”RTL中每个信号随时间的变化过程。


一、什么是 Verilog 的值变转储文件(VCD)

VCD 文件是一种标准格式的文本文件,全称为 Value Change Dump,用于记录 Verilog 仿真过程中信号的取值变化。

它的作用类似于逻辑分析仪的抓取波形,但作用于 RTL 层,用于:

  • 波形观察(使用 GTKWave 等工具)
  • 行为验证
  • 时序调试
  • 测试激励验证

二、VCD 文件的生成流程

📌 步骤一:在 Testbench 中添加转储语句

在 Verilog 的仿真 testbench 中,加入以下系统函数:

initial begin$dumpfile("wave.vcd");       // 设置输出的 VCD 文件名$dumpvars(0, tb_top);        // 设置要转储的模块或层级
end

参数解释:

语句含义说明
$dumpfile("file.vcd")设置输出 VCD 文件的名称。必须是 .vcd 后缀。
$dumpvars(level, scope)设置记录的信号层级深度和作用域;level = 0 表示全记录。
$dumpoff / $dumpon动态关闭/打开转储(常用于减小文件大小)。

三、VCD 文件格式结构简要

VCD 文件是标准的纯文本格式,其结构如下:

$timescale 1ns $end
$scope module tb_top $end
$var wire 1 a clk $end
$var wire 1 b rstn $end
...
$upscope $end
$enddefinitions $end
#0
0a
1b
#5
1a
#10
0b

每部分含义:

字段含义
$timescale指定时间单位(仿真单位)
$var定义变量名、宽度、标识符、别名
#<time>当前时间戳
0a / 1a标识符 a 的值变为 0 或 1

四、综合示例

🧾 1. RTL 代码

module counter(input clk, input rstn, output reg [3:0] count);always @(posedge clk or negedge rstn) beginif (!rstn)count <= 0;elsecount <= count + 1;end
endmodule

🧾 2. Testbench(包含 VCD)

module tb;reg clk = 0;reg rstn = 0;wire [3:0] count;counter uut(.clk(clk), .rstn(rstn), .count(count));always #5 clk = ~clk;initial begin$dumpfile("wave.vcd");$dumpvars(0, tb);#10 rstn = 1;#100 $finish;end
endmodule

五、VCD 文件查看工具

最常用的工具是开源波形查看器 GTKWave

gtkwave wave.vcd

支持搜索、跳转、游标测量、导出截图等功能,适用于跨平台(Windows/Linux)使用。


六、进阶技巧

1️⃣ 有选择性地转储信号

只记录某一子模块,减小文件体积:

$dumpvars(0, tb.uart_inst);

2️⃣ 控制转储时间段

$dumpoff;
#200;
$dumpon;

常用于忽略初始化过程,缩小文件:

initial begin$dumpfile("wave.vcd");$dumpvars(0, tb);#50 $dumpoff;#100 $dumpon;
end

3️⃣ 转储多位总线的显示

多位信号如 reg [7:0] data 会以:

b00000000 x  // 二进制格式

显示其值为 x 对应的名称。


七、常见问题与注意事项

问题或注意点说明
文件太大控制 $dumpvars 的范围或使用 $dumpoff
不支持非标准类型real 等类型不支持,使用 $fwrite 输出
Vivado 不直接支持 $dumpfile使用 write_vcd 或使用第三方仿真器

八、小结

项目内容
文件格式.vcd,文本格式
用途波形查看、调试、验证
生成方式$dumpfile, $dumpvars
查看工具GTKWave
最佳实践控制范围、分段转储

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910045.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910045.shtml
英文地址,请注明出处:http://en.pswp.cn/news/910045.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流水灯芯片74HC138 → 74HC164 → 74HC595核心功能、引脚作用及芯片定位

一、74HC138&#xff1a;精准的“8选1开关” 核心作用 用3根控制线&#xff08;A0-A2&#xff09;实现8路严格单选&#xff0c;同一时刻仅1路输出低电平&#xff08;其他7路高电平&#xff09;。 &#x1f4cc; 本质&#xff1a;二进制地址译码器&#xff0c;不是数据寄存器。…

鸿蒙Next仓颉语言开发实战教程:懒加载

今天要分享的是仓颉开发语言中的懒加载。 先和初学者朋友们解释一下什么是懒加载。懒加载在代码中叫做LazyForEach&#xff0c;看到名字你一定能猜到它和ForEach的功能类似。只不过和ForEach的一次性加载所有数据不同&#xff0c;懒加载会根据屏幕可使区域按需加载数据&#x…

Linux 内核同步管理全解:原理 + 实战 + 考点

&#x1f525; 推荐&#xff1a;《Yocto项目实战教程&#xff1a;高效定制嵌入式Linux系统》 京东正版促销&#xff0c;欢迎支持原创&#xff01; 链接&#xff1a;https://item.jd.com/15020438.html 一、为什么需要同步机制&#xff1f; Linux 是一个支持 多核并发 抢占式调…

效果成本双突破!快手提出端到端生成式推荐系统OneRec!

近日&#xff0c;快手推荐模型团队提出了一个端到端生成式推荐系统OneRec&#xff0c;该系统采用Encoder-Decoder架构&#xff0c;引入了基于奖励机制的偏好对齐方法&#xff0c;借助强化学习增强模型效果&#xff0c;可在奖励模型引导下直接生成契合用户偏好的视频内容。通过极…

flex布局 项目属性

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>flex布局 项目属性</title> <link href"css/k.css" rel"stylesheet" /> </head> <bod…

SpringBoot扩展——应用Web Service!

应用Web Service Web Service是一个SOA&#xff08;面向服务的编程&#xff09;架构&#xff0c;这种架构不依赖于语言&#xff0c;不依赖于平台&#xff0c;可以在不同的语言之间相互调用&#xff0c;通过Internet实现基于HTTP的网络应用间的交互调用。Web Service是一个可以…

EasyExcel学习笔记

EasyExcel学习 一、EasyExcel简介 一、EasyExcel是什么 EasyExcel是一个基于Java的简单、省内存的读写Excel的阿里开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 官网&#xff1a;https://easyexcel.opensource.alibaba.com/ 学习Easyexcel前需要了解导入和导出…

day4课程

1整体认识和路由配置 2二级分类面包屑导航实现 3基础商品列表渲染 4列表筛选功能实现 5列表无限加载功能实现 6定制路由滚动行为 7详情页整体认识和路由配置 8详情页基础数据渲染 9详情页基础组件封装和数据渲染 10适配不同title和数据列表 11小图切换大图 12滑块跟随鼠标移动 …

kubeadm worker节点加入master失败

文章目录 1、操作2、问题现象3、问题原因4、问题解决4.1、重新生成token4.2、重新生成hash值 5、验证 1、操作 执行以下命令&#xff0c;让worker节点加入到master节点 kubeadm join 103.123.222.241:6443 --token vxe3v1.wzpnks8v1vbbtsu0 --discovery-token-ca-cert-hash s…

二十二、【用户管理与权限 - 篇四】后端权限定义:模型与 API 实现

【用户管理与权限 - 篇四】后端权限定义:模型与 API 实现 前言准备工作第一部分:设计并创建 `Permission` 模型第二部分:更新 `Role` 模型以关联 `Permission`第三部分:生成并应用数据库迁移第四部分:创建 Serializers第五部分:创建 ViewSets第六部分:注册 API 路由第七…

猜数字小游戏微信流量主小程序开源

这个智力小游戏采用了数字华容道的玩法&#xff0c;玩家需要通过移动数字方块&#xff0c;将数字按顺序排列完成游戏。代码严格遵循微信小程序的目录结构&#xff0c;包含以下部分&#xff1a; 完整的小程序配置文件&#xff08;app.js、app.json、app.wxss&#xff09; 游戏页…

探秘阿里云EBS存储:云计算的存储基石

一、引言 在云计算时代&#xff0c;数据如同企业的生命线&#xff0c;数据存储的重要性不言而喻。随着企业数字化转型的加速&#xff0c;海量数据的存储与高效管理成为亟待解决的问题。云存储以其卓越的灵活性、可扩展性和成本效益&#xff0c;逐渐成为众多企业的首选方案。在…

音视频之H.264的可伸缩编码SVC

系列文章&#xff1a; 1、音视频之视频压缩技术及数字视频综述 2、音视频之视频压缩编码的基本原理 3、音视频之H.264/AVC编码器原理 4、音视频之H.264的句法和语义 5、音视频之H.264/AVC解码器的原理和实现 6、音视频之H.264视频编码传输及其在移动通信中的应用 7、音视…

Anaconda安装env,yml一直卡在Solving environment:不动

如果在使用conda env creat -f env.yml时候&#xff0c;anaconda一直卡住&#xff0c;如下 可以尝试下面操作。 conda config --set solver libmamba # 使用libmamba引擎&#xff08;Conda≥22.11&#xff09; conda env create -f env.yaml # 重新尝试

榕壹云婚恋相亲系统:ThinkPHP+UniApp打造高效婚配平台

引言 在数字化浪潮下,婚恋相亲行业正加速向线上迁移。榕壹云公司基于市场需求与技术积累,开发一款功能完备、技术开源的婚恋相亲小程序系统,为单身人士提供高效、安全的婚恋平台。本文将围绕系统背景、客户定位、核心技术、功能模块及优势场景展开详细解析,助力开发者与技…

查询docker-compose 部署的milvus 请求日志

在 Docker Compose 部署的 Milvus 中,日志默认存储在各个服务的容器内。以下是定位和查询日志的方法: 1. 查看实时日志 使用 docker-compose logs 命令查看实时日志: bash # 查看所有服务的日志 docker-compose logs -f# 仅查看 Milvus 服务日志(服务名以 docker-compos…

Rsync实操

Rsync实操 一.rsync命令 #类似于cp[rootuser2 ~]# rsync info.sh root192.168.168.130:/rootroot192.168.168.130s password: [rootuser1 ~]# lsanaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm info.sh 二、使用rsync备份push方式 服务器&#xff1a;server 192.168.168…

Java常见八股-(6.算法+实施篇)

Java常见八股-&#xff08;1.Java基础篇&#xff09; Java常见八股-&#xff08;2.Java高级篇&#xff09; Java常见八股-&#xff08;3.MySQL篇&#xff09; Java常见八股-&#xff08;4.前端篇&#xff09; Java常见八股-&#xff08;5.框架篇&#xff09; 目录 一、算…

阿里云部署的SMTP服务器安全攻防实录:深度解析攻击、防护与加固

阿里云部署的SMTP服务器安全攻防实录&#xff1a;深度解析攻击、防护与加固 一次针对云上SMTP服务的持续攻击事件&#xff0c;揭示了邮件中继服务面临的多重安全挑战。本文将深入剖析攻击手法、防护策略与系统性加固方案。 某企业在阿里云上部署的Postfix SMTP服务器近期遭遇…

HTTP与HTTPS深度解析:从明文传输到安全通信的演进之路

引言 在互联网的早期&#xff0c;HTTP&#xff08;超文本传输协议&#xff09;作为Web通信的基石&#xff0c;凭借简单高效的特性推动了万维网的爆发式增长。但随着互联网从“信息共享”向“价值交互”演进&#xff0c;HTTP的明文传输特性逐渐暴露致命缺陷——用户的每一次点击…