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

功能仿真和时序仿真1推荐仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真.功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行.1. 功能仿真 ( 前仿真 )功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真( Pre—Synthesis Simulation )和综合后仿真( Post—Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计 ; 综合后仿真既适合原理图设计,也适合基于 HDL 语言的设计。
2。
时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的, 所需的流程和激励也是相同的; 惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
3.2。
2 仿真工具1。
ModelSim 总体概览ModelSim 仿真工具是工业上最流行、最通用的仿真器之一,可支持 Verilog 、 VHDL 或是 VHDL/ Verilog 混合输入的仿真,它的 OEM 版本允许 Verilog 仿真或 VHDL 仿真.Model 技术公司共开发了 ModelSim/VHDL 和 ModelSim/Veril og 两种 ModelSim 产品,但它又分为不同的版本: OEM 版本 -— ModelSim/LNL 支持 Verilog 或者 VHDL , 但是不同时支持; ModelSim/PLUS 版本支持混合仿真 Verilog 和 VHDL ; ModelSim/SE 版本支持 PLUS 的所有功能连同附加功能. 1)ModelSim 的仿真实现方式(1) 交互式的命令行(Cmd)的方式 -—惟一的界面是控制台的命令行,没有用户界面。
modelsim使用指南.

执行仿真 (UI)
选择 timesteps数量就 可以执行仿真
Restart – 重装任何已改动 的设计元素并把仿真时间设 为零 COM) restart
38
run 命令参数
可选的参数
– -<timesteps> <time_unit> • 指定运行的timesteps数量 • 单位可用{fs, ps, ns, ms, sec}
用户界面 (UI)
– 能接受菜单输入和命令行输入 – 课程主要讨论
批处理模式
– 从DOS或UNIX命令行运行批处理文件 – 不讨论
13
基本仿真步骤
1 Ö 建立库
2 Ö 映射库到物理目录
3 Ö 编译源代码 - 所有的HDL代码必须被编译 - Verilog和VHDL是不同的
4 Ö 启动仿真器 5 Ö 执行仿真
UI) Design -> Compile Cmd) vlog -work <library_name> <file1>.v <file2>.v
– 文件按出现的顺序被编译 – 文件的顺序或者编辑的顺序不重要
支持增量式编译 缺省编译到work库
– 例如. vlog my_design.v
– -sdfmin | -sdftyp | -sdfmax <instance>=<sdf_filename> • 注释SDF文件 • 可选项 • 使用实例名也是可选项; 如果没有使用, SDF用于顶级
36
5 Ö 执行仿真
UI) Run COM) run <time_step> <time_units> 按timesteps指定的时间长度执行仿真
Modelsim ae 仿真方法

Modelsim ae 仿真/?_c11_BlogPart_BlogPart=blogview&_c =BlogPart&partqs=cat%3DModelsim仿真验证是CPLD/FPGA设计中的重要一环,QuartusII软件本身带有仿真功能,但是无法使用testbench,而且功能相对简单,对于复杂的设计,画波形图显然不是明智的选择,一般选择Mentor Graphics Corporation的modelsim作为仿真工具。
仿真一般分为功能仿真,前仿真与后仿真。
根据设计需要,编写完代码(Verilog hdl,Vhdl,system Verilog )后,首先进行功能仿真,验证所写代码是否能完成设计功能;前仿真又称为综合后仿真,即在QuartusII完成综合后,验证设计的功能;后仿真又称为时序仿真活布局布线后仿真,是加入延时后的仿真。
对于编译时间较短的小规模设计,一般只进行功能仿真与后仿真。
modelsim有很多版本,ae,pe,le,xe,se等,其中se功能最为强大,见下图:其中ae版本是altera的定制版本,已经包含了altera元器件的编译库,对于altera公司的器件仿真,使用比较简单。
下面以一个设计实例介绍modelsim的仿真过程,工具版本:QuartusII8.1,Modelsim Altera6.1g p1,设计语言使用verilog。
NativeLink 技术在 Quartus II 软件和其它 EDA 工具之间无缝地传送信息,并允许在 Quartus II 软件中自动运行 EDA 工具,所以有两种方式进行QuartusII 与 modelsim的联合设计仿真:QuartusII 软件直接调用modelsim仿真,这种方式步骤简单,但是不方便调试;QuartusII产生modelsim仿真所需要的.vo,.sdo文件,运用 modelsim仿真,这种方式比较麻烦,但是便于调试过程中程序,testbench的更改,一般推荐采用这种方式。
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\lpmd)添加库文件,并编译,compile -> compile …,出现compile source files窗口,library指定到lpm下,查找围,选quartus安装目录下…eda\sim_lib目录里的仿真原型文件:220model.v ,点c ompile ,点done。
到此,lpm库建立完毕。
e)同理,建立altera_mf库添加altera_mf.v ,建立primitive库添加altera_primitive.v建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的xxx_atoms.v。
FPGA验证之功能仿真和时序仿真的区别与方法

