VCS+Verdi和Xrun+Indago简单仿真环境搭建-Anlogic-安路社区-FPGA CPLD-ChipDebug

VCS+Verdi和Xrun+Indago简单仿真环境搭建

 

导言

本期主要给大家出一个简单makefile+tcl的仿真环境,支持vcs+verdi以及xrun+indago,因为最近虚拟机中的vcs不稳定,所有把以前的makefile修改一下同时支持vcs和xrun(xcelium),这两款仿真器我用的都是2020版本,如果你使用的低于这个版本,有些feature看可能会不支持或者报错。

基础介绍

先看一下模板示例,rtl目录主要放verilog代码,sim文件夹下包含3个文件以及2个文件夹,filelist.f主要存放仿真文件路径,Makefile为执行文件,我们待会重点讲,run.tcl主要是为xrun生成能被indago打开的db。vcs文件夹是vcs仿真生成的所有文件,verdi生成的文件也会放入此文件夹。xrun则对应也是xrun仿真文件,indago文件对应放入xrun文件夹。

├── rtl
│   ├── axis_adapter.v
│   ├── axis_async_fifo_adapter.v
│   └── axis_async_fifo.v
├── sim
│   ├── filelist.f
│   ├── Makefile
│   ├── run.tcl
│   ├── vcs
│   └── xrun
├── spyglass
└── tb
    └── tb.v

Makefile解释

执行make sim SIM=vcs即可以开始仿真,仿真完毕执行make verdi即可打开波形文件。执行make sim SIM=xrun即可开始xrun的仿真,这里的仿真器默认使用xrun,所以这里大家可以省略SIM=xrun,仿真完就可以执行make indago开始调试波形。执行make help可以打印相关的makefile命令,还是建议大家自己打开文件看看最好,也方便修改。

vcs相关解释

vcs仿真需要生成.fsdb文件给verdi,所以tb文件需要添加如下内容,当然也可以用脚本的方式实现生成,网上有教程,这里仅使用这种方法,代码如下:

`ifdef DUMP
initial begin
    $display("Dump");
    $fsdbDumpfile("tb.fsdb");
    $fsdbDumpvars;
end
`else
initial begin
 $display("No Dump");
end
`endif

注意必须要用条件编译,因为vcs命令会用+define+DUMP来传递参数,条件编译fsdb相关函数,而xrun这里不需要。注意,这里面的4个软件,vcs仅支持和verdi配合使用,xrun仅支持和indago配合使用,其他搭配方式我没有写,也没太大必要。

xrun相关解释

ida_database -open -name="ida.db"
ida_probe -log -sv_flow -uvm_reg -log_objects -sv_modules -wave -wave_probe_args= "tb -depth all -all -memories -variables -packed 10000000 -unpacked 10000000 -dynamic" -wave_glitch_recording
run
exit

上面代码是tcl脚本里面的内容,主要是生成ida.db文件,用于indago打开调试波形,其他命令不去详细讲了,大家找个手册看看。这里面文件在makefile里面-input run.tcl即可。

makefile代码

SIM = xrun# default sim

FILE_LIST_PATH := ../filelist.f  ## file path
XRUN_TCL_PATH := ../run.tcl  ## xrun tcl patch

################
OPTION_XRUN := -64bit -sv -notimingcheck -access +rwc -accessreg +rwc -debug -uvmlinedebug -classlinedebug -plidebug -fsmdebug -uvmaccess -date -dumpstack -negdelay -timescale 1ns/100ps -lwdgen -f $(FILE_LIST_PATH) -input $(XRUN_TCL_PATH) -l xrun.log

OPTION_VCS := -f $(FILE_LIST_PATH) \
 -timescale=1ns/1ps \
 +define+DUMP \
 -fsdb -R -full64 +vc +v2k -sverilog -debug_acc+all \
 -debug_region+cell+encrypt \
 -P ${LD_LIBRARY_PATH}/novas.tab  ${LD_LIBRARY_PATH}/pli.a | tee  vcs.log  &

OPTION_Verdi := -f $(FILE_LIST_PATH) -ssf *.fsdb &
################

sim :
 @echo "Welcome!"
ifeq ($(SIM),xrun)
 @echo "SIM is $(SIM) and dubug support indago" 
 @cd ./xrun && rm -rf *
 @cd ./xrun && xrun $(OPTION_XRUN)
else
     ifeq ($(SIM),vcs)
 @echo "SIM is $(SIM) and dubug support verdi"
 @cd ./vcs && rm -rf *
 @cd ./vcs && vcs $(OPTION_VCS)
     else
 @echo "SIM is $(SIM) and it not support now"
     endif
endif

indago :
 @echo "Debug is indago"
 @cd ./xrun && indago
 @echo "Welcom indago !"

verdi :
 @echo "Debug is verdi"
 @cd ./vcs && verdi $(OPTION_Verdi)
 @echo "Welcom verdi !"

主要的代码就是上面的,主要给大家一个小的思路,有些特性需要自己根据需求去加,更深入的内容就不去展开讲了,这些命令手册都有,最好对应版本,有时候看看编译器的警告,它会教你有些特性可能不支持,或者有些命令会影响调试的某个方面。

示例

大家可以自己随便找个例子,按照上面的要求建立目录来测试一下makefile,或者自己打开makefile修改相关文件路径。

1、xrun仿真indago调试 进入sim文件夹,修改好filelist.f里面的文件路径,执行make sim等待仿真仿真完毕,执行make indago,等待打开即可,如下:

d2b5ca33bd174538

2、vcs仿真verdi调试 进入sim文件夹,修改好filelist.f里面的文件路径,执行make sim SIM=vcs等待仿真完毕,再执行make vedi即可打开波形文件调试了,如下:

d2b5ca33bd174552

总结

主要给不常写脚本的朋友做个引导,因为自己会写真的很方便,xrun我也就刚跑起来的水平,这2个软件各有特色,学习的话可以都试着用用,我建议大家多看手册,工具这种东西和理论不一样,基本一看就会。makefile和tcl脚本还是建议大家自己写,要不然遇到其他需求都不知道怎么办,也很难提高效率。

转载自网友 亦安的数字小站

请登录后发表评论

    没有回复内容