Get email delivery of the Cadence blog featured here
I know, it's been a long time since my last post. You see, we've finally arrived at a topic near and dear to my heart -- ADE XL. The reason for my hesitation in approaching this topic is not that it's difficult, but rather that there's so much to talk about that it's hard to know where to start. It's a bit like trying to write a guidebook for the Louvre. The place is enormous. Do you describe the building itself? The Antiquities? the Renaissance? That crazy looking glass pyramid?
I plan this to be a series of articles on all the great features of ADE XL. There's plenty to write about, but for those of you already familiar with the subject, please use the comments to give me feedback on any aspects of ADE XL you'd like to know more about and I'll be sure to include any "things you didn't know" that I can think of.
Well, I guess the guidebook won't make any sense unless you know what the Louvre is, so it's probably best to start with the basics. (BTW, I'm really not trying to compare ADE XL to the Louvre. That would be silly. Besides, you don't have to wait in line nearly as long to use ADE XL -- nor do you have to wear comfortable shoes.)
What's in it for me? Glad you asked...
During the design of a circuit block, you may have a half dozen testbenches, each with several different measurements. Then you need to run each of those over dozens or hundreds of corner conditions and parametric sweeps. And don't forget Monte Carlo, which is a common requirement for most designers today. Once you've run all those hundreds of simulations, you could be looking at an enormous, complex snarl of data.
Not only do you as a designer need to sort through and evaluate all that data, but you also need to present it to your manager in a coherent format he or she can easily understand (and, of course, be duly impressed by your superhuman circuit design skills). Then, heaven forbid, a device model or circuit spec changes and you have to do the whole thing over again. Are you confused yet?
I like to think of ADE XL as a means to reach the optimum place on the information/confusion curve. You know that place where you've got plenty of information to solve your problem, but not so much that you can no longer remember what the problem was.
First, a few basic definitions
ADE XL is centered around the concept of tests. A test is something that you are already using every day. It's nothing more than a circuit schematic that you're using to do some sort of simulation. A typical use for ADE XL is to group together all the simulations (or "tests") you need to do on a particular circuit block. Or you could use ADE XL to group a bunch of (possibly similar) simulations for different sub-blocks in your design. Or (and this is probably the most common usage of ADE XL today -- if only because it is the closest thing to The Way We've Always Done It) you can use it for just one test (simulation) that you want to run over corners and Monte Carlo. In any case, you know best how you want to organize your work.
ADE XL stores its information just as other Virtuoso applications -- in a particular type of cellview. An adexl view can be created under any cell and contain any number of tests which reference that cell and/or other cells. It can be seen in the Library Manager and can be managed like any other cellview.
Just as in ADE L, you can create and use design variables in ADE XL. These variables can be shared globally among all your tests, or they can be unique to an individual test. In addition to the types of variables you're used to using (i.e. using a variable name in the property value of a schematic instance), don't forget the new VAR() syntax which allows you to parameterize pretty much anything in the simulation environment such as model file name/section or transient stop time.
In addition to variables, as defined above, ADE XL allows you to create parameters, in which you can directly change the values of schematic instance properties without having to edit the schematic. This is done using the Variables and Parameters Assistant. I'll discuss this capability in detail in a later article, so just file this definition away for future reference.
Variables and parameters are what you use in ADE XL to run sweeps (sometimes referred to as point sweeps). Sweeps are most simply defined as lists (2,4,6) or min:step:max ranges (1u:1u:20u), but more complex sweep ranges can also be defined (center/span%, log steps etc.). These sweep ranges are also basic elements in running more advanced analyses like sensitivity and optimization (more on that in later articles).
I'm sure you're all familiar with running simulations over corners. However, it's interesting that every customer I visit seems to have a different definition of what constitutes a "corner" for their particular design flow. So in ADE XL, we've got a pretty broad definition of corners. Corners can include not only temperature, supply voltage and process model, but also any combination of design variables and parameters (as defined above).
The mechanisms for setting up and viewing simulation outputs and measurements in ADE XL is very similar to that of ADE L (with a few extra features we'll talk about later). Additionally, in ADE XL, you can apply a specification to any scalar output (an output expression that evaluates to a single number). This is a numerical target value, range or tolerance, to which the simulation results will be compared. Specifications are useful not only for quick visualization of design performance, but also used for optimization and yield analysis.
Enough with the glossary, how do I start the darn thing?
I suppose I probably should at least tell you that. Just open a schematic and select Launch->ADE XL. You'll feast your eyes on the "Welcome to ADE XL" home screen, which is intended to guide you through what you need to do next (hint: "To define Tests, click here").
Also note the assistant in the upper left, called "Data View". We'll be using this a lot.
I think I'll leave you in suspense for now, but you can watch some introductory videos on ADE XL here and here.
So watch this spot over the next few posts, and as always, feel free to comment on things you'd like to see discussed, or things you've found that others can benefit from.
The particular Job Policy used is saved (by name) with the ADE XL view, but if you make changes to settings within a job policy, you have to save those changes to that job policy (using the Save button at the top of the Job Setup form) in order for them to stick. You can create as many job policies as you like and switch amongst them for different tasks. The Save options, as you mention, are not saved with the ADE XL, but can be controlled by cdsenv environment variables. I don't believe the save options are changed that often, but perhaps you have a particular use model?
It seems 'Save' and 'Job Setup' options do not get saved in the ADE-XL views. If I close the view and re-open, the previously set Save/Job Setup options are gone. One must reset them again. Painful.
Hi, There are several options to get what you want. The best is probably to switch to the Detail-Transpose view. The pulldown is located in the upper left corner of the Results area. This will switch the display so that each measurement appears in a separate column. So you can see all your bandwidth values in one column, for example.
Once I have run ADEXL and have the results (monte carlo in my case), how to I reorder the table? Reordering in the "outputs" tab does not affect the order in the "results-summary" tab. I'd like to be able to see all the bandwidth numbers one after the other, the Gain numbers together etc. Its got them interspersed in some random fashion (output tab reordering is straightforward, but no knobs in the "results" tab.).
Hi Yannis, It's hard to say without seeing exactly what you are doing. You could create measurements for the currents you are interested in (and/or the differential currents), then run Monte Carlo and then view histograms of how much those currents change as the statistical mismatch parameters are varied. Don't know if that is what you are looking for...
i'm using virtuoso version 6.1.5-64b.500.6 and i want to run a monte carlo simulation on a differential VCO in order to estimate the current mismatch between the MOSFETS but i cant find the right expression to put as an output in the ADE XL. Could you please enlighten me?
Yes, you can do this. By double-clicking in the value field for a variable or parameter, you should see an icon that looks like "...". This will open up a "Parameterize" dialog, which allows you to add lots of different types of definitions in any combination.
For your example, you would create a "From/To" type setup (from 100 to 500 w/ step size 20) and also use the "Inclusion List" field at the top of the form to include the specific values of 50 and 60.
Then the variable definition would include both types and just the values you want.
Hope this helps!
I want to use a mixed list of parameters in the following way:
50, 60, 100:20:500.
I want to get the following when expanded:
50, 60, 100, 120, 140,...
I normally get:
50, 70, 90, ... it adds 20 as per the step definition. Adding parentheses does not help.
How can I perform this?
I don't know if I can provide a "monte carlo for dummies", but I'll try to point out a couple of things.
First of all, ADE XL Monte Carlo only works with Spectre, APS and AMS(Spectre solver).
Monte Carlo analysis uses parameters defined with statistical distributions set up using "statistics" blocks in your netlist--nearly always in the model files.
Then, from ADE XL, you set the Run Mode pulldown to be "Monte Carlo Sampling" (instead of "Single Run, Sweeps and Corners" as it usually says). Click the icon next to the pulldown to set up the options for Monte Carlo, then click the green Run button. That's really all there is to it.
I'd recommend the "Virtuoso Spectre Circuit Simulator Reference" manual first. The section on Monte Carlo Analysis describes what the simulator does and what the statistics block contains.
Then, the "Virtuoso Analog Design Environment XL User Guide" has a chapter on "Performing Monte Carlo Analysis" which describes how to run and the Simulation Options form.
Hope this helps a bit. I'll eventually be writing more about this topic, so keep an eye on this space.
I am totally new to the field of Monte Carlo simulations. I am still a student who has just started Masters and I need to learn monte carlo.
I tried to follow the instructions, but the instructions are vague and its assumed that the reader is an expert of the field.
Can i have 'monte carlo for dummies?'
Thanks for the feedback. I'm planning to do an article on the different ways of specifying what and where to store data. I'll be sure to include information on job policy and run option setups too. Job distribution can be a pretty customer-specific topic, but I'll see what tips I can dig up.
Please contact your AE and he/she would be glad to answer these questions. Alternatively you can send me your contact info (email: email@example.com) and I would be glad to pass on the information and ask your AE to get in touch with you.
I would like to see the Job policy and Run Options explained for running distributed jobs on say Sun Grid Engine. How the information is stored etc. Where a designer can get to his simulation data and check results etc.. within gui and commandline.