Hi,
For AXI3 outstanding transactions with different IDs, can WID be sent in different order of AWID?
For example, two write transactions with ID 0 and ID1 and the burst length is 4.
AW channel: AWID0, AWID1
W channel: WID1_0, WID1_1, WID1_2, WID1_3, WID0_0, WID0_1, WID0_2, WID0_3
Sincerely,
Alan, 2022.10.19
Thanks for clearing my confusion.
Can I say out of order transaction is based on data interleaving?
Without data interleaving support, all data items must be in the order of the address for the transactions.
With data interleaving support, write data interleaving imposes an additional constraint with different IDs that "the order that it receives the first data item of each transaction must be the same as the order that it receives the addresses for the transactions" like the example you provided above.
With data inteleaving support, read data channel could be in any order with different IDs.AR channel: ARID0, ARID1R channel: RID1_0, RID1_1, RID1_2, RID1_3, RID0_0, RID0_1, RID0_2, RID0_3R channel: RID1_0, RID0_0, RID1_1, RID1_2, RID0_1, RID1_3, RID0_2, RID0_3
Not quite. You can have "out of order" completion of write transactions without "interleaving". You could have all the W channel transfers performed in order (no interleaving), but the B channel responses returned out of order, so that would still be an out of order write transaction completion.
But without interleaving support, all W data transfers must be in the order the AW transfers were sent.
But I wouldn't spend too much time looking at write data interleaving as it was only in the AXI3 protocol, and the newer AXI4 and AXI5 protocols do not support write data interleaving.
For read data interleaving, yes, there is no "first data" restriction like there is for the AXI3 write transactions, so the R channel transfers (using different IDs) can start and end in any order. Both your read examples are perfectly valid.
Thanks for clear explanations.