1、对于数字IC设计过程中不同仿真工具对应不同的波形文件,具体有如下几种:
-
vcd(Value Change Dump),这是一种通用的格式,是IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。它主要包含了头信息,变量的预定义和变量值的变化信息。由于是verilog HDL标准的一部分,因此所有的仿真工具都必须支持。此外VCD记录的信息最为完整,可通过VCD文件来估计设计的功耗,而这一点也是其他波形文件所不具备的。Encounter 和 PrimeTime PX (Prime Power)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。
-
2、fsdb(Fast Signal DataBase),是Spring Soft (Novas)公司 Debussy / Verdi 支持的波形文件,类似于VCD,但只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,因此fsdb文件通常会比较小,像对VCD数据进行了一次huffman编码。
-
3、wlf(Wave Log File),是Mentor Graphics公司(现西门子)modelsim支持的波形文件,同样也比较小。
-
4、vpd(Value Plus Dump),是Synopsys公司VCS自带的波形查看器DVE所支持的格式。
-
5、shm是Cadence公司 NC verilog 和Simvision支持的波形文件,实际上 .shm是一个目录,其中包含了.dsn和.trn两个文件。
各家的波形文件互不相同,但都可以通过vcd文件进行中转。比如verdi下的波形文件fsdb要在modelsim中打开,则需要先用verdi将fsdb转成vcd,再通过modelsim将vcd转成wlf,分别用到命令fsdb2vcd,vcd2wlf。
2、在很多时候,我们需要dump波形中包括多维数组,那对于不同的仿真工具,如何dump多维数组呢?
- 对于VCS仿真工具:
a) 如果是dump vcd波形,则需要先在编译和仿真2个阶段(即vcs和simv命令)都必须加上“+memcbk +vcs+dumparrays”参数,然后通过以下2个系统函数收集波形。
$dumpfile(“*.vcd”);//指定dump的文件路径和名称
$dumpvars(0,**);//指定dump的层次
b) 如果是dump vpd波形,则需要在vcs和simv之后加上“+memcbk”,然后通过vcs自带的函数、$vcdpluson收集波形,并在dump波形时加上$vcdolusmemon();函数。
c) 如果是dump fsdb波形,则无需在编译和仿真时加入特殊的命令,通过自带的函数
$fsdbDumpfile(“test.fsdb”); //指定dump的波形文件路径和名称
$fsdbDumpvars(0,test,“+mda”)//指定dump的层次以及多维数组
也可以使用$fsdbDumpMDA()来dump多维数组。