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编辑框中添加需要的信号名称实现模糊查找。

NModelSim 工具介绍

NModelSim 工具介绍

2.1键入新工作文件夹所在盘区和名称
2.2在ModelSim环境下切换至新建文件夹
3.在新建文件夹下创建一个工作库
3.1在Create a New Library窗口内Click ok
4.在ModelSim环境下编写HDL源程序
4.1 打开 source 文件编辑窗口
4.2 选择source 文件类型
114进程窗口进程窗口显示了仿真中用到的所有进程的列表如果在该窗口中选择viewactive命令那么在窗口中将显示当前工程中的全部进程如果选择viewinregion命令那么在窗口中只显示当前层次中包含的进程这里的层次通过结构窗口来指定
1.ModelSim 工具简介
ModelSim仿真器由Model Technology 公司开发,它是基于事件 驱动的(有些是时钟驱动的),它可以用来仿真Verilog和VHDL 语 言,同时也支持两种语言的混合仿真。 在整个设计流程中,完成了设计输入并成功地进行了编译,只能 说明设计符合一定的语法规范,并不能保证设计可以获得所期望 的功能,这时就需要通过仿真对设计进行验证。仿真可以分为功 能仿真和时序仿真。功能仿真又称为行为仿真或前仿真,是在不 考虑器件延时的理想情况下对源代码直接进行逻辑功能的验证。 时序仿真又称后仿真或布局布线后仿真,是在考虑了器件延时的 情况下对布局布线后的网表进行的一种仿真,这种仿真中器件延 时信息是通过时序标注的方法来实现的。
1.1.1主窗口
菜单条
工具条
脚本区 工作区 视图 状态栏
主窗口分为工作区和脚本区(也叫命令控制台),通过工作区可以 方便地对当前工程的工作库进行控制;脚本区可以在ModelSim 的提示符下输入所有ModelSim的各种命令,并且可以将命令执 行后的信息反馈回来,便于用户了解命令的执行情况。

modelsim仿真工具的一些使用心得

modelsim仿真工具的一些使用心得

3. 之前的使用方法

在ISE中安装modelsim, 嵌套使用仿真工具

优点---使用方便,易于入手
缺点---不能做系统级别的仿真,仿真效率 很低, 处理modelsim与ISE不兼容的问题

4. 新使用方法

最大特点:不需要和ISE结合使用 方法步骤: 导入仿真库文件 建立工程,利用命令行编写do文件 执行仿真程序
关于Modelsim仿真工具的 一些心得
1.Moelsim版本



ModelSim分几种不同的版本:SE、PE、LE和 OEM,其中SE是最高级的版本。而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等 FPGA厂商设计工具中的均是其OEM版本。 MODELSIM SE是主要版本号,也是功能最强 大的版本,支持对Verilog和VHDL语言的混合 SE版和OEM版在功能和性能方面 有较大差别 仿真。对于代码少于40000行的设计, ModelSim SE 比ModelSim XE要快10倍;对于 代码超过40000行的设计,ModelSim SE要比 ModelSim XE快近40倍。
第二步:在modelsim.ini中添加如下 标准库



simprim_ver = G:/EDA/Xilinx/simprim_ver(库的路 径,以下同) unisim_ver = G:/EDA/Xilinx/unisim_ver xilinxcorelib_ver = G:/EDA/Xilinx/xilinxcorelib_ver
第三步. 综合

之前都是使用ISE自带综合工具 缺点:综合速度慢,单线程综合 推荐使用Synplify pro(我这里用9.6版本) 仿真工具 优点:四线程综合,仿真速度提高四倍

MODELSIM系统函数总结

MODELSIM系统函数总结

篇一:modelsim仿真小结modelsim仿真小结modelsim的基本仿真流程大致分以下几个步骤:建库、编译工程、前后仿真、调试等。

modelsim 仿真既可以在modelsim界面操作,也可以用do文件实现,这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。

1. 建库建库包括altera 库和xilinx库,同时都包括verilog和vhdl。

这里只建了verilog库,vhdl和verilog步骤相同。

对于altera库主要包括lpm元件库、mega_function库atera_mf、altera原语库altera_primitive和各器件系列模型库。

前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。