FPGA验证之功能仿真和时序仿真的区别与方法这里我们使用一个波形发生器作为例子,来说明如何使用Modelsim 对Quartus II 生成的IP Core 和相应的HDL 文件进行功能仿真和时序仿真。
这个例子里面使用到了由Quartus II 生成的一个片上ROM 存储单元。
这种存储单元和RAM 一样,都是基本的FPGA 片上存储单元,在以后的设计里面会经常使用到。
功能仿真(1)在Quartus II 中设置第三方仿真工具,选择“Assignments-Settings-EDA Tool Settings-Simulation”,选择“ModelSim-Verilog”。
如图1 所示。
图1 EDA 工具设置(2)编译工程。
编译带有IP Core 的工程文件。
(3)编译完成后会在工程目录下生成“simulation-modelsim”的目录,如图2 所示。
其中包含了3 个文件:“.vo”是仿真网表文件,可以用来代替设计文件;“.xrf”是Quartus 编译生成的信息文件;“.sdo”是工程延时信息。
图2 编译生成文件(4)加入仿真库文件。
仿真库的路径为“C:\altera\quartus50\eda\sim_lib”,包含了如下3 个仿真库文件。
· 220model.v:带有用户原语类型的Quartus 自带的IP 核的库文件。
· altera_mf.v:Quartus 自带的IP 核的库文件。
· cyclone_atoms.v:相应系列的器件库。
在本例中需要添加altera_mf.v,cyclone_atoms.v 两个库文件。
(5)将测试文件粘贴到刚才生成的目录中,如图3 所示。
图3 添加测试文件。
modelsim时序仿真最低时间间隔

