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。
文章评论(0条评论)
登录后参与讨论