linux工具应用

2024-07-14 1337阅读

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。

linux工具应用
(图片来源网络,侵删)

​ 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 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]