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.
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.
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.
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.
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.
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.
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. |