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.

66AK2H14: Bring up Hyperlink on custom board

Part Number: 66AK2H14

Hy TI Support Team,

We are working on a custom board, which has three 66AK2H14 DSP chips. We try to communicate over Hyperlink among the DSPs. We use arago linux distro from MCSDK. I am working on the Hyperlink bring up between DSP0 and DSP1. The DSP0 HP1 port is connected to DSP1 HP0 port. I compiled a Hyperlink test program, which is obtained from the pdk_keystone2_3_01_04_07 package.  This program is configured as follows by the hyplnkLLDCfg.h file:

#define hyplnk_EXAMPLE_REFCLK_156p25

#define hyplnk_EXAMPLE_ALLOW_4_LANES

#define hyplnk_EXAMPLE_SERRATE_03p125

#define hyplnk_EXAMPLE_ASYNC_CLOCKS

First the program runs in loopback mode. On the DSP0 chip the program successfully finishes the test. The DSP1 chip exits with lError and rError.

After this test, I ran the program in non-loopback mode. I managed to communicate between the chips: The program outputs are the following:

#  DSP0 log:

Version #: 0x02010008; string HYPLNK LLD Revision: 02.01.00.08:Aug  5 2019:10:04:37                                          
About to do system setup (PLL, PSC, and DDR)                                                                                 
Power domain is already enabled.  You probably re-ran without device reset (which is OK)                                     
Constructed SERDES configs: PLL=0x00000250; RX=0x0046c495; TX=0x000ccf95                                                     
system setup worked                                                                                                          
About to set up HyperLink Peripheral                                                                                         
============================Hyperlink Testing Port 1                                                                         
========================================== begin registers before initialization ===========                                 
Revision register contents:                                                                                                  
  Raw    = 0x4e902101                                                                                                        
  Scheme = 1                                                                                                                 
  BU     = 0                                                                                                                 
  Func   = 0x0e90                                                                                                            
  RTL    = 4                                                                                                                 
  cust   = 0                                                                                                                 
  revMaj = 1                                                                                                                 
  revMin = 1                                                                                                                 
Status register contents:                                                                                                    
  Raw        = 0x00002004                                                                                                    
  swidthin   = 0                                                                                                             
  swidthout  = 0                                                                                                             
  serialHalt = 1                                                                                                             
  pllUnlock  = 0                                                                                                             
  rPend      = 0                                                                                                             
  iFlow      = 0                                                                                                             
  oFlow      = 0                                                                                                             
  rError     = 0                                                                                                             
  lError     = 0                                                                                                             
  nfEmpty3   = 0                                                                                                             
  nfEmpty2   = 0                                                                                                             
  nfEmpty1   = 0                                                                                                             
  nfEmpty0   = 0                                                                                                             
  sPend      = 1                                                                                                             
  mPend      = 0                                                                                                             
  link       = 0                                                                                                             
Link status register contents:                                                                                               
  Raw       = 0x00000000                                                                                                     
  txPlsReq  = 0                                                                                                              
  txPlsAck  = 0                                                                                                              
  txPmReq   = 0                                                                                                              
  txRSync   = 0                                                                                                              
  txPlsOK   = 0                                                                                                              
  txPhyEn   = 0                                                                                                              
  txFlowSts = 0                                                                                                              
  rxPlsReq  = 0                                                                                                              
  rxPlsAck  = 0                                                                                                              
  rxPmReq   = 0                                                                                                              
  rxLSync   = 0                                                                                                              
  rxPhyEn   = 0                                                                                                              
  rxPhyPol  = 0                                                                                                              
Control register contents:                                                                                                   
  Raw             = 0x00000001                                                                                               
  intLocal        = 0                                                                                                        
  statusIntEnable = 0                                                                                                        
  statusIntVec    = 0                                                                                                        
  int2cfg         = 0                                                                                                        
  serialStop      = 0                                                                                                        
  iLoop           = 0                                                                                                        
  reset           = 1                                                                                                        
Control register contents:                                                                                                   
  Raw        = 0x00000000                                                                                                    
  sglErrCor  = 0                                                                                                             
  dblErrDet  = 0                                                                                                             
