zoukankan      html  css  js  c++  java
  • ModelSim-Altera版本仿真流程

    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>alteraverilog<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网表目录下,路径:<工程目录>simulationmodelsim,这样做是为了方便文件的调用;

    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

  • 相关阅读:
    JavaScript模态对话框类
    事件模块的演变(1)
    html5中可通过document.head获取head元素
    How to search for just a specific file type in Visual Studio code?
    What do 'lazy' and 'greedy' mean in the context of regular expressions?
    正则非获取匹配 Lookahead and Lookbehind ZeroLength Assertions
    regex length 正则长度问题
    Inversion of Control vs Dependency Injection
    How to return View with QueryString in ASP.NET MVC 2?
    今天才发现Google Reader
  • 原文地址:https://www.cnblogs.com/time93/p/9347564.html
Copyright © 2011-2022 走看看