Home > Community > Forums > Custom IC Design > Plotting results in multiple graphs

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Plotting results in multiple graphs 

Last post Tue, Oct 20 2009 5:44 PM by Andrew Beckett. 10 replies.
Started by Grover 05 Oct 2009 04:12 AM. Topic has 10 replies and 3215 views
Page 1 of 1 (11 items)
Sort Posts:
  • Mon, Oct 5 2009 4:12 AM

    • Grover
    • Top 200 Contributor
    • Joined on Tue, May 19 2009
    • Posts 37
    • Points 725
    Plotting results in multiple graphs Reply

    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?

    • Post Points: 35
  • Mon, Oct 5 2009 1:02 PM

    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Tue, Oct 6 2009 1:59 AM

    • Grover
    • Top 200 Contributor
    • Joined on Tue, May 19 2009
    • Posts 37
    • Points 725
    Re: Plotting results in multiple graphs Reply

    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?

    • Post Points: 20
  • Wed, Oct 7 2009 1:10 AM

    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Wed, Oct 7 2009 1:15 AM

    • Grover
    • Top 200 Contributor
    • Joined on Tue, May 19 2009
    • Posts 37
    • Points 725
    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Wed, Oct 7 2009 4:10 AM

    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Thu, Oct 8 2009 2:49 AM

    • Grover
    • Top 200 Contributor
    • Joined on Tue, May 19 2009
    • Posts 37
    • Points 725
    Re: Plotting results in multiple graphs Reply

    Andrew Beckett:
    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?

    • Post Points: 20
  • Thu, Oct 8 2009 7:09 AM

    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Thu, Oct 8 2009 8:09 AM

    • Grover
    • Top 200 Contributor
    • Joined on Tue, May 19 2009
    • Posts 37
    • Points 725
    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 20
  • Thu, Oct 8 2009 8:23 AM

    Re: Plotting results in multiple graphs Reply

    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.

    • Post Points: 5
  • Tue, Oct 20 2009 5:44 PM

    Re: Plotting results in multiple graphs Reply
    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.
    • Post Points: 5
Page 1 of 1 (11 items)
Sort Posts:
Started by Grover at 05 Oct 2009 04:12 AM. Topic has 10 replies.