利用ModelSim进行的功能仿真,综合后仿真,时序仿真

合集下载

用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)

用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)

用ModelSimSE进行 功能仿真和时序仿真的方法 (ALTERA篇)黄俊April 2007用ModelSim SE进行功能仿真和时序仿真的方法 (ALTERA篇)软件准备(1) QuartusII,本文截图是QuartusII 6.1界面的。

我个人认为,如果是开发StratixII或CycloneII或MAXII,用QuartusII6.0+SP1+SP2比较稳定。

(2) ModelSim SE. ALTERA仿真库要已经装好,安装仿真库的笔记已记录于《在ModelSimSE中添加ALTERA仿真库的详细步骤》中。

我电脑上装的是ModelSim SE6.1b。

例子程序的制作先在Quartus II里生成一个例子程序,以方便介绍三种仿真的方法。

步骤如下:1、新建一个工程(Project),工程名取lpm_shift, 器件选CycloneII EP2C5Q208C, 第三方的工具暂时都不选。

2、菜单栏上ToolsÆMegaWizard Plug-In Manager, 点Next,在storage中选LPM_SHIFTREG,输出文件格式根据习惯选一种语言,在这里以Verilog的为例,在右边的output file名字中加上lpm_shift。

点Next。

3、这个例子是做一个移位寄存器,调用lpm库,和cycloneII元件库,也正好可以作为对前面建好的ALTERA库的一个验证。

点可以查到该模块的使用说明和详细介绍。

移位寄存器比较简单,就不用细看了。

如下图设置.点Next.4、加上一个异步清零端,点Next,再点Next,最后点Finish.Add/Remove Files in Project…,6、点图标,选中生成的lpm_shift,点打开再点Add都加到项目中去。

7、在这里直接把lpm_shift.v当成顶层文件,就不需要再例化它了。

8、下面写一个简单的TestBench.a)Quartus II工具栏上点图标,选Verilog HDL;b)点,设文件名为top_tb;c)如下所述写一个简单的TestBench.(例子见附件)开始仿真z ModelSim仿真有很多种流程,下面我采用个人感觉比较好一个流程进行仿真验证:基于工程(Project)的流程Step1 新建一个工程Step2 添加文件到工程中去Step3 编译设计文件Step4 启动仿真器,指定顶层设计单元Step5 查看和调试结果z对的设计有三个阶段的仿真。

Modelsim的仿真教程

Modelsim的仿真教程

ModelSim的仿真1.仿真的分类仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。

仿真主要分为功能仿真和时序仿真。

功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。

1). 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。

布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。

综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。

2). 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。

时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。

后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。

其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。

SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。

一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。

2.仿真的作用1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。

ModelSim的前后仿真(Quartus)

ModelSim的前后仿真(Quartus)

利用Quartus5.0实现功能仿真1)打开一个工程文件。

2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。

在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。

(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。

最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。

编译的报告里也会分别列出最快和最慢的时序报告。

)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。

4)新建一个波形仿真文件,文件后缀名为.vwf。

选择File菜单下的New->Other Files->VectorWaveform File。

如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。

波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。

将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。

在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。

在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。

如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法作者:毕成炜2012年1月30日星期一我使用的是ISE_12.2,集成MODELSIM_6.5e。

后仿真的方法分为直接和间接两种。

直接是指从ISE上起动MODELSIM。

间接是单独起动MODELSIM,然后使用ISE生成的用于后仿的文件夹netgen。

下面分别叙述。

(一) 直接方法:1.建立一个文件夹给ISE工程用,比如D:\timing_sim,然后将源文件和测试文件放到它的下面:2.在ISE中如有旧的Project正在使用,则关闭它:这样画面清静。

然后新建一个New Project,点Next,选好器件和仿真器:点Next,点Finish.为了能够在ISE中直接唤起MODELSIM,还需要一些设置,主要是两处:双击器件:保证下图红圈处选中你要的仿真器:点OK后,在主菜单中点:保证在红圈处指定好MODELSIM执行文件所在的位置编译仿真库可以在这里双击Compile HDL Simulation Libraries,也可以在C:\Xilinx\12.2\ISE_DS\ISE\bin\nt下面找到,双击它,注意红圈处所标的是你的ISE版本所支持的MODELSIM版本,不能低于它。

