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.

DS560DF410EVM: Bit Error Rate measurements with a PAM4 data stream

Part Number: DS560DF410EVM


Tool/software:

Hello team,

we try to setup a bit error rate measurement at the DS560DF410EVM. Channel 0 is used as generator, channel 1 is used as checker. With a NRZ signal it is working. When changing with this working BER at NRZ "only" the format to PAM4 following error message occurs at the log window of the GUI:

#Executing .. selection
#Start Time 2025-07-08 14:16:30.476000
------------READBACK CHANNEL INIT STATUS----QUAD : 0-----CH : 0-----
CHANNEL_INIT_STATUS : 7
HEART_BEAT : 1
CONFIGURATION_SELECTED : 0
Channel initialization done. Monitoring channel for signal loss detection
CDR locked and channel initialization completed successfully
------------READBACK CHANNEL INIT STATUS----QUAD : 0-----CH : 1-----
CHANNEL_INIT_STATUS : 7
HEART_BEAT : 8
CONFIGURATION_SELECTED : 0
Channel initialization done. Monitoring channel for signal loss detection
CDR locked and channel initialization completed successfully
#Done executing .. selection
#End Time 2025-07-08 14:16:31.183000
#Execution Time = 0.707000017166 s
#================ ERRORS:0, WARNINGS:0 ================#
#======
#Executing .. selection
#Start Time 2025-07-08 14:16:52.336000
Got MACRO_ERROR : EXECUTION_ERROR
MACRO_OPCODE : 0xd4 MACRO_NAME : BER_CUMULATIVE_READBACK
Macro Error Status Interpretation is Undefined in MacroLib
ERROR INTERPRETATION is : Not Interpreted
BER_CUMULATIVE_READBACK-Macro
{'MACRO_TIME_TAKEN': 0.03500008583068848, 'ERR_INFO': 'Not Interpreted', 'ERR_STATUS': {'MACRO_NAME': 'BER_CUMULATIVE_READBACK', 'MACRO_ERROR_OPCODE': '0xd4', 'MACRO_ERROR': True, 'MACRO_ERROR_TYPE': {'INVALID_OPCODE': False, 'OPERAND_ERROR': False, 'EXECUTION_ERROR': True, 'OPCODE_NOT_ALLOWED': False}, 'MACRO_ERROR_CODE': [1, 0]}}
#Error: float division by zero
# "selection", line 7, in
# File "C:\Users\s00110469\Documents\Texas Instruments\DS560Latte\lib\\DS560Libraries\\DS560LibraryV5p0\mQuadLib.py", line 865, in prbsBERCheckCumulative
# resultArr=self.prbsBERCheckFuncCumulative(chIdx,polySel,polarity,symbolWindow,serEn,prbsQEn,levelMapChange,levelMapArr,readResultMacro,enable,disable);
# File "C:\Users\s00110469\Documents\Texas Instruments\DS560Latte\lib\\DS560Libraries\\DS560LibraryV5p0\resourceFiles\mFuncDecorator.py", line 86, in inDecorator
# a=func(*args,**kwargs)
# File "C:\Users\s00110469\Documents\Texas Instruments\DS560Latte\lib\\DS560Libraries\\DS560LibraryV5p0\mQuadLib.py", line 822, in prbsBERCheckFuncCumulative
# BER=1.0*num_total_errors/TotalBits;
# ZeroDivisionError: float division by zero
#
#
#Done executing .. selection
#End Time 2025-07-08 14:16:53.932000
#Execution Time = 1.59599995613 s
#================ ERRORS:5, WARNINGS:0 ================#

  So, not clear what is going on here. Any idea?

Thanks, Stephan 

  • Hi Stephan,

    Apologies for the delay.  Sometimes when using PAM4, the symbol mapping is not correct (typically polarity or gray coding issue), which can result in an error.  I don't recall if this is the same error or if that looks different, so I'm planning to try to reproduce on my end.

    For comparison, do you have a log you might be able to share from the working NRZ case?

    Thanks,

    Drew

  • Hello Drew,

    more tests in the PAM4 BER Mode regarding 

    Grey Code: enable/disable

    Polarity: neg/pos

    reveal no change in the error messages in the log window.

    Please find - as requested - in the following the log output running a NRZ BERT:

    #======
    #Executing .. selection
    #Start Time 2025-07-11 09:07:22.001000
    ------------READBACK CHANNEL INIT STATUS----QUAD : 0-----CH : 0-----
    CHANNEL_INIT_STATUS : 7
    HEART_BEAT : 1
    CONFIGURATION_SELECTED : 0
    Channel initialization done. Monitoring channel for signal loss detection
    CDR locked and channel initialization completed successfully
    ------------READBACK CHANNEL INIT STATUS----QUAD : 0-----CH : 1-----
    CHANNEL_INIT_STATUS : 7
    HEART_BEAT : 1
    CONFIGURATION_SELECTED : 0
    Channel initialization done. Monitoring channel for signal loss detection
    CDR locked and channel initialization completed successfully
    #Done executing .. selection
    #End Time 2025-07-11 09:07:22.682000
    #Execution Time = 0.680999994278 s
    #================ ERRORS:0, WARNINGS:0 ================#
    #======
    #Executing .. selection
    #Start Time 2025-07-11 09:07:35.349000
    Total Bits : 1677248000
    Num Errors : 0
    BER : 0.0
    Total Bits : 4439456000
    Num Errors : 0
    BER : 0.0
    Total Bits : 7203808000
    Num Errors : 0
    BER : 0.0
    #Done executing .. selection
    #End Time 2025-07-11 09:07:38.447000
    #Execution Time = 3.09800004959 s
    #================ ERRORS:0, WARNINGS:0 ================#

    Is this helpful? Please advice.

    Thanks, Stephan 

  • Hi Stephan,

    Thanks for trying gray code and polarity testing.  I'll try to reproduce on my side and will get back to you.

    Thanks,

    Drew

  • Hello Drew, 

    are there any news from your side regarding the PAM4 BER behaviour of the eval board?

    Thanks, Stephan 

  • Hi Stephan,

    I tried the PAM4 BER checking functionality on my side and didn't run into the same issue you did.

    Are you using the standard PRBS check function or the cumulative PRBS check function?

    Thanks,

    Drew

  • Hello Drew,

    both functions are used in the usefulFunction.py module showing an error in the log - when PAM4 is used, NRZ is running perfect.

    As you know we switched to the DS560_V5P0 lib.

    Any idea what the difference could be betwenn the setup here and at TI.

    Thanks, Stephan