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

AXI5 : Read data chunking

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 ?

  • (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.

    (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.  

    (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.