Using the optimizer in Analog Design Environment

Status
Not open for further replies.

dmehta1759

Junior Member level 1
Joined
Feb 25, 2010
Messages
15
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Bangalore
Activity points
1,399
Hello all,

I wanted use the optimizer for maximizing the gain of a resistively loaded common source amplifier.

The optimizer should give me the maximum gain along with W/L and R of the amplifier.

How do I proceed in order to do this.
 

dmehta1759 said:
Hello all,

I wanted use the optimizer for maximizing the gain of a resistively loaded common source amplifier.

The optimizer should give me the maximum gain along with W/L and R of the amplifier.

How do I proceed in order to do this.
Below pls. find a Cadence tutorial which contains the description of a Parametric Simulation in order to optimize (resp. symmetrize) the rise- & falltimes of a simple inverter. It's not exactly your application, but it principally shows how it's done.

For more info see the Virtuoso Advanced Analysis Tools User Guide.
 

Hi, I don't think this is what I asked for. I want to use the optimization tool which is available in tools tab of ADE (Where you set the goal and give the max,min values of the variables)

Any clue on how to use that?
 

RFMF before using the optimizer in Analog Design Environment

dmehta1759 said:
Any clue on how to use that?
RFMF: I already tried to tell you: The Virtuoso Advanced Analysis Tools User Guide actually contains a table of contents, and it says the Optimization chapter runs from p. 159 to p. 201 . Pretty comprehensive description ;-) . If you use Cadence tools, you should be able to find this User Guide!
 

Yes, I already have that guide. It is comprehensive, but I still can't figure out how to set the goal expression (I need to enter the goal expression ,my variable expression has R - resistance.. some initial , max,min value .. After entering the goal expression I can just start the optimization process by hitting "run") - for the "gain" especially. I want to maximize the gain.

I read the user guide. Wasn't successful
 

Sorry, I didn't consider your main concern: I understand this is to know the R value for max. gain - hope, I got this right?

This is a task which you cannot achieve with the optimization tool - at least I wouldn't know, how. The optimization is a tool to optimize a result depending on one or more variables by DC analysing this result while changing the given parameter(s) between its given limits. I never succeeded with an optimization run with a different analysis than DC.

The gain of an amplifier cannot be simulated with a DC analysis, but needs an AC analysis. In order to determine the R value for max. gain, you would run an AC analysis and sweep the R=r parameter, s. the pictures below.

 

    dmehta1759

    Points: 2
    Helpful Answer Positive Rating
Yes, you got my concern right. Actually I can also complicate the problem even more by setting W and L as variables.

So let me get this straight - you're saying that you can't maximize gain(optimize gain using the optimization tool ) using DC Analysis. AC analysis has to be used and you don't know if Optimization can be done for any other analysis.

I think in the aatoolsuser guide, in a extensive example problem they have a goal (output voltage vs frequency using AC analysis) which they are trying to match using the optimization tool
 

hope the following can help you a start. It is based on a common source amp loaded with an ideal resistor.

setup the goals and variables
**broken link removed**
**broken link removed**

run the optimzer, you can get the following graphs
**broken link removed**

the optimal design variable, in my case is the length of the transistor, can be read in the CIW.
**broken link removed**
 

hello wpchan05,

I tried simulating for a resistively loaded common source amplifier for a 90nm technology MOS with W = 10u and L =1u. I kept R as a design variable varying it from
1k to 20k (just wanted to check if I get something or not)

Following are the detailed steps on how I configured and tried to optimize but still got an error which said : can't handle complex (0.543423, 1.54e-10) < (some number again, some number of the order -10)

1) I configured the circuit as erikl showed. Put R as a design variable. Selected drain as the output to be plotted, did AC analysis,varied frequency.. saved dc operating point.. Ran a dummy simulation (It will plot for voltage vs frequency for the initial value of R.. whatever I give. I gave 1k)

2) Next, clicked on optimization. I think the Problem is with the gain expression. I gave an expression v("/net016" ? result "ac-ac") - I got this from the calculator when I ran the dummy simulation for R = 1k.

3) Next added the only variable I had i.e. R and "ran" the optimizer. It gave me the above error.

