• 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. get the difference between two wave forms after parametric...

Stats

  • Replies 5
  • Subscribers 131
  • Views 615
  • Members are here 0

get the difference between two wave forms after parametric sweep.

Svilen64
Svilen64 20 days ago

Hello,

I have run a parametric sweep to get different delays of a clock signal and I created an expression that extracts the delay of the rising edge with respect to a reference depending on the parameter. Then I shifted that by one index count, index being swept. Now I want to take the difference between those two so I can plot the delay for each two consecutive values of the swept parameter . Can I do that without starting scripting in Skill or Ocean? 
Thanks
Svilen

  • Cancel
  • Sign in to reply
Parents
  • Andrew Beckett
    Andrew Beckett 20 days ago

    Svilen,

    Almost certainly this could be done with an expression using the eval type set to “sweeps”, but could you please share the expressions used and what you are sweeping too - it’s hard to be certain precisely what you are doing and I’d like to make sure that any specific suggestion I make has been tested and is close to what you actually need.

    Maybe also sharing a screenshot of the results you get in ADE and then showing which you want to get the difference between?

    Thanks,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Svilen64
    Svilen64 20 days ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for replying.

    I did try to attach an image yesterday but it didn't allow me. So I had to describe it in words which I'll do again, hopefully in a better way.
    I am running a parametric sweep on a variable called "bits" which controls the delay of my clock. I am sweeping it over a list of non-uniform values, something like 0 1 3 7 15 31 etc. I have also created another variable ind (for index) that's uniform, 1 2 3 4 5 6 etc. It doesn't control anything in the circuit but I grouped it in a parametric set with the first one  just to have a uniform index to plot against.
    The output I monitor is VT("/out") and the reference with respect to which I want to plot is defined as expression ref = value(VT("/out") "bits" 0)
    I have defined family = VT("/out") for the family of plots from the sweep.
    Then I define the delay from the reference 2nd rising edge to the 2nd rising edges of any of the clocks in the family del=delay(ref 0.4 2 "rising" family 0.4 2 "rising") 
    And just for the sake of it, I've also defined an expression for index=VAR("ind")
    All those are set as evalType sweeps.

    From the calculator I plot waveVsWave(?x index ?y del), also rshift(waveVsWave(?x index ?y del) 1). Now I have two plots for the delay and the delay shifted by one count of index with respect to each other. The idea was to take the difference between the two and thus have the delay between each two consecutive edges of my clock as I perform the sweep. But that difference returns 0.

    Since I couldn't upload an image here, I uploaded it to https://archive.org/details/sweep_20260226

    Regards
    Svilen

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Svilen64
    Svilen64 20 days ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for replying.

    I did try to attach an image yesterday but it didn't allow me. So I had to describe it in words which I'll do again, hopefully in a better way.
    I am running a parametric sweep on a variable called "bits" which controls the delay of my clock. I am sweeping it over a list of non-uniform values, something like 0 1 3 7 15 31 etc. I have also created another variable ind (for index) that's uniform, 1 2 3 4 5 6 etc. It doesn't control anything in the circuit but I grouped it in a parametric set with the first one  just to have a uniform index to plot against.
    The output I monitor is VT("/out") and the reference with respect to which I want to plot is defined as expression ref = value(VT("/out") "bits" 0)
    I have defined family = VT("/out") for the family of plots from the sweep.
    Then I define the delay from the reference 2nd rising edge to the 2nd rising edges of any of the clocks in the family del=delay(ref 0.4 2 "rising" family 0.4 2 "rising") 
    And just for the sake of it, I've also defined an expression for index=VAR("ind")
    All those are set as evalType sweeps.

    From the calculator I plot waveVsWave(?x index ?y del), also rshift(waveVsWave(?x index ?y del) 1). Now I have two plots for the delay and the delay shifted by one count of index with respect to each other. The idea was to take the difference between the two and thus have the delay between each two consecutive edges of my clock as I perform the sweep. But that difference returns 0.

    Since I couldn't upload an image here, I uploaded it to https://archive.org/details/sweep_20260226

    Regards
    Svilen

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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.

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

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