SerialLite II IP Core User Guide

ID 683179
Date 7/13/2021
Public
Document Table of Contents

2.8.11.1. Selecting the Proper Threshold Value

To determine FIFO threshold size, you need to factor in the flow control internal latency.
Table 12.  SerialLite II Flow Control Internal LatencyThis table defines the specification value for flow control internal latency. Use this information to determine the minimum FIFO threshold size avoiding starvation during the flow control.
Internal Latency Latency Value (cycles) Description
tlate_fc_transmit 24

Latency that occurs during RX FIFO breach up to the point where the associated flow control link management packet is sent out on the link. This includes the time for the core to generate the link management packet and the time through the transceiver.

t_wd This value depends on the data rate and trace lengths in the application.

Wire delay between the devices.

tlate_fc_receive 23 + deskew cycles
Latency that occurs in the duration when the flow control link management packet reaches the transceiver pins until the IP core processes the request.
  • Deskew cycles = 0 for single lane configuration
  • Deskew cycles = worst case lane to lane skew in the transceiver
tlate_stop_data
  • Regular data: 41
  • Priority data: 41 + seg_TX + seg_RX
Overall system core latency (indicates the amount of data that may still be in the system when the PAUSE begins). This data must still be stored in the RX FIFO.
Note: seg_TX and seg_RX are taken into account only for priority packets with retry-on-error feature. If a priority packet with retry-on-error feature is in transfer, flow control begins immediately after the current segment of the priority packet has been sent.]

seg_TX = [segment size/(TSIZE* TX_NUMBER_LANES)]

seg_RX = [segment size/(TSIZE* RX_NUMBER_LANES)]

To calculate latency numbers in terms of time units, multiply the latency values by the tx_coreclock clock period.

The proper threshold value can be derived by subtracting the depth of the FIFO from the total latency.

Total Latency = [tlate_fc_transmit + t_wd + tlate_fc_receive + tlate_stop_data] cycles
Note: The ratio between one element and one cycle is equal to one. When you write one element to the FIFO, it takes one clock cycle. Therefore one cycle is one element.

Therefore, set threshold value based on this formula:

Threshold value = Total Depth of FIFO (elements) – Total Latency (clock cycles)