Altera_Forum
Honored Contributor
8 years agoIOPLL Source Synchronous Compensation Issue? -- Arria 10
I have a design using a source synchronous input and I am generating the latch clock from an IOPLL in source synchronous compensation mode. The description of that mode states:
"If you select the source synchronous mode, the clock delay from pin to I/O input register matches the data delay from pin to I/O input register." Based on that, I'd expect the latch clock delay to be close to the data path delay. Unfortunately, TimeQuest does not show this. It shows the full data delay, with the latch clock edge occurring at the PLL phase offset value. The input device is an ADC w/ edge-aligned, double data rate, outputs. All of the inputs are LVDS.- The ADC output clock is 250 MHz (4000 ps period).
- The data skew values relative to the DCO are: min: -160 ps, max: +360 ps.
- The IOPLL is setup in source sync compensation mode to generate a 250 MHz clock w/ a +90 degree (1000 ps) phase shift.
- The data lines from the FPGA pins go to IBUFs and then to DDIO_IN registers that are clocked by the PLL output signal.
- Using Quartus Pro 17.0.2, build 297
- I've read app note AN-433 (May-2016), and "Source Synchronous Timing" by Ryan Scoville.
- 250 MHz virtual clock for the ADC
- 250 MHz clock for the ADC DCO clock input pins
- Calls to derive_pll_clocks and derive_clock_uncertainty after the clock creation lines
- Min and max input delay constraints on the input data lines for the rising and falling edges referenced to the virtual ADC clock.
- False paths for the setup fall_to/rise_from the virtual and fall_from/rise_to the PLL output clock
- False paths for the hold fall_from/rise_to the virtual and rise_from/fall_to the PLL output clock
- Why does the source synchronous compensation mode not seem to do what it states? (why does it appear that the data delay from pin to register is not compensated for by the clock?)
- Why does the data path delay increase proportionally when I adjust the PLL phase shift value to account for the negative slack in the original design?
- Am I misunderstanding something regarding the PLL, source sync compensation, etc?
- Am I missing something in the constraints, etc. that is preventing this from working?