modelsim仿真必会教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Modelsim功能仿真新手教程

By wangjun850725@

操作系统:win7

软件版本:modelsim6.5se

本文只针对初学者,让他们少走点弯路,modelsim软件本身感觉还是比较难以使用的。本人才疏学浅,但有颗助人的心。大神请跳过,不要鄙视我。

如有错误,请不吝指点。

QQ群:41143927

建立工程

省略N字,这没有什么好说的。几乎所有的软件都是以工程为基础的。

添加设计文件

因为我已经编辑好了文件,所以直接添加已经存在的。没有人会用modelsim自带的编辑器来写程序(要是没有选择,我宁愿用记事本,如果你用了,我佩服你)。

编译文件

没有什么好说的,添加进去的文件全部编译就好了。

如果你看编译后的文件后面还有一个问号,你不爽,鼠标右键更新下就好了

开始仿真

Modelsim se版本是可以手动描绘激励波形的,但这种方法太笨,太烦,修改起来很不方便,所以直接放弃。

Simulate里有个start simulate,点开

这里有几点要说明下

1.要点开work库,找到你testbench对应的那个模块

2.Resolution选不选关系不大,如果你设计文件指定了仿真时间的话

3.Optimization,要把这个勾去掉,不然会优化掉很多信号,这里也坑了我很久。

功能仿真只要这么多,如果做后仿,library里要添加已经编译好的器件库,SDF里要添加.vo,.sdo文件

观察波形

添加信号到波形窗口的方法有很多,刚学手动添加,后来肯定是要在脚本里指定的,下面会有

首先要把设计中的信号添加到wave窗口里。

鼠标左键按住不放,将对应的模块拖到wave窗口里,这是最简单的办法。

如果设计的模块多了,每个模块的信号不能很好的被区分,就可以在每个模块的中间插入一个Divider,信号旁边右键就可以看到,最好给起个名字

如果你的模块层次非常的多,信号的路径名字就会占据本来就不大的屏幕时很不爽的。

菜单Wave‐>Wave preference‐>Display signal path里面改成1就可以了

运行仿真

在Transcript窗口里输入

Run 1ms

搞定,波形神马的就出现了。你要做的工作就是看波形是否是你想要的。

●可以使用想要的快捷键来查看波形。f,全屏显示波形;c,以波形图上的黄线为轴放大

波形等,具体请baidu。

自动化仿真

一个简单的分频器要你仿真10次,每次都重复上面这些步骤,你也会受不了的,更何况稍

微大一点的设计。

●你需要新建一个文本文档,modelsim的默认后缀名是.do。但随便什么后缀名都是可以

的。因为种种其他原因,我把后缀名改成了.tcl。

●一个简单完整的脚本如下

第1行:当你在仿真的时候,可以直接退出去,然后再次开始仿真

第3行:加载你的设计文件,并指定最小时间为ns

第5行:为每个模块都增加一个分隔符,看起来舒服点,上面的图有提到过

第6.7.8:testbench里的信号

……

第14行:指定信号的显示方式是无符号数

第15行:再指定信号显示的颜色

第16行:再指定信号显示的别名,主要用于参数化状态机的时候用

第18行:运行仿真的时间,最大单位是ms,但最大时间不太清楚

设计代码

我为什么不直接贴代码,而是要上图呢?如果你是初学者,抄一遍代码是必要的;如果你不

是,这代码对你也没有意义。

Testbench

先上图,然后再说其他的。

第1行:指定仿真的时间精度

第2行:这样主要是为了在功能仿真时稍微带点延迟,方便观察,有点后仿真的影子

第4行:格式就是那么写的,我不知道为什么

第5.6.7行:你设计文件里的input端口在testbench里要声明为reg;你设计文件里的output 端口在testbench里要定义为wire

第9‐13行:对testbench里reg的初始化时必不可少的

第15行:生成时钟,必不可少

第17行:传递给设计文件的一个参数

第19‐29行:产生复位信号的一个小任务。写成任务时为了方便的在以后的设计中使用

第31‐40行:对设计文件的例化

●Testbench的语法还是有必要学一学的,特别是那些不可综合的语句。不然设计写好了,

如何写testbench会让你头疼的。$random,$readmem还是比较常用的

●多看看别人写的testbench,自然就会看到一些技巧

其他

●乱糟糟的代码是我绝对不能接受的,对齐是最基本的要求

●不要去怀疑modelsim,出现了意想不到的情况首先就要想到是自己的问题。当然工具

也会有错,但一般人也发现不了(包括你)

●复位,不论在testbench和设计文件里都非常重要。最关键的是没有初始化modelsim是

不工作的。红线,蓝线就是你看到的。红线:为初始化的信号,例如reg;蓝线:为初

始化的信号,例如wire;还有很少见的白色虚线:modelsim模仿外部上拉的情况

●当你不知道一个modelsim操作的命令是什么时,注意看你操作时transcript窗口对应的

命令。如果没有,去看modelsim手册

●我将脚本的后缀改为tcl的原因是因为vim可以很方便的注释

●Vim有个插件可以很方便的生成例化片段

●推荐你使用vim或emacs编辑器。补全,snipmate,ctags,and so on,都会让你欲罢不

能。去看看vim华丽的snipmate吧/v_show/id_XMjQ5MjE3NTA4.html

●https://上有很多语言的各种代码,当然包括verilog。没事可以去上面看看有

没有你想要的东西

●请原谅我对vim的崇拜

相关文档
最新文档