(笔记) 如何使用ModelSim作前仿真与后仿真 (SOC) (Quartus II) (ModelSim)
modelsim使用 + 前仿真 + 后仿真 + verilog
Modelsim 6.0 使用教程1. Modelsim简介Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。
但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。
2.安装同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。
⑴.解压安装工具包开始安装,安装时选择Full product安装。
当出现InstallHardware Security Key Driver时选择否。
当出现Add Modelsim To Path选择是。
出现Modelsim License Wizard时选择Close。
⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
⑶.修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。
LM_LICENSE_FILE = c:\flexlm\license.dat⑷.安装完毕,可以运行。
Quartus 中设置modelsim 仿真
目录Quartus中设置modelsim仿真 (1)一、运行环境 (1)2.1、在Quartus中设置仿真环境 (1)2.2在Quartus中设置仿真参数 (3)2.3仿真 (5)Quartus中设置modelsim仿真一、运行环境1.1软件环境:Quartus V11.1Modelsim10.0.Cwindows7.01.2硬件环境芯片:MAXII EPM1270T144二、设置过程2.1、在Quartus中设置仿真环境点上图中的【Launch Simulation Library Compiler】,处在上图中我们按数字顺序设置:①仿真工具路径及我们安装的modelsim的路径,记住是modelsim.exe所在文件位置。
②选择我们要使用的仿真库,我们现在用的是maxII系列的,所以选择它,如你还要其它的,可以自己选择③选择仿真语言,你用verilog编写的测选择verilog④设置编译后的输处路径⑤选择是否将设置加到工程中设置好后点【StartCompilation】开始编译编译完成后会出现以下窗口点OK后,我们会看到一些信息如上的信息则表示没有问题2.2在Quartus中设置仿真参数回到主窗口,按下图中步骤打开设置窗口设置窗口如下,在category中点【EDA Tool Settings】中的【Simulation】按上图中的,先选择Tool Name再一步一步设置设置完1,2,3步后开始设置第4步,设置quartus与modelsim的链接按下图操作先选择Compile test bench,再点击【Test benches】按钮,打开设置窗口按上图1、2、3、4设置好后,开始添加仿真驱动文件(此驱动文件就是modelsim仿真文件了,要自己编写,但不需要加到工程中。
我写的是一个sim.v文件,sim.v中的模块名也为sim.2.3仿真做完以上操作就可以进行仿真了仿真前先编译一下工程文件,如没有任何问题则可以进行以下操作点击仿真按钮后,Quartus就会自动调用modelsim了。
如何使用ModelSim作前仿真与後仿真
CPLD FPGA1.CPLD FPGA 芯片设计推广欢迎采购2.定制FPGA功能IP服务3.承接软、硬件系统设计主页博客相册|个人档案 |好友查看文章(筆記) 如何使用ModelSim作前仿真與後仿真? (SOC) (Quartus II) (ModelSim)2009-06-04 15:00Abstract本文介紹使用ModelSim做前仿真,並搭配Quartus II與ModelSim作後仿真。
Introduction使用環境:Quartus II 8.1 + ModelSim-Altera 6.3g由於FPGA可重複編程,所以不少開發人員就不寫testbench,直接使用Quartus II的programmer燒進開發板看結果,或者使用Quartus II自帶的Waveform Editor進行仿真,這種方式雖然可行,但僅適用於小project,若project越寫越大,Quartus II光做fitter就很耗時間,一整天下來都在作Quartus II編譯。
比較建議的方式,還是學ASIC那招:『寫testbench先對每個module作前仿真,再對每個module作後仿真,最後再燒入FPGA測試。
』這種方式的優點是:1.testbench比waveform editor可更靈活的描述電路規格。
2.testbench可使用Verilog的系統函數,如$display()、$fwrite()...等。
但要使用testbench作仿真,單獨Qaurtus II並無法做到,就得使用ModelSim了,這又牽涉到『前仿真』與『後仿真』。
所謂的『前仿真』,就是Quartus II的Functional Simulation,不考慮電路的門延遲與線延遲,重點在觀察電路在理想環境下的行為與設計構想是否一致[1]。
由於沒經過fitter階段,所以模擬速度很快。
前仿真結果正確,並不表示將來結果結果正確,但若前仿真結果不正確,則將來結果一定不正確。
quartus与modelsim联合仿真步骤总结自己
1.首先安装好quartus和modelsim2.复制altera quartus eda sim_lib 中对应芯片的.v文件到modelsim文件夹内3.打开quartus新建工程在第四步eda tool setting 中simulation选项中选择modelsim 语言默认为veillog 后面不打勾4.assignments settings eda stimulation工具选择modelsim 路径选择modelsim安装的路径写到win32这一步点击确定至此准备工作全部完成5.写veillog 程序然后保存编译编译后会在我们的工程目录下生成simulation文件夹,里面又有一个modelsim文件夹。
6.创建或者是编写testbench引导文件简单的可以创建复杂的需要自己编写quartus自己创建不了这是一个端口引导文件目的是建立modelsim和quartus之间的桥梁能够让modelsim创建出我们需要的与quartus中相匹配的端口并且执行相同的功能这些功能执行信息都存放在了testbench引导文件当中7.创建testbench文件过程:Processing->Start->Start Test Bench Template Write这时创建的testbench文件存放在4中所说的modelsim文件夹中以.vt为后缀名以工程名命名8.添加该文件:Assignments->EDA Tool Settings选择Simulation设置仿真环境在NativeLink settings中选择Compile test bench并点击后面的Test Benches 在Test Benches中点击New设置Test Bench属性在Test bench entity栏一定要填写刚刚我们创建的testbench文件的实体名即module top_vlg_tst();中的top_vlg_tst。
quartus的modesim仿真过程
1.撰写testbench激励文件:单击Quartus中的菜单‘Processing’->‘start’->‘Start Test Bench Template Writer’,如图一所示,自动生成激励模板(*.vt)。
打开该模板,并填写完整,保存,编译。
Testbench 常用语:●clk<= not clk after 10 ns;●process beginwait for 10 ns; clk<='1';wait for 10 ns; clk<='0';end process;●en <= '0' after 0 ns,'1' after 50 ns,'0' after 850 ns,'1' after 900 ns;2. Modelsim和Quartus的连接。
单击Quartus中的菜单‘Tools’->‘options’,如图二所示。
随后出现图三所示的窗口,点击左边菜单树下的‘Eda Tool Options’,再将原先modelsim的启动路径拷贝到‘Modelsim’的空白处,或单击右侧的‘。
’选择启动路径。
最后点击Ok,连接生效。
图二图三3. 设置编译信息。
单击Quartus中的菜单‘Assignment’->‘Settings’,如图四所示。
随后进入图五所示的Settings 界面,点击左侧菜单树‘EDA Tool Settings’下的‘Simulation’,右边的窗口出现Simulation 界面,并进行如图五的设置。
其中点中‘Compile test bench’左边的圈圈后,再点击右侧的按钮‘Test Benches。
’进入图六所示的界面,点击右上按钮‘New’进入图七所示的‘New Test Bench Settings’界面,填入相关信息:激励文件名(1),激励文件实体名(2),激励文件中的例化名(3),最大仿真时间(4),和激励文件的具体路劲(5)。
modelsim与quartusii联合仿真图形操作演示
从图上看功能仿真已完成,并且和芯片的确无关系,是真正的功能仿真.
2,时序仿真(后仿真) (1)修改 EDA Tools 仿真设置,改程 off
(2)编译,自动弹出 modelsim
(3)仿真
ቤተ መጻሕፍቲ ባይዱ
*下面添加延时文件
注意:此处的 apply to region 填写的是测试文件中例化元件,如下
注意: 其实比较了下, 好像功能仿真和时序仿真 (后仿真) 可以是一样的操作, 仅在 quartus 中有 off/on 区别.
�
Modelsim 与 quartusII 联合仿真简介 Akuei 一,功能仿真 1,在 quartus 中设置
注:点 more settings
"on "
功能仿真
2,quartus 编译,此时会自动弹出 modelsim,如下
将测试文件考到"工程目录\simulation\modelsim"下如下图
Quartus用modesim仿真
功能仿真1在这个路径下找到C:\altera\90sp2\quartus\eda\sim_lib找到相应的系列(CycloneII)cycloneii_atoms.v2把cycloneii_atoms.v复制到工程文件下Simulation中的Modesim文件中3启动modesim4取名为相应的系列名字(CycloneII)5在生成的新库下编译(选中生成的测试脚本文件和cycloneii_atoms.v,和--------.vo三个文件进行编译)--------------编译完成后,右键refresh6,双击测试脚本文件7 add to wave时序仿真1.退出当前(File—close—dataset--sim)2 新建project工程名:随意.路径在quartus工程中的Simulation中的Modesim文件中默认的库名(CycloneII)3添加已经存在的文件(选中生成的测试脚本文件和cycloneii_atoms.v,和----.vo和---.sdo四个文件)4complie(complie al l)5 编译完成后到library(库名(CycloneII))里refresh6,双击测试脚本文件7 add to wave8这个步骤(可以看到时序的信息)以后,如果又想仅仅看看功能仿真到quartus工程中的Simulation中的Modesim文件中找到上述讲到的----.vo文件,打开后注释掉initial(”……………sto”)这一句,即可又仅仅查看功能信息在重新编译一下complie(complie al l)双击测试脚本文件add to wave此时又能看到功能仿真了。
Quartus II 直接调用 modelsim se 进行前仿真和后仿真
Quartus II 直接调用modelsim se 进行前仿真和后仿真Modelsim的独立版本仿真速度比Quartus自带的Modelsim-Altera快,且Modelsim的独立版本支持Verilog和VHDL语言的混合仿真,因此Modelsim-Altera尽管可以直接从Quartus 官方下载,但不少人仍然会选用独立版本的Modelsim进行设计仿真。
使用Modelsim-Altera非常方便,安装后Quartus已经做好了与Modelsim-Altera的链接。
如果使用独立版本的Modelsim,则需要自己手动配置才能将独立版本Modelsim与Quartus 链接使用。
以下以使用Quartus II 11.1sp2和modelsim se 10.0a进行工程的前仿真后后仿真为例进行介绍。
即在Quartus进行设置,直接通过Quartus II的菜单调用modelsim se运行前仿真和后仿真。
当然也可参照网上的介绍,编译modelsim的Altera库,在modelsim se中直接建立工程并运行仿真。
本文介绍通过在Quartus中进行设置,通过Quartus菜单直接调用运行modelsim se的仿真,配置好后就如同Altera官方的Modelsim-Altera版本一样使用简便。
第一步:配置modelsim se路径Tools->Options打开Options对话框,选General->EDA Tool Options,设置Modelsim路径,可直接填入或浏览Modelsim路径,如下图所示:第二步:设置testbenchAssignments->Settings,打开Settings对话框,EDA Tool Settings->Simulation设置Tool name选Modelsim,Format for output netlist选择所用语言,Time scale需仿真时间精度。
使用QUARTUSⅡ及MODELSIM进行Verilog程序的综合及仿真
第一步:软件安装。
这就略了吧,应该谁都会的。
第二步:启动QUARTUS,新建工程。
File----new----newquartus Ⅱproject。
next下图中,在1处填入工程文件夹(路径中不要使用中文),2处填写工程名,3处填写该工程的顶层模块名(默认情况下工程名和顶层模块名相同),然后NEXT。
下一个对话框是添加已有文件的,没有的话就next。
再下一个对话框是设备设置,可next。
再下一个对话框是仿真设置,这个会在下面详细设置,这里直接next。
然后finish。
第三步:新建Verilog文件。
file---new---verilog HDL file。
然后先保存为adder.v。
第四步:编写程序。
第五步:仿真的设置(重要)。
1.Tools----options----EDA Tool Options,在modelsim后的路径里填入modelsim程序的路径。
2.assignments----setting----EDA Tools Settings----simulation。
在tool name里选择modelsim,format for output netlist里选择verilog HDL,time scale 里根据仿真程序选择。
设置好后勾选compile test bench,然后打开后面的test benches。
3.在TEST benches对话框里点击new。
4.在test bench name中填写仿真模块名,在top level module in test bench中填写仿真模块中的顶层模块名(默认与仿真模块名相同),然后点击下面的File name后文件添加按钮(3),找到你已经编写好的仿真程序,然后点击Add添加。
说明:Quartus中提供了自动生成testbench文件的功能,但内容不全,建议自己编写,保存格式为verilog文件(.v)。
5.一顿点OK,直到回到主界面。
Modelsim仿真方法总结
Modelsim仿真方法总结第一篇:Modelsim 仿真方法总结Modelsim 仿真方法总结Modeling 仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真。
Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。
下面来具体介绍modelsim 的仿真方法,涉及quartus-modelsim联合(使用)仿真的差异会特别提示。
前仿真与后仿真说明 1.1 前仿真前仿真也称为功能仿真、行为仿真。
旨在验证电路的功能是否符合设计要求,其特点是不考虑延迟(包括门延迟与线延迟),主要验证电路与理想情况是否一致。
前仿真需要用到RTL级代码(由源代码经过综合后产生)与T estbench。
1.2)后仿真后仿真也称为时序仿真或者布局布线仿真。
是指在电路已经映射到特定的工艺环境以后,综合考虑门延迟与线延迟的影响,验证电路在一定的时序条件下是否存在时序违规以及能否满足设计构想的过程。
需要用到的文件是——从布局布线结果中抽象出来的门级网表、testbench和后缀名为sdo或者sdf的标准时延文件。
注:扩展名为sdo和sdf的标准时延文件包含门延迟与实际布线延迟,能较好的反应芯片的实际工作情况。
二)modelsim仿真主要有以下几个步骤:(1)建立库并映射库到物理目录;(2)编译源代码(包括Testbench);(3)执行仿真;解释:①库:modelsim中有两类仿真库。
一种是工作库,默认名为work;另一种是资源库。
Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work库。
资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。
(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。
)映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。
ModelSim的前后仿真(Quartus)
利用Quartus5.0实现功能仿真1)打开一个工程文件。
2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。
在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。
(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。
最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。
编译的报告里也会分别列出最快和最慢的时序报告。
)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。
4)新建一个波形仿真文件,文件后缀名为.vwf。
选择File菜单下的New->Other Files->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
用modelsim仿真
使用ModleSim 进行前仿真和后仿真前言由于Quartus 9.1SP1已经说明在Quartus的后续版本不再支持内置的仿真工具,而且Quartus自带的波形仿真工具实在很差,且不能加载testbench,所以使用ModelSim-Altera进行仿真。
本文使用工具的版本是,Quartus II 9.1 sp1, ModelSim Altera 6.4a。
皆以全部破解。
本文的例程是基于特权的《深入浅出玩转FPGA》lesson9,无符号16位乘法器。
要使用Quartus中的Tools -> Run EDA Simulatin Tools -> EDA RTL Simulatio,直接调用ModleSim则需要在Tools -> Options 里设置ModelSim的路径。
如图:使用ModelSim进行前仿真前仿真既功能仿真,在特权配套的lesson9讲解视频中已经做过讲解。
1:在Quartus中选择Assignments -> Settings。
在EDA Tool Settings 选择Simulation,设置Tool name为ModelSim-Altera,Format for output netlist选择Verilog(会生成.vo的Verilog输出文件,若选择VHDL则会生成.vho的VHDL输出文件),其它的可以默认就行。
如图12:添加testbench文件。
点击上图中的TestBenches,选择New新建一个,Test bench name和Top level module in test bench中填入测试文件的模块名,Design instance name in test bench 填入测试文件中例化的源文件模块的例化模块名。
在Testbench files 里点Add,添加已经写好的TestBench测试文件。
如图2:点OK返回。
3,点击Tools -> Run EDA Simulatin Tools -> EDA RTL Simulatio,Quartus会直接调用ModleSim,且vtf_test中的信号已经加入wave中,点RUN all,会运行显示波形。
如何在Quartus-II-里使用Modelsim
当我们使用QuartusII,但是大多数朋友都习惯用Modelsim SE来做仿真,由于Quaruts有很多本身器件的特色,所以造成了在仿真上的麻烦,当然网路上也有一些讲解,但是都是不太系统,特别是对初学者来说,使用的时候还是感到一头雾水。
本文的目的就是一个如何在Quartus 使用Quartus 和Modelsim 仿真的例子。
2.建立QuartusII 工程。
这里目的只是建立一个很简单很简单的QuartusII 的工程,逻辑采用原理图方式绘制。
里面就是一个简单的DFF,输入信号:datain , clkdataout3.Quartus II 内部时序仿真在Quartus 内部使用时序仿真,很简单,如果不知道如何使用请参考帮助文件帮助文件的你可以点击 Help-> Tutorial 。
里面有很详细的如何创建一个Wave仿真文件的教程这里就不罗嗦了。
关于如何仿真这里也不废话了。
我们进入核心问题。
4.Modelsim SE的仿真4.1 生成TestBench 文件由于我们上面已经制作了一个时序仿真文件 *.vwf .Quartus II 提供了把这样文件转换成Testbench 的功能。
具体的操作如下:在工程菜单里面双击*.vwf 文件,是之打开成为当前激活文件。
然后点击菜单 Files-> Export会直接打开一个输出框:我们后面会使用Verilog文件进行仿真,所以这里把后缀名*;.vt 改成为*.VOk 就生成了 TestBeanch 文件。
4.2 设置启动Modelsim如何在Quartus II 里面使用Modelsim. 只需要在 Assignment->setting里面选择如下的选项,在进行整个工程进行编译的时候会自动调用系统的Modelsim SE .在编译最后会调用Modelsim .点击Work 你可以看见关于Altera 的库文件都编译进来了。
下面是重点:新建一个工程文件。
使用ModelSim进行仿真
使用Modelsim仿真本文档主要介绍单独用Modelsim进行FPGA仿真的具体步骤以及相关仿真文件的生成方法。
对于FPGA设计,仿真主要分为三类:功能仿真、综合后仿真和时序仿真。
功能仿真是在理想的状态下(不考虑延迟)验证电路的功能是否符合设计要求。
综合后仿真,即门级仿真,是对综合后的门级网表文件进行仿真,此时只考虑门的延时,而没有加入延时文件。
时序仿真是在综合后仿真的基础上加上延时文件,这综合考虑了设计的路径延时和门延时的情况,以验证电路在实际电路有各种延时的情况下是否有错误。
下面我们将分步骤讲解用ModelSim进行FPGA仿真的方法。
一、 用ModelSim编译Quartus II的库1.先到modelsim的安装目录下找到文件”modelsim.ini”,将其属性改为可写。
2.启动Modelsim,点击File‐>New‐>Library,在弹出的【creat a new library】窗口中选中a new library and a logical mapping to it,然后在Library Name下填入Altera,点击OK。
3.在主菜单中选择compile‐>compile…,在弹出的【Compile Source Files】窗口上,通过窗口上【library】下拉菜单选择库名Altera,在【查找范围】中选择quartus安装目录下的…\quartus\eda\sim_lib目录,选择所需要编译的库(如不确定,可全选),点击【compile】,编译完成后,点击【done】。
二、 用Modelsim进行仿真a.ModelSim的功能仿真主要流程如下:1.新建一个工程,打开File‐>New‐>Project,输入工程名,指定工程保存的路径,然后添加文件,如下图:在project的空白处,单击右键也可以再添加存在的文件或创建新的文件。
2.添加文件到工程中去。
Quartus 调用modelsim仿真的简单流程
Quartus 中调用modelsim的流程1.设定仿真工具assignment→setting→EDA tool setting→simulation选择你需要的工具。
2.自动产生测试激励文件模板:processing→start→Start test bench template writer我们点击之后系统会自动在目录:当前文件夹→simulation →modelsim (这个文件夹名字跟你选的仿真工具有关) 中产生一个测试激励文件xxx.vt(Verilog test bench) 或者xxx.vht(VHDL test bench), 文件名跟你工程中的Top module 的名字一样,后缀为.vt或者.vht。
3.编辑走动生成的test bench文件我们加入自己需要的激励以及初始化语句,这里我们还要修改test bench的模块名字为tb(我们会看到这个名字和后面的设定有联系)。
4.连接test bench,我们需要从Quartus中自动调用仿真工具,所以需要设定Native Link选项。
a)还是在simulation的设置页面里,设定Native Link对话框中的设定。
我们这里因为需要工具自动调用激励所以选中b)点击右边的Test Benches, 我们需要在这里设定一个相关联的test bench.这里会弹出一个让你指定test bench的对话框,因为我们之前没有指定任何的test bench,所以这里是空白的。
c)指定test bench因为我们是第一次产生test bench,点击new.点击New之后会产生一个New Test bench setting的对话框,在这里你将test bench和你的相应的test bench file 进行绑定。
我们这里在Test bench name的对话框中输入一个名字”my_1st_tb”, 我们将看到,在下面的Top level module in test bench对话框中也自动显示”my_1st_tb”. 注意这个名字应该和你的test bench 中的module name一直,我们之前在第3步的时候将test bench的module name已经改成了tb,所以我们这里应该把对话框中的名字改成tb。
modelsim后仿步骤
Modelsim 后仿真操作步骤后仿就是时序仿真,因为时序仿真是在综合之后故称后仿真。
现将综合到后仿的简单步骤细列如下(并附图):一,综合(所用工具是quartus)1,建立工程,其他不变,只是在选择仿真工具时留意下图红圈处。
(图1)2,设置仿真工具:assignments->settings...->EDA Tool Settings->Simulation 的Toll name 选择modelsim,其他默认设置即可,3,综合,综合成功后,可以看到再工程目录的simulateion->modelsim下面有两个文件.sdo和.vo文件,前者是加了标准延时的时序反标注文件,后者是综合出来的网标文件。
(图2)那么后仿时就是对.vo文件进行仿真,且仿真文件(testbench)就是前仿真时的文件。
只是还要加入库文件,和延时文件(.sdo)。
二,时序方针(所用工具是modelsim)1.首先编译altera 库文件: 在modelsim新建工程,在工程的library下新建一个库命名为sim;(图3)再加入文件,浏览到altera/quartus的安装目录再找eda->sim_lib,(图4)我的是:D:\altera\80\quartus\eda\sim_lib,选择所有.vhdl文件或者.verilog文件(根据自己设计所采用的语言,选择相应的文件,如果阁下是两种语言联合编程,那就把所有的文件全部编译,肯定错不了,我试过了。
),全部编译后,可以在libraray->sim中看到编译后的文件了。
2,在modelsim下建立新的工程,将在quartusII下生成的.vo文件和测试文件testbench加入工程中,(图5)全部编译,通过后,选择状态栏中start simulation打开一个仿真对话框,(图6)选择仿真对象为work->testbench,(图7)再选择library添加库sim,(图8)再选择SDF,添加延时文件.sdo,注意这里在Apply to Region文本框中填上所选择延时文件的作用域,即您老在testbench里面所实例化的顶层文件的实例化名(红色圈出)。
Quartus与ModelSim联合仿真流程文档
QuartusII 10.0与ModelSim6.6c联合仿真及程序下载调试一、FPGA设计仿真验证简介FPGA设计验证包括功能仿真、时序仿真和电路验证,它们分别对应整个开发流程的每一个步骤。
仿真是指使用设计软件包对已实现的设计进行完整的测试,并模拟实际物理环境下的工作情况。
功能仿真是指仅对逻辑功能进行模拟测试,以了解其实现的功能是否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性等,因此又叫前仿真,它是对HDL硬件描述语言的功能实现情况进行仿真,以确保HDL语言描述能够满足设计者的最初意图。
时序仿真则是在HDL可以满足设计者功能要求的基础上,在布局布线后,提取有关的器件延迟、连线延时等时序参数信息,并在此基础上进行的仿真,也成为后仿真,它是接近于器件真实运行状态的一种仿真。
二、开发软件QuartusII及仿真软件ModelSim简介Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
HDL的仿真软件有很多种,如VCS、VSS、NC-Verilog、NC-VHDL、ModelSim 等,对于开发FPGA来说,一般是使用FPGA厂家提供的集成开发环境,他们都有自己的仿真器,如Xilinx公司的ISE,Altera公司的Quartus II等,但是这些厂家开发的仿真器的仿真功能往往比不上专业的EDA公司的仿真工具,如ModelSim AE(Altera Edition)、ModelSim XE(Xilinx Edition)等。
quartus软件下的modesim仿真方法
一、Quartus 2中仿真环境设置1、设置仿真软件modelsim-altera路径:tools->options->general->eda tool options,弹出对话框:Modelsim-altera:C:\altera\11.0\modelsim_ase\win32aloem(说明:C:\altera\11.0\modelsim_ase\win32aloem为modelsim安装路径)点击:ok2、Assignments->settings->EDA tools settings->simulation,弹出对话框:Tool name:modelsim—altera;Format for output netlist:verilog hdl;设置好后,点击apply和ok;3.测试平台设计(自动生成测试平台模板文件)先将Con_Motor.v文件设置为顶层文件;Processing->start->start test bench template writer,如图:生成的testbench文件路径:项目\simulation\modelsim\顶层文件名.vt,即testbench文件与顶层文件名相同;该例为Con_Motor.vt。
(1)向设计工程添加测试平台文件Con_Motor.vt;(2)打开Con_Motor.vt文件后:先用双斜杠//屏蔽掉@eachvec语句,即//屏蔽掉@eachvec语句;(把@eachvec注释掉才能得到一段很长的波形,不然仿真时间就非常短,如果在它之前有在这个always过程块里规定时钟信号的翻转的话,这个时钟信号也不会翻转。
总之,注释掉它。
)添加激励信号clk和command,修改后的测试平台文件如下:`timescale 1ns/ 1nsmodule Con_Motor_vlg_tst();// constants// general purpose registersreg eachvec;// test vector input registersreg CLK;reg Command;// wireswire CP;// assign statements (if any)Con_Motor i1 (// port map - connection between master ports and signals/registers.CLK(CLK),.CP(CP),.Command(Command));initialbegin// code that executes only once// insert code here --> beginCLK =0;Command =0;#5 Command =1;// --> end$display("Running testbench");endalways// optional sensitivity list// @(event1 or event2 or .... eventn)begin// code executes for every event on sensitivity list// insert code here --> begin#1 CLK <= ~CLK;//@eachvec;// --> endendendmodule(1)向仿真工程添加测试平台文件:Assignments->settings->simulation->compile test bench ,如图:单击“test benches..”,如图:单击“new”,如图:Test bench name:测试平台名,即.vt的文件名;Top level module in test bench:test bench中顶层模块名,即testbench中的待测模块名;注意:Top level module in test bench 必须和testbench中的待测模块名一致;Test bench files栏的File name项:测试平台文件名,和Test bench name相同,即.vt的文件名,单击...进行浏览,找到.vt文件,该.vt文件的浏览图:单击open打开;单击ADD添加后,图:单击ok后,如图:单击“ok”后,如图:单击apply,再单击ok,完成测试平台向仿真工程的添加。
在Quartus中调用Modelsim进行仿真
在QuartusⅡ中调用ModelSim进行仿真Quartus Ⅱ版本:Quartus Ⅱ10.0 (32-bit);安装路径为D:\Myfiles\QUARTUS_10.0 ModelSim版本:ModelSim SE 6.5;安装路径为D:\Myfiles\ModelsimSE一、Quartus设置(1)在QuartusⅡ中指明仿真工具及其路径(2)在QuartusⅡ中编译所需的元器件库二、建立工程及仿真(1)在QuartusⅡ中建立工程counter,并指明仿真工具(2)顶层文件代码(3)激励文件代码(4)在Quartus中添加testbench文件(5)在Quartus中全编译工程(6)前仿真(7)后仿真一、QuartusⅡ的相关设置(1)在QuartusⅡ中指明仿真工具及其路径在QuartusⅡ中执行Tools\Options,打开EDA Tool Options选项卡。
我们使用ModelSim 进行仿真,所以在ModelSim对应的Location of Executable中选择ModelSim的安装路径D:\Myfiles\ModelsimSE\win32,如图1所示:图1(2)在QuartusⅡ中编译所需的元器件库1)在ModelSim安装路径D:\Myfiles\ModelsimSE中新建文件夹modelsimSE_lib,用于存放编译的文件2)在QuartusⅡ10.0中执行Tools\Launch EAD Simiulation Library Compiler,在打开的界面中Executable location一项选择ModelSim的安装路径D:\Myfiles\ModelsimSE\Win32在Avaliable families中根据自己需要选择可能用的到器件系列,如cyclone、stratix等;在这里可以多选择一些,以备能用到,并且一次编译后,以后就不用再编译了。
用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤
⽤quartusII再带的modelsim进⾏后仿真(时序仿真)的操作步
骤
在实际的项⽬⼯程中,基本上都是在Modelsim进⾏功能仿真后,直接进⾏板级调试(⽤signaltap调试),但是中规中矩的后仿真也不能不会。
操作步骤如下:
1.将quartus II与其⾃带的Modelsim-Altera进⾏关联,quartus II软件中【Tools】--->【Options】,按图1进⾏操作
图1
2.在quartus II软件中进⾏全编译,这时会在⼯程⽂件夹产⽣“simulation”⽂件夹,打开并接着打开“modelsim⽂件夹”,这时⾥⾯会出现10个⽂件,其中“.vo”和“.sdo”是时序仿真需要的⽂件,将他们粘贴到modelsim的⼯程⽂件夹中。
图2
图3
3.接下来还需要Altera的器件库
其中Altera的器件库⽂件在:D:\altera\13.0sp1\modelsim_ase\altera\verilog\altera
D:\altera\13.0sp1\modelsim_ase\altera\verilog\cycloneive
图4
4.将testbench⽂件和“.vo”⽂件加到⼯程上,然后编译,然后右键选择【Add to project】-->【Simulation Configuration】,选择【Work】中的"xxx_tb"⽂件,然后选择【Libraries】中加载刚在粘贴的2个Altera器件库,然后在【SDF】中加载刚才粘贴的“xx.sdo”⽂件,然后点【Save】,最后点击“Simulation”即可进⾏时序仿真。
如图5 、6、7所⽰:
图5
图6
图7 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(笔记) 如何使用ModelSim作前仿真与后仿真? (SOC) (Quartus II) (ModelSim)Abstract本文介绍使用ModelSim做前仿真,并搭配Quartus II与ModelSim作后仿真。
Introduction使用环境:Quartus II 8.1 + ModelSim-Altera 6.3g由于FPGA可重复编程,所以不少开发人员就不写testbench,直接使用Quartus II的programmer烧进开发板看结果,或者使用Quartus II自带的Waveform Editor进行仿真,这种方式虽然可行,但仅适用于小project,若project越写越大,Quartus II光做fitter就很耗时间,一整天下来都在作Quartus II编译。
比较建议的方式,还是学ASIC那招:『写testbench先对每个module作前仿真,再对每个module作后仿真,最后再烧入FPGA测试。
』这种方式的优点是:1.testbench比waveform editor可更灵活的描述电路规格。
2.testbench可使用Verilog的系统函数,如$display()、$fwrite()...等。
但要使用testbench作仿真,单独Qaurtus II并无法做到,就得使用ModelSim了,这又牵涉到『前仿真』与『后仿真』。
所谓的『前仿真』,就是Quartus II的Functional Simulation,不考虑电路的门延迟与线延迟,重点在观察电路在理想环境下的行为与设计构想是否一致[1]。
由于没经过fitter阶段,所以仿真速度很快。
前仿真结果正确,并不表示将来结果结果正确,但若前仿真结果不正确,则将来结果一定不正确。
所谓的『后仿真』,就是Quartus II的Timing Simulation,考虑了电路的门延迟与线延迟,由于经过fitter阶段,所以模拟结果最为精准。
但fitter在Quartus II编译需耗费很多时间,所以建议『前仿真』正确后,再考虑『后仿真』。
使用Quartus II的waveform editor作前仿真与后仿真,我就不再多谈,本文主要是谈如何使用ModelSim-Altera作前仿与后仿。
1.使用GUI的方式在ModelSim-Altera作前仿真。
2.使用DO macro在ModelSim-Altera作前仿真。
3.使用Quartus II + ModelSim-Altera作后仿真。
Counter.v / Verilog1/*2(C) OOMusou 2008 34Filename : Counter.v5Compiler : Quartus II 8.1 / ModelSim-Altera 6.3g6Description : simple counter7Release : 01/30/2009 1.08*/910 `timescale 1ns/100ps1112module Counter (13input CLK,14input RST_N,15output[3:0] CNT16 );1718reg[3:0] cnt;19assign CNT = cnt;2021always@(posedge CLK, negedge RST_N) begin22if(!RST_N)23cnt <= #54'h0;24else25cnt <= #5cnt + 1'b1;26end2728endmodule一个很简单的counter,从0数到15重复数。
由于要使用ModelSim作前仿,所以在reg做了delay,不过这在Quartus II作合成时会自动忽略,因为delay并非可合成的Verilog。
一般写给FPGA的RTL,都不会去设定timescale,不过由于要用ModelSim作前仿,所以要加上timescale。
Counter_tb.v / Verilog2(C) OOMusou 2008 34Filename : Counter_tb.v5Compiler : Quartus II 8.1 / ModelSim-Altera 6.3g 6Description : simple counter testbench7Release : 01/30/2009 1.08*/910 `timescale 1ns/100ps1112module Counter_tb;1314reg clk;15reg rst_n;16wire[3:0] cnt;1718parameter PERIOD = 20;1920 Counter counter (21 .CLK(clk),22 .RST_N(rst_n),23 .CNT(cnt)24 );2526initial begin27#0clk = 1'b0;28rst_n = 1'b0;29#5rst_n = 1'b1;30end32// 50MHz33always#(PERIOD/2) clk = ~clk;3435endmodule一个很典型的testbench,唯一要注意的是第28行。
rst_n = 1'b0;#5rst_n = 1'b1;之所以一开始要将rst_n为0,是因为ModelSim与Quartus II对reg初始值看法不一样,Quartus II认为reg初始值为0,但ModelSim认为reg初始值为x,所以需要rst_n=1'b0将reg归0,这样用ModelSim前仿才会正确,但ModelSim后仿可以不这样做,因为Quartus II会先做处理。
不过为了前仿与后仿都使用同一个testbench,建议加上rst_n = 1'b0设定reg初始值为0。
有了RTL与testbench之后,来看看如何使用ModelSim作前仿与后仿。
1.使用GUI的方式在ModelSim-Altera作前仿真ModelSim提供了全GUI的方式,只要使用操作的方式,就能做前仿。
Step 1:File -> New ProjectAdd Existing File将Counter.v与Counter_tb.v加入Compile All选择Counter.v或者Counter_tb.v,按鼠标右键,选择Compile->Compile All,编译所有Verilog code。
编译成功。
Step 4:Simulate在Library tab选择Counter_tb,按鼠标右键,选Simulate。
Simulate成功。
Step 5:Add Signal to Wave将欲观察的信号从Objects加入Wave,加入clk,rst_n与cnt。
最后结果。
Step 6:Run 300ns最后前仿结果。
2.使用DO macro在ModelSim-Altera作前仿真ModelSim也提供macro的方式,以上所有的GUI操作,都可以使用TCL script描述。
Step 1与Step 2与之前一样。
Step 3:Execute MacroCounter_wave.do / ModelSim Macro1 #compile2 vlog Counter.v3 vlog Counter_tb.v45 #simulate6 vsim Counter_tb78 #probe signals9 add wave *1011 #300 ns12run 300 ns最后前仿结果。
3.使用Quartus II + ModelSim-Altera作后仿真Step 1:设定Quartus II使用ModelSim-Altera作后仿真Assignments -> Settings -> Category :EDA Tool Settings -> Simulation:Tool name:ModelSim-Altera 选取Run gate-level simulation automatically after compilationFormat for output netlist:VerilogTime scale:1 nsStep 2:设定testbench在同一页的NativeLink settings选择Compile test bench,按下TestBenches..加入Counter_tb.v。
比较诡异的是,Test bench name、Top level module in test bench与Design instance name in test bench无法自己抓到,必须自己填。
Step 3:编译与模拟Processing -> Start Compilation完整程序代码下载Counter.7zConclusion本文介绍了使用ModelSim作前仿真与后仿真,善用ModelSim,将可加快FPGA与SOPC的开发。
See Also(原创) 如何使用ModelSim-Altera作电路仿真? (SOC) (Quartus II) (ModelSim)(原创) 如何解决在Quartus II无法使用ModelSim-Altera模拟的问题? (SOC) (Quartus II) (ModelSim) (原创) 如何做functional simulation? (SOC) (Quartus II) (ModelSim)Reference[1] EDA先锋工作室,Altera FPGA/CPLA设计(基础篇),人民电邮出版社。