Profiling the AI Engine in Hardware - 2023.2 English

AI Engine Tools and Flows User Guide (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 English

An AI Engine event gives information about the system at a specific instant in time. An event that is associated with a timestamp, type and set of data values is referred to as a payload. The interpretation of the payload depends on the type of the event. A timestamp allows ordering of events, computation of causality relationships, and implementation of verifiers on a sequence of events.

For event modeling purposes, the key modules of the AI Engine array are processor, DMA, lock modules, memory, and I/O streams. Each module can be viewed as an event generator/responder. Each module receives an event and responds to the event. As a response, new events could be generated. Events are classified based on the generator of the events. The timestamp is not mentioned explicitly in the event definitions. Each event is described with a payload, which is a couple of values associated with the event. Each AI Engine, memory, DMA, or lock is addressable by a two-dimensional index <col, row>, which is the column and row index in the AI Engine array. Some of the AI Engine events are shown in the following tables.

Events generated by the AI Engine and their corresponding IDs are listed in the following table.

Table 1. AI Engine and AI Engine-ML Events
Event Number AI Engine Version Event Name Comment
22 AI Engine / AI Engine ML Group Core Stall Any or all the events from event number 23 to 31 can trigger this event.
23 AI Engine / AI Engine ML Memory Stall Event generated when core gets stalled due to memory conflict.
24 AI Engine / AI Engine ML Stream Stall Event generated when core gets stalled either due to no data at input or due to backpressure on the stream output from core.
25 AI Engine / AI Engine ML Cascade Stall Event generated when core gets stalled either due to no data at Input or due to backpressure on the stream output from core.
26 AI Engine / AI Engine ML Lock Stall Event generated when core gets stalled due to lock being acquired already.
28 AI Engine / AI Engine ML Active Event generated when core changes state from disabled to active.
32 AI Engine / AI Engine ML Group Core Program Flow Any or all the events from event number 33 to 45 can trigger this event.
37 AI Engine / AI Engine ML Instr Vector Event generated when AI Engine core executes a “vector” instruction.
38 AI Engine / AI Engine ML Instr Load Event generated when AI Engine core executes a “load” instruction.
39 AI Engine / AI Engine ML Instr Store Event generated when AI Engine core executes a “store” instruction.
40 AI Engine / AI Engine ML Instr Stream Get Event generated when AI Engine core executes a “read from stream” instruction.
41 AI Engine / AI Engine ML Instr Stream Put Event generated when AI Engine core executes a “write to stream” instruction.
42 AI Engine / AI Engine ML Instr Cascade Get Event generated when AI Engine core executes a “read from cascade stream” instruction.
43 AI Engine / AI Engine ML Instr Cascade Put Event generated when AI Engine core executes a “write to cascade stream” instruction.
50 AI Engine FP Overflow Event generated when floating point overflow exception occurs.
50 AI Engine-ML FP Huge Result after rounding has magnitude greater than maximum normalized number (includes FP Overflow).
51 AI Engine FP Underflow Event generated when floating point underflow exception occurs.
51 AI Engine ML Int FPP Zero Integer or floating-point unit output is zero (includes FP Underflow/tiny).
52 AI Engine FP Invalid Event generated when floating point invalid exception occurs.
52 AI Engine ML FP Invalid Invalid floating-point operation (includes NaN input and div by zero).
53 AI Engine FP Div by Zero Event generated when floating point div by zero exception occurs.
53 AI Engine ML FP Inf Floating point output is infinity.

Events generated by the AI Engine memory module and their corresponding IDs are listed in the following table.

Table 2. Memory Module Events for AI Engine
Event Number AI Engine Version Event Name Comment
20 AI Engine Group DMA Activity Any or all the events from event number 21 to 40 can trigger this event.
25 AI Engine DMA S2MM 0 finished packet  Event generated when S2MM channel 0 finishes the transfer of a DMA Packet.
26 AI Engine DMA S2MM 1 finished packet Event generated when S2MM channel 1 finishes the transfer of a DMA Packet.
27 AI Engine DMA MM2S 0 finished packet Event generated when MM2S channel 0 finishes the transfer of a DMA Packet.
28 AI Engine DMA MM2S 0 finished packet Event generated when MM2S channel 1 finishes the transfer of a DMA Packet.
33 AI Engine DMA S2MM 0 stalled lock acquire Event generated when S2MM channel 0 is stalled on lock acquire.
34 AI Engine DMA S2MM 1 stalled lock acquire Event generated when S2MM channel 1 is stalled on lock acquire.
35 AI Engine DMA MM2S 0 stalled lock acquire Event generated when MM2S channel 0 is stalled on lock acquire.
36 AI Engine DMA MM2S 1 stalled lock acquire Event generated when MM2S channel 1 is stalled on lock acquire.
43 AI Engine Group Lock Any or all the events from event number 44 to 75 can trigger this event.
76 AI Engine Group Memory Conflict Any or all the events from event number 77 to 84 can trigger this event.
86 AI Engine Group Errors Any or all the events from event number 87 to 100 can trigger this event.

Events generated by the AI Engine ML memory module and their corresponding IDs are listed in the following table.

Table 3. Memory Module Events for AI Engine-ML
Event Number AI Engine Version Event Name Comment
18 AI Engine ML Group DMA Activity Any or all the events from event number 19 to 42 can trigger this event.
19, 20 AI Engine ML DMA S2MM (0,1) start task  Event generated when S2MM channel 0,1 starts the next task.
21, 22 AI Engine ML DMA MM2S (0,1) start task Event generated when MM2S channel 0,1 starts the next task.
23,24 AI Engine ML DMA S2MM (0, 1) finished BD S2MM channel (0, 1) completes one call of a BD. BD is complete when all data pushed to memory.
25, 26 AI Engine ML DMA MM2S (0, 1) finished BD MM2S channel (0, 1) completes one call of a BD. BD is complete when last word is ready to be pushed to the stream port.
27, 28 AI Engine ML DMA S2MM (0, 1) finished task S2MM channel (0, 1) completes task (all repeat BDs finished, channel ready to move to next task).
29, 30 AI Engine ML DMA MM2S (0, 1) finished task MM2S channel (0, 1) completes task (all repeat BDs finished, channel ready to move to next task).
31, 32 AI Engine ML DMA S2MM (0, 1) stalled lock S2MM channel (0, 1) is stalled on a lock request (acquire).
33, 34 AI Engine ML DMA MM2S (0, 1) stalled lock MM2S channel (0, 1) is stalled on a lock request (acquire).
35, 36 AI Engine ML DMA S2MM (0, 1) stream starvation S2MM channel (0, 1) is stalled due to no data on stream input.
37, 38 AI Engine ML DMA S2MM (0, 1) stream backpressure MM2S channel (0, 1) is stalled due to stream backpressure.
39, 40 AI Engine ML DMA S2MM (0, 1) memory backpressure S2MM channel (0, 1) is stalled due to conflicts writing to memory.
41, 42 AI Engine ML DMA MM2S (0, 1) memory starvation MM2S channel (0, 1) is stalled due to conflicts reading from memory.
43 AI Engine ML Group Lock Any or all the events from event number 44 to 75 can trigger this event.
76 AI Engine ML Group Memory Conflict Any or all the events from event number 77 to 84 can trigger this event.
86 AI Engine ML Group Errors Any or all the events from event number 87 to 102 can trigger this event.

Events generated by the AI Engine-ML memory tile and their corresponding IDs are listed in the following table.

Table 4. AI Engine-ML Memory Tile Events
Event Number AI Engine version Event Name Comment
21, 22 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_start_task S2MM channel selected starts next task in task queue.
23, 24 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_start_task MM2S channel selected starts next task in task queue.
25,26 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_finished_BD S2MM channel selected completes one call of a BD. BD is complete when all data pushed to memory.
27, 28 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_finished_BD One of six MM2S channels selected completes one call of a BD. BD is complete when last word is ready to be pushed to the stream port.
29, 30 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_finished_task S2MM channel selected completes task (all repeat finished, channel ready to move to next task).
31, 32 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_finished_task MM2S channel selected completes task (all repeat finished, channel ready to move to next task).
33, 34 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_stalled_lock S2MM channel selected is stalled on a lock request (acquire).
35, 36 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_stalled_lock MM2S channel selected is stalled on a lock request (acquire).
37, 38 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_stream_starvation S2MM channel selected is stalled due to no data on stream input.
39, 40 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_stream_backpressure MM2S channel selected is stalled due to stream backpressure.
41, 42 (N=0,1) AI Engine ML DMA_S2MM_Sel<N>_memory_backpressure S2MM channel selected is stalled due to conflicts writing to memory, or strided writes to neighbor memories.
43, 44 (N=0,1) AI Engine ML DMA_MM2S_Sel<N>_memory_starvation MM2S channel selected is stalled due to conflicts reading from memory, or strided reads to neighbor memories
80+4*N (N=0..7) AI Engine ML Port_Running_<N> For monitored port <N>, the event is asserted when it is in running condition. Running when master TVALID is High and slave TREADY is high.
81+4*N (N=0..7) AI Engine ML Port_Stalled_<N> For monitored port <N>, the event is asserted when it is in stalled condition. Stalled when master TVALID is High and slave TREADY low.
82+4*N (N=0..7) AI Engine ML Port_TLAST_<N> For monitored port <N>, the event is asserted when TLAST is High.

Events generated by the AI Engine interface and their corresponding IDs are listed in the following table.

Table 5. AI Engine Interface Events
Event Number AI Engine Version Event Name Comment
74 AI Engine Port_Idle_0 Event generated when specified PLIO port is idle.
75 AI Engine Port_Running_0 Event generated when specified PLIO port is running.
76 AI Engine Port_Stalled_0 Event generated when specified PLIO port is stalled.
77 AI Engine Port_TLAST_0 Event generated when specified PLIO port is transmitting a TLAST signal.

Events generated by the AI Engine ML interface and their corresponding IDs are listed in the following table.

Table 6. AI Engine-ML Interface Events
Event Number AI Engine Version Event Name Comment
77 AI Engine ML Port_Idle_0 Event generated when specified PLIO port is idle.
78 AI Engine ML Port_Running_0 Event generated when specified PLIO port is running.
79 AI Engine ML Port_Stalled_0 Event generated when specified PLIO port is stalled.
80 AI Engine ML Port_TLAST_0 Event generated when specified PLIO port is transmitting a TLAST signal.