This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AXI3: Out of order write transaction

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

Parents
  • Maybe to your first question, but no to your example.

    Interleaving allows you to send WID transfers for a number of outstanding AW transfers, BUT....

    ...the AXI3 spec described the following (seen in all AXI spec releases up to and including version F)...

       "For a slave that supports write data interleaving, 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."

    So you can have interleaved write data transfers (with different IDs), and they can complete out of order such that a later issued AW transfer can see the WLAST transfer before WLAST for an earlier issued AW transfer, BUT the first W channel transfers must follow in the order the AW transfers were issued (not as in your example).

    You could change your example to have the following W channel line, and this time it is legal...

    W channel: WID0_0, WID0_1, WID1_0, WID0_2, WID1_1, WID1_2, WID1_3, WID0_3

    The WID1_0 transfer can only appear some time after the WID0_0 transfer (first data requirement).

    WID1_3 can complete before WID0_3, which is the "out of order" completion.

Reply
  • Maybe to your first question, but no to your example.

    Interleaving allows you to send WID transfers for a number of outstanding AW transfers, BUT....

    ...the AXI3 spec described the following (seen in all AXI spec releases up to and including version F)...

       "For a slave that supports write data interleaving, 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."

    So you can have interleaved write data transfers (with different IDs), and they can complete out of order such that a later issued AW transfer can see the WLAST transfer before WLAST for an earlier issued AW transfer, BUT the first W channel transfers must follow in the order the AW transfers were issued (not as in your example).

    You could change your example to have the following W channel line, and this time it is legal...

    W channel: WID0_0, WID0_1, WID1_0, WID0_2, WID1_1, WID1_2, WID1_3, WID0_3

    The WID1_0 transfer can only appear some time after the WID0_0 transfer (first data requirement).

    WID1_3 can complete before WID0_3, which is the "out of order" completion.

Children