Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Monte Carlo for local mismatch ...

Status
Not open for further replies.

cliffj

Member level 3
Member level 3
Joined
Mar 22, 2004
Messages
55
Helped
4
Reputation
8
Reaction score
3
Trophy points
1,288
Activity points
533
agauss

Dose anyone know better method for simulating the local mismatch (differentila pair)?

.param vton5cd=agauss(0,5e-3,1) delvton5='vton5cd+sigma*5e-3'
.param vtop5cd=agauss(0,5e-3,1) delvtop5='vtop5cd+sigma*5e-3'

Above two lines I used for monte carlo simulation, and sure I've modified the spice model file for parameter dvtn and dvtp (delta-threshold voltage)
But I found the two transistors would drift the same direction and almost same quantity under the same monte index number(two match nmos input pair for example), eventuallly local mismatch did not happen. Is there any convenient method that I can also make local mismatch happen for specified transistors? Better not to call two different model names. That's so complex if one wants to specify too many local mismatch conditions.

Cliff
 

agauss hspice

Another trick is to put floating voltage generators in series with th gates and have them of opposite polarity. Make them monte carlo along with the threshold voltages to get a mismatch between the transistors.
 

threshold voltage sigma variation

The correct way is


.param vton5cd=agauss(0,5e-3,1) delvton5='vton5cd'
.param vtop5cd=agauss(0,5e-3,1) delvtop5='vtop5cd'

Regards
 

adding pelgrom mismatch numbers

Hi, maxwellequ

Sorry, but I don't see any difference between the command lines. Maybe that's because I forgot to say I sweep sigma in my dc analysis. But... any good for local mismatch simulation? Can anyone provide better method or share the expericences in simulating local mismatch? Only glocal mismatch can be seen from simulation ?

Cliff
 

hspice aguass

Looking again to your initial question, you may be doing something wrong... Where do you use the 'delvton5' and 'delvtop5' parameters ?


Assuming that you are using HSPICE, the correct way of defining a random Vt shift on a transistor (m1 in the example below) is:


.param DeltaVt_m1=agauss(0,sigmavalue,1)
m1 drain gate source ...... delvto='DeltaVt_m1'

where 'sigmavalue' is the sigma(DeltaVt) for the transistor you are considering. Each transistor should have a .param line defining its own DeltaVt_m* parameter.

Then you should run a Monte-Carlo analysis. For example if you are doing a dc-sweep, it should be something like this (for 100 Monte-Carlo Runs):

.dc vin start stop step sweep Monte=100

If you want to run several monte-carlo simulations with different sigmavalue's then you should use the .alter functions. I do not understand how can you sweep the sigma on your analysis....

Regards
 

monte carlo simulation hspice delvt0

I think I understand what you mean for the command lines in Monte Carlo.
Maybe you can check hpsice 2001 manual, chapter 13- page11 and 12. Then you might understand why I was using the command that way.
.LIB TT
$TYPICAL P-CHANNEL AND N-CHANNEL CMOS LIBRARY DATE:3/4/91
$ PROCESS: 1.0U CMOS, FAB22, STATISTICS COLLECTED 3/90-2/91
$ following distributions are 3 sigma ABSOLUTE GAUSSIAN
.PARAM
$ polysilicon Critical Dimensions
+ polycd=agauss(0,0.06u,1) xl=’polycd-sigma*0.06u’
$ Active layer Critical Dimensions
+ nactcd=agauss(0,0.3u,1) xwn=’nactcd+sigma*0.3u’
+ pactcd=agauss(0,0.3u,1) xwp=’pactcd+sigma*0.3u’
Slow Corner Skew Parameters
Fast Corner Skew Parameters FF
Typical Corner Skew Parameters + Gaussian TT
SS
EE Extracted Skew Parameters
pop.
IDS
Performing Worst Case Analysis Statistical Analysis and Optimization
13-12 Star-Hspice Manual, Release 2001.4
$ Gate Oxide Critical Dimensions (200 angstrom +/- 10a at 1
$ sigma)
+ toxcd=agauss(200,10,1) tox=’toxcd-sigma*10’
$ Threshold voltage variation
+ vtoncd=agauss(0,0.05v,1) delvton=’vtoncd-sigma*0.05’
+ vtopcd=agauss(0,0.05v,1) delvtop=’vtopcd+sigma*0.05’

above lines were from hspice manual. I know I can define the delvt0 in .model for specified mos transistors. But don't you think it's such an inconvenient way, since you must have so many different transistors using the same model. And this means you have to add the models again and again for different transistors if you wnat to specify the local mismatch for them. I was wondering that if I can alter the model parameter, for example - the delvt0, by not modifying the original model. Since this model would also be used for other transistors.
 

monte carlo in hspice treshold

Dear cliffj,

I looked very quickly to the example you mention (sorry no time for more...). If I understood it, this is to be used by process eng. to see what is the effect of the (random) variations on the parameters of the transistors. This is useful to create models of the "corners" of the process.

But I think that what you want is to perform a statistical analysis of a circuit that you have. If this is true, you should use the method I indicated previously. You don't have to define different models, but you must define the monte-carlo parameters for each transistor (or any other device):

.param DeltaVt_m1=agauss(0,sigmavalue1,1)
m1 drain_m1 gate_m1 source_m1 ...... delvto='DeltaVt_m1

.param DeltaVt_m2=agauss(0,sigmavalue2,1)
m2 drain_m2 gate_m2 source_m2 ...... delvto='DeltaVt_m2'

....

I know that it is boring to be putting monte-carlo parameters for each transistor, but there is no other way (if there are many transistors it is better to write a small program to do it). Note that, in the general case the 'sigmavalue' depends on the area of the transistor (Pelgrom Law)...
Also note that in a MOS transistor there are also mismatches in the 'beta' (beta=u.Cox.W/L) and, to account for these you must create random values in the 'W'.

Regards
 

    kpc

    Points: 2
    Helpful Answer Positive Rating
hspice agauss

how to get the 'sigmavalue' from a process lib, i didnot find it in the process device characterization report.
thanks !
 

monte carlo mismatch

you may need to ask for more information on device manual, that's the only place give you matching data.
 

hspice monte carlo agauss

thanks for your informing, neo79!
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top