GTS Ethernet Intel® FPGA Hard IP User Guide: Agilex™ 3 FPGAs and SoCs
ID
848477
Date
4/07/2025
Public
A newer version of this document is available. Customers should click here to go to the newest version.
1. Overview
2. Install and License the GTS Ethernet Intel® FPGA Hard IP
3. Configure and Generate Ethernet Hard IP variant
4. Integrate GTS Ethernet Intel® FPGA Hard IP into Your Application
5. Simulate and Compile (MAC+PCS) Design Example
6. Simulate and Compile (MII PCS Only/PCS66 OTN/PCS66 FlexE) Design Example
7. Simulate and Compile SyncE Design Example
8. Simulate and Compile PTP1588 Design Example
9. Troubleshoot and Diagnose Issues
10. Appendix A: Functional Description
11. Appendix B: Configuration Registers
12. Appendix C: Document Revision History for the GTS Ethernet Intel® FPGA Hard IP User Guide: Agilex 3 FPGAs and SoCs
4.1. Implement Required Clocking
4.2. Implement Required Resets
4.3. Connect the Status Interface
4.4. Connect the MAC Avalon Streaming Client Interface
4.5. Connect the MII PCS Only Client Interface
4.6. Connect the PCS66 Client Interface – FlexE and OTN
4.7. Connect the Precision Time Protocol Interface
4.8. Connect the Ethernet Hard IP Reconfiguration Interface
4.4.1.1. Drive the Ethernet Packet to the TX MAC Avalon Streaming Client Interface with Disabled Preamble Passthrough
4.4.1.2. Drive the Ethernet Packet on the TX MAC Avalon Streaming Client Interface with Enabled Preamble Passthrough
4.4.1.3. Use i_tx_skip_crc to Control Source Address, PAD, and CRC Insertion
4.4.1.4. Assert the i_tx_error to Invalidate a Packet
4.4.2.1. Receive Ethernet Frame on the RX MAC Avalon Streaming Client Interface with Preamble Passthrough Disabled
4.4.2.2. Receive Ethernet Frame with Preamble Passthrough Enabled
4.4.2.3. Receive Ethernet Frame with Remove CRC bytes Disabled
4.4.2.4. Monitor Status and Errors on the RX MAC Avalon Streaming Client Interface
8.3.2. Simulator Output
The following sample output illustrates a successful simulation test run for 10GE MAC with PTP VCS* MX simulator. The script output is similar for other supported simulators.
TX PTP Command #6 # Egress Timestamp Request : 0 # Insert Timestamp : 1 # Update CorrectionField : 0 # Clear UDP/IPv4 Checksum : 0 # Update UDP/IPv6 Extended Bytes : 0 # Add Peer-to-Peer (P2P) MinPathDelay : 0 # Add Asymmetry Delay : 0 # Asymmetry Delay Sign : 0 # Asymmetry & P2P MinPathDelay Select : 0 # Timestamp Field Offset : 0x0014 # Correction Field Offset : 0x001e # TX Fingerprint Data : 0x00000006 # TX Ingress Timestamp : 0x000000000000000000000000 --------------------------------------------------------------- # Timestamps #6 ---------------------------------------------------------------- # TX Egress Timestamp : 0x0000000000000002cb00cd80 # RX Ingress Timestamp : 0x0000000000000002cb00c580 # TX User Fingerprint : 0x00000006 # TX Returned Fingerprint : 0x00000006 ----------------------------------------------------------------- # Comparison #6 ----------------------------------------------------------------- # RX_ITS - TX_ETS : 0x1ffffffffffffffffffffc800/-0.2188 ns # TX Timestamp Fields : 0xaa1516aa18191a1b1c1d # RX Timestamp Fields : 0x000000000000000266e5 # TX Compensation Fields : 0x1e1f20212223bbcc # RX Compensation Fields : 0x1e1f20212224734d ----------------------------------------------------------------- # Begin PTP AVMM Test # The time now is 250000000000 *************************************************************************************************** ====>MATCH! Read addr = 00040224, ReaddataValid = 1 Readdata = 00000010 Expected_Readdata = 00000010 ====>MATCH! Read addr = 00040228, ReaddataValid = 1 Readdata = 00000011 Expected_Readdata = 00000011 ====>MATCH! Read addr = 000402ec, ReaddataValid = 1 Readdata = 00000012 Expected_Readdata = 00000012 ====>MATCH! Read addr = 00040320, ReaddataValid = 1 Readdata = 00000013 Expected_Readdata = 00000013 ====>MATCH! Read addr = 00040324, ReaddataValid = 1 Readdata = 00000014 Expected_Readdata = 00000014 ====>MATCH! Read addr = 00040328, ReaddataValid = 1 Readdata = 00000015 Expected_Readdata = 00000015 ====>MATCH! Read addr = 0004033c, ReaddataValid = 1 Readdata = 00000016 Expected_Readdata = 00000016 ====>MATCH! Read addr = 000403b4, ReaddataValid = 1 Readdata = 00000017 Expected_Readdata = 00000017 ====>MATCH! Read addr = 0004041c, ReaddataValid = 1 Readdata = 00000018 Expected_Readdata = 00000018 ====>MATCH! Read addr = 00040420, ReaddataValid = 1 Readdata = 00000019 Expected_Readdata = 00000019 ====>MATCH! Read addr = 00040024, ReaddataValid = 1 Readdata = 00000010 Expected_Readdata = 00000010 ====>MATCH! Read addr = 00040028, ReaddataValid = 1 Readdata = 00000011 Expected_Readdata = 00000011 ====>MATCH! Read addr = 000400ec, ReaddataValid = 1 Readdata = 00000012 Expected_Readdata = 00000012 ====>MATCH! Read addr = 00040120, ReaddataValid = 1 Readdata = 00000013 Expected_Readdata = 00000013 ====>MATCH! Read addr = 00040124, ReaddataValid = 1 Readdata = 00000014 Expected_Readdata = 00000014 ====>MATCH! Read addr = 00040128, ReaddataValid = 1 Readdata = 00000015 Expected_Readdata = 00000015 ====>MATCH! Read addr = 0004013c, ReaddataValid = 1 Readdata = 00000016 Expected_Readdata = 00000016 ====>MATCH! Read addr = 000401b4, ReaddataValid = 1 Readdata = 00000017 Expected_Readdata = 00000017 ====>MATCH! Read addr = 0004021c, ReaddataValid = 1 Readdata = 00000018 Expected_Readdata = 00000018 ====>MATCH! Read addr = 00040220, ReaddataValid = 1 Readdata = 00000019 Expected_Readdata = 00000019 ====>MATCH! Read addr = 10000010, ReaddataValid = 1 Readdata = 00cae0d4 Expected_Readdata = 00cae0d4 ====>MATCH! Read addr = 10000020, ReaddataValid = 1 Readdata = 0000e0d8 Expected_Readdata = 0000e0d8 PTP AVMM Test Completed ****Starting AVMM Read/Write**** ====>MATCH! Read addr = 00000104, ReaddataValid = 1 Readdata = abcdef01 Expected_Readdata = abcdef01 ====>MATCH! Read addr = 00000108, ReaddataValid = 1 Readdata = 00000007 Expected_Readdata = 00000007 ====>MATCH! Read addr = 00100004, ReaddataValid = 1 Readdata = 12153524 Expected_Readdata = 12153524 ====>MATCH! Read addr = 00100008, ReaddataValid = 1 Readdata = c0895e81 Expected_Readdata = c0895e81 ====>MATCH! Read addr = 00100080, ReaddataValid = 1 Readdata = deadc0de Expected_Readdata = deadc0de The time now is 260000000000 ====>MATCH! Read addr = 00300080, ReaddataValid = 1 Readdata = deadc0de Expected_Readdata = deadc0de ====>MATCH! Read addr = 00000af0, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 ====>MATCH! Read addr = 00050014, ReaddataValid = 1 Readdata = 22334455 Expected_Readdata = 22334455 ====>MATCH! Read addr = 0005001c, ReaddataValid = 1 Readdata = 000005ee Expected_Readdata = 000005ee ====>MATCH! Read addr = 00050014, ReaddataValid = 1 Readdata = 01234567 Expected_Readdata = 01234567 ====>MATCH! Read addr = 00050018, ReaddataValid = 1 Readdata = 000089ab Expected_Readdata = 000089ab ====>MATCH! Read addr = 000a5000, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 **** AVMM Read/Write Operation Completed for IP_INST[ 0]**** **** AVMM Read/Write 50030 **** 0 ====>MATCH! Read addr = 00050030, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 ====>MATCH! Read addr = 00050030, ReaddataValid = 1 Readdata = 000001f5 Expected_Readdata = 000001f5 ====>MATCH! Read addr = 00050030, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 **** AVMM Read/Write 50030 DONE **** 0 **** AVMM Read/Write 50000[3] **** 0 ====>MATCH! Read addr = 00050000, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 ====>MATCH! Read addr = 00050000, ReaddataValid = 1 Readdata = 00000008 Expected_Readdata = 00000008 ====>MATCH! Read addr = 00050000, ReaddataValid = 1 Readdata = 00000000 Expected_Readdata = 00000000 **** AVMM Read/Write 50000[3] DONE **** 0 ** Testbench complete
The following sample waveforms illustrates a simulation test run for 10GE MAC with PTP VCS* MX simulator.