Read across for one protocol; read down to see how each removes the same cycles in a different way.
AXI | PCI Express | AMBA CHI | On-chip network | DCLink | |
|---|---|---|---|---|---|
Channel dependency rules | Valid must not wait for ready; BVALID only after address and last data | Ordering table: posted and completions pass blocked non-posted | Per-channel rules | Per-VC flow control | Valid/ready rule (step 2) |
Message classes | Separate request and response channels | Posted, non-posted, completion credits | Separate request, response, snoop and data channels | VCs per message class | Request and completion buffers (step 8) |
Consumption | Managers must eventually accept responses | Endpoints advertise infinite completion credits | Responses always sunk | Network interfaces sink responses | Completions always accepted |
Routing deadlock | — | Tree topology: no cycles | Fabric-specific | XY routing, or datelines and escape VCs | Point to point |
Full target | Back-pressure (ready low) | Credits: never sent without room | Retry plus protocol credit | Back-pressure per VC | Credits |
Timeouts | Implementation-defined | Completion timeouts, 50 µs to 64 s | Implementation-defined | Implementation-defined | — |
Every protocol separates requests from responses and requires responses to be consumed: message-dependent deadlock is universal.
Routing deadlock is avoided by topology or routing rules: trees have no cycles; meshes use XY; rings use datelines.
A full target is handled by back-pressure, pre-allocation (credits) or retry with a guarantee, never by plain retry at scale.