Visible to Intel only — GUID: sxs1614682379115
Ixiasoft
Visible to Intel only — GUID: sxs1614682379115
Ixiasoft
4.4.4. RX Virtual Lane Offset Calculation for No FEC Variants
- Lock the RX PCS.
The RX PCS must be fully aligned before extracting VL Offset data. Wait for o_rx_pcs_fully_aligned to be asserted.
- Read the VL data for each of the Local Virtual Lanes (VL):
Perform the read operation from o_rx_pcs_status[mode] register via CSR interface. This returns VL data field data for all 20 virtual lanes.
- Set the Physical Lanes for each Remote Virtual Lane:
Step through the data provided by each Local Virtual lane:
- Each lane provides a REMOTE_VL and a LOCAL_PL value.
For each of the 20 possible Remote virtual lanes, set PL[REMOTE_VL] = LOCAL_PL.
For example, if you read Local Virtual lane 12, and get back REMOTE_VL = 5, LOCAL_PL = 2, that means the data for Virtual lane 5 from the link partner is coming in on our Physical lane 2. You store that as PL[5] = 2.
- Calculate the Virtual Lane Offsets for each of the Remote Virtual Lanes in bits:
For 100GE rate: Virtual Lane Offset = sync_pulse to last AM = gb_33_66_occupancy + gb_66_110_occupancy + blk_align_occupancy + am_detect_occupancy + am_count - local_lane_adjust
For 50GE-2 rate: Virtual Lane Offset = sync_pulse to last AM = gb_33_66_occupancy + sep50_occupancy + blk_align_occupancy + am_detect_occupancy + am_count - local_lane_adjust
- Apply shifts to the offsets for REMOTE_VLs {18..19} to account for the mii_am/mii_data reordering that happens in the PCS MII Decoder. This step is applicable for 50GE-2 and 100GE rates only.
- Generate vl_offset_bits shifted for each of the REMOTE_VLs.
- When using RX PTP on data from the RX PCS, shift the times for REMOTE_VLs 18 to 19 by -330 bits:
vl_offset_bits_shifted[REMOTE_VL] = vl_offset_bits[REMOTE_VL] -330 for REMOTE_VL == {18..19} vl_offset_bits_shifted[REMOTE_VL] = vl_offset_bits[REMOTE_VL] for REMOTE_VL == {0..17}
This shift accounts for a shift that is applied by the RX PCS to incoming data.
For example, if vl_offset_bits[18] == 887, set vl_offset_bits_shifted[18] to 557. If vl_offset_bits[17] == 887, set vl_offset_bits_shifted[17] to 887.
Note: For 50GE-2 rates, follow same instructions except only apply the shifting to VL3. - Convert the vl_offset_bits to VL_OFFSET (in ns):
For each REMOTE_VL, VL_OFFSET[REMOTE_VL] = vl_offset_bits_shifted[REMOTE_VL] * RX_UI