AgO Medtronic wip

13
Additional comments are in RED AgO Optimization Project 1 Chris Ambri Mar 9, 2015 Step 1. A schematic / test bench was created in Cadence. A very simple circuit was chosen so that I could understand all of the mechanics of the software, and compare the optimizer solution to the solution I have determined without the software. After this is successful, I have a more difficult circuit with mosfets, resistors and bipolar devices in which I would like to optimize. Figure 1 shows the test circuit: This circuit is a simple voltage divider with a NMOS transistor enabling the divider. The variables are L1 of R0, L2 of R1, and MN0, the multiplier for N0. The top supply, on VTOP is 2V, the enable voltage for the nfet is 1.1V. Requirements: 180mV < VOUT < 220mV IVTOP < 300nA Resistance of N0 < 100 Ohms. The ADEXL testbench was created (figure 2). The values in the variables section are the ones that I derived via hand calculation. R0=9M, and R1=1M to achieve VOUT =0.2V, and IOUT = 2V/10M = 200nA. With MN0=7, RN0 is 96 Ohms. The simulation sweeps the temperature from 10 to 44, and computes the value of VOUT, IOUT, and RN0 at 37C.

description

Hillol Sarkar

Transcript of AgO Medtronic wip

Page 1: AgO Medtronic wip

Additional comments are in RED

AgO Optimization Project 1Chris AmbriMar 9, 2015

Step 1.A schematic / test bench was created in Cadence. A very simple circuit was chosen so that I could understand all of the mechanics of the software, and compare the optimizer solution to the solution I have determined without the software. After this is successful, I have a more difficult circuit with mosfets, resistors and bipolar devices in which I would like to optimize.

Figure 1 shows the test circuit:

This circuit is a simple voltage divider with a NMOS transistor enabling the divider. The variables are L1 of R0, L2 of R1, and MN0, the multiplier for N0. The top supply, on VTOP is 2V, the enable voltage for the nfet is 1.1V.

Requirements:180mV < VOUT < 220mVIVTOP < 300nAResistance of N0 < 100 Ohms.

The ADEXL testbench was created (figure 2).The values in the variables section are the ones that I derived via hand calculation. R0=9M, and R1=1M to achieve VOUT =0.2V, and IOUT = 2V/10M = 200nA. With MN0=7, RN0 is 96 Ohms.

The simulation sweeps the temperature from 10 to 44, and computes the value of VOUT, IOUT, and RN0 at 37C.

Equations in ADELVOUT=value(VS("/VOUT") 37)IOUT = value(IS("/R0/O1") 37)RN0=value((VS("/N0_D") / IS("/N0/D")) 37)

Page 2: AgO Medtronic wip

Figure 1

Page 3: AgO Medtronic wip

Figure 2

Below explains how I setup AgO.

First AgO was loaded from within the Cadence Environment.

Variable Definition Window:I then filled out the Variable definitions. The three variables and their ranges are defined – L1, L2, and MN0. MN0 is specified as an integer. Figure 3.

This window was straight forward. The only issue I had is that I went back at a later time and added the MN0 variable. It put the variable under optimization variables but not under cell view variables. I do not know whether this matters. It did not seem to affect the optimization.

Page 4: AgO Medtronic wip

This will affect the optimization. Since the netlisting is done by Cadence, if MN0 is not given as a cellview variable, then the Cadence generated netlist will not be using it for the transistor definition. The transistor will be defined something like (in SPICE syntax):MN0 net1 gnd net2 gnd W=5u L=L1 M=5

Putting a “parameter MN0=2” or some other statement at the top of the netlist will not affect the transistor. Hence you have to use it as a cellview variable.

Figure 3

Options Window:

I am running this optimization on my own node with 1 thread so I deselected No. of threads.I said to stop when all objectives are within 5% of target, and selected the Max no. of iterations to be 80. Figure 4.

I assumed that the global optimization would stop when either all objectives are within 5% of target or 80 iterations whichever comes first. However, it looks like the optimization ran to 90 iterations. Is this expected?

This is expected. If, at the 80th iteration, the optimizer finds that it is still making good progress, it will continue for some time before stopping. The difference won’t be more than 10 odd iterations, though.

I then defined a nominal corner. Under model file, I included the paths to our models for mos, bip, res, and cap as was suggested by Tathagato. I also entered “nominal” values for the variables L1, L2, and MN0. Figure 5 shows the corner definition and Figure 6 shows the file nominal_corner.scs.

Page 5: AgO Medtronic wip

I assumed I should enter the variables L1,L2, and MN0 here as well, and the software would use these values as the starting points for optimization, correct? Or does it mess up the optimizer to include the variables which are being optimized in the corner definition?

No, this is wrong. This will lead to multiple definitions of the variables in the netlists. Which one actually gets used by the simulator is not predictable. Any optimization variable should not be used in the corner definition. The variables in the corner definitions are those to be used for defining the corner, e.g. the supply voltage. Hence, please delete these definitions.

Page 6: AgO Medtronic wip

Figure 4

Page 7: AgO Medtronic wip

Figure 5