否则仿真过程可能出问题。

点Next,点Next,选定你针对什么器件编译仿真库,点Next,点Next,注意,ISE可能最初不带modelsim.ini,它在此步会自动生成这个文件,并且是可写的,即它的“只读”属性是已经自动去掉的。

生成仿真库的映射关系自动写入了ISE的这个modelsim.ini,位于C:\Xilinx\12.2\ISE_DS\ISE\bin\nt,但是,它并不会自动去更新MODELSIM软件的modelsim.ini,而且MODELSIM使用的是它自己的modelsim.ini,位于C:\modeltech_6.5e。

所以需要把ISE的modelsim.ini中的映射关系再COPY到MODELSIM自己的modelsim.ini中。

利用ModelSim SE6.0C实现时序仿真

利用ModelSim SE6.0C实现时序仿真

1) 打开一个工程文件。

2) 打开Settings设置栏,选择EDA Tools Settings下的Simulation栏。

在右边出现的设置栏中将“Toolname”的下拉菜单选择“ModelSim(Verilog)”(如果工程用VHDL语言实现,则可以选择“ModelSim(VHDL)”;如果ModelSim使用的是for Altera的专用版本,则可以选择“ModelSim-Altera(Verilog)”或“ModelSim-Altera(VHDL)”)。

另外在设置栏中还有其他的核选框。

1. 如果选中“Maintain hierarchy”,则表示在做时序仿真时就能看到像在功能仿真的工程文件层次结构,可以找到定义的内部信号。

因为在做后仿时,源文件中的信号名称已经没有了,被映射为软件综合后自己生成的信号名,观察起来很不方便。

这个设置与ISE里综合右键属性的Keep Hierarchy选择YES的功能是一样的。

2. 如果选中“Generate netlist for functional simulation only”,则表示只能做功能仿真。

3) 点击“Start Compilation”按钮编译工程,完成之后在当前的工程目录下可以看到一个名为“Simulation”的新文件夹,下面的“ModelSim”文件夹下包括仿真需要的.vo网表文件和包含延迟信息的.sdo 文件。

4) 打开ModelSim软件(或者在Quartus下“Settings->EDA Tools Setting->Simulation”出现的设置栏中选中“Run this tool automatically after compilation”,直接从Quartus下调用ModelSim软件),可以在当前工程目录下新建一个Project。

在Project标签栏内点击右键,出现在快捷菜单中选择“Add toProject->Existing File…”。

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法作者:毕成炜2012年1月30日星期一我使用的是ISE_12.2,集成MODELSIM_6.5e。

后仿真的方法分为直接和间接两种。

直接是指从ISE上起动MODELSIM。

间接是单独起动MODELSIM,然后使用ISE生成的用于后仿的文件夹netgen。

下面分别叙述。

(一) 直接方法:1.建立一个文件夹给ISE工程用,比如D:\timing_sim,然后将源文件和测试文件放到它的下面:2.在ISE中如有旧的Project正在使用,则关闭它:这样画面清静。

然后新建一个New Project,点Next,选好器件和仿真器:点Next,点Finish.为了能够在ISE中直接唤起MODELSIM,还需要一些设置,主要是两处:双击器件:保证下图红圈处选中你要的仿真器:点OK后,在主菜单中点:保证在红圈处指定好MODELSIM执行文件所在的位置编译仿真库可以在这里双击Compile HDL Simulation Libraries,也可以在C:\Xilinx\12.2\ISE_DS\ISE\bin\nt下面找到,双击它,注意红圈处所标的是你的ISE版本所支持的MODELSIM版本,不能低于它。

否则仿真过程可能出问题。

点Next,点Next,选定你针对什么器件编译仿真库,点Next,点Next,注意,ISE可能最初不带modelsim.ini,它在此步会自动生成这个文件,并且是可写的,即它的“只读”属性是已经自动去掉的。

生成仿真库的映射关系自动写入了ISE的这个modelsim.ini,位于C:\Xilinx\12.2\ISE_DS\ISE\bin\nt,但是,它并不会自动去更新MODELSIM软件的modelsim.ini,而且MODELSIM使用的是它自己的modelsim.ini,位于C:\modeltech_6.5e。