altera库创建和编译步骤如下:a) 在modelsim安装目录下新建文件夹,命名altera_lib,以存放编译后的库文件,可以在altera_lib 下新建verilog和vhdl两个子文件夹,分别存放verilog和vhdl库。

b) 打开modelsim,新建library,file ->new->library ..c) 如下图,创建lpm库,路径e:\modeltech_10.1a\altera_lib\verilog\lpm到此,lpm库建立完毕。

e) 同理,建立altera_mf库添加 altera_mf.v ,建立primitive库添加altera_primitive.v建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的xxx_atoms.v。

这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。

f) 修改modelsim.ini文件,为的是让modelsim能自动map到已经编译的这些库上。

Modelsim NC-Verilog仿真理解

Modelsim NC-Verilog仿真理解

Modelsim/NC-Verilog仿真理解仿真(Simulation),也称为模拟,是对所有集成电路或系统的一种检测方法。

用户可以在设计过程中对整个系统和部分模块进行仿真,即在计算机上用仿真软件验证功能是否正确、各部分的时序配合是否正确。

如果有问题可以随时进行修改,从而避免逻辑错误。

高级的仿真软件还可以整个系统设计性能进行评估。

设计规模越大就越需要进行仿真。

仿真包括功能仿真和时序仿真。

在设计输入阶段按进行仿真,不考虑信号延时等因素成为功能仿真,又称前仿真;时序仿真又称为后仿真,他在选择了具体器件并完成了布局布线以后进行的含定时关系的仿真。

由于不同器件的内部延时不同,不同的布局、布局方案也给延时造成了很大的影响,因此在设计实现后,对网络和逻辑块进行延时仿真,分析定时关系,估计设计性能非常有必要。

要进行电路仿真必须有仿真器的支持。

常用的Verilog仿真器有:ModelSim、Verilog-XL、NC-Verilog和VCS等。

下面我们简单介绍下我们常用到的ModelSim、NC-Verilog两款仿真软件特点、区别。

一、ModelSimModelSim是Mentor Graphics子公司ModelSim Technology的产品,是业界优秀的HDL 语言仿真软件之一,它是编译型的VerilogHDL/VHDL混合仿真器。

MoselSim可以在同一设计中单独或混合使用Verilog HDL和VHDL,允许Verilog HDL模块调用VHDL的实体,或用VHDL模块调用Verilog HDL的实体。

由于ModelSim是编译型仿真器,使用编译后的HDL 库进行仿真,因此在进行仿真前,必须所有待仿真的HDL文件编译成为HDL仿真库,在编译时使源文件获得优化,提高了仿真速度。

Model Sim只完成逻辑功能的仿真,并不考虑具体使用什么器件,学习HDL或者设计逻辑的时候compile一次所用的时间很短,便于调试找出逻辑的错误。

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的功能仿真和时序仿真

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-QuestaSim功能及仿真介绍

ModelSim-QuestaSim功能及仿真介绍

ModelSim/QuestaSim功能及仿真介绍ModelSim 是工业界最优秀的语言仿真器,它提供最友好的调试环境,是作FPGA、ASIC 设计的RTL 级和门级电路仿真的首选。

它支持PC 和UNIX、LINUX 平台,是单一内核支持VHDL 和Verilog 混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk 技术、和单一内核仿真,编译仿真速度业界最快,编译的代码与平台无关,便于保护IP 核,具有个性化的图形界面和用户接口,为用户加快调试提供强有力的手段。

全面支持VHDL 和Verilog 语言的IEEE 标准,以及IEEE VITAL 1076.4-95 标准,支持C 语言功能调用, C的模型,基于SWIFT 的SmartModel 逻辑模型和硬件模型。

ModelSim 支持RTL 仿真,门级仿真,时序仿真:主要特点:*采用直接编译结构,编译仿真速度最快;*单一内核无缝地进行VHDL 和Verilog 混合仿真;*与机器和版本无关,便于数据移植和库维护;*与机器无关的编译代码编于保护和利用IP;*简单易用和丰富的图形用户界面,快速全面调试;*Tcl/Tk 用户可定制仿真器;*完全支持VHDL/Verilog 国际标准,完全支持Verilog 2001;*支持众多的ASIC 和FPGA 厂家库;*集成的Performance analyzer 帮助分析性能瓶颈,加速仿真;*灵活的执行模式,Debug 模式可以进行高效的调试,效率模式大幅度提高仿真速度。

