第七章Modelsim 仿真_物理学院电子信息专业
- 格式:ppt
- 大小:1.14 MB
- 文档页数:54
本教程使用软件的下载链接如下:/download/quartus_modelsim_setup.zipMolelsim仿真使用教程——利用quartus生成网表文件Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件,接下来以一个简单的例子介绍modelsim的基本使用方法。
第一步:建立工程,该过程与quartus使用的教程大部分是一样的,区别如下:在simluation选项中选择MoselSim-Altera作为仿真工具,fomat中的选项根据编程语言进行选择,本教程以VHDL为例。
第三方的仿真工具所以在此选择第二步:新建文件:新建一个源文件,保存为led.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity led isport(led_out : out std_logic_vector(7 downto 0);clk : in std_logic;rst_n : in std_logic);end led;architecture behavior of led issignal light : std_logic_vector (7 downto 0);beginprocess(clk,rst_n)beginif(rst_n = '0')thenlight <= "00000010";elsif(clk'event and clk ='1' )thenif(light = "10000000") thenlight <= "00000001";elselight <= light(6 downto 0)& '0';end if;end if;end process;led_out <= light;end behavior;新建一个testbench 文件,保存为testbench.vhd(testbench是电路的激励文件,在后面章节会详细介绍,这里仅仅作为软件的演示不具体介绍testbench的设计过程):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.numeric_std.all;entity testbench isend testbench;architecture behavior of testbench iscomponent ledport ( clk : in std_logic;rst_n : in std_logic;led_out : out std_logic_vector(7 downto 0));end component;--input signalsignal clk : std_logic := '0' ;signal rst_n : std_logic :='0';--output signalsignal led_out : std_logic_vector (7 downto 0);--contstantconstant clk_period : time := 20ns;begincp1 : led port map (clk =>clk,rst_n => rst_n,led_out => led_out );clk_gen : processbeginclk <= '1';wait for clk_period/2;clk <= '0';wait for clk_period/2;end process;rst : processbeginrst_n <= '0';wait for 20ns;rst_n <= '1';wait for 200ns;wait;end process;end;然后对顶层模块led.vhd进行检查语法和编译,在编译的窗口出现EDA Netlist Writer 是表示第三方仿真工具所需要用到的网表文件(Netlist)成功生成。
1、实验要求........................................................................... - 1 -2、八选一数据选择器的实现 .............................................. - 1 -2.1、八选一数据选择器的功能...................................... - 1 -2.2、八选一数据选择器的主程序.................................. - 2 -2.3、八选一数据选择器的激励程序.............................. - 2 -2.4采用modelsim对八选一数据选择器的仿真及分析- 3 - 3全加器的实现...................................................................... - 4 -3.1一位全加器的功能 ..................................................... - 4 -3.2全加器的主程序 ......................................................... - 5 -3.3全加器的激励模块 ..................................................... - 6 -3.4采用modelsim对全加器的仿真及分析 .................. - 7 -4、体会心得........................................................................... - 7 -1、实验要求(1)、熟悉verilog语言的语法并能够熟练的编写简单的程序实现相应的功能;(2)、用verilog语言编写八选一数据选择器和全加器的程序代码实现其功能;(3)、用verilog语言编写相应的激励代码用modelsim软件对八选一数据选择器和全加器进行相应的功能仿真;2、八选一数据选择器的实现2.1、八选一数据选择器的功能图2.1.1八选一数据选择器八选一数据选择器的数据输入端为:a,b,c,d,e,f,g,h八选一数据选择器的地址输入端为:s0,s1,s2八选一数据选择器的输出端为:out八选一数据选择器的功能:当S0S1S2=0时,输出out=a;当S0S1S2=1时,输出out=b;当S0S1S2=2时,输出out=c当S0S1S2=3时,输出out=d当S0S1S2=4时,输出out=e当S0S1S2=5时,输出out=f当S0S1S2=6时,输出out=g当S0S1S2=7时,输出out=h2.2、八选一数据选择器的主程序/* a,b,c,d,e,f,g,h为数据输入端口,s0,s1,s2为地址输入端口,out 为输出端口*/module option(a,b,c,d,e,f,g,h,s0,s1,s2,out);input [2:0] a,b,c,d,e,f,g,h;// a,b,c,d,e,f,g,h为输入端且为寄存器型数据input s0,s1,s2;// s0,s1,s2位输入端output [2:0] out; //out为输出端且为寄存器型reg [2:0] out;always@(a or b or c or d or e or f or g or h or s0 or s1 or s2)begincase({s0,s1,s2})3'd0 : out=a;3'd1 : out=b;3'd2 : out=c;3'd3 : out=d;3'd4 : out=e;3'd5 : out=f;3'd6 : out=g;3'd7 : out=h;endcaseendendmodule2.3、八选一数据选择器的激励程序module sti;reg [2:0] A,B,C,D,E,F,G,H;reg S0,S1,S2;wire [2:0] OUT;option dtg(A,B,C,D,E,F,G,H,S0,S1,S2,OUT);initialbeginA=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=1;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=1;S2=1;endendmodule2.4采用modelsim对八选一数据选择器的仿真及分析图2.4.1八选一数据选择器的仿真波形波形分析如下:输入数据为A=000,B=001,C=010,D=011,E=100,F=101,g=110,h=111;S0,S1,S2,为选择控制端,它们组成一个三位数,记为enable,控制数据的输出,其中S0为最高位,S1次之,S2为最低位。
1.点击 ModelSim实验 下载实验文档,保存并解压到D:盘根目录下。
2.启动 ModelSim6.0,执行 File 菜单下的 Change Directory... 命令。
在随后弹出的对话框中,选择 D:\exam 文件夹,点击“OK”按扭。
3.执行 File->New 菜单下的 Library 命令,在随后弹出的对话框上,点击“OK”按钮,建立 work 库。
4.执行 File->New 菜单下的 Project 命令,在随后弹出的对话框的 Project Name 栏,输入 counter,点击“OK”按钮。
5.点击“Use Current Ini”按钮。
6.点击“Add Existing File”图标。
在随后弹出的对话框上,通过点击“Browse...”按钮,选中 D:\exam文件夹下的 tb.v、counter.v 文件,然后点击“OK”按钮。
点击 Add Item to Project 对话框的“Close”按钮。
7.在 Workspace 窗口里,点击右键。
在弹出菜单中点击 Compile 下的 Compile All 命令。
8.在 Simulate 菜单下,点击 Start Simulation... 命令。
9.在随后弹出的对话框中,将 Design Unit 项设为 work 库下 tb 单元,将 Resolution 设为 ns,然后点击“OK”按钮。
10.执行 View->Debug Windows 菜单下的 Wave 命令,打开 Wave 窗口。
11.在 Objects 窗口下,点击右键。
在弹出菜单下,点击 Add to Wave 下的 Signals in Design 命令。
12.在 Transcript 窗口里,输入 run 10 ms 命令。
13.进入 Wave 窗口,观察各个信号的波形,是否与原设计相符。
14.在 Wave 窗口里,双击 cnt 的波形,打开 dataflow 窗口,观察各个信号传递关系。
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。
!!!!安装路径不能有空格!!!不要装在d:\program files\下,否则有可能自动调用时出现找不到d:\program 的情况在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
最好这样,我曾经放在D:\altera\Modelsim_6.1d\License.dat都不行修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
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两种常用的硬件描述语言,用户可以根据自己的需求选择合适的语言进行设计和仿真。
由于我们只需要了解仿真的完整过程,所以不需要自己写源文件和测试文件(也称为testbenet)。
一下就是简单的源文件和测试文件(亲自测试过)。
//源文件module eompare(equal,a,b);input a,b;output equal;assign equal=(a==b)?1:0;endmodule//测试文件'timescale 1ns/1ns'in clude"./compare.v" module comparetest;reg a,b; wire equal;initialbegina=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0; #100 $stop; endcompare compare1(.equal(equal),.a(a),.b(b)); en dmodule有了源文件和测试文件下面就开始用modelsim 进行仿真了步骤一:新建工程和.v 文件(也就是源文件和测试文件) 打开modelsim 软件,点击file ,选择new — >project 然后就会弹出下面窗口:然后在project name 那一栏写上工程名(随便去,一般是字母),在project location 选择工程路径(路径最好没有中文,听说的),然后点 OK 。
进入下个界面:〔JsynopsywM Create ProjectProject MarneProject Locationnuoiiile reo -a wire in.it i begin a=0 t=0 #100 #100#100 #100 endeompaie er diLC5Default Library NameCopy Settings From□de I ■匸亡 ch_l 0 ・ 0目/ node lai-in .iniBrowse >>.• Cop? Library Mappings Re*isren (e Litxarv Mapp ng c-all I -canEincie I -finiab I -in±r I -nexn I -3■:ep I -overirl 戸 1 RiTii 4 ftli嚳|H 如|CdumnLa-yout |AlLC&lmrais创■■ NameSt3tuj Type Orda ModifiedM ' compane. 学 Verilog 0Q&/10/12 08:^19:30 PM然后点击小框里面的“ create new file” •弹出界面:在file name 中写下源文件名,由于这是比较两数的大小,我取为:compare 在“ add file as typ6‘ 中选择 verilog ,点 OK ,然后有:复制上面源文件代码,粘贴到上图右边窗口里面me dule c-znr.p'a.r s. (a,input a f b ;OTJ ecjuaL;aaslg-n ^0^31= (a==fc>) ?en 曲 G lule\=t双击compare”文件会弹出编译窗口:jt W/iridow Help麟臂逼塑]出叹直閱|売to\H]| AU |E /swn/lx4/Kxnpare, v Lnz步骤二:编译文件在添加文件在已建的工程后,两个文件的status都是问号,编译后就变成勾。
FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。
在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。
在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。
功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。
在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。
ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。
ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。
它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。
ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和Model Sim/AE,分别是为Xilinx公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。
用ModelSim 进行功能仿真进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。
下文主要介绍仿真步骤和测试激励的加载。
仿真步骤(1)建立库并映射库到物理目录因为用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仿真工具支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化,具备强大的模拟仿真功能,在设计、编译、仿真、测试、调试开发过程中,有一整套工具供你使用,而且操作起来极其灵活,可以通过菜单、快捷键和命令行的方式进行工作。
ModelSim的窗口管理界面让用户使用起来很方面,它能很好的与操作系统环境协调工作。
ModelSim的一个很显著的特点就是它具备命令行的操作方式。
modelsim是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器;具有源代码模版和助手,项目管理等特点。
Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和Verilog混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能; C和Tcl/Tk接口,C调试;对SystemC的直接支持,和HDL任意混合;支持SystemVerilog的设计功能;对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;ASIC Sign off。
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仿真本文档主要介绍单独用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仿真⼊门之⼀:软件介绍编写这个教程之前,为了让不同⽔平阶段的⼈都能阅读,我尽量做到了零基础⼊门这个⽬标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度。
如果您是FPGA开发⽅⾯的初学者,那么这个教程⼀定能够帮助你在仿真技术上越过新⼈的台阶;如果您是FPGA开发的⽼⼿,这篇⽂档也并⾮对您没有帮助,您可以把教程发给其他刚⼊门的同事,免去您亲⾃上阵指导的⿇烦,把主要的精⼒放在更有价值的地⽅。
⼀、FPGA设计仿真验证简介严格来讲,FPGA设计验证包括功能仿真、时序仿真和电路验证,它们分别对应整个开发流程的每⼀个步骤。
仿真是指使⽤设计软件包对已实现的设计进⾏完整的测试,并模拟实际物理环境下的⼯作情况。
功能仿真是指仅对逻辑功能进⾏模拟测试,以了解其实现的功能是否满⾜原设计的要求,仿真过程没有加⼊时序信息,不涉及具体器件的硬件特性,如延时特性等,因此⼜叫前仿真,它是对HDL硬件描述语⾔的功能实现情况进⾏仿真,以确保HDL语⾔描述能够满⾜设计者的最初意图。
时序仿真则是在HDL可以满⾜设计者功能要求的基础上,在布局布线后,提取有关的器件延迟、连线延时等时序参数信息,并在此基础上进⾏的仿真,也成为后仿真,它是接近于器件真实运⾏状态的⼀种仿真。
⼆、仿真软件ModelSim及其应⽤HDL的仿真软件有很多种,如VCS、VSS、NC-Verilog、NC-VHDL、ModelSim等,对于开发FPGA来说,⼀般是使⽤FPGA⼚家提供的集成开发环境,他们都有⾃⼰的仿真器,如Xilinx公司的ISE,Altera公司的Quartus II等,但是这些⼚家开发的仿真器的仿真功能往往⽐不上专业的EDA公司的仿真⼯具,如ModelSim AE(Altera Edition)、ModelSim XE(Xilinx Edition)等。
Quartus II设有第三⽅仿真⼯具的接⼝,可以直接调⽤其他EDA公司的仿真⼯具,这极⼤地提⾼了EDA设计的⽔平和质量。
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。
ModelSim的仿真1.仿真的分类仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真。
功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。
1). 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。
2). 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。
SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
2.仿真的作用1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。
Modelsim工具的使用一、仿真流程1.建立work库通常modelsim在使用的时候,和大多数开发软件一样,第一步先建立一个工程。
而modelsim在建立工程之前,一般都要建立一个工作库(library),命名为work,仿真的时候工程就运行在这个库里面。
通常modelsim在第一次运行的时候,并没有work这个库文件,所以没有work库的话,先建立一个work的library,再建立新的工程。
一般的工程路径设置如下:project→放置FPGA的工程文件,source→放置源代码(ipcore,建议放在工程的根目录下,有同事发现ipcore改变其路径,仿真的时候会出错,并且工程里面要手动添加IP核的文件),simulation→放置modelsim的仿真工程。
新建一个work库。
File→New-→Library刚建立的work库是空的,因为里面什么东西都没有,但是当添加了相应的文件后,编译一次,work就会有内容了。
新建的Work,右键设置Edit一下他的属性,如图上所示,pathname这里指定到存放仿真工程的work的库文件夹即可。
2.建立新工程File—>New- Project然后就会弹出如下对话框,选择好工程的路径,命名好工程名字。
,如果之前就已经编写好了v或者vhd文件的话,直接选择add existing file,否则,选择Create New File。
接下来把所有的v或者vhd的文件都添加进来。
3.编写testbench……4.编译整个工程编写完testbench之后,编译整个工程,以后每当工程中其中一个文件修改后,只需单独编译修改的那个文件即可。
(参见文档最后部分的例子)编译完后,会发现在Project中,里面的文件都会打钩,并且在simulation文件夹里面的子文件夹work会多了一些东西出来。
返回到Library这里,会发现之前是空的wrok文件库里面,现在也多了一些东西。