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的仿真教程

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

QUARTUSⅡ10仿真(ModelSim)入门教程平台软件: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按钮后,在主体窗口的下方将出现Create 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所示窗口。
Modelsim仿真新手入门最详细教程

Modelsim仿真新⼿⼊门最详细教程2021年11⽉15⽇00 安装包/版本我是提前在⽹上下好的(但这⼀点也给我的实验造成了“⿇烦”),⽤的是Modelsim SE-64 2020.4版本的,学校实验室的似乎不同。
但最终没有太⼤影响。
01 配置环境步骤学校有⼀个⽂档,在机房电脑照做就⾏。
我因为是⾃⼰下载的,配置与机房软件有所不同,所以⼜平添了很多⿇烦。
01-0 verilog⽂件这个代码可以在很多地⽅编写:Visual Studio Code⾥有Verilog的插件;还可以有更强⼤的语⾔编辑器:Nodepad++。
这⾥我使⽤的是Nodepad++,因为看上去专业⼀点。
Nodepad++的页⾯效果如图:其实第⼀次上机,⽼师会给⼤家⽰例⽂件(包括设计代码与测试代码),跑出来⽰例波形就⾏。
01-1 具体步骤1. 新建⼀个⽤于安放project的⽂档,放在哪⾥都⾏。
把前⾯做出的.v⽂件添加到这个⽂档。
留意⼀下路径。
2. 打开modelsim,在jumpstart中create a new project。
3. 在弹出的提⽰框⾥browse,找到刚才的⽂件夹。
选中。
填写project 名,注意要与.v⽂件⾥的module名保持⼀致。
点击ok。
4. 进⼊页⾯后会是这样⼦:注意此处两个⽂件后⾯应当都有问号,代表没有编译。
先逐个右击⽂件add to this project确保加⼊。
5. 在上⽅提⽰栏中complie->compile all。
稍等些许会看到⽂件后问号全部变为对勾,表⽰代码编译通过,没有问题。
如果此步出错则代表代码有bug。
在下⾯的Transcript中上翻查找错误。
6. 点击上⽅Simulate->start simulation。
由于注意与实验室不同的,选中下⾯的Enable optimization,再在右侧Optimization Options中的Visibility中选中Apply full visibility....7. 接着在work⾥找到测试代码的⽂件,选中。
【翻译】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仿真必会教程

