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.

SRIO issue between C6678 and altera fpga EP4SGX360KF43I4

Other Parts Discussed in Thread: TMS320C6678

We are facing a problem some times in SRIO IP initialization.

Issue details given below.

Issue: Sometimes SRIO Link between FPGA and DSP is not properly initialized (PORT_OK bit in DSP status register is not set). Whenever this state happens, when reset is given to FPGA alone (without any change in state of DSP) by pressing FPGA reset manually (through PUSH Button), issue seems to be solved. i.e. SRIO link gets up and doorbell is coming properly.

During this state DSP is waiting in while loop (observed in JTAG mode) for the srio initialization from FPGA. This is occurring randomly.

During the issue occurence, we have enabled Signal tap for FPGA SRIO IP signals (port_initialized & Port_error) and observed that port initialized is not set to high. It is low. After giving FPGA reset manually as mentioned above, port_initialized signal goes to high and process continues.

Please provide us any pointers for the issue resolution

We are using Altera FPGA Device: EP4SGX360KF43I4 DSP TI device: TMS320C6678

We are using 1x-serial mode for SRIO. Lane number is 1 and lane rate is 2.5Gbps.

Power up sequence in FPGA and DSP (both in JTAG mode):

Step 1: Board power-ON.

Step 2. FPGA image loaded.

Step 3. FPGA starts running.

Step 4.  DSP image loaded.

Step 5.  DSP starts running.

Step 6.   DSP will give SRIO start address, doorbell configuration to FPGA.

Step 7.  FPGA will give reset to DSP upon running SRIO for 3 seconds.

Step 8.       FPGA and DSP will get soft-reset.

Step 9.       DSP gets reloaded.

Step 10.      DSP will give SRIO start address, doorbell configuration to FPGA.

Step 11.      Data transmission via SRIO gets start between FPGA and DSP.

Power up sequence in FPGA and DSP (both in Flash mode):

1.       Board power-ON.

2.       FPGA and DSP images configured from Flash.

3.       FPGA and DSP starts running.

4.       DSP will give SRIO start address, doorbell configuration to FPGA.

5.       FPGA will give reset to DSP upon running SRIO for 3 seconds.

6.       FPGA and DSP will get soft-reset.

7.       DSP gets reloaded from Flash.

8.       DSP will give SRIO start address, doorbell configuration to FPGA.

9.       Data transmission via SRIO gets start between FPGA and DSP.

DSP Micro level Power-up sequence:

Step 1:  Set SRIO power domain to ON.(Default it would be off to save power consumption and thermal stability)

Step 2: Enable the clock for SRIO. Clock here refers to reference clock for serdes module (SRIO's transceiver).

Step 3: Start the state transition for module by setting GO bit in PSC command register. Implementation for enable power and clock for a module inside DSP requires 2 steps.        

a. Setting which state to enter next                                                                                                                                b. set go bit in the PSC register

Step 4: Wait for state transition to complete

Step 5: Disable all the blocks inside SRIO and set boot complete to 0. DSP SRIO consists of 9 logical blocks. We are disabling and enabling the logical blocks(LSUs, RXUs, MAUs, Data Path 0,1,2,3) inside DSP.

Step 6: Enable the blocks

Step 7: Configure the SRIO mode and line rate

Step 8: Configure PE features and Operational capability

Step 9: Set Host and destination device ID and TLM registers

Step 10: Enable the ports and configure port related registers

Step 11: Set boot complete and check for SRIO Port OK in error stat register.

  • Hi Ravishankar,

    I have checked your power-up sequence. DSP SRIO initialization steps are correct.

    Have you using TI provide Break Out Card for connect the FPGA and DSP?

    I think the ports are not properly connected to end device. That only you got "port not ok" error. 

    Please take a look at TI MCSDK SRIO example projects and readme.txt

    MCSDK Path: \ti\pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\srioIpcChipToChipExample\

    Thanks,

  • Hi Ravishankar,

    Any update. Help us to close the thread.

    Thank you.

  • We checked the ports to be connected properly to end device. Like mentioned previously this is a very random error. It doesn't occur all the times. We also checked the TI MCSDK SRIO examples but did not get a pointer towards the current issue resolution.

     

    Some more points and clarifications required:

    Can the initialization failure be related to improper synchronization of released reset between SRIO IP of FPGA and DSP? We are not sure how to ensure the release reset of SRIO module synchronously between DSP and FPGA.

  • Hi ,

    I have not worked on similar setup. TI provide board to board SRIO transfer example project, Please take a look at TI MCSDK SRIO example projects and readme.txt.

    MCSDK Path: \ti\pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\srioIpcChipToChipExample\

    Thanks,

  • Hi,

    we are having a similar setup right now, using an Arria V Altera FPGA and a TI C6678 device. We are booting up in 2x lane mode.
    Like the author of the original post, we have random issues with Port OK not beeing set after boot (and Port uninit set).
    Sometimes resetting the dsp again is solving the problem, sometimes resetting the altera rapid io ipcore is, sometimes only reconfiguration of the FPGA is working.
    The status of the lanes is fine, I have a sync on both lanes. Comparing the srio registers in the good and bad case doesn't show any significant differences, apart from a missing port ok and the resulting differences.
    Did you actually solve the issue?

    Regards,
    Andreas