• 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. psf format different when simulation is run from ADE or...

Stats

  • Replies 8
  • Subscribers 134
  • Views 79
  • Members are here 0

psf format different when simulation is run from ADE or in command line

kkdesbois
kkdesbois 8 hours ago

Hello,
When I run a simulation from ADE, I can see in VIVA a wave for each net, even if the simulation is a DC without sweep.


If I run the simulation file runSimulation from the directory netlist created by ADE, in VIVA each net is a scalar now and can not be plotted


Any reason for that? What makes the creation of wave rather than a scalar?
Laurent.

  • Sign in to reply
  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett 6 hours ago

    Laurent,

    This is because in the top one you are using the results browser for the entire set of simulations (you might only be running one, but ADE could allow multiple runs because of sweeps or corners). In other words, you're looking at the psf/testName/psf dir rather than (e.g. 1/testName/psf dir - the number being one of the points). If you go over one of the output cells in the ADE results and do Right Mouse->Results Browser it would open the specific point only and then you should see what you are seeing in the bottom ViVA.

    Hope that makes sense.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kkdesbois
    kkdesbois 5 hours ago in reply to Andrew Beckett

    Thanks Andrew.
    While you were answering, I realized my mistake and misunderstanding.

    ExporerRun0/psf/testName/psf : the nets are saved as waves
    ExporerRun0/1/testName/psf : the nets are saved as scalars

    And of course when I RMB->Open Terminal and launch runSimulation, I re-create this ExporerRun0/1/testName/psf (i.e, scalar).

    Now my questions are: 
    How is the ExporerRun0/psf/testName/psf created?
    Is it possible (with a spectre argument or option) to make the ExporerRun0/1/testName/psf contain waves rather than scalar?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 5 hours ago in reply to kkdesbois

    It's not really that the nets are saved as waves for psf/testName/psf. What happens is that for the psf/testName/psf dir, ADE creates a runObjFile which collates the individual point results together as a family, and hence when opening that you get waveforms instead (because there might be more than one point simulated and even with a single point it's a waveform of one point).

    You'd have to surround the analyses statements in spectre with some kind of sweep to achieve the same thing:

    tempSweep sweep param=temp values=[27] {
      dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
      dcOpInfo info what=oppoint where=rawfile
    }

    This is a sweep of one point. I'm not sure why you would want to do this though?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett 5 hours ago in reply to kkdesbois

    It's not really that the nets are saved as waves for psf/testName/psf. What happens is that for the psf/testName/psf dir, ADE creates a runObjFile which collates the individual point results together as a family, and hence when opening that you get waveforms instead (because there might be more than one point simulated and even with a single point it's a waveform of one point).

    You'd have to surround the analyses statements in spectre with some kind of sweep to achieve the same thing:

    tempSweep sweep param=temp values=[27] {
      dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
      dcOpInfo info what=oppoint where=rawfile
    }

    This is a sweep of one point. I'm not sure why you would want to do this though?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • kkdesbois
    kkdesbois 5 hours ago in reply to Andrew Beckett

    ok, clear. I understand now the utility of this runObjFile.


    Why do I want a psf with waves?
    I save ADE outputs (ocean expressions) and would like to apply them, thanks to an ocean script, to a psf created by a spectre unix command.
    example : 
    This ADE expression : 
    is saved in an ocean script as : offset=(abs (difference (VDC "/VOUT") (VDC "/VREF")))
    If this this ocean expression is applied on a psf created from spectre unix command (i.e, containing scalar if the DC analysis has no sweep), it returns the following error : 
    *Error* difference: can't handle (nil - nil)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 4 hours ago in reply to kkdesbois

    That expression should work if VDC() returns a scalar (it certainly can do that) It's just subtracting two scalar values and then taking the absolute value - that should be OK. The issues is that VDC() is returning nil. That's because the argument to the VDC has been given as a schematic  name rather than a netlist name (it begins with a "/" and could use "/" as the hierarchy separator). For this to work, it needs the runObjFile in the point psf directory to point to the netlist directory, where it uses the mapping data to map from schematic names to netlist names.

    If you change the expression to (abs (difference (VDC "VOUT") (VDC "VREF"))) then it would work fine (the leading slash is removed).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kkdesbois
    kkdesbois 4 hours ago in reply to Andrew Beckett

    ok. Thanks for the explanation. I really thought that VDC() returned nil because it's a scalar in psf and not a wave.
    So I need to adapt the ADE output expressions to support netlist names.

    Laurent.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kkdesbois
    kkdesbois 3 hours ago in reply to kkdesbois
    kkdesbois said:
    So I need to adapt the ADE output expressions to support netlist names.

    By the way, Is there a function to transform the ADE output expressions written as schematic name to expression written as netlist name?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 2 hours ago in reply to kkdesbois

    Not really. The trouble is that the mapping could be complex if the name happened to use a spectre reserved word, but in general you could use:

    asiMapNetName("/the/path/to/maestro/results/maestro/Interactive.10/2/TRAN_ONLY/psf" list("/diffOut"))

    (it copes with the "psf" dir or the one above - the "data" dir).

    That's just for the net name part - it doesn't transform the entire expression.

    Andrew

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

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

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