Jon Ho
03/02/2024, 4:11 PMTim Edwards
03/02/2024, 5:01 PMtt_mm
).
Or, if you just want the number for the one parameter, look in the model files. For example, in $PDK_ROOT/sky130A/libs.ref/sky130_fd_pr/spice/sky130_fd_pr__nfet_01v8__tt.pm3.spice
(substitute appropriate device and process corner), find the line vth0 =
for the appropriate FET model bin given the W and L values. For the example, nfet_01v8
model bin 0
, the line is:
+ vth0 = {0.5190093+MC_MM_SWITCH*AGAUSS(0,1.0,1)*(sky130_fd_pr__nfet_01v8__vth0_slope/sqrt(l*w*mult))}
although I am having difficulty figuring out where sky130_fd_pr__nfet_01v8__vth0_slope
is being defined and included; it is defined in invariant.spice
(sky130_fd_pr__nfet_01v8__vth0_slope = 0.003356
) but that seems to be only included in the monte carlo simulation setup. I'm sure it's there somewhere, or else ngspice would halt with an error.
The continuous models are done differently and I don't understand how the method differs; the mismatch is captured in a subcircuit parameter swx_vth
which is then used in computing model parameter delvto
, while parameter vth0
itself is constant. delvto
is not used in the discrete models.