modelsim时序仿真最低时间间隔
当我们进行数字电路设计时,时序仿真是必不可少的一步。
而在进行时序仿真时,我们需要注意一个重要的参数,即仿真的最低时间间隔。
在ModelSim中,最低时间间隔是指仿真时刻的最小精度,也就是仿真的时间分辨率。
这个参数的设置对于仿真结果的准确性和精度至关重要。
在进行时序仿真时,我们需要考虑到电路中各个信号的传输延迟和时序关系。
如果时间间隔设置得过大,仿真结果可能会出现误差,无法准确反映电路的真实行为。
而如果时间间隔设置得过小,不仅会增加仿真的计算量,还可能导致仿真时间过长,甚至无法完成仿真。
所以,在设置最低时间间隔时,我们需要根据电路的复杂程度和仿真的需求来进行选择。
一般来说,对于大多数数字电路设计,设置一个合适的最低时间间隔就能够满足仿真需求。
在实际操作中,我们可以根据经验来选择一个合适的时间间隔,然后通过观察仿真结果的准确性和稳定性来进行调整。
总的来说,时序仿真的最低时间间隔对于仿真结果的准确性和精度有着重要的影响。
合理设置最低时间间隔可以提高仿真的效率和准确性,从而更好地验证和优化数字电路设计。
在使用ModelSim进行时序仿真时,我们应该根据电路的特点和仿真需求来选择合适的时间间隔,以获得准确而高效的仿真结果。
modelsim仿真流程
modelsim仿真流程
ModelsIm仿真流程 ModelSim是一个功能强大且广泛使用的数字电路和模拟软件。
它能够模拟各种不同的电路,包括FPGA、ASIC、流片等,并且可以仿真VHDL、Verilog和SystemC等语言编写的代码。
本文将介绍ModelSim的仿真流程。
1. 建立仿真环境首先,我们需要创建一个仿真环境。
这意味着我们需要创建一个Project文件夹,将仿真所需要的所有文件(包括设计文件、仿真模型以及测试文件等)都放在里面。
我们可以选择使用ModelSim自带的Project Manager工具或者直接使用终端命令行来完成这个工程。
2. 编译设计文件下一步是编译设计文件。
这意味着我们需要把设计文件转换为ModelSim可以理解的仿真模型。
我们可以使用vlib命令来建立一个仿真库,然后使用vlog命令来编译设计文件。
编译完成后,我们需要使用vsim命令进入仿真环境。
3. 进行仿真在仿真界面中,我们可以加载测试文件,然后使用run命令来进行仿真。
这将模拟电路在一个虚拟的环境中运行,并产生仿真结果。
我们可以使用ModelSim提供的信号跟踪和波形查看工具来观察电路的运行状态并分析仿真结果。
4. 仿真结束仿真完成后,我们可以使用exit命令退出仿真环境,并使用ModelSim提供的波形分析和统计工具来评估仿真结果。
如果需要进行更详细的分析,我们可以将波形数据导出到其他工具进行进一步处理。
总之,ModelSim是一个非常强大的数字电路和模拟软件。
掌握其基本操作和仿真流程,可以帮助我们更高效地进行数字电路设计和开发工作。
交大最新ModelSim仿真教程
1. ModelSim概览ModelSim仿真软件是由Midel技术公司开发的工业界上最为通用的仿真器之一,它可以用于Verilog仿真,VHDL仿真或者两者的混合仿真。
ModelSim仿真软件产品的类型很多,我们在这里要介绍的是ModelSim/S,它是ModleSim的首要版本,功能最为强大,包含了ModelSIm/PLUS的所有功能及其附加功能。
ModelSim/SE随着时间的推移不断地推出新的版本,我们要介绍的是Mentor Graphis公司于2005年6月推出的ModelSim/Se 6.1版本的使用。
图1.1 ModelSim/Se 6.1用户界面在UNIX操作系统的命令行中首先输入fpga.setup命令,然后输入vsim命令,便可以得到图1.1所示的ModelSim图形用户界面。
为了完成后续的实验内容,请先将ModelSimLAB 文件夹(内部包含lab1、lab2、lab3、lab4四个文件夹)复制到自己的根目录下面。
2. 基本的仿真步骤ModleSim 有三种实现方法。
第一种是交互式的命令行,这种操作方法没有用户界面,唯一的界面是控制台的命令行。
第二种是用户界面(UI),它能够接收菜单输入和命令行输入。
第三种是批处理模式,是用DOS 或UNIX 命令行运行批处理文件。
我们在这里主要讨论第二种——用户界面的方式。
2.1建立ModelSim 库(物理库)这里要插入怎么创作的命令,进到哪个目录,运行什么命令?从主菜单里面:File->New->Library 点击Library 得到Create a New Library 对话框。
选择a new library and a logical mapping to it ,在Library Name 中输入work ,相应的在Library Physical Name 中也会出现物理名work 。
然后点击OK 确定。
此时在工作空间workspace 的Library 内会出现一个名为work 的库。
Modelsim仿真流程-经验总结
Modelsim仿真流程-经验总结1.Modelsim简介略。
2.modelsim仿真流程:modelsim基本的仿真流程包括建立库、建立工程并编译、仿真、调试、但在libero环境中运行modelsim时,软件自动映射库和生成工程文件。
其中功能仿真、综合仿真以及后仿真分别映射presynth、postsynth和postlayout库。
基本流程是:建立工作库→编译源代码→启动仿真→分析、调试。
2.1建立库并映射在modelsim中,任何使用VHDL、Verilog HDL、SystemC等语言实现的设计,都被编译到一个库中。
♥方法一:File>New>Library选择新建并映射到该库;♥方法二:在modelsim>提示符下运行命令vlib work2-建立库,vmap work work2-建立映射库;2.2建立工程Modelsim仿真需要建立自己的工程,同时modelsim还提供了文件夹管理工程的功能。
♥step1:File>New>project,并指定库文件名;♥step2:新建文件或导入文件;2.3编译文件建立好工程后,使用compile功能对源文件进行编译。
Libero环境启动modelsim时,系统执行run.do脚本文件自动编译源文件。
♥鼠标右击文件,选择compile All对所有的工程文件执行编译操作;♥启动仿真,使用simulation>start simulation>选择design选项卡功能使modelsim进入仿真状态,之后可以运行仿真。
在libero环境下,运行modelsim直接从运行仿真这一步骤开始。
♥运行仿真可以设置仿真时间或选择仿真全部♥tcl命令:do run.do –当设计修改后,使用此命令重新导入设计;Do wave.do-打开波形列表文件,或者向当前波形添加列表;Restart-复位当前仿真,从0时刻重新仿真;Run 1ms-运行仿真1ms时间;Run all-运行全部的仿真;在libero环境下,可以自己编写脚本文件代替run.do文件,在项目比较大的情况下可以大大简化仿真的操作。
modelsim后仿真教程
1.3.2后端仿真(1)在源代码窗口中选择【adder】模块,然后在相关的程序窗口【Process】中单击【Implement Design】左侧的“+”号展开程序组,单击【Place & Route】左侧的“+”号展开程序组,双击【Generate Post-Place & Route Simulation Model】,生成后端仿真所需要的文件,如图1-21所示,编译成功以后,如图1-22所示。
图1-21图1-22(1)双击桌面上的Modelsim SE6.0的快捷图标启动Modelsim 6.0SE仿真开发环境,或者从Windows XP操作系统中选择【开始】/【所有程序】/【Modelsim SE 6.0】/【Modelsim】命令启动Modelsim,如图1-23所示。
图1-23(2)新建后仿工程【adder】,如图1-24所示。
在【Project Name】一栏中输入工程名称【adder】,在【Project Location】中选择默认路径,如图1-25所示,单击,进入添加仿真文件页面,如图1-26所示。
图1-24图1-25图1-26(3)在图1-26中选择【Add Existing File】,进入文件添加页面,如图1-27所示。
单击【Copy to project directory】,将所需要添加的存在文件复制到仿真工程【adder】的文件夹下。
单击,选择需要添加的文件集。
后端仿真需要三个.v文件。
这三个文件分别是【test_adder.v】、【adder_timsim.v】、【glbl.v】,其中,【glbl.v】文件在Xilinx安装盘:\Xilinx\verilog\src文件夹里。
然后,打开【adder_timsim.v】文件,把sdf文件的相对路径netgen/par/adder_timesim.sdf改为绝对路径D:\program\XILINX10.1\ISE\study\adder\netgen\par,如图1-28所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用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_lib
4.较门级仿真还需要具有包含时延信息的反标记文件*.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,就可以自动启用了。
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中生成门级网表和延时文件,然后调用ModelSi
m进行仿真
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,在libr
ary标签中,将自己编译的资源库加入。在design标签中选择testbench作为设计单元,要
说明的是,如果你没有使用work库的默认库名,而是自己命名了,那么此时你可以使用w
ork库,也可以使用自己命名的库,二者是等价的。到这里,就可以完成了门级仿真,如果
是时序仿真,那么还需要将反标记*.sdo文件加入,具体方法是单击start simulation后,在
SDF标签中可以加入时延反标记文件。但要注意须在Apply to Region中将里面的"/"改写
为"testbench名(这个很重要,是testbench文件名,而不是顶层module名)/testbench中
实例化顶层的名称",如果是用模板创建的testbench,这个顶层名称叫做DUV(Design Und
er Test/Verification,待测设计)。
当然了,不是一帆风顺的,就在加入了SDF文件之后,准备开始的时候,出现了ER
ROR,vsim-sdf-3894:Compiled SDF file was not found.不过幸好很快找到了解决办法,
那就是将你的testbench和*.sdo文件放在同一个目录下,这种错误就可以解决了,默认的
会在当前工程下的simulation/modelsim中。
3.2将库文件直接编译到work的library中,这种会比3.1简单一些,不用建立库,直
接编译到工作库就可以了。
如何对Altera的megacore进行仿真呢?基本和上面一致,一般要用到仿真库中的22
0model.v和altera_mf.v。
我只找了一个很简单的计数器的例子来试,但发现了一个很有意思的现象,也是原来
我没有考虑到的,如果你想做功能仿真,那么由于你的设置中包含了Altera公司的一些原
语,比如lpm_XXXX等等,那么就需要将220model或者altera_mf.v编译进你的工程,但
是再做时序仿真或门级仿真的时候却不需要这些,因为你可以自己去看一下生成的门级网表
(*.vo),里面没有任何的原语,但是需要库文件和反标记文件(如果做时序仿真的话需要
反标记文件)。
补充:我正在为怎么每次都要重新选库文件困扰的时候,实际上发现那是因为我右键
了文件,选择了simulate,如果还是点work库,然后start simulation就可以不用再次选择
库了。