*前言:VCD(Value Change Dump),VCD和DVD没啥关系。是IC设计仿真时,由EDA仿真软件产生的一种波形存储文件。如下代码。*

$date Wed Oct 20 15:04:11 2021 $end
$version libsigrok 0.5.2 $end
$commentAcquisition with 16/16 channels at 200 MHz
$end
$timescale 1 ns $end
$scope module libsigrok $end
$var wire 3 $1 BS [2:0] $end
$var wire 1 ! 0 $end
$var wire 1 " 1 $end
$var wire 1 # 2 $end
$var wire 1 $ 3 $end
$var wire 1 % 4 $end
$var wire 1 & 5 $end
$var wire 1 ' 6 $end
$var wire 1 ( 7 $end
$var wire 1 ) 8 $end
$var wire 1 * 9 $end
$var wire 1 + 10 $end
$var wire 1 , 11 $end
$var wire 1 - 12 $end
$var wire 1 . 13 $end
$var wire 1 / 14 $end
$var wire 1 0 15 $end
$upscope $end
$enddefinitions $end
#0 1! 1" 1# 0$ 0% 1& 1' 0( 0) 0* 0+ 0, 0- 0. 0/ 00
#2499371545 0'
#2499372810
0#
b000 $1
#2499998855 0!
#2500004690 1$
#2500009360 0" 0$
#2500014030 1$
#2500018695 1"
#2500018700 0$
#2500023370 1$
#2500028040 0" 0$
#2500032710 1$
#2500037380 0$
#2500042045 1$
#2500046715 1" 0$
#2500051380 1$
#2500056050 0" 0$
#2500060720 1$
#2500065385 1"
#2500065390 0$

代码块里面就是vcd 文档节选。vcd的产生方法有好几种。可以从 $version 后面信息去判断。1,libsigrok 0.5.2,是通过逻辑分析仪抓取的测试波形,通过配套的软件输出的vcd。2,ModelSim Version 6.6,是通过modelsim软件仿真输出的vcd。3,Synopsys VCS version N-2017.12-SP2_Full64 ,是 Synopsys 的VCS软件输出的vcd文档。不同的软件输出的vcd文档,格式略有不同。

VCD 文档 整体包含了三个部分。header section , variable definition section,value change section。

VCD关键字以$开头(但是变量标识符也可以以$开头)。通常,每个关键字都以一个$end关键字结束。

header section

$date Wed Oct 20 15:04:11 2021 $end
$version libsigrok 0.5.2 $end
$commentAcquisition with 16/16 channels at 200 MHz
$end
$timescale 1 ns $end
$scope module libsigrok $end

header section 部分会记录文件仿真日期和仿真信息,还会记录到仿真时的时间精度。

$date :VCD是生成的时间.

$version:仿真软件的版本信息。

$comment :注释指令,这里是插入了逻辑分析仪采样时的速率。

$timescale: 软件仿真生成VCD使用的时间精度。

variable definition section

$scope module libsigrok $end
$var wire 3 $1 BS [2:0] $end
$var wire 1 ! 0 $end
$var wire 1 " 1 $end
$var wire 1 # 2 $end
$var wire 1 $ 3 $end
$var wire 1 % 4 $end
$var wire 1 & 5 $end
$var wire 1 ' 6 $end
$var wire 1 ( 7 $end
$var wire 1 ) 8 $end
$var wire 1 * 9 $end
$var wire 1 + 10 $end
$var wire 1 , 11 $end
$var wire 1 - 12 $end
$var wire 1 . 13 $end
$var wire 1 / 14 $end
$var wire 1 0 15 $end
$upscope $end
$enddefinitions $end

$scope :指示被记录变量的作用范围。

$var :指示当前标识符和信息名对应关系.这里就是定义,信号的位宽,标识符,和对应的信号名字。因为是逻辑分析仪抓取的型。所有的信号都以通道数字0 -15 标出。未有信号名字。由VCS 产生的 $var wire 1 7 D0P $end $var wire 1 8 D0N $end 。

$upscope :指示设计层次结构的变化

$enddefinitions :标识头信息区和节点信息区的结束。

value change section:

#0 1! 1" 1# 0$ 0% 1& 1' 0( 0) 0* 0+ 0, 0- 0. 0/ 00
#2499371545 0'
#2499372810
0#
b000 $1
#2499998855 0!
#2500004690 1$
#2500009360 0" 0$
#2500014030 1$
#2500018695 1"
#2500018700 0$
#2500023370 1$
#2500028040 0" 0$
#2500032710 1$
#2500037380 0$
#2500042045 1$
#2500046715 1" 0$
#2500051380 1$
#2500056050 0" 0$
#2500060720 1$
#2500065385 1"
#2500065390 0$

按时间顺序变化的值都会被vcd文档所记录。

# 表示变化时刻。 0或1表示信号变化的值。后面紧跟的是信号的标识符。表示那个信号进行了变化。#0 表示在0时刻时,后面是0-15 信号通道的初始化值。 #2499371545 0'表示在2499371545nS 时刻时信号 6 逻辑由1变成了0。

