dump fsdb波形文件

本文介绍了如何在Verilog仿真中使用UCLI/TCL命令行进行dumpfsdb操作,包括设置脚本编译和仿真命令,以及在TB中直接调用系统函数的方法。重点讲解了交互式控制dumpfsdb的灵活性和在不同场景下的应用。
摘要由CSDN通过智能技术生成

前言

dump fsdb文件主要有两种方法:

  • 在Verilog的TB中调用系统函数;
  • 使用 ucli / tcl的命令行;

一、ucli / tcl命令行

有的时候我们不想对TB进行改动,也不想重新编译仿真顶层来修改fsdb信息,可以直接修改脚本完成对dump fsdb的控制,这时使用UCLI命令行来dump fsdb的优势就很明显了。使用这种交互式的接口,控制更加灵活,仿真过程中可以修改dump信息。

1.编译

首先在VCS编译脚本上,如下:

export  file_name = top_tb

NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/     # 这是我电脑上Verdi的目录
NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \    # 这部分基本是固定的
${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a  \
	
vcomp:
	vcs -full64-debug_pp -LDCLASS -rdynamic -P ${NOVAS_ARGS} \
	-f complie.f \
	-l compile.log

解释一下上面的命令:

  • debug/debug_pp/debug_all ,使能ucli命令。
  • -LDFLAGS ,传递参数给VCS的linker,与后面的-rdynamic和-P配合使用
  • -rdynamic,指定需要加载的动态库
  • -P ${NOVAS_ARGS},指定需要加载的表格文件(.tab)和静态库(.a)
  • export file_name = tb.v ,是为了向后面脚本中传递变量而使用的。Makefile中当一个变量使用 export 进行声明后,变量和它的值将被加入到当前工作的环境变量中。

2.仿真

相应地仿真时的脚本文件,如下:

sim:
	./simv  \
	-ucli -i dump_fsdb.tcl	\
	+fsdb+autoflush 	\
	-l sim.log

verdi:	
	verdi -nologo -sv -f complie.f -ssf *.fsdb
	
clean:
	rm -rf *.csrc *.daidir *simv* ucli* *.vpd *.fsdb *novas* *.log 

解释上面的命令:

  • simv 是 VCS编译Verilog后生成的二进制可执行文件,./simv执行这个文件,进行仿真;
  • -ucli 是启动UCLI命令行模式,-i 吃进去 tcl 脚本文件;
  • +fsdb+autofulsh,一边仿真,一边dump 波形;

dump_fsdb.tcl的脚本如下:

global env
fsdbDumpfile "$env(file_name).fsdb"
fsdbDumpvars 0  "top_tb"
run 100ns
#-----仿真中交互式控制-------
#fsdbDumpoff
#fsdbDumpon
#run

解释上面的tcl脚本:

  • TCL脚本引用环境变量;
  • 设置波形文件名称,名称受 $env(file_name)控制;注:这个file_name 是从仿真的 Makefile文件中,通过 export file_name = top_tb
  • fsdbDumpvars(0) 表示会 dump 所有层次的信息;注:0代表dump所有层次,非0代表dump的最高层次;
  • 设置完dump 信息,启动仿真。此时仿真器受UCLI命令行控制;

二、调用系统函数

在TB里面直接调用系统函数,操作是比较简单,但是受限也比较明显。

1.tb中调用系统函数

可以直接在TB中加入这样一段Verilog代码,

initial begin
	if($test$plusargs("DUMP_FSDB")) begin #仿真时添加条件判断是否需要dump fsdb 
		$fsdbDumpfile("TEST.fsdb");  #生成fsdb波形文件,波形名字TEST.fsdb	
		$fsdbDumpvars(0,top_tb); #参数含义: 0 代表dump 所有层次;1 代表dump top_tb这个层次;
	end
end

注:Verilog还有其他的有关dump fsdb的系统函数,可以直接Google。

2.编译仿真

相应地编译仿真时脚本,如下:

NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/     # 这是我电脑上Verdi的目录
NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \    # 这部分基本是固定的
${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a  \
	
vcomp:
	vcs -full64-debug_pp -LDCLASS -rdynamic -P ${NOVAS_ARGS} \
	-f complie.f \
	-l compile.log

sim:
	./simv  \
	+fsdb+autoflush 	\
	-l sim.log
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小verifier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值