Functional description, Lane-to-lane deskew modes of operation, The deskew module can work in three modes – Achronix Speedster22i SerDes User Manual
Page 26: Manual mode, Auto mode

Functional Description
The de-skew block uses a deskew FIFO on each lane. The writes to the deskew FIFO are
performed in the recovered clock domain for each lane. The read side of the deskew FIFO is
clocked by the clock from the initiator lane. The lanes are categorized as initiator and
followers. Any lane can be an initiator and skew is always calculated between the initiator
and each of follower lanes.
Once deskew is enabled, the skew between initiator and follower lanes are calculated
continuously by sensing deskew characters in the read side of the FIFO. The read threshold
for the FIFO needs to be programmed appropriately based on skew tolerance to avoid FIFO
under/over run. Once a deskew character is sensed, each lane starts a skew window equal to
the maximum skew allowed in the system. Based on how the lanes are skewed, the follower
lane is either lagging or leading and adjust the read clock cycles accordingly. Once the
initiator gets indication from all lanes of the bonding group that the skew calculation is over,
it declares that all lanes are aligned and asserts data valid for the down-stream logic. The
same data valid is used by the follower lanes to assert respective lane data valid. When the
initiator does not find such overlap of skew windows, it issues a reset to all FIFOs in the
bonding group and restarts the de-skew operation.
To summarize, the initiator lane generates various control signals for the follower lanes and
follower lanes send various status signals back to the initiators. Status signals are AND-ed
(e.g. for checking if the skew calculation completed in all lanes) or OR-ed (e.g. for checking if
any follower lanes window has not started), whereas control signals are used directly. These
signals go from one lane to another. The status and control signals are registered at time
intervals determined based on the number of lanes bonded
Lane-to-Lane Deskew Modes of Operation
The deskew module can work in three modes:
Manual Mode:
The rising edge of i_dskew_start will start one round of deskew operation. Lanes are
declared aligned either just after the deskew operation is completed or after an additional
check of a programmed number of aligned deskew characters in all bonded lanes at the same
time. The fabric needs to monitor received data for identifying any misalignment, and thus to
restart deskew operation. Infiniband uses manual mode of deskew operation.
Auto Mode:
The deskew module is always active. Once lanes are deskewed, all lanes will continuously
look for deskew characters in data read from the FIFO. The initiator should see deskew
characters on all lanes of the bonding group at the same time. The initiator looks for aligned
deskew characters on all lanes for a certain number of times based on the value programmed
in the register, and once detected the initiator declares bonded lanes aligned. Any time the
initiator finds deskew characters not aligned on all lanes, it starts an unlock count. If the
unlock count hits the value programmed in the register, the initiator declares that the lanes
are out of lock and re-starts the de-skew operation. While unlock count is incrementing, if the
initiator finds de-skew characters are aligned on all lanes again it starts decrementing the
unlock counter. This decrement can happen once in every ‘n’ (programmed in the register)
times when lanes have de-skew characters aligned to make sure the link has overcome error
conditions. If the unlock counter reaches zero, the link remains aligned.
26
UG028, July 1, 2014