Home > Community > Blogs > Custom IC Design > things you didn t know about virtuoso we re in your corner

 Login with a Cadence account. Not a member yet? Create a permanent login account to make interactions with Cadence more conveniennt. Register | Membership benefits
 Get email delivery of the Cadence blog (individual posts).

## Email

Recipients email * (separate multiple addresses with commas)

Message *

 Send yourself a copy

## Subscribe

Intro copy of the newsletter section here, some intro copy of the newsletter. Instruction of how to subscribe to this newsletter.

First Name *

Last Name *

Email *

Company / Institution *

 Send Yourself A Copy

# Things You Didn't Know About Virtuoso: Measurements Across Corners

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.

• ymax(myDelay)
• ymin(myDelay)
• average(myDelay)
• peakToPeak(myDelay)
• stddev(myDelay)

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):

value(myDelay 65)

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!

Stacy Whiteman