Quiz: Modeling skew requirements with data-to-data setup and hold checks


Problem: Suppose there are 'N' signals which are to be skew matched within a window of 200 ps with respect to each other. Model this requirement with the help of data setup and hold checks.

As we discussed in data setup and data hold checks, data setup check of 200 ps means that constrained data should come at least 200 ps before the reference data. Similarly, data hold check of 200 ps constrains the constrained data to come at least 200 ps after the reference data. The same is shown pictorially in figure 1(a) and 1(b).


Data check of 200 ps ensures the constrained data to come at least 200 ps before the reference data
Figure 1(a): Data setup check of 200 ps constrains the constrained signal to toggle at-least 200 ps before reference signal toggles.

Data hold check of 200 ps ensures that the constrained data comes at least 200 ps after the reference data
Figure 1(b): Data hold check of 200 ps constrains the constrained signal to toggle at-least 200 ps after the reference signal has toggled.

Now, suppose you apply a data setup check of -200 ps instead of 200 ps. This would mean that the constrained signal can toggle upto 200 ps after the reference signal. Similarly, a data hold check of -200 ps would mean that the constrained signal can toggle from 200 ps before the reference signal. If we apply both the checks together, it would infer that constrained signal can toggle in a window that ranges from 200 ps before the toggling of reference signal to 200 ps after the toggling of reference signal. This is pictorially shown in figures 2(a) and 2(b).

Negative data setup and data hold checks together will ensure a skew check between reference and constrained signals
Figure 2(a): Negative data setup and hold checks of 200 ps
If we combine the two checks, it implies that the constrained data can toggle upto 200 ps after and from 200 ps before the reference signal. In other words, we have constrained the constrained signal to toggle in a window +- 200 ps within the reference signal.

Coming to the given problem, if there are a number of signals required to toggle within a window of 200 ps, we can consider one of these to act as reference signal and other signals as constrained signals. The other signals can then be constrained in both setup and hold with respect to reference signal such that all of these lie within +-100 ps of the reference signal. The same is shown in figure 3 below:

We can constrain the signals to toggle within a window by choosing one of these as reference signal and applying negative data setup and data hold checks for other signals with respect to reference signal
Figure 3: Data checks to maintain skew between N signals


4 comments:

  1. Hi,

    Just to let you know, I think skew windows created using set_data_check -setup and -hold options are mutually exclusive windows, and hence it would be incorrect to say that skew window is setup+hold width wide. To create a skew window of 200ps for N signals, both -setup and -hold options require 0.2 , not 0.1
    However, if you want to create "no change window" around an edge or a pulse, then -setup and -hold options, then no change window width is the combined value (setup+hold)
    Does that make sense?

    Thanks,

    ReplyDelete
    Replies
    1. Hi

      You are right in case there are only two signals. But in the question of concern, there were a number of (let us say 10) signals which have to be maintained within a skew of +-200 ps. So, if we take signal "0" as reference. If signal "1" is -100 ps wrt signal "0" and signal "2" is +100 ps wrt signal "0", then signals "1" & "2" are 200 ps apart. That is how, 200 changed to 100. I hope I make sense.

      Delete
    2. That's completely wrong analysis. Not sure why would you think that to be correct for 2 signals but not for >2 signals. set_data_check skew check commands remains the same irrespective of the number of signals to be skew-checked. Anyways, I am not here to debate over. I would suggest draw waveforms, write a script for skew check, dump out skew check reports from primetime/tempus, and see what's going on. May be you can share the reports if you think you are right. thanks

      Delete
    3. Hi Amit

      Yes, the problem given here is "skew-constrain a few signals with the help of data checks for a skew of 200 ps". There can be two ways of doing this (not writing as per syntax, more in algorithmic form):

      1. for {i = 0} {i < num} {i++} {
      for {j = 0} {j < i} {j++} {
      if {i != j} {
      set_data_check 200 -setup -from signal[i] -to signal[j]
      }

      2. Take a reference signal, for instance signal 0 and constrain each signal with respect to this (the method chosen here). Now, constraining signal 1 and signal 2 with 200 ps with respect to signal[0] will mean that signal 1 and signal 2 can have 400 ps skew between themselves. That is why, it has to be made 100 ps.
      for {i = 1} {i < num} {i++} {
      set_data_check -setup 100 -from signal[0] -to signal[i]
      }

      You can refer figure 3 for more clarity. This is the drawn waveform as well. :-)

      Delete

Thanks for your valuable inputs/feedbacks. :-)