所以需要把ISE的modelsim.ini中的映射关系再COPY到MODELSIM自己的modelsim.ini中。

Modelsim的功能仿真和时序仿真

Modelsim的功能仿真和时序仿真

FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。

在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。

在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。

功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。

在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。

ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。

ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。

它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。

ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和ModelSim/AE,分别是为Xilinx 公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。

用ModelSim 进行功能仿真进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。

下文主要介绍仿真步骤和测试激励的加载。

仿真步骤(1)建立库并映射库到物理目录因为用ModelSim 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。

modelsim实验教程

modelsim实验教程

实验一1.实验目的通过实验掌握如何用modelsim进行功能仿真以及时序仿真。

2.实验内容(1)编译代码,进行功能仿真。

(2)用modelsim进行代码覆盖率检查及分析,并输出覆盖率报告。

(3)用modelsim 将DC综合出来的门级网表以及时序文件进行后仿真。

(4)用do文件自动完成仿真步骤,即脚本自动化。

3.实验步骤(1)功能仿真前仿真主旨在于验证电路功能是否符合设计要求,它不考虑门延迟与线路延迟,旨在验证电路功能是否正确。

第一步:打开modelsim软件并建立工程登陆工作站后,进入命令界面,输入命令vsim,按回车键,打开modelsim软件,如下图所示选择File选项,点击File-->new-->project,如下图所示:然后弹出如下界面,需要给所建立的工程起名,为了方便管理,工程名可以与顶层模块名字相一致。

Project Location 一栏表示的是工程所在目录,work代表工作库,里面包含所有编译过的文件。

输入工程名,并确定了工程所在位置后,点OK。

第二步:加入源文件并编译建立好工程后,会弹出下图所示窗口,可以选择Create New File来在modelsim中直接编辑代码文件,也可以选择Add Existing File加入已有的源文件。

也可以通过选择File-->new-->source来编辑源文件,如下图所示:加入源文件后,可以鼠标选择源文件,点击右键Compile-->Compile Selected来编译源文件。

也可以点击直接编译源文件。

选择,可以编译工程里面所有的源文件。

在Transcript窗口中可以查看编译结果。

如果有错误,可以双击错误提示,改正错误,再编译。

第三步:仿真源文件编译成功证明源代码没有语法错误,启动仿真器对源文件进行仿真。

选择Simulate-->Start Simulation或者点击按钮,会弹出一个选择框,将Enable Optimization 选项勾掉,这是仿真优化选项,会对时钟等进行优化,在功能仿真阶段不需要优化时钟,在后续布局布线中会对其进行优化。

Modelsim仿真方法总结

Modelsim仿真方法总结

Modelsim仿真方法总结第一篇:Modelsim 仿真方法总结Modelsim 仿真方法总结Modeling 仿真工具是Model公司开发的。

它支持Verilog、VHDL以及他们的混合仿真。

Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。

下面来具体介绍modelsim 的仿真方法,涉及quartus-modelsim联合(使用)仿真的差异会特别提示。

前仿真与后仿真说明 1.1 前仿真前仿真也称为功能仿真、行为仿真。

旨在验证电路的功能是否符合设计要求,其特点是不考虑延迟(包括门延迟与线延迟),主要验证电路与理想情况是否一致。

前仿真需要用到RTL级代码(由源代码经过综合后产生)与T estbench。

1.2)后仿真后仿真也称为时序仿真或者布局布线仿真。

是指在电路已经映射到特定的工艺环境以后,综合考虑门延迟与线延迟的影响,验证电路在一定的时序条件下是否存在时序违规以及能否满足设计构想的过程。

需要用到的文件是——从布局布线结果中抽象出来的门级网表、testbench和后缀名为sdo或者sdf的标准时延文件。

注:扩展名为sdo和sdf的标准时延文件包含门延迟与实际布线延迟,能较好的反应芯片的实际工作情况。

二)modelsim仿真主要有以下几个步骤:(1)建立库并映射库到物理目录;(2)编译源代码(包括Testbench);(3)执行仿真;解释:①库:modelsim中有两类仿真库。

一种是工作库,默认名为work;另一种是资源库。

Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work库。

资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。

(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。

)映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。

ModelSim的前后仿真(Quartus)

