ModelSim-Altera版本仿真流程

放肆的年华 提交于 2020-04-29 20:44:32

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 LimitRejection 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!