NoC Deadlock Avoidance - 1.1 English - PG313

Versal Adaptive SoC Programmable Network on Chip and Integrated Memory Controller 1.1 LogiCORE IP Product Guide (PG313)

Document ID
PG313
Release Date
2024-11-13
Version
1.1 English

Connections through the NoC use a shared set of routing resources from source to destination, and it is possible that more than one interrelated connection could share one or more common resources. This leads to the possibility of deadlock. An example of how deadlock can be avoided is shown in the following figure.

Figure 1. NoC Deadlock Avoidance Example

As shown in the illustrated example, data from AXI Sources 1 and 2 routes through the NoC to two separate AXI Destinations, then gets combined by some logic at the destination. If the combining logic depends on synchronization between the sources, it is possible for the two data sources to get out of sync with one another. In this example, FIFOs have been added to help resynchronize the data at the destination. However, if one FIFO fills, AXI Dest 1 in this example deasserts READY. This causes back pressure in the NoC. At the shared NPS in the middle, back pressure on the output stops both inputs. At this point the NoC is deadlocked. The combining logic at the destination is stuck waiting for traffic from AXI Source 2, but it is blocked by the back pressure from AXI Dest 1.

To avoid this deadlock, add extra logic to detect when the FIFOs are approaching full and a feedback mechanism to throttle traffic at the source. In the example above, this logic would detect that the FIFO on AXI Dest 1 was nearing full and signal to AXI Source 1 to stop traffic requests to allow traffic from AXI Source 2 to flow through. As more data flows through from AXI Source 2, FIFO 1 will drain, at which point the feedback can allow more traffic to flow from AXI Source 1.

Note: While this example shows a single shared NPS, it is possible that multiple NPS and routes could be shared between interrelated paths.