Debussy学习笔记(一)(转载)
学习FPGA以来,一直是用Modelsim作为仿真调试工具,前几天在同事那儿看到了一个新工具:Debussy,看她用的相当顺手,而且工具本身也相当好用,有很多Modelsim不具有的功能,然后就立马上网下载了Debussy软件和相关教程学习了一下,从本文开始软件的学习笔记。
Debussy 是NOVAS Software, Inc(思源科技)开发的HDL Debug & Analysis tool,这套软体主要不是用来跑模拟或看波形,它本身不具有仿真功能,需要调用Modelsim等仿真软件生成的仿真结果文件来观测波形,但是它可以预存设计中所有信号的仿真波形,仿真需要新调入信号进行观测时,可以即时调入而无需重新跑仿真;Debussy另一个最强大的功能是:能够在HDL source code、schematic diagram、waveform、state bubble diagram之间,即时做trace,协助工程师debug;可能您会觉的:只要有simulator如ModelSim就可以做debug了,我何必再学这套软体呢? 其实Debussy v5.0以后的新版本,还提供了nLint -- check coding style & synthesizable,这蛮有用的,可以协助工程师了解如何写好coding style,并养成习惯。 首先来学习一下Debussy的软件使用,如图1所示为Debussy的基本原理架构,其中主要由4部分组成:nSchema、nTrace、nWave和nState。
图1 nTrace:超文本源代码分析和浏览工具,是Debussy 软件所开启的主画面;nWave:波形分析观测工具,可由nTrace内开启;nSchema:层次原理图生成器;nState:有限状态机提取和分析工具。 上文中提到,Debussy软件一大功能就是波形的预存观测功能。由于Debussy自身不具有仿真功能,需要由Modelsim等仿真软件生成fsdb(fast signal database)文件,是Spring Soft (Novas)公司 Debussy / Verdi 支持的波形文件,一般较小,使用较为广泛,其余仿真工具如ncsim,modlesim等等可以通过加载Verdi 的PLI (一般位于安装目录下的share/pli 目录下) 而直接dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。下面介绍一下利用Modelsim生成fsdb文件的方法,Verilog HDL和VHDL方法有些不同,因此分别说明:
A. Verilog HDL方法 1. 修改Modelsim安装根目录下modelsim.ini文件,去除只读保护后,加入一条语句:Veriuser=/Debussy/share/PLI/modelsim_pli/WINNT/novas.dll 2. 在Testbench中加入以下代码: initial begin $fsdbDumpfile("wave_test.fsdb"); $fsdbDumpvars; end 3. 在Modelsim中建立工程,编译所有*.v文件,调用仿真命令:vsim –pli novas.dll work.**_tb,仿真一段时间后退出仿真。然后可以在新建工程根目录下发现多出了一个wave_test.fsdb文件。 B. VHDL方法 1. 从DebussysharePLImodelsim_fli54WINNT中找到novas.vhd文件和novas_fli.dll文件,novas_fli.dll文件拷贝到modelsim安装根目录的win32文件夹下,并且修改modelsim.ini文件,去除只读保护后,加入一条语句:Veriuser=novas_fli.dll; 2. 在Modelsim中建立工程,将第1步中的novas.vhd文件拷贝到新建的modelsim工程根目录下,在Transcript中运行以下脚本命令: vlib novas vmap novas novas vcom –work novas ./novas.vhd 3. 在VHDL Testbench中加入语句: library novas;use novas.pkg.all; process begin fsdbDumpfile("wave_vhd.fsdb"); fsdbDumpvars(0,"div_tb"); --0表示dump的模块层,“div_tb”表示第0层模块名 wait; end process; 4. 编译所有*.v文件,调用仿真命令:vsim work.**_tb,仿真一段时间后退出仿真。然后可以在新建工程根目录下发现多出了一个wave_vhd.fsdb文件。
注:在VHDL方法中遇到了些问题,在执行vsim命令时出现以下错误警告: # Loading D:modeltech_6.6fwin32/./novas_fli.dll # ** Warning: (vsim-FLI-3159) Failed to find foreign function 'fliparseVariableInFile' in FLI object file "D:modeltech_6.6fwin32/./novas_fli.dll". # Region: / # ** Fatal: (vsim-3274) Null foreign subprogram pointer (19). 在网上搜索了也没有什么好的解决方法,生成方法也没有什么问题。只能自己试着解决一下问题了。看错误是因为fliparseVariableInFile没有在novas_fli.dll中找到,这个函数在Testbench中也没有使用,但是在novas.vhd中确实有这个名为“fliparseVariableInFile” 的procedure说明,在novas_fli.dll没找到会不会是因为novas.vhd文件和novas_fli.dll文件不匹配造成的。定位了问题,就修改了一下novas.vhd文件,将有关fliparseVariableInFile的说明都注释掉了,然后重新编译了novas库,运行vsim就好使了,run后成功生成了fsdb文件。
fsdb生成后,就可以通过Debussy软件中的nWave导入: 1. 首先打开Debussy软件,启动界面是nTrace,通过Tools->New Waveform新建一个nWave窗口,如图2所示;
图2 2. 在nWave中打开**.fsdb文件,如图3所示;
图3 3. 通过Get Signals按钮选取需要观测的信号,如图4所示为在nWave中显示的波形。
图4
|