• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. measuring set up time for a DFF

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 125
  • Views 35310
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

measuring set up time for a DFF

PaulOkada
PaulOkada over 5 years ago

In my simulation, the D input to the flop consists of random data.  I would like to measure the time between each transition of data to the capturing clock edge.  It is not hard to trigger on the crossings for data but I have a hard time to set the stop time as the subsequent clock edge.  I have tried as many variants of the Delay function that I can think of but none seem to work.  

Here are example waveforms.  The goal is to find the minimum set up time for a long sequence of events.

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 5 years ago

    Dear PaulOkada,

    The method you have chosen to characterize set-up time is a bit non-conventional. The method used in the industry commonly is one that measures the propagation delay time and examines its magnitude as the delay between the input data and clock is varied. When the propagation delay increases by a threshold (usually 1% or a few percent) from its value when the clock and data are not in close proximity, the time is classified as  a "setup" or "hold" time. I've illustrated an example from an analysis I did some time ago.

    In the method you are planning to study, you will not get a quantitative view as to how close the minimum time you measure is to the actually minimum setup time - if my comment makes any sense.

    Nevertheless, to answer your question:

    PaulOkada said:
    would like to measure the time between each transition of data to the capturing clock edge.  It is not hard to trigger on the crossings for data but I have a hard time to set the stop time as the subsequent clock edge. 

    If you locate a given data transition time, I might suggest you use the cross() function on a clipped version of the clock signal to measure the first clock edge after a given data transition. Specifically, the algorithm might be:

    1. Locate a data transition, Tdata.

    2. Clip the clock signal between Tdata and the end of the simulaiton and define the clipped signal as clock_clipped

    3. Locatie the first clock transition of the signal clock_clipped using the cross() function where the crossing incident corresponds to 1 and the direction of the transition corresponds to whether the DFF samples on the clock riisng or falling edge;  define its value as clock_clipped_sampling_transition_1

    4. Take the time difference (clock_clipped_sampling_transition_1 - Tdata); this corresponds to the time difference between the data edge Tdata and the next sampling clock edge

    I hope I understood your question and this helps you out...

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan over 5 years ago

    Dear PaulOkada,

    The method you have chosen to characterize set-up time is a bit non-conventional. The method used in the industry commonly is one that measures the propagation delay time and examines its magnitude as the delay between the input data and clock is varied. When the propagation delay increases by a threshold (usually 1% or a few percent) from its value when the clock and data are not in close proximity, the time is classified as  a "setup" or "hold" time. I've illustrated an example from an analysis I did some time ago.

    In the method you are planning to study, you will not get a quantitative view as to how close the minimum time you measure is to the actually minimum setup time - if my comment makes any sense.

    Nevertheless, to answer your question:

    PaulOkada said:
    would like to measure the time between each transition of data to the capturing clock edge.  It is not hard to trigger on the crossings for data but I have a hard time to set the stop time as the subsequent clock edge. 

    If you locate a given data transition time, I might suggest you use the cross() function on a clipped version of the clock signal to measure the first clock edge after a given data transition. Specifically, the algorithm might be:

    1. Locate a data transition, Tdata.

    2. Clip the clock signal between Tdata and the end of the simulaiton and define the clipped signal as clock_clipped

    3. Locatie the first clock transition of the signal clock_clipped using the cross() function where the crossing incident corresponds to 1 and the direction of the transition corresponds to whether the DFF samples on the clock riisng or falling edge;  define its value as clock_clipped_sampling_transition_1

    4. Take the time difference (clock_clipped_sampling_transition_1 - Tdata); this corresponds to the time difference between the data edge Tdata and the next sampling clock edge

    I hope I understood your question and this helps you out...

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information