• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Verdi与EDA配合的使用方法

生成FSDB波形

三个变量
VERDI_HOME/NOVAS_HOME:仿真器默认,且为设置PATH做准备
PATH:让系统(Linux)找到verdi
LD_LIBRARY_PATH:让系统(Linux)能够找到Verdi需要的库文件.
三个命令
echo(可配合sed):查询环境变量
echo $PATH | sed ‘s/\:/\n/g’
echo $LD_LIBRARY_PATH | sed ‘s/\:/\n/g’

/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
+ which :查询当前软件是否设置,若设置成功,会显示软件路径
+ uname -i:查询当前系统信息,如硬件平台64bit为x86_64/amd64,32bit平台为i386    

两大方法
使用Verilog系统函数

initial begin
    $fsdbDumpfile("top_tb.fsdb");
    $fsdbDumpvars(0,"tob_tb");
end
  • 使用UCLI、TCL接口(VCS使用tcl脚本,irun、questa与该脚本类似)
global env
fsdbDumpfile "$env(demo_fifo).fsdb"
fsdbDumpvars 0 "top_tb"
run

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

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

三大EDA厂商

  • Synopsys:VCS + Verdi
  • Cadence :irun + Verdi
  • Mentor :Questa + Verdi
    VCS脚本:与Verdi有关的为注释内容,使用ucli接口
com:
    vcs -full64 \
    -sverilog \
    -debug_pp \                                             # 使能UCLI命令
    -LDFLAGS -Wl,--no-as-needed \                                              # 传递参数给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

irun编译运行脚本:

com:
    irun \
    -elaborate \
    -access +r \                             # 表示需要有读的权限
    -f ../${demo_name}/tb_top.f \
    -top tb_top \
    -licqueue \
    -l compile.log 

sim:
    irun \
    -R \
    -input ../scripts/dump_fsdb_irun.tcl \
    +fsdb+autoflush \
    -licqueue \
    -l sim.log

dump_fsdb_irun.tcl

global env
call fsdbDumpfile "$env(demo_name).fsdb"  # 需要使用call,与vcs区别之一
call  fsdbDumpvars 0 "tb_top"
run   
quit                                      # 需要使用quit,irun不自动结束

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

posted on 2022-05-05 20:52  SOC验证工程师  阅读(1102)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3