Unable to meet timing requirements for 180 MHz Source-Synch. DDR Interface due to PLL uncertainty
Dear all,
My current project involves an interfacing between an ADC, clocked at 180 MHz with source-synchronous DDR LVDS outputs, and a Cyclone V FPGA (5CSXFC6).
To start, I instantiated a ALTDDIO receiver with the required number of channels and a PLL to create a 90 degree phase shifted version of the ADC clockout signal as its input clock.
With this setup, my timing fails for both the setup and hold analysis by approximately 500 ps each. The reason is that the length of the clock path differs by about 2.5 ns between the setup and hold analysis which shrinks down the data required window to almost zero, making it too small for the uncertainties in the data path and the input delays given by the ADC datasheet.
Changing the compensation mode of the PLL did not seem to have a significant effect. The chip planner showed that the clock signal was routed all over the chip. I was able to reduce the clock path length and improve the timing by assigning a specific regional clock buffer to the PLL output. (Is there any settings I could have changed for the fitter in order for it to try this automatically?). But even with this optimization, the timing fails at the "slow device corners".
When directly clocking the ALTDDIO with the ADC clockout signal, timing analysis goes well with around 0.5 ns slack for both and hold. The relatively large IC delay from the clock buffer to the DDIOs creates exactly the phase shift required.
The ADC can be configured to include a phase shift in the clock signal using an SPI interface but the datasheet recommends doing this within the FPGA. Although not using the PLL and relying on the clock delay seems to work, it is not satisfying. I am wondering if I am doing something wrong or whether a 180 MHz DDR interface is at the edge of the capabilities of the chosen device (5CSXFC6).
Best regards