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

  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 的调试程序、比较波形等其他功能。

相关文档
最新文档