In order to apply a Gaussian distribution to a device parameter for Monte Carlo simulations, I have to use a line of code such as the following in the model file:
vary vthnmis_rf dist=gauss std=1/1
This came right out of a real model file from a TSMC process. Can anyone tell me what the units on std are? vthnmis is a quantity that is added to vt, and it should be in volts. Standard deviation can't be in volts, so I am not sure what it is. I know that I want to set it to 50mV.
The standard deviation is in whatever units the parameter vthnmis_rf is in. You need to look in the model files to see where this parameter is defined (to find the mean), and also where it is used. My guess is that it is a normalized value, and is being scaled in an equation elsewhere in the model file.
In reply to Andrew Beckett:
Thanks Andrew. Your tip was helpful, but I didn't quite figure out how to use that factor to control st dev of vth. The example I pasted in was actually from another part of the model file and wasn't the best example. Below are all the lines from the model file that I think factor in to vth for the n device.
vary par1 dist=gauss std=1/3
// vary par2 dist=gauss std=1/3
// vary par3 dist=gauss std=1/3
// vary par4 dist=gauss std=1/3
// vary par5 dist=gauss std=1/3
vary vthnmis dist=gauss std=1/1
vary dlnmis dist=gauss std=1/1
vary dwnmis dist=gauss std=1/1
vary toxnmis dist=gauss std=1/1
vary vthpmis dist=gauss std=1/1
vary dlpmis dist=gauss std=1/1
vary dwpmis dist=gauss std=1/1
vary toxpmis dist=gauss std=1/1
In the nch_mc section:
parameters fac_n=1.00 * 2.4
dvthn=a1n * fac_n * 0.0095
in the model section:
vth0=0.4365561 + dvthn
I am using regular nch devices, not the nch_mis devices. When I run the Monte Carlo, the mean and standard deviation of the Vth of an NMOS device with ground and body connected to ground and the drain and gate disconnected are 490mV and 17mV. A std of 2/3 results in std of 34mV. I still don't see how std=1/3 leads to 17mV.
Does this make any sense to you?
In reply to sporre:
It doesn't make that much sense to me - but I suspect there's some aspect that's missing, and unless I wade through a real example (sorry, bit pushed for time at the moment), I probably can't help much more. Are you looking at the vth0 model parameter in the results database, or are you measuring vth some other way? And are you doing enough points?
BTW, unless you use the _mis devices you won't get any mismatch variation - this is the way that that foundry does things for some reason.
Thanks for your tips - I figured it out. I was making a couple of mistakes. Your comment led me to look at the model parameter vth0 of a simple unconnected device instead of the operating point Vth.