“Scope”窗口 - 2023.2 简体中文

Vivado Design Suite 用户指南: 逻辑仿真 (UG900)

Document ID
UG900
Release Date
2023-10-18
Version
2023.2 简体中文

作用域是 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
提示: 要访问源文件以进行编辑,可以在Scope窗口或Objects窗口中选中Go to Source Code来打开这些文件,如 “Scope”窗口 中所示。
图 4. Scope窗口的上下文菜单

提示: 完成编辑源代码并保存文件后,可以单击“Relaunch”(重新启动)按钮 来重新编译并重新启动仿真,而无需关闭再重新打开仿真。