*加强的代码覆盖率功能Code coverage,能报告出statement 、branch、condition、* expression、toggle、fsm 等多种覆盖率情况,进一步提高了测试的完整性;*同一波形窗口可以显示多组波形,并且能进行多种模式的波形比较(Wave Compare);*先进的Signal Spy 功能,可以方便地访问VHDL 或者VHDL 和Verilog 混合设计中的下层模块的信号,便于设计调试;*支持加密IP;*集成的 C 调试器,支持用C 语言完成测试平台和模块;支持64 位的OS;ModelSim 用户界面:ModelSim 设计流程:ModelSim coverage 验证:tips: 感谢大家的阅读,本文由我司收集整编。

modelsim仿真详解 -回复

modelsim仿真详解 -回复

modelsim仿真详解-回复什么是ModelSim仿真?ModelSim是一种著名的仿真工具,用于数字和模拟电路的功能仿真和时序仿真。

它是由美国Mentor Graphics公司开发的,提供了一整套的仿真、调试和验证功能,广泛应用于电子设计自动化领域。

ModelSim仿真工具可以模拟数字电路的行为和时序,在仿真过程中可以观察和分析电路的运行状态,以验证设计的正确性。

它支持Verilog和VHDL两种高级硬件描述语言,并且提供了强大的波形编辑和调试功能,便于用户分析和调试设计中的问题。

ModelSim仿真的基本原理和流程是什么?ModelSim仿真的基本原理是利用编译过程将Verilog或VHDL代码转化为可执行的仿真模型,然后通过激励文件对模型进行驱动和刺激,最后观察波形输出并进行分析。

下面是ModelSim仿真的基本流程:1. 编写设计代码:使用Verilog或VHDL语言编写设计代码,包括设计模块、信号连接、时钟和复位逻辑等。

2. 创建测试平台:编写测试平台代码,包括生成激励信号和检查输出结果的内容。

3. 编译设计代码:使用ModelSim提供的编译器将设计代码编译成仿真模型,产生可执行的仿真对象文件。

4. 创建仿真模型:使用ModelSim提供的工具和命令,创建仿真模型并加载仿真对象文件。

5. 配置仿真环境:设置仿真时钟、仿真时间、仿真启动方式等仿真环境参数,准备仿真的相关设置。

6. 运行仿真:启动仿真过程,模拟电路的行为和时序,并根据测试平台的激励信号来驱动设计,产生波形输出。

7. 观察波形:利用ModelSim提供的波形窗口,观察和分析仿真波形结果,验证设计的正确性。

8. 调试和分析:根据波形结果来调试和分析电路中的问题,定位和解决设计中的错误,优化电路的性能。

ModelSim仿真工具的优势是什么?ModelSim仿真工具在电子设计自动化领域具有很高的知名度和广泛的应用,其主要优势如下:1. 支持多种设计语言:ModelSim支持Verilog和VHDL两种常用的硬件描述语言,用户可以根据自己的需求选择合适的语言进行设计和仿真。

Modelsim-仿真方法总结

Modelsim-仿真方法总结

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

它支持Verilog、VHDL以及他们的混合仿真.Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。

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

前仿真与后仿真说明1。

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

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

1。

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

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

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

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

二)modelsim仿真主要有以下几个步骤:(1)建立库并映射库到物理目录;(2)编译源代码(包括Testbench);(3)执行仿真;解释:①库:modelsim中有两类仿真库.一种是工作库,默认名为work;另一种是资源库。

Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work 库.资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。

(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库.)映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。

(此即是为仿真库建立一个逻辑映像的行为过程,后面会提到,在modelsim中新建库时,create a new library and a logical mapping to it或a map to an existing libraryd的提示) 上述三个步骤是大的框架,前仿真和后仿真均是按照这个框架进行的,建立modelsim工程对前后仿真来说都不是必须的.下面分别介绍每一步的操作。

Modelsim使用简明指南

Modelsim使用简明指南

