Hi,
I am implementing a ACE5Lite subordinate (slave) & have a question regarding Read data chunking (RDC). RDC requires subordinate to drive read data in chunks of 128 bit aligned on RDATA bus as per address. I am not clear about behavior of other R channel signals (RUSER,RPOISON,RTRACE).
(Question 1) For RTAG , spec says "For read transactions that use read data chunking, only tags which correspond to valid chunk strobes are required to be valid." Does it mean following ?
Chunk1 :RDATA (256 bit) = <empty 128 bit lane> <128 bit data> RCHUNKSTRB (2 bit) = 2'b01 RTAG (8 bit) = < empty 4 bit lane > < 4 bit tag >
Chunk2 :RDATA (256 bit) = <128 bit data> <empty 128 bit lane> RCHUNKSTRB (2 bit) = 2'b10 RTAG (8 bit) = < 4 bit tag > < empty 4 bit lane >
(Question 2)Do we follow same behavior for RPOISON / RUSER ? Or are these signals repeated for all chunks for a particular beat ? Spec doesn't say anything about this !
(Question 3)I am assuming that same RRESP,TRACE value is used for all chunks related to a beat.RID , RLOOP , RIDUNQ should remain same for all chunks of a transaction.Am I correct in above 2 statements ?
tanX91 said:(Question 1) For RTAG , spec says "For read transactions that use read data chunking, only tags which correspond to valid chunk strobes are required to be valid." Does it mean following ? Chunk1 :RDATA (256 bit) = <empty 128 bit lane> <128 bit data> RCHUNKSTRB (2 bit) = 2'b01 RTAG (8 bit) = < empty 4 bit lane > < 4 bit tag > Chunk2 :RDATA (256 bit) = <128 bit data> <empty 128 bit lane> RCHUNKSTRB (2 bit) = 2'b10 RTAG (8 bit) = < 4 bit tag > < empty 4 bit lane >
Correct.
tanX91 said:(Question 2)Do we follow same behavior for RPOISON / RUSER ? Or are these signals repeated for all chunks for a particular beat ? Spec doesn't say anything about this !
Poison will correspond to the valid chunk strobes in the same way as the Tag. From Section E2.1in the AXI/ACE Specification::
"The validity of the Poison signaling is identical to the validity of the associated data."
For RUSER, there is no required relationship between the validity of RDATA and RUSER. The Specification recommends that the upper bits of RUSER transport per-beat read data information, but the required validity of RUSER is entirely system dependent.
tanX91 said:(Question 3)I am assuming that same RRESP,TRACE value is used for all chunks related to a beat.RID , RLOOP , RIDUNQ should remain same for all chunks of a transaction.Am I correct in above 2 statements ?
It's not required that RRESP is same across all chunks. From E1.1.8.4 in the AXI/ACE Specification:
"Read transactions have multiple beats of data. The value of RRESP is not constrained within a transaction, so each beat can take any legal value."
RTRACE has no required behaviour by the Specification. It would be recommended that all read responses have the same RTRACE value.
RID, RLOOP and RIDUNQ must be the same across all chunks.