There must be something that I am doing wrong. I can't figure out what it is!

Added after 1 minutes:

Ohh yes, Vgs = 1.5 volts and vdd 2.5 volts.
 

2) Next, clicked on optimization. I think the Problem is with the gain expression. I gave an expression v("/net016" ? result "ac-ac") - I got this from the calculator when I ran the dummy simulation for R = 1k.

Following are the detailed steps on how I configured and tried to optimize but still got an error which said : can't handle complex (0.543423, 1.54e-10) < (some number again, some number of the order -10)

v("/net016" ?result "ac-ac") returns complex number - magnitude and phase of voltage at the net016. Optimizer must compare this result with target you've specified, but comparison of complex numbers doesn't make sense, so it returns error.

mag(v("/net016" ?result "ac-ac")) will return only magnitude .
db(v("/net016" ?result "ac-ac")) will return magnitude in decibels.
 

    dmehta1759

    Points: 2
    Helpful Answer Positive Rating
Ok, I did what you said. mag(v("/net016" ?result "ac-ac")) works.

Suppose I take gain to be gm*R (approx) I did dc analysis. Parametrically varied R and then tried this expression - (/OP "gm")*(/OP "res") - This doesn't work.

Apart from this I have more doubts:

1) How do I control the number of simulations in an iteration?

2) How do I control the step size of the variables. Let's say for R, I gave 1k as minimum and maximum as 100k initial being 30k.. How does the optimizer vary this variable.

3) For my problem, I have used 4 variables .. vgs.. R.. w.. l.. for maximum gain. I have varied all of them between some ranges. The convergence is not proper. I got a maximum gain of 13. wpchan05 Can I tell me your ranges for other variables as well?

Also.. I want the plot for all the iterations.. and it shouldn't update or remove the earlier plots. It happened with me today. My highest gain got deleted as iterations proceeded (which had lesser gain)
 

Hi,

I tried running the simulation for 20 iterations ( I think this is the max it can run)

In the end .. only the latest 5 iterations along with target and 10% tolerance were visible rest all got deleted I guess.

I had given R,W,L,vgs as the variables. It did not even touch R, kept it at 30k itself - the initial value I had given.

Someone please help.
 

for doing gm*R u need to do select in calculator VAR and select ur resistor , supposing the Resistance = r <-- variable name. so op("M1/gm")*VAR("r") will work.

setting up optimization is a pain, there will be setting to store all results but the space occupied will be high and does not converge very well. running parametric simulations will be much better.

having so many variables will make things difficult..
 

Is the optimization tool of spectre a local optimizer or a global optimizer.. I mean does it give a global optimum even if the initial values specified are way off than the real values of W & Ls for maximum gain ?
 

true... optimiser in spectre is a global optimizer it does not take into account the initial conditions and tries to find the optimum point in the given state space.
 

dmehta1759 said:
Is the optimization tool of spectre a local optimizer or a global optimizer.. I mean does it give a global optimum even if the initial values specified are way off than the real values of W & Ls for maximum gain ?
Up to my experience, it's a local optimizer: it just tries - using a Monte Carlo method - values between the given limits, and stops as soon as it reaches the target value within the given resolution. No Simulated Annealing mechanism is applied.
 

erikl said:
Up to my experience, it's a local optimizer: it just tries - using a Monte Carlo method - values between the given limits, and stops as soon as it reaches the target value within the given resolution. No Simulated Annealing mechanism is applied.

According to "Advanced Analysis Tools User Guide" (How Optimization Works) optimizer doesn't use Monte Carlo method. It uses LSQ or CFSQP algorithm.

dmehta1759 said:
Is the optimization tool of spectre a local optimizer or a global optimizer.. I mean does it give a global optimum even if the initial values specified are way off than the real values of W & Ls for maximum gain ?

Initial conditions are very important. If they are far away from solution, optimization probably will fail.
 

dedalus said:
According to "Advanced Analysis Tools User Guide" (How Optimization Works) optimizer doesn't use Monte Carlo method. It uses LSQ or CFSQP algorithm.
Thank you for putting me right, dedalus!
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…