您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)
1ModelSim学习笔记(三)用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)黄俊April20072以前用的是LATTICE的,ispLEVER有自带了一个OEM版的ModelSim。要仿真时,不需要添加库,用起来比较方便,自己有点懒,所以就一直凑合着用。现在转向用ALTERA了,ALTERA也有OEM版的ModelSim,也不用添加库。后来听说ModelSimSE的功能更强大,速度更快,所以就决定把ModelSimSE好好摸索一下,再多学习一点关于TestBench技巧方面的知识。我的学习资料主要是ModelSimSE自带的教程、ALTERA提供的资料以及edacn上面ModelSim专栏由网友们上传的资料。因为是初学,加上看到英文资料一大堆,烦都烦死,而有些中文文档可能是有些步骤没有讲清楚,我实际按照文档上面说的一步一步做下来也老是完成不了,花了不少时间。我于是就想自己摸清楚后,把步骤截图下来,整理清楚,做成笔记。一方面加深自己的认识,另一方面对初学者也许会有些许用处。我近期计划陆续整理出以下几个方面的学习笔记:初学ModelSimSE时被迷糊了几天的若干概念在ModelSimSE中添加ALTERA仿真库的详细步骤用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)ModelSimSE中常用到的几个命令及DO文件的学习笔记近来学到的几招TestBench的技巧MSN:paulhuang_sz@hotmail.comE-mail:huangjun5927@163.comBlog:用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)软件准备(1)QuartusII,本文截图是QuartusII6.1界面的。我个人认为,如果是开发StratixII或CycloneII或MAXII,用QuartusII6.0+SP1+SP2比较稳定。(2)ModelSimSE.ALTERA仿真库要已经装好,安装仿真库的笔记已记录于《在ModelSimSE中添加ALTERA仿真库的详细步骤》中。我电脑上装的是ModelSimSE6.1b。例子程序的制作先在QuartusII里生成一个例子程序,以方便介绍三种仿真的方法。步骤如下:1、新建一个工程(Project),工程名取lpm_shift,器件选CycloneIIEP2C8Q208C,第三方的工具暂时都不选。2、菜单栏上ToolsMegaWizardPlug-InManager,点Next,在storage中选LPM_SHIFTREG,输出文件格式根据习惯选一种语言,在这里以Verilog的为例,在右边的outputfile名字中加上lpm_shift。点Next。43、这个例子是做一个移位寄存器,调用lpm库,和cycloneII元件库,也正好可以作为对前面建好的ALTERA库的一个验证。点可以查到该模块的使用说明和详细介绍。移位寄存器比较简单,就不用细看了。如下图设置.点Next.54、加上一个异步清零端,点Next,再点Next,最后点Finish.5、回到QuartusII主界面,点File选项卡,在DeviceDesignFile上面点右键,选择Add/RemoveFilesinProject…,66、点图标,选中生成的lpm_shift,点打开再点Add都加到项目中去。7、在这里直接把lpm_shift.v当成顶层文件,就不需要再例化它了。8、下面写一个简单的TestBench.a)QuartusII工具栏上点图标,选VerilogHDL;7b)点,设文件名为top_tb;c)如下所述写一个简单的TestBench.(例子见附件)开始仿真ModelSim仿真有很多种流程,下面我采用个人感觉比较好一个流程进行仿真验证:基于工程(Project)的流程Step1 新建一个工程Step2 添加文件到工程中去Step3 编译设计文件Step4 启动仿真器,指定顶层设计单元Step5 查看和调试结果对ALTERA的设计有三个阶段的仿真。一是纯粹的功能仿真;二是综合后的功能仿真;三是布局布线后的时序仿真。下面就分别进行介绍。纯粹的功能仿真1、新建一个工程a)打开ModelSimSE;b)新建工程,FileNewLibrary…:8c)输入工程名,指定工程保存路径。为了可以分别清楚地对三种仿真进行验证,我建立了三个文件夹,func、Psyth、PAR分别来当功能仿真,综合后功能仿真以及布局布线后时序仿真的工程保存文件夹。在这些文件夹内,我又建立了source文件夹,专门用来存放输入文件。将前面建立的lpm_shift.v(HDL源文件)和top_tb.v(Testbench文件)拷贝至func/source里面。将top_tb.v拷贝至Psyth、PAR里的source文件夹内。在这里先点Browse…,将工程的保存路径指定到func文件夹内。d)点AddExistingFile,添加输入文件。9e)在Project的空白处,点右键也可以再添加存在的文件的方式添加输入文件。2、添加文件到工程中去进行功能仿真需要的输入文件:HDL文件;TestBench文件;仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定);点AddExistingFile添加lpm_shift.v(HDL源文件),top_tb.v(Testbench文件);再到QuartusII安装目录下..\altera\61\quartus\eda\sim_lib里面找到仿真原型文件220model.v;用Referencefromcurrentlocation是链接的方式指定这些输入文件,copy10toprojectdirectory是把输入文件复制到当前工程目录下。建议还是用Referenceformcurrentlocation。3、编译设计文件;选中一个文件,点右键,选择CompileCompileAll;4、启动仿真器,指定顶层设计单元;a)进SimulateStartSimulation…b)展开Work库,指定Testbench,点OK开始仿真;11注:以上是直接添加了仿真原型文件的。如果已经预编译了库文件,就不需要这么麻烦,直接在仿真的时候指定就行了。5、查看和调试结果a)将Wave窗口打开,查看仿真波形:12b)将需要查看的信号拖入波形窗口,可以用Ctrl或Shift键多选。c)运行。在下面的命令行中输入运行的时间,回车。d)查看结果:点图标,最大化波形窗口。13e)功能仿真的特点。点图标,在波形窗口下,按住左键不放,向右下斜拉可以选择一个放大的区域:f)放大后可以看到,完全是没有延时的。这就是纯粹的功能仿真。146、ModelSim的其它使用技巧不在本文讨论范围之内,在这里就不介绍了。在这里只是列出几个常用按钮的作用。a),,,,,,,,这几个都是非常常见的图标了,分别是新建新的源文件,打开文件对话框,保存,打印,剪切,复制,贴粘,撤消最后一步操作,在当前窗口查找文本。在这里和下文提到的当前窗口,均可靠点击某窗口的任何位置选择。当前窗口听标题栏会以亮的蓝色显示。b),编译,打开文件对话框,选择HDL源文件,把该源文件编译到当前工程的工作库中。c),全编译。编译当前工程中的所有文件。d),仿真。e),停止仿真。f),回到上一层。g),重新仿真。装载设计,并将仿真复位到零,重新仿真。h),设定单步仿真步长。i),运行当前仿真。在该仿真时间长度内进行仿真。j),继续仿真,直到仿真结束,或用户停止仿真。k),运行所有仿真,直到仿真结束或用户停止仿真。l),添加一条坐标轴。m),删除一条坐标轴。15综合后功能仿真1、新建一个工程方法前面讲过了,这次将路径保存到…/modelsim/Psyth里。2、添加文件到工程中去进行综合后功能仿真需要的输入文件:在QuartusII里面生成的网表文件;TestBench文件;仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定)。在QuartusII里面生成网表文件的方法:a)点工具栏上的图标,选EDAToolSetting,双击Simulation。b)设置ModelSim,输出网表的格式,以及网表文件保存的路径。16c)点,将Generatenetlistforfunctionalsimulationonly设置为ON。d)点OK,保存。点工具栏上的图标,进行全编译。17e)检查一下…/modelsim/Psyth/source里面,可以发现,已经生成了一个*.vo文件。这个就是需要的网表文件。(VHDL的输出网表是*.vho后缀名的)f)在这里,TestBench文件就继续用前面功能仿真里用的top_tb.v文件;g)在这里就采用直接添加仿真原型文件的方法了,到仿真时直接指定预编译的库。3、编译设计文件(略)4、启动仿真器,指定顶层设计单元方法就不重复了。指定时参考以下截图。这次选库的时候要选元件库了。185、查看和调试结果可以看到,load在装载时,输出q延时一个时钟周期才输出,但它和输入时钟的边沿还是完全同步的。19布局布线后时序仿真步骤和综合后功能仿真大同小异,有以下几点要注意:(1)进行布线后时序仿真需要的输入文件:布局布线后网表;延时文件*.sdo(Verilog)或*_vhd.sdo(VHDL);TestBench文件;仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定);QuartusII里面设置重新把Generatenetlistforfunctionalsimulationonly设置成OFF。全编译后,除了生成布局布线后网表文件以外,还会生成延时文件。(2)依然要指定库文件的位置;20(3)指定延时文件时,在下图位置指定延时文件。(4)需要注意两点:a)对Verilog设计的仿真,延时文件需要复制到ModelSim里面建的Project的根目录下。这一点,我也搞不明白,试了很久才发现的,可能是我没有设置好的问题,也可能是这个版本本身的Bug。对VHDL设计,就不需要复制到ModelSim里面建的Project的根目录下。b)指定ApplytoRegion里面,还要写TestBench里面例化顶层文件的例化名。21(5)查看仿真波形,q的输出就显示了延时。(完)
本文标题:用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)
链接地址:https://www.777doc.com/doc-6126791 .html