summaryrefslogtreecommitdiff
path: root/Windows/spice/examples/transient-noise
diff options
context:
space:
mode:
Diffstat (limited to 'Windows/spice/examples/transient-noise')
-rw-r--r--Windows/spice/examples/transient-noise/README15
-rw-r--r--Windows/spice/examples/transient-noise/modelcard.nmos41
-rw-r--r--Windows/spice/examples/transient-noise/modelcard.pmos31
-rw-r--r--Windows/spice/examples/transient-noise/noi-ring51-demo.cir59
-rw-r--r--Windows/spice/examples/transient-noise/noi-sc-tr.cir53
-rw-r--r--Windows/spice/examples/transient-noise/noilib-demo.h56
-rw-r--r--Windows/spice/examples/transient-noise/noise_vnoi.cir31
-rw-r--r--Windows/spice/examples/transient-noise/rts-1.cir29
-rw-r--r--Windows/spice/examples/transient-noise/shot_ng.cir27
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