Modelsim使用简明指南1 前言作为一种简单易用,功能强大的逻辑仿真工具,Modelsim具有广泛的应用。

这里对ModelSim作一个入门性的简单介绍。

首先介绍ModelSim的代码仿真,然后介绍门级仿真和时序验证。

2 代码仿真在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,检测源代码是否符合功能要求。

这时,仿真的对象为HDL代码,比较直观,速度比较快,可以进行与软件相类似的多种手段的调试(如单步执行等)。

在设计的最初阶段发现问题,可以节省大量的精力。

2.1 代码仿真需要的文件1.设计HDL源代码:可以使VHDL语言或Verilog语言。

2.测试激励代码:根据设计要求输入/输出的激励程序,由于不需要进行综合,书写具有很大的灵活性。

3.仿真模型/库:根据设计内调用的器件供应商提供的模块而定,如:FIFO(Altera常用的FIFO有:lpm_fifo /lpm_fifo_dc等)、DPRAM等。

2.2 代码仿真步骤1.建立工程:在ModelSim中建立Project。

如图2.1所示,点击FileÖNewÖProject,得到Creata Project的弹出窗口,如图2.2所示。

在Project Name栏中填写你的项目名字,建议和你的顶层文件名字一致。

Project Location是你的工作目录,你可通过Brose按钮来选择或改变。

Ddfault Library Name可以采用工具默认的work。

图2.1图2.22.给工程加入文件:ModelSim会自动弹出Add Items to the project窗口,如图2.3所示。

选择Add Exsiting File后,根据相应提示将文件加到该Project中。

图2.33.编译:编译(包括源代码和库文件的编译)。

编译可点击ComlileÖComlile All来完成。

4.装载文件:如图2.4,点击SimulateÖSimulate…后,如图2.5所示,选定顶层文件(激励文件),ADD加入,然后点击LOAD,装载。

利用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之时序仿真

Modelsim之时序仿真利用ModelSim进行时序仿真(门级仿真),可以比较真实地反映出器件的延时情况,不过它也需要相关器件atom库的支持。

下面就用分频器实例简要说明一下:1、在QuartusII中新建一个div工程。

注意EDA Simulator的设置,可以新建工程时设置也可以后续再设置,如图:Tool name选择ModelSim,Format for output netlist选择Verilog(会生成.vo的Verilog输出文件,若选择VHDL则会生成.vho的VHDL输出文件),其它的可以默认就行。

2、添加源文件,并编译。

完了就会在当前工程目录下生成Simulation>ModelSim的文件夹,里面就存放了相关仿真所需要的文件,如.vo(verilog输出文件),.sdo(延时文件)等。

3、打开ModelSim,并在刚才生成的ModelSim文件夹路径下新建一个div的工程。

为了对比,分别进行功能仿真和时序仿真。

首先,功能仿真,这个比较简单,直接添加div.v源文件和div_tb.v测试文件,然后编译,完了直接运行仿真即可,得到结果如下:可以看到输入、输出是没有延时的,只进行了功能仿真验证。

4、进行时序仿真,这时候就需要相关预编译库和延时文件的加入了。

a)将之前的div.v文件Remove,并添加div.vo文件,(因为div.vo就是div.v 的输出文件,所以直接用QuartusII编译输出的div.vo就行了),然后编译div.vo和div_tb.v。

b)开始仿真设置。

首先,添加预编译的器件库,本例中用的是cycloneii_atoms,找到它所在位置并添加进来(具体这个库的编译之前已经有说过,这里就不多说了),完成后如图所示:然后,添加SDF延时文件,也就是刚刚生成的div.sdo文件,点击Add后出现如下窗口:首先加入SDF文件,另外还有一个选项就是Apply to Region,这里输入u_div,这个选项主要是指明时序仿真的实体名,即Testbench中实例化的div名(u_div),完了OK。

使用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.添加文件到工程中去。

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,这个无需更改,点

用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤

用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤

⽤quartusII再带的modelsim进⾏后仿真(时序仿真)的操作步

在实际的项⽬⼯程中,基本上都是在Modelsim进⾏功能仿真后,直接进⾏板级调试(⽤signaltap调试),但是中规中矩的后仿真也不能不会。

