1、按一下以編輯母片標題樣式,按一下以編輯母片文字樣式,第二階層,第三階層,第四階層,第五階層,#,1,Modelsim 6.0,使用教程,2006.12 qq:53579621,2,Modelsim简介,Modelsim,仿真工具是,Model,公司开发的。它支持,Verilog,、,VHDL,以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在,Dataflow,窗口查看某一单元或模块的输入输出的连续变化等,比,Q,uartus,自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。,Mo
2、delSim,分几种不同的版本:,SE,、,PE,和,OEM,,其中集成在,Actel,、,Atmel,、,Altera,、,Xilinx,以及,Lattice,等,FPGA,厂商设计工具中的均是其,OEM,版本。比如为,Altera,提供的,OEM,版本是,ModelSim-Altera,为,Xilinx,提供的版本为,ModelSim XE.SE,版本为最高级版本,在功能和性能方面比,OEM,版本强很多,比如仿真速度方面,还支持,PC,、,UNIX,、,LIUNX,混合平台,.,3,为什么要学,Modelsim,?,1.Modelsim,是专业的,HDL,语言仿真器,比,Quartus,自
3、带的仿真器功能强大的多,.,2.Quartus simulator,不支持,Testbench,只支持波形文件,.vwf,vwf,文件全称是矢量波形文件,(Vector Waveform File),,是,Quartus II,中仿真输入、计算、输出数据的载体。一般设计者建立波形文件时,需要自行建立复位、时钟信号以及控制和输入数据、输出数据信号等。其中工作量最大的就是输入数据的波形录入。比如要仿真仅,1KB,的串行输入数据量,则手工输入信号的波形要画,8000,个周期,不仅费时费力而且容易出错,怎样入门,?,对于初学者,,modelsim,自带的教程是一个很好的选择,在,Help-SE PDF
4、 Documentation-Tutorial,里面,.,它从简单到复杂、从低级到高级详细地讲述了,modelsim,的各项功能的使用,简单易懂。,4,Modelsim,的安装,同许多其他软件一样,,Modelsim SE,同样需要合法的,License,通常我们用,Kengen,产生,license.dat,。,解压安装工具包开始安装,安装时选择,Full product,安装。当出现,Install Hardware Security Key Driver,时选择否。当出现,Add Modelsim To Path,选择是。出现,Modelsim License Wizard,时选择,Cl
5、ose,。,在,C,盘根目录新建一个文件夹,flexlm,,用,Keygen,产生一个,license.dat,然后复制到该文件夹下。,修改系统的环境变量。右键点击桌面我的电脑图标,属性,-,高级,-,环境变量,-,(系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。,LM_LICENSE_FILE=c:flexlmlicense.dat,5,6,7,使用,Modelsim,进行仿真,Modelsim,运行方式有,4,种,:,用户图形界面模式,交互式命令行模式,不显示,modelsim,的可视化界面,仅通过命令控制台输入的命令完成所有工作,Tcl
6、,和宏模式,编写可执行扩展名为,do,或者,tcl,语法文件,批处理模式,其所有操作都在后台进行,用户看不到,modelsim,的界面,也不需要交互式输入命令。当工程很大,文件比较多时,用批处理比较方便。直接运行批处理文件,在后台调用,modelsim,执行,modelsim,的脚本文件*,.do,完成操作,注,:-Change Directory,在弹出的,Choose folder,对话框中设置目录路径为,c:/count4,2.,建立工程,在,modelsim,中建立,project,选择,File-New-Project.,在,Project Name,栏中填写你的项目名字,建议和你的
7、顶层文件名字一致。,Project Location,是你的工作目录,你可通过,Brose,按钮来选择或改变。,Ddfault Library Name,可以采用工具默认的,work,。,Workspace,窗口的,library,中就会出现,work,库,.,10,11,3.,为工程添加文件,工程建立后,选择,Add Exsiting File,后,根据相应提示将文件加到该,Project,中,这里是,count4.v,和其测试向量,count_tp.v,源代码如下,:,12,13,4.,编译文件,编译(包括源代码和库文件的编译)。编译可点击,Comlile,Comlile All,来完成。
8、,5.,装载文件,(1),双击,libray,中,work,中的,count_tp,装载,(2),点击,simulate,start simulation,按右图设置,点击,ok,14,6.,开始仿真,点击,workspace,下的,sim,点击,count_tp,选择,add,add to wave,然后点,run all,开始仿真,15,7.,退出仿真,在仿真调试完成后退出仿真,在主窗口中选择,simulate,end simulation,16,补充,:,(1),也可以不加,testbench,仿真步骤跟前面相似,装载文件时双击,count4,在,sim,中点击,count4,add,a
9、dd to wave,对输入信号,clk,reset,编辑测试波形,点击,run-all,17,(2),我们可以在,modelsim,内直接编写,Testbench,Modelsim,提供了很多,Testbench,模板,我们直接拿过来用可以减少工作量。点,View-Source-Show Language Templates,然后会出现一个加载工程,接着你会发现在刚才的文档编辑窗口左边出现了一个,Language Templates,窗口,18,展开,Verilog,项,双击,Creat Testbench,会出现一个创建向导选择,Specify Design Unit,工作库下的目标文件,
10、点,Next,可以指定,Testbench,的名称以及要编译到的库等,此处我们使用默认设置直接点,Finish,。这时在,Testbench,内会出现对目标文件的各个端口的定义还有调用函数,接下来,设计者可以自己往,Testbench,内添加内容了,然后保存为,.v,格式即可。按照前面的方法把,Testbench,文件也编译到工作库中,.,19,门级仿真和时序仿真,仿真需要的文件,1,综合布局布线生成的网表文件,2,测试激励,3,元件库,Altera,仿真库的位置为,C:alteraquartus50edasim_lib,4,时序仿真的话,还需要具有时延时延信息的反标文件(,sdf,),门级仿
11、真有两种方法,(1),工程编译成功后自动启动,Modelsim,运行门级仿真,(2),先在,quartus,中生成网表文件和时延文件,然后调用,modelsim,进行仿真,工程编译成功后自动启动,Modelsim,运行门级仿真,1.Quartus,中设置仿真工具,打开,quartus,建立工程,选择,Assignments|EDA Tool Settings,,选择左栏的“,Simulation”,设置如下,:,20,21,然后,我们单击下方的“More Settings”按钮,弹出“More Settings”对话框,.这种门级仿真的,testbench,有两种方法生成,(,1),自己手动编
12、写,testbench count_tp.v,more settings,中设置如下,然后点击,quartus,的,start compilation,开始编译,我们会发现,QuartusII,状态栏多出两项“,EDA Netlist Writer”,和“,EDA Simulation Tool”,22,在,modelsim,中我们可以看到,modelsim,自动把仿真所需要元件库库文件加了进来,不用我们手动加入,同时仿真结果也出来了,.,退出,ModelSim,后,,QuartusII,才完成全部编译,运行,ModelSim,后会弹出“,Finish Vsim”,对话框,单击“否”,23,2
13、4,(,2),利用,quartus II,生成,testbench,文件,在,quartus II,界面选择,File,New,新建一个波形文件,编辑仿真信号,的激励源,最后保存带有激励信号的波形文件,.,转换,:,Quartus II,提供了把,.vwf,文件转换成,.vt,的功能,选择主菜单,File,Export,可以保存为,.vt,或者,.v,文件,对仿真没有影响,25,more settings,中设置如左图,底下的,testbenchmode name,是*,vlg_vec_tst,(对应,verilog,,*是你的主程序名),用*,_vhd_vec_tst,对应,vhdl,。,然
14、后编译,以后的同上,26,先在,quartus,中生成网表文件和时延文件,然后调用,modelsim,进行仿真,Quartus II,中设置仿真工具,more settings,也不用设置,27,设置完后,成功编译,quartus II,会自动在当前,project,目录下生成一个,simulation,目录,在该目录下有一个,Modelsim,的文件夹,此文件夹下有仿真所需要的网表文件及延时反标文件,.,如果使用,vhdl,语言,则网表文件是,.vho,反标文件是,.sdo;,如果使用,verilog,语言,则网表文件是,.vo,sdf,文件也是,.sdo.,这个时候的,testbench,
15、最好是自己手动编写的,这里是,count_tp.v,Modelsim,后仿真主要步骤,建立库并映射库到物理目录;编译,Testbench,;执行仿真。,28,建立库,仿真库是存储已编译设计单元的目录,,modelsim,中有两类仿真库,一种是工作库,默认的库名为,work,另一种是资源库。,Work,库下包含当前工程下所有已经编译过的文件。所以编译前一定要建一个,work,库,而且只能建一个,work,库。资源库存放,work,库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内,.,映射库用于将已经预编译好的文件所在的目录映射为一个,modelsim,可识别的库,库
16、内的文件应该是已经编译过的,在,Workspace,窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的,。,在,Modelsim,中加入,Quartus,的仿真库有两种方法,:,1.,自己新建一个库,用来存放仿真需要调用的仿真文件,2.,把,Altera,的器件加到了,work,这个,library,里,第一种方法容易出现,Fatal:SDFfilesrequireAlteraprimitivelibrary,到,ModelSim-Altera,目录下,如,D:Altera11.0modelsim_aealteraverilogcycloneii,中去拷贝已经被,Mode
17、lsim,编译好的库,这样就可以正常加载了。,而我采用的是编译,D:Altera11.0quartusedasim_lib,cycloneii_atoms.v,的方法来产生这些原语库,至于为什么产生错误,我还不太清楚。或许是我用的是,Modelsim-Altera,版本,而如果使用的是,ModelSim-SE,版本应该不会出现上述问题。,29,利用方法,1,进行后仿真,1.,在,modelsim,中建立,project,与功能仿真相似,建立工程,count4,并加入文件,count4.vo,count_tp.v,库文件,cycloneii_atoms.v,此时就不需要源代码文件了,.,在成功建
18、立,Project,后,,Modelsim,会,增加一个页面,点击,Modelsim,左下角,的,Library,点击,FileNewLibrary,。在在,Library Name,中输入库名,该名应和,Altera,的库名保持一致。这里取名为,cycloneii,30,所需编译的库因所用,HDL,语言的不同而不同。假设用,tratix,器件,对,Verilog,语言,则需编译,STRATIX_ATOMS.,文件。对,VHDL,,所要编译的库文件为,STRATIX_ATOMS.VHD,和,STRATIX_ATOMS_COMPONENTS.VHD,;,2.,编译库文件和网表,完成以上进程后,点
19、击,workspace,下方的,project,选择,cycloneii_atoms.v,设置其属性如下,然后对,cycloneii_atoms.v,单独编译,编译后可看到,cycloneii,库里有很很多文件,这些都是仿真是要用到的,31,32,然后分别编译,count4.vo,count_tp.v,3.,仿真准备,已经准备了仿真所需要的所有的文件,.,选择,simulatestart simulation.,单击,libraries,标签,单击,add,按纽,将刚才建立的,cycloneii,加入,33,在,design,标签栏中做如下设置,34,如果是对时序仿真,还要加入,sdf,文件,
20、单击,sdf,再单击,add,将生成的,.sdo,文件找到,加入,.sdo,文件后,做如下设置,:,在,Apply to Region,框内填入反标文件所对应的模块。,Count_tp,为测试激励程序,,mycount,为被仿真的模块在激励程序中的例化名字。单击,ok,将,sdf,文件加入,然后单击,load,,就可已开始仿真了。,35,36,利用方法,2,进行后仿真,把,Altera,的器件加到了,work,这个,library,里,把需要的,altera,仿真库拷贝到你要编译的文件所在的文件夹里。先编译这个文件,等于是把,Altera,的器件加到了,work,这个,library,里。然后
21、再在,library,下编译你要用的文件就可以了。这样方便些,也不用建立新库了,.,大家可以试一试,37,如何仿真,altera,中的,megacore,呢,?,跟上面所讲的仿真没什么差别,仿真,megacore,在时,一般要用到,altera,仿真库中的,220model.v,和,altera_mf.v,以,fifo,为例,:,用,MEGA,生成一个,FIFO.V,并添加到,modelsim,工程中必须为,FIFO.V,添加支撑文件,(,这几个问题建要比,FIFO.V,先编译,),位于,.alteraquartus50edasim_lib,要添加的文件如下,:220model.v alter
22、a_mf.vcycloneii_atoms.v(,这个是根据你,altera,的,Fpga,器件决定,),详细操作步骤可见文档,PLL,在,MODELSIM SE,中的仿真步骤,38,利用,modelsim,进行系统仿真,以,LED,实验为例,在,quartus,中建立工程,在,sopc builder,中建立系统,如下,:,39,点击,generate,前设置,modelsim,路径,然后,generate,选择“,File|SOPC Builder Setup”,选择,ModelSim,安装目录下的“,Win32”,文件,40,单击“Run Nios II IDE”按钮运行NiosII I
23、DE,新建工程,源代码如下,#include,system.h,#include,altera_avalon_pio_regs.h,#include,alt_types.h,int,main(,void,)_attribute_(weak,alias(alt_main);,int,alt_main(,void,),alt_u8 led=0 x2;,alt_u8 dir=0;,volatile,int,pio_led_data=0;,volatile,int,i;,while,(1),if,(led&0 x81),dir=(dir 0 x1);,if,(dir),led=led 1;,else,
24、led=led 1;,pio_led_data=led;,IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,pio_led_data);,i=0;,while,(i10),i+;,return,0;,41,编译前进行一些设置,右击工程名选择“,System Library Properties”,,在对话框中选择“,Small C library”,,否则应用程序文件太大,“,ram_0”,空间不够。然后,选择“,Project|Build all”,进行编译。,运行,ModelSim,进行仿真。选择“,Run|Run”,,选择“,NiosII ModelSim”,单击左下角“,New”,。工程为“,hello_led_0”,。,42,单击“,Run”ModelSim,运行,在,Transcript,窗口中输入命令“,s”,回车,该命令是把所有设计文件加载到工程中,43,44,再执行“,c”,回车,对工程进行重编译。然后,执行“,w”,回车命令,建立波形文件。把“,Wave”,窗口中所有信号全部删除,然后在“,Objects”,窗口中选择仿真信号“,clk”,、“,reset_n”,和“,out_from_the_pio_led”,右击添加到“,wave”,窗口中。,45,46,谢谢大家,!,