Greetings,
What's the best way to clock DDR flops from a DCM?
In all the DDR I/O I've produced, I've always used the DCM clock output through a BUFG, feeding the normal and inverted versions of that buffered clock to my I/O registers. I understand that - at least in some silicon - there can be duty-cycle distortion that would compromise this normal/invert approach versus the alternative....
Much of the early DDR information suggested using the 0 and 180 degree outputs from the DCM. I never considered this a good design practice because the outputs are going through different BUFGs with different clock loads on each net resulting in a designed-in skew that would compromise the DDR sampling windows.
Is there any real evidence one way or the other to suggest that one of these approaches is better than the other?
I was sad to see the code for xapp485 appears to use two BUFGs, but not for CLKFX and CLKFX180, but inputs of CLKFX and ~CLKFX! If that's not a bastardization of the two choices, I'm not sure what is.
Don't newer parts route differential clocks for single global clock nets now? Or is that just the Virtex series? My designs are currently Spartan-3E with DDR I/O in the 400-600 Mb/s range.
- John_H