element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Forum 分享ModelSim学习笔记
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 0 replies
  • Subscribers 562 subscribers
  • Views 1732 views
  • Users 0 members are here
  • simulation
  • mentor
  • modelsim
Related

分享ModelSim学习笔记

Flush
Flush over 14 years ago

1下载

到官方网站http://model.com,进入下载页面,然后会提示需要注册,随便填一些资料,邮箱也可以随便填,然后就给得到下载链接

ftp://mtidl:XXXXX@ftp.model.com/SE/6.6

XXXXX是给你的临时密码,只能用1-2小时,到时你需要刷新该页面或者再次注册,再次得到密码,然后继续文件下载。

这个FTP上的内容比较多,包括各个版本的modelsim,这次下载了6.5e的windows版本。ftp上还有questasim,据说支持systemC和systemverilog更好。

2.安装

一切正常安装即可,到最后需要配置licence时,直接跳过即可。

3.安装lic

都是用那个通用的MentorKG.exe,EFA小组的神作。

注意较新版本的modelsim已经不能用老方式生成的lic了,注意使用带license.src的。

其实Mentor的产品大部分都可以用相同的方式来处理,不过有的软件还需要替换MGLS.DLL文件。

据说Mentor一些最新的软件不能用这种方式了,不过不用担心,会有人解决掉的。

part2:ModelSim基本介绍

运行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.仿真自动化

part3 基本等仿真流程
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。

  • Sign in to reply
  • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube