当前位置: 首页 > 工具软件 > Vopt > 使用案例 >

modelsim vopt

邢心水
2023-12-01

model sim学习笔记

运行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种流程的实际使用方式,留待后续篇幅来描述,这里记得有这几种流程就可以了。

调试工具:

  1. 使用projects

  2. 使用多个库

  3. 用SystemC来仿真

  4. 在源代码中设置断点和使用单步调试

  5. 观察波形和测量时间

  6. 扫描设计中的“物理”连接。(暂时还不理解这一条)

  7. 查看和初始化存储单元

  8. 使用波形编辑器来创建激励

  9. 分析仿真性能

  10. 测试代码覆盖率

  11. 波形比较

  12. 使用PSL断言调试

  13. 使用SystemVerilog断言和覆盖指示

  14. 使用SystemVerilog DPI

  15. 仿真自动化

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。

 类似资料:

相关阅读

相关文章

相关问答