============== end registers before initialization ===========                                                               
Hyperlink Serdes Common Init Complete                                                                                        
Hyperlink Serdes Lane 0 Init Complete                                                                                        
Hyperlink Serdes Lane 1 Init Complete                                                                                        
Hyperlink Serdes Lane 2 Init Complete                                                                                        
Hyperlink Serdes Lane 3 Init Complete                                                                                        
[ INFO ] Hyperlink Example default SERDES setup done.                                                                        
[ INFO ] Take out of reset loopback                                                                                          
[ INFO ] Don't care about rev reg any more                                                                                   
[ INFO ] Wait for peripheral to come up                            <--- the program waits here for the other side to start, At this time I start the test program on DSP1                                                         
============== begin registers after initialization ===========                                                              
Status register contents:                                                                                                    
  Raw        = 0x04402005                                                                                                    
  swidthin   = 4                                                                                                             
  swidthout  = 4                                                                                                             
  serialHalt = 1                                                                                                             
  pllUnlock  = 0                                                                                                             
  rPend      = 0                                                                                                             
  iFlow      = 0                                                                                                             
  oFlow      = 0                                                                                                             
  rError     = 0                                                                                                             
  lError     = 0                                                                                                             
  nfEmpty3   = 0                                                                                                             
  nfEmpty2   = 0                                                                                                             
  nfEmpty1   = 0                                                                                                             
  nfEmpty0   = 0                                                                                                             
  sPend      = 1                                                                                                             
  mPend      = 0                                                                                                             
  link       = 1                                                                                                             
Link status register contents:                                                                                               
  Raw       = 0xccf00cf0                                                                                                     
  txPlsReq  = 3                                                                                                              
  txPlsAck  = 0                                                                                                              
  txPmReq   = 3                                                                                                              
  txRSync   = 0                                                                                                              
  txPlsOK   = 0                                                                                                              
  txPhyEn   = 15                                                                                                             
  txFlowSts = 0                                                                                                              
  rxPlsReq  = 0                                                                                                              
  rxPlsAck  = 0                                                                                                              
  rxPmReq   = 3                                                                                                              
  rxLSync   = 0                                                                                                              
  rxPhyEn   = 15                                                                                                             
  rxPhyPol  = 0                                                                                                              
Control register contents:                                                                                                   
  Raw             = 0x00006004                                                                                               
  intLocal        = 1                                                                                                        
  statusIntEnable = 1                                                                                                        
  statusIntVec    = 0                                                                                                        
  int2cfg         = 0                                                                                                        
  serialStop      = 1                                                                                                        
  iLoop           = 0                                                                                                        
  reset           = 0                                                                                                        
============== end registers after initialization ===========                                                                
Waiting 5 seconds to check link stability                                                                                    
Link seems stabl <-- The DSP0 freezes and must restart

##  DSP1 log:

Version #: 0x02010008; string HYPLNK LLD Revision: 02.01.00.08:Sep  1 2019:02:30:48                         
About to do system setup (PLL, PSC, and DDR)                                                                
Power domain is already enabled.  You probably re-ran without device reset (which is OK)                    
Constructed SERDES configs: PLL=0x00000250; RX=0x0046c495; TX=0x000ccf95                                    
system setup worked                                                                                         
About to set up HyperLink Peripheral                                                                        
============================Hyperlink Testing Port 0                                                        
========================================== begin registers before initialization ===========                
Revision register contents:                                                                                 
  Raw    = 0x4e902101                                                                                       
  Scheme = 1                                                                                                
  BU     = 0                                                                                                
  Func   = 0x0e90                                                                                           
  RTL    = 4                                                                                                
  cust   = 0                                                                                                
  revMaj = 1                                                                                                
  revMin = 1                                                                                                
Status register contents:                                                                                   
  Raw        = 0x04402197                                                                                   
  swidthin   = 4                                                                                            
  swidthout  = 4                                                                                            
  serialHalt = 1                                                                                            
  pllUnlock  = 0                                                                                            
  rPend      = 0                                                                                            
  iFlow      = 0                                                                                            
  oFlow      = 0                                                                                            
  rError     = 1                                                                                            
  lError     = 1                                                                                            
  nfEmpty3   = 0                                                                                            
  nfEmpty2   = 0                                                                                            
  nfEmpty1   = 1                                                                                            
  nfEmpty0   = 0                                                                                            
  sPend      = 1                                                                                            
  mPend      = 1                                                                                            
  link       = 1                                                                                            
Link status register contents:                                                                              
  Raw       = 0xfdf0bdf0                                                                                    
  txPlsReq  = 3                                                                                             
  txPlsAck  = 3                                                                                             
  txPmReq   = 3                                                                                             
  txRSync   = 0                                                                                             
  txPlsOK   = 1                                                                                             
  txPhyEn   = 15                                                                                            
  txFlowSts = 0                                                                                             
  rxPlsReq  = 2                                                                                             
  rxPlsAck  = 3                                                                                             
  rxPmReq   = 3                                                                                             
  rxLSync   = 0                                                                                             
  rxPhyEn   = 15                                                                                            
  rxPhyPol  = 0                                                                                             
