• 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 35312
  • 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
  • PaulOkada
    PaulOkada over 5 years ago

    ShawnLogan,

    Thanks for the thoughtful response.  I have already characterized the minimum set up time for my flops in a similar fashion.  The problem at hand is to see how much margin exists for a given operating condition.  How would you apply your method to a random stream of data where the data to clock time varies?  Currently, I plot eye diagrams and use a delta cursor to measure the minimum time between a data transition and subsequent clock edge.  I'm looking to automate this manual measurement.

    Regards,

    Paul

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

    ShawnLogan,

    Thanks for the thoughtful response.  I have already characterized the minimum set up time for my flops in a similar fashion.  The problem at hand is to see how much margin exists for a given operating condition.  How would you apply your method to a random stream of data where the data to clock time varies?  Currently, I plot eye diagrams and use a delta cursor to measure the minimum time between a data transition and subsequent clock edge.  I'm looking to automate this manual measurement.

    Regards,

    Paul

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to PaulOkada

    Dear PaulOkada,

    PaulOkada said:
    How would you apply your method to a random stream of data where the data to clock time varies?  Currently, I plot eye diagrams and use a delta cursor to measure the minimum time between a data transition and subsequent clock edge.  I'm looking to automate this manual measurement.

    I understand. I usually write an ocean script to do this. The ocean script will walk through each individual data transition and find the "set-up" time for each transition using the algorithm I included in my prior post. The result could be placed in a new waveform or in a file or in a list. After progressing through your data waveform transitions, the minimum value of the waveform, file of "set-up times" or list will provide the minimum value.

    The ocean script can be part of a second loop which traverses through all corners in an Assembler/Explorer of ADE-XL data base to find the minimum for various process and environments.

    Are you familiar with ocean?

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • PaulOkada
    PaulOkada over 5 years ago in reply to ShawnLogan

    Shawn,

    I have not used ocean scripting much in my career.  I was hoping to using the existing "delay" function in the calculator to create a set of data to clock delays that I could then query for the minimum value.  I have tried to get this to work with my Cadence application engineer but without success.  In my application, I have hundreds of flops and my sim runs about a thousand random bits of data through them.

    Another approach would be to use the eye diagram functions (eyeAperture, eyeDiagram, eyeHeight, eyeWidth) to do what I am doing manually now.  This involves finding the eyeWidth between data and clock transitions.  Can you think of a way to apply those functions here?  It seems that if I can do it manually, that it should be automatable.

    Regards,

    Paul

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to PaulOkada

    Dear PaulOkada,

    I do not how to use the calculator alone to accomplish your end result since it requires that you iterate through a series of cross() measurements using a clip() function. However, the clip() function alone cannot accept a waveform as one its arguments to my knowledge. This is quite easy with an ocean or SKILL script. Further the calculator expression, if you can do it, will be so long it would, for me, be close to impossible to debug and understand if someone else was to use it.

    If you ever decide to use ocean, I could provide some assistance.

    As mentioned, others who monitor this forum may have better suggestions than I.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

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