Electronic – a ripple clock

clockfpgaintel-fpgatiming-analysis

I am reading Chapter 12. Recommended Design Practices from the Quartus II Handbook Version 13.1
Volume 1: Design and Synthesis
which states (p. 8):

Ripple counters use cascaded registers, in which the output pin of one
register feeds the clock pin of the register in the next stage. This
cascading can cause problems because the counter creates a ripple
clock at each stage. These ripple clocks must be handled properly
during timing analysis, which can be difficult and may require you to
make complicated timing assignments in your synthesis and placement
and routing tools.

What is a ripple clock? Why is timing analysis difficult on a ripple clock?

Best Answer

In Quartus II, Ripple clock is any clock driven by the output of another register. Couple of issues with ripple clocks:

  1. The last clock will have a delay than the input clock, because it goes through a number of flops. So what is the problem with this delay? You'll have problem when your design have cross-domain paths between these two clocks. If any path have a launching clock from the input clock domain and capturing clock coming from that derived clock domain, that path will have a large skew. So you'll have a hard time to meet the timing.

  2. Another problem is with writing SDC constraints. You have to write the clock definitions on each stage even if they aren't used. See an example here on page 18.