General Description: The 8b/10b Decoder will give incorrect output on "sym_disp" when SINIT is active. This problem exists only in Virtex, Virtex-E and Spartan-II (not in Virtex-II).
The problem is in the structural netlist, which means you will see the incorrect output on SYM_DISP[1:0] during functional and timing simulation, as well as in the actual device. The behavioral simulation will always give the correct SYM_DISP[1:0] output even when SINIT is active.
The core compensates, causing the RUN_DISP and DISP_ERR outputs to respond correctly in most cases, despite the incorrect symbol disparity. However, during start-up, the internal running disparity (not the run_disp output) initializes to an incorrect state. If the input symbols to the decoder have a zero symbol disparity, or are an invalid symbol, then the running disparity will remain at its previous state. Since the initial value of this running was incorrect, these zero or error disparity symbols will cause the core to output incorrect values for run_disp and disp_err.
To correct the RUN_DISP and DISP_ERR output, initialize the core's internal running disparity by clocking through it a valid input symbol with a positive or a negative disparity. Once the internal running disparity is properly initialized, the core will work properly. (However, the SYM_DISP output will be still be incorrect while SINIT is active.)