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

Does an AXI4 master have to assert the correct WSTRB for unaligned transfers?

Take the unaligned transfer on page A3-55 in the "AMBA AXI and ACE Protocol Specification" with address 0x07 as example.

Bus width and data transfer width should be both 32 bits. First write should be to address 0x07. This would lead to bytes written to adresses 0x04 to 0x06 to be invalid so the correct write strobe from the master should be 0x08. Would it be legal for the master to set WSTRB to 0x0F and the slave has mark the lower three bytes as invalid?

Regards

Martin

Parents
  • Hello Martin,

    >Would it be legal for the master to set WSTRB to 0x0F and the slave has mark the lower three bytes as invalid?

    No, the master must not do that. This is stated on page A3-54:

    -------- Note --------

    The information on the low-order address lines must be consistent with the information on the byte lane strobes.

    The slave is not required to take special action based on any alignment information from the master.

    -------------------------

    So in this example, since:

        Address = 0x7

        Transfer size = 32-bits

        Bus width = 32-bits

    ... the only usable byte lane for the first transfer is [31:24], so WSTRB can only be asserted for that byte lane. No other lanes can be asserted.

    Xingguang

Reply
  • Hello Martin,

    >Would it be legal for the master to set WSTRB to 0x0F and the slave has mark the lower three bytes as invalid?

    No, the master must not do that. This is stated on page A3-54:

    -------- Note --------

    The information on the low-order address lines must be consistent with the information on the byte lane strobes.

    The slave is not required to take special action based on any alignment information from the master.

    -------------------------

    So in this example, since:

        Address = 0x7

        Transfer size = 32-bits

        Bus width = 32-bits

    ... the only usable byte lane for the first transfer is [31:24], so WSTRB can only be asserted for that byte lane. No other lanes can be asserted.

    Xingguang

Children