When the core is configured for fabric elastic buffer, and there are ppm differences between the SGMII core clock and the external PHY, Auto-Negotiation (AN) can fail to complete.
The rxbuferr signal toggles and auto-negotiation is restarted periodically, but never completes.
When elastic buffer overflow occurs, rxbuferr is used to reset the RX elastic buffer as well as the GT.
It also causes the Synchronization statemachine to go to LOSS_OF_SYNC initially and to generate RUDI invalid.
There is a MASK RUDI counter for buffer error, which prevents reset of the AN statemachine.
When the GT comes up after the reset due to rxbuferr, the RXDATA from GT is garbled.
This causes RUDI invalid to be generated and the AN statemachine state will be AN_ENABLE.
The CDR takes longer to lock to the RX data and send a valid RXRECCLK.
If you are not using MDIO to issue a reset, then making the following changes in the gtwizard_init file will fix the issue.