Skip to content

Possible aligner failure in detection of orbit end for specific patterns

The aligner logic fails in the detection of the orbit end when on one of the links the following pattern is received at the end of the orbit (at inputs level):

PADDING_WORD -> COMMA_WORD -> CRC -> LID -> COMMA_WORD -> COMMA_GAP -> ...

This happens because before the aligner fifo a bit (signalling the last data word before the comma gap) is appended to the padding word, but this word does not go inside the aligner fifo since the write enable is low (the strobe for the padding word is set to 0). Therefore, the aligner logic cannot detect the end of the orbit for the links where this happens. Thus, the aligner logic sets the all_last boolen to false and causes the state of the aligner to go into idle. In the idle state, the valid flag of the output data of the aligner block is high, causing the orbit length counter to increase when the next orbit starts.

A possible (raw) fix already tested is to detect the previous pattern in the comma gap cleaner block and invalidate the padding word before the comma word. A PR with the fix will follow.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information