对于向量(多位)信号,格式是用字母'b'或'b'表示的信号 b000 $1

200行Perl 语言实现 VCD 转ATE测试pattern ---VCD的解析相关推荐

  1. 200行Perl 语言实现 VCD 转ATE测试pattern

    *前言:*最近几年芯片行业大火,也带动了IC测试行业的发展.CP(Chip Probing)测试的复杂度和覆盖率也逐渐增加.RD给出的仿真测试(VCD文件),要转成ATE机台(ND2)能看得动的pat ...

  2. 200行Perl 语言实现 VCD 转ATE测试pattern ---pattern的解析

    前言:测试pattern是ATE机台能看的懂的语言.编译后会被存在机台memory中,由pattern generator电路来产生测试激励并在根据测试pattern中的输出脚做响应的比较.本文以ad ...

  3. 用200行C语言代码写出一个贪吃蛇——1.0(基本版)

    1.设计思路 总的来说,贪吃蛇这个小游戏涉及到的东西不多,但是对逻辑思维是比较吃基本功的. 贪吃蛇,显示给我们看的有三部分:蛇.食物.地图边界. 我们可以用一个二维数组来标记这些部分: 例如这里我创建 ...

  4. r语言error in match.fun(fun) :_Go语言200行写区块链源代码分析

    Github上有一个Repo,是一个使用Go语言(golang),不到200行代码写的区块链源代码,准确的说是174行.原作者起了个名字是 Code your own blockchain in le ...

  5. go语言:200行代码做udp rtp转发并发分布服务器

    使用go做服务器 最近写服务器使用c++多了以后,java和node逐渐被放到一边,最后又做了一个决定,使用go来做服务器,将会使用200行代码不到来做这个并发和分布式服务器,为什么? go语言的优势 ...

  6. 开发日记-20190705 关键词 读书笔记 《Perl语言入门》Day 2

    Preface Content 运行程序时,Perl内部的编译器会先载入整个源程序,将之转换成内部使用的bytecode,这是一种Prel在内部用来表示程序语法树的数据结构,然后交给Perl的byte ...

  7. 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨!揭晓中国开发者真实现状...

    作者 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 程序员,一个圈外人羡慕.圈内人喊苦的"神奇"职业--高薪.福利好是旁人羡慕的理由,高压.加班多却也是他们最常见的写照 ...

  8. perl语言编程 第四版_被称作“胶水语言”的PERL,在芯片设计和验证中可以这样使用...

    最近在做一个验证环境的自动化生成脚本,在写的过程中,随着对PERL认知程度的增加,越感到它的强大之处,今天我们来谈一谈这门语言. PERL(Practical Extration and Report ...

  9. 用200行Go代码写一个自己的区块链!

    区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Go 语言来实现一个简单的区块链,用不到 200 行代码来揭示区块链 ...

最新文章

  1. 2019成考计算机几时出成绩,2019年成人高考成绩什么时候出来?如何查询
  2. 【转】TCP/IP协议到底在讲什么?【乐搏TestPro】
  3. 模拟实现请求分页虚存页面替换算法_河北串口屏厂家:玻璃清洗机触摸屏实现数据交互功能...
  4. bzoj3110 [Zjoi2013]K大数查询
  5. 打断点的方式_一位清华退休老教授:作为家长如果能管住孩子这3点,将来会成才...
  6. dnf剑魂buff等级上限_DNF:又是随机大坑?8月新护石装备可升级,但升3个需要刷半年...
  7. springboot+mybatis+mysql(增删改查xml入门编程)
  8. SQLi LABS Less-8
  9. SQLServr添加数据列
  10. 移动通信USSD业务探讨(转)
  11. 去掉iview中模态框中的确定取消按钮
  12. SPSS基础操作(一):用幂指数型的权函数建立加权最小二乘回归方程
  13. 基于socket的即时通信系统的设计与实现
  14. c语言速成pdf,c语言速成_笔记.pdf
  15. LaTeX各种算法排版
  16. 网易公开课付费视频没有加密,可以随意下载到本地
  17. Kindle DXG的一些使用方法及技巧
  18. 世界哲学语录100句(句句珠玑,细细品味)
  19. Java设计模式-程序员内功修炼-目录
  20. 头条粉丝红利期来了,最新涨粉攻略我真不想告诉你

热门文章

  1. 酷睿2势不可挡 Merom处理器深度评测
  2. Java面试题收集(三)
  3. Recursive occurrence of viurs scan profile /scet/gui_upload in the sequence /scet/gui_upload
  4. 照明案例:混色导光管
  5. C#流程控制————选择结构
  6. 实验15:内部温度传感器实验
  7. C++类设计指导原则
  8. vb.net——通过邮箱动态发送验证码实现完美注册
  9. 情人节撸一个表白页面
  10. OpenVidu(四) 客户端