前言

Modelsim是一款专业的仿真软件,特别是在Quartus II 11.0之后的版本,都没有配套自身的仿真软件,所以Modelsim成了在FPGA设计流程中的进行功能仿真的首选仿真软件之一。

ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL 或Verilog 程

序进行仿真,其支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但推荐大家只对一种语言仿真。

ModelSim的版本很多,基本的有 PE、LE、SE版本,PE为个人版本,功能最少,支持的操作系统为32 位WINDOWS 98/NT/ME/2000/XP;LE版本支持的操作系统为32 位LINUX;SE 版本为全功能版本,支持 32 位操作系统 AIX,HP-UX, LINUX + SOLARIS,WINDOWS 98/NT/ME/2000/XP,64 位操作系统WINDOWS ,AIX,LINUX (ITANIUM-2),HP-UX, SOLARIS,以及HP-UX,LINUX 等平台。

ModelSim常见的版本分为ModelSim XE、ModelSim-altera、ModelSim SE三种,其中ModelSim XE为配套xilinx的ISE软件,ModelSim-altera是配套altera的quartus II软件的,而ModelSim SE是属于专业版本,可以独立使用(在仿真中涉及到FPGA厂商的IP核时,需要调用FPGA厂商的IP库文件)。ModelSim版本更新很快,目前的版本都支持VHDL 、Verilog和SystemC 的混合仿真。本章将对ModelSim6.2(在高版本上也是行得通的)版本进行介绍,目的是希望读者在看完本文后,可以简单地使用ModelSim进行仿真,有关更深入地教程,还是参考ModelSim附带的文档。在网址http://www.model.com/support/ 上也可以找到深入的教程。

Modelsim所涉及到的是功能仿真,功能仿真也是FPGA设计的流程之一,也是最耗费时间的之一,由于要验证设计的RTL代码的功能正确性,功能的正确性,包括RTL里面的每一行代码,RTL里面所涉及到的每一种状态机的每一种状态,RTL里面所涉及到的每一种条件下每一种情况等等,由此可以想像得到这将多么地耗费时间,所以高效地使用Modelsim是得有多么地重要,假设设计一个RTL代码,涉及到10个状态机和20个条件判断,每个状态机有10状态,每个条件有10种情况。假设每个状态机每个状态和每个条件判断的每种情况都要修改一次RTL代码,这就需要操作10*10+20*10=100+200=300次,假设每次要按10次鼠标,那总次数就是300*10=3000次。如果采用鼠标窗口操作这得有多繁琐(多设计几个大型工程的话,鼠标也要换了),这得多耗费时间,所以这时就需要采用脚本(每次修改只需调用一条指令就搞定)进行操作,节省时间、节省人力物力。

本文将通过简单的三个例程,详细、细致、图文并茂地介绍modelsim的使用流程,这其中涉及到采用鼠标窗口操作一步一步的地进行编译、调用仿真文件、添加仿真信号、开始仿真的简单流程,也包括调用altera的IP核进行仿真的流程,最后详细介绍采用脚本的方法进行仿真,有效并大大地提高每次修改编译、仿真的效率,只要通过脚本一次性输入,同时也可以设置仿真信号的参数,避免了在每次修改RTL代码后进行鼠标窗口操作的繁琐流程。

其中,最实用专业的是最后的方法—脚本操作,这也是读者所必须掌握的方法!

每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。

modelsim实用教程--前言的更多相关文章

  1. js模版引擎handlebars.js实用教程

    js模版引擎handlebars.js实用教程 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的 ...

  2. freeRTOS中文实用教程6--错误排查

    1.前言 本章主要是为刚接触FreeRTOS 的用户指出那些新手通常容易遇到的问题.这里把最主要的篇幅放在栈溢出以及栈溢出侦测上 2.printf-stdarg.c 当调用标准C 库函数时,栈空间使用 ...

  3. freeRTOS中文实用教程5--内存管理

    1.前言 不同的嵌入式系统具有不同的内存配置和时间要求.所以单一的内存分配算法只可能适合部分应用程序. FreeRTOS 将内存分配作为可移植层面(相对于基本的内核代码部分而言).这使得不同的应用程序 ...

  4. freeRTOS中文实用教程4--资源管理互斥

    1.前言 访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性.这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态 F ...

  5. freeRTOS中文实用教程4--资源管理概述

    1.前言 多任务系统中存在一种潜在的风险.当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态 2.并发抢占导致错误的场景 (1)访问外设 ...

  6. freeRTOS中文实用教程3--中断管理之中断嵌套

    1.前言 最新的 FreeRTOS 移植中允许中断嵌套.中断嵌套需要在 FreeRTOSConfig.h 中设置configKERNEL_INTERRUPT_PRIORITY 和configMAX_S ...

  7. freeRTOS中文实用教程1--任务

    1.前言 FreeRTOS是小型多任务嵌入式操作系统,硬实时性.本章主要讲述任务相关特性及调度相关的知识. 2. 任务的总体特点 任务的状态 (1)任务有两个状态,运行态和非运行态 (2)任务由非运行 ...

  8. 蓝牙BLE实用教程

    蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...

  9. Unix sed实用教程系列目录[已完成]

    本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有讲明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感 ...

随机推荐

  1. .NET Core之Entity Framework Core 你如何创建 DbContext

    本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明博客园蜗牛原文地址 http://www.cnblogs.com/tdws/p/5874212.html. 目前国内各大论坛,各位大牛的分 ...

  2. jQuery+CSS3文字跑马灯特效

    jQuery+CSS3文字跑马灯特效是一款将跑马灯背景制作为3D立方体效果,文字在上面移动时,就像是文字投影到墙壁上,在转角出会改变运动方向. 效果展示 http://hovertree.com/te ...

  3. QML 从无到有 3 (自动更新)

    新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序> ...

  4. PHP基础知识第一趴

    今天来贴一贴我的一张部分php基础知识的思维导图.未完,待续......慢慢'补枪'(为了让引号内的期望输出内容<strong>变成</strong>现实,应该使用双引号?那就 ...

  5. PHP学习笔记:输入一句话,实现单词倒序输出

    约定:句子以空格为词语分割符号,以句号为结束符号. 实现思路: 用函数explode(separator,string,limit)对字符串进行分割,再对得到的数据最后一个成员分割切掉符号.用一个新的 ...

  6. BFC布局

    这几天都没有写博客,自己的懒惰又要跑出来了,发觉不能再这样下去了,不然就什么都不想干了,然后将之前已经写得差不多的博客重新检视了一遍.这篇博客已经写得挺久的了,但是一直没有发布,现在补充了一些,也让自 ...

  7. webpack-dev-server轻量级js高速打包、热部署服务器

    webpack是一个打包web项目的工具 ,可以实现css,js,less,cass,html的混淆加密,minify,结合webpack-dev-server热部署,非常方便前端页面和Nodejs的 ...

  8. 慎用mutableCopy

    因为逻辑需要,我在present到一个页面时,将一个存放uiimage的数组mutablecopy了过去(因为再返回的时候防止对数组做了改动),时间长了也忘了这事儿,后来发现添加多张图片上传时,app ...

  9. webView 自适应高度 document.body 属性

    前段时间开发遇到webView 高度自适应问题,用最初的方法无效,找了些资料,记录下. 1.若网页中含有< !DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  10. js动态绑定click事件时function传参问题

    今天碰到了这样一个问题,我在javascript中动态创建了一个button, 然后我想给改button添加click事件,绑定的function想要传入一个变量参数, 一开始我想直接通过函数传参传进 ...