Can jitter in clock effect setup and hold violations?

First of all, we need to understand what is meant by jitter. In most simplistic language, jitter is the uncertainty of a clock source in production of clock edges. For example, if we say that there is a 100 MHz clock source. Ideally, it should produce a clock edge at 0 ns, 10 ns, 20 ns... So, if we say that there was a clock edge at time t = 30 ns, we should get the next clock edge at t = 40 ns. But this is hardly so; due to the uncertainty of getting a clock edge, we might get the next edge between 39.9 ns to 40.1 ns. So, we say that 0.1 ns is the jitter in the period of the clock. In reality, the definition of jitter is more complex. But, for our scope, this understanding is sufficient.

Let us consider a simple timing path from a positive edge-triggered flip-flop to a positive edge-triggered flip-flop.


Now, let us come to our discussion. First, let us discuss the effect of clock jitter on setup slack.

Effect of clock jitter on setup slack for single cycle paths: From our knowledge of STA basics, setup check formed, in this case, will be from edge 1 -> edge 3. Now, if we know that edge 1 arrived at 20 ns, then edge 3 may arrive at any time (20 ns + CLOCK_PERIOD + jitter) and (20 ns + CLOCK_PERIOD - jitter). So, to cover worst case timing scenario, we need to time as per (20 ns + CLOCK_PERIOD - jitter). So, effectively, we will get (CLOCK_PERIOD - jitter) as effective clock period.

In other words, jitter in clock period makes the setup timing more tight. Or it decreases setup slack for single cycle timing paths.


Effect of clock jitter on hold slack for single cycle paths: Going on the same grounds as setup slack, hold check will be from edge 1 -> edge 1 only. And we know with certainty that edge 1 will leave the source at 20 ns only. So, hold slack should not get bothered by the amount of jitter present at the clock source for single cycle timing paths.

Now, you understand the basics of  how jitter affects setup and hold slacks. We can state as below:

If the check being formed involves two different edges of same polarity (for instance, different rising edges), then, jitter in clock period will affect setup slack. Otherwise, it will not.

Now, can you guess the effect of jitter on setup and hold slacks for zero cycle timing paths?

Also, what will be the amount of pessimism needed to be taken into account for setup and hold slacks' calculations if the timing path is a multi-cycle path taking 2 cycles for setup and zero cycle for hold?

Also read:



7 comments:

  1. The above statement is wrong. Hold slack is effected by clock jitter.

    ReplyDelete
    Replies
    1. The above statement is for single cycle paths. :-)

      Delete
    2. Can you please share which hold paths are effected by clock jitter? In my understanding since hold is single cycle so it should not be effected.

      Delete
    3. Hi

      Yes, for single cycle paths, hold is on same edge. Hence, it is not effected by clock jitter. But for a zero cycle timing path, hold check is from N to (N-1) edge, hence, slack is affected by clock jitter. You can refer point 3 in https://vlsiuniverse.blogspot.com/2015/04/can-hold-be-frequency-dependant.html.

      Also, I recommend you to go through https://vlsiuniverse.blogspot.com/2018/07/is-hold-always-checked-on-same-edge.html

      I hope it will be clear now. We can discuss more in case of further queries.

      Delete
  2. does the jitter has any effect on propagation delay of flipflop i.e C2Q delay?

    ReplyDelete
    Replies
    1. Hi

      No, jitter does not affect C2Q delay. C2Q delay depends only on clock pin transition and load seen by Q pin.

      Delete
  3. Setup gets affected by 2*jittervalue as 2 edges are involved. both edges experience uncertainty. Launch= original + jitter and for capture=original - jitter. so overall available time= T - 2*jitter

    ReplyDelete

Thanks for your valuable inputs/feedbacks. :-)