Post Go back to editing

Issue with Serializer Lane Crossbar Configuration – ADRV9009 JESD Initialization Stuck at CGS

Category: Software
Product Number: ADRV9009
Software Version: vivado 2018.3, sdk2018.3

Hello,

We are facing an issue related to the serializer lane crossbar configuration in the ADRV9009.

System Description:

  • We are using a custom ADRV9009 board.

  • The SERDIN pins from the ADRV9009 are routed to the FPGA without any lane swap on the PCB.

  • Framer A is used for RX data.

  • Framer B is used for ORx data.

  • We are using the SDK and RTL provided from the ADI GitHub repository as reference.

Configuration Details:

Since there is no physical lane swap, we attempted to enable manual lane crossbar configuration in talise_config.c with the following settings:

Framer A (RX)

  • Lanes enabled: 0x03

  • Serializer lane crossbar: 0xF4

Framer B (ORx)

  • Lanes enabled: 0xC0

  • Serializer lane crossbar: 0x4F

With this configuration, JESD initialization gets stuck in the CGS state.

However,

When we disable manual lane crossbar configuration (keeping the same lane enable settings), initialization completes successfully.

Upon checking talise_jesd204.c, we observed that when manual crossbar is disabled, the driver automatically assigns:

  • Framer A crossbar value: 0xDC

  • Framer B crossbar value: 0x73

These values are internally derived based on the enabled lanes.

Our Confusion:

We are unclear about:

  1. How the lane mapping and crossbar values are derived internally when manual configuration is disabled.

  2. Why manual crossbar values (0xF4 / 0x4F) cause CGS failure while auto-assigned values (0xDC / 0x73) work correctly.

  3. What the correct mapping methodology should be when there is no PCB-level lane swap.

Could you please help clarify:

  • The correct relationship between lanes enabled mask and serializer lane crossbar value?

  • How to properly calculate/program the crossbar when manual configuration is required?

  • Why this CGS failure is being observed in our case?

Thank you for your support.

Parents
  • We have not seen customers reporting this issue with manual crossbar configuration .

    Can you please refer to page 41 for more details in UG about the  lane enabled value and cross bar configuration the and see if we are missing something.

    Is there any specific requirement that you want to use manual crossbar configuration because the automatic configuration works perfectly fine without any issues? 

  • hello ,

    the requirement is that in evaluation setup there is a crossbar mapping performed in the design logical lanes and physical lanes of serdes. but in our custom board and design,  there is no cross mapping performed. logical lanes are mapped to corresponding physical lanes. but in design that is sdk if we disable manual cross bar then there inside it takes default lane mapping as per lanes enabled. but out case was different , so we want to use manual cross bar mapping. 

    we are using serdes lane 0 and 1 for framer A rx path and lanes 2 and 3 for framer B orx. so for framer A we are setting lanes enabled as 0x03 with  crossbar mapping value of 0x04 , for framer b lanes enabled is 0x0c and cross bar mapping is 0x40. we also tried with using 0x11 for unused lanes that means framer a cross bar value is 0xf4 and framer b is 0x4f. for both the cases we are seeing link is strucking in cgs state when manual cross bar is enabled.


  • Can you please try with serializer lane crossbar as 0xE4 for framer A ,framer B and Deframer A and see if it works?

Reply Children
No Data