ModelSim的前后仿真(Quartus)

利用Quartus5.0实现功能仿真1)打开一个工程文件。

2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。

在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。

(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。

最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。

编译的报告里也会分别列出最快和最慢的时序报告。

)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。

4)新建一个波形仿真文件,文件后缀名为.vwf。

选择File菜单下的New->Other Files->VectorWaveform File。

如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。

波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。

将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。

在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。

在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。

如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。

利用ModelSim进行的功能,综合后,时序仿真

利用ModelSim进行的功能,综合后,时序仿真

利用ModelSim 进行的功能仿真,综合后仿真,时序仿真功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。

功能仿真需要:I. TestBe nch或者其他形式的输入激励2•设计代码(HDL源程序)3•调用器件的模块定义(供应商提供,如FIFO, RAM等等)值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真, 只考虑门延迟,而没有加入时延文件。

在功能仿真之后检验综合的结果是否满足功能要求。

综合后仿真需要:1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.2. 测试激励3. 元件库Altera 的仿真库位置为*:\altera\quartus\eda\sim_lib所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf 文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。

时序仿真需要:1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.2. 测试激励3. 元件库Altera 的仿真库位置为*:\altera\quartus\eda\sim_lib4 .较门级仿真还需要具有包含时延信息的反标记文件*.sdf可以有两种方法实现门级仿真,或时序仿真。

1. 工程编译成功后,自动启用ModelSim 来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II9.0 Web Edtion 是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General 下的EDA Tool Options 在ModelSim 右边的Location ofExecutable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。

使用ModelSim进行时序仿真

使用ModelSim进行时序仿真

一、准备工作首先需要EDA综合工具生成用于功能或时序仿真的网表文件(VHDL为.vho,Verilog为.vo),以及使用EDA仿真工具进行时序仿真时所需要的包含时序延时信息的标准延时格式输出文件(.sdo)。

这里我们以EDA工具为ALTERA的Quartus II 9.0为例,使用Verilog DHL,讲解如何使用Quartus II 9.0生成ModelSim 6.2b时序仿真所需的.vo及.sdo文件。

这里我们先使用EDA工具对工程进行综合,综合通过后进行如下操作。

1、设置仿真工具的路径。

设置用户存放ModelSim的路径,选择菜单栏的Tools-->Options,如下图所示:在Options窗口下,选择左栏Category下的General-->EDA Tools Options,则右栏出现相应的仿真工具。

我们选择ModelSim,并设置路径(该路径为用户存放ModelSim 的路径),完成后单击OK。

如下图所示:2、设置生成文件存放的位置。

选择菜单栏的Assignments-->EDA Tools Settings,如下图所示:此时我们进入相应的状态栏,选择左栏Category下的EDA Tools Options-->Simulation,在Tool name选择ModelSim,其他Format for output netlist选择Verilog,其它使用默认参数。

完成后单击OK。

如下如所示:至此,再次进行综合,在工程路径下的simulation/modelsim将生成后仿真(也称时序仿真)所需的网表文件(.vo)及延时文件(.sdo)。

二、ModelSim进行时序仿真1、打开ModelSim,修改存放编译后库文件的位置。

选择菜单栏File-->Change Directory,如下图所示。

第一次需要编译,以后只需要调用该库文件就行,不需要重新编译(前提是使用该库支持,后面将介绍我们编译的库支持资源)。

利用ModelSim进行的功能仿真,综合后仿真,时序仿真

利用ModelSim进行的功能仿真,综合后仿真,时序仿真

利用ModelSim进行的功能仿真,综合后仿真,时序仿真功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。

功能仿真需要:1.TestBench或者其他形式的输入激励2.设计代码(HDL源程序)3.调用器件的模块定义(供应商提供,如FIFO,RAM等等)值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真,只考虑门延迟,而没有加入时延文件。

在功能仿真之后检验综合的结果是否满足功能要求。

综合后仿真需要:1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HD L源代码.2.测试激励3.元件库Altera的仿真库位置为*:\altera\quartus\eda\sim_lib所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。

时序仿真需要:1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HD L源代码.2.测试激励3.元件库Altera的仿真库位置为*:\altera\quartus\eda\sim_lib4.较门级仿真还需要具有包含时延信息的反标记文件*.sdf可以有两种方法实现门级仿真,或时序仿真。

