Forum Discussion

evanwu03's avatar
evanwu03
Icon for New Contributor rankNew Contributor
3 days ago

F-tile 10GE Ethernet Reference Design ISSP Error

Hello,

I am currently a master's student and apart of the research I am working on at my lab involves implementing a subsection of the O-RAN 5G fronthaul interface on an Agilex 7 FPGA, which will depends on the F-Tile Ethernet Hard IP.

I have been working with the 10GE F-Tile Ethernet Hard IP reference design and have successfully compiled the design, programmed the generated image onto the FPGA, and accessed the provided test utilities through Quartus System Console.

However, I am encountering issues when running the serial loopback test. On the initial attempts, the test runs but reports packet mismatches and ultimately fails. On subsequent attempts, I receive errors indicating a value mismatch involving an ISSP probe. I would appreciate additional guidance on troubleshooting the ISSP probe mismatch.

I have also observed that rx_pcs_ready does not assert during testing, which appears to indicate an issue with the RX path. I am unsure whether this is directly related to the ISSP probe issue or represents an additional problem with the RX configuration or link initialization.

Could you provide guidance on how to diagnose and resolve the ISSP probe value mismatch, as well as what conditions are required for rx_pcs_ready to assert in the 10GE F-Tile reference design?

Specifications:
- Quartus Prime Pro 24.1
- jtagd 24.1 executable was replaced with jtagd 25.1 version to allow USB Blaster III support (The specific board I am using mentions to do this in their BSP) 

-  Device model: AGFB027R24C2E2V

% run_test
--- Turning off packet generation ---- -------- Printing PHY status ---------
------------------------------------ --------------------------------------

-------- Enabling loopback ----------
--------------------------------------

Applying Rx Reset

Reading Loop Back Register Status

reg1_xcvr0 0x00062340

reg2_xcvr0 0x00062340

Loop Back for Lane 3 ..

Writing 1st loopback data for Lane 3

Reading Loop Back Registers

reg1_xcvr0 lane 3 0x0006a340

reg2_xcvr0 lane 3 0x0006a340

Writing 2nd loopback data for Lane 3

Reading Loop Back Registers

reg1_xcvr0 lane 3 0x00062340

reg2_xcvr0 lane 3 0x00062340

Releasing Rx Reset

Checking Status of the Flux Register

lane 0 0x00000000

lane 1 0x00000000

lane 2 0x00000000

lane 3 0x00000000

--- Wait for RX clock to settle... ---
--------------------------------------

RX PHY Register Access: Checking Clock Frequencies (KHz)

TXCLK :402840 (KHZ)
RXCLK :161130 (KHZ)

TX PLL Lock Status 0x00000001

Rx Frequency Lock Status 0x00000000

RX PCS Ready 0x0

TX Lanes Stable 0x1

Deskewed Status 0x0

Link Fault Status 0x00000001

Rx Frame Error 0xdeadc0de

Rx AM LOCK Condition 0xdeadc0de

Value from issp reset probe is 0xed/0b11101101
ERROR:rx_pcs_ready is not asserted or link fault is detected. Expected value from issp reset probe is : 0xff

---------------- Done ----------------

Thank you for any guidance you can provide

1 Reply

  • Hello,

     

    The ISSP probe mismatch error is a consequence of those underlying failures — the probe is simply reporting that the aggregated status word doesn't match the all-pass pattern. Fixing the root causes below should resolve it.


    Root cause #1: RXCLK vs TXCLK frequency mismatch

    Your log shows:

     

    TXCLK: 402,840 KHz (~402.8 MHz)

     

    RXCLK: 161,130 KHz (~161.1 MHz)

     

    These should be equal in internal serial loopback. The TX clock running at ~402 MHz while RX is at ~161 MHz is a strong indicator that the RX CDR has not locked, it is not recovering the clock from the looped-back serial data. This directly explains why Rx Frequency Lock Status = 0 and RX PCS Ready = 0.

    rx_pcs_ready is an active-high asynchronous status signal for the RX datapath; it asserts when the RX datapath is ready to receive data, and deasserts when the reset signal asserts or during auto-negotiation and link training operation. Since your RX CDR hasn't locked, the datapath never becomes ready.


    Root cause #2: jtagd version mismatch, this is likely your primary problem

    You mentioned replacing the jtagd 24.1 executable with jtagd 25.1. This is a significant concern. The System Console TCL scripts in the 10GE reference design example were generated and validated against Quartus Prime Pro 24.1. Mixing a 24.1-compiled bitstream and 24.1 design scripts with a 25.1 jtagd can cause:

     

    JTAG master path resolution failures (the service master path changes between versions)

     

    Register reads returning sentinel/garbage values like 0xDEADC0DE , exactly what you see for Rx Frame Error and Rx AM LOCK

     

    ISSP probe reads returning stale or incorrect values

     

    I'd strongly recommend testing with a consistent toolchain: either use the full 24.1 jtagd with your 24.1 bitstream, or regenerate the design example entirely under 25.1 and use the 25.1 jtagd. The 0xDEADC0DE sentinel is a classic sign that a register read transaction did not complete successfully.


    Root cause #3: Known issue with Quartus Prime Pro 24.1 and RX ready signals

    There is a documented issue relevant to your exact Quartus version. Due to an unexpected behavior in the Agilex 7 F-tile Ethernet Hard IP 25G variant, there is a frequency mismatch between o_clk_rec_div and o_clk_revc_div64, which causes link loss for one clock reset sequence before o_rx_pcs_ready is available. This problem is fixed beginning with Quartus Prime Pro Edition software version 24.2. While that specific issue is documented for the 25G variant, the underlying reset sequencing sensitivity exists in 24.1 broadly and your 10GE design running on 24.1 may be hitting related reset-sequencing timing issues.



    Recommended diagnostic and resolution steps

     

    Restore jtagd 24.1 for your 24.1 bitstream and re-run the test. The 0xDEADC0DE register reads are the most urgent symptom to eliminate first, as they indicate the JTAG/System Console path is not communicating correctly with the IP.


    Confirm the reference clock. 156.25 MHz is the recommended frequency for all Ethernet modes and is the only supported frequency when using FHT PMA or when auto-negotiation and link training is enabled. Your RXCLK reading of ~161 MHz is close but not exactly 156.25 MHz × any standard division factor — this warrants checking your board's reference clock source and the F-Tile Reference and System PLL Clocks IP configuration.

     

    Upgrade to Quartus Prime Pro 24.2 or later if possible. The 24.1 → 24.2 fix for the reset/clock-recovery issue is directly relevant to your symptom of RX PCS ready not asserting after a soft reset.

     

    In summary: the ISSP probe mismatch is a symptom, not the root cause. The primary suspects are (1) the jtagd version mismatch corrupting register reads, and (2) the RX CDR not locking due to either a reference clock issue or reset sequencing timing in Quartus 24.1. Address those two first and the rx_pcs_ready and ISSP probe issues should resolve together.