diff options
Diffstat (limited to 'Windows/spice/examples/transient-noise')
-rw-r--r-- | Windows/spice/examples/transient-noise/README | 15 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/modelcard.nmos | 41 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/modelcard.pmos | 31 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/noi-ring51-demo.cir | 59 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/noi-sc-tr.cir | 53 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/noilib-demo.h | 56 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/noise_vnoi.cir | 31 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/rts-1.cir | 29 | ||||
-rw-r--r-- | Windows/spice/examples/transient-noise/shot_ng.cir | 27 |
9 files changed, 342 insertions, 0 deletions
diff --git a/Windows/spice/examples/transient-noise/README b/Windows/spice/examples/transient-noise/README new file mode 100644 index 00000000..ce9d4105 --- /dev/null +++ b/Windows/spice/examples/transient-noise/README @@ -0,0 +1,15 @@ +* noi-ring51-demo +ring oszillator with one noisy inverter +(requires 45min on a i7 860) + +* noi-sc-tr +noise source sampled + +* noise_vnoi +just a few 1/f and white noise sources + +* shot_ng +emulation of shot noise in a diode + +* rts-1.cir +random telegraph signals noise diff --git a/Windows/spice/examples/transient-noise/modelcard.nmos b/Windows/spice/examples/transient-noise/modelcard.nmos new file mode 100644 index 00000000..83ca9849 --- /dev/null +++ b/Windows/spice/examples/transient-noise/modelcard.nmos @@ -0,0 +1,41 @@ +*model = bsim3v3 +*Berkeley Spice Compatibility +* Lmin= .35 Lmax= 20 Wmin= .6 Wmax= 20 +.model N1 NMOS ++Level= 8 version=3.3.0 ++Tnom=27.0 ++Nch= 2.498E+17 Tox=9E-09 Xj=1.00000E-07 ++Lint=9.36e-8 Wint=1.47e-7 ++Vth0= .6322 K1= .756 K2= -3.83e-2 K3= -2.612 ++Dvt0= 2.812 Dvt1= 0.462 Dvt2=-9.17e-2 ++Nlx= 3.52291E-08 W0= 1.163e-6 ++K3b= 2.233 ++Vsat= 86301.58 Ua= 6.47e-9 Ub= 4.23e-18 Uc=-4.706281E-11 ++Rdsw= 650 U0= 388.3203 wr=1 ++A0= .3496967 Ags=.1 B0=0.546 B1= 1 ++ Dwg = -6.0E-09 Dwb = -3.56E-09 Prwb = -.213 ++Keta=-3.605872E-02 A1= 2.778747E-02 A2= .9 ++Voff=-6.735529E-02 NFactor= 1.139926 Cit= 1.622527E-04 ++Cdsc=-2.147181E-05 ++Cdscb= 0 Dvt0w = 0 Dvt1w = 0 Dvt2w = 0 ++ Cdscd = 0 Prwg = 0 ++Eta0= 1.0281729E-02 Etab=-5.042203E-03 ++Dsub= .31871233 ++Pclm= 1.114846 Pdiblc1= 2.45357E-03 Pdiblc2= 6.406289E-03 ++Drout= .31871233 Pscbe1= 5000000 Pscbe2= 5E-09 Pdiblcb = -.234 ++Pvag= 0 delta=0.01 ++ Wl = 0 Ww = -1.420242E-09 Wwl = 0 ++ Wln = 0 Wwn = .2613948 Ll = 1.300902E-10 ++ Lw = 0 Lwl = 0 Lln = .316394 ++ Lwn = 0 ++kt1=-.3 kt2=-.051 ++At= 22400 ++Ute=-1.48 ++Ua1= 3.31E-10 Ub1= 2.61E-19 Uc1= -3.42e-10 ++Kt1l=0 Prt=764.3 + + + + + + diff --git a/Windows/spice/examples/transient-noise/modelcard.pmos b/Windows/spice/examples/transient-noise/modelcard.pmos new file mode 100644 index 00000000..f50fe0a6 --- /dev/null +++ b/Windows/spice/examples/transient-noise/modelcard.pmos @@ -0,0 +1,31 @@ +.model P1 PMOS ++Level= 8 version=3.3.0 ++Tnom=27.0 ++Nch= 3.533024E+17 Tox=9E-09 Xj=1.00000E-07 ++Lint=6.23e-8 Wint=1.22e-7 ++Vth0=-.6732829 K1= .8362093 K2=-8.606622E-02 K3= 1.82 ++Dvt0= 1.903801 Dvt1= .5333922 Dvt2=-.1862677 ++Nlx= 1.28e-8 W0= 2.1e-6 ++K3b= -0.24 Prwg=-0.001 Prwb=-0.323 ++Vsat= 103503.2 Ua= 1.39995E-09 Ub= 1.e-19 Uc=-2.73e-11 ++ Rdsw= 460 U0= 138.7609 ++A0= .4716551 Ags=0.12 ++Keta=-1.871516E-03 A1= .3417965 A2= 0.83 ++Voff=-.074182 NFactor= 1.54389 Cit=-1.015667E-03 ++Cdsc= 8.937517E-04 ++Cdscb= 1.45e-4 Cdscd=1.04e-4 ++ Dvt0w=0.232 Dvt1w=4.5e6 Dvt2w=-0.0023 ++Eta0= 6.024776E-02 Etab=-4.64593E-03 ++Dsub= .23222404 ++Pclm= .989 Pdiblc1= 2.07418E-02 Pdiblc2= 1.33813E-3 ++Drout= .3222404 Pscbe1= 118000 Pscbe2= 1E-09 ++Pvag= 0 ++kt1= -0.25 kt2= -0.032 prt=64.5 ++At= 33000 ++Ute= -1.5 ++Ua1= 4.312e-9 Ub1= 6.65e-19 Uc1= 0 ++Kt1l=0 + + + + diff --git a/Windows/spice/examples/transient-noise/noi-ring51-demo.cir b/Windows/spice/examples/transient-noise/noi-ring51-demo.cir new file mode 100644 index 00000000..8bc6f6ed --- /dev/null +++ b/Windows/spice/examples/transient-noise/noi-ring51-demo.cir @@ -0,0 +1,59 @@ +* 51 stage Ring-Osc. BSIM3, transient noise +* will need 45 min on a i7 860 with 4 threads + +* closes the loop between inverters xinv1 and xinv5 +vin in out dc 0.5 pulse 0.5 0 0.1n 5n 1 1 1 + +vdd dd 0 dc 0 pulse 0 2.2 0 1n 1 1 1 + +vss ss 0 dc 0 +ve sub 0 dc 0 + +vpe well 0 2.2 + +* noisy inverters +xiinv2 dd ss sub well out25 out50 inv253 +xiinv1 dd ss sub well in out25 inv253 + +*very noisy inverter +xiinv5 dd ss sub well out50 out inv1_2 +*output amplifier +xiinv11 dd ss sub well out25 bufout inv1 +cout bufout ss 0.2pF + +.option itl1=500 gmin=1e-15 itl4=10 noacct + +* .dc vdd 0 2 0.01 +.tran 0.01n 500n + +.save in bufout v(t1) + +.include modelcard.nmos +.include modelcard.pmos + +.include noilib-demo.h + +.control +unset ngdebug +* first run +save bufout $ needed for restricting memory usage +rusage +tran 8p 10000n +rusage +plot bufout xlimit 90n 95n +linearize +fft bufout +* next run +reset +save bufout +alter @v.xiinv5.vn1[trnoise] = [ 0 0 0 0 ] $ no noise +tran 8p 10000n +rusage +plot bufout xlimit 90n 95n +linearize +fft bufout +plot mag(bufout) mag(sp2.bufout) xlimit 0 2G ylimit 1e-11 0.1 ylog +.endc + + +.end diff --git a/Windows/spice/examples/transient-noise/noi-sc-tr.cir b/Windows/spice/examples/transient-noise/noi-sc-tr.cir new file mode 100644 index 00000000..19c738b7 --- /dev/null +++ b/Windows/spice/examples/transient-noise/noi-sc-tr.cir @@ -0,0 +1,53 @@ +* simple sample & hold, transient noise + +* switch control +* PULSE(V1 V2 TD TR TF PW PER) +vgate1 ga1 0 dc 0 pulse (0 1 0 10n 10n 90n 200n) + +Switch1 1 2 ga1 0 smodel1 + +* noisy input +* rms value white, time step, exponent < 2, rms value 1/f +vin 1 0 dc 0 trnoise 0.1m 0.2n 1 0.1m +*vin 1 0 dc 0 trnoise 0.1m 0.2n 0 0.1m + +* output +c2 2 0 10p + +* second S&H +vgate2 ga2 0 dc 0 pulse (0 1 140n 10n 10n 30n 200n) +*Buffer EXXXXXXX N+ N- NC+ NC- VALUE +e1 4 0 2 0 1 +Switch2 4 3 ga2 0 smodel2 +c3 3 0 10p + +.option itl1=500 gmin=1e-15 itl4=10 acct + +.model smodel1 sw vt=0.5 ron=100 +.model smodel2 sw vt=0.5 ron=100 + +.tran 0.4n 100u + + +.control +unset ngdebug +set filetype=ascii +rusage +run +rusage all +write noi_test.out v(1) +plot v(2) v(3) xlimit 4u 5u +plot v(ga1) v(ga2) xlimit 4u 5u +linearize +*rms v(1) +fft v(3) +plot mag(v(3)) loglog xlimit 1e4 1e8 ylimit 1e-10 1e-4 +setplot tran1 +linearize +psd 101 v(3) +plot mag(v(3)) xlimit 0 3e7 ylimit 0 10u + +.endc + + +.end diff --git a/Windows/spice/examples/transient-noise/noilib-demo.h b/Windows/spice/examples/transient-noise/noilib-demo.h new file mode 100644 index 00000000..84e119d3 --- /dev/null +++ b/Windows/spice/examples/transient-noise/noilib-demo.h @@ -0,0 +1,56 @@ + +* standard inverter made noisy +*.subckt inv1 dd ss sub well in out +*vn1 out outi dc 0 noise 0.1 0.3n 1.0 0.1 +*mn1 outi in ss sub n1 w=2u l=0.25u AS=3p AD=3p PS=4u PD=4u +*mp1 outi in dd well p1 w=4u l=0.25u AS=7p AD=7p PS=6u PD=6u +*.ends inv1 + +* standard inverter +.subckt inv1 dd ss sub well in out +mn1 out in ss sub n1 w=2u l=0.25u AS=3p AD=3p PS=4u PD=4u +mp1 out in dd well p1 w=4u l=0.25u AS=7p AD=7p PS=6u PD=6u +.ends inv1 + +* very noisy inverter (noise on vdd and well) +.subckt inv1_1 dd ss sub well in out +vn1 dd idd dc 0 trnoise 0.05 0.05n 1 0.05 +vn2 well iwell dc 0 trnoise 0.05 0.05n 1 0.05 +mn1 out in ss sub n1 w=2u l=0.25u AS=3p AD=3p PS=4u PD=4u +mp1 out in idd iwell p1 w=4u l=0.25u AS=7p AD=7p PS=6u PD=6u +*Cout out 0 0.1p +.ends inv1_1 + + +* another very noisy inverter +.subckt inv1_2 dd ss sub well in out +vn1 out outi dc 0 trnoise 0.05 8p 1.0 0.001 +mn1 outi in ss sub n1 w=2u l=0.25u AS=3p AD=3p PS=4u PD=4u +mp1 outi in dd well p1 w=4u l=0.25u AS=7p AD=7p PS=6u PD=6u +*Cout out 0 0.1p +.ends inv1_2 + +* another very noisy inverter with current souces parallel to transistor +.subckt inv13 dd ss sub well in outi +in1 ss outi dc 0 noise 200u 0.05n 1.0 50u +mn1 outi in ss sub n1 w=2u l=0.25u AS=3p AD=3p PS=4u PD=4u +in2 dd outi dc 0 noise 200u 0.05n 1.0 50u +mp1 outi in dd well p1 w=4u l=0.25u AS=7p AD=7p PS=6u PD=6u +*Cout out 0 0.1p +.ends inv13 + +.subckt inv53 dd ss sub well in out +xinv1 dd ss sub well in 1 inv1 +xinv2 dd ss sub well 1 2 inv1 +xinv3 dd ss sub well 2 3 inv1 +xinv4 dd ss sub well 3 4 inv1 +xinv5 dd ss sub well 4 out inv1 +.ends inv53 + +.subckt inv253 dd ss sub well in out +xinv1 dd ss sub well in 1 inv53 +xinv2 dd ss sub well 1 2 inv53 +xinv3 dd ss sub well 2 3 inv53 +xinv4 dd ss sub well 3 4 inv53 +xinv5 dd ss sub well 4 out inv53 +.ends inv253 diff --git a/Windows/spice/examples/transient-noise/noise_vnoi.cir b/Windows/spice/examples/transient-noise/noise_vnoi.cir new file mode 100644 index 00000000..a589d1a0 --- /dev/null +++ b/Windows/spice/examples/transient-noise/noise_vnoi.cir @@ -0,0 +1,31 @@ +* Random noise test +* internal noise source + +* one over f +VNOI1 1 0 DC 0 TRNOISE(0n 1n 1.7 1n) +VNOI2 2 0 DC 0 TRNOISE(0n 1n 1.4 1n) +VNOI3 3 0 DC 0 TRNOISE(0n 1n 1.0 1n) +VNOI4 4 0 DC 0 TRNOISE(0n 1n 0.5 1n) +* white +VNOI5 5 0 DC 0 TRNOISE(1n 1n 0 0) +* both +VNOI6 6 0 DC 0 TRNOISE(1n 1n 1 1n) + +* 250000 sample points +.tran 1n 250u + +.control +run +plot v(1) v(2) v(3) v(4) v(5) v(6) +plot v(1) v(2) v(3) v(4) v(5) v(6) xlimit 102.0u 102.01u ylimit -3n 3n +linearize +meas tran vavg5 AVG v(5) from=0 to=250u +meas tran vpp5 PP v(5) from=0 to=250u +meas tran vrms5 RMS v(5) from=0 to=250u +fft v(1) v(2) v(3) v(4) v(5) v(6) +plot mag(v(1)) mag(v(2)) mag(v(3)) mag(v(4)) mag(v(5)) loglog xlimit 1e3 1e9 +plot mag(v(6)) loglog xlimit 1e3 1e9 +.endc + +.end + diff --git a/Windows/spice/examples/transient-noise/rts-1.cir b/Windows/spice/examples/transient-noise/rts-1.cir new file mode 100644 index 00000000..f35256dc --- /dev/null +++ b/Windows/spice/examples/transient-noise/rts-1.cir @@ -0,0 +1,29 @@ +* white noise, 1/f noise, RTS noise + +* voltage source +VRTS2 13 12 DC 0 trnoise(0 0 0 0 5m 18u 30u) +VRTS3 11 0 DC 0 trnoise(0 0 0 0 10m 20u 40u) +VALL 12 11 DC 0 trnoise(1m 1u 1.0 0.1m 15m 22u 50u) + +VW1of 21 0 DC trnoise(1m 1u 1.0 0.1m) + +* current source +IRTS2 10 0 DC 0 trnoise(0 0 0 0 5m 18u 30u) +IRTS3 10 0 DC 0 trnoise(0 0 0 0 10m 20u 40u) +IALL 10 0 DC 0 trnoise(1m 1u 1.0 0.1m 15m 22u 50u) +R10 10 0 1 + +IW1of 9 0 DC trnoise(1m 1u 1.0 0.1m) +Rall 9 0 1 + +* 500000 sample points +.tran 1u 500u + +.control +run +plot v(13) v(21) +plot v(10) v(9) +.endc + +.end + diff --git a/Windows/spice/examples/transient-noise/shot_ng.cir b/Windows/spice/examples/transient-noise/shot_ng.cir new file mode 100644 index 00000000..ed06c81c --- /dev/null +++ b/Windows/spice/examples/transient-noise/shot_ng.cir @@ -0,0 +1,27 @@ +* Shot noise test with B source, diode +* voltage on device (diode, forward) +Vdev out 0 DC 0 PULSE(0.4 0.45 10u) +* diode, forward direction, to be modeled with noise +D1 mess 0 DMOD +.model DMOD D IS=1e-14 N=1 +X1 0 mess out ishot +* device between 1 and 2 +* new output terminals of device including noise: 1 and 3 +.subckt ishot 1 2 3 +* white noise source with rms 1V +VNG 0 11 DC 0 TRNOISE(1 1n 0 0) +*measure the current i(v1) +V1 2 3 DC 0 +* calculate the shot noise +* sqrt(2*current*q*bandwidth) +BI 1 3 I=sqrt(2*abs(i(v1))*1.6e-19*1e7)*v(11) +.ends ishot +* 20000 sample points +.tran 1n 20u +.control +run +plot (-1)*i(vdev) +meas tran vdev_rms avg i(vdev) from=0u to=9.9u +meas tran vdev_rms avg i(vdev) from=10.1u to=20u +.endc +.end |