Verdi详细使用总结

目录

一、Verdi简介

二、Verdi 使用目标

1.生成fsdb波形

    三个变量

    三个命令

    两大方法

    三大EDA厂商

2.查看fsdb波形和追踪RTL代码debug


一、Verdi简介

      Verdi是一个功能强大的debug工具,可以配合不同的仿真软件进行debug,很多企业常用的就是VCS+Verdi的方式就行代码的仿真与检查。Verdi使用情形主要是IC验证工程师(Debug),IC设计工程师(Review)。

二、Verdi 使用目标

使用Vverdi主要有三个步骤:生成fsdb波形——查看fsdb波形——追踪RTL代码debug。

1.生成fsdb波形

    三个变量

  • VERDI_HOME/NOVAS_HOME:仿真器默认,且为设置PATH做准备
  •  PATH:让系统(Linux)找到verdi
  •  LD_LIBRARY_PATH:让系统(Linux)能够找到Verdi需要的库文件.so(静态库),.a(动态库),.tab(表格文件).


    三个命令

  • echo(可配合sed):查询(打印)环境变量,管道命令|相当于把管道左边的结果给右边的命令再执行

        echo $PATH | sed ‘s/\:/\n/g’  ,全局替换,把冒号替换为换行符
        echo $LD_LIBRARY_PATH | sed ‘s/\:/\n/g’

  • which :查询当前软件是否设置,若设置成功,会显示软件路径,使用which verdi
  • uname -i:查询当前系统信息,如硬件平台64bit为x86_64/amd64,32bit平台为i386    

    两大方法

  • 使用Verilog系统函数,在测试代码里加上如下代码

      initial begin
         $fsdbDumpfile("top_tb.fsdb");
         $fsdbDumpvars(0,"tob_tb");
      end

  • 使用UCLI、TCL接口(VCS使用tcl脚本)

    global env
        fsdbDumpfile "$env(demo_fifo).fsdb"
        fsdbDumpvars 0 "top_tb"
    run

         Dump波形的两类主要方法优缺点比较

基于系统函数基于ucli/tcl接口
1.新员工熟悉Verilog代码,接受较快1.不需要重新编译仿真顶层; 2.使用高级语言接口,容易完成复杂处理,例如传递变量,例如使用正则表达式;3.交互式接口,控制灵活,仿真过程可修改dump信息,如dumpon/dumpoff
1.需要重新编译系统,浪费时间(不使用valueplusargs时);2.Verilog是低级语言,对于文本处理比较困难,不支持正则表达式1.新员工大多不熟悉Tcl,接受较慢

    三大EDA厂商

  • Synopsys:VCS + Verdi
  • Cadence :irun + Verdi
  • Mentor :Questa + Verdi


VCS的Makefile脚本:与Verdi有关的为注释内容,使用ucli接口

com:
    vcs -full64 \
    -sverilog \
    -debug_pp \                                             # 使能UCLI命令
    -LDFLAGS \                                              # 传递参数给VCS的linker,与以下三行配合使用
    -rdynamic \                                             # 指示需加载的动态库,如libsscore_vcs201209.so
    -P ${VERDI_HOME}/share/PLI/VCS/${PLATFORM}/novas.tab \  # 加载表格文件
    ${VERDI_HOME}/share/PLI/VCS/${PLANTFORM}/pli.a \        # 加载静态库
    -f ../${demo_name}/tb_top.f \
    +vcs+lic+wait \
    -l compile.log

sim:
    ./simv \
    -ucli -i ../scripts/dump_fsdb_vcs.tcl \                 # ucli的输入文件(-i)为tcl脚本
    +fsdb+autoflush \                                       # 命令行参数autoflush,一边仿真一边dump波形,如果没有该参数,那么不会dump波形,需要在ucli命令run 100ns后键入fsdbDumpflush才会dump波形
    -l sim.log

 

   其中dump_fsdb_vcs.tcl(ucli脚本为tcl语言)

    global env                             # tcl脚本引用环境变量,Makefile中通过export定义   
    fsdbDumpfile "$env(demo_name).fsdb"    # 设置波形文件名,受环境变量env(demo_name)控制   # demo_name在makefile中使用export demo_name=demo_fifo  
    fsdbDumpvars 0 "tb_top"                # 设置波形的顶层和层次,表示将tb_top作为顶层,Dump所有层次
    run                                    # 设置完dump信息,启动仿真(此时仿真器被ucli控制) 可以run 100ns会在仿真100ns的时候停下来下来

 

    也可以使用交互式仿真:注释内容可以在仿真过程中键入

global env
fsdbDumpfile "$env(demo_name).fsdb"
fsdbDumpvars 0 "top_tb"
run 200ns
#fsdbDumpoff
#run 100ns
#fsdbDumpon
#run


 

 

questa脚本:

compile:
    vlib work
    vmap work work
    vlog \
    -64 \
    -sv \
    +acc \                                                            # +acc使加载PLI有效
    -f ../${demo_name}/tb_top.f \
    -l com.log

run:
    vsim \
    -64 \
    -batch \
    -novopt \
    -pli ${VERDI_HOME}/share/PLI/MODELSIM/${PLATFORM}/novas_fli.so \  # 加载共享对象
    work.tb_top \
    -do ../scripts/dump_fsdb_questa.tcl \
    +fsdb_autoflush \
    -l sim.log

 

    dump_fsdb_questa.tcl

gloal env 
fsdbDumpfile "$env(demo_name).fsdb"
fsdbDumpvars 0 "tb_top"
run -all
quit -sim

 

不同场景dump波形的需求

这里写图片描述

       2.查看fsdb波形和追踪RTL代码debug

关于Verdi细节操作见Verdi快速使用技巧_yh13572438258的博客-CSDN博客
参考链接:https://blog.csdn.net/immeatea_aun/article/details/80961258

  • 13
    点赞
  • 197
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verdi是一款用于图形化仿真的工具,可以用于调试和观察变量情况。要使用Verdi的图形界面进行动态仿真,可以按照以下步骤操作: 1. 在启动Verdi时,使用以下命令来执行启动: ``` verdi -play <command_file_name> ``` 这里的`command_file_name`是一个TCL文件,用于执行Verdi的命令和设置。 2. 在vcs的编译选项中加入`-kdb`的选项进行编译。 3. 在执行`simv`的选项中加入`-gui=verdi`或者`-verdi`选项,这样就可以启动Verdi进行图形界面的动态仿真。 使用Verdi的图形界面可以方便地添加断点和观察变量的情况,以便进行调试和分析。请注意,这里只是简要介绍了Verdi的使用方法,具体的操作和功能可以参考相关的文档和教程。\[1\]\[2\] #### 引用[.reference_title] - *1* *3* [Verdi - GUI技能操作 Before you start (未完)](https://blog.csdn.net/ciscomonkey/article/details/111239840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [verdi简单使用方法](https://blog.csdn.net/muyiwushui/article/details/119911977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值