操作步骤如下:
1.将quartus II与其⾃带的Modelsim-Altera进⾏关联,quartus II软件中【Tools】--->【Options】,按图1进⾏操作
图1
2.在quartus II软件中进⾏全编译,这时会在⼯程⽂件夹产⽣“simulation”⽂件夹,打开并接着打开“modelsim⽂件夹”,这时⾥⾯会出现10个⽂件,其中“.vo”和“.sdo”是时序仿真需要的⽂件,将他们粘贴到modelsim的⼯程⽂件夹中。

图2
图3
3.接下来还需要Altera的器件库
其中Altera的器件库⽂件在:D:\altera\13.0sp1\modelsim_ase\altera\verilog\altera
D:\altera\13.0sp1\modelsim_ase\altera\verilog\cycloneive
图4
4.将testbench⽂件和“.vo”⽂件加到⼯程上,然后编译,然后右键选择【Add to project】-->【Simulation Configuration】,选择【Work】中的"xxx_tb"⽂件,然后选择【Libraries】中加载刚在粘贴的2个Altera器件库,然后在【SDF】中加载刚才粘贴的“xx.sdo”⽂件,然后点【Save】,最后点击“Simulation”即可进⾏时序仿真。

如图5 、6、7所⽰:
图5
图6
图7 。

利用ModelSim实现时序仿真

利用ModelSim实现时序仿真

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…”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。

通常用户编译的文件都放在work库中,所以必须先建立work 库。

有两种方法建立并映射库,第一种方法是通过图形界面,在菜单Design→Create a New Library 弹出对话框,如图1 所示。

在Library Name 中输入work,如果建立其它库,可以输入其它名字。

Library Map to 是映射的物理路径。

第二种方法是用命令行的形式,建立库用ModelSim>vlib<库名>,映射库用ModelSim> vmap ,如建立并映射库work,就可以在ModelSim 主窗口命令提示符下输入vlib workvmap work work(2)编译源代码该步骤主要检查源文件的语法错误。

实现方法有两种,一是通过菜单Design→Compile,出现选择源文件对话框,选择要编译的源文件,编译即可;二是通过命令行方式,这一步对于VHDL 和Verilog 所使用的命令是不一样的,对于VHDL 代码用vcom-work.vhd.vhd ,对于Verilog 代码用vlog-work.v.v,文件按出现的先后顺序编译,且支持增量编译。

编译后的文件会放在缺省当前work 库中。

(3)启动仿真器该步骤主要是把所有仿真的文件加载到当前的仿真环境中。

实现的方法两种,一是通过菜单Design→Load Design,出现加载对话框,选择要仿真的程序即可;二是通过命令行的形式vsim-lib ,这条命令对于VHDL 和Verilog 都一样。

(4)执行仿真该步骤是正式执行仿真了,在仿真前最重要的一个步骤就是加载激励,如要对下面的加法器进行仿真,加法器实体说明如下:entityAdd isport(D1: in std_logic_vector(7 downto 0);--输入D2: in std_logic_vector(7 downto 0);--输入D0: out std_logic_vector(7 downto 0);--输出CE: in std_logic;-使能,低有效Clk: in std_logic);--时钟endAdd;测试激励的加载激励的加载有四种方法:(1)命令行方式这种方法是通过在命令行下直接输入命令给信号加载激励,然后进行仿真。

如要对上面的加法器进行仿真,则输入如下命令:Vsim –t ps work.add//加载work 库中的实体add,时间分辨率为psAdd wave –hex D1Add wave –hex D2Add wave –hex D0Add wave ceAdd wave clk//把信号加载到波形窗口,hex 表示以16进制显示Force ce 0 //对ce 加激励为0Force clk 0 0,1 25 –r 50 //对clk 加载激励Force D1 16#2 //对D1 加载16 进制数2Force D2 16#1 //对D2 加载16 进制数1Run 100 //运行100 个时间单位如果要仿真其它数据,在命令行中改变激励就可以了,仿真的结果如图2 所示。

(2)宏文件法这种方法相当于DOS 的批处理。

它把所有的命令保存为以do 为后缀名的文件中,称为宏文件。

执行仿真时只要选择菜单Marco →ExecuteMarco,然后选择相应的宏文件执行即可,或者在命令行中输入do<宏文件名>。