1.工程编译成功后,自动启用ModelSim来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II 9.0 Web Edti on是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General下的EDA Tool Options,在ModelSim右边的Location of Executable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。

使用ModelSim进行仿真

使用ModelSim进行仿真

使用Modelsim仿真本文档主要介绍单独用Modelsim进行FPGA仿真的具体步骤以及相关仿真文件的生成方法。

对于FPGA设计,仿真主要分为三类:功能仿真、综合后仿真和时序仿真。

功能仿真是在理想的状态下(不考虑延迟)验证电路的功能是否符合设计要求。

综合后仿真,即门级仿真,是对综合后的门级网表文件进行仿真,此时只考虑门的延时,而没有加入延时文件。

时序仿真是在综合后仿真的基础上加上延时文件,这综合考虑了设计的路径延时和门延时的情况,以验证电路在实际电路有各种延时的情况下是否有错误。

下面我们将分步骤讲解用ModelSim进行FPGA仿真的方法。

一、 用ModelSim编译Quartus II的库1.先到modelsim的安装目录下找到文件”modelsim.ini”,将其属性改为可写。

2.启动Modelsim,点击File‐>New‐>Library,在弹出的【creat a new library】窗口中选中a new library and a logical mapping to it,然后在Library Name下填入Altera,点击OK。

3.在主菜单中选择compile‐>compile…,在弹出的【Compile Source Files】窗口上,通过窗口上【library】下拉菜单选择库名Altera,在【查找范围】中选择quartus安装目录下的…\quartus\eda\sim_lib目录,选择所需要编译的库(如不确定,可全选),点击【compile】,编译完成后,点击【done】。

二、 用Modelsim进行仿真a.ModelSim的功能仿真主要流程如下:1.新建一个工程,打开File‐>New‐>Project,输入工程名,指定工程保存的路径,然后添加文件,如下图:在project的空白处,单击右键也可以再添加存在的文件或创建新的文件。

2.添加文件到工程中去。

ISE联合modelsim功能仿真和综合后仿真

ISE联合modelsim功能仿真和综合后仿真

ISE联合modelsim功能仿真和综合后仿真1、代码输⼊(1)、新建⼀个ISE⼯程,名字为count4。

(2)、新建⼀个verilog⽂件(3)、选择verilog module 输⼊file name为count4,单击next默认知道finish。

(4)、在count4.v⽂件中输⼊以下代码module count4(out,reset,clk);output [3:0] out;input reset,clk;reg [3:0] out;always@(posedge clk) beginif(reset)out<=0;elseout<=out+1;endendmodule(5)、新建⼀个testbench⽂件(综合时,不参与综合),和第(2)步骤相同(6)、选择 verilog Test Fixture。

(7)、创建完成后,输⼊以下代码module count4_tb;reg clk,reset;wire [3:0] out;parameter DELY=100;count4 mycount(.out(out),.reset(reset),.clk(clk));//count4 mycount(out,reset,clk); 若简写,功能仿真正确,时序仿真会因为端⼝不匹配,//会出错always #(DELY/2) clk=~clk;initial beginclk=0;reset=0;#DELY reset=1;#DELY reset=0;#(DELY*200) $finish;endinitial $monitor($time,,,"clk=%d reset=%d out=%d",clk,reset,out);endmodule注:可以修改⽂件的属性,是否为testbench或者为verilog⽂件。

右击要修改的⽂件。

选择source properties修改属性,simulation为testbench .implementation为正常的verilog⽂件2、功能仿真功能仿真放在综合前⾯,是因为⼤型程序综合需要很长的时间,⽽功能仿真不需要综合,可以先功能仿真,确保代码的正确性。

如何使用Modelsim SE 进行门级仿真

如何使用Modelsim SE 进行门级仿真

如何使用Mod elsim SE进行门级仿真仿真分为功能仿真和时序仿真两部分,其中功能仿真是最基本的仿真验证,它只能仿真设计中的逻辑功能。

通过功能仿真,可以验证整个系统的逻辑功能是否正确。

用户可以通过观看仿真的波形来对系统的逻辑功能进行分析,并可以以此为依据,对设计进行必要的修改和完善。

