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

上传人:b****3 文档编号:3219039 上传时间:2022-11-20 格式:PDF 页数:21 大小:882.53KB
下载 相关 举报
用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf_第1页
第1页 / 共21页
用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf_第2页
第2页 / 共21页
用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf_第3页
第3页 / 共21页
用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf_第4页
第4页 / 共21页
用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

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

《用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf》由会员分享,可在线阅读,更多相关《用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇).pdf(21页珍藏版)》请在冰豆网上搜索。

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

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_E-mail:

Blog:

http:

/3用ModelSimSE进行功能仿真和时序仿真的方法用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)(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、菜单栏上Tools?

MegaWizardPlug-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)新建工程,File?

New?

Library:

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安装目录下.altera61quartusedasim_lib里面找到仿真原型文件220model.v;用Referencefromcurrentlocation是链接的方式指定这些输入文件,copy10toprojectdirectory是把输入文件复制到当前工程目录下。

建议还是用Referenceformcurrentlocation。

3、编译设计文件;选中一个文件,点右键,选择Compile?

CompileAll;4、启动仿真器,指定顶层设计单元;a)进Simulate?

StartSimulationSimulate?

StartSimulationb)展开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的输出就显示了延时。

(完)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1