ModelSim本身也是一个可以提供调试功能的平台,但是相比之下,Debussy的调试功能更加强大。比如一个很有用的功能:如果我预先只想看设计中的10个信号,但是我可能在debug时发现又想看另外5个信号,在modelSim中,通常需要再加信号到波形中,然后重新跑<A style="LINE-HEIGHT: 25px; COLOR: rgb(24,154,15); TEXT-DECORATION: none" href="http://blog.163.com/cryinrain_cug/blog/static/72021485200832005024616/;" target=_self ?%b7%c2%d5%e6?);?="">仿真。而如果使用debussy的fsdb文件则可以把设计中的全部信号或者指定层次之上的全部信号都dump出来,debug时想看哪个就看哪个,不用重新运行仿真。
因此,通常可以考虑使用ModelSim仿真,而使用debussy来进行调试。这里的调试主要是指观测波形,进行bug原因分析,而不是广义的调试。广义的调试应该包括仿真本身。Debussy不支持仿真功能。
Debussy支持的波形格式是fsdb,是Fast Signal Database的简写。Debussy也可以读取vcd文件,在它读入vcd文件时,先自动把vcd文件转换成fsdb文件,然后在读入debussy。
同vcd相比,fsdb文件小很多。
这是debussy帮助文件中的说明,更详细的说明可以参考debussy帮助文件:
Debussy supports a new and open FSDB file format that has the following advantages over the standard VCD file format:
l An FSDB file is much more compact than the standard VCD file. Typically, an FSDB file is about 5 to 50 times smaller than a VCD file.
l The simulation run time for an FSDB file is faster than that for a VCD file. With FSDB files, Debussy displays waveform. and back-annotated signal values faster.
Debussy provides several PLI routines that allow you to dump an FSDB file instead of a VCD file directly during a simulation. For existing VCD files, Debussy provides the conversion utility vfast, which is used to convert VCD files to FSDB files. In addition, Debussy converts VCD files to FSDB files automatically when you open a VCD file using the nTrace pull-down menu command File->Load Simulation Result or nWave File->Open. Debussy also provides another conversion utility, fsdb2vcd, which converts FSDB files back to VCD files.
要在ModelSim中仿真时直接生成fsdb文件,当然首先必须安装ModelSim和debussy。
然后需要做两件事情:
1, 是在ModelSim仿真的脚本中,需要添加一些命令来使得ModelSim能够调用debussy的一些命令。当然这些命令对于VHDL和verilog又有不同,本文只针对verilog设计。VHDL的设计如何做,在debussy的帮助文件中有说明,并且网上也已经有了很多帖子说明这个问题。
2, 是需要在testbench中添加产生fsdb的一些系统函数。当然这些系统函数不是ModelSim自带的,而是debussy的系统函数。所以第一步就是让modelSim也可以使用这些系统函数。相关的命令可以参考下面章节。当然也可以在脚本中进行相关操作,具体操作参考debussy帮助文件。
第1步的操作如下:
假设modelSim安装根目录为<mds>, Debussy的安装根目录为<dbs>,那么需要在modelSim的仿真脚本中的vsim命令行加入这样调用PLI的选项:
-pli <dbs>/ share/PLI/modelsim_pli/WINNT/novas.dll
或者可以在<dbs>\ share\PLI\modelsim_pli\WINNT目录把novas.dll拷贝到ModelSim的win32目录,然后使用–pli <mds>/win32/novas.dll
注意ModelSim的目录层次是使用前先斜杠“/”而不是Windows系统的后向斜杠“\”。
第2步在测试平台添加fsdb系统函数,典型的可以把如下语句加到测试平台中:
initial
begin
$fsdbDumpfile("wave_test.fsdb");
$fsdbDumpvars;
end
很多网上的帖子说,生成fsdb文件后,如果不关闭modelSim,就用debussy打开fsdb文件,会提示错误,而导致不能打开fsdb文件;或者打开文件后,信号也能导入,但是全部信号都显示NF,也就是没有波形出来。并由此认为这是debussy或者modelSim的问题。其实这是因为在测试平台控制不当,fsdb文件还没有生成好。就像我们通常在tb中要把内容输出到文件要先新建一个文件,写完后要及时关闭文件一样,在modelSim生成fsdb文件时,也是先新建fsdb文件,然后写入波形数据。因此在modelSim外部要调用fsdb文件前,要先在modelSim中结束仿真。如果不结束仿真,可以看到,在fsdb文件生成的同时,还会有如下相关文件生成:
wave_test.fsdb.chain
wave_test.fsdb.lock
wave_test.fsdb.slist
wave_test.fsdb.tlist
且前3个文件大小都为0。
可以使用:
1,在ModelSim的Transcript窗口输入Quit –sim;或者写在脚本中。
2,在tb中使用系统函数$finish()来结束仿真,并且在ModelSim提示是否finish仿真时,点击yes,这样会关闭ModelSim,同样可以结束fsdb文件的写操作和关闭操作。
注意:在仿真tb中使用$stop()系统函数,或者使用$finish()但是在ModelSim提示是否finish仿真时点击no,这两种情况下都不会结束对fsdb文件的操作。
文章评论(0条评论)
登录后参与讨论