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
Khach said: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 AR request attributes describe exactly how the responses must be returned.
ARLEN specifies how many transfers are required, where the last transfer in the sequence will have RLAST asserted.
ARSIZE specifies how much data each transfer must carry.
For example, if ARLEN = 0x3, then you cannot return 4 read transfer each with RLAST asserted as this would be seen as 4 separate transaction responses to 4 different requests with ARLEN = 0x0.
Thanks for the response. What happens in case
1. the destination address is split into multiple targets, that can respond in different times
2. The Target does not support AXI, but just AXI-lite.
Is this the responsibility of NOC to collect all the data back from targets, align them and send the response back to the Initiator matching the same burst size as it was requested?
Thanks again.
Yes, it's the responsibility of the NoC in this case.
One way to think of AXI is that it's primarily defining the interface to interface connection. The connection from your manager to the interconnect is a single AXI interface that must obey the AXI rules.
Your manager doesn't necessarily have any knowledge of exactly what is happening within the NoC - all it knows is that it has made a request with specific attributes (e.g. a specific ARLEN and ARSIZE) and that it expects to get data back in this format.
Thanks a lot. That makes sense. Let me ask a final question, an unrelated one though.
Why do I need both ARLEN and ARSIZE. Can't one be deduced from the other?
Both are needed, and you cannot deduce one from the other.
An AXI transaction is made up of transfers.
ARLEN defines how many transfers are required for this transaction. ARSIZE defines how many bytes are in each transfer. ARLEN x ARSIZE gives the total amount of data being requested.
Thanks again. Does this mean that all the transfers within transaction must have the same number of bytes?