布局布线以前的仿真都称为功能仿真,它包括综合钱仿真(Pre-Synthesis Simulation)和综合后仿真(Post-Synthesis Simulation)。

综合前仿真主要针对基于原理图框图设计,综合后仿真既适合原理图框图设计,也适合与HDL语言的设计。

时序仿真(后仿真,gate level simulation)时序仿真使用布局布线后期间给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际的评估。

时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的,唯一的差别是进行时序仿真时加载到仿真器时的信息多了一个延时信息,而在最后的仿真结果的波形图中,时序仿真后的信号加载了时延,而功能仿真没有。

从以上来看,时序仿真是整个开发流程中十分重要的一环,我曾经由于不重视时序仿真而导致整个设计非常的不稳定。

而Modelsim上手也有一定难度,故在此做一下记录,为大家节省点时间。

这里主要来说明一下如何使用Quartus II + Modelsim 来进行时序仿真。

首先说一下环境:我这里使用的是Quartus II 11.0 && Modelsim SE 10.0c目的:在Quartus中写好的代码,编译过之后,可以自动进行时序仿真。

以下为设置步奏:打开或者新建一个项目,这里为了节省时间,直接用以前的项目了然后进行完全编译。

其它的,按照图片顺序来进行即可…然后就是一大堆弹出的窗口,仿真已经在进行着了。

(这个……其实会出错的,因为你后面还有那么一点点东西需要搞定,需要动脑子噻…接着往下走着)当然,仅仅这些是不能让仿真顺利进行的。

modelsim后仿步骤

modelsim后仿步骤

Modelsim 后仿真操作步骤后仿就是时序仿真,因为时序仿真是在综合之后故称后仿真。

现将综合到后仿的简单步骤细列如下(并附图):一,综合(所用工具是quartus)1,建立工程,其他不变,只是在选择仿真工具时留意下图红圈处。

(图1)2,设置仿真工具:assignments->settings...->EDA Tool Settings->Simulation 的Toll name 选择modelsim,其他默认设置即可,3,综合,综合成功后,可以看到再工程目录的simulateion->modelsim下面有两个文件.sdo和.vo文件,前者是加了标准延时的时序反标注文件,后者是综合出来的网标文件。

(图2)那么后仿时就是对.vo文件进行仿真,且仿真文件(testbench)就是前仿真时的文件。

只是还要加入库文件,和延时文件(.sdo)。

二,时序方针(所用工具是modelsim)1.首先编译altera 库文件: 在modelsim新建工程,在工程的library下新建一个库命名为sim;(图3)再加入文件,浏览到altera/quartus的安装目录再找eda->sim_lib,(图4)我的是:D:\altera\80\quartus\eda\sim_lib,选择所有.vhdl文件或者.verilog文件(根据自己设计所采用的语言,选择相应的文件,如果阁下是两种语言联合编程,那就把所有的文件全部编译,肯定错不了,我试过了。

),全部编译后,可以在libraray->sim中看到编译后的文件了。

2,在modelsim下建立新的工程,将在quartusII下生成的.vo文件和测试文件testbench加入工程中,(图5)全部编译,通过后,选择状态栏中start simulation打开一个仿真对话框,(图6)选择仿真对象为work->testbench,(图7)再选择library添加库sim,(图8)再选择SDF,添加延时文件.sdo,注意这里在Apply to Region文本框中填上所选择延时文件的作用域,即您老在testbench里面所实例化的顶层文件的实例化名(红色圈出)。

让FPGA初学者头疼的各种仿真

让FPGA初学者头疼的各种仿真

学习FPGA,被它的各种仿真弄的晕头转向。

前仿真、后仿真、功能仿真、时序仿真、行为级仿真、RTL级仿真、综合后仿真、门级仿真、布局布线后仿真……好吧,反正我是晕了。

先说一下Quartus和Modelsim软件的仿真形式:Quartus ii的两种仿真:1、功能仿真2、时序仿真;Quartus ii调用Modelsim的两种仿真:1、RTL级仿真2、Gate-level仿真。

查阅了各种资料如下:资料一:1.当用quartus进行仿真时,分为功能仿真(al)和时序仿真(Timing)。

