运行ModelSim SE 6.5e,选择菜单Help->SE Documentation - PDF Bookcase,在出来的pdf文档中,选择ModelSim SE Tutorial,作为学习ModelSim的第一站。
Tutorial学习笔记:
Chapter1: Introduction介绍
1,假定:熟悉操作系统,懂一种设计语言(verilog,VHDL,SystemC等),会写test bench。这个指南不会教你这些事。
2.ModelSim帮助文档介绍,告诉你在哪里可以找到各种文档
3.下载pdf阅读器
4.网站技术支持
5.操作系统的使用。帮助文档是基于windows操作系统写的,如果用别的操作系统,“路径”的分隔符需要修改。
6.参考设计。包括多种语言版本的,根据你的需要选用。
Chapter2:Conceptual Overview 概念浏览
设计优化:现在版本的ModelSim默认都是打开了设计优化选项的。好处是提高了仿真的速度,坏处是内部很多信号就不能观察了。一般的设计,建议还是把这个优化选项给关闭吧。
具体怎么关优化?留到具体的工程中再说吧。
基本仿真流程:创建work库->编译设计文件,包括代码以及testbench文件->加载仿真器,选择顶层testbench文件,然后运行仿真->对结果进行debug
project项目流程:创建工程->添加文件->编译设计->运行仿真->debug结果
多个仿真库流程:创建work库->编译设计->链接资源库->运行仿真->debug结果
这3种流程的实际使用方式,留待后续篇幅来描述,这里记得有这几种流程就可以了。
调试工具:
使用projects
使用多个库
用SystemC来仿真
在源代码中设置断点和使用单步调试
观察波形和测量时间
扫描设计中的“物理”连接。(暂时还不理解这一条)
查看和初始化存储单元
使用波形编辑器来创建激励
分析仿真性能
测试代码覆盖率
波形比较
使用PSL断言调试
使用SystemVerilog断言和覆盖指示
使用SystemVerilog DPI
仿真自动化
ModelSim学习笔记(3)-基本仿真流程
Chapter 3 Basic Simulation
1.设计文件来源:
ModelSim安装目录下的/Examples/Tutorials/verilog/basicSimulation/counter.v and tcounter.v
2.创建work库
a.建立一个新目录,并且把两个设计文件拷贝进去。
b.运行ModelSim软件。选择菜单File->Change Directory,选择刚才的目录。
c.运行菜单File->New->Libary,选择第3项“a new library and a logical mapping to it”,两个name都填work。然后点OK。
此时可以看到,在刚才的目录里面,多了一个work目录和modelsim.ini文件。这些都不要轻易修改和删除。
在ModelSim界面上的Library窗口,可以看到多了一个名为work库。
3.编译设计文件
a.选择菜单Compile->Compile,接着在对话框中选择counter.v和tcounter.v(两个文件都选上,不至于这点电脑操作都不会吧),然后点Compile按钮。等待compile完成,点击done按钮。
b.在Library窗口上,展开work库的,可以看到多了2个Module(counter和test_counter),以及两个Module所在的文件及文件路径。
4.开始仿真及设计优化(这里比较关键)
仿真的过程包括4个概念:
开始仿真(Start Simulation):此步骤需要选择一个顶层文件。然后ModelSim会自动调用各个子模块及文件,分析所有的信号和过程。
运行仿真(Run):按照顶层文件中的时间信息,展示testbench描述的过程。
重新运行(Run Restart):从时间起始点开始运行仿真。
结束仿真(End Simulation):结束该次仿真。
这里可以用一个形象的例子来描述这几个概念:
开始仿真:导演选择了一个剧本(顶层文件),要进行排练(仿真)。ModelSim就会根据这个剧本,分析出来需要哪些演员,布景道具(Objects),以及这个剧本分几幕(Processes)来进行排练。
运行仿真:按照剧本开始排练了。排练的过程中可以观察演员的表现(debug).
重新运行:演得不好,重头开始排练。
结束仿真:本次排练结束。
设计优化包括:
不优化:完全不进行设计优化,所有信号可见,但仿真速度较慢(小工程也无所谓了)
优化,信号不可见:进行设计优化,但信号都不可见,速度最快。调试完全依赖于testbench的打印输出。
优化,具有完全可见性:进行设计优化,但又保证所有信号可见,速度较快,调试必备。
优化,自定义可见性:进行设计优化,自定义哪些模块及信号可见。
设计优化功能是用来提高仿真速度。对于小工程,可以选择不优化或者选择优化,完全可见性(full visibility)。
了解了以上概念之后,下面就介绍 “开始仿真+设计优化选择”的两种方式(实际还有更多)
方法一(这个文档上的):命令行
vopt +acc test_counter -o testcounter_opt (使用vopt表示进行设计优化,+acc表示完全可见,-o testcounter_opt表示把优化结果输出为新的名字。)
vsim testcounter_opt (vsim表示开始仿真,名字选择了优化之后的结果)
方法二 (菜单操作)
菜单Simulate->Start Simulation,在对话框中,work下选中顶层仿真文件,下部是设计优化的选择,去掉“Enable optimization”表示不进行设计优化;或者选择”Optimization Options”,又打开了一个对话框,选择“Apply full visibility to all modules”,这表示优化并且完全可见。然后两个对话框都点ok即可。
不管用哪种方法,完成以上步骤后,界面出现了很大的变化。出现了sim窗口,Objects窗口,Processes窗口以及Wave窗口。如果有的窗口没出现,直接去菜单View里面选择即可。注意sim窗口在View菜单中的名字为Structure。如果界面被搞乱了,重新把这些窗口打开即可,比如最早的两个窗口Library和Transcript(用来输入命令行的)。
5.运行仿真
确保wave窗口打开。在sim窗口中,选中顶层test_counter,点鼠标右键,选择Add->To Wave->All items in region。在wave窗口中就会出现对应的信号。在sim窗口中选择不同的层次位置,添加的信号也会有所不同。在Objects窗口中,也可以用相同的方法添加信号。一次性添加设计文件中的所有信号也是可以的。具体的信号添加方式就不细说了。
选择菜单Simulate->Run->Run 100,可以看到Wave窗口上出现了100ns的仿真波形。Run -All表示一直运行直到使用Break停止。Run控制有很多菜单按钮可供使用。
6.对源代码的断点和步进控制
运行菜单View->Files,双击counter.v文件,打开了代码窗口。点击行号的右侧,就出现了一个红色的断点。当然很多行是不能加断点的。似乎行号为红色,就表示可以加断点。断点可以disable,enable和删除。
加了断点后,使用菜单Simulate->Run->Restart,对话框点OK,然后重新运行仿真。比如用run -All。运行到断点时就会停止,这时可以在Objects窗口观察各个信号的值,或者在源代码窗口,鼠标移到某个变量上,会出现值的提示。或者使用examine方式。
可以用step按钮进行单步调试
7.仿真结束
仿真结束后,记得要运行菜单Simulate->End Simulation。