原创
关于fsdb
2009-8-11 21:46
8839
11
11
分类:
工程师职场
fsdbDumplimit - 限制FSDB文件size -- $fsdbDumpvars([<level>], <scope | signal>*)
fsdbDumpfile - 指定FSDB文件名 -- $fsdbDumpfile(“<FSDB name>”)
fsdbDumpvars - Dump指定的变量 -- fsdbDumpSingle - Dump指定的信号
fsdbDumpvariable - Dump指定的VHDL变量
fsdbSwitchDumpFile - 将dumping切换到另一个FSDB文件 -- $fsdbSwitchDumpFile(“<new FSDB name>”)
fsdbAutoSwitchDumpfile - 限制文件大小并在数据量过大时自动创建新的FSDB文件 -- $fsdbAutoSwitchDumpfile(<file size>, “<FSDB name>”,< number of file>)
fsdbDumpflush - Force to Dump Result to FSDB file
fsdbDumpMem - Dump 指定的memory的内容 -- $fsdbDumpMem(<reg name>, [<start addr>, [<size>]])
$fsdbDumpon - 打开 FSDB dumping
$fsdbDumpoff - 关闭 FSDB dumping |
1: initial
2: begin
3: $fsdbDumpfile("wave_out.fsdb");
4: $fsdbDumpvars;
5: end
这样,在仿真时就会在script目录生成wave_out.fsdb波形文件。
如果波形文件比较大的话,打开时会占用很多内存,这时可以把波形文件分段输出,调试时只要载入指定时间段的波形文件就可以了,将第三行语句替换为如下语句:
1: $fsdbAutoSwitchDumpfile(25, "test.fsdb", 150);
这条语句表示将fsdb文件分成每个大小为25MB的文件,最多输出150个文件。每个文件的仿真时间范围记录在test.log文件中。
首先工作环境是linux,所有的命令都是用makefile来联系在一起的。
举个简单的例子,
如果需要运行一个vcs 命令 并带一些命令行参数。公司的做法如下。
在某个固定的地方创建一个vcs.makefile 作为通用的makefile,所有人需要用到vcs的,那么在自己项目的makefile中 include 这个vcs.makefile.
vcs.makefile
VCS_EXE = $(VCS_HOME)/bin/vcs
$(VCS_EXE) ${VCS_FLAGS} \
-l $(vcs_logfile $@) +libverbose \
-LDFLAGS "${VCS_LDFLAGS} ${VCS_LIB_PATHS} -g"
………………
拿其中的VCS_FLAGA来详细说明:
VCS_FLAGS += +define+NO_DUMPS
VCS_FLAGS += -Mupdate -Mmakep="gmake"
VCS_FLAGS += -cc $(GCC_PATH)/bin/gcc -cpp $(GCC_PATH)/bin/g++ -ld $(GCC_PATH)/bin/g++
VCS_FLAGS += $(VCS_VERSION_ARGS)
VCS_FLAGS += ${VCS_EXTRA_ARGS}
VCS_FLAGS += +define+NO_FSDB=1
这个common的 vcs.makefile可以被任意项目调用,我们自己锁需要做的事情就是创建一个自己模块的module_name.makefile 在其中include这个vcs.makefile, 然后将需要的参数传递给vcs.makefile
我们一般利用${VCS_EXTRA_ARGS} 变量,将我们需要为项目专门添加和修改的参数传递
比如,在自己模块的module_name.makefile中:
# vcs argument
VCS_EXTRA_ARGS += +notimingcheck +nospecify +udpsched +vcsevalorder $(STANDSIM_DIR)/dini_sodimm/glbl.v
VCS_EXTRA_ARGS += +define+M512+S667+X8 $(STANDSIM_DIR)/dini_sodimm/ddr2_vcs.vp
VCS_EXTRA_ARGS += +dump_multi_fsdb
VCS_EXTRA_ARGS += +dmp_siloti +dmp_top=0
这样我们就添加额外的vcs command line argument。
以后需要跑vcs的时候,只需要敲一下make就可以。
vcs.makefile把大部分需要设定的参数都会设置好,并有初始值。可以允许我们在各自模块的makefile中覆盖,用以执行自己special的情况。当然大部分参数都会用设置好的值,在运行之前,我们甚至多数时候都不知道自己用了哪些vcs的参数,只有test跑完,看logfile的时候,才会发现原来vcs.makefile把我们加了一大堆的参数,包括vcs的版本、路径、项目默认需要包含的很多头文件、使用v2k、使用-ssy -ssv、等等,可能有30~40个默认的参数会被添加。
如果需要使用siloti,那么我们只需要项目文件夹下执行 make siloti,那么和siloti有关的所有参数vcs.makefile都会帮我们自动配置好。 出来的波形都是经过siloti的。
initial begin
$timeformat(...);
$fsdbAutoSwitchDumpfile(...);
$fsdbDumpvars(...);
// 条件表达式1
$fsdbDumpoff;
// 条件表达式2
$fsdbDumpon;
end
文章评论(0条评论)
登录后参与讨论