在上一节,我讲了一部分的ModelSim的使用方法。本节,我们继续来学习ModelSim的基本使用方法。
如果你还没有学习上一节知识,那么,请你先去学习一下上一节的内容。
上一节内容的链接如下。
接下来,我们来正式讲解本节的内容。
一. Wave界面的左侧的信号列表操作
首先呢,让我们来点击下图所示的红色框线中的具有【全局观察】功能的按钮,
![](https://i-blog.csdnimg.cn/direct/d028b1126fb24976b6009ce5124a0e80.png)
然后呢,界面右边的波形图,将恢复全局观察的状态。
(一)将信号名完全显示出来
接下来,我们来看一看界面的左侧的上方的部分,如下图所示。
![](https://i-blog.csdnimg.cn/direct/2832391b7d9c4633a8771ad0fb6626c3.png)
在图2里面,它是分为了两列。左边的一列里面,有着许多的三维模样的蓝色菱形小方块。每一个零星小方块位于一行。菱形小方块的右边,还有不同的字母。
在这里,每一个零星小方块,代表着的,是一个变量,或者说,它代表着一个信号。每一个信号,都是在test bench文件里面所声明的一个变量。无论它是reg型变量也好,还是wire型变量也好,都是变量,并且也都会显示在本列的信号列表里面。
在第二列的上面,有Msgs字样,下面,是一堆数值。这些个数值,是对应的左边的信号的信号终值。
我们再来看信号列表里面的情况,有的信号的信号名的右边,有三个点,这代表着说,本信号名很长,本列现有的长度不足以将信号名全部显示出来。所以右边有三个点。如果某一个信号的名字的右边不含有三个点,则代表本信号名完整地显示出来了。
对于信号名不能完整显示的情况,我们一般地,会希望将其全部显示。因为,我们有时候,会需要根据信号名,来查看这一信号的波形演变情况。
怎么做呢?
![](https://i-blog.csdnimg.cn/direct/4807659a46b34620835ee949e0f131dc.png)
在图3里面,我用红色框线标出了一个区域,这个区域的中间,是一个白色高亮显示的竖线。这条竖线,我们可以拖动它,以此来改变信号名一列的列宽。
方法是,我们首先将鼠标指针停在这个白色竖线上,如果你停留的位置正确,则鼠标指针变为两个箭头相离的形状,如下图所示。
![](https://i-blog.csdnimg.cn/direct/dc873773d49f42e1843b5b621bd1df66.png)
注意,在你那里,你是看不到黄色的圈圈的。这个图,我不是通过截图来截取到的,而是通过录屏软件,录制到的。我在录屏软件里面,设置了让鼠标指针周围显示黄色圈圈的效果。你那里,能够看到的,是两个箭头相背离的指针形状。
当鼠标指针变为相离的形状的时候,按下鼠标左键不松手,向右拖动鼠标指针,则信号名列表一列的列宽将会增长。待到我们觉得列宽合适的时候,在松开鼠标左键,就可以了。此时,信号名列表一列的列宽就变为我们新设置的列宽了。
结果如下图所示。
![](https://i-blog.csdnimg.cn/direct/43a02a564bb9411a9f0b06a7dcab2209.png)
在图5里面,各个信号的信号名,就都显示完整了。
接下来,我们来看一看信号名的显示格式。我们来看第一行的信号的情况。
第一行信号的完整名是这样的:【/tb_cpu_top/sys_clk】。
在这里呢,最左边是一个斜杠,接下来,是【tb_cpu_top】字样,这个是模块名。我们再来看一看test bench文件的一点内容。
![](https://i-blog.csdnimg.cn/direct/55d58c5954ee4d28be1d3a238b1a07dc.png)
在图6里面,我用红色框线所标出来的部分,正是test bench文件的模块名。
我们还是回到图5。在模块名【tb_cpu_top】的右边是一个斜杠分隔符,再往右,是【sys_clk】字样。这个sys_clk,它就是信号名。同时呢,它也是test bench文件的【tb_cpu_top】模块中的一个变量的名字,如图6中的第3行所示。
在图5中,信号列表里面有很多行信号。每一行的信号名的显示格式,都与sys_clk的显示格式是一样的。只是每一行里面,最右边的信号名不同而已。每一个信号名,都在 test bench文件中有对应的变量的。
也就是说,在我们的这个项目里面,只要是说,在 test bench 文件中声明了一个变量,那么,在ModelSIm的Wave界面的信号名列表里面,就会有这个信号名存在。
(二)界面的左侧的Msgs一列
接下来,我们来看一看Msgs一列,如下图所示。
![](https://i-blog.csdnimg.cn/direct/87d71f8ce75b4ad59e5454c34bb9465e.png)
在图7里面,红色框线标出的是Msgs这一列名。下面是各个信号值,它们是左侧的信号名所对应的信号的终值。
我们来看一看sys_clk哪一行的信号值,是【1'h1】。大家都学过Verilog HDL语法,那么,大家就应该知道,【1'h1】,表示说,这个信号的位宽为1,数值为16进制,值为16进制的1。如果是二进制的话,那么,它就应该是【1'b1】。如果是十进制,它应该是【1'd1】。
现在呢,sys_clk一行的值为【1'h1】,可见它是16进制的。如果,我们想要将其改为十进制的,该怎么做呢?
首先呢,用鼠标点击选择【sys_clk】这一行的信号名一列,结果如下图所示。
![](https://i-blog.csdnimg.cn/direct/ac17d9d8041e4a12af185973e4285720.png)
在图8里面,【sys_clk】信号一行,呈现出白色高亮显示的状态。接下来,我们在这一行上面点击鼠标右键,在弹出来的右键菜单里面,依次选择【Radix】,【Decimal】,如下图所示。
![](https://i-blog.csdnimg.cn/direct/78b9292c51014435bf76fdbd232d8437.png)
![](https://i-blog.csdnimg.cn/direct/c4f13be69ef1479ab470f6a80fab9670.png)
在图11里面,大家可以看到,【sys_clk】信号的Msgs一列,已经变为【1'd1】,这表示,这一信号的显示格式,已经变为了十进制的格式了。
在图9里面,最右边的一级菜单,显示了各种进制格式。【Binary】代表二进制显示,【Octal】为八进制显示,【Unsigned】为无符号显示,【Hexadecimal】为十六进制显示,【ASCII】为ASCII码显示格式。其余的选项我就不讲了。因为,其余的选项里面,有的不常用,有的我也不明白啥意思。
到了这里呢,Wave界面的左边的信号栏,我们就讲完了。
那么,信号栏部分,与它右侧的波形界面有什么关系呢?
信号栏的每一行信号,对应着波形界面的一行信号波形。如下图的几个红色框线所示。
![](https://i-blog.csdnimg.cn/direct/6b027ce36b1b422b8966723bfd771b03.png)
在图12里面,我只是标注了三个信号的信号栏与其右侧波形。有一行信号,就有一行信号波形。
我们接着往下来学习。
(三)放大显示,让时钟信号清楚地显示出来
接下来,我们看一看下图所示的界面。
![](https://i-blog.csdnimg.cn/direct/09af36ebab5d4cf1a1631bdf29ce214e.png)
在图7里面,我所截取的部分,是有数字显示的部分加上信号栏的部分。我们将鼠标移动到有数字显示的区域的横向的中间的位置,点击一下鼠标左键,以便调出黄色竖线,如下图所示。
![](https://i-blog.csdnimg.cn/direct/2f5a918065a44081a411f2859758de9d.png)
然后呢,我们点击几次下图所示的红色框线标出来的按钮,以便放大黄色竖线附近的波形图,如下图所示。
![](https://i-blog.csdnimg.cn/direct/cee0de33b6094b9185edc8af5bf3e3d0.png)
![](https://i-blog.csdnimg.cn/direct/dc122f5193364a2499159efa1b304453.png)
放大到这种程度,也就差不多了。
我们往下来学习。
(四)黄色竖线标记的添加删除与跳转
我们来找到下图所示的工具栏按钮。
![](https://i-blog.csdnimg.cn/direct/a3f5c6e4401e4d4aad7f249bd321c2df.png)
在图16里面,左边的两个按钮,分别用来增添一个黄色竖线标记和删掉一个黄色竖线标记。
默认的情况下,软件中只有一个黄色竖线标记。若是我们单击了这一部分按钮中的第1个,则会增添一个黄色竖线标记,结果如下图所示。
![](https://i-blog.csdnimg.cn/direct/c434fd7bcd3346a3baf02b9469c4b66e.png)
再点击一次增加黄色竖线的工具栏按钮,结果如下图所示。
![](https://i-blog.csdnimg.cn/direct/726a2b132b6d4fa5a5f99f493e0bda54.png)
为了实现团价黄色竖线标记的功能,我们除了点击图16所示的工具栏中的添加标记小按钮之外,我们也可以用另外一种办法来做到。
我们找一找,在信号栏的下方,有下面的东西。
![](https://i-blog.csdnimg.cn/direct/a335323c2c664263a81173aca71f093a.png)
在图19里面,我用红色框线标出来的,是一个绿色的小圆圈,里面还带有一个加号。点击它,同样可以实现增加黄色竖线标记的功能。
如果我们觉得黄色竖线标记太多了,想要删掉其中的一个,要怎么做呢?
我们来看一看下图所示的界面。
![](https://i-blog.csdnimg.cn/direct/83db5c0650404e819b6525a27e5d6e0d.png)
如图20所示,每一个黄色竖线标记的下面,都有一个矩形黄色小方块。我们若是想要删除一个黄色竖线标记,那么,我们可以点击我们想要删除的一个黄色竖线的下方的矩形小方块的内部,以激活这一个黄色竖线标记。接下来呢,点击下图的红色框线所示的工具栏按钮,就可以删除某一个黄色竖线标记了。
![](https://i-blog.csdnimg.cn/direct/40797836bea04d27ad35c99d2ed23ebf.png)
为了实现同样的功能,我们采取另外的一种办法。请看下面的图。
![](https://i-blog.csdnimg.cn/direct/3acd075210014eaead45546fa45023ea.png)
在图22里面,有一行时白色高亮显示的。这一行,就是被激活选择的黄色竖线标记。目前,在我们的这个界面里,有三行,每一个都有着相同的三个小按钮,如下图所示。
![](https://i-blog.csdnimg.cn/direct/3d706224201a48dea4c36299eca1ac28.png)
每一个这样的行,都代表着一个黄色竖线标记。
我们想要删除哪一个黄色竖线标记,就可以直接点击哪一行的【红色圆圈,内含减号】形状的小按钮。
对于黄色竖线标记,我们除了可以移动鼠标指针到波形中的合适位置,然后单击左键以跳跃式定位黄色竖线标记之外,我们也可以用鼠标来拖动着黄色竖线下方的矩形小方块的内部。
拖动的操作大概应该知道吧,就是先将鼠标指针移动到某一个黄色矩形小方块上面,然后单击鼠标左键,并且按住不松手,然后呢,横向地移动鼠标指针,这样就可以拖动黄色竖线标记了。选好了位置以后,再来松开鼠标左键。
接下来,还是请大家将新增的两个黄色竖线标记给删掉,只留下系统默认的那个标记线。
我们来看下图所示界面的右边6个按钮。
![](https://i-blog.csdnimg.cn/direct/a3f5c6e4401e4d4aad7f249bd321c2df.png)
将鼠标停在上面,可以看到出现的提示框中的文字。
它们分别如下所示。
【Find Previous Transation】,定位到左边的跳变沿。
【Find Next Transation】,定位到右边的跳变沿。
【Find Previous Falling Edge】,定位到左边的下降沿。
【Find Next Falling Edge】,定位到右边的下降沿。
【Find Previous Rising Edge】,定位到左边的上升沿。
【Find Next Rising Edge】,定位到右边的上升沿。
这几个按钮的含义还是比较明确的。
有一点需要注意,信号有那么多,我们要定位到哪一个信号的跳变沿,或者是上升沿下降沿呢?是定位到【sys_clk】信号的某一个边沿,还是定位到【sys_rst_n】的某一个跳变沿呢?
我们所要定位的边沿,它是针对哪一个信号,我们就需要先选定哪一个信号。
方法如下,首先呢,我们在界面左边的信号栏里面,用鼠标左键点击选择某一个信号名,使得这一行呈现白色高亮显示的状态,然后呢,再去点击控制边沿跳转的按钮。
这里的控制边沿跳转,指的是让激活选择了的黄色竖线标记,跳转到某一个已选中了的信号的某一边沿位置。跳转的,是黄色竖线,而不是让信号波形左右移动。
还需要注意,跳转的,是激活选择了的黄色竖线标记。假定我们一共有三个黄色竖线标记,那么,控制边沿跳转的时候,跳转的,仅仅是已经激活了选择的那条黄色竖线,其余的两个未激活的,它们的位置是保持不变的。
(五)移动滑块,查看波形图的不同时间段
我们来看一看当前的界面。
![](https://i-blog.csdnimg.cn/direct/2f9b5c9e754f4e58948322ee6423bb06.png)
在图24里面,我所标注的红色框线,它位于波形图的下面,选项卡的上面。我们再来放大一下这个区域。
![](https://i-blog.csdnimg.cn/direct/41905ef6dbbe4a16998b2774137163d7.png)
在图25里面,我用红色框线标出来的位置,里面有一个滑块。这个滑块,我们可以通过拖动它,来控制波形图区域显示哪一个时间段的波形。
我们将滑块往左拖动一下看看,如下图所示。
![](https://i-blog.csdnimg.cn/direct/1ad5831cd32e42fe915747e40d862a55.png)
![](https://i-blog.csdnimg.cn/direct/3477f0a6e34a425f9d0f9c0c1bb27e7d.png)
到了这里,我想,本节内容也就差不多了。
结束语
关于ModelSim软件的基本使用方法这一块,我是用了两节来讲解。并且,我还只讲了其中的一部分。
对于这一部分的内容,我去选择来讲解,是为了帮助已经会了的同学来回顾一下,以及帮助初次学习的同学了解一下ModelSIm的基本使用方法。
写教程的时候,还是觉得,挺累的。
好多的东西,想起来,就觉得麻烦。
不过,也没有办法。想要讲好知识,麻烦的东西,也还是需要去讲解的。
有好的建议的,也欢迎大家提出来。