Modelsim功能仿真新手教程By wangjun850725@操作系统:win7软件版本:modelsim6.5se本文只针对初学者,让他们少走点弯路,modelsim软件本身感觉还是比较难以使用的。
本人才疏学浅,但有颗助人的心。
大神请跳过,不要鄙视我。
如有错误,请不吝指点。
QQ群:41143927建立工程省略N字,这没有什么好说的。
几乎所有的软件都是以工程为基础的。
添加设计文件因为我已经编辑好了文件,所以直接添加已经存在的。
没有人会用modelsim自带的编辑器来写程序(要是没有选择,我宁愿用记事本,如果你用了,我佩服你)。
编译文件没有什么好说的,添加进去的文件全部编译就好了。
如果你看编译后的文件后面还有一个问号,你不爽,鼠标右键更新下就好了开始仿真Modelsim se版本是可以手动描绘激励波形的,但这种方法太笨,太烦,修改起来很不方便,所以直接放弃。
Simulate里有个start simulate,点开这里有几点要说明下1.要点开work库,找到你testbench对应的那个模块2.Resolution选不选关系不大,如果你设计文件指定了仿真时间的话3.Optimization,要把这个勾去掉,不然会优化掉很多信号,这里也坑了我很久。
功能仿真只要这么多,如果做后仿,library里要添加已经编译好的器件库,SDF里要添加.vo,.sdo文件观察波形添加信号到波形窗口的方法有很多,刚学手动添加,后来肯定是要在脚本里指定的,下面会有首先要把设计中的信号添加到wave窗口里。
鼠标左键按住不放,将对应的模块拖到wave窗口里,这是最简单的办法。
如果设计的模块多了,每个模块的信号不能很好的被区分,就可以在每个模块的中间插入一个Divider,信号旁边右键就可以看到,最好给起个名字如果你的模块层次非常的多,信号的路径名字就会占据本来就不大的屏幕时很不爽的。
菜单Wave‐>Wave preference‐>Display signal path里面改成1就可以了运行仿真在Transcript窗口里输入Run 1ms搞定,波形神马的就出现了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Modelsim功能仿真新手教程
By wangjun850725@
操作系统:win7
软件版本:modelsim6.5se
本文只针对初学者,让他们少走点弯路,modelsim软件本身感觉还是比较难以使用的。
本人才疏学浅,但有颗助人的心。
大神请跳过,不要鄙视我。
如有错误,请不吝指点。
QQ群:41143927
建立工程
省略N字,这没有什么好说的。
几乎所有的软件都是以工程为基础的。
添加设计文件
因为我已经编辑好了文件,所以直接添加已经存在的。
没有人会用modelsim自带的编辑器来写程序(要是没有选择,我宁愿用记事本,如果你用了,我佩服你)。
编译文件
没有什么好说的,添加进去的文件全部编译就好了。
如果你看编译后的文件后面还有一个问号,你不爽,鼠标右键更新下就好了
开始仿真
Modelsim se版本是可以手动描绘激励波形的,但这种方法太笨,太烦,修改起来很不方便,所以直接放弃。
Simulate里有个start simulate,点开
这里有几点要说明下
1.要点开work库,找到你testbench对应的那个模块
2.Resolution选不选关系不大,如果你设计文件指定了仿真时间的话
3.Optimization,要把这个勾去掉,不然会优化掉很多信号,这里也坑了我很久。
功能仿真只要这么多,如果做后仿,library里要添加已经编译好的器件库,SDF里要添加.vo,.sdo文件
观察波形
添加信号到波形窗口的方法有很多,刚学手动添加,后来肯定是要在脚本里指定的,下面会有
首先要把设计中的信号添加到wave窗口里。
鼠标左键按住不放,将对应的模块拖到wave窗口里,这是最简单的办法。
如果设计的模块多了,每个模块的信号不能很好的被区分,就可以在每个模块的中间插入一个Divider,信号旁边右键就可以看到,最好给起个名字
如果你的模块层次非常的多,信号的路径名字就会占据本来就不大的屏幕时很不爽的。
菜单Wave‐>Wave preference‐>Display signal path里面改成1就可以了
运行仿真
在Transcript窗口里输入
Run 1ms
搞定,波形神马的就出现了。
你要做的工作就是看波形是否是你想要的。
●可以使用想要的快捷键来查看波形。
f,全屏显示波形;c,以波形图上的黄线为轴放大
波形等,具体请baidu。
自动化仿真
一个简单的分频器要你仿真10次,每次都重复上面这些步骤,你也会受不了的,更何况稍
微大一点的设计。
●你需要新建一个文本文档,modelsim的默认后缀名是.do。
但随便什么后缀名都是可以
的。
因为种种其他原因,我把后缀名改成了.tcl。
●一个简单完整的脚本如下
第1行:当你在仿真的时候,可以直接退出去,然后再次开始仿真
第3行:加载你的设计文件,并指定最小时间为ns
第5行:为每个模块都增加一个分隔符,看起来舒服点,上面的图有提到过
第6.7.8:testbench里的信号
……
第14行:指定信号的显示方式是无符号数
第15行:再指定信号显示的颜色
第16行:再指定信号显示的别名,主要用于参数化状态机的时候用
第18行:运行仿真的时间,最大单位是ms,但最大时间不太清楚
设计代码
我为什么不直接贴代码,而是要上图呢?如果你是初学者,抄一遍代码是必要的;如果你不
是,这代码对你也没有意义。
Testbench
先上图,然后再说其他的。
第1行:指定仿真的时间精度
第2行:这样主要是为了在功能仿真时稍微带点延迟,方便观察,有点后仿真的影子
第4行:格式就是那么写的,我不知道为什么
第5.6.7行:你设计文件里的input端口在testbench里要声明为reg;你设计文件里的output 端口在testbench里要定义为wire
第9‐13行:对testbench里reg的初始化时必不可少的
第15行:生成时钟,必不可少
第17行:传递给设计文件的一个参数
第19‐29行:产生复位信号的一个小任务。
写成任务时为了方便的在以后的设计中使用
第31‐40行:对设计文件的例化
●Testbench的语法还是有必要学一学的,特别是那些不可综合的语句。
不然设计写好了,
如何写testbench会让你头疼的。
$random,$readmem还是比较常用的
●多看看别人写的testbench,自然就会看到一些技巧
其他
●乱糟糟的代码是我绝对不能接受的,对齐是最基本的要求
●不要去怀疑modelsim,出现了意想不到的情况首先就要想到是自己的问题。
当然工具
也会有错,但一般人也发现不了(包括你)
●复位,不论在testbench和设计文件里都非常重要。
最关键的是没有初始化modelsim是
不工作的。
红线,蓝线就是你看到的。
红线:为初始化的信号,例如reg;蓝线:为初
始化的信号,例如wire;还有很少见的白色虚线:modelsim模仿外部上拉的情况
●当你不知道一个modelsim操作的命令是什么时,注意看你操作时transcript窗口对应的
命令。
如果没有,去看modelsim手册
●我将脚本的后缀改为tcl的原因是因为vim可以很方便的注释
●Vim有个插件可以很方便的生成例化片段
●推荐你使用vim或emacs编辑器。
补全,snipmate,ctags,and so on,都会让你欲罢不
能。
去看看vim华丽的snipmate吧/v_show/id_XMjQ5MjE3NTA4.html
●https://上有很多语言的各种代码,当然包括verilog。
没事可以去上面看看有
没有你想要的东西
●请原谅我对vim的崇拜。