Hi,
Our board is having trouble with our RGMII0 port. we are getting 1-2 RX CRC errors every few minutes. We are trying to figure out how to best set the RGMII timings and here is where I am having trouble.
Our RXC trace has .5ns of PCB delay added to it. Our PHY KSZ9031 has a built in default of 1.2nS of delay . Adding these we get 1.7nS of delay on RGMII0_RXC. Adding that amount of delay to RXC relative to the data signals should be enough to satisfy the setup and hold times. But we still see errors. I then started reading about Manual IO timings in the AM57 datasheet and see

If these Manual timings are used what are they doing to the signals? Are they needed to align RXC and the RX data's to the RGMII standard and then only the "external" delay on the RXC is applicable? Or are they artificially adding more delay to the RX data's relative to the RXC as you can see the delay numbers for RXC are less. I am trying to calculate the actual timing difference between RXC and the RX data's but the timings these Manual IO timings are "ensuring" is not clear.
Earlier in the datasheet in figure 7-58 it is stated that "rgmiin_rxc must be externally delayed relative to the data and control pins". To me that sounds like the Manual IO timings should actually be shifting the timing in the processor to ensure that there is no internal package delay between RXC and RX datas. Therefore all the delay would be up to the user to make on the PCB and the PHY "externally". It wouldn't make sense for the user to add external delay and then have delay added internally that is not specifically called out.
Thanks,
Sam