Forum Discussion

logitronica's avatar
logitronica
Icon for New Contributor rankNew Contributor
2 days ago

Agilex5 o_tx_ready and o_rx_ready not asserting

I'm working on a design for a video router, and having trouble with the transceivers. I have the premium devkit to test run the setup. This board has ES silicon, A5ED065BB32AE6SR0.

The design would implement 4 or 8 lanes of 12.5Gbps (later 17Gbps or faster), on the GTS XCVR, PCS Direct with IEEE_FLEXE_66 implementation. I followed the User Guide to implement the startup sequence (Reset_Sequencer is OK - it handshakes src_rst_req and src_rst_grant). Figure 65 was my guideline to develop the FSM to bring the Tx and Rx lane up and running.

The issue I'm observing:

The TX run-time reset sequence (UG Fig 56) completes: i_tx_reset asserted → o_tx_reset_ack asserts → i_tx_reset deasserted → o_tx_pll_locked asserts → src_rs_grant completes. But o_tx_ready never asserts (o_rx_ready likewise). As an extra measure against metastability, all status signals are 2-flop synchronized before use. When I hook up the Transceiver Toolkit, it brings the same channel up reliably. What additional condition gates o_tx_ready that isn't in Figure 56, or what should I look for to get the XCVR reliable up and running. 

After the initial 'bring_up_sequence, I'll run 4kb packets at 64/66bit to minimize overhead, hence the FLEXE_66.

I'm kind of stuck

 

2 Replies

  • JonWay_altera's avatar
    JonWay_altera
    Icon for Frequent Contributor rankFrequent Contributor

    Because both TX and RX ready remain low, I would first suspect a shared clock/reset prerequisite—i_system_pll_lock, i_refclk_ready, o_pll_lock, or missing/incorrect core clocks—rather than the IEEE_FLEXE_66 payload interface.

     

    Probe these signaltap (with power up trigger). Set to Transitional. 

    i_refclk_ready 

    o_pll_lock 

    i_system_pll_lock 

    i_tx_coreclkin 

    o_tx_clkout (you cannot tap on clk signals. Instead use it to drive some counters, then tap on the counter to check for toggling activity)

    o_tx_pll_locked 

    o_tx_reset_ack 

    i_tx_reset 

    i_src_rs_req 

    o_src_rs_grant 

    i_src_rs_grant 

    o_tx_ready

    • logitron's avatar
      logitron
      Icon for New Contributor rankNew Contributor

      apparently the clocks are running (TxCount_r and RxCount_r are counters in these respective clock domains).

      nInit_Done is refClk_ready (PLL input), PLL_lock, rst_req and rst_grant are handshaking, TxReset_Ack and RxReset_Ack are behaving as expected, but as you can see ... Ready remains dead.

      I noticed during setting up signaltap that the signals are all in the int_osc clock domain. And my LaneSequencer (the bring up sequence for GTS Tx and Rx) is in a 100MHz SysClk domain.

      What do you mean with 'incorrect core clock'? There was an errata on version 25.3, but neither 25.3.1 nor 26.1.0 seem to be affected by this erratum?