Visible to Intel only — GUID: mur1723827989603
Ixiasoft
1. F-Tile Overview
2. F-Tile Architecture
3. Implementing the F-Tile PMA/FEC Direct PHY Intel® FPGA IP
4. Implementing the F-Tile Reference and System PLL Clocks Intel® FPGA IP
5. F-Tile PMA/FEC Direct PHY Design Implementation
6. Supported Tools
7. Debugging F-Tile Transceiver Links
8. F-Tile Architecture and PMA and FEC Direct PHY IP User Guide Archives
9. Document Revision History for the F-Tile Architecture and PMA and FEC Direct PHY IP User Guide
A. Appendix
2.1.1. FHT and FGT PMAs
2.1.2. 400G Hard IP and 200G Hard IP
2.1.3. PMA Data Rates
2.1.4. FEC Architecture
2.1.5. PCIe* Hard IP
2.1.6. Bonding Architecture
2.1.7. Deskew Logic
2.1.8. Embedded Multi-die Interconnect Bridge (EMIB)
2.1.9. IEEE 1588 Precision Time Protocol for Ethernet
2.1.10. Clock Networks
2.1.11. Reconfiguration Interfaces
2.2.1. PMA-to-Fracture Mapping
2.2.2. Determining Which PMA to Map to Which Fracture
2.2.3. Hard IP Placement Rules
2.2.4. IEEE 1588 Precision Time Protocol Placement Rules
2.2.5. Topologies
2.2.6. FEC Placement Rules
2.2.7. Clock Rules and Restrictions
2.2.8. Bonding Placement Rules
2.2.9. Preserving Unused PMA Lanes
2.2.2.1. Implementing One 200GbE-4 Interface with 400G Hard IP and FHT
2.2.2.2. Implementing One 200GbE-2 Interface with 400G Hard IP and FHT
2.2.2.3. Implementing One 100GbE-1 Interface with 400G Hard IP and FHT
2.2.2.4. Implementing One 100GbE-4 Interface with 400G Hard IP and FGT
2.2.2.5. Implementing One 10GbE-1 Interface with 200G Hard IP and FGT
2.2.2.6. Implementing Three 25GbE-1 Interfaces with 400G Hard IP and FHT
2.2.2.7. Implementing One 50GbE-1 and Two 25GbE-1 Interfaces with 400G Hard IP and FHT
2.2.2.8. Implementing One 100GbE-1 and Two 25GbE-1 Interfaces with 400G Hard IP and FHT
2.2.2.9. Implementing Two 100GbE-1 and One 25GbE-1 Interfaces with 400G Hard IP and FHT
2.2.2.10. Implementing 100GbE-1, 100GbE-2, and 50GbE-1 Interfaces with 400G Hard IP and FHT
3.1. F-Tile PMA/FEC Direct PHY Intel® FPGA IP Overview
3.2. Designing with F-Tile PMA/FEC Direct PHY Intel® FPGA IP
3.3. Configuring the IP
3.4. Signal and Port Reference
3.5. Bit Mapping for PMA and FEC Mode PHY TX and RX Datapath
3.6. Clocking
3.7. Custom Cadence Generation Ports and Logic
3.8. Asserting Reset
3.9. Bonding Implementation
3.10. Independent Port Configurations
3.11. Configuration Registers
3.12. Configurable Quartus® Prime Software Settings
3.13. Configuring the F-Tile PMA/FEC Direct PHY Intel® FPGA IP for Hardware Testing
3.14. Hardware Configuration Using the Avalon® Memory-Mapped Interface
3.3.1. General and Common Datapath Options
3.3.2. TX Datapath Options
3.3.3. RX Datapath Options
3.3.4. RS-FEC (Reed Solomon Forward Error Correction) Options
3.3.5. Avalon® Memory Mapped Interface Options
3.3.6. Register Map IP-XACT Support
3.3.7. Example Design Generation
3.3.8. Analog Parameter Options
3.4.1. TX and RX Parallel and Serial Interface Signals
3.4.2. TX and RX Reference Clock and Clock Output Interface Signals
3.4.3. Reset Signals
3.4.4. RS-FEC Signals
3.4.5. Custom Cadence Control and Status Signals
3.4.6. TX PMA Control Signals
3.4.7. RX PMA Status Signals
3.4.8. TX and RX PMA and Core Interface FIFO Signals
3.4.9. PMA Avalon® Memory Mapped Interface Signals
3.4.10. Datapath Avalon® Memory Mapped Interface Signals
3.5.1. Parallel Data Mapping Information
3.5.2. TX and RX Parallel Data Mapping Information for Different Configurations
3.5.3. Example of TX Parallel Data for PMA Width = 8, 10, 16, 20, 32 (X=1)
3.5.4. Example of TX Parallel Data for PMA width = 64 (X=2)
3.5.5. Example of TX Parallel Data for PMA width = 64 (X=2) for FEC Direct Mode
3.8.1. Reset Signal Requirements
3.8.2. Power On Reset Requirements
3.8.3. Reset Signals—Block Level
3.8.4. Reset Signals—Descriptions
3.8.5. Status Signals—Descriptions
3.8.6. Run-time Reset Sequence—TX
3.8.7. Run-time Reset Sequence—RX
3.8.8. Run-time Reset Sequence—TX + RX
3.8.9. Run-time Reset Sequence—TX with FEC
3.14.1.1. Enabling Loopback
3.14.1.2. Enabling the PRBS Generator and Verifier for ES Devices
3.14.1.3. Obtaining BER Values for Production Devices
Enabling the TX PRBS Generator
Enabling RX PRBS Verifier
Initializing the BER Counters
Calculating the BER Values
3.14.1.4. TX Equalizer Settings
3.14.1.5. TX Error Injection
3.14.1.6. RX Reconvergence
3.14.1.7. Preserving Unused Lanes
4.1. IP Parameters
4.2. IP Port List
4.3. Mode of System PLL - System PLL Reference Clock and Output Frequencies
4.4. Guidelines for F-Tile Reference and System PLL Clocks Intel® FPGA IP Usage
4.5. Guidelines for Refclk #i is Active At and After Device Configuration
4.6. Guidelines for Obtaining the Lock Status and Resetting the FGT and FHT TX PLLs
5.1. Implementing the F-Tile PMA/FEC Direct PHY Design
5.2. Instantiating the F-Tile PMA/FEC Direct PHY Intel® FPGA IP
5.3. Implementing a RS-FEC Direct Design in the F-Tile PMA/FEC Direct PHY Intel® FPGA IP
5.4. Instantiating the F-Tile Reference and System PLL Clocks Intel® FPGA IP
5.5. Enabling Custom Cadence Generation Ports and Logic
5.6. Connecting the F-Tile PMA/FEC Direct PHY Design IP
5.7. Simulating the F-Tile PMA/FEC Direct PHY Design
5.8. F-Tile Interface Planning
7.2.1. Modifying the Design to Enable F-Tile Transceiver Debug
7.2.2. Programming the Design into an Intel FPGA
7.2.3. Loading the Design to the Transceiver Toolkit
7.2.4. Creating Transceiver Links
7.2.5. Running BER Tests
7.2.6. Running Eye Viewer Tests
7.2.7. Running Link Optimization Tests
7.2.8. Checking FEC Statistics
7.2.9. Vertical Bathtub Curve Measurements (VBCM) Data
Visible to Intel only — GUID: mur1723827989603
Ixiasoft
3.14.1.3. Obtaining BER Values for Production Devices
Enabling the TX PRBS Generator
To enable the TX PRBS generator for lane 0, follow these steps:
- Set car_clk_src_sel (0x60000[5:2]) to 4’b1111.
- Set car_dft_tx_clken (0x40000[10]) to 1'b1. If using multi-lanes, set 1'b1 to all lanes.
- Set car_dft_tx_swrstb (0x40004[13]) to 1'b1. If using multi-lanes, set 1'b1 to all lanes.
- Set cfg_tx_bus_take_dft (0x45804[0]) to 1'b1. If using multi-lanes, set 1'b1 to all lanes.
- Set cfg_lane_tx_prbs_en (0x4292C[0]) to 1'b1. If using multi-lanes, set 1'b1 to all lanes.
- Set cfg_lane_tx_prbs_mode (0x4292C[4:1]) to:
- 4’d0: PRBS 7
- 4’d1: PRBS 9
- 4’d2: PRBS 11
- 4’d3: PRBS 23
- 4’d4: PRBS 31
- Set cfg_lane_tx_prbs_init (0x42934[0]) to 1'b1. If using multi-lanes, set 32'd0 to all lanes.
- Set cfg_prbs_mask_msb (0x4293C[31:0]) to 32'd0. If using multi-lanes, set 32'd0 to all lanes.
- Set cfg_prbs_mask_lsb (0x42938[31:0]) to 32'd0. If using multi-lanes, set 32'd0 to all lanes.
Enabling RX PRBS Verifier
To enable the RX PRBS verifier for lane 0, follow these steps:
- Read cfg_dp_rx_width (0x45860 [7:5]) to obtain the width of the read data width of the design.
- If width = 1; mode = 1
- If width = 1; mode = 2
- Else mode = 3
- Set car_dft_rx_clken (0x40000[4]) to 1’b1. If using multi-lanes, set 1’b1 to all lanes.
- Set car_dft_rx_swrstb (0x40004 [8]) to 1’b1. If using multi-lanes, set 1’b1 to all lanes.
- Set cfg_dft_rx_prbs_common_en (0x42928 [0]) to 1’b1. If using multi-lanes, set 1’b1 to all lanes.
- Set cfg_dft_rx_prbs_sel (0x42928 [4:1]) to:
- 4’d0: PRBS 7
- 4’d1: PRBS 9
- 4’d1: PRBS 9
- 4’d4: PRBS 31
Initializing the BER Counters
To initialize the BER counters for BER computation for lane 0, follow these steps:
- Set cfg_dft_rx_unlock_dly_sel (0x428D4 [12:10]) to 3’b7. If using multi-lanes, set 3’b7 to all lanes.
- Set cfg_dft_rx_prbs_sel (0x42928 [6:5]) to 2’b0. If using multi-lanes, set 2’b0 to all lanes.
- Set cfg_dft_ber_count_mode (0x428D4 [2:1]) to 2’b1. If using multi-lanes, set 2’b1 to all lanes.
- Set cfg_dft_ber_count_en (0x428D4 [0]) to 1’b1. If using multi-lanes, set 1’b1 to all lanes.
- Read cfg_dp_rx_width (0x45860 [7:5]) to obtain the width of the read data in your design.
- If width = 1; mode = 1
- If width = 1; mode = 2
- Else mode = 3
- Based on mode obtained in step 5:
If mode = 1 or mode = 2:
- Set cfg_dft_ber_error_mask_0_31 (0x428DC [31:0]) to 0xFFFFFFFF. If using multi-lanes set all lanes to 0xFFFFFFFF.
- Set cfg_dft_ber_error_mask_32_63 (0x428E0 [31:0] to 0xFFFFFFFF. If using multi-lanes set all lanes to 0xFFFFFFFF.
- Set cfg_dft_ber_error_mask_0_31 (0x428DC [31:0]) to 0xFFFFFFFF. If using multi-lanes, set all lanes to 0xFFFFFFFF
- Set cfg_dft_ber_error_mask_32_63 (0x428E0 [31:0]) to 0xFFFFFFFF. If using multi-lanes, set all lanes to 0xFFFFFFFF
- Set cfg_dft_ber_error_mask_64_95 (0x42960 [31:0]) to 0xFFFFFFFF. If using multi-lanes, set all lanes to 0xFFFFFFFF.
- Set cfg_dft_ber_error_mask_0_31 (0x428DC [31:0]) to 32’b0. If using multi-lanes, set all lanes to 32’b0.
- Set cfg_dft_ber_error_mask_32_63 (0x428E0 [31:0]) to 32’b0. If using multi-lanes, set all lanes to 32’b0.
- Set cfg_dft_ber_error_mask_64_95 (0x42960 [31:0]) to 32’b0. If using multi-lanes, set all lanes to 32’b0.
- Set cfg_dft_ber_error_mask_96_127 (0x42964 [31:0]) to 32’b0. If using multi-lanes, set all lanes to 32’b0.
- Set cfg_rx_inv (0x45800 [18]) to 1’b1. If using multi-lanes, set all lanes to 1’b1.
- Set cfg_dft_ber_stop_c (0x428D8 [2]) to 1’b1. If using multi-lanes, set all lanes to 1’b1.
- Set cfg_dft_ber_clear_c (0x428D8 [0]) to 1’b1. If using multi-lanes, set all lanes to 1’b1.
- Set cfg_dft_ber_start_c (0x428D8 [1]) to 1’b1. If using multi-lanes, set all lanes to 1’b1.
Calculating the BER Values
To calculate the errors for BER computation for lane 0, follow these steps:
- Read dft_ber_csv_rcv_error_global_lsb (0x428F0 [31:0]) to obtain the LSB of global errors. If using multi-lanes, read all lanes.
- Read dft_ber_csv_rcv_error_global_msb (0x428F4 [15:0]) to obtain the MSB of global errors. If using multi-lanes, read all lanes.
- Read cfg_ber_symb_cnt_limit_lsb (0x428E4 [31:0]) to obtain the LSB of symbol limit. If using multi-lanes, read all lanes.
- Read cfg_ber_symb_cnt_limit_msb (0x428E8 [15:0]) to obtain the MSB of symbol limit. If using multi-lanes, read all lanes.
- To compute errors:
- Error = (read data from step 2 x (2 x 32)) + (read data from step 1)
- To compute symbol limit:
- Sym_limit = (read data from step 4 x (2 x 32)) + (read data from step 3)
- Computing bits per symbol using the mode obtained from step 5. of initialization of the BER counters:
- If mode = 0 or mode = 1; bit_per_symbol = 64
- If mode = 2; bit_per_symbol = 32
- Else bit_per_symbol = 128
- To calculate BER:
- BER = Error (from step 5.) / ((Sym_limit (from step 6.)) x bit_per_symbol (from step 7.))