This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6638 SRIO LSU Flush not working

Hi Support,

 

Test case is like 1 DSP "C6638" communicating with other DSP "C6482" over SRIO Switch.

I am simulating a test case where a routing table entry is missing such that transaction timeout will occur.

 

My observation is that after certain transactions the LSU status is FULL and remains that only.

I have tried to do the LSU flush, restart, cancel with the required privID "core0  = 0" but nothing has worked.

 

I am avoiding the SRIO reinitializing as the C6638's 8 cores will have a respective LSU and the cores working is independent of each other.

 

How can I free my LSU and start working normally.

 

Regards,

Manav

 

  

  • Hi,

    Write of ‘1’ to the FLUSH bit for the LSU. All transactions originating from the same SRCID that are present in the shadow registers for the specific LSU will be flushed. This can take more than one cycle to do the flush. The flush bit and the restart bits are really the write version of the LSU_Reg6.

    Thanks,
  • Hi Ganapathi,

    Thanks for the reply.

    Yes I have already tried with Write of ‘1’ to the FLUSH bit for the LSU with the required SRCID.

    The problem is like I am getting the continuous packet retry symbol from the switch.

    Configured with LSU 0 with 7 shadow registers, what I can see that after 7 Nread transactions the LSU goes FULL.
    and the RIO ERR STAT register is set with :- 0x001A0002.
    And RIO_LM_RESP :- 0x00000045

    1. Do you I can recover from this state ?

    2. What is the behaviour for the NRead transactions ?? will they get dropped after some time or they will block the resources
    if they don't get the response ?


    Regards,
    Manav
  • Hi,

    You may receive input/output error-encountered for a variety of reasons (link misalignment, unexpected symbols received, etc...). If you are in the error encountered state the port will still automatically try to recover, but when you are in the error stopped state you must manually perform a reset or resyncrhonization procedure to clear the error.

    Some of SRIO error recovery workaround are mentioned in below threads.

    e2e.ti.com/.../45935

    e2e.ti.com/.../675812

    Thanks,
  • Hi Ganapathi,

    This is helpful.

    My test case is like I have not configured the SWITCH routing tables.
    And I am sending the NREAD request to the other connected DSP.

    Timeout occurs as expected. But the problem is the NREAD transaction blocks the resources and
    after multiple NREAD requests the LSU gets FULL.

    I have tried using the LSU Flush but it does not work.

    The understanding I have made is like , we load the LSU shadow registers and after writing to LSU register 5, the transaction is fired.
    You can queue the transactions depending upon the free shadow registers you have. ( Is the understanding correct ? )

    1. Now my question is when does the shadow register gets free ?

    2. If SRIO NREAD/NWRITE_R transaction is timeout , what does happen to the shadow register ?


    Regard,
    Manav