• 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. Plotting results in multiple graphs

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 126
  • Views 20390
  • 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

Plotting results in multiple graphs

Grover
Grover over 15 years ago

Is it possible in ADE XL to automatically plot different results in different subwindows? It is of course possible to plot several signals one by one while using the "New SubWin" plot mode, but is it also possible to do this automatically after each simulation?

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    I replied to this earlier via the email approach, but there's a problem with the email reply to this forum at the moment. So posting via the web too...

    Right now this isn't possible (at least not without a bit of customization), but it's one of the things we're planning to do in an upcoming release (hopefully IC615, due mid next year).

    Best Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Grover
    Grover over 15 years ago

    Ok, that's too bad.

    I was asking this because right now I'm working on a circuit where I'm plotting two expressions which are somewhat incompatible. There's an expression that returns the rise time of my circuit, and one that returns the power consumption. Now the rise time is about 1 nanosecond, and the power is a few microwatts. However, both are evaluated to a dimensionless quantity: WaveScan (Viva? whatever it's called these days) shows "Y0 (E-6)" on the Y-axis. Obviously, the 1 nano becomes invisible next to the 1 micro. Is there a reason why the units are lost, and is there a way to restore them?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    What are the two expressions? Normally the expressions would have units, and this would result in separate axes being used. If you can tell me the expressions, I can figure out what is going wrong...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Grover
    Grover over 15 years ago

    I have:

    t_rise = riseTime(VT("/vout") 0 nil 12 nil 10 90 nil "time")
    power = ((integ(IT("/V0/MINUS") 5e-09 2.5e-08) - (1e-13 * 12)) * 12 * 1000000.0)

    These are scalar quantities of course, but I'm running a corner simulation, so I get a graph that shows these as a function of the corner list. The scalar results displayed in the ADE results tab are always shown without units (why is that, anyway?), so you can never really tell what units they're in until you plot them in Wavescan.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    OK, so these are producing scalar results, so as such would be unitless. Hmm, I have one example ADE XL database which does the right thing - but I've not yet figured out how it knows to do this. I'll do some research and post here when I find the answer.

    Good - I'll get to learn something today!

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Grover
    Grover over 15 years ago

    Andrew Beckett said:
    OK, so these are producing scalar results, so as such would be unitless.

    Do you mean that scalar quantities cannot have a unit? That wouldn't make sense at all.... Obviously, I might add, the second expression should not evaluate to units of power, but to units of charge, since the only quantities with dimensions in the expression are current and time. I just entered "12" in the expression instead of grabbing the voltage, since the expression is unreadable enough already and I'm not changing the voltage anyway. Isn't there a simple way to just include a unit somewhere?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Actually in IC614, you can specify units in the outputs pane in ADE XL for any scalar result. However, it seems that the units affect the numbers displayed on the results tab, but not the curves themselves - I will file a CCR to get that fixed.

    I think I've discovered how the curves get generated for the scalar outputs when you've done (say) a sweep of a parameter in ADE XL, and as a results of that discovery, I've put together a custom calculator function to set the units.

    Ensure this code is loaded from your .cdsinit - you can then surround the expression with this abSetUnits() function - by picking it in the User Defined SKILL Functions in the calculator, or just by adding abSetUnits(riseTime(...) "s") for example. See the comments at the top for how to register the calculator function.

    Here's the code:

    /* abSetUnits.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Oct 08, 2009 
    Modified   
    By         
    
    abSetUnits(waveform "s")
    
    sets the units on a waveform to be seconds.
    
    abRegSetUnitsSpecialFunction()
    
    registers a function in the calculator to alter the units on a 
    waveform.
    
    ***************************************************
    
    SCCS Info: @(#) abSetUnits.il 10/08/09.15:05:50 1.1
    
    */
    
    /****************************************************************
    *                                                               *
    *                    (abSetUnits wave units)                    *
    *                                                               *
    * Sets the units on a waveform, or all the members of a family. *
    * If it is just a value, pass straight through (can't set units *
    *                         on a number).                         *
    *                                                               *
    ****************************************************************/
    
    (defun abSetUnits (wave units)
      (cond 
        ((drIsWaveform wave)
         (putpropq (drGetWaveformYVec wave) units units)
         )
        ((famIsFamily wave)
         (famMap 'abSetUnits wave units)
         )
        )
      wave
      )
    
    /***************************************************************
    *                                                              *
    *                    (abCreateSetUnitsForm)                    *
    *                                                              *
    *  Set up a form for the special function on the calculator,   *
    *  which gives choices for the units. It needs to be cyclic,   *
    *   because if it's a type in field, quotes don't get added    *
    *                      around the units.                       *
    *                                                              *
    ***************************************************************/
    
    (defun abCreateSetUnitsForm ()
      (let (units)
        (setq units (ahiCreateCyclicField
    		  ?name 'units
    		  ?prompt "Units"
    		  ?choices '("V" "A" "s" "W" "dB" "Wb" "C" "Hz")
    		  ?value "V"
    		  ))
        (calCreateSpecialFunctionsForm
          'abSetUnitsForm
          (list 
    	(list units 0:0  180:20 140)
    	)
          )
        ))
    
    /*****************************************************************
    *                                                                *
    *                 (abSetUnitsSpecialFunctionCB)                  *
    *                                                                *
    * Callback for the abSetUnits special function, which constructs *
    *           the buffer input from the form and stack.            *
    *                                                                *
    *****************************************************************/
    
    (defun abSetUnitsSpecialFunctionCB ()
      (calCreateSpecialFunction
       ?formSym 'abSetUnitsForm
       ?formInitProc 'abCreateSetUnitsForm
       ?formTitle "Set Units"
       ?formCallback 
       "(calSpecialFunctionInput 'abSetUnits '(units))"
       ))
    
    
    /***************************************************************
    *                                                              *
    *                (abRegSetUnitsSpecialFunction)                *
    *                                                              *
    *                Register the special function                 *
    *                                                              *
    ***************************************************************/
    
    (defun abRegSetUnitsSpecialFunction ()
      (calRegisterSpecialFunction
       (list "abSetUnits..." 'abSetUnitsSpecialFunctionCB))
      t
      )
    

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Grover
    Grover over 15 years ago

    Thanks for the script, it works great! But what exactly do you mean that you can specify units in the outputs pane for scalar results? I can't find any option for that.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    You can't find any option for that because it's in (as I mentioned) IC614, which is due for release at the end of November...

    I was checking in a pre-release version.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago
    Right now this isn't possible (at least not without a bit of customization), but it's one of the things we're planning to do in an upcoming release (hopefully IC615, due mid next year).

    Best Regards,

    Andrew.
    • 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