Figure 6

Technology Parameters window:

For this circuit, I did not update this tab since the transistor in the circuit is acting like a switch in the linear region. For the next optimization project I will need to update this page.

For both the NMOS and PMOS models, there will be 2 or three types of nmos and pmos devices each with a different model. So I think I specify the different models as shown in Figure 7? Each model will have different values in the NMOS / PMOS parameters section, so how would I enter the information for 2 nmos and 2 pmos models as it only gives one section for each?

Unfortunately, this is currently available only in the command line mode. However, you can disable the automatic sizing rules, and then you can pick and choose transistors in the netlist and apply constraints on them.

Page 8: AgO Medtronic wip

Figure 7

Analyses Window:

I created an analyses called DC_Sweep1. See Figure 8I hit the Browse button and selected the proper Lib, Cell, and state file. Then I entered the desired Targets as shown: VOUT < 220mV, VOUT>180mV, IOUT<300nA, and RN0 < 100 Ohms.

It did not appear to need the spectre netlist as the simulation and optimization ran. I thought I had entered this path the first time I set this up, so maybe it remembers this path (?) but for this optimization the spectre netlist line was blank.

If the ADE XL cell view name is given, then the netlist is generated automatically. That is the reason why you will see the ADE XL window popping up a few times before the optimization starts. The Spectre netlist is needed only in specific situations (please refer user manual). In your case it won’t be needed.

Page 9: AgO Medtronic wip

Figure 8

Cost Graph Window:

I did not change any of the options on this window. What does this feature do?

The cost graph imposes different levels of importance to different objectives (please refer to Chapter 3 of the user manual for more details). The more important objectives are optimized first. If left blank, it will attach equal importance to all objectives. For a test circuit, that may be fine.

Page 10: AgO Medtronic wip

Log Window:Then I went to the log window. The first thing I did was to hit the “Run test simulation” button at the top. This appeared to open the ADEL window, and run a simulation. Then returned results that looked good. This gave me confidence that everything was set up properly.

Then I hit the Run Feasibility button. This went through and ran many iterations, and took maybe 5-10 minutes.

When feasibility was completed I hit the Run global button. This went through about 90 iterations, and produced a list of optima of 7 points. What I do not understand is that none of the points are as close to optimal as the one I came up with originally. I realize this is a simple circuit, and with a more complicated circuit I would not be able to find the optimal point better than the software. For the simple case, I would think it would have come up with a closer solution faster so it makes me think I am not setting something up correctly. The total time the optimizer ran was roughly 1.5 or so hours.

This could be because of the reasons mentioned above (MN0 not being a cell view variable, defining variables in the corner, etc.). Further, depending on the cost surface, there might be multiple “optimal” solutions. Some of these could be far away from what you will expect. This is fine as long as the objectives are being met. This may or may not be the case here. But I would definitely suggest you make the changes as mentioned above and re-run.

Page 11: AgO Medtronic wip

Can I view the log reports in a text editor from somewhere within the directory structure? It would be easier to view the log report in a bigger window. I do not appear to be able to cut and past the Anxplorer Output to another window.

Yes, you can see the *.log files under the *.xan directory (as mentioned in the email)

Say that the optimizer did find a very good solution. When I run centering, how do I tell the optimizer which of the 7 + best solution point to use this as the starting point? Or does it automatically use this point as the starting point for centering?

To specify a particular optimum, just select that one in the scroll box at the bottom of the optimization log window, and then click on the button labeled “Run centering with this optimum”.

So after we work out the nominal case optimization, I will add a few more corners and run centering. Then once I understand that, I will go to my more complicated test case.

Thanks very much for your help.

Solutions produced by the OptimizerNumber Parameters Results All Specs Met1 L1=802u, L2=702u,

MN0=6VOUT=935mV, IOUT=267nA, RN0=112Ohms

No, Yes, No

2 L1=242u, L2=550u, MN0=3

VOUT=1.39V, IOUT=507nA, RN0=224 Ohms

No, No, No

3 L1=768u, L2=596u, MN0=5

VOUT=875mV, IOUT=295nA, RN0=135 Ohms

No, Marginal, No

4 L1=638u, L2=602u, MN0=4

VOUT=972mV, IOUT=324nA, RN0=168 Ohms

No, No, No

5 L1=422u, L2=680u, MN0=2

VOUT=1.235V, IOUT=365nA, RN0=336 Ohms

No, No, No

6 L1=800u, L2=498u, MN0=3

VOUT=768mV, IOUT=310nA, RN0=224 Ohms

No, No, No

7 L1=598u, L2=716u, MN0=5

VOUT=1.09V, IOUT=306nA, RN0=135 Ohms

No, No, No

Best L1=764u, L2=676u, MN0=8

VOUT=940mV, IOUT=279nA, RN0=84 Ohms

No, Yes, Yes

Hand Solution

L1=1.8m, L2=200u, MN0=8

VOUT=200mV, IOUT=201nA, RN0=84 Ohms Nominal Process

Yes, Yes, Yes

Page 12: AgO Medtronic wip

Figure 9