值变转储文件(VCD)是一个ASCII文件,它包含仿真时间、范围与信号的定义以及仿真运行过程中信号值的变化等信息。设计中的所有信号或者选定的信号集合在仿真过程中都可以被写入VCD文件。
后处理工具可以把VCD文件作为输入并把层次信息、信号值和信号波形显示出来。现在有许多商业后处理工具以及集成到仿真器中的工具可以使用。
对于大规模设计的仿真,设计者可以把选定的信号转储到VCD文件中,并使用后处理工具去调试、分析和验证仿真输出结果。
Verilog提供了系统任务来选择要转储的模块实例或模块实例信号,选择VCD文件的名称,选择转储过程的起点和终点,选择生成监测点($dumpall),每个任务的使用方法如下所示。
//指定VCD文件名。若不指定VCD文件名,则有仿真器指定以默认文件名
$dumpfile("myfile.dump");//仿真信息转储到myfile.dump文件
//转储到模块中的信号
initial
$dumpvars; //没有指定变量范围,把设计中的全部信号都转储
initial
$dumpvars(1, top); //转储模块实例top中的信号
//数1表示层次的等级,只转储top下第一层信号
//即转储top模块中的变量,而不转储在top中调用模块中的变量
initial
$dumpvars(2, top.m1); //转储top.m1模块下面2层的信号
initial
$dumpvars(0, top.m1); //数0表示转储top.m1模块下面各个层的所有信号
//启动和停止转储过程
initial
begin
$dumpon; //启动转储过程
#100000 $dumpoff; //过了10000个仿真单位后,停止转储过程
end
//生成一个检查点,转储所有VCD变量的现行值
initial
$dumpall;
$dumpfile和$dumpbvars任务通常在仿真开始时指定,$dumpon和$dumpoff和$dumpall任务在仿真过程中控制转储过程。