观察点 - 2023.2 简体中文

AI 引擎工具和流程用户指南 (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 简体中文

观察点属于一种断点类型。当某处地址上的值发生更改时,观察点可用于停止核的执行。这在判断值发生更改的位置时很有用。例如,可能意外覆盖某个变量值,导致程序流程中断。观察点有助于检测此类情况。

AI 引擎架构支持读/写观察点。这表示根据您的配置,在读取访问和/或写入访问时触发观察点。每个 AI 引擎 tile(拼块)都支持每个存储体各含 2 个观察点。由于每个 AI 引擎核(不包括边界处的拼块)都有权访问相邻拼块内的存储体,因此每个核最多可使用 8 个观察点。但由于共享存储体,因此每个核的可用观察点数量取决于存储体内已用的观察点数量。例如,如果某个核已使用了来自其 4 个相邻存储体的全部 8 个观察点,那么共享这 4 个存储体的其他核则无法使用来自共享的存储体的观察点。调试器会保留从每个存储体分配的观察点的记录,只要当前拼块内无可用观察点,就会抛出错误。

  1. 要在 Vitis IDE 中添加观察点,请找到左下角的WATCH(观察)窗口。将鼠标悬停在该窗口上,然后单击以下高亮的Add Expression(添加表达式)(+)命令。
  2. 您可输入感兴趣的存储器地址或变量名称。如果您选中的核并非您创建观察点时所选的核,那么观察点中的值可能会显示“not available”(不可用)。例如,如果您是通过在调试视图中选中某个核来创建的观察点,那么只能看到针对该特定核更新的值。对于所有其他核,观察点值都会显示“not available”。

  3. 您可右键单击任意观察点来编辑、复制和移除某一个或所有观察点。

触发观察点

根据观察点的配置方式,在读取访问和/或写入访问时会触发观察点。已触发的观察点会导致核在访问相应地址的指令处停止。调试器会检测到该核已因观察点而停止,并发出相应报告。

重要:
  • 观察点仅适用于硬件。不支持 AI 引擎 SystemC 模型。
  • 存储体为共享。如有某个核使用了来自某个 bank 的两个观察点,那么就无法在该 bank 内再为任何其他核添加观察点。
  • 对于归入未使用的拼块/存储体的存储器地址,不得设置观察点。将观察点设置到未使用的拼块可能导致 AXI 错误。已用的 AI 引擎和存储器拼块可在 Work/aie/active_cores.json 中找到。
  • 对于位于完整 16 字节对齐地址范围内的存储器访问,可触发观察点。
  • 调试器使用两条广播通道来处理观察点事件。在调试期间启用观察点时,请确保这两条广播通道的使用中不存在任何冲突。