Get email delivery of the Cadence blog featured here
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)
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.
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.
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
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.
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