目录
一、前言
VCD(Value change dump)是一个ASCII文件,里面有关于给定设计的头信息,变量的定义,以及指定的变量或所有变量的值变化信息,变量的值变化可以是标量或矢量格式。VCD文件一般是由EDA仿真工具生成。
二、VCD文件格式
VCD文件由头部,变量定义,打印变量,值变化四个部分组成。每一条语句内容都以关键字"$"开头,后面跟着命令名,以关键字“$end”结束,所有的VCD标记以空格,并且字母严格区分大小写。
VCD keywords are marked by a leading $; in general every keyword starts a command which is terminated by an explicit $end. Variable identifiers may also start with a $, but these may be distinguished by context.
All VCD tokens are delineated by whitespace. Data in the VCD file is case sensitive.
2.1 头部
头部包含了时间戳,仿真器版本,时间精度(用于指定在值变化部分中映射时间增量的仿真时间单元)
2.2 变量定义
变量定义包含了在给定范围内的信号初始化信息。每个变量赋值了一个随机值标识,标识是由一个或多个ASCII字符(从!到~,对应的十进制范围为33-126),通常是一个或两个字符。如果仿真器确定多个变量有相同的值,则可以共用一个标识。
每一行变量定义以"$var"开头,后面紧跟的是变量类型,数据宽度,标识符,变量名。
上述中的给定范围中范围类型定义和verilog中的定义一致,类型包括模块,任务,函数,fork块。
2.3 值打印
该部分以$dumpvars或$dumpports开头,主要是变量的初始值
2.4 值变化部分
值变化部分包含了仿真模型中信号随时间的变化值信息,变量所处的时间通过“#”加时间值。对于标量信号,信号的值用0或1表示,对于矢量信号(多比特信号),信号值格式用“b”或“B”,后面紧跟二进制值,然后是信号标识。对于实数变量用“r”或“R”开头,数据用%标识