Say the Initiator did the read request with 16 beats. Does AXI standard require the response to come in the same response or it can come in 16 separate single transactions?
The question comes from the context of SoC architecture with say AXI4 Initiator is connected through the NOC to AXI-lite. Or another version is when the transaction turns to be a slit one between different Targets. Should the NOC combine all the responses to create the same burst size as Initiator requested or this is not mandatory?
Thanks,
Khach
Thanks for the detailed response. Yes, this is indeed where my confusion is. Looking at your example:
<<
So if you had an incrementing burst signaled on AWBURST, AWSIZE was 2 bytes, AWADDR indicated a starting address of 0x2, and AWLEN indicated 4 transfers, all on a 32-bit data bus, the possible maximum valid byte lanes indicated on WSTRB could only be 4'b1100, 4'b0011, 4'b1100 and 4'b0011 for the sequence of writes (first transfer to the upper half of the 32-bit bus, the second to the lower half, and alternating for the duration of the transaction).
>>
Now, say, the WSTRB came as 4'b1111, 4'b1111, 4'b1111 and 4'b1111. This is a non-sense, but let's keep this extreme for the sake of understanding. Is not this more that was initially booked to be allocated?
Or you are saying the originator must do it as 4'b1100, 4'b0011, 4'b1100 and 4'b0011 and never the way I shown above?
Referring to my answer above:
Christopher Tory said:For a write, AWADDR, AWLEN and AWSIZE define the maximum number of bytes that could be written. WSTRB defines the bytes that are actually valid to write.
If WSTRB indicates bytes as being valid which are defined as not valid by the above signals, then this is a hardware protocol violation.
As described in A4.2.1 of the AXI.K Spec:
"• Outside of the transaction container all write strobes must be LOW."
So using the example above, WSTRB can never be 4'b1111 for any transfers.
4'b1100, 4'b0011, 4'b1100 and 4'b0011 indicates the maximum number of bytes that can be valid for these AW attributes. Any of the WSTRB bits that are 1 can also be 0 if the manager does not wish to write these bytes.
Thanks for all the responses. This was very helpful!