ModelSim-Altera版本仿真流程
1、建立ModelSim-Altera工作环境
1.1版本说明
ModelSim-Altera(OEM)version 6.4a
QuartusII version 9.0
该ModelSim版本支持所有QuartusII支持的Altera器件。
1.2要自动从Quartus II运行EDA设计输入、综合、仿真或者时序分析工具,您必须指定第三方EDA工具的可执行文件位置,通过单击Tools菜单上的Options供然后点击EDA Tool Options选项。
2、用ModelSim-Altera建立工程
2.1 如果要执行时序仿真,需要产生Verilog(.vo)或者VHDL(.vho)输出文件。
a. 选择EDA Tool Settings
b. 用QuartusII编译设计文件
注:如果已经编译过设计,要重新产生.vo、.vho和.sdo(标准延迟输出文件)的话,只需要运行Start EDA Netlist Writter即可。同时也可以用于产生.vcd文件。
如果要执行功耗估算,确保在Simulator Settings下的Settings对话框选择合适的参数。
2.2 启动Modelsim软件,选择工程目录:File—>Change Directory.
注:如果要执行功能仿真,工程目录就是包含设计文件的目录;
如果要进行时序仿真,工程目录务必设在包含.vo、.vho和.sdo的目录下。
2.3 创建新的工作库:
a. File—>New—>Library,出现创建新库的对话框
b. 在Create选项下,选择a new library and a logical mapping to it.
c.在Library Name中输入库的名称
注:如果你想要脱离QuartusII独立运行Modelsim,库文件名必须是work;如果是由QuartusII自动运行Modelsim,则库的名称被自动名为ModelSim_work,并且位于QuartusII的过程目录下。
3、用ModelSim-Altera执行功能仿真
3.1 编译Verilog或者VHDL文件和Test Bench文件(如果你使用testbench的话)
a. Compile menu, 点击Compile.
b. 在Library列表下选择work库
c. 选择需要的Verilog或者VHDL文件
注:如果选择.vo、.vho文件作为功能仿真的话,必须在下面操作前进行编译。
d. 执行编译
e. 重复上面操作,编译testbench文件
f. 点击done完成。
3.2 加载设计:
a. 在Simulate菜单中,点击Simulate.出现Simulate对话框
b. 如果要仿真Verilog HDL设计文件,指定ModelSim预编译库
i. 点击Libraries标签
ii.在Search Libraries (-L)中,点击Add选择适当的库
iii. 点击OK完成
c. 在Name 列表中,点击+展开work库,选择要仿真的顶层文件(一般是testbench)
d. 点击OK完成
3.3 在ModelSim中执行功能仿真
4、用ModelSim-Altera执行时序仿真
重要提示:强烈建议在进行RAM仿真时,将Time scale设置为飞秒ps级别!
4.1 编译Verilog或者VHDL输出文件和testbench文件,方法同功能仿真。
4.2 如果你的设计包含全局复位或者全局上电信号,并且还没这么做,可以在Verilog或者VDHL输出文件中建立这些信号。方法如下:
对于Verilog,在仿真前,将下列代码加到testbench文件中:
reg <device-wide reset>;
reg <device power up>;
initial
begin
<device power up> = 0;
#<time> <device power up> = 1;
对于VHDL,在仿真前运行下列命令:
force /<design>/<entity>/<device power up> 0 0 ns
force <design>/<entity>/<device power up> 1 <time> ns
force /<design>/<entity>/<device-wide reset> 1 0 ns
注: <device-wide reset> 是全局复位信号名称,<device power up> 是全局上电信号,<time> 是一个时间值,它介于0和实际开始仿真的时间之间。
4.3 在Simulate菜单中,点击Simulate.出现Simulate对话框
4.4 如果是仿真verilog语言,点击verilog标签,在Pulse Options中的Error Limit 和Rejection Limit中填入0.
4.5 如果仿真的是VHDL设计,指定.sdo标准延迟文件:
a. 点击SDF标签,点击ADD
b. 在Add SDF Entry对话框中,点击Browse,出现Select SDF File对话框
c. 选择标准延迟输出.sdo文件
注:如果使用的是test bench文件作为设计的激励,那么在Apply to region 框中,从顶层设计文件开始,将路径指向test bench中的instance
4.6 如果仿真的是verilog设计,要指定预编译库(ModelSim precompiled libraries)
a. 点击Library标签,在Search Libraries (-L)中,点击Add.
b. 指定目录\<ModelSim-Altera install directory>\altera\verilog\<device family>\,点击OK;
4.7 点击Design标签,在Name列表中,点击+展开work库,并选择标准延时输出文件对应的设计实体(entity),点击OK完成。
4.8 如果要仿真高速电路(包括HSSI, LVDS, PLLs等),点击Others标签,在Other vsim options中输入+transport_int_delays +transport_path_delays,点击OK完成;
4.9 要直接从ModelSim中生成.vcd(Value Change Dump File)文件用于QuartusII中PowerPlay Power Analyzer分析,可以在ModelSim中输入命令:
source <test bench or design instance name>_dump_all_vcd_nodes.tcl
4.10 Tcl脚本文件指示ModelSim-Altera监视Tcl脚本文件中的输出信号并在仿真过程中写入到.vcd文件中去。
4.11 在ModelSim-Altera进行时序仿真。
重要提示:强烈建议在进行RAM仿真时,将Time scale设置为飞秒ps级别!
个人使用心得
★RTL仿真
这个仿真过程最简单,不需要综合,也不需要经过布局布线,只需要编写好设计文件,和testbench文件直接导入ModelSim里边编译仿真即可。同时对于Verilog语言,需要选择相应的RTL仿真库。主要的RTL仿真库如下表:
★综合后仿真(功能仿真)
注:此过程需要在综合后才能进行。需要的是Verilog输出文件,而不是设计文件!同时对于仿真库而言,用到的是门级仿真库,而不是RTL仿真库(也就是器件对应系列的仿真库)。常用的门级与编译仿真库如下:
1、步骤:选目录—>建库—>编译—>仿真
1.1 目录选在QuartusII产生的EDA网表目录下,路径:<工程目录>\simulation\modelsim,这样做是为了方便文件的调用;
1.2 在此目录下建库。为了独立于QuartusII工作,库名必须是work;
1.3 编译文件。一般来说都使用testbench,因此可以使用(.vo+.vt)结合的方法进行仿真,.vo是verilog输出文件,.vt是verilog测试文件;若是VHDL则分别是.vho和.vht。编译顺序最好是先输出文件(.vo、.vho文件)再是测试文件(.vt、vht文件)
1.4 开始仿真。如果用到相关的LPM、MF或者IP等,要添加相应的预编译仿真库。在Library—>Search Libraries(-L)中点击Add添加。然后在Design—>Name—>work下选中仿真顶层文件,有testbench的话一般就选testbench。
2、关于QuartusII自动生成的testbench文件
QuartusII自动生成的testbench文件中包含一个全局寄存器eachvec,其包含一个语句@eachvec,记得把它注释掉,否则可能会因为它没有触发而导致仿真失败。
☆在QuartusII中自动生成仿真网表:Assignments->EDA Tool Settings
☆在QuartusII中自动生成TsetBench:Processing->Start->Start Test Bench Template Write
★门级仿真(时序仿真)
ModelSim的时序仿真跟功能仿真基本一致,但要注意下面几点区别:
1、如果包含全局复位或者全局上电信号,需做相应处理,具体看前文;
2、对Verilog程序进行仿真时,则无需添加.sdo文件,Verilog是通过添加预编译库自动调用.sdo文件的。同时,在Pulse Options中的Error Limit和Rejection Limit中输入0;
3、对VHDL文件进行时序仿真时,必须要添加.sdo文件,同时在Apply to region中将其指定到testbench中对应的模块;
关于testbench
在testbench中,每个连续的信号最好是用独立的always语句来描述,否则可能发生冲突导致仿真出错。
使用QuartusII自动运行ModelSim仿真
首先注意几点:
1、切记用Modelsim仿真时路径不能包含汉字!!!
2、要再次仿真时,确保前一次仿真的ModelSim程序已经退出,否则会报类似下面的错误!
3、产生上面错误的原因也可能是使用了不支持RTL级仿真的IP核,但是不影响时序仿真。
4、用波形文件产生testbench文件时,最好只有输入信息,不要包含任何输出信息;
下面是操作方法:
1、配置NativeLink
1.1 进入EDA Tool Settings,在EDA Tool Settings中选择Simulation,如图:
1.2 在simulation右侧对话框配置如下(Verilog):
☆如果要编译后自动运行门级仿真,可以勾选Run gate-level simulation … after complilation.
1.3 编译testbench文件
在NativeLink settings中点击Test Benches,出现对话框中点击New,出现如下对话框:
Testbench name中可以随便填一个名字,是指定当前Testbench文件的别名;
Top level module in test bench中填的是Testbench中要仿真的顶层模块;
Design instance name in test bench:填上Testbench中顶层模块对源程序的实例化名。
在Test bench files拦中添加对应的Testbench文件,点击Add添加,再点击OK完成配置。
2、运行仿真
如果要手动进行仿真,也可以在QuartusII中调用Modelsim,方法如下:
其中,RTL Simulation是寄存器传输级仿真,它是理想化的仿真,不包含任何延时信息,通常用作功能检验,也称作前仿真或功能仿真;
Gate-Level Simulation是门级仿真,通常也称为后仿真或时序仿真,它包含逻辑电路、布局布线等延时信息,是对真实电路情况的仿真。要仿真门级仿真,需要在Fitter之后进行。
3、产生Testbench
从QuartusII中产生Testbench,有两种方法:
(1)从波形文件导出,方法如下:
打开波形仿真文件,编辑输入信息,
点击Flie—>Export,直接导出即可。
(2)也可以利用QuartusII产生Testbench模板,再自行输入测试信息。
摘自文档:
About Usingthe ModelSim Software with the Quartus II Software
Author: Kerwin. Xie
来源:oschina
链接:https://my.oschina.net/u/4346331/blog/3986613