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.

66AK2H12: Hyperlink remote register configuration issue

Part Number: 66AK2H12

We connected 2 K2H12 DSP via Hyperlink cables and RTM BOC .

in each the code enables the power domain and setup the SERDES.

The 1st DSP try to configure the register in remote but then the code crash and a message error says that the core is hung

What could be the problem?

TI example that is given as hyplnk_K2HC66BiosExampleProject only works in Loopback mode. In normal mode it never works, it waits at the point that "Waiting 5 seconds to check link stability
Link seems stable
About to try to read remote registers" is written to console.

As we didnt understand the origin of the problem, same project is tested with 2 Shannon connected via a Hyperlink cable and it worked.

We customized that example in to a library and tried with the lowest speed possible (3p125G) , and this worked with 2 K2H12 Kepler via CPU or DMA transfer. However when we increase the speed (to 6p25G or 12p5G) the code got stuck at the point i mentioned above, and core gets hung.

We searched at that link a solution but there is no any answer provided by TI team.  e2e.ti.com/support/processors/f/791/p/342975/1211227?pi320627=1

Can you help us?

  • Hi,

    If I understood correctly, you have the test of Hyperlink between 2 K2H EVMs:
    1) with rate of 3.125Gbps x 4 lanes, you have that worked fine.

    Then, with the same setup:
    - the same EVMs
    - the same Hyperlink port (e.g. port 0 or port 1),
    - the same BOC,
    - the same Hyperlink cable.

    6.25Gbps you got crash. Can you clarify how do you setup 3.125Gbps and 6.25Gbps? In the hyplnkLLDCfg.h, correct?

    /*****************************************************************************
    * Select a serial rate
    *****************************************************************************/
    //#define hyplnk_EXAMPLE_SERRATE_01p250
    #define hyplnk_EXAMPLE_SERRATE_03p125
    //#define hyplnk_EXAMPLE_SERRATE_06p250
    //#define hyplnk_EXAMPLE_SERRATE_07p500
    //#define hyplnk_EXAMPLE_SERRATE_10p000
    //#define hyplnk_EXAMPLE_SERRATE_12p500

    Then, this is not a software issue but the hardware connection quality issue. You may need to swap some cable or board. In most setup, we saw 6.25Gbps worked, but 10Gbps failed, for EVM to EVM connections.

    You can set a breakpoint at the code:

    System_printf ("============== begin registers after initialization ===========\n");
    hyplnkExamplePrintStatusReg(&status);
    hyplnkExamplePrintLinkStatusReg(&linkStatus);
    hyplnkExamplePrintControlReg(&control);
    System_printf ("============== end registers after initialization ===========\n");
    System_printf ("Waiting 5 seconds to check link stability\n");
    hyplnkExampleCheckOneStat (hyplnk_LOCATION_LOCAL, "before stability wait", 0);
    wait_start = hyplnkExampleReadTime(); =============================> set a breakpint

    Then use the CCS memory window browser to check the Hyperlink register offset 0x58: Link Status Register (Base Address + 0x58)
    If it is 0xFDF0BDF0, it is a stable link. Otherwise, it is a unstable one, and when you try to read the remote side you will get crash/hang.

    We have customer product with 10Gbps Hyperlink worked reliably with dedicated connections between SOCs.

    Depending your goal here why you need to test Hyperlink at 6.25 Gbps or higher, you can performance Serdes tuning to see if work for your EVM setup, but that is a complicated process and a separate topic.

    Regards, Eric