linux工具应用
verdi
- 1. 基础知识
-
- 1.1 verdi介绍
- 1.2 fsdb文件
- 2. fsdb dump设置
-
- 2.1 1st step-设置环境变量LD_LIBRARY_PATH
- 2.2 2nd step-xrun仿真命令
- 2.3 3rd step-仿真过程中调用fsdb函数dump波形
-
- 2.3.1 在testbench、top.sv中调用fsdb函数
- 2.3.2 在tcl脚本中用xrun的dump指令(同样要调用fsdb函数)
- 2.4 其他dump文件类型
-
- 2.4.1 VCD(Valve Change Dump)
- 2.4.2 VPD
- 2.4.3 SHMSHM
- 3. fsdb dump常用方法总结
-
- 3.1 $fsdbDumpfile
- 3.2 $fsdbDumpvars
- 3.3 \$fsdbDumpon/\$fsdbDumpoff
- 3.4 $fsdbAutoSwitchDumpfile
- 3.5 $fsdbDumpflush
- 3.6 $fsdbDumpFinish
- 3.7 $fsdbSwitchDumpfile
- 3.8 $fsdbDumpvarsByFile
- 3.9 $fsdbDumpMDA
- 4. 如何用verdi打开design hierarchy和fsdb
-
- 4.1 加载hierarchy module和tb interface
- 4.2 打开fsdb波形
- 5. 使用技巧-ntrace
-
- 5.1 查寻模块例化或定义的位置
- 5.2 根据信号查询在哪个模块
- 5.3 在nTrace中查找模块和信号
- 5.4 查寻字符串
- 5.5 查看某个信号被哪些信号驱动
- 5.6 查看某个信号驱动了哪些信号
- 5.7 查找位于不同层次的驱动信号
- 5.8 快捷查看module信号定义
- 6. 使用技巧-nSchema
-
- 6.1 打开原理图
- 6.2 查看nShema Window中符号对应的源代码
- 6.3 在当前的层次中查找某个信号
- 6.4 使用 Fan-In Cone追踪某个信号的驱动逻辑
- 6.5 产生 partial hierarchy schematic
- 6.6 移动原理图中的器件
- 7. 使用技巧-nState
-
- 7.1 查看状态机视图
- 7.2 在状态机视图中添加状态转移条件
- 7.3 查看状态机个状态对应的相关代码
- 7.4 查看在什么时候状态机转移到某个状态
- 7.5 查看某一种状态转移【状态循环】情况是否会发生
- 7.6 查看某个状态被执行了多少次
- 7.7 查看某个状态转移到某个状态的转移次数
- 8. 使用技巧-nWave
-
- 8.1 改变信号的颜色
- 8.2 查看信号及变化
- 8.3 进制之间的转换
- 8.4 符号数之间的转换
- 8.5 符号数之间的转换
- 8.6 状态寄存器显示为状态名字
- 8.7 可以通过移除关联从状态机名字恢复到原来的进制显示
- 8.8 通过逻辑操作创建新信号
- 8.9 添加marker
- 8.10 总线操作
- 8.11 查找信号的某个值、某个值跳转到某个值
- 8.12 对比两个波形
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} ? $ENV{
'NOVAS_HOME'} :
$shsvr ? "/fashome1/edatools/synopsys/verdi2013.07" :
$orsvr ? "/home/edatools/synopsys/Verdi_P-2019.06" :
"/fashome1/edatools/synopsys/verdi2013.07";
# set LD_LIBRARY_PATH
$ENV{
'LD_LIBRARY_PATH'} = "$ENV{'NOVAS_INST_DIR'}/share/PLI/IUS/LINUX64/boot:LD_LIBRARY_PATH";
$ENV{
'SYNOPSYS_DW'} = defined $ENV{
SYNOPSYS} ? $ENV{
SYNOPSYS} :
$njsvr ? "/njhome2/edatools/synopsys/dc2019.12-sp4" :
$cqsvr ? "/home/edatools/synopsys/dc2019.12-SP5-2" : "";
$ENV{
'PROJ_ROOT'} = cwd;
$ENV{
'PROJ_DUT_FILE'} = $dut_file;
my 