The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Apr 16th, 2024, 1:53pm
Pages: 1
Send Topic Print
monte carlo mismatch simulation in spectre (Read 11742 times)
stephen
Junior Member
**
Offline



Posts: 24

monte carlo mismatch simulation in spectre
Jan 22nd, 2004, 12:52pm
 
I tried to do monte carlo simulaiton in spectre. I succeeded with process variation simulation. But I failed with mismatch simulation. The simulation can complete successfully. But all the runs yield the same result without any mismatch. I am using TSMC018 CMOS design kit.

The model file is a binned model. It includes several processor corners defined like tt, ss, ff, sf, fs. I am only using the tt corner (typical case).


library tsmclib
section tt
....
parameters dvthn=0
parameters dvthp=0
...

statistics {
 mismatch {
   vary dvthn dist=gauss std=0.01
   vary dvthp dist=gauss std=0.01
 }
}

model nmos bsim3v3 {

1: lmin=xx, lmax=xx, vth0=0.4xx+dvthn,
....
2: lmin=xx, lmax=xx, vth0=0.4xx+dvthn,
...
3. lmin=xx, lmax=xx, vth0=0.4xx+dvthn,
...

}

model pnmos bsim3v3 {
...
vthp=0.4xx+dvthp
...
}

I put two identical NMOS transistors in the same schematic. Made 4 runs of monte carlo. I couldn't observe any mismatch of their operation points. The 4 runs yield identical operation points for both transistors.

Any tips will be greatly appreciated.

Back to top
 
 
View Profile   IP Logged
Paul
Community Fellow
*****
Offline



Posts: 351
Switzerland
Re: monte carlo mismatch simulation in spectre
Reply #1 - Jan 23rd, 2004, 11:57am
 
Stephen,

the first thing you should not forget is that matching for MOS devices is size dependent, which is not the case in your file. Have a look at EVI's example in
http://www.designers-guide.com/Forum/?board=circuit;action=display;num=106670695...
Further more, I don't know your model file, but I would guess dvthn (and p) are used to calculate the corner values for VTH, so you should use a different parameter name for your mismatch simulations (again see EVI's example).

Regarding your problem, I don't know very well the detailed MC calculations performed by Spectre, but as you don't use subcircuits to interface the devices with the models, the simulator may calculate once per run the mismatch and apply the same mismatch to both devices. Does your simulation give different operating points from one run to the next?

Maybe EVI or BSIM4, doing these simulations with Spectre, can help here?

Paul
Back to top
 
 
View Profile WWW   IP Logged
stephen
Junior Member
**
Offline



Posts: 24

Re: monte carlo mismatch simulation in spectre
Reply #2 - Jan 23rd, 2004, 12:30pm
 
Thanks, paul. dvthn(p) are used for process corners. But I think it doesn't matter to use it for mismatch too. Anyway, I've tried using another parameter like vthmis and changing the equation for vth0 to be sth like

vth0=vthmis*(0.4xxx+dvthn).

But still no use.

By the way, the simulation result is the same from run to run if I choose "Mismatch Only" in monte carlo GUI window.


[quote author=Paul  link=1074804759/0#1 date=1074887862]Stephen,

the first thing you should not forget is that matching for MOS devices is size dependent, which is not the case in your file. Have a look at EVI's example in
http://www.designers-guide.com/Forum/?board=circuit;action=display;num=106670695...
Further more, I don't know your model file, but I would guess dvthn (and p) are used to calculate the corner values for VTH, so you should use a different parameter name for your mismatch simulations (again see EVI's example).

Regarding your problem, I don't know very well the detailed MC calculations performed by Spectre, but as you don't use subcircuits to interface the devices with the models, the simulator may calculate once per run the mismatch and apply the same mismatch to both devices. Does your simulation give different operating points from one run to the next?

Maybe EVI or BSIM4, doing these simulations with Spectre, can help here?

Paul [/quote]
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: monte carlo mismatch simulation in spectre
Reply #3 - Jan 23rd, 2004, 11:07pm
 
In order to do mismatch in monte-carlo, you need to
surround the parameterized model in a subckt.

The reason for doing this is that it causes the name of
the model to be scoped inside that subckt. That way each instance has a unique model, and so can vary from one instance to another.

Often this is done using inline subckts so that the results from that model appear not to be down one level in the hierarchy and so annotate properly.

This is covered in the Spectre User's Guide in some detail, so you should look there. It talks all about statistical modelling.

Andrew.
Back to top
 
 
View Profile WWW   IP Logged
Mighty Mouse
Community Member
***
Offline

Here I come to save
the day!

Posts: 75
Fantasyland
Re: monte carlo mismatch simulation in spectre
Reply #4 - Jan 24th, 2004, 8:26am
 
You can also see an example of how to use inline subcircuits for mismatch analysis in Recommended Spectre Monte Carlo modeling methodology, which you can find at http://www.designers-guide.com/Modeling/.

- MM -
Back to top
 
 
View Profile   IP Logged
stephen
Junior Member
**
Offline



Posts: 24

Re: monte carlo mismatch simulation in spectre
Reply #5 - Feb 6th, 2004, 11:20pm
 
Thanks. I will try out using subckt although I don't think using subckt is as handy as the original device model. Maybe cadence need improve on this issue.
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.