Forum Discussion
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
- paveetirrasrie_Altera
Frequent Contributor
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.