The XSDB flow is as follows:
- Set up
xsdb
as described in the following steps to connect to the device hardware.When running the application, the trace data is stored in DDR memory by the debugging and profiling IP. To capture and evaluate this data, you must connect to the hardware device using
xsdb
. This command is typically used to program the device and debug bare-metal applications. Connect your system to the hardware platform or device over JTAG, launch thexsdb
command in a command shell, and run the following sequence of commands: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
where:
-
connect
- Launches the
hw_server
and connects Vivado Design Suite User Guide: Synthesis (UG901)xsdb
to the device. -
source $::env(XILINX_VITIS)/scripts/vitis/util/aie_trace.tcl
- Sources the Tcl trace command to set up the
xsdb
environment. -
aietrace start -graphs mygraph -link-summary PROJECT/xsa.link_summary -base-address 0x900000000 -depth 0x800000 -tile-based-aie-tile-metrics "all:functions_all_stalls; {4,1}:{6,2}:functions_all_stalls"
- Initializes the DPA IP to begin capturing trace
data. The
-graphs
specifies the graph(s) to collect event trace data. If specific tiles are preferred, specify-tiles
with list of tiles to collect event trace data. The-tile-based-aie-tile-metrics
specifies on which tilesfunctions_all_stalls
event trace level will be captured. The values-base-address 0x900000000 -depth 0x800000
specify the starting address to write trace data into the AI Engine and the amount of data to store. -
aietrace stop
- Instructs the DPA IP to offload the trace event
data from the DDR memory. This command must wait until after the
application completes. The data is written to the event_trace<N>.txt file in the
current working directory from where
xsdb
was launched. Anaie_trace_profile.run_summary
file is also created. It can be opened in the Vitis Analyzer as explained in Viewing the Run Summary in the Vitis Analyzer.
-
- Run the design on hardware to trace hardware events.
- Offload the captured trace data.
- Launch the Vitis Analyzer
to import and analyze data with this
command.
vitis_analyzer aie_trace_profile.run_summary
Option | Description |
---|---|
start
|
Start event trace |
stop
|
stop event trace |
-start-type
time|iteration|kernel_event0
|
Specifies different trace delaying approaches like time, iteration or
user-defined event. To use the -start-type
kernel_event0 option, you must add event0() intrinsic in the kernel code
that generates core event 0 for profiling. -start-type time|iteration option should be combined
with the -start-time and -start-iteration options respectively
as explained below. For more information on delayed event trace,
refer to the topic Using the Delayed Event Trace. |
-start-time
|
Specifies the start delay of event trace in
terms of either AI Engine clock cycles or time in sec, ms, us
or ns. If no units are specified, the value is assumed to be in
AI Engine clock cycles. This option should be
used in combination with -start-type
time . |
-start-iteration
|
Starts the event trace based on the graph
iteration count. To use this type of event trace start, you must
re-compile the AI Engine design with an graph-iterator-event option. This option should only
be used in combination with -start-type
iteration . |
-work-dir <Work Directory>
|
Specify working directory |
-graphs <Graph Name>
|
This option allows you to specify which graph(s) should be subject to event trace. |
-base-address <address>
|
Starting address in the DDR from which the Trace data will be stored. |
-depth <size>
|
Length of the memory that will be used in the DDR. |
-tile-based-aie-tile-metrics
|
Sets which AI Engine event to store for specified tiles. |
-graph-based-aie-tile-metrics
|
Sets which AI Engine event to store for specified kernels/graphs. |
-tile-based-interface-tile-metrics
|
Sets which Interface Tile event to store for specified tiles. |
For the event specifications each option is essentially a combination string
of all settings separated by semi-colon. For
example:
# 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"
#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"