电子说
仿真是IC设计不可或缺的重要步聚,其中仿真波形是debug的必要条件。今天简要介绍下一下几种波形文件VCD/FSDB /SHM/VPD的dump方法。其中VCD通用性最好,VCS/XRUN环境中直接加函数dump;对于FSDB,本文讲述了VCS/XRUN 2种环境中基于函数和Tcl的2种dump方法;对于SHM, 本文简要介绍了XRUN中基于函数和Tcl的2种dump方法;对于VPD,本文简要介绍了VCS中函数dump方法;
一、VCD (Valve Change Dump)VCD是一个通用的格式。VCD文件是1EEE1364标准(Verilog HDL语言标准)中定义的一种ASCI文件。它主要包含了头信息,变量的预定义和变量值的变化信息。因为它包含了信号的变化信息,就相当于记录了整个仿真的信息,我们可以用这个文件来再现仿真,也就能够显示波形用于DEBUG。因为VCD是 Verilog HDL语言标准的一部分,因此所有的veriog的仿真器都要能够实现这个功能,也要允许用户在verilog代码中通过系統函数来dump VCD文件。我们可以通过Verilog HDL的系统函数dumpfile来 生成波形,通过dumpvars的参数来规定我们抽取仿真中某些特定模块和信号的数据。
特别说明的一点是,目前主流功耗分析工具都支持通过VCD文件来评估功耗。Encounter 和 PrimeTime Px (Prime Power)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。VCD本质是文本文件,文件占用较大内存,极大拖慢仿真速度,但是由于对功耗分析支持比较友好,因此各种EDA仿真均有dump VCD的需求。
二、FSDB (Fast Signal DataBase)FSDB 是Spring Soft (Novas) 公司 Debussy / Verdi 支持的波形文件,一般文件占用内存较小,使用较为广泛,其余仿真工具如ncsim,modlesim等等可以通过加载Verdi 的PLI 来dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提取仿真过程中信号的有用信息,除去了VCD中信息元余,就像对VCD数据进行了一次huttman编码。因此fsdb数据量小,可以极大地提高仿真速度。本质上VCD文件使用verilog内置的系统函数来实现dump 的,fsdb是通过verilog的PLI接口来实现的。
环境中可以通过以下函数实现FSDB波形的dump。Step1: 设置环境变量:Step2: Bash 中加入以下选项:VCS:
XRUN:加入编译选项:-loadpli1 debpli:novas_pli_bootbench中添加以下函数:
当然也可以使用Tcl 实现波形的精准dump控制。1Vcs 中tcl 控制方法:仿真bash中加入仿真选项:-ucli -i 。。/sim/dump_fsdb_vcs.tcl其中Tcl demo文件:
2Xrun中tcl控制方法:仿真bash中加入tcl载入选项:-input 。。/sim/dump_fsdb_irun.tclTcl demo文件:
其余波形文件就是各家不同的仿真或调试工具支持的文件类型,互不通用。但基本都可以由VCD文件转换而来(其实就是VCD文件的压缩版,因为只取仿真调试需要的数据,所以文件大小要远小于原始VCD文件)。
三、SHMSHM 是Cadence公司 NC verilog 和Simvision 支持的波形文件,实际上 shm是一个目录,其中包含了 dsn和 tn两个文件。用simvision xxx.shm来打开波形。
1.通过函数实现dump
2.通过tcl的方式实现dump仿真bash中加入tcl载入选项:-input 。。/sim/dump_shm_irun.tclTcl demo文件:
四、VPDVPD是Synopsys公司 VCS DVE支持的波形文件,现在逐渐被fsdb取而代之。用dve –vpd test.vpd打开对应波形。生成VPD方法如下:仿真bash中加入编译选项: -debug_pp +vcd+vcdplusonBench中添加dump函数:
以上介绍的基本方法,仅供参考,不同版本可能略有不同,具体的设置细节,需要查询对应的help文档。官方help文档提供了更为灵活而有效率的使用方法。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !