文档库 最新最全的文档下载
当前位置:文档库 › 用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法

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

用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.ini的“只读”属性去掉,便可进行

COPY了。比如ISE的modelsim.ini中,经过点击上图的Launch Compile Process后,

产生了下面的信息:

我们需要把红圈中的信息COPY到MODELSIM自己的modelsim.ini中相应的位置,

如下:

仿真库是编译在了ISE的文件夹下面,MODELSIM可过来使用,虽然可以在编译之前

变换路径,使仿真库编在MODELSIM文件夹下面,但都一样。

现在我们要往工程中填加文件了,

注意View中选的是Impementation,这时要求填加的是可综合的源文件,这里不要把

测试文件加进去,因为测试文件只能加在View的Simulation中,否则加进Impementation在综合的时候会报错,因为测试文件是不能综合的。

注意Association中选定Implementation,点OK。

然后再次填加测试文件,

注意这回Association要选Simulation,这样,测试文件加入后,会体现在View的Simulation中,

上图仿真类型栏中,选上Post‐Route,

然后设定仿真时间长度:

双击下图红圈处的Simulate Post‐Place & Route Model,

便可自动唤醒MODELSIM进行后仿真,出仿真波形的结果。你不用去管

Implementation之后生成的文件放在哪里。也不用去设置

MODELSIM,一切都是自动进行的。ISE能够自动执行后仿真从头到尾的一切流程,

比如综合、实现和唤起MODELSIM。你所要做的,只是去查看波形。另外,当查看

的信号不够用时,你要主动去填加信号。然后保存文件时,会出现

是让你把填加了新信号的WAVE界面保存起来。下次重新仿真时,需要关掉

MODELSIM,ISE再次唤醒的WAVE界面仍是默认的原始的,未加新信号的。这时你

可以OPEN先前保存的wave.do文件,出现上次填加了新信号的WAVE界面时,你

要手动去敲执行仿真的命令了。可从命令行执行run 2000 ns.

(二) 间接方法。

1.源文件加进工程的implementation中,

之后,

双击下图红圈处,

便可在D:\timing_sim\counter\netgen\par下面生成

两个关键文件。

因为D:\timing_sim\counter是ISE的工程路径。我们要是不想从ISE中唤起

MODELSIM,而是单独起动MODELSIM软件进行仿真,那就需要MODELSIM重新

建一个它自己的工程,我们这里另建一个文件夹,专供MODELSIM的工程所用。

D:\timing_sim\MODELSIM_TEST,建好它以后,很重要的一步是将先前ISE生成的

netgen文件夹考进来,连同netgen里面的内容全部放到MODELSIM工程专用的

根目录下面,D:\timing_sim\MODELSIM_TEST,如下,放进来了:

打开MODELSIM,切换路径至D:\timing_sim\MODELSIM_TEST

modelsim使用 + 前仿真 + 后仿真 + verilog

Modelsim 6.0 使用教程 1. Modelsim简介 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。 2.安装 同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。 ⑴.解压安装工具包开始安装,安装时选择Full product安装。当出现Install Hardware Security Key Driver时选择否。当出现Add Modelsim To Path选 择是。出现Modelsim License Wizard时选择Close。 ⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后 复制到该文件夹下。 ⑶.修改系统的环境变量。右键点击桌面我的电脑图标,属性->高级->环境变量-> (系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了, 请用“;”将其与要填的路径分开。LM_LICENSE_FILE = c:\flexlm\license.dat

Quartus ii 10.0教程(包含modelsim仿真)

Quartus ii 10.0教程 说明 本文的部分章节,来源于本人翻译的Terasic DE2-115的英文入门文档。 平台 硬件:艾米电子EP2C8-2010增强版套件 软件:Quartus II 10.0 + ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 ?典型的CAD流程 ?开始 ?新建工程 ?录入Verilog设计 ?编译设计 ?引脚分配 ?仿真设计电路 ?编程及配置到FPGA器件 ?测试设计电路 典型的CAD流程 计算机辅助设计(CAD)软件,使得运用可编程逻辑器件实现所需逻辑电路,变得容易。比如现场可编程门阵列(FPGA)。典型的FPGA CAD设计流程如图1所示。

图1 典型的FPGA CAD设计流程 CAD流程包含以下步骤: ?设计输入——所需电路可通过原理图方式或硬件描述语言方式(如Verilog或VHDL)进行设计。 ?综合——输入的设计被综合进入由逻辑元素(LEs,FPGA芯片提供)组成的电路中。 ?功能仿真——综合电路被测试以验证其功能是否正确,次仿真不考虑时序因素。 ?布局布线——CAD Fitter工具决定网表中定义的LEs如何布置成FPGA芯片中的实际LEs。 ?时序分析——分析已布局布线电路中的不同路径的传播延迟,用以指示所需电路的性能。 ?时序仿真——测试已布局布线电路,验证其是否在功能和时序上都正确。 ?编程及配置——设计的电路,通过编程配置开关,被实现到一个物理的FPGA芯片。 配置开关用于配置LEs和建立所需线路连接。 本指南介绍Quartus II软件的基本特征。展示如何使用Verilog硬件描述语言来设计和实现电路。使用GUI来实现Quartus II指令。通过本份指南,读者将学习到: ?新建工程 ?使用Verilog代码录入设计 ?将综合的电路布局到Altera FPGA ?分配电路的输入输出到FPGA上的指定引脚 ?仿真设计电路 ?编程配置艾米电子EP2C8核心板上的FPGA芯片 1. 开始 在Quartus II中设计的每个逻辑电路或子电路,叫做一个工程。软件每次运行一个工程,并将所有信息保存在单一文件夹中。欲开始一个新的逻辑电路设计,第一步就是新建一个文件夹来保存文件。为了保存本指南的设计文件,在D盘新建introtutorial文件夹。指南者运行的范例为一个简单的双路灯控电路。 打开Quartus II软件,将看到类似于图2的画面。该显示画面包括若干窗口,用户可使用鼠标选择,以访问Quartus II软件的相关功能。Quartus II提供的大多数命令都可用菜单形式来访问。例如,在图2中,在File标签下点击左键,可打开如图3所示的菜单。用左键单击Exit可退出Quartus II软件。

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->Vector Waveform File。如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。在列表区任一位置双击或者点击右键选择“Insert Node or Bus…”,弹出的对话框点击“Node Finder”按钮。在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。界面中“Filter”下拉框中默认的是“Pins: all”,也就是说将要列出的信号都是IO管脚。如果需要观察一些内部信号,可以改变下拉框的参数,比如“Registers: Pre-Synthesis”。下图显示了仿真信号加入波形编辑窗口的情况。对于有些总线信号可以改变其显示的进制格式,比如二进制、八进制、十进制和十六进制。在列表中对应信号点击右键选择 “Properties”,弹出的对话框中选择“Radix”下拉框实现进制的转换。

ModelSim作布局布线后仿真的库问题

ModelSim作布局布线后仿真的库问题 Modelsim是目前最流行的应用最广泛的FPGA仿真器,是Mentor Graphics的子公司Model T echnology开发的。因为Modelsim好学易用,调试方便,仿真速度快,功能强大,所以很多芯片厂商的开发系统都OEM Mentor Graphics公司的Modelsim仿真器,包括Xilinx,Alter a,Lattice和Actel等。Modelsim是一个单内核仿真器,同一个内核可以进行VHDL仿真、V erilog仿真和VHDL/Verilog混合仿真;支持所有的VHDL和Verilog标准;采用直接编译技术 (Direct-Compiled),大大提高了HDL编译和仿真速度。 Modelsim支持三个层次的仿真:RTL仿真、综合后仿真和布局布线后仿真。为了加快仿真速 度,一般情况下设计中调用的库都是已经进行编译过的,然后对设计进行仿真,此时仿真器直接调用库中已经编译过的单元,而不是再次对设计中的单元模块进行编译。所以如果要对设计进行综合后仿真和布局布线后仿真,必须先对设计中调用的库进行编译处理。这也是本文的重点内容。因为每个厂商的库不一样,而且同一个厂商,不同的器件库就有可能不同,所以下面就目前国内比较常用的几个公司的芯片的库问题分别进行探讨。1.Xilinx公司的器件: 其库的处理方式有两种,一种是在Xilinx的网站上,我们可以下载到压缩文件xilinx_lib _4.zip,解压缩后有一个xilinx_lib_4.tcl(将来的版本可能会升级)。单独运行Models im,然后在工具菜单中有一项是执行宏(这里Modelsim5.5 和5.6、5.7有一些差异,不过在5.5中仍可以找到执行宏Execute Macro),运行xilinx_lib_4.tcl后可以看到。 你可以根据你的厂商软件版本选择,指定Xilinx 的安装路径,在Install Path中指定你编 译后的数据将要放的目录位置(可以是任何一个目录,最好是设计者数据盘中的某个目录,因为库编译一次就可以了,重新安装软件不需要重新编译库)。对于Xilinx作布局布线后仿真只需要simprim库即可;如果要作综合后仿真,就需要编译Unisim库;如果设计中调用了 CoreGen产生的核就需要编译CoreGen库。这应该根据设计者的具体情况进行选择。 如果编译完了后,在Modelsim中库会自动变为标准库(注意:Xilinx提供的早期脚本文件作不到这一点)。所谓标准库,也就是说这个库会和IEEE这些库一样,当Modelsim启动时,这 些库会自动加载,里面的单元在VHDL代码中可以随意调用。比如:在布局布线后的VHDL 文 件中大家可以看到Library simprim这样的语句。当然也可以自己手动改变这些库的性质,只用修改在Modelsim安装路径下的Modelsim.ini文件即可。比如:修改后的Modelsim.ini 可以看到为 [Library] std = $MODEL_TECH/../std ieee = $MODEL_TECH/../ieee verilog = $MODEL_TECH/../verilog std_developerskit = $MODEL_TECH/../std_developerskit synopsys = $MODEL_TECH/../synopsys modelsim_lib = $MODEL_TECH/../modelsim_lib

ModelSim入门指导答辩

QUESTA-SIM(QuestaSim)10.2入门指南平台 软件:Questa-Sim 10.2 版本Starter Edition,也适用于高版本的ModelSim软件。内容 一. 设计流程 典型设计流程包括如下所示: (1)设计输入 设计的行为或结构描述 (2)RTL仿真(ModelSim) 功能仿真 验证逻辑模型(没有使用时间延迟) 可能要求编辑设计 (3)综合 把设计翻译成原始的目标工艺 最优化——合适的面积要求和性能要求 (4)布局和布线 映射设计到目标工艺里指定位置 指定的布线资源应被使用 (5)门级仿真(ModelSim) 时序仿真 验证设计一旦编程或配置将能在目标工艺里工作 可能要求编辑设计 (6)时序分析 (7)验证合乎性能规范 可能要求编辑设计 (8)版图设计 (9)仿真版图设计 (10)在板编程和测试器件 使用QuestaSi/ModelSim仿真的基本流程为: 图1.1 使用QuestaSim仿真的基本流程 2 开始 1.1 新建工程 打开QuestaSim后,其画面如图2.1所示。

图2.1 QuestaSim画面 1. 创建工作目录E:/QuestaSim/, 在其路径下创建子文件夹/ip、/prj、/rtl、/tb, prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl 是代码目录,tb是testbench目录。 2. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图2.2所示,此外还 允许通过修改初始化文件QuestaSim.ini文件来映射库设置。 图2.2 创建工程的对话框 2. 设置Project Name为BG0806,Project Location为E:/QuestaSim/prj, 勾选Copy Library Mappings ,点击OK。 3. 出现Add Items to the Project的对话框,如图2.3所示,

时序计算和Cadence 仿真结果的运用

时序计算和Cadence仿真结果的运用 中兴通讯康讯研究所EDA设计部余昌盛刘忠亮 摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest时序仿真方法的分析,推导出了使用SPECCTRAQuest进行时序仿真时的计算公式,并对公式的使用进行了说明。 关键词:时序仿真源同步时序电路时序公式 一.前言 通常我们在时序仿真中,首先通过时序计算公式得到数据信号与时钟信号的理论关系,在Cadence仿真中,我们也获得了一系列的仿真结果,怎样把仿真结果正确的运用到公式中,仿真结果的具体含义是什么,是我们正确使用Cadence仿真工具的关键。下面对时序计算公式和仿真结果进行详细分析。 二.时序关系的计算 电路设计中的时序计算,就是根据信号驱动器件的输出信号与时钟的关系(Tco——时钟到数据输出有效时间)和信号与时钟在PCB上的传输时间(Tflytime)同时考虑信号驱动的负载效应、时钟的抖动(Tjitter)、共同时钟的相位偏移(Tskew)等,从而在接收端满足接收器件的建立时间(Tsetup)和保持时间(Thold)要求。通过这些参数,我们可以推导出满足建立时间和保持时间的计算公式。 时序电路根据时钟的同步方式的不同,通常分为源同步时序电路(Source-synchronous timing)和共同时钟同步电路(common-clock timing)。这两者在时序分析方法上是类似的,下面以源同步电路来说明。 源同步时序电路也就是同步时钟由发送数据或接收数据的芯片提供。图1中,时钟信号是由CPU驱动到SDRAM方向的单向时钟,数据线Data是双向的。 图1

图2是信号由CPU 向SDRAM 驱动时的时序图,也就是数据与时钟的传输方向相同时 的情况。 Tsetup ’ Thold ’ CPU CLK OUT SDRAM CLK IN CPU Signals OUT SDRAM Signals IN Tco_min Tco_max T ft_clk T ft_data T cycle SDRAM ’S inputs Setup time SDRAM ’S inputs Hold time 图2 图中参数解释如下: ■ Tft_clk :时钟信号在PCB 板上的传输时间; ■ Tft_data :数据信号在PCB 板上的传输时间; ■ Tcycle :时钟周期 ■ Tsetup’:数据到达接收缓冲器端口时实际的建立时间; ■ Thold’:数据到达接收缓冲器端口时实际的保持时间; ■ Tco_max/Tco_min :时钟到数据的输出有效时间。 由图2的时序图,我们可以推导出,为了满足接收芯片的Tsetup 和Thold 时序要求,即 Tsetup’>Tsetup 和Thold’>Thold ,所以Tft_clk 和Tft_data 应满足如下等式: Tft_data_min > Thold – Tco_min + Tft_clk (公式1) Tft_data_max < Tcycle - Tsetup – Tco_max + Tft_clk (公式2) 当信号与时钟传输方向相反时,也就是图1中数据由SDRAM 向CPU 芯片驱动时,可 以推导出类似的公式: Tft_data_min > Thold – Tco_min - Tft_clk (公式3) Tft_data_max < Tcycle - Tsetup – Tco_max - Tft_clk (公式4) 如果我们把时钟的传输延时Tft_clk 看成是一个带符号的数,当时钟的驱动方向与数据 驱动方向相同时,定义Tft_clk 为正数,当时钟驱动方向与数据驱动方向相反时,定义Tft_clk 为负数,则公式3和公式4可以统一到公式1和公式2中。 三.Cadence 的时序仿真 在上面推导出了时序的计算公式, 在公式中用到了器件手册中的Tco 参数,器件手册中Tco 参数的获得,实际上是在某一种测试条件下的测量值,而在实际使用上,驱动器的实际 负载并不是手册上给出的负载条件,因此,我们有必要使用一种工具仿真在实际负载条件下 的信号延时。Cadence 提供了这种工具,它通过仿真提供了实际负载条件下和测试负载条件 下的延时相对值。 我们先来回顾一下CADENCE 的仿真报告形式。仿真报告中涉及到三个参数:FTSmode 、

modelsim仿真详细过程

由于我们只需要了解仿真的完整过程,所以不需要自己写源文件和测试文件(也称为testbench)。一下就是简单的源文件和测试文件(亲自测试过)。 //源文件 module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule //测试文件 `timescale 1ns/1ns `include"./compare.v" module comparetest; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

#100 a=1;b=0; #100 $stop; end compare compare1(.equal(equal),.a(a),.b(b)); endmodule 有了源文件和测试文件下面就开始用modelsim进行仿真了。 步骤一:新建工程和.v文件(也就是源文件和测试文件) 打开modelsim软件,点击file,选择new—>project 然后就会弹出下面窗口: 然后在project name那一栏写上工程名(随便去,一般是字母),在project location选择工程路径(路径最好没有中文,听说的),然后点OK。进入下个界面:

然后点击小框里面的“create new file”.弹出界面: 在file name中写下源文件名,由于这是比较两数的大小,我取为:compare。在“add file as type”中选择verilog,点OK,然后有:

ModelSim-Altera_6.5仿真入门教程

平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。

图2.1 ModelSim画面 1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2.2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。

图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Project标签,如图2.4所示。 图2.4 Project标签

3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项: ?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。

ModelSim软件仿真步骤教程

使用ModelSim模擬驗證HDL code 1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…) 2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。 3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。 將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,

count_test.vt),按下OK。 再將先前所開啟的增加檔案的視窗關閉,按close。 4.按下compile all。

Compile成功沒有顯示出錯誤訊息, 則開始模擬波形 5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module Name t_Gap_finder 按OK 6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在 testbench的module name: count_tst按滑鼠右鍵選擇→ Add → Add to Wave。

7.在波型畫面按下Run All開始模擬 跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。

8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到 Step 8 Testbench語法 `timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位 後面的1ps代表運算的精準度

Modelsim 仿真步骤总结

Modelsim 仿真步骤总结 Modelsim 仿真主要有以下三个方面:各版本的方法大体一致。(1)建立库并映射库到物理目录; (2)编译源代码(包括testbench); (3)执行仿真; 下面具体演示每一步的操作方法及流程,为力求简洁,其中有多种操方法的只介绍一种。 一)建立库的演示: 步骤为——启动modelsim>点击file菜单>(Change Directory)>new>(project)>library.注括号内的步骤非必须。 1.1)启动modelsim; (1.2)点击file菜单,此时若需更改路径,可以点击其中的Change Directory.(注modelsim会自动默认路径。我们也可以在1.1步骤之前建立一个文件夹用于modelsim的工程,再将路径更改到我们新建的文件夹路径。)

(1.3)点击file子菜单中的new,选择project用于新建立一个modelsim工程。(虽然此步非必须,但是建立一个新工程有益 于接下来整个仿真文件的管理。)

1.4)点击file子菜单new,再点击new下的library,用于建立 一个库。(仔细观察1.3步,新建工程的同时亦可建立库)。 至此,modelsim仿真第一大步建立库的工作完毕。

二)编译源代码(包括testbench): 大家都已知道在quartus中编译源代码的方法,这里说明一下在modelsim中编译源代码及testbench的方法。 步骤为——建立一个新工程(同时建立库)后,会自动提示你四个选项。如图: 选create new file后提示对话框,(也可以在有源文件的情况下选择add existing file到工程中。例如我们用quartus写好文件后,可以用此方法将quartus中的文件添加到modelsim工程中来)让你命名你即将创建的新文件,完毕后,会自动出现一个空白的编辑窗口,在那里输入源代码和testbench。(提示:这样编写完后点保存,便可以直接保存到上面设臵好的work库中。比起另一种方法,不建工程直接建库,再通过菜单栏source添加源

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 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。通常用户编译的文件都放在work库中,所以必须先建立work 库。有两种方法建立并映射库,第一种方法是通过图形界面,在菜单Design→Create a New Library 弹出对话框,如图1 所示。在Library Name 中输入work,如果建立其它库,可以输入其它名字。Library Map to 是映射的物理路径。第二种方法是用命令行的形式,建立库用ModelSim>vlib<库名>,映射库用ModelSim> vmap ,如建立并映射库work,就可以在ModelSim 主窗口命令提示符下输入 vlib work vmap work work (2)编译源代码 该步骤主要检查源文件的语法错误。实现方法有两种,一是通过菜单Design→Compile,出现选择源文件对话框,选择要编译的源文件,编译即可;二是通过命令行方式,这一步对于VHDL 和Verilog 所使用的命令是不一样的,对于VHDL 代码用vcom-work.vhd.vhd ,

时序计算和Cadence仿真结果的运用

字体大小: 小中大作者:余昌盛刘忠亮来源:日期:2007-06-25 点击:558 摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest时序仿真方法的分析,推导出了使用SPECCTRAQuest进行时序仿真时的计算公式,并对公式的使用进行了说明。 一、前言 通常我们在时序仿真中,首先通过时序计算公式得到数据信号与时钟信号的理论关系,在cadence仿真中,我们也获得了一系列的仿真结果,怎样把仿真结果正确的运用到公式中,仿真结果的具体含义是什么,是我们正确使用Cadence仿真工具的关键。下面对时序计算公式和仿真结果进行详细分析。 二.时序关系的计算 电路设计中的时序计算,就是根据信号驱动器件的输出信号与时钟的关系(Tco——时钟到数据输出有效时间)和信号与时钟在PCB上的传输时间(Tflytime)同时考虑信号驱动的负载效应、时钟的抖动(Tiitter)、共同时钟的相位偏移(Tskew)等,从而在接收端满足接收器件的建立时间(Tsetup)和保持时间(Thold)要求。通过这些参数,我们可以推导出满足建立时间和保持时间的计算公式。 时序电路根据时钟的同步方式的不同,通常分为源同步时序电路(Source-synchronous timing)和共同时钟同步电路(common-clock timing)。这两者在时序分析方法上是类似的,下面以源同步电路来说明。 源同步时序电路也就是同步时钟由发送数据或接收数据的芯片提供。图1中,时钟信号是由CPU驱动到SDRAM方向的单向时钟,数据线Data是双向的。 图2是信号由CPU向SDRAM驱动时的时序图,也就是数据与时钟的传输方向相同时的情况。

ModelSim使用的一点心得

ModelSim使用的一点心得- - 1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。 2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。 教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。首先建立库就叫我头晕。库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。在我看来,教程应该这么写: <1> 建立一个目录modelsimStudy。用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。有clk、ena、reset输入,cnt作为输出。 <2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。然后add existing file,把counter.vhd加入当前工程。 <3> 编译这个文件,通过之后,work下面会出现counter这个实体。然后选中它,右键,simulate(左键双击也可)。 <4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。这时,wave上就有clk\ ena \ reset等信号了。 <5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。 <6>运行Run。嘿嘿。有波形出来了吧。

用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 SE 6.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…,

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

利用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库,而且只能有一个。

modelsim建库流程_vip

Modelsim建库流程 ——在已有的IEEE库中加入新的库文件 1.将所需要的库对应的vhd文件拷贝至C:\Actel\Libero_v9.0\Model\vhdl_src\ieee 文件夹下; 2.确保modelsim不是处于仿真状态下: 3.编译库中的文件,首先需要选中库,确认如下

4.可以在vhdl模块中调用ieee.math_utility_pkg文件了。 采用上述方法,可以加入math_utility_pkg和fixed_pkg等vhdl-93中没有包括的库文件,增加vhdl语言支持的综合功能。 5.点击modelsim项目文件中的presynth.mpf文件,可以打开这个modelsim项目,然后可 以对所有文件进行编译、仿真等操作。 6.对于定点数运算,需要以下两个库: math_utility_pkg.vhdl - Types used in the fixed point package fixed_pkg_c.vhdl - Fixed-point package (VHDL-93 compatibility version) 而这两个库中又会调用floatfixlib库:这个库包含Actel/Libero_v9.1/Model/vhdl_src/floatfixlib 目录下的三个文件:fixed_pkg_c.vhd, float_pkg_c.vhd, math_utility_pkg.vhd,也就是说,要用这三个文件生成floatfixlib库。 ---------------------------------------------------------------------- Modelsim仿真流程-经验总结 7.Modelsim简介 略。 2.modelsim仿真流程:modelsim基本的仿真流程包括建立库、建立工程并编译、仿真、调试、但在libero环境中运行modelsim时,软件自动映射库和生成工程文件。其中功能仿真、综合仿真以及后仿真分别映射presynth、postsynth和postlayout库。 基本流程是:建立工作库→编译源代码→启动仿真→分析、调试。 8.建立库并映射

modelsim新手入门仿真教程

Modelsim新手入门仿真教程 1.打开modelsim软件,新建一个library。 2.library命名 3.新建一个工程。

3.出现下面界面,点击close。 4.新建一个verilog文件 键入主程序。下面以二分之一分频器为例。

文件代码: module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out; always@(negedge clk_in) begin if(!reset) clk_out=0; else clk_out=~clk_out; end endmodule 编辑完成后,点击保存。

文件名要与module后面的名称相同。 5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt 程序代码如下: `timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out; always #`clk_cycle clk=~clk; initial

begin clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end half_clk m0( .reset(reset), .clk_in(clk), .clk_out(clk_out)); Endmodule 6.添加文件,编译文件 先右键点击左边空白处,选择add to project→existing File 选择刚刚新建的两个文件。按ctrl键可以同时选择两个,选择打开,下一步点击ok

Quartus+ModelSim-Altera 联合仿真(Verilog版)

Quartus+ModelSim-Altera联合仿真(Verilog版) 作者:L.xiang (注:默认Next/OK/Finish) Step1:新建工程New Project Wizard...设置路径+工程名+entity名(project、entity必须同名); Step2:选择器件:Cyclone II EP2C5F26C8(例如);

Step3:Simulation设置:ModelSim-Altera+Verilog HDL; Step4:新建文件,选Verilog HDL File; Step5:输入代码,并保存为led(.v文件); Step6:调试,修改直到没有Error为止(工程目录下同时自动生成了simulation文件);

Step7:生成Test Bench文件(.vt):Processing->Start->Start Test Bench Template Writer; Step8:工程目录下C:\altera\text\led1\simulation\modelsim打开led.vt文件,并复制“led_vlg_tst”;

Step9:设置Simulation:Assignments+Settings; Step10:Simulation->仿真扫描时间Time scale:100ps(或其它值),Comple test bench-> Tset Benchse...; Step11:点击New...;

Step12:粘贴Test bench name:led_vlg_tst(Step8中已复制),Top level module in test bench:led_vlg_tst(必须和.vt文件里的module名一致); Step13:添加Test bench files:simulation/modelsim/led.vt,并点击Add; Step14:点击,即启动ModelSim进入仿真;

相关文档
相关文档 最新文档