使用波形配置文件
Vivado Simulator允许用户自定义波形显示方式,当前的显示状态称作波形配置。波形配置可以保存为WCFG文件,供以后使用。一个波形配置对应一个Wave窗口,没有保存的波形配置显示为untitled。打开仿真后,File菜单中有与波形配置相关的指令:
这些控制功能依次是:
如果关闭了仿真,下次需要使用是只是想查看上次仿真的结果,而不是重新运行仿真,点击Flow菜单下的Open Static Simulation,选择WDB文件即可(在project.sim/sim_1/behav路径下)。静态仿真模式下,Vivado Simulator会从WDB文件中读取数据并显示。
运行仿真过程中,会将显示的HDL对象的波形活动、Sope窗口中的对象、Objects窗口中的对象存储到WDB文件中。但注意,Vivado不能打开2014.3版本之前创建的WDB文件。
窗口对象(wave object)
向波形配置中添加一个HDL对象,其实并不是直接添加该对象,Vivado会创建一个窗口对象,该对象与HDL对象有联系也有区别。借助此特性,一个HDL对象可以创建多个与其相关的窗口对象,且每个窗口对象的显示设置可以不同。比如一个用16进制显示,另一个用10进制显示。
由HDL对象而来的窗口对象称作设计窗口对象,除此之外,还有其它的对象类型:隔离带(divider)、群组(group)、虚拟总线(virtual buses)。这些对象都是为了提高观察波形的便捷性,前两者示例如下图。虚拟总线是将多个信号组合为一个总线显示。
波形窗口中包含Name、Value和波形三部分。
默认Value显示的基数为16进制,想要改变默认设置,在波形窗口中点击Settings,选择一个Radix:
顺便再介绍下其它设置选项实现的功能效果:
在选中对象的右键菜单->Radix中可以设置单个信号的基数(应与该信号的本质相符),常见的基数已经非常熟悉。Radix还可以选择为Real,设计者可以在Real Setting中设置Value按指定的定点数或浮点数格式显示,提供了极大的便利性。
该功能非常实用,比如CORDIC IP核在计算arctan函数时,输出数据为带符号、小数点从MSB三位后的格式,只需要在这里设置相应格式,就可以直接显示为-pi~pi的范围,而不需要人工计算。
设置模拟波形显示方式
有时总线数据用模拟波形的方式观察更直观,但注意信号的Radix设置必须符合其本质,才能显示正确的波形。比如一个总线数据按带符号二进制补码编码,Radix必须设置为一种带符号格式;如果一个数据为浮点数格式,必须选择real并做正确的设置。
在对象右键->Waveform Style,可选择模拟(Analog)或数字(Digital)显示方式,Anolog Settings中可以设置模拟波形的显示方式。注意:模拟显示仅支持位宽不超过64Bits的总线。
下面介绍一下各选项的设置方法和效果:
此外,某些总线信号的有效顺序可能与定义的Bit顺序相反,可以在右键菜单中选择“Reverse bit order”交换总线Bit顺序,如bus[7:0]交换后为bit[0:7],信号的值和波形也会跟着改变。
在时间刻度上右键,可以设置显示时间的方式,包括fs、ps、ns、us、ms、s,Auto会自动选择最适合的单位,Default表示HDL设计中规定的仿真精度。此外还有Samples以离散采样数值的方式显示,User为用户自定义的时间单位,但这两个设置对HDL无效。
观察波形辅助工具
上文提到窗口对象中还包括如下三类,来帮助设计观察仿真结果:
除此之外,Vivado还提供了一些其它特性帮助设计者分析波形中的数据:
1.光标
在波形上单击,会出现黄色的光标,称之为主光标;按住Shift键,再在另一个地方点击,会出现第二个光标,称之为辅助光标(虚线,会替换原主光标所在位置)。顶部会显示每个光标所处的时间点,底部有刻度尺且显示两者之间的时间差(显示刻度尺需要在设置中选中Floating Ruler)。单击波形窗口的任意地方,即可隐藏辅助光标。
如果设置中选中了Snap to Transition,拖动光标过程中会有一个根据数据转换状态变换的圈(不选中该功能始终为空心圈,不会变化)。空心圈○表示光标处在信号的两个过度点之间(过度点即为值发生改变的点);实心圈●表示光标位于过度点处或标记(marker)上。如下图所示:
通过此功能,设计者即可准确地将光标置于信号的边缘处。波形窗口工具栏中还有Previous Transition和Next Transition两个功能,可以改变光标位置到选定对象的前一个或后一个过度点。可以同时选中多个对象。
2.标记
标记(Marker)用来指示波形中设计者关心的重大事件,可以对与标记事件相关的时间进行测量。在窗口工具栏中点击Add Marker(如下图红框)添加标记,自动测量并显示标记与光标之间的时间差。
标记同样支持Snap to Transition功能,让设计者可以准确地标记信号边缘。在标记上右键,选中Delete Marke**r或**Delete All Markers即可删除标记。底部也会显示时间刻度尺辅助时间测量,0时刻从辅助光标开始,如果没有辅助光标会从选中的Marker处开始。
3.查找功能
右键菜单中Find/Find Value可分别用于查找某一对象或者选中对象中的特定值。空白框中输入带查找字符串,必须与设置的Radix相符,否则编辑框会变为红色提示错误(如十六进制就只能输入0-F)。
句号的点‘.’相当于通配符,如查找“1.2”,便会找到102、112等等。Match用于设置匹配模式,Beginning、End(以查找内容为开头或结尾)或Exact(精确值)。Previous和Next在结果之间切换,如果没有找到工具条会显示“Value not found”。
文章来源:FPGADesigner的博客
*本文由作者授权转发,如需转载请联系作者本人