XSDB 流程如下所示:
- 如下步骤中所述,设置
xsdb
以连接到器件硬件。运行应用时,调试和剖析 IP 会将追踪数据存储在 DDR 存储器内。要捕获此数据并对其进行求值,必须使用
xsdb
连接到硬件器件。此命令通常用于执行器件编程和调试裸机应用。通过 JTAG 将您的系统连接到硬件平台或器件、在命令 shell 中启动xsdb
命令,然后运行以下命令序列:xsdb% connect xsdb% ta xsdb% ta 1 xsdb% source $::env(XILINX_VITIS)/scripts/vitis/util/aie_trace.tcl xsdb% aietrace start -graphs mygraph -work-dir ./Work -link-summary $PROJECT/xsa.link_summary -base-address 0x900000000 -depth 0x800000 -tile-based-aie-tile-metrics "all:functions; {4,1}:{6,2}:functions_all_stalls" # Execute the PS host application (.elf) on Linux ## After the application completes processing. xsdb% aietrace stop
其中,
source $::env(XILINX_VITIS)/scripts/vitis/util/aie_trace.tcl
命令用于运行 Tcltrace
命令以设置xsdb
环境。 - 在硬件上运行设计以追踪硬件事件。
- 卸载捕获的追踪数据。
- 启动 Vitis IDE,通过此命令导入和分析数据。
vitis -a aie_trace_profile.run_summary
选项 | 描述 |
---|---|
start
|
启动事件追踪并初始化 DPA IP,开始捕获追踪数据。 |
stop
|
停止事件追踪并指令 DPA IP 从 DDR 存储器卸载追踪事件数据。此命令必须等待至应用完成后才有效。数据写入当前工作目录中的 event_trace<N>.txt 文件,xsdb 同样是在此目录中启动的。此外还会创建 aie_trace_profile.run_summary 文件。在 Vitis IDE 中可打开此文件,如 在 Vitis IDE 中查看运行汇总 中所述。提示: 如果再次运行计算图时不移除
event_trace<N>.txt ,那么旧文件将被新的运行结果覆盖。 |
-link-summary
|
指定到设计链接阶段中生成的链接汇总信息的路径。这是必需选项。 |
-start-type
time|iteration|kernel_event0
|
指定不同的追踪延迟方法,如时间、迭代或用户定义的事件。要使用 -start-type kernel_event0 选项,您必须在内核代码中添加 event0() 内部函数,此内核代码用于生成核事件 0 以供剖析。-start-type time|iteration 选项应分别与 -start-time 选项和 -start-iteration 选项相结合,如下所述。如需了解有关延迟的事件追踪的更多信息,请参阅 使用延迟事件追踪 主题。 |
-start-time
|
指定事件追踪的起始延迟,用 AI 引擎时钟周期数或时间(以 sec、ms、us 或 ns 为单位)来表示。如未指定单位,则假定该值表示 AI 引擎时钟周期数。该选项应与 -start-type
time 一起使用。 |
-start-iteration
|
基于计算图迭代计数启动事件追踪。要使用该事件追踪启动类型,您必须利用 graph-iterator-event 选项来重新编译 AI 引擎设计。该选项应仅限与 -start-type
iteration 一起使用。 |
-work-dir <Work Directory>
|
指定工作目录。这是必需选项。 |
-graphs <Graph Name>
|
该选项允许您指定将受事件追踪影响的一个或多个计算图。如不指定该项,则默认为所有计算图启用追踪。 |
-base-address <address>
|
表示 DDR 中的起始地址,将存储来自该地址的追踪数据。 重要:
-base-address 中使用的 DDR 存储器地址必须为高位地址,以限制与 Versal 平台上的操作系统或应用发生存储器冲突的几率。对于定制平台,请确保您已知当前使用的 DDR 存储器量并制定相应计划。 |
-depth <size>
|
表示将在 DDR 中使用的存储器的长度。这是必需选项。 |
-tile-based-aie-tile-metrics
|
用于设置要为指定拼块存储的 AI 引擎事件。 |
-graph-based-aie-tile-metrics
|
用于设置要为指定内核/计算图存储的 AI 引擎事件。 |
-graph-based-memory-tile-metric
|
注释:该选项仅适用于 AI 引擎机器学习器件。 用于设置要为指定缓冲器/计算图存储的存储器拼块指标 |
-tile-based-memory-tile-metric
|
注释:该选项仅适用于 AI 引擎机器学习器件。 用于设置要为指定存储器拼块存储的存储器拼块指标。 |
对于指定的事件,每个选项实质上都是一个组合字符串,该字符串由所有设置组成,各项设置以分号分隔。例如:
# Sets event trace to "functions_all_stall" for the tile range column 4 to
# 6 and row 1 to 2, and overides to "functions" for tile (4,1)
-tile-based-aie-metrics "{4,1}:{6,2}:functions_all_stalls; {4,1}:functions"
# Sets event trace to "functions" for kernel k1 in graph myGraph
-graph-based-aie-tile-metrics "myGraph:k1:functions"
# Sets event trace to "functions" for all kernels in hierarchical graph
# myGraph->subgraph1->subgraph2
-graph-based-aie-tile-metrics "myGraph.subgraph1.subgraph2:all:functions"
#Examples on Delayed event trace
# Sets event trace to "functions" for kernel k1 in graph myGraph delayed
# by 1.5ms
-start-type time -start-time 1.5ms -graph-based-aie-tile-metrics "myGraph:k1:functions"
# Sets event trace to "functions" for kernel k1 in graph myGraph delayed
# by 10 graph iterations
-start-type iteration -start-iteration 10 -graph-based-aie-tile-metrics "myGraph:k1:functions"
# Sets event trace to "functions" for kernel k1 in graph myGraph delayed
# by user defined event
-start-type kernel_event0 -graph-based-aie-tile-metrics "myGraph:k1:functions"