当前位置:文档之家› 用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)

用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)

用ModelSimSE进行 功能仿真和时序仿真的方法 (ALTERA篇)黄俊April 2007用ModelSim SE进行功能仿真和时序仿真的方法 (ALTERA篇)软件准备(1) QuartusII,本文截图是QuartusII 6.1界面的。

我个人认为,如果是开发StratixII或CycloneII或MAXII,用QuartusII6.0+SP1+SP2比较稳定。

(2) ModelSim SE. ALTERA仿真库要已经装好,安装仿真库的笔记已记录于《在ModelSimSE中添加ALTERA仿真库的详细步骤》中。

我电脑上装的是ModelSim SE6.1b。

例子程序的制作先在Quartus II里生成一个例子程序,以方便介绍三种仿真的方法。

步骤如下:1、新建一个工程(Project),工程名取lpm_shift, 器件选CycloneII EP2C5Q208C, 第三方的工具暂时都不选。

2、菜单栏上ToolsÆMegaWizard Plug-In Manager, 点Next,在storage中选LPM_SHIFTREG,输出文件格式根据习惯选一种语言,在这里以Verilog的为例,在右边的output file名字中加上lpm_shift。

点Next。

3、这个例子是做一个移位寄存器,调用lpm库,和cycloneII元件库,也正好可以作为对前面建好的ALTERA库的一个验证。

点可以查到该模块的使用说明和详细介绍。

移位寄存器比较简单,就不用细看了。

如下图设置.点Next.4、加上一个异步清零端,点Next,再点Next,最后点Finish.Add/Remove Files in Project…,6、点图标,选中生成的lpm_shift,点打开再点Add都加到项目中去。

7、在这里直接把lpm_shift.v当成顶层文件,就不需要再例化它了。

8、下面写一个简单的TestBench.a)Quartus II工具栏上点图标,选Verilog HDL;b)点,设文件名为top_tb;c)如下所述写一个简单的TestBench.(例子见附件)开始仿真z ModelSim仿真有很多种流程,下面我采用个人感觉比较好一个流程进行仿真验证:基于工程(Project)的流程Step1 新建一个工程Step2 添加文件到工程中去Step3 编译设计文件Step4 启动仿真器,指定顶层设计单元Step5 查看和调试结果z对ALTERA的设计有三个阶段的仿真。

一是纯粹的功能仿真;二是综合后的功能仿真;三是布局布线后的时序仿真。

z下面就分别进行介绍。

纯粹的功能仿真1、新建一个工程a)打开ModelSim SE;b)新建工程,FileÆNewÆProject…:c)输入工程名,指定工程保存路径。

为了可以分别清楚地对三种仿真进行验证,我建立了三个文件夹,func、Psyth、 PAR分别来当功能仿真,综合后功能仿真以及布局布线后时序仿真的工程保存文件夹。

在这些文件夹内,我又建立了source文件夹,专门用来存放输入文件。

将前面建立的lpm_shift.v(HDL源文件)和top_tb.v (Testbench文件)拷贝至func/source里面。

将top_tb.v拷贝至Psyth、PAR里的source 文件夹内。

在这里先点Browse…,将工程的保存路径指定到func文件夹内。

d)点Add Existing File,添加输入文件。

e)在Project的空白处,点右键也可以再添加存在的文件的方式添加输入文件。

2、添加文件到工程中去进行功能仿真需要的输入文件:z HDL文件;z TestBench文件;z仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定);点Add Existing File添加lpm_shift.v(HDL源文件),top_tb.v (Testbench文件);再到QuartusII安装目录下..\altera\61\quartus\eda\sim_lib里面找到仿真原型文件220model.v;用Reference from current location是链接的方式指定这些输入文件,copyto project directory是把输入文件复制到当前工程目录下。

建议还是用Reference form current location。

3、编译设计文件;选中一个文件,点右键,选择CompileÆCompile All;4、启动仿真器,指定顶层设计单元;a)进SimulateÆStart Simulation…b)展开Work库,指定Testbench,点OK开始仿真;直接在仿真的时候指定就行了。

