In Virtuoso IC 6.1.5 ISR6, we released a new feature in ADE XL, which had been requested by many customers--the ability to define a measurement expression which operates on the results of another measurement expression across corners. For example, I can create an expression to measure, say, a delay. Call it "myDelay". Now I can create another expression which calculates, for example, the maximum value of "myDelay" over all the corners I ran.
To do this, I simply add an expression in the ADE XL Outputs Setup pane, give it a name (optional), and set the cyclic in the "EvalType" column (you were wondering what that new column was for, weren't you?) to "corners". The line will now be highlighted in blue to distinguish it from regular waveform and scalar expressions. Now create your expression. If you use the functions ymax, ymin, average, peakToPeak or stddev, the argument "?overall t" will automatically be added to the function to ensure the values are treated by the function as discrete, rather than continuous points.
It should be fairly obvious what the above functions do--you run a simulation over corners and you can find the max, min, average, spread (peakToPeak), and stddev of any scalar measurement over those corners.
Perhaps not so obvious is the fact that you can use other functions to measure across corners as well. For example, if you create a set of corners as a temperature sweep (remember, the definition of corners in ADE XL isn't restricted to PVT--you can create a variable out of pretty much anything and then sweep it in the Corners form), you can create a MAC expression using the cross() function to find the temperature at which an expression reaches a certain value:
cross(myDelay 200n 1 "either" nil nil)
Or you can use the value() function to find the value of an expression at an interpolated temperature value (or whatever variable you swept in your corners run):
MAC expressions are also supported for Monte Carlo analysis and Local and Global Optimization.
I'm sure you'll find this new feature useful. As always, comments and feedback are welcome!
Hi, I would like to know if there are some functions that could operate across parametrical sweep. For example I'm going to define trimming not for concrete value but for temperature coefficient. So I'm doing parametrical sweep for dc temperature sweep, how could I get value of trim (that is in parametrical sweep ) for minimum TC (min (TC) across parametrical sweep). Thanks, Lena
We currently don't support measurements across sweep values. But you can always set up your sweep in the Corners UI instead and measure across corners that way. We are looking at measurements across sweeps as a future enhancement.
Is it possible to select which parameter is plotted on the X axis of a graph when a corner sweep is done across more than one variable? For example if I do transient sims for a circuit at different frequencies for each of 3 supply voltages, how can I make sure that when I plot the graph I get frequency on the X axis and not voltage?
Right now, it is not possible to pre-select which variable appears on the x-axis. You can change the x-axis of any plot by clicking RMB on the axis in the graph and choosing "Swap Sweep Var". We are working on an enhancement for 6.1.6 ISR9 in which you will be able to drag and drop variables and corners in the UI so you will be able to change which variable appears on the x-axis that way.