#VERDI# 关于调用$fsdb*系统函数却无法产生波形原因分析
前段时间,自己随便搞个小例子,进行SV 语言学习的时候,遇到一个问题,现总结如下。
在代码中添加如下的波形加载系统函数,用于仿真结束之后,进行波形review.。

Makefile 编写如下:
all : clean vcs run
#-------------------------------------------------------------------------------------------------------
comp : clean vcs
#-------------------------------------------------------------------------------------------------------
vcs :vcs \-f filelist.f \-timescale=1ns/1ps \-diag timescale \+incdir+/home/uvm-1.1d/+./test/+./env/+./interface/ \-ntb_opts uvm-1.1 \+fsdb+force \+vcs+initreg+random \-kdb -lca -full64 +vc +v2k -sverilog -debug_all +apllylearn+pli_learn.tab \-a vcs_run.log \| tee vcs_all.log
#-------------------------------------------------------------------------------------------------------
run :./simv
#-------------------------------------------------------------------------------------------------------
verdi :verdi -f filelist.f -ssf top_tb.fsdb &
#-------------------------------------------------------------------------------------------------------
clean :rm -rf *~ core csrc simv* AN.DB *.sw* stack* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdiLog 64* DVEfiles *.vpd
#-------------------------------------------------------------------------------------------------------
filelist :find -name "*.v" > filelist.f
然后,运行编译命令,遇到如下编译失败error:

奇怪哎,怎么系统函数找不到呢,系统函数我们不是随便使用么?。。。。。
【尝试1】此时,尝试将 -debug_all 改成 -debug , 发现同样error:

【尝试2】继续尝试,将选项-debug 改成 -debug_pp, 发现报错依旧是那样。

【尝试3】此时,尝试将-debug_pp 改写成 -debug_access(或者-debug_acc),均成功加载fsdb 波形。

此外,对于任何 -debug_access* 选项,该方式均取得成功。
哎,此时完全糊涂了,到底为甚么呢? 为什么刚开始的 -debug 或者 -debug_all 或者-debug_pp 法力不够呢?那么如果执意选择此三个编译选项,该如何解决问题呢?
经查阅资料发现,我们虽然调用了系统函数$fsdbDump* ,并将其添加到了 验证环境代码中,但是却没有添加具体的tab 文件和 静态库文件,VCS 编译器是找不到的,所以报错。
那么,将下面两句添加到 Makefile 中 编译选项中:
-P
${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab:加载表格文件
${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a:加载静态库

另外,据试验,完全可以 用 “-fsdb ” 代替上面复杂冗长的编译选项。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
