modelsim仿真教程
使用ModelSim仿真入门
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 窗口,观察各个信号传递关系。
modelsim仿真流程
1、运行ModelSim,如果上一次使用ModelSim建立过工程,这时候会自动打开上一次所建立的工程;2、点击File->New->Project,在Project Name中我们输入建立的工程名,在Project Location中输入工程保存的路径,注意ModelSim不能为一个工程自动建立一个目录,这里我们最好是自己在Project Location中输入路径来为工程建立目录,在Default Library Name中为我们的设计编译到哪一个库中,这里我们使用默认值,这样,在我们编译设计文件后,在Workspace窗口的Library 中就会出现 work库。
这里我们输入完以后,点击OK;3、如果提示我们给定的工程路径不存在,是否建立该路径,我们的目的就是为工程建立一个新目录,因此,点击确定;4、点击Create New File可以为工程添加新建的文件,点击Add Existing File 为工程添加已经存在的文件,点击Create Simulation为工程添加仿真,点击Create New Folder可以为工程添加新的目录。
这里我们点击Create New File;5、我们在File Name中输入文件名称,Add file as type为输入文件的类型为VHDL、Verilog、TCL或text,这里我们使用默认设置VHDL,Folder为新建的文件所在的路径,Top Level为在我们刚才所设定的工程路径下。
点击OK;并在Add items to the Project窗口点击Close关闭该窗口;6、这时候在Workspace窗口中出现了Project选项卡,在其中有文件名.vhd,其状态栏有一个问号,表示未编译,我们双击该文件,这时候出现编辑窗口,在其中我们输入我们的设计文件7、点击File->Save,并退出该窗口(File->Close);8、在WorkSpace窗口的文件名.vhd上点击右键,选择Compile->Compile All;9、在脚本窗口中将出现一行绿色字体Compile of DivClkHDL.vhd was successful.,说明文件编译成功,在该文件的状态栏后有一绿色的对号,表示编译成功;10、下面我们开始仿真,点击菜单Simulate->Simulate,展开Design选项卡下的work库,并选中其中的behavioral,这是在Simulate中出现了work.实体名(behavioral)表示我们所要仿真的对象,Resolution为仿真的时间精度,这里我们使用默认值,点击OK;11、为了观察波形窗口,我们点击菜单View->Wave;12、这时候出现的Wave窗口为空,里面什么都没有,我们要为该窗口添加我们需要观察的对象,首先在主窗口而不是波形窗口中点击View-> Signals打开信号列表窗口,在改窗口中点击Add->Wave->Signals in Design,这时候在波形窗口中就可以看到这些信号了;13、下面我们就开始仿真了,在主窗口中输入命令对信号进行驱动仿真14、退出仿真,在主窗口中点击Simulate->End Simulation,会出现对话框,提示我们是否确认退出仿真,我们点击是退出仿真;15、仿真结果分析;。
ModelSim后仿真详细流程介绍PPT课件
延时信息
2021/3/9
8
目录
仿真的基本概念 ➢后仿真前的基本准备工作
后仿真的基本操作步骤
2021/3/9
9
后仿真前的基本准备工作
▪ ModelSim库
库文件,是指已经编译通过的设计文件的总体。
ModelSim中有两种库类型:
工作库
资源库
1.库的内容会随着使用者 更新设计文件和重新编译 而变化; ▪2D.e存sc放ript当ion前of设th计e b文usi件nes编s 译 后产生的设计单元; 3.编译前必须先创建好工 作库; 4.每次编译只允许有一个 工作库; 5.默认的工作库名是work
2021/3/9
14
后仿真前的基本准备工作
▪ Altera仿真库建立步骤
2.启动ModelSim SE。建立两个新库,从主菜单选择File->New-> Library,选中“a new library and a logical mapping to it”,在“Library Name”填写“altera_base_v”,Library Physical Name填写文件夹绝 对路径,如图所示。
2021/3/9
13
后仿真前的基本准备工作
▪ Altera仿真库建立步骤
1.在ModelSim安装目录中建立两个文件夹,一个是用于存放公用的 库给它取名altera_base_v;另一个是用于存放您要用到的特定的器件 库,取名为altera_device。
比如,F:\Modelsim 6.5\altera\altera_base_v F:\Modelsim6.5\altera\altera_device
注意:要把 Enable optimization 前 面的勾去掉,即不进行自动优化。
modelsim仿真教程
本教程使用软件的下载链接如下:/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)成功生成。
Modelsim的仿真教程
ModelSim的仿真1.仿真的分类仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真。
功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。
1). 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。
2). 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。
SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
2.仿真的作用1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。
Modelsim 自动化仿真平台搭建
Modelsim do文件的自动化仿真 创建虚拟信号
虚拟信号可以把实际信号转化为更人性化的信号,比如将信号的数值转化为字符显示,例如状 态机的跳转可以用虚拟信号标注这样更清晰。
virtual type { {1 IDLE} {2 READ} {4 WRITE} {8 STOP} } state_struc 以上简历一个虚拟的结构体,结构体的名字叫state_struc
Modelsim do文件的自动化仿真 Tcl语言的语法
vlib:创建库。格式vlib <library name>,默认库的名字为work 示例: vlib work vmap:映射逻辑库名,将逻辑库名映射库路径。语法格式vmap work <library name> 示例:vlib work work vdir:显示指定库的内容 。语法格式vdir –lib <library name> 示例:vdir –lib work vlog:编译Verilog 源代码,库名缺省编译到work本地库,文件按顺序编译。语法格式 vlog
modelsim将加载两次,这种结果不是我们想要的。 .SDO文件并不是标准的延时文件,如果想转到标准的延迟文件可以用以下命令,sdf文件比
sdo文件小加载速度快。sdf文件采用了gzip压缩。 sdfcom netlist/my_design.sdo netlist/my_design.sdf
Modelsim 自动化仿真平台源自Modelsim GUI仿真流程
1. 打开Modelsim 软件,建一个工程文件夹,简历Modelsim 仿真工程。 2. 在用户窗口界面加入需要仿真的所有代码和库文件。 3. 编译有文件 4. 选择testbench顶层文件启动仿真。 5. 选择所要观察的目标信号,并将其加入到波形观察窗口,如需更改bus显示
【翻译】modelsim指南之基本仿真(digital logic)
Introduction本文将一步步实现以下基本仿真流程:1.创建设计工作库2.编译设计单元3.加载设计4.运行仿真本文用到的设计文件本文的范例是一个8位的二进制加法计数器和相关的测试文件。
保存路径:Verilog-<install_dir>/examples/tutorials/verilog/basicSimulation/counter.v and tcounter.v相关阅读用户手册的章节:设计库、Verilog和SystemVerilog仿真。
参考命令:vlib,vmap,vlog,vcom,view,run.创建设计工作库在你仿真前,必须先创建一个库并编译源码到这个库。
1.创建一个新目录并复制本文的设计文件。
Copy counter.v 和tcounter.v2. 启动modelsim。
a. windows下双击快捷方式启动,你将看到modelsim的欢迎对话框,单击Close.b. 选择File > Change Directory 指定到第一步创建的目录。
3. 创建工作库。
a. 选择File > New > Library.弹出一个对话框,可以指定库名等选项。
如图1。
图1 创建一个新库b. 在Library Name项输入work(如果它没有自动输入)。
c. 单击OK.modelsim创建了一个目录work并写了一个名为_info的文件到这个目录。
这个_info文件必须保持在work文件夹以区分他是modelsim的库。
不要从你的操作系统里修改这个文件夹里的内容;所有操作应该在modelsim里进行。
modelsim也把work库添加到库窗口(图2)并记录库映射作为未来参考(modelsim.ini)。
图2当你在第3步单击确定后,Transcript窗口显示以下内容:vlib workvmap work work这两行命令等于你的菜单操作。
编译设计单元创建工作库后,接着就准备编译你的源文件。
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使用教程ModelSim是一款常用的硬件描述语言(HDL)仿真工具,本教程将向您介绍如何使用ModelSim进行仿真。
步骤1:安装ModelSim首先,您需要下载和安装ModelSim软件。
在您的电脑上找到安装程序并按照提示进行安装。
步骤2:创建工程打开ModelSim软件,点击"File"菜单中的"New",然后选择"Project"。
在弹出的对话框中,选择工程的存储位置,并为工程命名。
点击"OK"完成工程创建。
步骤3:添加设计文件在ModelSim的工程窗口中,右键点击"Design"文件夹,选择"Add Existing File"。
然后选择包含您的设计文件的目录,并将其添加到工程中。
步骤4:配置仿真设置在工程窗口中,右键点击"Design"文件夹,选择"Properties"。
在弹出的对话框中,选择"Simulation"选项卡。
在"Top level entity"字段中,选择您的设计的顶层模块。
点击"Apply"和"OK"保存设置。
步骤5:运行仿真在ModelSim的工具栏中,找到"Simulate"按钮,点击并选择"Start Simulation"。
这将打开仿真窗口。
在仿真窗口中,您可以使用不同的命令来控制和观察设计的行为。
步骤6:查看仿真结果您可以在仿真窗口中查看信号波形、调试设计并分析仿真结果。
在仿真窗口的菜单栏中,您可以找到一些常用的查看和分析工具,如波形浏览器、信号分析器等。
步骤7:结束仿真当您完成仿真时,可以选择在仿真窗口的菜单栏中找到"Simulate"按钮,并选择"End Simulation"以结束仿真。
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)beginif(!reset)clk_out=0;elseclk_out=~clk_out;endendmodule编辑完成后,点击保存。
文件名要与module后面的名称相同。
5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt程序代码如下:`timescale 1ns/100ps`define clk_cycle 50module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initialbeginclk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalf_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));Endmodule6.添加文件,编译文件先右键点击左边空白处,选择add to project→existing File选择刚刚新建的两个文件。
按ctrl键可以同时选择两个,选择打开,下一步点击ok7选中其中一个,右键,选择complie→complie all出现两个勾,说明编译通过。
出现×,说明文件编译出错,双击×,可以查看错误。
8.终于可以仿真了选择simulate→start simulate。
选择刚刚新建的库里面的top,或者测试文件名称,左下角的enable optimization一定要去掉勾,有勾的画不会出来波形,一定要去掉勾!一定要去掉勾!一定要去掉勾!(本人也不清楚原因,都是初学者,嘻嘻)跳出界面,右键测试文件,选择如下图接下来,选择仿真,run→run all点击缩小键,如图,就可以看到波形啦到此结束!初学者,如有错误,欢迎指出。
使用ModelSim的仿真步骤
使用ModelSim的仿真步骤:
1.建立工程:选file/new/project菜单,打开Create Project窗口.
填Project Name栏,为你的工程启一个名子.
按Browse按纽,为你的工程指定一个盘上目录,作为以后工程文件的存放位置.
指定缺省库名为Work库.
2.在出现的ADD ITEMS TO THE PROJECT窗口中选Create New File为当前工程加入一个新建文件,或选Add existing File为当前工程加入一个已存在的文件.
3.选Compile/compile All对当前设计工程进行编译.
4.选Simulate/Star Simulation菜单项,打开仿真器.
5.在仿真器中选Design页,点击WORK页前的加号,打开WORK 库,选一个仿真文件,选好后,点击右下脚的OK按纽.
6.在出现的Object窗口中,会有芯片的引脚列表.选一个引脚,压鼠标右键,弹出一菜单,在其中选Add to wave/Selected Signal菜单项,可将引脚对象加入到Wave窗口中.重复上述过程,将全部引脚加入到Wave波形窗口中.
7.在WAVE中,选一个引脚,用WAVE窗口的工具画加在引脚上的波形.
8.画完输入引脚的波形后,输入RUN –ALL,回车,执行仿真.
注:上述仿真过程,可用命令:
vsim work.filename
启动仿真窗口.
view wave
打开波形窗口
add wave –dec *
加入所有波形信号,以十进制方式force
为每个引脚加入驱动信号
run –all
执行仿真任务。
Modelsim仿真详细教程
.10进制计数器测试激励文件的建立 1 .10进制计数器测试激励文件的建立
(2)为了方便仿真,有必要将div30模块进行修改。因 为div30是30,000,000分频,这么大的分频系数, 难于仿 真,所以将div30模块中的分频系数做如下改动。
process(clkin,reset) variable cnt : integer range 0 to 3 :=0; --将分频系数改为3,即6分频; begin if reset = '0' then cnt :=0 ; Reg_clk <= '0'; elsif rising_edge(clkin) then cnt := cnt + 1; if cnt = 3 then cnt := 0; Reg_clk <= not Reg_clk ; end if; end if; end process;
FPGA系统设计与实践
第四章 功能仿真
第四章 功能仿真
内容提要
功能仿真(Function Simulation)的作用是对 源代码进行编译。本章介绍了Model Technology 公 司的Modelsim XE II v5.6e的主要结构、属性设置、 Modelsim XE II v5.6e与ISE5.2的软件接口,测试激 励文件的建立以及Modelsim仿真分析方法。Altera 公司QuartusII3.0仿真器(Simulator) 的主要结构、属 性设置以及仿真分析方法。
信号窗口 波形窗口
变量窗口
数据流窗口
列表窗口
进程窗口
主窗口
主窗口是Modelsim的核心窗口,在缺省(默认)状 态下,在启动Modelsim时会自动打开。主窗口分为 工作区和脚本区两部分。在工作区,可以很方便地 对当前工程的工作库以及所有数据集合进行控制。 在脚本区,可以输入Modelsim的各种命令,命令执 行后会反馈执行后的信息,使用户了解执行的实际 情况。
modelsim 10仿真教程
Modelsim仿真教程一、前期准备1、正确安装好modelsim和quartus软件。
我用的平台的版本是Modelsim SE10.1和Quartus II10.1。
2、在ModelSim中加入Quartus提供的仿真库在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:·Quartus不支持Testbench;·调用了megafunction或者lpm库之类的Altera的函数;·时序仿真要在Modelsim下做仿真。
下面以Altera器件为例,介绍如何在ModelSim中加入Altera的仿真库,Quartus II 软件中自带有Altera的仿真库,只要把它拿到ModelSim中去编译一下就可以了,具体步骤如下:(1).设置仿真库路径打开ModelSim安装目录(我用的是ModelSim SE10.1版本,安装在C:\modeltech_10.1目录下),新建文件夹altera,我们就在该目录下存放预编译的各种Altera库。
启动ModelSim SE,在主窗口执行【File】/【Change Directory】命令将路径转到altera文件夹。
(2).新建库Quartus II中提供的仿真库文件存放的路径是....\altera\10.1sp1\quartus\eda\sim_lib,每个库文件提供了两种形式:.v(Verilog)格式和.vhd(VHDL)格式两种,根据你所用的语言选择使用。
用于编译资源库的文件有220model.v,220model.vhd,220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_components.vhd,altera_primitives.v,altera_primitives.vhd,altera_primitives_components.vhd文件。
modelsim基本仿真流程
modelsim基本仿真流程ModelsSim基本仿真流程ModelsSim是一款常用的数字电路仿真工具,主要用于验证和调试硬件设计。
本文将介绍ModelsSim的基本仿真流程,帮助读者了解如何使用ModelsSim进行数字电路仿真。
一、创建工程我们需要创建一个ModelsSim工程。
在ModelsSim界面上方的菜单栏中选择"File",然后选择"New",再选择"Project"。
在弹出的对话框中,输入工程名称和工程路径,点击"OK"按钮即可创建工程。
二、添加设计文件在创建好的工程中,我们需要添加要仿真的设计文件。
在ModelsSim界面左侧的"Project"窗口中,右键点击工程名称,选择"Add Existing File"。
然后选择要添加的设计文件,点击"OK"按钮即可将设计文件添加到工程中。
三、设置仿真编译选项在添加完设计文件后,我们需要设置仿真编译选项。
在ModelsSim 界面左侧的"Project"窗口中,双击工程名称,打开工程设置窗口。
在"Compile"选项卡中,选择仿真模型和仿真器,并设置仿真选项。
根据需要,可以选择不同的仿真模型和仿真器,以及设置仿真时钟周期等参数。
四、编译设计设置完仿真编译选项后,我们需要编译设计。
在ModelsSim界面左侧的"Project"窗口中,右键点击工程名称,选择"Compile"。
ModelsSim将会对设计文件进行编译,生成仿真所需的文件。
五、创建仿真波形在编译设计后,我们需要创建仿真波形。
在ModelsSim界面下方的"Wave"窗口中,点击"New Wave"按钮。
在弹出的对话框中,选择要仿真的信号和时钟,并设置仿真时间范围。
Modelsim工具的一般仿真流程
Modelsim工具的使用仿真流程1.建立work库通常modelsim在使用的时候,和大多数开发软件一样,第一步先建立一个工程。
而modelsim在建立工程之前,一般都要建立一个工作库(library),命名为work,仿真的时候工程就运行在这个库里面。
通常modelsim在第一次运行的时候,并没有work这个库文件,所以没有work库的话,先建立一个work的library,再建立新的工程。
一般的工程路径设置如下:project 放置FPGA的工程文件,source 放置源代码(ipcore, 建议放在工程的根目录下,有同事发现ipcore改变其路径,仿真的时候会出错,并且工程里面要手动添加IP核的文件),simulation 放置modelsim的仿真工程。
新建一个work库。
File New- Library^Hamc Type|旳thlibrary □fate 冋叶 djibs/dltera 兰沖忡阿」iflibraryGsfrfr^r^/vM 」ih 叩袖暮 A 』I F土扛就am_nF 』Pt Library冷忡怕.VFTl ihr^iy U Mr 耳丫日皿 ^clgrsiLibrary U fJter 耳什 d.libqkydbMii r 車 cyclorigii^ver 匸• fbalfi 讨 bIpm Library C :fafcsr^/Y«riag 」ts|cy!cbn“i 』er Library 押 aOEL.TECHT 简 adfbdb Library C; I'dtere/Yf-dJib 訓 pm r 血 IfTTl fCF Library Cii'dterc/Ycrioq itsl|prn vei (K nr 匚E 」b (emipo) Library JHODEL lEO-i/.JirEiJb —机 rrtlA/m 上rrtCWm Library Library SwaEiBL_TEOf.,^IIi J1MCiCiELJEOif,.jbm-2J 2 4-jt^ nrtPA 上虫nrtU^F Library 4MaOELJBOf..#ia_lb Library ^OCEL_lKHf../upfJlb 七 >[■ nrtlJ /in Library 4HariELjEa-v.,Aj^-i.]d 二九 Oiv^fn Libr^^y jH0CEL_lEair..1iO5V'7TTT jrtL 驹肚哼 Ubhfiiy C ; |前岀i ■訝计M 」ibs/sMEef 4t 珂aS_Vd Llbifliy C^i'dlsre/Yri 1匚电_11&4护1口_样「 + A L #_血 ULr^ryinciriELjrciir.js^sd 二 4^ vtaLocu Library iNUDEL.IECHf ../Vt^OCO 二 jL IPlibrary钿 tWEL-TECHLQ*_ 血 iTcddsinni 」ti library 榔口DEL JEO#. /rrcrtslcm 」H函山,ddlibrary $WCiLELJEO*../£td 上 JtL ctdjdsssIc-ptrMt Library iMQLEL_7EO+skps* 抄it丄血 a^ncpsyi Library 4b<GDEL_7EQf ii/syncpsyi 工忙 vsrilog Library!|NCi[jEL_IE'CHf../voracgHl Ubraiy — ■pgM 丄::灯血刃向dl H K , ±O -I Mirai-dtei e_rf dtei 0jrf_W5T J L 业 dteia_^-r +札i y 叭戸■ 1血ryderal ■湘于 土丸1幻畝惟」血 ± -fl.晌 1 JL 布肝■榆 血 (mptr) t-血 + 脚.fil":皿1 七 J^lntFAffltllTmtUMnO5>*TTi占艸 列4_¥・■5i,i_^fd MtdiZDEO■see _____ tn 处加i 」t> 1,直泅4- 血 ^itd rfevd-^rrTS^I : t_ 刊「即裤 £ 血 Wl IJIJtrtrra v UbTs y Lltrof!/li 啊母章 Llbrsr/ Libi Lib ary Libitr^ Llbrcrj^ Ubi-arji Libi BTy Libror^ Lihi aru LltfWy Li 輛屮 Hfeiar^ Ubtar^ Uts a 3LlbiSTy Liti it JLibi CT 'JLltieryUbiery 心灯t 冋vMIJte/dm U.Ttinqghdl Ib5]l 或er 士 nf U idtei ■5,lm1kgJt5jdiiT!r3_Tf_ver ■"LMlteldJ^lkg 」二吋*阳 d.-'if!C\ i^tti 时』hdl 」b5」cytkKiH* G :jairHi^iv**lkgJr^ci<l0rFl!_wi 『Ibsjdbgrs^nfC ; t^tri ■5,lwUcgJb^!dii ,?r3_Tf_ver口 i^tei 讯 \rhdl 」b5」cytki 『前口円忙叭 FijIVfldlrgJr^cyclDnFlI.^『刚建立的work 库是空的,因为里面什么东西都没有,但是当添加了相应的文件后,编译一 次,work 就会有容了。
Modelsim6.5基本仿真步骤
复制以下路径文件到新建的仿真目录下(我的仿真目录是/我的文档/MODELSIM/BASICSIMULATION),
Verilog–<install_dir>/examples/tutorials/verilog/basicSimulation/counter.vand tcounter.v
a)在主窗口中选择Simulate > End Simulation
b)输入命令vsim -novopt counter
14、打开之前生成的波形文件
a)输入view wave
b)选择File > Load
c)双击waveedit.do文件
15、导出刚才创建的波形
a)第一种是导出格式为HDL格式的test bench文件。
i.File > Export > Waveform
ii.选择Verilog Testbench(你用什么就选什么)
iii.如果必要的话输入1000for End Time
iv.在文件名中输入“export”然后点OK
v.
vi.通过以上步骤,modelsim就根据波形自动创建了一个名为export.v的test bench文件。
*/
for (i = 4'b0; ((carry == 4'b1) && (i <= 7)); i = i+ 4'b1)
begin
increment[i] = val[i] ^ carry;
carry = val[i] & carry;
end
end
endfunction
always @ (posedge clk or posedge reset)
ModelSim仿真入门
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、在综合后的网表中关联库文件:在综合后文件开头使用`include "路径/文件名.v"语句即可。
2、新建库:在库信息栏(如图1)空白处右击,选择new,library,打开创建库窗口(如图2),在creat一栏选择新建库并逻辑映射到该库,库名自己命名(注意不要与库信息栏已经存在的库如work、std等起相同的名字,以免冲突),库物理名默认与已命名的库名一致,建议不做修改,然后点击ok。
图1图23、设置文件编译到新建库:在project信息栏(如图3)空白处右击,选择properties,打开工程编译设置窗口(如图4),Do Not Compile不选;点击Compile to library旁边的倒三角,选择自己已新建的库;Place in Folder同样点击旁边的倒三角选择,一般都是默认顶层;然后点击ok。
图3图44、编译与仿真:编译步骤1中所得的综合后的网表文件,并进行仿真,其过程与前仿过程一样,这里不再赘述,但注意此时仿真时要在自己新建的库中找欲仿真模块,与前仿时在work中找欲仿真模块是同样的过程。
疑点回答:(1)`include "路径/文件名.v"中的路径可以是绝对路径,也可以是相对路径,若库文件(.v文件)与综合后的网表文件在同一路径下,则路径可以省略,即为`include "文件名.v"。
(2)在综合后的网表中添加库文件的目的是将他们“关联”成一个文件,这样编译时就可以识别综合后的网表中调用的库元件,也就是实现了库的调用。
(3)我们新建的库只是一个空的可存储编译信息的库类型文件包,并不是实际的引入了库,其目的就是用来存放已关联库文件的综合后的网表的编译信息,至于与实际库信息的关联是通过网表关联实现的;而其他自带的库(work库除外,其用于存放前仿编译信息,也是空的,不含任何库信息)比如std等都是实际存在的,若不新建,直接在这些库中编译会造成不必要的麻烦。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Modelsim版本介绍
针对不同的应用,modelsim分modelsim XE、modelsim PE、 modelsim SE、modelsim_altera等版本; a,modelsim XE针对xilinx的FPGA器件的仿真应用,用户 使用时无须库编译; b,modelsim_altera 针对altear的FPGA器件的仿真应用, 仿真库已经编译好,用户可直接使用; c,modelsim PE主要是做设计验证用,altera/Xilinx/lattice 器件,都需要进行库编译与指定;modelsim PE不支持 verilog与vhdl的混合仿真;相比SE版本,仿真速度也不快; d,modelsim SE 也是做设计验证用,使用时,需要对不同 厂家的器件库进行编译,并且要指定相应库路径; modelsim SE 支持混合设计及仿真;并且仿真速度很快;另 外带许多其它附加功能,比如代码覆盖率等;
时钟激励 在TB中,时钟激励源的生成有好几种方式; 比如生成50M时钟,周期为20ns,则可以用如下 方式: `timescale 1ns/100ps parameter CLK_PERIOD = 20; always #(CLK_PERIOD / 2) clk_50m = ~clk50m; 或者: forever #(CLK_PERIOD / 2) clk_50m = ~clk50m;
双向端口的激励 inout端口在TB中定义为wire型变量;在TB中双向 端口设置中间变量inout_reg ,作为inout 的输出寄 存,然后用输出使能控制传输方向; ……… wire inout_port; reg inout_reg; reg oe; assign inout_port = oe ? inout_reg : 1’bz; …….
基于modelsim的仿真
内容概要
FPGA设计哪些过程需要仿真? 前仿真与后仿真 Modelsim的不同版本 Modelsim的仿真过程 测试向量的编写
FPGA设计中哪些过程需要仿真
设计规范 设计输入 设计输入 RTL仿真 设计综合 布局布线 门级仿真 时序分析 系统验证
系统产品
synopsys translate_off / synopsys translate_on 在模块中,可以通过translate_off/translate_on与 宏定义相配合来设置各种仿真条件(包括监视打 印)。此方式可以让用户知道逻辑的运行情况; //synopsys translate_off `ifdef TBASE_100M if(rising_edge_syn) $display(“have check the valid IP !!”); `endif // synopsys translate_on 介于两者之间的语句只在仿真时起作用,不会综 合成门电路;
$monitor/$display modelsim 可以通过一些系统函数来打印输出相关 的信号;为仿真提供监测与比较; ……… $timeformat(-9,1,"ns",12); $display(" Time clk rst_n ld en d q"); $monitor(“%t %b %b %b %b %b %b“,$time,clk,rst_n,ld,en,d,q); …… 上面的语句是监视DFF各端口信号变化并打印;
module test_bidir_ver; reg read_writet; reg [1:0] data_in; wire [1:0] datat, data_out; bidir_infer uut (datat, read_writet); assign datat = (read_writet == 1) ? data_in : 2’bz; assign data_out = (read_writet == 0) ? datat : 2’bz; initial begin read_writet = 1; data_in = 11; #50 read_writet = 0; end endmodule
测试双向端口实例 module bidir_infer (DATA, READ_WRITE); input READ_WRITE ; inout [1:0] DATA ; reg [1:0] LATCH_OUT ; always @ (READ_WRITE or DATA) begin if (READ_WRITE == 1) LATCH_OUT <= DATA; end assign DATA = (READ_WRITE == 1) ? 2’bZ : LATCH_OUT; endmodule
编译成功
编译成功
启动仿真 源文件全编译成功后,就可加载仿真
simulate
加载库文件 altera常用的库有:220_models/altear_mf/sgate 不同的器件有不同的库
加载OK的库
加载工作库(work)
<1>在work库下加载TB文件;
<2>加载成功后
加载的源文件
run 500us
当运行完后,可看到仿真波形
仿真波形
查看波形 <1>放大波形局部 可通过I/O,F5/F6/F7来放大缩小波形;
<2>放大后的波形
波形测量 <1>新增光标
<2>定位光标
<3>测量信号波形
测量结果
波形颜色设置 <1>属性
<2>设置颜色
<3>设置后的波形显示
<4>多种颜色设置效果
信号生成 <1>:单个控制信号可以采用延时语句来生成; 比如: initial begin rst_n = 1’b0; ld = 1’b0; ld en = 1’b0; #20; d rst_n = 1’b1; ld = 1’b1; clk DFF #20; en ld = 1’b0; en = 1’b1; end rst_n
小结 1,基于modelsim的仿真,可以最大程度的验证逻辑 代码的时序情况; 2,仿真文件(TB)的编写,有各种不同的风格与方 式,可以参考各种范例代码,比如大的IP core都 提供相关的自测代码;Altera/Xilinx的MAC/DDR2等 大型的IP都提供相关的自测代码,并且风格各一 ,仔细阅读可学到不少东西; 3,推荐阅读《hdl chip design》《writing testbench 》
其它仿真方式 <1>Triple Speed Ethernet MAC的仿真 [方法一] 1,modelsim中新建工程,把*.vo、tb.v、及MAC 的测试模块的所能*.v文件加入工程; 2,编译加入的所有文件; 3,启动仿真,指定库路径:220model、 altera_mf、sgate; 仿真库在$90\modelsim_ae\altera\verilog下; 4,打开wave窗口,加入需要观察的信号即可;
FPGA设计中哪些过程需要仿真
FPGA设计过程中,主要用到的仿真是RTL仿真、门级仿真; RTL仿真就是通常所说的前仿真或者功能仿真,它只考虑在 理想情况下,用户代码的时序的正确性;用户可通过功能仿 真,来检验逻辑功能的时序是否是期待的时序; 门级仿真又叫后仿真,它是通过综合、布局布线生成网表后, 把各种延时信息进行综合考虑的一种仿真;通过后仿真,用 户可知道实际电路运行的情况,及相关的时序信息;
[方式二] 1,打开modelsim,关闭其它工程; 2,指定路径到已生成的MAC工程TB文件下; 3,在TB文件下找到*.tcl文件,然后在modelsim TCL窗口敲入:source *.tcl; 4, 等待软件自动编译源文件,加载库,并输出波形;
<2>DDR2的仿真 1,根据选择的DDR2芯片,到其网站下载该DDR2芯片的仿真 模型(有verilog,vhdl两个版本); 2,将下载后的DDR2芯片仿真模型解压后,复制到TB文件下; 3,用DDR2芯片仿真模型替换TB.v文件中的DDR2例化文件, 注意修改各参数; 4,打开modelsim,指定路径到DDR2工程/TB文件/modelsim; 5,在modelsim TCL窗口输入: set memory_model ddr2 source *.tcl //*.tcl文件在modelsim目录下 6, 等待软件自动编译源文件,加载相应的库,并生成信号波形 ,如果需要观察其它信号,用户可手动加入,并保存;
时间精度
格式:`timescale reference_time/precision reference_time:单位时间,根据用户模块的输入输出时钟 周期来决定; precision:单位时间精确度,即参考时钟可达的最大精度; 示例:`timescale 1ns/100ps 单位时间为1ns,可精确到0.xx位;比如1.23/3.75;
宏定义 在TB 文件中,可以以宏定义语句来设置各种不同 的仿真任务; `define TBASE_100M `ifdef TBASE_100M ……..//仿真任务1,执行100M的仿真任务 `else ........//仿真任务2,默认10M的仿真任务 `endif 上面语句中,通过TBASE_100M宏来仿真 100M/10M时两种情况;
延时单位 格式:#times [ns/us/ms/min] 示例:#2ns; #40; 说明:延时2ns; 延时40个单位时间; 在TB文件中,通过延时#,可以设置各个信号的赋 值情况; initial begin reset = 0; #100; reset = 1; end t0 t100