ngspice/examples/measure/mos-meas-dc-control-file.sp

53 lines
1.8 KiB
SourcePawn

***** Single NMOS Transistor .measure (Id-Vd) ***
* Altering device witdth leads to select new model due to binning limits.
* New model has artificially thick gate oxide (changed from default 3n to 4n)
* to demonstrate the effect.
m1 d g s b nch L=0.6u W=9.99u ; W is slightly below binning limit
vgs g 0 3.5
vds d 0 3.5
vs s 0 dc 0
vb b 0 dc 0
* model binning
* uses default parameters, except toxe
.model nch.1 nmos ( version=4.7 level=54 lmin=0.1u lmax=20u wmin=0.1u wmax=10u toxe=3n )
.model nch.2 nmos ( version=4.7 level=54 lmin=0.1u lmax=20u wmin=10u wmax=100u toxe=4n)
.control
set file = $inputdir/meas.out
echo measurements nch.1 model > $file
dc vds 0 3.5 0.05 vgs 3.5 0.5 -0.5
meas dc is_at FIND i(vs) AT=1 >> $file
meas dc is_max max i(vs) >> $file
meas dc vds_at2 when i(vs)=10m >> $file
* starting with branches in descending order of vgs
* trig ist the first branch which crosses 5mA
* Targ is the first branch crossing 10mA
meas dc vd_diff1 trig i(vs) val=0.005 rise=1 targ i(vs) val=0.01 rise=1 >> $file
* trig ist the first branch which crosses 5mA
* Targ is the second branch crossing 10mA
meas dc vd_diff2 trig i(vs) val=0.005 rise=2 targ i(vs) val=0.01 rise=2 >> $file
alter @m1[w]=10.01u ; W is slightly above binning limit
dc vds 0 3.5 0.05 vgs 3.5 0.5 -0.5
echo measurements nch.2 model >> $file
meas dc is_at FIND i(vs) AT=1 >> $file
meas dc is_max max i(vs) >> $file
meas dc vds_at2 when i(vs)=10m >> $file
meas dc vd_diff1 trig i(vs) val=0.005 rise=1 targ i(vs) val=0.01 rise=1 >> $file
* there is only one branch crossing 10mA, so this second meas fails with targ out of interval
echo
echo The next one will fail (no two branches crossing 10 mA):
meas dc vd_diff2 trig i(vs) val=0.005 rise=2 targ i(vs) val=0.01 rise=2 >> $file
*rusage all
plot dc1.i(vs) i(vs)
.endc
.end