如何能从Quartus II中调用Modelsim进行仿真
Quartus-II调用modelsim仿真方法
方法1:在quartus ii 11.0环境下,编辑生成并修改quartus生成的test bench文件,采用手动设置激励形成波形(有很多缺陷)。
具体步骤:1.新建工程在test目录下创建工程fulladder然后直接finish;2.编写VHDL:New一个VHDL FILE,输入代码:library ieee;use ieee.std_logic_1164.all;ENTITY fulladder IS PORT( a,b,cin : IN STD_LOGIC;s,cout: OUT STD_LOGIC);END fulladder;ARCHITECTURE fulladder OF fulladder ISBEGIN s<= a XOR b XOR cin;cout <=(a AND b) OR (a AND cin) OR (b AND cin);END fulladder;保存在test目录下,文件名为默认fulladder。
3. 在Quartes II 11.0界面菜单栏中选择 Tools-->options选项卡中选中EDA tool options,在该选项卡中下面的ModelSim-Altera一项指定安装路径为(如d:/Altera/11.0/modelsim_ae/win32aloem)4.在Quartes II 11.0界面菜单栏中选择Assignments->Settings。
选中该界面下EDA Tool settings中的Simulation一项;Tool name中选择ModelSim-Altera;Format for output netlist中选择开发语言的类型VHDL或其它,如图:然后点击APPLY应用和OK。
5.设置完成后,编译工程:在Quartus II 11.0界面菜单栏中选择菜单栏选择Processing-->start Compilation,等待编译,无错后会在test目录下生成simulation目录,执行下一步。
QuartusII调用modelsim无缝仿真
QuartusII调⽤modelsim⽆缝仿真本篇⽂章为转载,写的不错,最近在学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进⾏绑定。
quartus 中调用modelsim仿真
quartus 中调用modelsim仿真
在quartus中调用modelsim仿真,不需要调用额外的库,因为一直以来没有完完整整的好好认真的学习altera fpga,所以一直是旁门左道的折腾,导致学到的,一段时间后又忘记了,所以现在做点笔记,下次忘记的时候能不走弯路。
1.打开quartus,在setting中选择modelsim-altera,配置如下图1,
,
1
2.选择nativelink setting的test benches....,跳出test benches对话框,选择new。
3.在edit test bench settings中,填写test bench name ,top level module in test benchy
以及design instance name in test bench,其中前两个名字可以一样,即顶层文件名,最后一个随便。
4.填写end simulation at时间,即停止仿真时间。
5.file name中添加仿真文件,点add,点OK,即可
6.重新编译
7.tools ,run eda simulate tool,rtl eda simulation.
8.结束,直接进入modelsim altera界面仿真。
2014-06-24--------------------------------------------------------------------angry_kua_max。
Quartus II调用ModelsimSE进行功能仿真
Quartus II调用ModelsimSE进行功能仿真笔记中主要介绍基于工程流程的功能仿真流程示例1:简单的计数器设计并利用ModelsimSE仿真Step1 新建一个工程1.在Quartus II菜单栏中通过File下拉菜单New Project Wizard建立工程。
a.第一页:Directory,Name,Top-Level Entity[page 1 of 5]主要完成以下功能:设置工程路径(Directory)、设置工程名称(Name of Project)、设置工程中顶层实体名称(Name of Top-Level Entity)。
b.第二页:Add Files[page 2 of 5]主要完成以下工能:向工程中添加已存在的设计文件。
c.第三页:Family&Device Settings[page 3 of 5]主要实现完成功能:选择自己所使用的FPGA芯片。
d.第四页:EDA Tool Settings[page 4 of 5]主要完成功能:根据需要选择使用哪种EDA工具Design Entry/Synthesis:设计输入/综合工具Simulation:仿真工具Timing Analysis:时序分析工具Format Verification:格式验证工具Board –Level:板级工具e.第五页:Summary[page 5 of 5]主要完成功能:生成建立工程的总结报告,包含了前面设置的内容。
根据报告查看新建工程是否与自己要建立的工程要求一致,如果不一致返回(<Back)上一层或多层进行修改,直到满足要求为止。
f.Finish:通过工程向导完成新建工程。
2.向新建工程中添加设计文件。
根据自己使用的HDL语言添加设计文件,Finish完成。
本示例中设计文件代码如下所示:完成一个简单的计数器,使计数器计数满128后重新计数。
module count_128(clk,rst_n,count);//工程模块及端口声明input clk,rst_n;//输入信号:时钟信号和复位output reg[7:0] count;//定义count位宽和数据类型always@(posedge clk or negedge rst_n)if(!rst_n)count<=8'd0;//复位置零else if(count[7])//当count最高位为1,也就是计数到128时,count置0count<=1'd0;else //否则继续计数count<=count+1'd1;endmodule/*计数模块实现128计数,当coun计数满128重新计数*/3.将设计文件保存在工程目录下并对设计文件进行语法分析。
在quartusII中用modelsim-altera仿真
在quartusII中用modelsim_altera做功能仿真1.设置modelsim_altera的执行路径(即其安装路径中的可执行文件的路径)(1)Tool→Options(2)打开如下图:(3)选择general →EDA Tool Options,在右侧的窗口中选择Modelsim_Altera,在Location of Executable中单击,用浏览的方式找到该软件的安装路径中的可执行文件路径,单击确定。
到此仿真软件的设置基本完成了。
2.项目仿真当我们建立一个新的项目时是需要对其中代码进行仿真的,整个过程需要三步:2.1首先,要预先设置仿真软件;下面介绍如何预设仿真软件。
1.Assignments→Settings…2.打开如下界面3选择“Simulation”,右侧设置按上图设置。
2.2其次,仿真之前需要编写测试平台,测试平台有两种的方法:●直接建立XX.v文件●在quartusII中自动生成测试平台模板文件,文件为XX.vt文件下面介绍如何自动生成测试平台模板文件。
1.Processing→Start→Start Test Bench Template Writer注意:要生成testbench模板的前提条件是为项目选择预用的仿真软件,然后模块必须编译成功。
Testbench模板生成后的默认路径为:项目目录\simulation\modelsim\项目名.vt(因为刚才在预设置仿真软件时的“Output Directory”选择的是默认的值simulation\modelsim)。
2.对于自动生成的测试平台模版需要打开修改测试激励信号,这里不做介绍,很简单的。
2.3改写完后要在项目里添加测试平台文件到项目里。
1.Assignments→Settings…2.在打开界面做如下操作:(1)选择“Compile test bench”,然后单击“Test Benches…”(2)打开下面的窗口(3)单击“New”打开下面的窗口,且按图中填写相关信息这个窗口是用来输入testbench的资料和选择testbench的路径的。
QuartusII和Modelsim的联合仿真(详细)
QuartusII和Modelsim的联合仿真(详细)这篇⽂章不需要在modelsim中建库、映射、建⼯程等⼀些繁琐的步骤,直接使⽤modelsim中的默认work库。
使⽤quartus+modelsim联合仿真。
⾸先推荐⼀篇⽂章⾸先,根据上⼀篇⽂章,建⽴⼀个testbench模板;第⼀次⽤modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->general->EDA tool options ,在右边选择modelsim的安装路径,如下图:然后在Quartus->setting->simulation中设置仿真⼯具(选择modelsim),输出netlist语⾔(选择 VHDL or Verilog),然后在下⾯添加testbench;如下图:到edit test settings这个步骤的时候需要说明⼀下,其中test bench name可以⾃⼰定,下⾯两个的内容根据test bench⽂件中的内容⽽定。
⽐如说我⽤verilog写的test bench如下:那么我下⾯两个的名字就为分别为 Counter_tb和counter 如下图:如果是⽤VHDL写的test bench,如下图那么我们下⾯两个的内容就是ADC_vhd_tst和i1,如同下图这样设置了之后,就可以从quartus中直接进⾏RTL仿真和门极(时序)仿真了,(上图打勾就代表使⽤时序仿真);具体为什么要这么设置请看如果不这么设置的话,可以进⾏RTL仿真,但是不能进⾏门级(时序)仿真,门级(时序)仿真的时候会报 Failed to find INSTANCE 错误。
做到上⼀部可以编写程序,然后编译,接着运⾏RTL simulation,这个时候modelsim会⾃⼰启动,然后⾃⼰编译,接着在work library中会有两个单元,其中⼀个是testbench⽣成的,我们仿真的话是⽤这个。
QUARTUS II 与 MODELSIM联合仿真设置方法_经验总结
DMM :QUARTUS II 与MODELSIM联合仿真设置方法1.在QUARTUS II里新建工程和verilog 源文件,确保verilog文件添加到该工程,且工程名、文件名和文件内的模块名称最好一致;2.编译源文件,确保无错误;3.在QUARTUS II中的TOOL—>options里选中EDA tool options 右边的选项;4.在QUARTUS II的Assignments->Setting,出现的对话框选中EDA tool setting ->simulation,在右边的tool name 选择modelsim(verilog);5.新建.vwf仿真文件,添加端口节点到该文件,并保存(添加节点前应先分配好引脚,再编译,否则无法加入节点);6.选中.vwf文件,导出为.v文件;7.打开modelsim软件,新建工程,添加先前自己编写的.v文件和导出的.v文件到该工程(如果是调用文件中的模块(即层次设计),则应将测试文件,测试中被调用的模块文件和刚导出的.vt文件全部调入),编译这些文件,通过后,在下一选项卡的work里选中某个文件(如果包含有测试文件,则应选中测试文件),右键选simulation,在右边框里出现的信号中选中需要观察的信号,右键add to wave-》select signels(可按住ctrl按键进行多选);8.在modelsim 主框架里设置仿真的时间,点击开始仿真按钮。
注意:verilog文件模块应该有输出或输入端口,否则QUARTUS II编译不能通过;实验发现,如果verilog文件里只有输出,没有输入端口,择从vwf文件导出为.v文件在modelsim里编译通不过;//****************************************************************************注意:1.在用quartus ii编写程序时,比如测试模块名为test_and;被调用的模块名为and;则如果将两个模块文件都添加到了当前工程里,就不用再在test_and.v文件里用`include “./and”去包含该and.v文件,否则编译时会出现重复包含文件的错误。
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需仿真时间精度。
VHDLQuartusII调用Modelsim进行仿真
VHDL ----- Quartus II(11.1版本)调用Modelsim进行仿真之前仿真一直是用Quartus II自带的“Vector Waveform File”,但因其功能有限,在老师的推荐下接触了Modelsim,捣腾了一段时间之后总算有所收获了。
在查资料的过程中,发现好多二者联合的讲解都是用Verilog语言写的例子,而VHDL很少。
以下是我总结的用VHDL 语言的具体步骤以及要注意的细节~~坎坷的路就略过了,直接展示成果。
例子是‘八位七段数码管的动态扫描显示’一.用Quartus II 进行VHDL语言编译1.首先建立工程File->New project Wizard(第三个图标)填入所建工程的目录以及名称,注意稍后的源程序中实体名必须和这里的名称相同。
填好后单击finish,然后单击yes。
2.新建VHDL源程序文件File->New->VHDL File->OK将程序写进去(这里只讲步骤,不讲源程序的写法)注意:程序中的实体名必须和之前建工程时所命名的文件名相同!然后保存一下,不用改动,直接单击保存。
3.编译快捷键按钮在界面中上方的红色倒三角,显示编译成功之后关闭编译报告。
4.设备设置具体的实验器件根据提供的实验板设定Assignment->Device4.引脚分配Assignment->Pin Planner在Location下的方格中填入对应的硬件引脚,也是根据实验板而定6.引脚分配好之后再次编译一下,使分配的引脚起作用。
一、调用Modelsim1、设置仿真工具为Modelsim-alteraTool->Options->EDA Tool Options,在Modelsim-Altera后面的地址改为Modelsim-Altera.exe在你电脑中的位置,然后点击OK。
2、写TestBench文件,这里使用Quartus II生成的模板Processing->start->Start TestBench Template Writer,显示成功后关闭生成报告。
VHDL--QuartusII调用Modelsim进行仿真..doc
VHDL —— Quartus 11(11.1版本调用Modelsim进行仿真之前仿真一直是用Quartus II自带的“ Vector Waveform File但因其功能有限, 在老师的推荐下接触了Modelsim,捣腾了一段时间之后总算有所收获了。
在查资料的过程中,发现好多二者联合的讲解都是用Verilog语言写的例子,而VHDL很少。
以下是我总结的用VHDL语言的具体步骤以及要注意的细节~~坎坷的路就略过了,直接展示成果。
例子是八位七段数码管的动态扫描显示’一.用Quartus II进行VHDL语言编译1. 首先建立工程File->New project Wizard(第三个图标IntroductionT»w WUartf hctw OMt* ■ new preyed preAwurr prwfM rdj^rvg the <oi> i —Cf New Pt eel WLurdDirectory, Nd ok?, f op I eve! t fit Hy [ 1 ol 5JWwt • fw B^grtany »«ClDr 簞 2 *W prqgKl?U r'^Ww FMhag 厚叫<™« 电「申mjrdjQ口»**#1 4 ** e* tw >a^4r-*l *rtir r g W p轉W TIM « *» «*"*«** *B«C*r ・W enfliv*M»W ** 華«*h^ru填入所建工程的目录以及名称,注意稍后的源程序中实体名必须和这里的名称相同。
填好后单击finish撚后单击yes。
新建VHDL源程序文件File->New->VHDL File->OK将程序写进去(这里只讲步骤,不讲源程序的写法电|脚弧{} ts ts e 代%处处 » n 创1鑼a l =*二二imlibrary ieee;use ieee .std_logic_1164.all;use ieee.std_logic_unsigned.all; □ entity hexx is日 port (clk:xn std_logic;―时神信号输入key:in std_logic_vector (3 downto 0) ;■-四位信号若入 ag : out std^logic^vector (6 downto 0);―7段值号辕出 • sei:out std_logic_vector (2 downto 0)) ;-■数码管送择 end;22 sel<«ql; end if;1C 11 12□ architecture a of hexx is 曰begnn□process (elk)variable ql :std logic vector (2 downto 0):■R 000R ; 1€ n19 2C 21 曰曰卜beginif elk*event and clk«thenif ql-w lll H then ql:"000”; else qls-ql*1!*; end if ; 24电i nend process; 细(} tFS / ® 口创圖2 I r = we 789 10library ieee;use ieee.std IoqIc 1164.all;use ieee.5td_logic_unaignedeall: Bentity hexx is曰 port (clk:in std_logic;一时神(8号辐入key: m std logic tor (3 downto 0) ;一Qfifll 号输入sg:ouc std_logic_vector (6 downs 0); -」段(B 号•出 sellout scd_logxc_vector (2 downto 0));■■数冯苣送择 end; 11 Barchitectuxe a of hexx is 12 Qtegin三曰卜曰□process (cllc)variable ql:std_lo^ic —vector (2 downto 0): beginif elk 'event and clJc**!* then If ql —ill- then ql : —000": else •000- end if ; sel<*ql; end if; end process;-HD —曰 6 7 8 2 2 2 ••X•■“ ■八1 2 3 q注意:程序中的实体名必须和之前建工程时所命名的文件名相同!然后保存一下,不用改动,直接单击保存。
QuartusII与modelsim联调仿真
QuartusII与modelsim联调仿真软件版本:<QuartusII 11.0(64-Bit) >,<Modelsim SE-64 10.0c>
新建一个QuartusII项目或者打开现有项目,然后
在弹出的对话框里面进行如下设置:
然后就是用QuartusII生成testbench文件:
如果生成testbench成功的话,会在这个工程文件夹下面产生simulation/modelsim文件夹,里面有用于仿真的testbench文件,***.vt,可以对它进行修改,用于必要的参数初始化等,例如时钟的初始化,复位信号的初始化等等。
然后再次单击Settings,弹出对话框,进行如下设置:
在单击TestBenches后弹出对话框,如下所示:
然后单击new,弹出对话框如下所示:
单击确定后,有如下图示:
特别说明:如果testbench要修改就在联合调用之前进行修改,一般,简单的修改就是添加时钟和复位信号,参考下图:
修改好了则执行如下图所示的内容:
此时,QuartusII会调用Modelsim进行仿真,如果之前的时钟和复位是设置了的,即初始化是成功的,则仿真会在Modelsim启动过后立即执行。
执行结果如下图所示:
至此,即完成了QuartusII与Modelsim的联调仿真。
Quartus II接合ModelSim做仿真
1.启动 QuartusII6.0,在 D:\exam 下新建工程 count。
2.执行 Project 菜单下的 Add/Remove Files in Project... 命令,将 D:\exam 下的 count.v 文件加到工程中来。
3.执行 Assignments 菜单下的 Device... 命令,启动器件设置对话框。
如果所用的实验板为 MC570 则选中 EPM570T100C5 器件,如果是 MC240 实验板,则选中 EPM240T100C5 器件。
4.点击对话框上的“Device & Pin Options...”按钮,在随后弹出的对话框上,进入 Unused Pins 页,将 Reserve all unused pins 设为 As input tri-stated,点击“确定”按钮。
5.在左侧的 Category 窗口里,展开 EDA Tool Setings 组,选中 Simulation 项,对话框的左侧将弹出有关于 Simulation 的设置项。
在 Tool name 一栏,选择 ModelSim;Format for output netlist 一栏,选择 Verilog;Time scale 一栏,选择 1ns。
点击“OK”按钮。
6.在 Assignments 菜单下,点击 Pins 命令。
在 Pin Planner 中,按下图所示,分配管脚。
7.在 Project Navigator 窗口中,将页面切换到文件管理页(中间的),选中 Device Design Files 组中的 count.v 文件,点击右键,在弹出菜单中点击 Set as Top-level Entity 命令,将该文件设为顶层设计文件。
在 Processing 菜单下,点击 Start Compilation 命令,待编译完成后,退出 QuartusII6.0。
将 D:\exam\simulation\modelsim 下的 count_v.sdo 文件复制到 D:\exam 下。
QUARTUS II10.1调用modelsim仿真
QUARTUS II 10.1调用ModelSim-Altera仿真的过程(以上软件在六维空间上面都有,只有QUARTUS需要破解,破解方法在另外一篇文章中详述)。
我是个菜鸟,刚接触这个QUARTUS仿真,以前的版本都是直接利用自带的仿真软件,建立一个波形文件vector wavefile(后来发现这个文件可以在QUARTUS里面直接转化成TESTBENCH文件),现在10.0以后不支持直接这么仿真了,而是建议用外部的仿真器仿真(不知道我理解的对不对)。
害的我费了老大的劲,关键是我是初级的水平,能不能整点容易的。
废话少说,主要是发泄一下我的积怨。
(本文参考“Quartus II 调用ModelSim 仿真”一文)1.建立工程文件,这个我就不多说了。
网上有很多,不过在这里,我想提示一下就是工程文件名称要跟顶层实体名称一致(如果只有一个文件的话,那么工程名要跟MODUEL(Verilog HDL),ENTITY(VHDL)后面的名称一致,还有一个就是这里要跟文件名一致,这个文件是顶层文件),这个名称一致的问题至关重要,在后面还有很多地方要一致,就是大家记住一句话,所有的MODUEL和ENTITY的名称要和文件名一致,我就是后面TESTBENCH 中的MODUEL名称和文件名称不一致导致我出错好久。
2.建立Verilog文件(此处为顶层文件),文件名要和项目名一致,且和MODUEL名一致。
文件如下:在保存之前:保存之后,是自动添加到项目中的,只要文件名一致:3.设置仿真器:Assignments---settings---这里tool name:Format for output netlist:用哪个选哪个,后面的不用改(这个是综合的时候用的,用于生成网表文件),还有个东西就是TESTBENCH 在后面讲。
这里设置完了之后编译源文件就能在那个目录下面生成simulation\modelsim文件夹。
如何在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 的库文件都编译进来了。
下面是重点:新建一个工程文件。
quartus II调用ModelSim仿真
Quartus II调用ModelSim仿真下面是基于在Altera Quartus II下如何调用ModelSim进行仿真的一个实例。
不能否认,Quartus II(我用的7.0)无法像ISE那样方便的直接调用ModelSim,而是需要额外的做一些工作。
这确实给我们的仿真调试带来了一些不便。
特权同学也是在摸索了好久以后才彻底搞定这个问题,下面分享下,力求明白易懂,让大家少走一些弯路。
1、打开Quartus II,新建一个工程,工程代码如下(只是做一个简单的二分频电路):module modelsim_test(clk,rst_n,div);input clk; //系统时钟input rst_n; //复位信号,低有效output div; //2分频信号reg div;always @ (posedge clk or negedge rst_n)if(!rst_n) div <= 1'b0;else div <= ~div;endmodule2、进入菜单栏的AssignmentsÆEDA Tool Settings,进入如下界面:双击“EDA tools”下的“Simulation”选项,弹出如下界面:点击Tool name最右侧的下拉条,选择“ModelSim”,在弹出的界面做如下设置:3、以上设置完成,重新编译工程。
打开工程目录,看到多了一个“simulation”文件夹,再打开该文件夹下的“modelsim”文件夹。
看到有三个文件,其中.vo文件就是我们的代码布局布线信息。
仿真还需要几个文件,我们把它们都拷贝到该目录下。
4、打开“C:\altera\70\quartus\eda\sim_lib”(具体quartus软件安装文件的根目录视您的实际情况而定,大体路径都一样),因为我们用的是MAX II器件,所以把“maxii_atoms.v”拷贝到3中提到的目录下,这个文件是仿真元件库。
Quartus II调用ModelSim仿真方法
系统的仿真方法图1在Quartus II中配置ModelSim-Altera应用第三方软件路径首先,建立工程时,选择仿真软件选ModelSim-Altera,我用的是Verilog硬件描述语言,然后继续内容的编写。
内容编写之后,打开菜单Tool下的Options,在EDA Tool Options中的ModelSim-Altera进行第三方路径的设置,如图1-1 所示,已完成在Quartus II中配置ModelSim-Altera应用第三方软件路径。
如图2 NativeLink settings然后,选择Assignments下的EDA Tool Settings下的Simulation中的NativeLink settings,选择Compile test bench,设置其中的Test Benches,New,然后编辑里头内容,然后具体内容如图 2 所示,然后,Test bench name填入的是设计的顶层文件、Top level module in test bench和Design instance name in test bench是填入仿真的文件的名字,Test bench files填入仿真的文件路径。
最后生成测试文件,选择在Quartus II开发界面菜单栏下Processing下的Start 下面的Start Test Bench Template Writer,提示生成成功。
生成测试仿真文件的大框,里头一些内容还需自己添加。
以下告诉你如何添加内容,在仿真目录下找到为“.vt”的文件,然后打开这个文件,根据需要给以激励和时钟进行编辑。
具体的Test Bench的编写正在附录四中,写完Test Bench之后就可以进行在菜单栏Tools 下的Run EDA Simulation下的EDA RTL Simulation仿真。
Quartus系列:QuartusII原理图调用ModelSim进行仿真
Quartus系列:QuartusII原理图调⽤ModelSim进⾏仿真1.新建⼀个⼯程,创建⼀个原理图⽂件,并在其中进⾏原理图电路绘制,本例以⼀个2输⼊与门为例,如下图所⽰:绘制好电路图后,保存绘制好的电路⾄新建的⼯程,如下图所⽰:因为原理图⽂件ModelSim等第三⽅仿真器并不识别,所以需要将其输出为Veilog或者VHDL⽂件,操作如下:点击当前选项后弹出如下对话框,选择要⽣成的对应的硬件描述语⾔⽂件,点击OK按钮完成对应⽂件的⽣成(⽣成⽂件的路径为当前项⽬⽂件夹下),本⽂中以Verilog为例:确认⽂件⽣成后,在⼯程中单击原理图⽂件,将其从当前⼯程中移除后,右击"Files"如下图所⽰:点击选项后,在弹出的对话框中增加⽣成的源⽂件,如下图所⽰:通过上述步骤,即可将源⽂件加⼊到⼯程中.2 选择"Processing"中的"Start Compilation"完成对项⽬的编译。
3 参考“Quartus II 调⽤ModelSim仿真调试”中的步骤,即可完成对应的ModelSim调⽤仿真。
4 如果想使⽤Quartus中的波形⽂件作为调⽤ModelSim的仿真激励,那么只需要注意以下事项:使⽤波形⽂件完成仿真后,⽣成的波形⽂件本⾝是不能为第三⽅仿真⼯具识别,同样需要将其输出为Verilog或者VHDL等格式,如下图所⽰:单击“Export...”在弹出的对话框中保存⽣成的testbench,此时的testbench中即包含了波形仿真时的激励,但是这个testbench的⽂件后缀为“*.vt”。
选择菜单栏下的Assignments->Settings,在弹出的界⾯中选择EDA Tool Settings->Simulation,设置如下图所⽰:其中“3”指定到⽣成的testbench即可。
最后,如果确实不想将原理图转换为Verilog或者VHDL进⾏仿真,即不想将原理图⽂件从项⽬中移除,那么可以只⽣成功能仿真⽹表进⾏仿真,在指定好testbench后,选择"Tools"->"EDASimulation Tool"->"Run EDA Gate Level Simulation"进⾏仿真。
在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等;在这里可以多选择一些,以备能用到,并且一次编译后,以后就不用再编译了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何从Quartus II中调用Modelsim进行仿真
--穆永强版本说明:Quartus II 11.0版本;ModelSim-Altera 6.6d版本。
一、设置第三方EDA工具
在Tools -> Options中设置ModelSim的安装路径,注意要设置到win32文件夹(64位软件对应的就是win64)。
在Assignments -> Settings中设置仿真工具为ModelSim。
这样Quartus就能无缝调用ModelSim了。
二、编写Testbench
我们可以通过Quartus自动生成一个Testbench的模板,选择Processing -> Start -> Start Test Bench Template Writer,等待完成后打开刚才生成的
Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件。
打开vt文件后可以看到Quartus已经为我们完成了一些基本工作,包括端口部分的代码和接口变量的声明,我们要做的就是在这个做好的模具里添加我们需要的测试代码。
一个最基本的Testbench包含三个部分,信号定义、模块接口和功能代码。
‘timescale 1ns/ 1ps表示仿真的单位时间为1ns,精度为1ps。
想要进行仿真首先要规定时间单位,而且最好在Testbench里面统一规定时间单位,而不要在工程代码里定义,因为不同的模块如果时间单位不同可能会为仿真带来一些问题,而timescale本身对综合也就是实际电路没有影响。
其实Testbench本身可以看做一个模块或者设备(本例中的模块名为
add_vlg_tst),和你自己编写的模块进行通信。
通过Testbench模块向待测模块输出信号作为激励,同时接收从待测模块输出的信号来查看结果。
因此,在待测模块中的reg型信号在Testbench中就变成了wire,待测模块中的wire型信号在Testbench 中则对应为reg型。
那么inout怎么办呢,inout型信号也要设成wire,同时要用一个reg型信号作为输出寄存器,同时设置一个三态门,由一个使能信号控制,如:assign inout_sig = out_en ? out_reg : 1’bz;
处理完接口和声明之后,需要自己设置一些激励信号,激励信号的容就是肯能会输
入到待测模块中的波形。
下面我们就来写一个简单的测试程序。
【复位信号】
initial
begin
rst = 0;
#100 rst = 1;
end
initial开头的这个过程在Testbench中只执行一次,#100表示延时了100个时
间单位,我们之前已经通过timescale进行了设置,这里延时了100ns。
这就有点类
似于C语言了,代码通过延时被顺序执行,rst在0时刻为低电平(也就是逻辑0),
100ns后变成高电平,从而形成了一个上电复位。
【时钟】
initial
begin
clk = 0;
while(1)
#10 clk = ~clk;
always模块中的代码会不断重复执行,利用这个特点,每10ns翻转一次clk,只是这样还不行,还要给clk一个初值,就是上面的initial语句。
如此便可以生成一个周期为20ns,频率50MHz的方波信号,作为本例的系统时钟。
【输入信号】
initial
begin
a = 1;
b = 3;
#200 a = 2;
b = 0;
#200 a = 3;
b = 3;
end
注意这里a = 1和b = 3是同时发生的,也就是并行的,之后延时200ns,a = 2同时b = 0,如前面所说,想要实现顺序操作,就需要使用延时,如果两个语句间没有延时,就表示同时执行。
还有一点,这个initial语句块和负责复位的initial语句块也是并行的,并且都是从0时刻开始。
也就是说,0时刻后经过100ns rst_n复位,再经过100ns(从0时刻起),a = 2被执行。
至此,测试程序也完成了,让我们开始仿真吧
【输出信号】
initial
begin
$display($time,"clk=%d rst =%d led =%d", clk, rst, led);
例如:
`timescale 1ns/1ns //单位时间为1ns/精度为1ns module LED_FLOW;
reg CLOCK_50M;
reg RST_n;
wire [9:0] LED;
led led_inst
(
.clk_50M(CLOCK_50M),
.reset_n(RST_n),
.led(LED)
);
initial
begin
CLOCK_50M = 0;
while (1)
#10 CLOCK_50M = ~CLOCK_50M; end
initial
RST_n = 0;
while (1)
#10 RST_n = 1;
end
initial
begin
$display($time,"CLOCK_50M=%d RST_n=%d LED =%d", CLOCK_50M, RST_n, LED); end
endmodule
三、设置Quartus并调用仿真工具
运行仿真之前,还要设置一下。
在Simulation选项卡中配置仿真选项,可以配置仿真语言、仿真时间的格式以及输出目录。
选中mpile test bench,点击Test Benches 打开Test Benches对话框。
点击New新建一个Test BenchSetting,填入Testbench模块的名称(这里是Collect_VisitFrame.vt),酌情设置仿真运行的时间(这里设为800ns,只是进入ModelSim后仿真自动执行的时间,不设或随意设置也行),并将刚才编写的Testbench 添加进来。
一路OK后,然后再进行一次全编译。
四、调用Modelsim软件
选择Tools -> Run EDA Simulation Tools,有两个选项,RTL Simulation是RTL 行为级仿真,只验证功能是否正确,与在哪个芯片上运行无关,仿真前至少需要执行一次Analysis&Synthesis;Gate Level Simulation是门级仿真,涉及到具体的芯片,并且仿真前需要编译工程,在门级仿真中ModelSim会将布局布线后的门级延时体现在波形中,在测试一个具体的工程模块时,应当先进行RTL仿真,之后还要进行门级仿真。
五、ModelSim工具的基本操作
运行RTL Simulation进入ModelSim界面。
在这里介绍几个比较重要的部分。
在view菜单中,可以显示和隐藏各种工具窗口。
其中Structure窗口显示了测试模块和待测模块的结构:
点击不同的模块,在Objects窗口中可以查看选中模块中的信号,因为除了端口(port)以外,还有很多部信号默认是不显示波形的,通过将需要的信号拖到Wave窗口中,就能够显示。
工具栏中的部分是用来控制仿真运行的,左侧红框中的是复位,在文本框里设置要执行的时间,点击右侧红框中的按钮就可以执行了。
其他的请自行摸索或参看Help文件。
如果面对一大堆0101感觉很晕,可以在信号列表里选号,右键选择要显示的数据格式。
而Wave窗口的左下角有几个小按钮,是用来设置游标的,通过添加游标,可以测量相应的时间,也可以在这里配置时间刻度的格式。
在Wave波形图中,使用滚轮和鼠标右键可以很方便的缩放或选择波形区域,下图
就是这个工程的波形图,在复位之后,相应结果在时钟上升沿输出。
至此,仿真结束!。