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.

Strange results when running Hyperlink example project on C6678 in loopback mode.

Other Parts Discussed in Thread: TMS320C6678

Hi everyone,


I'm currently running the hyprlnk_exampleProject from PDK 1.1.2.6. I am working with a single TMS320C6678 evaluation board in loopback mode.


The program is running successfully but I am wondering about the results I get from this example program. As far as I understand, it performs a certain amount of various token transfer via Hyperlink on loopback mode and evaluate the number of cycles needed to do so.

My issue is : whatever the transfer speed (1.25Gbauds or 6.25Gbauds for ex.) I do always get the same result from the test, something like :

=====

Link Speed is 4 * 6.25 Gbps
Passed 65536 tokens round trip (read+write through hyplnk) in 9231 Mcycles
Approximately 136296 cycles per round-trip


=====

The question is : I am doing something wrong ?

Thanks :)

  • Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com). Please read all the links below my signature.

    We will get back to you on the above query shortly. Thank you for your patience.

    Thank you.

    PS: We strongly recommend you to create new e2e thread for your queries instead of following up on an old/closed e2e thread, new threads gets more attention than old threads and can provide link of old threads or information on the new post for clarity and faster response.

  • Dear Timothy,

    I ran the same example with some different speeds and got the following results and I could see difference.
    Can you please check out ?

    === this is not an optimized example ===
    Link Speed is 4 * 6.25 Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 16222 Mcycles
    Approximately 247535 cycles per round-trip

    === this is not an optimized example ===
    Link Speed is 4 * 1.25 Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 19453 Mcycles
    Approximately 296841 cycles per round-trip


    === this is not an optimized example ===
    Link Speed is 4 * 12.5 Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 15944 Mcycles
    Approximately 243292 cycles per round-trip
  • Dear Titus,

    Thanks for your reply.

    I re-ran the some tests to compare with your results. I tried 1.25Gbps,  6.25Gbps and 12.5Gbps. 12.5Gbps did not end successfully :

    === this is not an optimized example ===

    Link Speed is 4 * 1.25G Gbps

    Passed 65536 tokens round trip (read+write through hyplnk) in 8996 Mcycles

    Approximately 137268 cycles per round-trip

    === this is not an optimized example ===

    Link Speed is 4 * 6.25 Gbps

    Passed 65536 tokens round trip (read+write through hyplnk) in 8929 Mcycles

    Approximately 136260 cycles per round-trip

    At 12.5Gbps, the log says :

    ============== end registers before initialization ===========

    Local immediately after link up WARNING: ECCErrors.sglErrCor = 5

    Local immediately after link up WARNING: ECCErrors.sglErrCor = 5

    Fatal error detected

    Local fatal isr status.lError = 1

    Local fatal isr status.rError = 1

    Local fatal isr ECCErrors.dblErrDet = 1

    So I tried 10bps :

    === this is not an optimized example ===

    Link Speed is 4 * 10.0 Gbps

    Passed 65536 tokens round trip (read+write through hyplnk) in 8927 Mcycles

    Approximately 136224 cycles per round-trip

    -------------------------------

    As we can see, except for 12.5Gpbs, I get similar results from my setup whatever the Hyperlink speed.

    Here is the macro settings in my hyplnkLLDCfg.h

    #define hyplnk_EXAMPLE_REFCLK_USE_PLATCFG

    #define hyplnk_EXAMPLE_LOOPBACK

    #define hyplnk_EXAMPLE_ALLOW_4_LANES

    #define hyplnk_EXAMPLE_SERRATE_10p000

    #define hyplnk_EXAMPLE_ASYNC_CLOCKS

    #define hyplnk_EXAMPLE_EQ_ANALYSIS

    #define hyplnk_EXAMPLE_ERROR_INTERRUPT

    and in hyplnkPlatCfg.h

     #define hyplnk_EXAMPLE_INTC_OUTPUT       (32 + 11 * DNUM)

     #define hyplnk_EXAMPLE_COREPAC_INT_INPUT CSL_GEM_INTC0_OUT_32_PLUS_11_MUL_N_OR_INTC0_OUT_32_PLUS_11_MUL_N_MINUS_4

     #define hyplnk_EXAMPLE_COREPAC_VEC       CSL_INTC_VECTID_4

     #define hyplnk_EXAMPLE_NUM_CORES         8

     #define hyplnk_EXAMPLE_CPU_SPEED_MHZ     1000

     #define hyplnk_EXAMPLE_HYPLNK_REF_KHZ    312500

    Regards

  • Dear Titus,

    Thanks for your reply.

    I re-ran the some tests to compare with your results. I tried 1.25Gbps, 6.25Gbps and 12.5Gbps. 12.5Gbps did not end successfully :

    === this is not an optimized example ===
    Link Speed is 4 * 1.25G Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 8996 Mcycles
    Approximately 137268 cycles per round-trip

    === this is not an optimized example ===
    Link Speed is 4 * 6.25 Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 8929 Mcycles
    Approximately 136260 cycles per round-trip

    At 12.5Gbps, the log says :
    ============== end registers before initialization ===========
    Local immediately after link up WARNING: ECCErrors.sglErrCor = 5
    Local immediately after link up WARNING: ECCErrors.sglErrCor = 5
    Fatal error detected
    Local fatal isr status.lError = 1
    Local fatal isr status.rError = 1
    Local fatal isr ECCErrors.dblErrDet = 1


    So I tried 10bps :
    === this is not an optimized example ===
    Link Speed is 4 * 10.0 Gbps
    Passed 65536 tokens round trip (read+write through hyplnk) in 8927 Mcycles
    Approximately 136224 cycles per round-trip


    -------------------------------
    As we can see, except for 12.5Gpbs, I get similar results from my setup whatever the Hyperlink speed.

    Here is the macro settings in my hyplnkLLDCfg.h
    #define hyplnk_EXAMPLE_REFCLK_USE_PLATCFG
    #define hyplnk_EXAMPLE_LOOPBACK
    #define hyplnk_EXAMPLE_ALLOW_4_LANES
    #define hyplnk_EXAMPLE_SERRATE_10p000
    #define hyplnk_EXAMPLE_ASYNC_CLOCKS
    #define hyplnk_EXAMPLE_EQ_ANALYSIS
    #define hyplnk_EXAMPLE_ERROR_INTERRUPT

    and in hyplnkPlatCfg.h
    #define hyplnk_EXAMPLE_INTC_OUTPUT (32 + 11 * DNUM)
    #define hyplnk_EXAMPLE_COREPAC_INT_INPUT CSL_GEM_INTC0_OUT_32_PLUS_11_MUL_N_OR_INTC0_OUT_32_PLUS_11_MUL_N_MINUS_4
    #define hyplnk_EXAMPLE_COREPAC_VEC CSL_INTC_VECTID_4
    #define hyplnk_EXAMPLE_NUM_CORES 8
    #define hyplnk_EXAMPLE_CPU_SPEED_MHZ 1000
    #define hyplnk_EXAMPLE_HYPLNK_REF_KHZ 312500


    Regards
  • Dear Timothy,
    I'm able to run the hyperlink example with 12.5 speed, try again, make sure that you have restarted the board (power OFF and power ON again)

    PS: As example says, its not an optimized code, also when we work with internal loopback, we don't see much difference rather than board to board loopback.

    You can see different results when you work with board to board loopback .
  • Dear Titus,

    Ok, correct me if I am wrong, you are saying that lack of performance difference is due to loopback mode in this particular sample code. Thus, it is quite unfortunate for me that I cannot get similar results like yours. Interesting fact, I had a talk with a colleague who met the very same case than mine on his own TMS320C6678.
    Is there any other possible cause of that result ? I will keep working on it until I get a second EVM.

    About the 12.5Gbps speed, I followed your advice and to restarted the board but the same error is still showing up :

    Run #1 :

    ============== end registers after initialization ===========
    Waiting 5 seconds to check link stability
    Local before stability wait status.lError = 1
    Local before stability wait status.rError = 1
    Local before stability wait WARNING: ECCErrors.sglErrCor = 41178
    Local before stability wait ECCErrors.dblErrDet = 1

    Run #2 :

    ============== end registers after initialization ===========
    Waiting 5 seconds to check link stability
    Local before stability wait status.lError = 1
    Local before stability wait status.rError = 1
    Local before stability wait WARNING: ECCErrors.sglErrCor = 9803
    Local before stability wait ECCErrors.dblErrDet = 1

    Regards.

  • Dear Timothy,
    I've discussed with internal experts, the C6678 board doesn't support the hyperlink in 12.5 speed. Please do check errata doc.
    Also you can see some difference cycles between different speed when you do board to board mode.