闲序
忙了比较长的一段时间,又可以接着续上一些记录了,对于Modlsim的工程之类的操作也都已经有所涉及,现在该开始具体仿真图的操作了,若有错误之处,欢迎指出。
先打开一个仿真工程,我就继续以”counter.v“和”tcounter.v“这两个基本的仿真文件来演示,刚看到这篇文章的,想要参考文件的,可以阅读该系列的首篇文章获取;《Modelsim的仿真之路(基础仿真流程)》
波形界面
启动仿真后,波形文件将会在”Wave“这个窗口让我们分析,如果出现下面这样空信号的情况,则需要自行添加待观察的信号;
可以在Sim的这个菜单中直接添加对应的模块的全部信号(右键 -> Add Wave)
也可以先在Sin菜单选择对应的模块,再到Objects中选择具体的信号进行观察:
除了这样添加外,也可以按提示的快捷键”Ctrl+W“添加,还有就是更简单粗暴的,直接鼠标左键一直按着要添加的,拖到Wave的窗口,当然更可以用命令去添加了,比如:add wave *,就是相当于把当前object下的所有信号都添加到Wave中;
进行了添加待观察信号的步骤后,再Wave下就可以看到刚添加的所有信号了,且在Wave界面可以看到又分成了,三个小窗口,各自窗口对应的功能:1、路径+变量;2、变量值;3、变量的波形图
有时候路径(上图中的1)比较长的时候,可以进行隐藏,点击箭头处的按钮(下图中的1所指)就可以对变量路径做隐藏或显示;2上这时候还显示No Data的状态,这个变量值对应的是黄线所处时刻的值,3也还是空白的黑,这时候就需要运行一小段仿真了,在下图中的2处写入仿真时间(10us),然后点击运行;
运行后的结果如下,这时候就可以对显示的信号变量做分析,以判断自己的设计是否满足需求;
有时候可能使用的电脑显示空间有限,就可以把窗口设成浮动的形式以最大化观察;
当信号添加多了后,可以直接选中要删的,然后按键盘的Del就可以实现;要放大某时刻的信号变量值时,可以直接按着鼠标的滚轮操作,或者先切换下缩放的模式;
然后在Wave中就可以看到蓝色的缩放尺寸;
对应的,还有一些类似单步的操作,如下所示的Zoom的集合,可以放大、缩小、显示全部、放大当前游标所指的时刻(黄线所在处),也可以返回上次缩放的位置或者自己设定具体的范围,这些就根据自己的使用习惯来操作了;
分析工具
要观察变量的非十六进制类型值时,在Radix中改;
有时候想直观的看下信号变量值对应的波形图,非数字显示,就可以Format中改变,我一般习惯直接Analog(Automatic),然后再去自定义波形的显示;
自定义(Custom)里头有3种波形形式,两个步进式的Step,我理解的就是一正一反的形式,然后中间那个就是插值后的图,画出来的图,看着就光滑些,如果是类正弦这样的波形,就可以很直观的看出区别;
如果一个高位宽的变量中包含的是组合数据,在分析的时候,只想看其中一段位宽的数据,就可以自行组合(Combine Signals)
然后弹出的窗口,先设名字,然后再看自己需要,是否进行反序之类的操作;
直接默认的设置,就会出现下面的样子;
游标使用
接着介绍下游标的使用,就那个黄线,举个简单例子,就是可以用来测量一段信号所用的时间,然后就可以自己根据时钟关系去计算设计的程序走了多少拍的时钟;
在刚运行仿真的时候,界面只会有一个游标,可以看某个时刻的信号变量状态,需要进行测量的时候,就要再添加一个或多个联合使用,我的使用习惯是,先固定一个到指定位置(可以手动拖、也可以直接指定位置),然后将其锁定,再新增一个到另外的位置,至于为什么先锁定放置的游标,是因为不锁着,容易点飘了~,自己试试就晓得了。
讲到的这几个使用,都可在左下角操作
锁一样的图标就是锁定或解锁,然后小扳手就是设置项,可以改名字、指定放置时刻还有就是正常状态和锁定状态的游标颜色,默认是黄与红的搭配;红色小圈加一个白色减号的就是删除了,放置多了就删除多余的,如果都不小心删了,就按上面一行的绿色小圈加一个白色加号的新增一个;
也可以在菜单栏找插入游标的选项或图标,这部分就是游标的控制,增删然后左右移动,左右移动又可以指定是只在单边沿移动或者有变化就移动,具体状态就自己折腾下了;
改名,除了点扳手能改名,还可以右键当前的游标名(如:Cursor 1),然后就会进入可编辑状态,名字一样也可以,不过没啥特殊需要,默认也可以了;
来个简单示例,比如我要知道63与66之间的是怎样的时序,然后如下测试,耗时60ns,然后一拍时钟是20ns,也就是这累加数花了3拍的时钟,一拍时钟加一次,如果我要的是两拍时钟才会进行累加计数,就需要更改代码的设计,直到符合需求;
波形分析会用到的一些常用操作就这些了,还需要一些花式操作,就自己研究了哈;
脚本生成
最后再加一个使用方法,不知道你们会不会Tcl命令,或者看别人操作过,就是运行仿真的时候,调用一个脚本,然后就会自动在窗口唰唰唰的添加一堆信号,然后有的是模拟波形,有的是数字波形,有的还分了组之类的;
其实你也可以,这个就相当于你先运行了一次仿真,然后根据自己需要,图形化界面先配置好,对应的设置也会有对应脚本命令,当你打算关掉这次仿真,但等下又需要用到这些配置,然后再一个个改比较浪费时间,就可以把当前配置好的界面进行保存;然后看到一个”.do“的文件,保存到指定位置
在下一次运行仿真的时候,直接在脚本窗口运行这个”.do“文件(需要在当前路径下,或者直接do 路径+.do文件),然后就会根据保存时的信号变量的配置,进行自动配置;
do 文件也可以根据自己的情况去写,毕竟技多不压身~
结束
好了,今天的篇章就讲到这里,看完还是不熟的话,多练几次就好了;
期待下一篇吧~