作用域是 HDL 设计的分层分区。例化设计单元或定义进程、块、包或子程序时,就会创建作用域。
在下图所示Scope(作用域)窗口中,您可看到设计层级。在Scope窗口中选中作用域时,会在Objects(对象)窗口中显示来自该作用域的所有 HDL 对象。您可在Objects窗口中选择 HDL 对象,并将其添加到波形查看器中。
图 1.
Scope窗口
筛选作用域
- 单击作用域子菜单上的Settings(设置)选项即可在显示或隐藏(选中或取消选中)对应作用域类型之间进行切换。 提示: 使用Setting选项隐藏作用域时,该作用域内的所有作用域(无论任何类型)也会一并隐藏。例如,在前图中,单击“Verilog Module”(Verilog 模块)按钮会隐藏所有 Verilog 模块时,不仅会隐藏
bft_tb
作用域,还会隐藏uut
(即使uut
是 VHDL 实体作用域也是如此)。 - 要将显示的作用域限制为包含指定字符串的作用域,请单击Search(搜索)按钮 并在文本框中输入该字符串。
Objects窗口中显示的对象会根据当前作用域而变(或者经筛选后显示)。选择当前作用域即可更改Objects窗口中的对象。
右键单击作用域时,会显示包含下列选项的菜单(如下图所示):
图 2.
Scope窗口选项
-
Add to Wave Window(添加到波形窗口):将所选作用域的所有可查看的 HDL 对象添加到波形配置中。提示: 大位宽的 HDL 对象可能减慢波形查看器的显示速度。在发出Add to Wave Window命令之前,您可在波形配置上设置显示限制来过滤掉此类对象。要设置显示限制,请使用 Tcl 命令
set_property DISPLAY_LIMIT <maximum bit width> [current_wave_config]
。Add to Wave Window命令可能会添加另一组 HDL 对象,这些对象不同于Objects窗口中的对象。除了所选作用域内直接定义的对象外,在Scope窗口中选择作用域时,Objects窗口还可能会显示来自外围作用域的 HDL 对象。相反,Add to Wave Window命令仅添加来自所选作用域的对象。
或者,您可将Objects窗口中的项拖放到“Wave”(波形)窗口中的“Name”(名称)列内。
重要: “Wave”窗口显示的对象值会从添加该对象的仿真时间开始随时间而变。提示: 要显示插入时间之前的对象值,必须重新启动仿真。为避免因未能捕获值的变化而不得不重新启动仿真,请在仿真运行开始时发出log_wave -r /
Tcl 命令,这样即可捕获设计中可显示的所有 HDL 对象的值变化。如需了解更多信息,请参阅 使用 log_wave Tcl 命令。对波形配置执行的更改(包括创建波形配置或添加 HDL 对象)仅在您保存 WCFG 文件后才会变为永久生效。
- Go To Source Code(转至源代码):在定义所选作用域时打开源代码。
- Go To Instantiation Source Code(转至例化源代码):对于 Verilog 模块和 VHDL 实体实例,该选项用于在例化所选实例时打开源代码。
-
Set Current Scope to Active(将当前作用域设为活动作用域):将当前作用域设为选定的作用域。选定的作用域会变为活动的仿真作用域(即,
get_property active_scope [current_sim]
)。处于活动状态的仿真作用域是 HDL 进程作用域,在此作用域内仿真当前处于暂停状态。使用 Vivado 仿真器时,如果在设置中禁用follow active scope(遵循活动作用域),那么该仿真器会记住最后一个 current_scope 选择,即使继续执行仿真也是如此。命中断点时,current_scope 仍会指向设为活动作用域的最后一个作用域。 -
Log to Wave Database(记录到波形数据库内):您可记录以下任意对象:
- 当前作用域的对象。
- 当前作用域及其下层的所有作用域的对象。
提示: 默认情况下,Vivado 仿真器禁止记录大型 HDL 对象。要更改所记录的对象的大小限制,请使用set_property trace_limit <size> [current_sim]
Tcl 命令,其中<size>
是 HDL 对象中标量元素的数量。在源代码文本编辑器中,您可悬停在代码中的标识上以获取其值,如 “Scope”窗口 中所示。
重要: 要正常使用该功能,请确保您的作用域与Scope窗口中所选源代码已关联。提示: 由于顶层模块不执行例化,因此选中顶层模块时,前图所示Go to Instantiation Source Code右键单击选项会变为灰显。提示:log_wave
可用于记录当前作用域或下层作用域的对象。仿真后,您可在波形上添加任意对象,并可看到从时间 0 开始直至当前仿真为止的绘图。图 3. 已显示标识值的源代码
其他作用域和源代码选项
在Scope窗口或Sources窗口中,选中Show Search(显示搜索)按钮 时会显示搜索字段。
您也可以在 Tcl 控制台中输入以下命令来浏览 HDL 设计,效果与使用Scope窗口和Objects窗口相同:
get_scopes
current_scope
report_scopes
report_values
图 4.
Scope窗口的上下文菜单
提示: 完成编辑源代码并保存文件后,可以单击“Relaunch”(重新启动)按钮 来重新编译并重新启动仿真,而无需关闭再重新打开仿真。