- Poll the auto-negotiation completion bit 1.5 in Register 1: Status Register.
- Use the auto-negotiation interrupt port of the core (see Using the Auto-Negotiation Interrupt).
If Auto-Negotiation is not completing:
- Ensure that auto-negotiation is enabled in both the core and in
the link partner (the device or test equipment connected to the core).
Auto-Negotiation cannot complete successfully unless both devices are configured
to perform auto-negotiation.
The auto-negotiation procedure requires that the auto-negotiation handshaking protocol between the core and its link partner, which lasts for several link timer periods, occur without a bit error. A detected bit error causes auto-negotiation to go back to the beginning and restart.
Therefore, a link with an exceptionally high bit error rate might not be capable of completing auto-negotiation, or might lead to a long auto-negotiation period caused by the numerous auto-negotiation restarts. If this appears to be the case, try the next step and see Problems with a High Bit Error Rate.
- Try disabling auto-negotiation in both the core and the link partner and see if both devices report a valid link and are able to pass traffic. If they do, it proves that the core and link partner are otherwise configured correctly. If they do not pass traffic, see Problems in Obtaining a Link (Auto-Negotiation Disabled).
Following are some of the rare issues you might experience. The issue occurs during device startup (power on), where the ping does not pass and Ethernet does not link up. When this issue was reproduced, the following status was observed from status_vector[15:0]:
[0]: Link Status = 0
[7]: PHY Link Status (SGMII mode only) = '0' No Linkup
[1]: Link Synchronization = toggling '1' ⇔ '0'
[6]: RXNOTINTABLE = also toggling '1' ⇔ '0', indicating that the physical layer seems to be unstable.
- Auto-negotiation might fail if the Transceiver is not properly initialized.
- The auto-negotiation logic does not reset the Transceiver.
- If necessary, you can try asserting the reset + pma_reset of the IP to see if this resolves the issue.