• 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. Sampled PNOISE/PXF analyses: how to get the "eventtime"...

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 125
  • Views 4363
  • 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

Sampled PNOISE/PXF analyses: how to get the "eventtime" values found by simulator?

dontpanic
dontpanic over 6 years ago

Hi! I want to automate the plotting of sampled PNOISE and PXF results, but for these simulations the getData() function expects an argument "eventtime" (corresponding to the sampling event(s) found in the PSS run).

How can I determine the values getData() expects for "eventtime"? I tried determining them manually using the cross() and list() calculator functions, but the results don't match the string values (or list of string values?) getData() expects due to rounding / number format mismatches (e.g. for the same point the calculator returns 33.0776972388E-12, while getData() expects '3.30777e-11).

Thanks and regards,

Jorge

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    Hi Jorge,

    sweepVarValues("eventtime" ?result 'pxf)

    For newer pnoise where you have the jitter(sampled) mode, you'd have to use something like:

    sweepVarValues("jittereventtime" ?result 'pnoise_sample_pm0)

    The output result database name has changed, and it's called jittereventtime rather than eventtime - but the principle is the same.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 6 years ago in reply to Andrew Beckett

    Thanks so much for your prompt reply, Andrew! After some trial and error I got it working (got messy with the output returned by sweepVarValues()). For a 2-event (rising and falling edges) sampled PXF simulation, I got the instants using the following expressions:

    Trising_edge = car(sweepVarValues("eventtime" ?result 'pxf))

    Tfalling_edge = cadr(sweepVarValues("eventtime" ?result 'pxf))

    Note: strangely enough, entering sweepVarValues("eventtime" ?result 'pxf) on the calculator returns the instants as a complex number (!)

    Thanks again for your help!

    Regards, Jorge.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to dontpanic

    Hi Jorge,

    Yes, for some strange reason the calculator interprets a list of two numbers as a complex value despite there being an explicit complex type. I’m not sure why.

    Was about to say that you can do:

    value(getData(“/V0” ?result ‘pxf) “eventtime” car(sweepVarValues(“eventtime” ?result ‘pxf)))

    but you’ve worked that out (can use cadr for the second event). If more than that you could use the nth or nthelem functions to pull out the nth crossing events (nth uses indexing starting from 0 and nthelem starts from 1).

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 6 years ago in reply to Andrew Beckett

    Great, thanks for the info!. Just one follow up: for PXF the wave returned by getData() seems to preserve the separation by sidebands, so when I try to evaluate "the full curve" at a particular point with value(), it returns multiple crossings (one per for each sideband--I guess for the ones which actually don't include the evaluation frequency, it's interpolating).

    Is there a way to "combine" or "fuse" the different sidebands in the object returned by getData(), so as to produce a "consolidated" waveform that can be properly evaluated with value()?

    Thanks again, Jorge.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • dontpanic
    dontpanic over 6 years ago in reply to Andrew Beckett

    Great, thanks for the info!. Just one follow up: for PXF the wave returned by getData() seems to preserve the separation by sidebands, so when I try to evaluate "the full curve" at a particular point with value(), it returns multiple crossings (one per for each sideband--I guess for the ones which actually don't include the evaluation frequency, it's interpolating).

    Is there a way to "combine" or "fuse" the different sidebands in the object returned by getData(), so as to produce a "consolidated" waveform that can be properly evaluated with value()?

    Thanks again, Jorge.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to dontpanic

    Jorge,

    Quick answer as plane about to take off. You should use the harmonic function to pull out the sideband you want first and then you’ll have a simple value vs frequency curve that you could use cross on. 

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 6 years ago in reply to Andrew Beckett

    OK, thanks so much! Indeed the following works, though I need to determine in advance the sideband including the desired evaluation frequency:

    value(leafValue( my_PXF_spectrum "harmonic" 0 ) VAR("my_eval_frequency"))

    Thanks again! Enjoy your flight! Smiley

    Regard, Jorge.

    • 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