2.当用Modelsim-Altera时,分为功能仿真(RTL)、综合后仿真(post-synthesis)和布局布线仿真(Gate-level)。

其中,功能仿真又称为前仿真,布局布线仿真又称为后仿真。

注:此处的功能仿真(RTL)与1中的功能仿真(al)是不一样的,前者是HDL级仿真,后者是门级网表的功能仿真。

(1)当在quartus中调用Modelsim-Altera进行RTL仿真时(前提是在第三方仿真工具中选择Modelsim-Altera),步骤如下:a) 编写源文件和测试文件;b) Assignment->setting->simulation->不选中run gate leve simulation.....,选中nativelink->添加测试文件,填写文件名;c) start analysis&elabration;d) Tools->start RTL simulation;(2)综合后仿真一般不做。

(3)当在quartus中调用Modelsim-Altera进行Gate-level仿真时(前提是在第三方仿真工具中选择Modelsim-Altera),步骤如下:a) 编写源文件和测试文件;b)Assignment->setting->simulation->选中run gate leve simulation.....,选中nativelink->添加测试文件,填写文件名;c)全编译;评价:对于Assignment->setting->simulation->"run gate leve simulation automatically after comlilation"选不选中根本没必要说明,完全可以不用选中,需要在设置处把测试文件testbench添加就可以了(不添加的话到时候quartus调用出modelsim软件后需要手动添加编译,下面补充了)。

modelsim仿真详细过程(功能仿真与时序仿真)

modelsim仿真详细过程(功能仿真与时序仿真)
如没有就新建。在这里使用添加已有文件,在软件开始之前就编好所用的程
序,这样比较方便些。软件自带的编辑环境不是很好,使用第三方的编辑工
具是推荐的方法。建议使用UltraEdit或Notepad++这些专业的代码编辑软
件。
UltraEdit偏重于功能的强大和丰富的用户可定制化特性,而
Notepad++更加注重易用性。两者在普通功能上差异不是特别大,根据自己的
喜好选择一款即可。
图5给工程中添加文件
在路径G:\FPGA_Project\ModelSim\counter8下新建两个文件,一个
是counter8.v,一个是test_counter8.v,前者是我们的原始的设计文件,后者
是其相应的仿真测试文件。在这个路径的Windows目录下,在空白处右键选
择新建一个文本文档.TXT格式,然后在这个文件上右键选择UltraEdit或Edit
modelsim仿真详细过程(功能仿真与时序仿真)
ModelSim仿真入门:功能仿真
本实验的目的就是在ModelSim环境下学习掌握该软件的一般仿真测
试流程和仿真测试方法,另外学习编写简单的Test Bench程序并在ModelSim
下进行调试。
实验步骤如下:
1.打开ModelSim软件,如图1所示:
withNotepad++就可以启动相应的代码编辑工具进行编辑了,保存的时候注意
存成.v或格式即可。
新建一个工程,在弹出的对话框中,给该工程命名并指定一个存放的路径,
如图4所示:
图4新建工程
在这里,工程名和你的顶层文件名保持一致是推荐的做法。路径的注
意事项已经说过,这里不再提及。默认的库名就是work,这个无需更改,点
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用ModelSim进行的功能仿真,综合后仿真,时序仿真
功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。

功能仿真需要:
1.TestBench或者其他形式的输入激励
2.设计代码(HDL源程序)
3.调用器件的模块定义(供应商提供,如FIFO,RAM等等)
值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.
综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真,只考虑门延迟,而没有加入时延文件。

在功能仿真之后检验综合的结果是否满足功能要求。

综合后仿真需要:
1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HDL源代码.
2.测试激励
3.元件库Altera的仿真库位置为
*:\altera\quartus\eda\sim_lib
所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。

时序仿真需要:
1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HDL源代码.
2.测试激励
3.元件库Altera的仿真库位置为
*:\altera\quartus\eda\sim_lib
4.较门级仿真还需要具有包含时延信息的反标记文件*.sdf
可以有两种方法实现门级仿真,或时序仿真。

1.工程编译成功后,自动启用ModelSim来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II 9.0 Web Edtion是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General 下的EDA Tool Options,在ModelSim右边的Location of Executable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。

1.在EDA Tool Settings,首先将仿真工具设置为ModelSim,然后点击让它自动启动。

