1. 基础知识
1.1 verdi介绍
虽然我们的公司的仿真环境是cadence的xcelium,但是同样使用Verdi,我也是才知道verdi和vcs一样属于synopsys公司。vcs和xcelium主要负责编译运行Testbench和RTL,并负责生成相应的波形文件。而verdi主要负责加载波形文件,查看信号的波形及其对应的代码来进行调试验证。Verdi最开始是由novas公司设计的(怪不得用lisence可以用xcel,也可以用novas),在2008年,被台湾的EDA厂家springsoft(源笙)收购了。在2012年,synopsys收购了spring soft公司,所以此时Verdi才正式属于synopsys。
Verdi®自动调试平台是一种用于调试数字电路设计的高级解决方案,可用于提高复杂的片上系统(SoC),ASIC和FPGA设计效率。传统的调试工具仅依靠结构信息和发挥工程师的个人能力从结构中推断出设计行为。Verdi平台提供强大的技术,帮助工程师理解复杂和不熟悉的设计行为,自动化困难和繁琐的调试过程,统一各种复杂的设计环境,并推断设计的动态行为。
除了源代码浏览器的标准功能,原理图,波形,状态机图和波形比较(用于比较FSDB格式的仿真结果),Verdi平台还包括使用时间流视图自动跟踪信号活动的高级功能,基于断言的调试,功耗感知调试以及事务和消息数据的调试和分析。所有这些都可以在图形用户界面中使用,该平台使用支持多窗口对接的Qt平台,并且可以轻松定制。
Verdi平台使工程师能够在传统解决方案的一小部分时间内定位,理解和解决错误。这可以最大限度地提高昂贵工程师资源的效率,显着降低成本,并大大加快将硅片推向市场的过程。
1.2 fsdb文件
FSDB (Fast Signal DataBase)是SpringSoft (Novas) Debussy / Verdi 支持的波形文件,一般文件占用内存较小,使用较为广泛,其余仿真工具如ncsim,modlesim(还有我们用的xcelium)等等可以通过加载Verdi 的PLI 来dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提取仿真过程中信号的有用信息,除去了VCD中信息元余,就像对VCD数据进行了一次huttman编码。因此fsdb数据量小,可以极大地提高仿真速度。本质上VCD文件使用verilog内置的系统函数来实现dump 的,fsdb是通过verilog的PLI接口来实现的。
2. fsdb dump设置
这里参考工作环境,xcelium+verdi的配置
2.1 1st step-设置环境变量LD_LIBRARY_PATH
需要配置的内容(借鉴网上的配置):
export Verdi_HOME=$Synopsys_Dir/Verdi2015
export PATH=$Verdi_HOME/bin:$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/lib/linux64":$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64":$PATH
首先是环境变量,这个是公司服务器配好的:
通过env或echo $PATH命令可以看到verdi的下载路径: /njhome2/edatools/synopsys/Verdi_P-2019.06/
echo $PATH
/njhome2/edatools/synopsys/Verdi_P-2019.06/bin:/njhome1/LSF/10.1/linux2.6-glibc2.3-x86_64/etc:/njhome1/LSF/10.1/linux2.6-glibc2.3-x86_64/bin:
还有就是xrun仿真生成fsdb波形时,需要verdi工具提供的FSDB PLI库,这里需要通过配置环境变量LD_LIBRARY_PATH来完成。我们在run脚本中set
# set verdi home
$ENV{
'NOVAS_INST_DIR'} =
$njsvr ? "/njhome2/edatools/synopsys/Verdi_P-2019.06" : # NJ version limited by glibc version
$cqsvr ? "/home/edatools/synopsys/Verdi_P-2019.06" :
$autoenv && defined $ENV{
NOVAS_INST_DIR} ? $ENV{
'NOVAS_INST_DIR'} :
$autoenv && defined $ENV{
NOVAS_HOME} ?