执行仿真的结果如图2 所示。

(3)测试文件法上述两种方法只适合验证数据量小的程序,对程序进行简单验证,如果要验证的数据量较大,上述两种方法就比较麻烦,现在被广泛采用的是测试文件法。

这种方法其实是要设计者自己编写测试文件,把要验证的程序当成测试程序的一个模块,在测试文件中对要验证的程序加载激励。

以下就是针对上面加发器的测试文件:library ieee;use ieee.std_logic_1164.alluse ieee.std_logic_signed.allentity tb isend tbarchitecture a_tb of tb iscomponent Addport(D1 : in std_logic_vector(7 downto 0);D2 : in std_logic_vector(7 downto 0);D0 : out std_logic_vector(7 downto 0);CE : in std_logic;Clk: in std_logic);end component;signal D1 : std_logic_vector(7 downto 0) :=(other => ‘1’);signal D2 : std_logic_vector(7 downto 0) :=(other => ‘1’);signal D0 : std_logic_vector(7 downto 0) :=(other => ‘0’);signal CE : std_logic := ’0’;signal Clk : std_logicbegindut : Addport map(D1 => D1,D2 => D2,D0 => D0,CE => CE,Clk => Clk);Clk <= not Clk after 25 ns;processbeginwait until Clk = ‘1’ and Clk’event;D1 <= D1+1;D2 <= D2+2;end process;end a_tb;用这个测试文件产生的仿真波形如图3 所示:这种方法可以仿真大量的数据,对程序进行比较全面的仿真。

(4)textio 法方法(3)产生的激励数据一般很有规律,也容易分析,但同时也可能造成某些情况无法检测到。

所以做仿真时若希望验证一些没有规律的数据,则可以用textio 方法实现。

实际上它的输入激励是存储在dat 文件中的,在测试文件中读入这些数据,如果用VHDL 编写程序,需要textio 库和VHDL93 标准的支持,限于篇幅这里就不详细介绍,详情请参见有关文献。

用ModelSim 进行时序仿真时序仿真是FPGA 设计的重要步骤之一,它通常是在做完布局布线后进行,仿真中包含布局布线产生的延时信息。

时序仿真的方法和步骤和功能仿真基本相同,但有两点需要注意:一是一般布局布线后生成的网表并不包含timing 数据,会用一个SDF(Standard Delay Format)文件来存储timing数据,它通常是由布局布线工具产生,在做时序仿真时要用到。

上面启动仿真器加载时不仅要加载布局布线后生成的源文件,还要加载SDF 文件。

二是在用ModelSim SE 版本时,由于不包含特定厂商的库文件,而在做时序仿真时恰恰与特定的器件相关,要用到这些库,为了提高仿真速度,通常需要提前编译这些库,而且不同厂商编译库的方法不尽相同,本文以编译Xilnx 公司的库为例,介绍编译库的方法。

这种方法是通过在Xilinx 的网站上下载的xilinx_lib_4.tcl 脚本进行的,选择菜单中的执行宏或者在命令行中输入source xilinx_lib_4.tcl,会弹出图4 所示的对话框,在选择所要编译的语言后,Xilinx Software Version、编译的库、Xilinx 路径和Modelsim 路径后就可以进行库的编译了。

其中较重要的是simprim(做时序仿真时用)和Xilinxcorelib(在进行Xilinx core 的电路仿真时用),这些库还有对应的Verilog 版本。

在进行库编译之前,最好把ModelSim 安装目录下的modelsim.ini 文件的只读属性去掉,这样可以把编译后的库信息加到该文件中,具体信息如下:simprim = C:/Modeltech_5.5b/simprimsimprims_ver = C:/Modeltech_5.5b/simprims_verxilinxcorelib = C:/ Modeltech_5.5b/xilinxcorelibxilinxcorelib_ver = C:/Modeltech_5.5b/xilinxcorelib_ver结束语通过对FPGA 设计中功能仿真和时序仿真的详细介绍,有助于熟练应用ModelSim 进行一系列仿真,同时也抛砖引玉地引导读者在实际中发现和应用ModelSim 的调试程序、比较波形等其他功能。

相关文档
最新文档