will be under maintenance from Friday, Oct. 3rd at 6pm (PST) thru Sunday, Oct 5th at 11pm (PST). login, registration, community posting and commenting functionalities will be disabled.
Home > Community > Blogs > Custom IC Design > things you didn t know about virtuoso ic 6 1 4 ade enhancements
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more convenient.

Register | Membership benefits
Get email delivery of the Custom IC Design blog (individual posts).


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

Things You Didn't Know About Virtuoso: IC 6.1.4 ADE Enhancements

Comments(4)Filed under: Custom IC Design, Virtuoso, IC 6.1.4, Virtuoso Analog Design Environment

I'm not going to beat around the bush here.  I could tell you about all the things that are new in ADE (Analog Design Environment) in IC 6.1.4.  I could tell you about the fact that the individual subwindows are now resizeable, rearrangeable (is that a word?), undockable and tabbable (I know that's not a word, but it's fun to say) just like the assistants in the main Virtuoso window.  I could tell you that the Parametric Analysis UI has been redesigned.  I could also remind you to read my earlier post about all the new features added to ADE in previous IC 6.1 releases.

But I won't.  Why?  Because there is one new feature in ADE in IC 6.1.4 that tops all the others in terms of fulfilling widespread long-awaited user requests.  Dependent expressions.  Being able to use the name of one expression in others expressions based on it instead of having to repeat the entire definition of the first expression.  No longer do you have to go cross-eyed trying to parse enormous paragraph-long expressions.  Break them up into smaller, more sensible expressions and build from there.  It's logical, it's intuitive and it's here today in IC 6.1.4.

There is a great video available here in the Cadence Online Support Video Library showing you how this works.  I have a favorite example I use in demos.  The original expression (which was created in IC 6.1.3) looks like:

((1 - (average((VT("/OUTM") - VT("/INM"))) / ((value((VT("/OUTM") - VT("/INM")) 4.3e-09) + value((VT("/OUTM") - VT("/INM")) 1.23e-08) + value((VT("/OUTM") - VT("/INM")) 2.03e-08) + value((VT("/OUTM") - VT("/INM")) 2.83e-08) + value((VT("/OUTM") - VT("/INM")) 3.63e-08) + value((VT("/OUTM") - VT("/INM")) 4.43e-08)) / 6))) * 100)

Egads!  That 33 sets of parentheses (hopefully in the right places), and 7 repetitions of the expression (VT("/OUTM") - VT("/INM")).  Not to mention I'm also interested in the values of several of the subexpressions individually (so those will have to be repeated again on their own).

So now in IC 6.1.4 that above expression can be created as:

((1 - (GainDiffAvg / GainDiffErr6Avg)) * 100)


  • GainDiffAvg = average(GainDiff)
  • GainDiff = (VT("/OUTM") - VT("/INM"))
  • GainDiffErr6Avg = ((GainDiff_4p3 + GainDiff_12p3 + GainDiff_20p3 + GainDiff_28p3 + GainDiff_36p3 + GainDiff_44p3) / 6)
  • GainDiff_4p3 = value(GainDiff 4.3e-09), etc.

Granted, it's still pretty involved, but by breaking up the expression into more manageable bits, it's a whole lot easier to see what's going on (and to make sure you've got it right).

Expressions can be added in any order and can be based on any number of other expressions.  No cyclic dependencies, please.

Hopefully, this improvement will help make it a bit easier to create the measurements your really interested in.

Stacy Whiteman



By MarkSummers on March 10, 2010
I would point out that this is available in past releases.  However there are some caveats.  You have to use the following syntax in the expression.  Y = 2  and X = 2.  Then you can use Z = X + Y.  The order matters and the equal signs in the output expression make the expression a skill expression.  However it does work.  Not having to worry about the order with the new version is a very good thing, since changing the order of expressions in the ADE window is not simple.  Thanks for the info

By Stacy Whiteman on March 10, 2010
You're absolutely right, Mark.  Thanks for the comment.  I was going to mention this in the article, but decided I didn't want to confuse things for anyone who might not be aware of that old "trick".   The new way is much more straightforward.  I also wanted to add that dependent expressions work in ADE XL as well.
BTW, another new feature in ADE in IC 6.1.4 is the ability to drag-'n-drop to reorder the rows in the Outputs, Variables and Analysis subwindows.  Dependent expressions don't depend on the order of definition, but being able to rearrange the rows does make things easier to read.  Also, reordering the analyses redefines the order in which the analyses are run.

By Lance Trodd on March 12, 2012
These dependant expression work fine on numerical dependencies but what if you want to build an expression that has a wave as its result and depends on other wave expressions? This doesn't seems to work just using the expression names within the dependant expression

By stacyw on March 19, 2012
I have not had a problem using dependent expressions for waveforms as well as for scalars.  You may want to contact Customer Support with the specific problem.

Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
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.