ModelSim软件仿真步骤教程
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的仿真教程

ModelSim的仿真1.仿真的分类仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。
仿真主要分为功能仿真和时序仿真。
功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。
1). 功能仿真( 前仿真)功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。
综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。
2). 时序仿真(后仿真)时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。
SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。
一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
2.仿真的作用1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。
交大最新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软件,新建一个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仿真FPGA工程步骤以及一些问题

使用Modelsim仿真FPGA工程步骤以及一些问题使用Modelsim仿真Altera FPGA工程(包括IP核)步骤以及问题汇总前提:计算机上已经安装QuartusII和Modelsim通用版,并且均已破解。
环境说明:所用的软件版本,QuartusII为9.0,Modelsim为6.5c。
本测试仅在WIN XP SP3上测试,对于VISTA/WIN7/LIN或者其他平台没做过测试。
但其他平台或者其他版本的过程应该都差不多。
其他:感谢teamo版主的破解和编译教程,以及后期对我的热心指导。
如果各位对整个步骤还有什么问题的华可以直接和我联系,我的论坛ID是lanphon,邮箱是*****************。
一、Altera库的编译(本部分基本上全部抄袭teamo版主的教程,懒得写了)1) 先到C:\modeltech_6.5目录下找到文件"modelsim.ini",将其属性改为可写(右键‐>属性)。
2) 启动modelsim se,选择【file】‐>【new】‐>【library】命令,在弹出的【create a newlibrary】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library library】窗口中将选项【create】设置为【a new library and a logical mapping to it】,在【libryr name】和【library physical name】中键入所要创建库名字,如Altera ,此时在主窗口中已多了一个Altera 项。
注:这个过程实质上想当于在modelsim 主窗口中的脚本区域中输入了vlib和vmap命令。
3) 在workspace中的library中选中你健入的库名Altera,在主菜单中选【compile】→【compile…】命令。
modelsim 仿真波形 默认高度

modelsim 仿真波形默认高度Models i m是一种流行的模拟和仿真工具,可以用于设计和测试数字电路和模拟电路。
在使用这种工具时,通常需要设置仿真波形的高度以更好地观察和分析电路行为。
本文将介绍如何设置Modelsim仿真波形的默认高度。
第一步:打开Modelsim工具首先,您需要启动Modelsim工具。
您可以单击应用程序菜单中的快捷方式或在终端中运行相应的命令。
这将打开Modelsim的主窗口。
第二步:创建仿真电路接下来,您需要创建要仿真的电路。
您可以通过打开已有设计文件或创建一个新的设计文件来完成此操作。
如果您已经有一个现有的设计文件,请导入它并确保其中包含了所需的电路部件并已正确配置。
如果您要创建新的设计,则可以在Modelsim工具中打开新的设计文件或使用其他设计工具。
第三步:设置仿真波形高度一旦您的设计文件准备好,您就可以打开仿真波形以观察电路的行为。
默认情况下,Modelsim仿真波形的高度是自适应的,以适应波形中数据的最大振幅。
但是,您可以手动设置波形的高度,以更好地观察波形数据并进行更精细的分析。
要手动设置仿真波形高度,请执行以下步骤:1. 在仿真波形窗口中单击“设置”按钮,该按钮位于工具栏的右上角。
2. 在“波形设置”对话框中,选择您要更改的波形。
3. 在“显示”选项卡上,找到“高度”选项,并可以选择“最小值”或“值”两种方式。
若选择“最小值”,则波形窗口的高度将自动调整以适应波形数据的最小振幅。
若选择“值”,则您可以手动输入您希望设置的高度值。
4. 设置波形高度后,单击“确定”以保存更改。
注意:由于Modelsim工具的版本不同,一些操作可能会有所不同。
如果您遇到困难,请参考Modelsim工具的用户手册或联系工具供应商进行支持。
结论:通过以上步骤,您可以手动设置Modelsim仿真波形的默认高度,并能更好地观察电路数据图形。
这些设置可能会根据您要仿真的电路或个人首选项而有所不同。
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编辑框中添加需要的信号名称实现模糊查找。
FPGA系统设计的仿真验证之: ModelSim的仿真流程

FPGA系统设计的仿真验证之:ModelSim的仿真流程7.3 的流程7.3.1 ModelSim的安装ModelSim的最新版本可以从互连网上免费得到,需要购买的只是License文件。
ModelSim的下载地址为http:///。
打开网站页面后可以点击Download,用户填写完一张表格以后可以得到一个小时的下载时光。
获得License的办法有无数种。
首先可以在线申请License文件,选取“开头→程序→ModelSim SE 5.8c →Submit License Request”,会打开一个网页,填写信息以后点击Submit就可以在线申请License了。
另外也可以点击“开头→程序→Modelsim SE 5.8c→License Request Instructions”会打开一个文本文档,按要求填写好后发到指定邮箱即可。
在得到License以后点击“开头→程序→Modelsim SE 5.8c→License Wizard”,在弹出的对话框里面指定License文件即可。
7.3.2 用法ModelSim举行功能仿真用法ModelSim对设计的HDL程序举行仿真分为功能仿真和时序仿真两种。
本节将以一个详细的实例讲解如何用法ModelSim对HDL工程举行功能仿真。
时序仿真的详细内容将在7.4节详细介绍。
这里我们用法的例子是一个分频的设计。
所谓分频电路是将较高频率的时钟分频,得到较低频率的时钟。
分频电路的用法较为广泛。
例如,我们要编写一个显示时光的电路就需要一个分频器,将晶振的频率分频得到1Hz的时钟信号。
分频有几种办法。
对于较为规章的分频,如2分频、4分频、8分频等,可以调用或者ISE本身的库函数来实现。
对于较不规章的分频,我们也有两种办法:一种是利用计数器的某一第1页共4页。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用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代表運算的精準度
module count_tst(); testbench命名括號內不用加I/O
reg clk; 將Input設為reg
reg [7:0] in;
reg reset;
reg start;
reg load;
wire [3:0] num; Output設為wire
count i1 ( 將要測試的HDL名字寫進來,il 只是一個隨便的命名
.clk(clk), 將HDL的port和testbench的port做連接
.in(in),
.num(num),
.reset(reset),
.start(start),
.load(load)
);
initial clk=0; initial為只執行一次的訊號,clk訊號一開始為0 initial #150000 $finish; 經過150ns結束模擬
always always用在重複性的訊號clock就是一種begin 設定每5ns clk訊號反向
#5000 clk=!clk;
end
initial 設定in訊號為01101101
begin
in = 8'b01101101;
end
initial 設定reset訊號一開始為0,經過10ns為1,begin 再經過10ns又變為0
reset = 1'b0;
reset = #10000 1'b1;
reset = #10000 1'b0;
end
initial
begin
load= 1'b0;
load= #30000 1'b1;
load= #10000 1'b0;
end
initial
begin
start = 1'b0;
start = #60000 1'b1; end
endmodule。