2.NativeLink settings中选择testbench,完成相关的设置,例如test bench name,top level module in test bench,Design instance name in test bench,仿真时间,然后编译时会自动启动ModelSim然后完成所有操作,大概这就是Altera所指的和很多EDA工具的无缝连接。

另外一种方法,则是现在quartus ii中生成门级网表和延时文件,然后调用ModelSim进行仿真
1.在quartus ii设置仿真工具为ModelSim,这样设置完成后,在当前目录下会生成一个simulation的目录,该目录下有一个simulation文件夹,里面包含了网标文件和时延反标文件,vhdl语言对应的是网表文件为*.vho,时延文件为*.sdo。

Verilog则为*.vo,*.sdo。

2.建立库并映射到物理目录,编译TestBench,执行仿真。

对库的理解:
我想所谓库,实际上就是一个代替文件夹的符号,区别就是,库中的文件的表述皆是经过了编译的实体或者module,一切操作都在库中进行。

ModelSim有两种库,一种是资源库,一种是工作库(默认名为work,保存当前工程下已通过编译的所有文件,资源库放置work库已编译文件所要调用的资源)。

所以编译前,一定要有work库,而且只能有一个。

3.加入仿真库,可以看出,门级仿真和时序仿真都需要仿真库,在ModelSim中可以通过两种方法将Altera的仿真库调入进来,一种是新建一个库,用来存放仿真是需要调用的文件,另一种是将Altera的器件直接编译到work这个library中去。

3.1新建一个库,用来存放调用的仿真库文件
在Modelsim中建立一个新的project,将
*.vo,*.v(TestBench),所用器件的库,一起加入到project当中去。

新建一个库,名字实际是都可以的,当然将名字命名为所用的altera库的名字比较合适。

最重要的是,要对加入的所用期间的库进行右键属性,在General选项卡中,要设置compile to library到你自己新建的这个库中去,否则的话,编译的文件就都会出现在你的工作库当中,可见新建的第二库就是作为资源库来使用的。

至此,我们已经完成了所有的准备工作,点击你的工作库,然后选择Simulate中的start simulation,在library 标签中,将自己编译的资源库加入。

在design标签中选择testbench作为设计单元,要说明的是,如果你没有使用work 库的默认库名,而是自己命名了,那么此时你可以使用work 库,也可以使用自己命名的库,二者是等价的。

到这里,就可以完成了门级仿真,如果是时序仿真,那么还需要将反标记*.sdo文件加入,具体方法是单击start simulation后,在SDF标签中可以加入时延反标记文件。

但要注意须在Apply to Region 中将里面的"/"改写为"testbench名(这个很重要,是testbench 文件名,而不是顶层module名)/testbench中实例化顶层的名称",如果是用模板创建的testbench,这个顶层名称叫做
DUV(Design Under Test/Verification,待测设计)。

当然了,不是一帆风顺的,就在加入了SDF文件之后,准备开始的时候,出现了ERROR,vsim-sdf-3894:Compiled SDF file was not found.不过幸好很快找到了解决办法,那就是将你的testbench和*.sdo文件放在同一个目录下,这种错误就可以解决了,默认的会在当前工程下的simulation/modelsim 中。

3.2将库文件直接编译到work的library中,这种会比3.1简单
一些,不用建立库,直接编译到工作库就可以了。

如何对Altera的megacore进行仿真呢?基本和上面一致,一般要用到仿真库中的220model.v和altera_mf.v。

我只找了一个很简单的计数器的例子来试,但发现了一个很有意思的现象,也是原来我没有考虑到的,如果你想做功能仿真,那么由于你的设置中包含了Altera公司的一些原语,比如lpm_XXXX等等,那么就需要将220model或者altera_mf.v 编译进你的工程,但是再做时序仿真或门级仿真的时候却不需要这些,因为你可以自己去看一下生成的门级网表(*.vo),里面没有任何的原语,但是需要库文件和反标记文件(如果做时序仿真的话需要反标记文件)。

补充:我正在为怎么每次都要重新选库文件困扰的时候,实际上发现那是因为我右键了文件,选择了simulate,如果还是点work库,然后start simulation就可以不用再次选择库了。

相关文档
最新文档