The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> monte carlo mismatch simulation in spectre
https://designers-guide.org/forum/YaBB.pl?num=1074804759

Message started by stephen on Jan 22nd, 2004, 12:52pm

Title: monte carlo mismatch simulation in spectre
Post by stephen on 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.


Title: Re: monte carlo mismatch simulation in spectre
Post by Paul on 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=1066706959
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

Title: Re: monte carlo mismatch simulation in spectre
Post by stephen on 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.



Paul wrote on 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=1066706959
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


Title: Re: monte carlo mismatch simulation in spectre
Post by Andrew Beckett on 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.

Title: Re: monte carlo mismatch simulation in spectre
Post by Mighty Mouse on 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 -

Title: Re: monte carlo mismatch simulation in spectre
Post by stephen on 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.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.