a)将Wave窗口打开,查看仿真波形:b)将需要查看的信号拖入波形窗口,可以用Ctrl或Shift键多选。

c)运行。

在下面的命令行中输入运行的时间,回车。

d)查看结果:点图标,最大化波形窗口。

e)功能仿真的特点。

点图标,在波形窗口下,按住左键不放,向右下斜拉可以选择一个放大的区域:f)放大后可以看到,完全是没有延时的。

这就是纯粹的功能仿真。

6、ModelSim的其它使用技巧不在本文讨论范围之内,在这里就不介绍了。

在这里只是列出几个常用按钮的作用。

a),,,,,,,,这几个都是非常常见的图标了,分别是新建新的源文件,打开文件对话框,保存,打印,剪切,复制,贴粘,撤消最后一步操作,在当前窗口查找文本。

在这里和下文提到的当前窗口,均可靠点击某窗口的任何位置选择。

当前窗口听标题栏会以亮的蓝色显示。

b),编译,打开文件对话框,选择HDL源文件,把该源文件编译到当前工程的工作库中。

c),全编译。

编译当前工程中的所有文件。

d),仿真。

e),停止仿真。

f),回到上一层。

g),重新仿真。

装载设计,并将仿真复位到零,重新仿真。

h),设定单步仿真步长。

i),运行当前仿真。

在该仿真时间长度内进行仿真。

j),继续仿真,直到仿真结束,或用户停止仿真。

k),运行所有仿真,直到仿真结束或用户停止仿真。

l),添加一条坐标轴。

m),删除一条坐标轴。

综合后功能仿真1、新建一个工程方法前面讲过了,这次将路径保存到…/modelsim/Psyth里。

2、添加文件到工程中去进行综合后功能仿真需要的输入文件:z在QuartusII里面生成的网表文件;z TestBench文件;z仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定)。

在QuartusII里面生成网表文件的方法:a)点工具栏上的图标,选EDA Tool Setting, 双击Simulation。

b)设置ModelSim, 输出网表的格式,以及网表文件保存的路径。

c)点,将Generate netlist for functional simulation only设置为ON。

d)点OK,保存。

点工具栏上的图标,进行全编译。

e)检查一下…/modelsim/Psyth/source里面,可以发现,已经生成了一个*.vo文件。

这个就是需要的网表文件。

(VHDL的输出网表是*.vho后缀名的)f)在这里,TestBench文件就继续用前面功能仿真里用的top_tb.v文件;g)我们试一下直接指定预编译的库。

3、编译设计文件(略)4、启动仿真器,指定顶层设计单元方法就不重复了。

指定时参考以下截图。

这次选库的时候选元件库。

5、查看和调试结果可以看到,load在装载时,输出q延时一个时钟周期才输出,但它和输入时钟的边沿还是完全同步的。

布局布线后时序仿真步骤和综合后功能仿真大同小异,有以下几点要注意:(1)进行布线后时序仿真需要的输入文件:z布局布线后网表;z延时文件*.sdo(Verilog)或*_vhd.sdo(VHDL);z TestBench文件;z仿真原型文件(在这时就添加进来)或预编译的库文件(仿真时指定);QuartusII里面设置重新把Generate netlist for functional simulation only设置成OFF。

全编译后,除了生成布局布线后网表文件以外,还会生成延时文件。

(2) 依然要指定库文件的位置;(3) 指定延时文件时,在下图位置指定延时文件。

(4) 需要注意两点:a)对Verilog设计的仿真,延时文件需要复制到ModelSim里面建的Project的根目录下。

这一点,我也搞不明白,试了很久才发现的,可能是我没有设置好的问题,也可能是这个版本本身的Bug。

对VHDL设计,就不需要复制到ModelSim里面建的Project的根目录下。

b)指定Apply to Region里面,还要写TestBench里面例化顶层文件的例化名。

(5) 查看仿真波形,q的输出就显示了延时。

(完)。

相关主题