Control register contents:                                                                                  
  Raw             = 0x00006006                                                                              
  intLocal        = 1                                                                                       
  statusIntEnable = 1                                                                                       
  statusIntVec    = 0                                                                                       
  int2cfg         = 0                                                                                       
  serialStop      = 1                                                                                       
  iLoop           = 1                                                                                       
  reset           = 0                                                                                       
Control register contents:                                                                                  
  Raw        = 0xafd10001                                                                                   
  sglErrCor  = 45009                                                                                        
  dblErrDet  = 1                                                                                            
============== end registers before initialization ===========                                              
Hyperlink Serdes Common Init Complete                                                                       
Hyperlink Serdes Lane 0 Init Complete                                                                       
Hyperlink Serdes Lane 1 Init Complete                                                                       
Hyperlink Serdes Lane 2 Init Complete                                                                       
Hyperlink Serdes Lane 3 Init Complete                                                                       
[ INFO ] Hyperlink Example default SERDES setup done.                                                       
[ INFO ] Take out of reset loopback                                                                         
[ INFO ] Don't care about rev reg any more                                                                  
[ INFO ] Wait for peripheral to come up                                                                     
============== begin registers after initialization ===========                                             
Status register contents:                                                                                   
  Raw        = 0x04402017                                                                                   
  swidthin   = 4                                                                                            
  swidthout  = 4                                                                                            
  serialHalt = 1                                                                                            
  pllUnlock  = 0                                                                                            
  rPend      = 0                                                                                            
  iFlow      = 0                                                                                            
  oFlow      = 0                                                                                            
  rError     = 0                                                                                            
  lError     = 0                                                                                            
  nfEmpty3   = 0                                                                                            
  nfEmpty2   = 0                                                                                            
  nfEmpty1   = 1                                                                                            
  nfEmpty0   = 0                                                                                            
  sPend      = 1                                                                                            
  mPend      = 1                                                                                            
  link       = 1                                                                                            
Link status register contents:                                                                              
  Raw       = 0xccf00cf0                                                                                    
  txPlsReq  = 3                                                                                             
  txPlsAck  = 0                                                                                             
  txPmReq   = 3                                                                                             
  txRSync   = 0                                                                                             
  txPlsOK   = 0                                                                                             
  txPhyEn   = 15                                                                                            
  txFlowSts = 0                                                                                             
  rxPlsReq  = 0                                                                                             
  rxPlsAck  = 0                                                                                             
  rxPmReq   = 3                                                                                             
  rxLSync   = 0                                                                                             
  rxPhyEn   = 15                                                                                            
  rxPhyPol  = 0                                                                                             
Control register contents:                                                                                  
  Raw             = 0x00006004                                                                              
  intLocal        = 1                                                                                       
  statusIntEnable = 1                                                                                       
  statusIntVec    = 0                                                                                       
  int2cfg         = 0                                                                                       
  serialStop      = 1                                                                                       
  iLoop           = 0                                                                                       
  reset           = 0                                                                                       
============== end registers after initialization ===========                                               
Waiting 5 seconds to check link stability                                                                   
Link seems stabl <-- The DSP1 freezes and must restart

 


Do you have any idea, what can be the problem here?

Do you think, I need a successful loopback test on DSP1 before testing it with the other chip?

Do you have any other tools to test the Hyperlink on custom devices?

Do I ran these test scripts correctly?

Do you have any idea whats next? I got stuck.

Thanks

David

  • Hi,

    Have you tried these debug tips:
      

    Best Regards,
    Yordan

  • Hello Yordan,

    Thanks for the tips and yes, I have already tried them.

    First of all, I think, I should concentrate on loopback test mode. I should not test between DSP chips until the loopback test not succeed.

    According to these debug tips the loopback test should work also with one DSP chip. Failing this test seems to be an internal problem.It writes lError and rError which is a fatal error according to the tips: "f it seems to not work, check for lError and rError in the status register (hyplnkStatusReg_s). If these appear, it means double ecc error occurred and the link is non functional. This is fatal error."

    These tips don't give any possible solution to the problem.  What to do if this error appears ?

    Thank You

    David

  • Hi,

    I've ran the hyplnk loopback examples in the past on K2H EVM and they're working. Are you using the same Hyperlink register settings as provided in Processor SDK RTOS examples or do you modify something? Have you tried running the examples on your board with CCS, no Linux running on the ARM core?

    Best Regards,
    Yordan