原创 学习Debussy,并与ModelSim交互体验

2012-12-6 10:43 1685 15 15 分类: FPGA/CPLD

 

一、概述


        初次接触Debussy,在网上搜索了一些资料,发现Debussy的使用者并不多,edacn的论坛Modelsim主论坛中有个Debussy的子论坛,不过发现里面的人气并不高。另外,Novas公司现在推的是Verti,我使用的版本是2004年出的5.4V5,基于NT(Windows)平台的。


         关于如何使用ModelSim进行仿真可以另外两篇关于ModelSim的文章,这里的体会是关于ModelSim结合Debussy使用的体会,所以使用Debussy前最好先学会如何使用ModelSim。网上也有介绍不要启动ModelSim GUI而直接在Debussy进行查看波形并调试的方法,本文最后也有介绍;如果确实不会使用ModelSim且又不愿学习的,可以使用此方法直接跳过ModelSim。


        二、使用Debussy调试基本步骤


       网上流传的使用Debussy来调试的通常用法是:


       1、Load design and testbench into Debussy;


       2、打开nWave,载入对应的FSDB;


       3、在nTrace中将要观察的信号通过鼠标中键Drag&Drop拖放到nWave中;


       4、通常都是在波形上发现问题,找到错误地方并双击鼠标,会自动跳到Real driver statement,也即会跳到源代码所在。


       5、nTrace中,Active Annotation(快捷键X)标出仿真结果在source code下;


       6、在先前driver statement中找个driver来使用active trace来追踪有效驱动。


        当然还有更深入的用法比如:fan-in cone和 trace-x等等。


         三、ModelSim结合Debussy进行仿真调试


         这才是我要介绍的重点,我近几年使用Altera多一点,所以就结合ModelSim仿真Altera的库进行介绍(详细的如何用Modelsim仿真Altera的产品可查看另外两篇文章)。Debussy支持的波形格式是fsdb,是Fast Signal Database的简写。Debussy也可以读取vcd文件,在它读入vcd文件时,先自动把vcd文件转换成fsdb文件,然后再读入debussy。因此首先还是学习怎么通过modelsim仿真,生成fsdb格式的波形文件。而对于语言最近使用多的是VHDL,下面分VHDL以及Verilog进行描述。


         基本的流程是:a、通过ModelSim生成FSDB格式的波形文件;b、在Debussy中导入设计进行调试(导入设计包括在nTrace中导入code(含testbench)和在nWave中导入FSDB文件)。


         1、首先介绍Verilog语言,基本是节选网上大拿的体会,大家凑合着看。


         a、通过ModelSim产生FSDB文件:将Debussy安装目录下的\share\PLI\modelsim_pli\WINNT中的novas.dll拷贝到modelsim安装目录下的win32文件夹中。然后在modelsim.ini文件中的[vsim]标签下添加Veriuser=novas.dll。这是准备工作。


          有网友介绍可以在ModelSim仿真脚本中的[vsim]命令行加入这样调用pli的选项:


         -pli  <Debussy安装目录>/share/PLI/modelsim_pli/WINNT/novas.dll


        个人感觉还是拷贝过去简单。


          b、准备工作做好以后,当然你的coding也已经结束,testbench也应该写好了。正常的ModelSim仿真流程是这时候直接在建立工程进行仿真,编辑sim.do和wave.do就可以了。如果结合Debussy,ModelSim的唯一功能就是产生Debussy可以识别的波形文件-FSDB文件了。


         在测试平台(testbench)中添加FSDB系统函数,典型的可以把下列语句加到testbench中:


 


        initial


        begin


