In the Vitis IDE, you can analyze the AI Engine status output that is automatically generated as follows:
- Open the run summary file,
xrt.run_summary
, with the following command:vitis -a xrt.run_summary
- Click Set Compile
Directory in the summary view to set the AI Engine compile/work
directory.
- In the prompted dialog box, click the ... button, and select the AI Engine compile summary file, such as
./Work/graph.aiecompile_summary
.The summary data displays in the IDE.
-
Click Graph or Array to display the summary data as desired. Note that all stalls are shown in red.
-
At the bottom of the summary data, you can access the associated views related to the AI Engine status, some of which are defined as follows.
- Tile Status
- Shows AI Engine status,
including stream, cascade, lock stalls. Columns are explained as
follows:
- PC: Shows the current PC value. It can be cross-probed with source code by clicking it.
-
Status: Shows AI Engine status. It can be:
- Done
- All done.
- Memory Stall - South
- AI Engine stalled on accessing memory that is located south of the AI Engine. See Array view for the physical placement of AI Engine's and buffers.
- Memory Stall - West
- AI Engine stalled on accessing memory that is located west of the AI Engine.
- Memory Stall - North
- AI Engine stalled on accessing memory that is located north of the AI Engine.
- Memory Stall - East
- AI Engine stalled on accessing memory that is located east of the AI Engine.
- Lock Stall - South
- AI Engine stalled on acquiring lock of buffer, that is located south of the AI Engine.
- Lock Stall - West
- AI Engine stalled on acquiring lock of buffer, that is located west of the AI Engine.
- Lock Stall - North
- AI Engine stalled on acquiring lock of buffer, that is located north of the AI Engine.
- Lock Stall - East
- AI Engine stalled on acquiring lock of buffer, that is located east of the AI Engine.
- Stream Stall - Input Ch 0
- AI Engine stalled on reading from stream input channel 0.
- Stream Stall - Input Ch 1
- AI Engine stalled on reading from stream input channel 1.
- Stream Stall - Output Ch 0
- AI Engine stalled on writing to stream output channel 0.
- Stream Stall - Output Ch 1
- AI Engine stalled on writing to stream output channel 1.
- Cascade Stall - Input
- AI Engine stalled on reading from cascade input stream.
- Cascade Stall - Output
- AI Engine stalled on writing to cascade output stream.
- Debug Halt
- AI Engine stalled by enabling debug mode.
- ECC Error Stall
- AI Engine stalled when ECC error happens.
- ECC Scrubbing Stall
- AI Engine stalled on ECC Scrubbing error.
- Error Halt
- AI Engine stalled on error.
- Enabled
- AI Engine is enabled.
- Reset
- In reset.
Figure 1. Stalls and Status in the Graph View
- DMA Status
- Shows the Memory module DMA channel status in the design. This is an internal DMA channel control state machine which is asynchronous to application data movement and should not be used to determine if the channel is idle.
- Error Events
- Shows error events that have happened before the status was generated. Further details are available in the following tables: Table 4, Table 1, and Table 2.
- Buffers
- Shows buffer objects in the design with the
current status. Something to note:
-
Lock Status: Lock status of
the buffer object:
- Acquired for read: The buffer has been acquired for read by the consumer kernel.
- Released for read: The buffer has been released for read by the producer kernel.
- Acquired for write: The buffer has been acquired for write by the producer kernel.
- Released for write: The buffer has been released for write by the consumer kernel.
-
Lock Status: Lock status of
the buffer object:
Figure 2. Buffers with Lock Status
Tip: Hover the mouse on objects in
the Graph view. It will
show more information about the object.