modelsim教程个人总结.docx
- 文档编号:6710663
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:21
- 大小:685.07KB
modelsim教程个人总结.docx
《modelsim教程个人总结.docx》由会员分享,可在线阅读,更多相关《modelsim教程个人总结.docx(21页珍藏版)》请在冰豆网上搜索。
modelsim教程个人总结
一、Modelsim简介
Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比Quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
ModelSim分几种不同的版本:
SE、PE和OEM,其中集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。
比如为Altera提供的OEM版本是ModelSim-Altera,为Xilinx提供的版本为ModelSimXE.SE版本为最高级版本,在功能和性能方面比OEM版本强很多,比如仿真速度方面,还支持PC、UNIX、LIUNX混合平台。
为什么要学Modelsim?
1.Modelsim是专业的HDL语言仿真器,比Quartus自带的仿真器功能强大的多.
2.Quartussimulator不支持Testbench,只支持波形文件.vwf
vwf文件全称是矢量波形文件(VectorWaveformFile),是QuartusII中仿真输入、计算、输出数据的载体。
一般设计者建立波形文件时,需要自行建立复位、时钟信号以及控制和输入数据、输出数据信号等。
其中工作量最大的就是输入数据的波形录入。
比如要仿真仅1KB的串行输入数据量,则手工输入信号的波形要画8000个周期,不仅费时费力而且容易出错
怎样入门?
对于初学者,modelsim自带的教程是一个很好的选择,在Help->SEPDFDocumentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。
Modelsim的安装
同许多其他软件一样,ModelsimSE同样需要合法的License,通常我们用Kengen产生license.dat。
⑴解压安装工具包开始安装,安装时选择Fullproduct安装。
当出现InstallHardwareSecurityKeyDriver时选择否。
当出现AddModelsimToPath选择是。
出现ModelsimLicenseWizard时选择Close。
⑵在C盘根目录新建一个文件夹flexlm,用Keygen产生一个license.dat,然后复制到该文件夹下。
⑶修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。
LM_LICENSE_FILE=c:
\flexlm\license.dat
使用Modelsim进行仿真
Modelsim运行方式有4种:
用户图形界面模式
交互式命令行模式
不显示modelsim的可视化界面,仅通过命令控制台输入的命令完成所有工作
1、Tcl和宏模式
编写可执行扩展名为do或者tcl语法文件
2、批处理模式
其所有操作都在后台进行,用户看不到modelsim的界面,也不需要交互式输入命令。
当工程很大,文件比较多时,用批处理比较方便。
直接运行批处理文件,在后台调用modelsim,执行modelsim的脚本文件*.do,完成操作
注:
仿真
仿真分为功能仿真,门级仿真,时序仿真。
1、功能仿真(前仿真,代码仿真)
主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。
可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与Testbench.在设计的最初阶段发现问题,可节省大量的精力
2、门级仿真和时序列仿真(后仿真)
使用综合软件综合后生成的门级网表进行仿真,不加入时延文件的仿真就是门级仿真.可以检验综合后的功能是否满足功能要求,其速度比功能仿真要慢,比时序仿真要快.
在门级仿真的基础上加入时延文件(.sdf)的仿真就是时序仿真,比较真实地反映了逻辑的时延与功能.综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规
功能仿真
功能仿真需要的文件
1.设计HDL源代码:
可以使VHDL语言或Verilog语言。
2.测试激励代码:
根据设计要求输入/输出的激励程序
3.仿真模型/库:
根据设计内调用的器件供应商提供的模块而定,如:
FIFO、ADD_SUB等
仿真步骤(以4位计数器为例给出详细步骤)
1.启动modelsim软件
先在c盘建立文件夹count4,在modelsim中选择File->ChangeDirectory,在弹出的Choosefolder对话框中设置目录路径为c:
/count4
2.建立工程
在modelsim中建立project,选择File->New->Project.
在ProjectName栏中填写你的项目名字,建议和你的顶层文件名字一致。
ProjectLocation是你的工作目录,你可通过Brose按钮来选择或改变。
DdfaultLibraryName可以采用工具默认的work。
Workspace窗口的library中就会出现work库.
3.为工程添加文件
工程建立后,选择AddExsitingFile后,根据相应提示将文件加到该Project中
这里是count4.v和其测试向量count_tp.v,源代码如下:
4.编译文件
编译(包括源代码和库文件的编译)。
编译可点击ComlileðComlileAll来完成。
5.装载文件
(1)双击libray中work中的count_tp装载
(2)点击simulate–startsimulation
按右图设置,点击ok
6.开始仿真
点击workspace下的sim,点击count_tp,选择addàaddtowave
然后点run–all,开始仿真
7.退出仿真
在仿真调试完成后退出仿真,在主窗口中选择simulateàendsimulation
补充:
(1)也可以不加testbench,仿真步骤跟前面相似,装载文件时双击count4
在sim中点击count4,addàaddtowave
对输入信号clk,reset编辑测试波形
点击run-all
(2)我们可以在modelsim内直接编写Testbench
Modelsim提供了很多Testbench模板,我们直接拿过来用可以减少工作量。
点View->Source->ShowLanguageTemplates然后会出现一个加载工程,接着你会发现在刚才的文档编辑窗口左边出现了一个LanguageTemplates窗口
展开Verilog项,双击CreatTestbench会出现一个创建向导选择SpecifyDesignUnit工作库下的目标文件,点Next
可以指定Testbench的名称以及要编译到的库等,此处我们使用默认设置直接点Finish。
这时在Testbench内会出现对目标文件的各个端口的定义还有调用函数
接下来,设计者可以自己往Testbench内添加内容了,然后保存为.v格式即可。
按照前面的方法把Testbench文件也编译到工作库中.
门级仿真和时序仿真
仿真需要的文件
1.综合布局布线生成的网表文件
2.测试激励
3.元件库
Altera仿真库的位置为C:
\altera\quartus50\eda\sim_lib
4.时序仿真的话,还需要具有时延时延信息的反标文件(sdf)
门级仿真有两种方法
(1)工程编译成功后自动启动Modelsim运行门级仿真
(2)先在quartus中生成网表文件和时延文件,然后调用modelsim进行仿真
工程编译成功后自动启动Modelsim运行门级仿真
1.Quartus中设置仿真工具
打开quartus,建立工程,选择Assignments|EDAToolSettings…,选择左栏的“Simulation”,设置如下:
然后,我们单击下方的“MoreSettings”按钮,弹出“MoreSettings”对话框.这种门级仿真的testbench有两种方法生成
(1)自己手动编写testbenchcount_tp.v
moresettings中设置如下:
然后点击quartus的startcompilation,开始编译,我们会发现QuartusII状态栏多出两项“EDANetlistWriter”和“EDASimulationTool”。
运行ModelSim后会弹出“FinishVsim”对话框,单击“否”。
在modelsim中我们可以看到,modelsim自动把仿真所需要元件库库文件加了进来,不用我们手动加入,同时仿真结果也出来了。
退出ModelSim后,QuartusII才完成全部编译。
(2)利用quartusII生成testbench文件
在quartusII界面选择FileàNew,新建一个波形文件,编辑仿真信号的激励源,最后保存带有激励信号的波形文件。
转换:
QuartusII提供了把.vwf文件转换成.vt的功能,选择主菜单FileàExport,可以保存为.vt或者.v文件,对仿真没有影响。
moresettings中设置如右图
右图中的test bench modename是
*—vlg_vec_tst(对应verilog,*是你的
主程序名),用*_vhd_vec_tst对应vhdl。
然后编译,以后的同上。
先在quartus中生成网表文件和时延文件,然后调用modelsim进行仿真。
QuartusII中设置仿真工具,moresettings也不用设置。
设置完后,成功编译,quartusII会自动在当前project目录下生成一个simulation目录,在该目录下有一个Modelsim的文件夹,此文件夹下有仿真所需要的网表文件及延时反标文件。
如果使用vhdl语言,则网表文件是.vho,延时反标文件是.sdo;如果使用verilog语言,则网表文件是.vo,sdf文件也是.sdo。
这个时候的testbench最好是自己手动编写的,这里是count_tp.v。
Modelsim后仿真主要步骤:
建立库并映射库到物理目录;编译Testbench;执行仿真。
建立库
仿真库是存储已编译设计单元的目录,modelsim中有两类仿真库,一种是工作库,默认的库名为work,另一种是资源库。
Work库下包含当前工程下所有已经编译过的文件。
所以编译前一定要建一个work库,而且只能建一个work库。
资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内。
映射库用于将已经预编译好的文件所在的目录映射为一个modelsim可识别的库,库内的文件应该是已经编译过的,在Workspace窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的。
在Modelsim中加入Quartus的仿真库有两种方法:
1、自己新建一个库,用来存放仿真需要调用的仿真文件
2、把Altera的器件加到了work这个library里
利用方法1进行后仿真
1.在modelsim中建立project
与功能仿真相似,建立工程count4,并加入文件count4.vo,count_tp.v,库文件cycloneii_atoms.v,此时就不需要源代码文件了.
在成功建立Project后,Modelsim会
增加一个页面,点击Modelsim左下角
的Library。
点击File—New—Library。
在LibraryName中输入库名,该名应和Altera的库名保持一致。
这里取名为cycloneii。
所需编译的库因所用HDL语言的不同而不同。
假设用Stratix器件,对Verilog语言,则需编译STRATIX_ATOMS.V文件。
对VHDL,所要编译的库文件为STRATIX_ATOMS.VHD和STRATIX_ATOMS_COMPONENTS.VHD。
2.编译库文件和网表
完成以上进程后,点击workspace下方的project,选择cycloneii_atoms.v,设置其属性如下:
然后对cycloneii_atoms.v单独编译,编译后可看到cycloneii库里有很很多文件,这些都是仿真是要用到的。
然后分别编译count4.vo,count_tp.v。
3.仿真准备
已经准备了仿真所需要的所有的文件.选择simulateàstartsimulation.
单击libraries标签,单击add按纽,将刚才建立的cycloneii加入。
在design标签栏中做如下设置:
如果是对时序仿真,还要加入sdf文件,单击sdf,再单击add,将生成的.sdo文件找到,加入.sdo文件后,做如下设置:
在ApplytoRegion框内填入反标文件所对应的模块。
Count_tp为测试激励程序,mycount为被仿真的模块在激励程序中的例化名字。
单击ok将sdf文件加入,然后单击load,就可已开始仿真了。
利用方法2进行后仿真
把Altera的器件加到了work这个library里
把需要的altera仿真库拷贝到你要编译的文件所在的文件夹里。
先编译这个文件,等于是把Altera的器件加到了work这个library里。
然后再在library下编译你要用的文件就可以了。
这样方便些,也不用建立新库了.大家可以试一试。
如何仿真altera中的megacore呢?
跟上面所讲的仿真没什么差别
仿真megacore在时,一般要用到altera仿真库中的220model.v和altera_mf.v
以fifo为例:
用MEGA生成一个FIFO.V并添加到modelsim工程中
必须为FIFO.V添加支撑文件(这几个问题建要比FIFO.V先编译),
位于..\altera\quartus50\eda\sim_lib\要添加的文件如下:
220model.v
altera_mf.v
cycloneii_atoms.v(这个是根据你altera的Fpga器件决定)
详细操作步骤可见文档PLL在MODELSIMSE中的仿真步骤
利用modelsim进行系统仿真以LED实验为例
在quartus中建立工程,在sopcbuilder中建立系统,如下:
点击generate前设置modelsim路径,然后generate
选择“File|SOPCBuilderSetup…”选择ModelSim安装目录下的“Win32”文件。
单击“RunNiosIIIDE”按钮运行NiosIIIDE
新建工程,源代码如下
#include"system.h"
#include"altera_avalon_pio_regs.h"
#include"alt_types.h"
intmain(void)__attribute__((weak,alias("alt_main")));
intalt_main(void)
{
alt_u8led=0x2;
alt_u8dir=0;
volatileintpio_led_data=0;volatileinti;
while
(1)
{
if(led&0x81)
{
dir=(dir^0x1);}
if(dir)
{
led=led>>1;}
else
{
led=led<<1;
}
pio_led_data=~led;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,pio_led_data);
i=0;
while(i<10)
i++;
}
return0;
}
编译前进行一些设置,右击工程名选择“SystemLibraryProperties”,在对话框中选择“SmallClibrary”,否则应用程序文件太大,“ram_0”空间不够。
然后,选择“Project|Buildall”进行编译。
运行ModelSim进行仿真。
选择“Run|Run…”,选择“NiosIIModelSim”单击左下角“New”。
工程为“hello_led_0”。
单击“Run”ModelSim运行
在Transcript窗口中输入命令“s”回车,该命令是把所有设计文件加载到工程中。
再执行“c”回车,对工程进行重编译。
然后,执行“w”回车命令,建立波形文件。
把“Wave”窗口中所有信号全部删除,然后在“Objects”窗口中选择仿真信号“clk”、“reset_n”和“out_from_the_pio_led”右击添加到“wave”窗口中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- modelsim 教程 个人 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)