Continuing on our exploration of ADE XL (see here and here for previous articles), today let's take a look at the Outputs area in the center of the screen.
Any output signals or expressions which appear in the ADE XL Test Editor (or the ADE L window if you created the setup in there) will show up automatically in the Outputs Setup tab. You can still work with them the same way you always have by bringing up the Test Editor (RMB on the test name in the Data View Assistant and select Open Test Editor...).
But I'm not here to tell you how to do things the same way you've always done them...
Let's start by taking a look at the row of icons at the top of the Outputs Setup tab. The first one on the left is a pulldown that allows you to add various types of outputs and measurements to each test. So if you want to add an expression, select the appropriate test and choose "Expression". A new blank line of type "expr" will show up at the bottom of the pane. Now, double-click in the field under the column "Expression/Signal/File." You'll be able to type into the field, and you'll also see 2 cryptically labelled buttons.
Anyway, back to adding an expression. In case you didn't catch the hint, hover your mouse over the 2 buttons in the "Expression/Signal/File" field to see what they do. Now, use one of them (hint: "...") to open the calculator.
I'm not going to get into how to use the calculator in this article. I did an article on it late last year and I'll probably fill up one or two more later this year as well.
Let's fast forward to the part where you've got an expression in the calculator buffer that you want to get it back into ADE XL. Go back to the ADE XL window and click on the other mysterious icon in the "Expression/Signal/File" field (hint: "<") to pull the contents of the calculator buffer into the field.
Tip: There's another way to do this if you've already got the calculator open. To save yourself some window hopping, verify that the test name showing in the "Test" pulldown at the top of the calculator is the one you want to work with, then select Tools->Send to ADE XL Test from the calculator banner menu. This automatically creates a new expression for that test in the Outputs Setup tab and sends the contents of the calculator buffer to populate it.
Earlier this year I wrote about the exciting news that dependent expressions are now supported in IC 6.1.4 for ADE L. Well, that goes for ADE XL as well. If you want to build an expression which is built from other expressions, all you have to do is use the name of the expression (which, of course, you can assign in the Name column of the Outputs Setup panel) and off you go.
This works for creating multiple expressions within the same test. To build expressions using results from multiple tests, you use what we refer to as...
To create an output expression using results from multiple tests, just drag the desired expressions (one at a time) starting from any field in the line containing that expression in the Outputs Setup pane and drop them into the calculator buffer. When you drop in an expression, you'll see that it has morphed into a different syntax: calcVal("expression_name" "test_name"). You can use the calculator as usual to build the expression and then use either of the 2 methods described above to get it back into ADE XL.
Bonus Tip: You can create combinatorial expressions for variables in the same way, by dragging from the Outputs Setup pane into the desired Value field in the Global Variables or Design Variables sections of the Data View or Variables and Parameters Assistants (we'll talk more about variables in a future article). In this way, you can set a design variable value, such as a voltage or current source based on results from another test.Obviously, you'll need to avoid creating a cyclic dependency when you do this (a variable value which depends on results from a test which uses that variable). ADE XL will scold you if you try.
Bonus Tip: You can create combinatorial expressions for variables in the same way, by dragging from the Outputs Setup pane into the desired Value field in the Global Variables or Design Variables sections of the Data View or Variables and Parameters Assistants (we'll talk more about variables in a future article).
In this way, you can set a design variable value, such as a voltage or current source based on results from another test.
Obviously, you'll need to avoid creating a cyclic dependency when you do this (a variable value which depends on results from a test which uses that variable). ADE XL will scold you if you try.
Quick ways to create more output expressions
Sometimes you might need to use the same (or similar) expressions in several tests. To do this, simply RMB over the expression you want to use in another test, select Copy to Test and choose the test(s) you want to copy it to. You can also use Ctrl-Select or Shift-Select to grab multiple expressions and copy them all to another test. Of course you can edit them as desired after you copy them.
Tip: Double-click on an expression in the Outputs Setup pane and click that "..." icon I mentioned above to push the expression into the calculator buffer if you want to edit it more easily.
Ctrl-C and Ctrl-V also work to copy just the contents of a particular field from one place to another.
Well, I thought I'd have time for a lot more in this article, but it'll have to wait until next time. As always, leave a comment if you find any tips of your own to share or if there are any topics you'd like to see discussed further.
Yes, from the ADE XL Results pane, you can use the save icon (looks like a floppy disk with a pencil on it). You have the choice of saving to CSV format or to an HTML table.
Is it possible to take output of ade_xl as table?
Hi, Spectre supports using .vec, .vcd or .evcd files for digital stimulus. You can include these files in the Setup->Simulation Files form in the Vector Files tab.
hi , how can i give digital input to dac for testing (analog design)
Hi Parameswaran, You don't need to use the calcVal syntax for the measurement coming from same test as the measurement. So, for example, you could add your expression to TEST_DIFF:1 and it would be: (DIFF_G - calcVal("COMM_G" "TEST_COMM:1"))
I am not being able to use results from multiple tests. I am testing a diff amp and have two tests together for finding differential and common mode gain. I created an output expression just like you've shown and it comes to :
(calcVal("DIFF_G" "TEST_DIFF:1") - calcVal("COMM_G" "TEST_COMM:1"))
where DIFF_G and COMM_G are the output names for differential and common mode gain.
This produces an 'eval_err'.
This seems to be because the calcVal("COMM_G" "TEST_COMM:1") evaluated in the calculator produces the same result as the differential gain because "TEST_DIFF:1" seems to stay in the 'Test' option in the calculator.How to get over this?
Hi, For multi-test expression reuse in Monte Carlo, the best recommendation is to use a pre-run calibration script. You can find more information in the documentation and there is an extensive application note (including examples) here: support.cadence.com/.../cos (or search Cadence Online Support for "Calibrated Verification with ADE XL")
I've been trying to figure out how reusing test results in another test as design variables works. In your article you mention that it's possible, but I can't make it work. I'm calculating calibration data in testA and want to use it as an input in testB and perform a monte carlo analysis. TestB however does not run and doesn't even give an error message. Is what I'm trying to do actually not possible?
Thanks for any help.
Hi, It's not entirely clear to me what you are trying to do. If you are trying to add an expression in ADE L, you could try the sevAddExpression function. In ADE XL, you could use axlAddOutputExpr and axlAddOutputSignal. You can also use the menu pick from ADE L Outputs->Export to export the output signal and expressions to a text file, then you can do some modification and do Outputs->Import to read them back in.
Hi Stacy, I have been working on some scripts that reads the output signals/expressions from the ADE outputs area and operates on them then sets them back to the results of the modified outputs. I got one problem that the procedure "asiGetPlotList" returns only the signals so i used "asiGetOutputList" this one gets both signals and expressions. but any modification in the values returned by this procedure is reflected directly on the ADE output section. If i created the output structure "sevOutputStruct" I can't find a way to add this structure to the output section of the ADE can you help me with that. Thanks a lot for you help
Hi Lance, Thanks for your feedback. You are right that you can't plot across tests, unfortunately. You say that you ran a dc sim. Perhaps you could try a dc sweep instead. Then you could do something like: VS("/OUT") / value( VS("/OUT") 15).
Hi Stacy. I want to sweep a variable, a DAC code 0-15 say and have expressions that operate across that variable. Say I want to normalise all the results from each code setting to that of code 15. This would have been simple with a transient ramp but I chose a dc sim and varied the code across 16 separate tests, each with a unique code setting. I use the calcVal to normailise all the results in each test to test 15. Works great but I can't plot my results across tests. You can plot acros corners or design point but not tests. If I try and ctrl select all the separate test results and then do a plot, the results are in separate waveform windows and not wrt to the intended code setting. So how can i plot a result across test and nominate a variable to plot against? Or maybe ADEXL should sense the only variable different across the tests and plot against this. Or ADEXL should ask what to plot wrt. Then I would run over process corners and have a separate line graph for each process corner. I also read your article on the link above about MAC expressions and plotting expressions across corners. I would then have to assign my variable as a corner but then it would have been mixed up with process corners. I wish I had ramped the code over time in a transient sim now :-(
You may find what you need in my latest post:
Measurements across corners was implemented in 6.1.5 ISR6, so you should have access to it. You'll need to run your sweep as a corners run, then you can make various measurements on the results using the measured values over the swept corners variable(s).
Hope this helps.
I want to do what you mentioned above:
'make some measurement relating measured values from different points in a parameter sweep'
I need to sweep a variable, e.g. amplitude, and measure the step size of an output that needs skill to do the calculation (an ocean output instead of expr). I have done it the ugly way where I broke the sweep into individual tests. This very un-weildy and not very flexible.
Since it has been over a year since you made the comment ' We are planning this capability for a future enhancement.' do you know if anything has been done?
I am running IC22.214.171.1240.8
Thanks for the question. I actually don't see any shortcut way to do this. Of course, you can bring the expression into the buffer and edit it there, or send it to the Expression Editor in the calculator and edit it there (or save to, edit in then load from an external file). But I don't think you can repopulate all the fields of the function to create a new instance of the function.
That said, the calculator will tend to remember the last values you used for any given function, so the next time you create, say, a slew rate function, the fields will be populated with the values you used the last time.