fsdb display
Debussy本身不含模拟器(simulator),必须呼叫外部模拟器(如Verilog-XL or ModelSim)产生FSDB file,其显示波形的单元"nWave"透过读取FSDB file,才能显示波形或讯号值的变化。
FSDB文件产生
ModelSim本身也是一个可以提供调试功能的平台,但是相比之下,Debussy的调试功能更加强大。比如一个很有用的功能:如果我预先只想看设计中的10个信号,但是我可能在debug时发现又想看另外5个信号,在modelSim中,通常需要再加信号到波形中,然后重新跑仿真。而如果使用Debussy的fsdb文件则可以把设计中的全部信号或者指定层次之上的全部信号都dump出来,debug时想看哪个就看哪个,不用重新运行仿真。
因此,通常可以考虑使用ModelSim仿真,而使用Debussy来进行调试。这里的调试主要是指观测波形,进行bug原因分析,而不是广义的调试。广义的调试应该包括仿真本身。Debussy不支持仿真功能。
Debussy支持的波形格式是fsdb,是Fast Signal Database的简写。Debussy也可以读取vcd文件,在它读入vcd文件时,先自动把vcd文件转换成fsdb文件,然后在读入debussy。同vcd相比,fsdb文件小很多。而fsdb可以采用Modelsim软件进行产生。
要在ModelSim中仿真时直接生成fsdb文件,当然首先必须安装ModelSim和debussy。然后需要做两件事情:
-
是在ModelSim仿真的脚本中,需要添加一些命令来使得ModelSim能够调用debussy的一些命令。
软件平台为modelsim SE 6.2b 和debussy 5.4V9
【1】首先将debussy安装目录下的F:DebussysharePLImodelsim_pli54下的 Novas.dll文件复制到modelsim安装目录下的win32下 ;
【2】更改modelsim的配置文件modelsim.ini(该文件一般情况下是只读模式需要改为读写,在属性里面进行设置),然后找到:
Veriuser =veriuser.s1
将其改为:
Veriuser = F:DebussysharePLImodelsim_pli54/WINNT/novas.dll
注意modelsim中的目录层次为 /
【3】新建环境变量 PLIOBJS
PLIOBJS = F:DebussysharePLImodelsim_pli54WINNT ovas.dll
2、需要在testbench中添加产生fsdb的一些系统函数。当然这些系统函数不是ModelSim自带的,而是debussy的系统函数。所以第一步就是让modelSim也可以使用这些系统函数。
如何在modelsim里面产生.fsdb文件呢?可以在testbench文件里面输入如下代码:
initial begin $fsdbDumpfile("Debussy.fsdb");//文件名称可以自行设定 $fsdbDumpvars; end |
关于怎么使用Modelsim这里就不多说了,这里需要跑完整个仿真流程,然后产生fsdb文件,并将波形数据保存到fsdb文件中,这里需要注意:如果没有关闭modelsim仿真是不能直接在debussy调入fsdb文件的,不然就没有显示,如下图所示:
在modelSim外部要调用fsdb文件前,要先在modelSim中结束仿真。如果不结束仿真,可以看到,在fsdb文件生成的同时,还会有如下相关文件生成,且前3个文件大小都为0。
wave_test.fsdb.chain
wave_test.fsdb.lock
wave_test.fsdb.slist
wave_test.fsdb.tlist
可以使用以下两种方式中的一种:
1、在ModelSim的Transcript窗口输入Quit –sim或者写在脚本中。
2、在tb中使用系统函数$finish()来结束仿真,并且在ModelSim提示是否finish仿真时,点击yes,这样会关闭ModelSim,同样可以结束fsdb文件的写操作和关闭操作。
注意:在仿真tb中使用$stop()系统函数,或者使用$finish()但是在ModelSim提示是否finish仿真时点击no,这两种情况下都不会结束对fsdb文件的操作。
通过Modelsim软件产生的Debussy.fsdb文件如下图所示:
FSDB波形文件导入
nWave是用来查看信号波形的,所以使用nWave的前提就是你已经生成了格式为fsdb的波形文件(前面已经讲过,在ModelSim仿真时产生)。Debussy默认的界面是nTrace,我们在nTrace界面下,单击下图红色方框里的图标,即New Waveform。
出现以下窗口,点击打开文件
出现以下fsdb文件选择窗口,选择用modelsim产生的fsdb文件
完成文件导入之后接着需要导入信号,点击signal,选择get signals;
接着弹出如下图所示的窗口,根据下图提示进行选择需要查看波形的信号;
点击"OK"之后就出现在Modelsim产生的波形。
nWave工具的使用
有几个操作知识点:
1、改变信号位置,可以通过按住鼠标中键(即滚轮)进行移动。
2、如果想改变某个信号的颜色显示,可以在左边选中该信号,然后在菜单栏中WaveForm-> Color/Pattern进行选择。
3、右边波形窗口中有两条线,分别是黄线代表光标时间线(鼠标左键来点击),白色代表标记时间线(鼠标右键来点击),两者的数值在工具栏中有显示,并给出了两者之间的时间差。可以通过单击鼠标中建放大两者之间的显示,即铺满波形窗口。
4、状态机波形显示的数值,不够直观,怎么能显示定义的参数名字呢?软件还是提供了这功能的。切换到nTrace窗口,执行Tools –> Extract Interactive FSM,弹出如下窗口,选中all stages就可以显示状态机定义的名字了。
nTrace和nWave的交互使用
Debussy的强大更在于各个功能窗口之间的交互。
-
最实用的是我们可以在nTrace的源代码中想查看某个信号的波形,我们可以选中后按住鼠标中键别松开,直接拖到nWave进行显示,非常方便。
-
在调试波形过程中发现错误,我们可以双击鼠标左键,软件会自动定位到源代码中的位置,便于我们调试。
-
在nTrace中,执行Source –> Active Annotation可以标出仿真结果在source code下方,非常利于我们调试。在波形中选择一个时间点,那么在代码下方显示的就是这个信号在此时间点的值或者趋势。
-
此外,还打开了参数注释,执行Source –> Parameter annotation,在状态机参数下方显示定义的数值。
5.在nTrace中,选中某个信号,如时钟信号clk_50M,选择下图红色矩形框中的箭头,可以实现在波形中前后移动。