$fsdbDumpfile("wave_test.fsdb");     //文件名随便起


      $fsdbDumpvars;


      end


      这样波形数据就dump出来了。好多同学在单步调试的时候经常遇到说生成的FSDB文件中Deussy中不能用或者是signal加进去以后没有波形出来表现为NF,而且FSDB的文件大小这时候也表现的很小。很多同学怀疑是不是ModelSim或者Debussy运行有错误,其实这都是测试平台控制不当造成的,此时FSDB文件应该还没有生成好。就像我们通常要将TB中的内容输出到一个文件的时候要先创建这个文件,写完以后要及时关闭一样,产生FSDB文件同样先要创建文件(上面语句达到了此目的),然后写入波形数据,因此在外部调用FSDB文件之前要结束ModelSim仿真。我最后介绍的通过命令行脚本实现流水线生成FSDB文件,且不启动ModelSim GUI,可以完全避免这种操作失误。


      2、其次介绍VHDL如何混合使用ModelSim和Debussy


      a、将Debussy安装目录下的\share\PLI\modelsim_fli54\WINNT中的novas_fli.dll拷贝到modelsim安装目录下的win32文件夹中。然后在modelsim.ini文件中的[vsim]标签下添加Veriuser=novas.dll。编辑modelsim根目录下的modelsim.ini文件,将; Veriuser = veriuser.sl 更换为Veriuser = novas_fli.dll(注:“; Veriuser = veriuser.sl ”默认值ini文件中被注释掉,或者可以不管它直接添加即可,注意这里和Verilog的不同,另外请注意:Do not specify veriuser variable to both novas.dll and novas_fli.dll.)


         b、将Debussy安装目录下的\share\PLI\modelsim_fli54\WINNT下的novas.vhd拷贝至工程所在目录,打开modelsim,在工程所在目录新建一个novas的LIB,然后编译novas.vhd文件。(对于这一步,我的做法是前期准备工作的时候就像提取Altera的库一样,将该库文件提取到ModelSim里,生成一个可以重复使用的novas库,这样就可以一劳永逸不要每个工程都要编译一次这个库)。


    c、同样coding以及测试台建立完成之后,开始生产FSDB文件了。在testbentch中增加library novas;use novas.pkg.all;并在在testbentch中添加:


      


debussy_debug:process


    begin      


            fsdbDumpfile("**.fsdb");


            fsdbDumpvars(0,"system");


            wait;


         end process debussy_debug;


fsdbdumpfile("t1.fsdb");--此处的文件名可以随便取。


编译工程完成仿真,生成所需文件。


(注:此处system为顶层文件,所谓顶层就是testbench的顶层entity名,不能搞错)


这里有最原始的版本的ModelSim和Debussy混合使用的介绍:https://static.assets-stash.eet-china.com/album/old-resources/2009/5/20/91e75229-44d8-4b7e-beeb-fce36ecc5307.rar。


 


三、通过脚本自动化生成FSDB波形文件


通过二介绍的过程,进行自动化生成FSDB文件,其实非常简单。整个coding结束,且测试台建立完成后,创建一个do文件,这里给出一个例子:https://static.assets-stash.eet-china.com/album/old-resources/2009/5/20/7647ab65-9ae9-4cf5-b158-881788170cb3.rar  ;可以看到例子中没有库的编译,因为我前面说了,我把库的提取单独做为准备工作一劳永逸的完成。


有了do文件以后,就需要执行do文件,ModelSim有dos命令行或者GUI里有命令行可以执行do文件。本文的主要目的就是要完成“自动化”,所以以上两种方法都不可行,一个使用调出dos comand shell一个是要打开ModelSim GUI。我的做法是:做一个批处理文件,然后将它放在c盘的根目录下,然后执行一下批处理就全部OK了。这里给出一个批处理文件例子:https://static.assets-stash.eet-china.com/album/old-resources/2009/5/20/aeb9def1-fa9b-498a-b516-163fac8e3fef.rar。


   do文件贴出来就是:


   vlib work
         vcom Accumulator_tb.vhd
         vcom Accumulator.vhd
         vsim Accumulator_tb
        run 1000us
        quit


说明:最后一句quit就是仿真结束。
        批处理bat文件贴出就是:


e:
      cd E:\wmz\workspace\prj\debussy\pet\DataInProc\accumulator
      D:\modeltech_6.5a\win32/vsim -c -do accumulator.do


说明:整个批处理就3个命令,第一条进入E盘(当然是进入工作盘了);第二条是进入当前工作目录;第三条是执行do文件,其中vsim命令一定要带-c参数,具体原因感兴趣的同学可以在打开ModelSim GUI后执行vsim -help查看帮助。

文章评论0条评论)

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