原创 关于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
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /3 下一条