• 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. VIVA calculator function cross() return wrong number of...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 126
  • Views 6912
  • 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

VIVA calculator function cross() return wrong number of rising edge

monglebest2022
monglebest2022 over 2 years ago

have the above signal evaluated by cross like below:

cross(VT("/ds_vdda_3v3_ready_comp_buf_vcasn")  "2" 1 "rising"  t "time"  nil )

the return is wrong as shown below

1. I only expect return the 1st row at 2.686.

2. The 2 extra time at 14.141 second is for the falling edge. By checking the symbol in the above diagram, there is no data point there.

3. I have these signal ds_vdda_3v3_ready_comp_buf_vcasn across PVT and some corners report correct 1 row return while others return the below wrong data.

env is

Not interested to file cadence support as it's too time consuming to debug with. 

Previous workaround including change the cross voltage from 2.0 to some other values, but that tricks doesn't work here. 

  • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear monglebest2022,

    1. If you only want a single rising edge output, you should change your argument "t" to "nil". With an argument of "t", you are requesting multiple edge crossings.

    2. Are you sure your transient waveform does not undergo a change in slope polarity as it crosses the switching threshold? You mentioned "checking the symbol in the above diagram", but did you actually check the data by either exporting it about the falling edge or using ViVA to expand the vertical and horizontal axes about 2V and 14.14. This is often the case that will result in detecting a "rising" (or falling) cross event on what appears to be a "falling" (or rising) waveform transition. You might also take the derivative of the waveform to spot a change in slope polarity.

    3. If you are encountering numerical noise issues, you might add a tolerance to your cross expresssion.

    In summary, perhaps you should consider the following set of arguments after verifying your waveform:

    cross(VT("/ds_vdda_3v3_ready_comp_buf_vcasn") "2" 1 "rising" nil "time" nil <your_desired_tolerance>)

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago
    monglebest2022 said:
    Not interested to file cadence support as it's too time consuming to debug with.

    Probably not the best way to encourage those of us from Cadence who answer here in our free moments to consume that valuable spare time looking at this.

    • 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