MacSpice_Templates (ongoing personal cheatsheet)
Array_Tests Inverter_Modeling PWL_Noise_Tests
Bsim_MOS_Gate_Cap Lateral_PNP Ring_At_StartUp
Binary_Decoder Lissajous Root_Locus
BSIM_MOS_CAPS Math Sanity_Test_NPN_TC
Clipping_White_Noise NMOS Self_Heating_NPN
CMOS_Delay_vs_VCC NMOS_Noise_Curves Show_Details
Control_Loops Noise_Current_Curves Simple_ADC_2_DAC
Converge Noise_Voltage_Curves Spectrum_2_Jitter
Create_PWL_Noise_File Non-linear Sources SubCircuit_Tests
Devices_Details One_F_Noise_PWL SubThresshold_Curves
D_FlipFlop One_F_Noise_Shape Sweep_Decades
Extract_and_Remake One_Line_Logic THD_Curves
FFT_Scale_Tests OpAmp_Corner_Tester Transfer_Function
FFT_Tests Pinch_Resistor Variable_Array_Details
Ftau_Curves Pole_Zero_Extraction Vertical_NPN
Functions PulseWidthMod_Balanced
Gummel_Curves PulseWidthMod_Sync
*======== ====== ====== ====== ====== ====== ====== ====== ======
*V_DC_NUM NODE_P NODE_N DC VALUE AC ACMAG ACPHASE
*I_DC_NUM NODE_P NODE_N DC VALUE AC ACMAG ACPHASE
*======== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
*V_PULSE# NODE_P NODE_N DC VALUE PULSE( VINIT VPULSE TDELAY TRISE TFALL PWIDTH PERIOD )
*V_SIN# NODE_P NODE_N DC VALUE SIN( V_DC AC_MAG FREQ DELAY FDamp)
*V_FM # NODE_P NODE_N DC VALUE SFFM( V_DC AC_MAG FREQ_C MODLEV FREQ_M)
*V_PWL# NODE_P NODE_N DC VALUE PWL( T1 V1 T2 V2 T3 V3 ...>)
*======== ====== ====== ====== ====== ====== ====== ====== ======
*E_GAIN# NODE_P NODE_N CNTL_P CNTL_N GAIN
*G_GM#B NODE_P NODE_N CNTL_P CNTL_N GM ON/OFF
*======== ====== ====== ====== ====== ====== ====== ====== ======
*D_NUMB NODE_P NODE_N MODEL AREA IC=? TEMP=?
*Q_NUMB NCOL NBASE NEMIT NSUB MODEL AREA IC=? TEMP=?
*MOS_NUMB NDRAIN NGATE NSOUR NBULK MODEL L=VAL W=VAL AD=? AS=? PD=? PS=?
*M1 2 9 3 0 MOD1 L=10U W=5U AD=100P AS=100P PD=40U PS=40U
*JFET_NUM NDRAIN NGATE NSOUR MODEL AREA IC=? TEMP=?
*R_Rsemi# N1 N2 VALU MNAME L=? W=? TEMP=?
*======== ====== ====== ====== ====== ====== ====== ====== ======
*R_NUMB NODE1 NODE2 RVALUE MODEL L=VAL W=VAL
*C_NUMB NODE1 NODE2 CVALUE MODEL IC=V0
*L_NUMB NODE1 NODE2 LVALUE MODEL IC=I0
*K_L_NUM LNUM1 LNUM2 KVALUE
*S_NUMB NODE1 NODE2 CNTL_P CNTL_N MODEL ON/OFF
*======== ====== ====== ====== ====== ====== ====== ====== ======
*DC SOURC1 VSTART VSTOP VSTEP SOURC2 START2 STOP2 STEP2
*AC DECLin NUMDEC FSTART FSTOP TRAN TSTEP TSTOP TSTART TMAX ?UIC?
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
*PZ NODE1 NODE2 NODE3 NODE4 CUR/VOL POL/ZER/PZ
*NOISE V(OUT) VIN DECLIN POINTS FSTART FSTOP [PPS]
*======== ====== ====== ====== ====== ====== ====== ====== ======
*SET SPECWINDOW= "BLACKMAN"
*SPEC FSTART FSTOP FSTEP VECTOR
*PLOT MAG( VECTOR )
*======== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
*specwindow none, hanning, cosine, rectangular, hamming, triangle, bartlet, blackman, gaussian.
*======== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
*plot xlog ylog loglog linear samep vs~~~~~xname
*plot ylimit~ylo~~~~yhi xlimit~xlo~~~~xhi xdelta~xdel ydelta~ydel xindices~xilo~xihi
*plot xlabel~word ylabel~word title~~word xcompress~comp
*======== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
*PLOT MAG() PH() DB() REAL() IMAG() LOG() LN() EXP() ABS() MEAN() SQRT() DERIV()
*PLOT SIN() COS() TAN() ATAN() VECTOR RND() J() NORM() POS() LENGTH
*======== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
T = 1012 G = 109 Meg = 106 K = 103 mil = 25.4*10-6
m = 10?3 u = 10-6 n = 10-9 p = 10?12 f = 10-15
Math + - * / ^ %
logical & = and | = or != not
relation < > >= <= = <> producing values of 0 or 1
gt > lt < ge >=
le <= ne <> eq =
and & or | not !
Nutmeg pre-defined constants
pi 3.14159...)
e 2.71828...)
c 299,792,500 m/s)
i square root of -1
kelvin Absolute 0 in Centigrade (-273.15°C)
echarge The charge on an electron (1.6021918e-19 C)
boltz Boltzman's constant (1.3806226e-23 J/K)
planck Planck's constant (h = 6.626200e-34 J/Hz)
MacSpice 14 -> display
MacSpice 12 -> show qn1
MacSpice 40 -> showmod
MacSpice 36 -> dump
MacSpice 34 -> listing
====================Converge=====================================
.OPTIONS SRCSTEPS =100 100 is the number of steps of stepping algorithm.
.OPTIONS GMINSTEPS =200 Gminsteps option adjusts number of Gmin increments used during DC analysis.
.OPTIONS GMIN =1n default 1e-12
.OPTIONS RSHUNT =100Meg The Rshunt option places a resistor every node in the circuit to ground
.OPTIONS RAMPTIME =10ns Ramptime causes all independent sources ramped up from zero initial values at beginn
.OPTIONS ALTINIT =10 Setting Altinit to 1 causesmore lenient algorithm used when UIC
.OPTIONS METHOD =gear default is "trapezoidal" (or just "trap").
.OPTIONS RELTOL =.01 sets accuracy, reset to default value of .001 after things working
.OPTIONS ABSTOL =1n sets accuracy, use 1u in amp applications default Abstol=1pA
.OPTIONS VNTOL =1m sets accuracy, default Vntol=1µV.
.OPTIONS TRTOL =x Sets transient error tolerance. default 7.0. an estimate of overestimates truncation error.
.OPTIONS ITL1 =400 dc iteration limit. default is 100.
.OPTIONS ITL2 =100 dc transfer curve iteration limit. default 50.
.OPTIONS ITL3 =x lower transient analysis iteration limit. default 4. (Note: not implemented in Spice3).
.OPTIONS ITL4 =500 transient analysis timepoint iteration limit. default is 10.
.OPTIONS ITL5 =x transient analysis total iteration limit. default 5000. Set ITL5=0 to omit test.not in Spice3.
.OPTIONS PIVREL =x Resets relative ratio between largest column entry and an acceptable pivot value. default 1.0e-3.
.OPTIONS PIVTOL =x Sets absolute minimum value for matrix entry to be accepted as pivot. default 1.0e-13.
.OPTIONS RELTOL =x Sets the relative error tolerance of the program. Tdefault value is 0.001 (0.1%).
.OPTIONS TEMP =x Sets operating temperature of the circuit. default s 27 deg C (300 deg K).
.OPTIONS TNOM =x Sets the nominal temperature at which device parameters
Add UIC (Use Initial Conditions) to the .TRAN line. Example: .TRAN .1N 100N UIC
Add .NODESET values Example: .NODESET V(6)=0
Add RC snubbers around diodes.
Add Capacitance for all semiconductor junctions
Add rise/fall times of the sources.
nodesets "filename" //Create a file of .nodeset statements
.NODESET: Specify Initial Node Voltage Guesses
.NODESET V(12)=4.5 V(4)=2.23
.NODESET V(6)=0 Add .NODESET values for top level circuit nodes (not subcircuit nodes)
.IC: Set Initial Conditions
uic on tran statement stops tran from doing op
starts with everything at zero unless specified with .ic statements.
safer to use a .IC statement and not specify UIC on the tran statement.
R2 VIN BP 10
L2 BP 0 .159 IC= 0
C2 BP 0 .159 IC= 1
.tran 1 20 0 UIC
====================Non-linear Sources============================
BXXXXXXX N+ N- <I=EXPR> <V=EXPR>
B1 0 1 I = cos(v(1))+sin(v(2))
B2 0 1 V = ln(cos(log(v(1,2)^2)))-v(3)^4+v(2)^v(1)
B3 3 4 I = 17
B4 3 4 V = exp(pi^i(vdd))
abs asinh cosh sin acos atan exp sinh
acosh atanh ln sqrt asin cos log tan
+ - * / ^ unary -
u() unit step function, zero = ( arguments <=0) one ( arguments > 0)
uramp(x) integral of the unit step:
===================Math=====================================
Logic gt > lt < ge >= le <= ne <> eq = and & or | not !
mag(vector) magnitude of vector. [Note: magnitude() is a synonym for this.]
ph(vector) phase of vector. [Note: phase() is a synonym for this.]
j(vector) i (sqrt(-1)) times vector.
real(vector) real parts of vector.
imag(vector) imaginary parts of vector.
db(vector) 20log10(mag(vector)).
log(vector) logarithm (base 10) of vector.
ln(vector) natural logarithm (base e) of vector.
exp(vector) e to the vector power.
abs(vector) absolute value of vector.
sqrt(vector) square root of vector.
sin(vector) sine of vector.
cos(vector) cosine of vector.
tan(vector) tangent of vector.
acos(vector) inverse cosine of vector.
asin(vector) inverse sine of vector.
atan(vector) inverse tangent of vector.
norm(vector) vector normalized to 1 (i.e. the largest magnitude of any element is 1).
pos(vector) 1 if the real part of vector is positive, 0 otherwise.
rnd(vector) random integer between 0 and absolute value of vector's corresponding element.
mean(vector) a scalar (length 1 vector) mean of the elements of vector.
maximum(vector) maximum element of vector.with the greatest magnitude.
minimum(vector) minimum element of vector.with the smallest magnitude.
unitvec(number) vector length number, with elements 1. If number=first element taken,floor magnitude used
vector(number) result vector of length number If number = vector then = first element taken, floor used.
length(vector) The length of vector.
sortorder(vector) Result vector has elements of positions for input vector after sorted increasing order
interpolate(plot.vector) result named vector onto scale of current plot.
deriv(vector)
Calculates derivative of the given
vector.
integral(vector) Interpolates its argument onto the current scale.
===========Array_Tests==============================

--------------------------------------------------------------------------------
Index x y z w r
--------------------------------------------------------------------------------
0 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00
1 1.00000e+00 3.00000e+00 1.00000e+00 2.00000e+00 4.25000e+00
2 2.00000e+00 2.00000e+00 2.00000e+00 4.00000e+00 8.50000e+00
3 3.00000e+00 4.00000e+00 3.00000e+00 6.00000e+00 1.27500e+01
4 4.00000e+00 8.00000e+00 0.00000e+00
5 5.00000e+00 0.00000e+00
6 6.00000e+00
7 7.00000e+00
8 8.00000e+00
9 9.00000e+00
10 0.00000e+00
--------------------------------------------------------------------------------
Index z x y
--------------------------------------------------------------------------------
0 0.00000e+00 0.00000e+00 0.00000e+00
1 4.81888e-01 2.00000e+00 3.00000e+00
2 2.00000e+00 1.00000e+00 2.00000e+00
3 3.00000e+00 3.00000e+00 4.00000e+00
4 4.00000e+00
5 5.00000e+00
6 6.00000e+00
7 7.00000e+00
8 8.00000e+00
9 9.00000e+00
10 0.00000e+00
...
===========Copy_Paste_Text_Below_And_Simulate=========
Array_Tests
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
* ___ ___
* |VIN|__/\ /\ /\_|OUT|
* |___| \/ \/ |___|
* _|_ R1 _|_
* /_ \ ___
* // \ \ C1 _|_
* \ \// ///
* \___/
* _|_
* ///
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15 srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ====== ======
*V_SIN# NODE_P NODE_N DC VAL SIN( V_DC AC_MAG FREQ DELAY FDamp)
VIN VIN 0 DC 0 sin( 0 1 1 )
*=========Run_Sim============================================
.control
set pensize = 2
*=========Create_Arrays============================================
let x= (0;1;2;3)
let y= (0;3;2;4)
compose z start = 0 stop = 10 step =1
compose w start = 0 stop = 10 step =2
compose r start = 0 stop = 17 lin =5
*=========Define_Array_Type========================================
settype time x
settype voltage y
*notype time*voltage*current*frequency*power*decibel*temperature
*=========View_Arrays========================================
plot y vs x
print x y z w r
*=========View_Info========================================
display
*show all show vin showmod dump
*=========Modify_Arrays========================================
let z[1] = (1+rnd(32768))/32769
let x = sortorder(y)
print z x y
.endc
.end
===========SubCircuit_Tests======================

===========Copy_Paste_Text_Below_And_Simulate=========
SubCircuit_Tests
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
* VIN ___ ___
* ____________|LC1|______|OUT|
* _|__ |___| |___|
* /_ \ VIN _|_ |
* // \ \ /// |
* \ \_// |
* \____/ _/\ /\ /\____|
* _|_ _|_ \/ \/ R1
* /// ///
*
*======== ====== ====== ====== ====== ====== ====== ====== ====== ======
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15 TEMP=27 srcsteps = 1 gminsteps = 1
VIN VIN 0 DC 0V AC 1V
XLC1 VIN OUT LC1
R1 OUT 0 10
*=========Run_Sim=======================================================
.control
run
*AC DECLin NUMDEC FSTART FSTOP
ac dec 30 .01 100
plot db(out)
.endc
*=========Create_SubCircuit============================================
.SUBCKT LC1 IN OUT
L1 IN OUT 1
C1 OUT 0 1
.ENDS LC1
* _ _ _ L1 http://www.idea2ic.com/PlayWithJavascript/L_C_R_F.html
* ___ / \/ \/ \ ___ ___ _______ ___
* |IN |_| () () |___|OUT| |IN |__| |___|OUT|
* |___| | |___| |___| | LC1 | |___|
* _|_ |_______|
* ___ C1 _|_
* | /// Freq=0.159Hz Z=1 Ohm
* _|_
* /// .SUBCKT LC1 N1 IN OUT
*
*=======================================================================
.end
===========Sweep_Decades======================

===========Copy_Paste_Text_Below_And_Simulate========
Sweep_3_decades
* www.idea2ic.com
* dsauersanjose@aol.com 1/17/10 replace(OPT-SPACE)=>SPACE
*
VTime Vtime 0 PWL ( 0 0 1 3 )
R Vtime 0 1k
B1 OUT 0 V = exp(ln(10)*V(Vtime))
.control
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran .1m 1000m 0
plot v(vtime)
plot v(out) ylog
.endc
.end
===========FFT_Tests======================

freq = 1 real = 3.68976E-15 imag = -1.28998E-15
freq = 5 real = 1.27313 imag = -2.08248E-05
freq = 10 real = -4.61957E-15 imag = 2.43275E-16
freq = 15 real = -0.424087 imag = 2.0813E-05
freq = 20 real = 3.46294E-15 imag = 4.14668E-16
freq = 25 real = 0.254103 imag = -2.07895E-05
freq = 30 real = -4.2453E-15 imag = -2.88472E-16
freq = 35 real = -0.181129 imag = 2.07544E-05
===========Copy_Paste_Text_Below_And_Simulate========
FFT_tests
* www.idea2ic.com
* dsauersanjose@aol.com 1/17/10 replace(OPT-SPACE)=>SPACE
*
*
* Vtime ^ OUT
* ____ /_\
* VT _|_ | _|_
* /_ \ | /_ \
* // \ \ |_// \ \
* \ \// \ \//
* \___/ \___/ B1
* | |
* _|_ _|_
* /// ///
*
.Option srcsteps = 1 set Gmin = 1.0000E-02
*===========Circuit_Netlist=========================
VT Vt 0 PWL ( 0 0 1 1 )
V2PI P 0 DC 6.283185307179586
B1 V1 0 V = cos(v(p)*5*v(Vt) )
B2 OUT 0 V = tanh((v(V1))*100)
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran 1m 1 0 .1m
*===========Run_Transient=========================
.control
run
set pensize = 2
plot v(out)
*===========Find_Spectrum_OUT=========================
linearize
set specwindow= "none"
spec 1 500 1 v(out)
set pensize = 3
plot dB(abs(real(v(out)))) dB(abs(imag(v(out)))) xlog
*===========Print_Spectrum_OUT=========================
foreach ii 1 5 10 15 20 25 30 35
let i = $ii
let fr= frequency[i-1]
let vfftr = real(v(out)[i-1])
let vffti = imag(v(out)[i-1])
echo freq= $&fr real= $&vfftr imag= $&vffti
end
.endc
.end
===========FFT_Scale_Tests======================

Warning: Out of range index (-1), reset to 0.
freq = 1 real = -1.76235E-06 imag = -4.67344E-12
freq = 1 real = -1.76235E-06 imag = -4.67344E-12
freq = 2 real = -2.01374E-06 imag = -1.06821E-11
freq = 3 real = -2.64221E-06 imag = -2.10302E-11
freq = 4 real = -4.69524E-06 imag = -4.98467E-11
freq = 5 real = 1 imag = 1.32779E-05
freq = 6 real = 3.83675E-06 imag = 6.11724E-11
freq = 7 real = 1.75709E-06 imag = 3.27082E-11
Warning: Out of range index (-1), reset to 0.
freq = 1 real = -2.65005E-08 imag = -3.51973E-07
freq = 1 real = -2.65005E-08 imag = -3.51973E-07
freq = 2 real = -2.64972E-08 imag = -8.04502E-07
freq = 3 real = -2.64888E-08 imag = -1.58384E-06
freq = 4 real = -2.64616E-08 imag = -3.75421E-06
freq = 5 real = -1.33044E-05 imag = 1
freq = 6 real = -2.65749E-08 imag = 4.60709E-06
freq = 7 real = -2.65473E-08 imag = 2.46341E-06
===========Copy_Paste_Text_Below_And_Simulate========
FT_Scale_tests
* dsauersanjose@aol.com 1/21/10
* www.idea2ic.com
* the spectrum output appears to have..
* 1Vpk cosine => real 1
* Vtime ^ OUT 1Vpk sine => imag 1
* ____ /_\
* VT _|_ | _|_ frequency(0) = out of range
* /_ \ | /_ \ (No DC term )
* // \ \ |_// \ \
* \ \// \ \//
* \___/ \___/ B1
* | |
* _|_ _|_
* /// ///
*
.Option srcsteps = 1 set Gmin = 1.0000E-02
*=========Circuit_Netlist=========================
VT Vtime 0 PWL ( 0 0 1 1 )
B1C OUT1C 0 V = cos(2*3.14159*5*v(Vtime)) +.5
B1S OUT1S 0 V = sin(2*3.14159*5*v(Vtime))
B2 OUT 0 V = v(OUT1C) + v(OUT1C)
.tran 1m 1 0 .1m
*=========Run_Simulation=========================
.control
run
set pensize = 2
plot v(out1c) v(out1s)
plot out1c deriv(out1c)
plot out1c integral(out1c)
*=========Find_Cosine_Spectrum=========================
linearize
set specwindow= "none"
spec 1 500 1 v(out1c)
set pensize = 3
plot dB(abs(real(v(out1c)))) dB(abs(imag(v(out1c)))) xlog
*=========Print_Cosine_Spectrum=========================
foreach ii 1 2 3 4 5 6 7
let i = $ii
let fr= frequency[i-1]
let vfftr = real(v(out1c)[i-1])
let vffti = imag(v(out1c)[i-1])
echo freq= $&fr real= $&vfftr imag= $&vffti
end
*=========ReRun_Simulation=========================
run
*=========Find_Sine_Spectrum=========================
linearize
set specwindow= "none"
spec 1 500 1 v(out1s)
set pensize = 3
plot dB(abs(real(v(out1s)))) dB(abs(imag(v(out1s)))) xlog
*=========Print_Sine_Spectrum=========================
foreach ii 1 2 3 4 5 6 7
let i = $ii
let fr=frequency[i-1]
let vfftr = real(v(out1s)[i-1])
let vffti = imag(v(out1s)[i-1])
echo freq= $&fr real= $&vfftr imag= $&vffti
end
.endc
.end
=========Create_PWL_Noise_File=========================
MacSpice 2 -> rndsrc .5m 1
PWL_File.inc has been created in the MacSpice folder
MacSpice 3 ->
========="rndsrc"_File_Needs_To_Be_In_MacSpice_Folder=========
* rndsrc -- by CDHW -- writes a gausian random voltage source
*
* Note: see also the frontend command 'compose'
*
.control
begin
setplot new
set outfile = "PWL_File.inc"
if ($argc = 2)
let step = $argv[1]
let duration = $argv[2]
else
echo "usage - rndsrc timestep duration"
echo "effect - gaussian source written to file -- $outfile"
unset outfile
goto done
endif
set parity = true
let time = 0
echo "VpwlT OUT 0 PWL(" > $outfile
while time < duration
let time = time + step
if $parity
let X1 = (1+rnd(32768))/32769
let X2 = rnd(32768)/32768*8*atan(1)
let Vnoise = sqrt(-2*ln(X1))*cos(X2)
set parity = false
else
let Vnoise = sqrt(-2*ln(X1))*sin(X2)
set parity = true
endif
echo "+ $&time $&Vnoise" >> $outfile
end
echo "+ )" >> $outfile
unset outfile parity
label done
destroy
end
echo "PWL_File.inc has been created in the MacSpice folder"
.endc
==========="PWL_File.inc"_in_MacSpice_Folder===================
VpwlT OUT 0 PWL(
+ 0.0005 1.04178
+ 0.001 0.772328
+ 0.0015 -0.276687
+ 0.002 -0.314243
+ 0.0025 0.412586
+ 0.003 -0.619019
+ 0.0035 1.81929
.....
+ 0.9995 -0.432622
+ 1 -0.0988927
+ 1.0005 -0.726563
+ )
===========PWL_Noise_Tests=========================

Circuit: PWL_Noise_1VRMS_@1KHz
Warning: Source 'vpwlt' has no DC value specified, transient time=0s value used.
Here are the vectors currently active:
Title: PWL_Noise_1VRMS_@1KHz
Name: spect20 (Spectrum)
Date: Mon Jan 18 13:11:09 2010
frequency : frequency, real, 10000 long [default scale]
v(out) : voltage, complex, 10000 long
INPUT RMS = 1.09874
===========Copy_Paste_Text_Below_And_Simulate=========
PWL_Noise_1VRMS_@1KHz
* www.idea2ic.com
* dsauersanjose@aol.com 1/17/10 replace(OPT-SPACE)=>SPACE
* OUT Rload
* _____/\ __ need to have a file called
* _|_ \/ | "rndsrc" in the "MacSpice"
* / \ | folder inside "Doucments"
* /VpwlT\ |
* \ / _|_ First typing in a MacSpice
* \___/ /// window "rndsrc .5m 1"
* | Gnd
* _|_ Then run this file
* ///
* Gnd
* timestep = .5m means 1KHz bandwidth
* duration = 1 means 1Hz resolution
* type into a MacSpice window => "rndsrc .5m 1"
* it will generate PWL_File.inc in this format..
* VpwlT OUT 0 PWL( + 0.0005 0.988835 +.....
*===========Circuit_Netlist=========================
.include PWL_File.inc
Rload OUT 0 1k
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran .05m 1 0 .05m UIC
*===========Run_Transient=========================
.control
run
plot OUT ylimit -3 +3
*===========Find_Spectrum=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec 1 10k 1 v(OUT)
display
*===========Find_Spectrum_RMS=========================
let i = 0
let vpwr = 0
repeat 1000
let i = i +1
let tr = 0
let vpwr = vpwr + mag(OUT[i])* mag(OUT[i])
end
let vrms = sqrt(vpwr)
echo INPUT RMS = $&vrms
*===========View_Spectrum=========================
let vperHz = vrms/sqrt(1000)
set pensize = 2
plot mag(v(OUT)) vperHz loglog
.endc
.end
===========One_F_Noise_Shape====================

===========Copy_Paste_Text_Below_And_Simulate=========
ONE_F_Noise_Shape
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
* ___ V1H V2H V3H V4H ___
* |VIN|__/\ /\ /\______/\ /\ /\______/\ /\ /\______/\ /\ /\______| |
* |___| \/ \/ | \/ \/ | \/ \/ | \/ \/ | |___|
* _|_ R1H _|_ R2H _|_ R3H _|_ R4H _|_
* /_ \ C1 ___ C2 ___ C3 ___ C4 ___
* // \ \ | | | |
* \ \// _/\ /\ /\_| _/\ /\ /\_| _/\ /\ /\_| _/\ /\ /\_|
* \___/ | \/ \/ V1L | \/ \/ V2L | \/ \/ V3L | \/ \/ V4L
* _|_ _|_ R1L _|_ R2L _|_ R3L _|_ 41L
* /// /// /// /// ///
*
.OPTIONS GMIN=1e-15 METHOD=trap ABSTOL=1e-15 srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ====== ======
VIN VIN 0 DC 0 AC 1
R1H VIN V1H 10k
C1 V1H V1L 10u
R1L V1L 0 10k
R2H V1H V2H 10k
C2 V2H V2L 1u
R2L V2L 0 10k
R3H V2H V3H 10k
C3 V3H V3L .1u
R3L V3L 0 10k
R4H V3H V4H 10k
C4 V4H V4L .01u
R4L V4L 0 10k
*=========Run_Sim=======================================================
.control
run
*AC DECLin NUMDEC FSTART FSTOP
ac dec 30 .01 100k
plot db(v1h) db(v2h) db(v3h) db(v4h)
.endc
.end
===========One_F_Noise_PWL========================

===========Copy_Paste_Text_Below_And_Simulate=========
ONE_F_Noise_PWL
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
* ___ V1H V2H V3H V4H ___
* |OUT|__/\ /\ /\______/\ /\ /\______/\ /\ /\______/\ /\ /\______| |
* |___| \/ \/ | \/ \/ | \/ \/ | \/ \/ | |___|
* _|_ R1H _|_ R2H _|_ R3H _|_ R4H _|_
* /_ \ C1 ___ C2 ___ C3 ___ C4 ___
* // \ \ | | | |
* \ \// _/\ /\ /\_| _/\ /\ /\_| _/\ /\ /\_| _/\ /\ /\_|
* \___/ | \/ \/ V1L | \/ \/ V2L | \/ \/ V3L | \/ \/ V4L
* _|_ _|_ R1L _|_ R2L _|_ R3L _|_ 41L
* /// /// /// /// ///
*
* VpwlT OUT 0 PWL( + 0.0005 0.988835 +.....
.OPTIONS GMIN=1e-15 METHOD=trap ABSTOL=1e-15 srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ====== ======
.include PWL_File.inc
R1H OUT V1H 10k
C1 V1H V1L 10u
R1L V1L 0 10k
R2H V1H V2H 10k
C2 V2H V2L 1u
R2L V2L 0 10k
R3H V2H V3H 10k
C3 V3H V3L .1u
R3L V3L 0 10k
R4H V3H V4H 10k
C4 V4H V4L .01u
R4L V4L 0 10k
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran .05m 1 0 .05m UIC
*=========Run_Sim=======================================================
.control
run
plot v4h
*=========Find_Spectrum=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec 1 10k 1 v(v4h)
display
plot mag(v(v4h)) loglog ylimit .001 .1
.endc
.end
===========CMOS_Delay_vs_VCC================

n = 1 out_rise = 3.18366E-10 ref = 0 delay = 3.18366E-10
n = 2 out_fall = 5.24173E-09 ref = 4E-09 delay = 1.24173E-09
n = 3 out_rise = 9.111E-09 ref = 8E-09 delay = 1.111E-09
n = 4 out_fall = 1.31712E-08 ref = 1.2E-08 delay = 1.17118E-09
n = 5 out_rise = 1.70892E-08 ref = 1.6E-08 delay = 1.08922E-09
n = 6 out_fall = 2.11208E-08 ref = 2E-08 delay = 1.12083E-09
n = 7 out_rise = 2.50105E-08 ref = 2.4E-08 delay = 1.01051E-09
n = 8 out_fall = 2.90805E-08 ref = 2.8E-08 delay = 1.08052E-09
n = 9 out_rise = 3.29686E-08 ref = 3.2E-08 delay = 9.68584E-10
n = 10 out_fall = 3.70402E-08 ref = 3.6E-08 delay = 1.04022E-09
n = 11 out_rise = 4.09382E-08 ref = 4E-08 delay = 9.38156E-10
n = 12 out_fall = 4.49999E-08 ref = 4.4E-08 delay = 9.99948E-10
n = 13 out_rise = 4.89025E-08 ref = 4.8E-08 delay = 9.02517E-10
n = 14 out_fall = 5.29697E-08 ref = 5.2E-08 delay = 9.6969E-10
n = 15 out_rise = 5.69321E-08 ref = 5.6E-08 delay = 9.3212E-10
n = 16 out_fall = 6.09381E-08 ref = 6E-08 delay = 9.3812E-10
n = 17 out_rise = 6.49021E-08 ref = 6.4E-08 delay = 9.0212E-10
n = 18 out_fall = 6.89181E-08 ref = 6.8E-08 delay = 9.1812E-10
n = 19 out_rise = 7.28311E-08 ref = 7.2E-08 delay = 8.31067E-10
n = 20 out_fall = 7.68981E-08 ref = 7.6E-08 delay = 8.9812E-10
n = 21 out_rise = 8.08588E-08 ref = 8E-08 delay = 8.58754E-10
n = 22 out_fall = 8.48681E-08 ref = 8.4E-08 delay = 8.6812E-10
n = 23 out_rise = 8.88383E-08 ref = 8.8E-08 delay = 8.3833E-10
n = 24 out_fall = 9.28581E-08 ref = 9.2E-08 delay = 8.5812E-10
n = 25 out_rise = 9.67713E-08 ref = 9.6E-08 delay = 7.71272E-10
===========Copy_Paste_Text_Below_And_Simulate=========
CMOS_Delay_vs_VCC
* XINVR1 XINVR2 ___ XINVR3 XINVR4 XINVR5 XINVR6
* ___ |\ ___ |\ ___ /_ \ ___ |\ ___ |\ ___ |\ ___ |\ ___
* |VIN|_| \/\_|VR2|_| \/\_|VR3|_// \ \_|R3B|_| \/\_|VR4|_| \/\_|VR5|_| \/\_|VR6|_| \/\_|VR7|
* |___| | /\/ |___| | /\/ |___| \ \// |___| | /\/ |___| | /\/ |___| | /\/ |___| | /\/ |___|
* | |/ |/ \___/ |/ |/ |/ |/
* _|_ VN
* /_ \ _|_
* // \ \ /VCC\
* \ \// \___/ replace(OPT-SPACE)=>SPACE
* \___/ _|_
* _|_ /// 1.18.10_6.42PM dsauersanjose@aol.com www.idea2ic.com
* ///
.OPTIONS GMIN=1e-18 METHOD=traps
VCC VCC 0 PWL ( 0 3 100n 5 ) DC 2
VCLK VCLK 0 DC 0 PULSE( 0 1 1p 6p 6p 4n 8n )
BIN VIN 0 V = V(VCC)*u( V(VCLK)-.5)
XINVR1 VIN VR2 VCC INV_R
XINVR2 VR2 VR3 VCC INV_R
XINVR3 VR3 VR4 VCC INV_R
XINVR4 VR4 VR5 VCC INV_R
XINVR5 VR5 VR6 VCC INV_R
XINVR6 VR6 VR7 VCC INV_R
BOUT OUT 0 V = 2*u( V(VR7)-V(VCC)/2) -1
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran 10p 100n 0 10p UIC
*=========Run_Sim============================================
.control
run
set pensize = 2
plot vin vr7 out-2.5
display
*=========Create_Arrays============================================
compose vplus start = 0 stop = 24 step =1
compose delay start = 0 stop = 24 step =1
let i = 0
let tr = 0
let td = 0
let n = 0
*=========Find_Rise_And_Fall_Points============================================
repeat 10300
let i = i +1
let t = time[i-1]
if ((tr + 4e-9 )< t)
let tr = tr + 4e-9
end
if ( out[i] > 0 & out[i+1] < 0)
let td = t - tr
let vplus[n]= vcc[i]
let delay[n]= td
let n = n +1
echo n= $&n out_fall= $&t ref= $&tr delay= $&td
end
if ( out[i] < 0 & out[i+1] > 0)
let td = t - tr
let vplus[n]= vcc[i]
let delay[n]= td
let n = n +1
echo n= $&n out_rise= $&t ref= $&tr delay= $&td
end
end
*=========View_Delay_VS_VCC============================================
let delay[0]= delay[1]
plot delay vs vplus
.endc
*=========The_Inverter_SubCircuit============================================
*
* ^
* INV_R /_\ VCC
* |
* <- 1200ps at 6 stages at 3V
* ||___ 700ps at 6 stages at 5V
* __||
* ___ | ||_ MP1
* |VIN|__| | ___ 2V overdrive at VCC = 3V
* |___| | |__|VOUT 4V overdrive at VCC = 5V
* | _| |___|
* |__||
* ||___ MN1
* ||->
* _|_
* ///
*
.SUBCKT INV_R IN OUT VCC
MN1 OUT IN 0 0 NMOSC W=1u L=1u
MP1 OUT IN VCC VCC PMOSC W=3u L=1u
C1 OUT 0 6f
.ENDS INV_R
*==================The_CMOS_Model_Files==================================
.model NMOSC NMOS(
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=160e-10 xj=0.25e-06 nch=0.5e+17
*------------------V_threshold-------------------------------------------
+ vth0=0.72 nlx=0.12e-06
*------------------Bulk--------------------------------------------------
+ k1=1.04 k2=-1.209E-01
+ cdsc=-2.4E-4 cdscd=-1.506E-04 cdscb=-2.219E-04
*------------------mobility----------------------------------------------
+ u0=678 ua=8.964e-10
+ ub=1.472e-18 uc=-4.441E-17 vsat=86000
*------------------Subthresshold-----------------------------------------
+ nfactor=1.8
+ cit=-5.0E-04 voff=-7.862E-02
+ eta0=4.441e-16 etab=-2.E-01 dsub=0.7
*------------------Hot electrons-----------------------------------------
* alpha0=1.61e-05 beta0=36.68
*------------------VAF---------------------------------------------------
+ lint=.12e-06 pclm=.19 pscbe1=3.79e+08 pscbe2=9.4e-05
+ delta=0.01655 pvag=0.4484
*------------------Bulk_diode--------------------------------------------
+ js=5.858e-08
*------------------Resistance--------------------------------------------
+ rsh=70 rdsw=375
+ wr=0.7586 prwb=0 prwg=-4.441E-17
*------------------Capacitance-------------------------------------------
+ cj=0.0002424 cjsw=2.73e-10 mj=0.3551 mjsw=0.3873
+ cgso=9e-13 cgdo=9e-13 cgbo=7e-10
+ pb=0.5614 pbsw=0.8 xpart=0
+ dlc=5e-08 dwc=1.5e-07
*------------------BulkChargeEffect--------------------------------------
* a0=0.7 a1=0 a2=1 ags=0.05583
* b0=6.305e-08 b1=6.579e-08 keta=-1.531E-02
*------------------ShortChannel------------------------------------------
+ dvt0=2.2 dvt1=0.53 dvt2=-1.521E-01 drout=0.76
+ pdiblcb=.4 pdiblc1=0.00886 pdiblc2=0.00029
*------------------NarrowChannel-----------------------------------------
+ w0=2.6e-04 wint=0.16e-06
+ ww=-9.525E-14 wwn=1.0
+ dvt0w=0 dvt1w=5.3e6 dvt2w=-1.E-01
+ k3=2.53 k3b=-5 dwg=0 dwb=0
*------------------Noise-------------------------------------------------
* af=1 kf=1e-28 ef=0.95
*------------------Temperature-------------------------------------------
* pvsat=0 ute=-1.258E+00 kt1=-3.85E-01
* kt1l=0 kt2=-3.098E-02 ua1=5.705e-09
* ub1=-1.147E-17 uc1=-1.302E-01 at=20380
* prt=-3.287E+02 lk1=0 lk2=0
* lvsat=0 la0=0 lags=0 lute=0
+ luc=0 )
.model PMOSC PMOS(
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=1.725e-08 xj=2e-07 nch=1e+17
*------------------V_threshold-------------------------------------------
+ vth0=-0.90 nlx=1.84e-08
*------------------Bulk--------------------------------------------------
+ k1=0.3969 k2=0.03536
*------------------mobility----------------------------------------------
+ u0=268 ua=4.124e-09
* ub=-3.8E-19 uc=-1.512E-02 vsat=140000
*------------------Subthresshold-----------------------------------------
+ nfactor=.5016
* cit=0.0001 voff=-0.08 nfactor=1.0016 vth0=-0.94
* eta0=0.038 etab=-1.057E-02 dsub=0.3501
*------------------Hot electrons-----------------------------------------
+ alpha0=2.5e-08 beta0=28.92
*------------------VAF---------------------------------------------------
+ lint=.1e-06 pclm=3.2 pscbe1=5e+08 pscbe2=1e-05
* delta=0.009 pvag=4
*------------------Bulk_diode--------------------------------------------
+ js=3.95e-08
*------------------Resistance--------------------------------------------
+ rsh=135 rdsw=2500
* prwg=-7.2E-02 prwb=0.06 wr=0.8625
*------------------Capacitance-------------------------------------------
+ cj=0.0002424 cjsw=2.73e-10 mj=0.3551 mjsw=0.3873
+ cgso=9e-13 cgdo=9e-13 cgbo=7e-10
* cdsc=-2.4E-4 cdscd=-1.506E-01 cdscb=-2.219E-04
* pb=0.85 pbsw=0.88 xpart=0
* dlc=5e-08 dwc=1.5e-07
*------------------BulkChargeEffect--------------------------------------
* a0=1 a1=0 a2=2 ags=0.268
* b0=5e-07 b1=1e-07 keta=-1.0E-02
*------------------ShortChannel------------------------------------------
* dvt0=2.9 dvt1=0.2 dvt2=-1.521E-01 drout=0.175
* pdiblcb=0 pdiblc1- pdiblc2=0.001
*------------------NarrowChannel-----------------------------------------
+ w0=2.6e-04 wint=0.16e-06
+ ww=-3.1E-19 wwn=1.9
* dvt0w=0.68 dvt1w=5.3e6 dvt2w=0.051
* k3=56 k3b=-3 dwg=0 dwb=1e-08
*------------------Noise-------------------------------------------------
+ af=0.8 kf=1.50e-30 ef=0.95
*------------------Temperature-------------------------------------------
* ldelta=0.02282 lpdiblc1=0.01877 ute=-1.500E+00
* cgsl=1.5e-10 cgdl=1.5e-10 ckappa=0.2463 cf=0
* kt1=-4.684E-01 kt1l=-2.0E-08 kt2=-2.818E-02
* ua1=-2.E-10 ub1=-4.5E-18 uc1=-2.000E-02
+ at=-1.5E+05 prt=1400 )
.end
===========PulseWidthMod_Balanced==================

===========Copy_Paste_Text_Below_And_Simulate=========
PWM_Balanced
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
*
* Vtime ^ OUT
* ____ /_\
* VT _|_ | _|_
* /_ \ | /_ \
* // \ \ |_// \ \
* \ \// \ \//
* \___/ \___/ B1
* | |
* _|_ _|_
* /// ///
*
VP VP 0 DC 3.141592653589793
VT VT 0 PWL ( 0 0 1 1 )
B1 TRI 0 V = acos(cos(v(VP)*20*v(VT))) - v(VP)/2
B2 OUT 0 V = 2*u( v(TRI)+.5*cos(v(VP)*1*v(VT))) -1
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran .1m 1 0 .1m
*=========Run_Sim============================================
.control
run
set pensize = 2
plot v(tri) v(out)
.endc
.end
===========PulseWidthMod_Sync===================

===========Copy_Paste_Text_Below_And_Simulate=========
PWM_Sync
* dsauersanjose@aol.com 1/18/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
*
* Vtime ^ OUT
* ____ /_\
* VT _|_ | _|_
* /_ \ | /_ \
* // \ \ |_// \ \
* \ \// \ \//
* \___/ \___/ B1
* | |
* _|_ _|_
* /// ///
*
VP VP 0 DC 3.141592653589793
VT VT 0 PWL ( 0 0 1 1 )
B1 SAW 0 V = atan(tan(v(VP)*20*v(VT)+v(VP)/4))
B2 OUT 0 V = 2*u( v(SAW)+.6*cos(v(VP)*1*v(VT))) -1
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran .1m 1 0 .1m
*=========Run_Sim============================================
.control
run
set pensize = 2
plot v(saw) v(out)
.endc
.end
===========Ring_At_StartUp========================

===========Copy_Paste_Text_Below_And_Simulate=========
Ring_At_StartUp
* ___ ___
* XL = XC = 1 Ohms @1Hz __________|LP | __________|BP |
* | |___| | |___|
* _ _ _ | | _ _ _
* VIN / \/ \/ \ | R1 VIN R2 | / \/ \/ \
* ____| () () |__|_/\ /\ /\_ ___/\ /\ /\__|_| () () |_
* _|__ | \/ \/ _|_ _|__ \/ \/ | L2 _|_
* /_ \ L1 _|_ /// /_ \ _|_ ///
* // \ \ ___ C2 // \ \ ___ C2
* \ \_// | \ \_// |
* \____/ _|_ \____/ _|_
* _|_ /// _|_ ///
* /// ///
* H(s) = 1/(s^2 +s*w0/Q + w0^2) dsauersanjose@aol.com 4/15/08
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15 TEMP=27 srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ======
VIN VIN 0 DC 0V PWL(0 1 2 1 2.1 0) AC 1V
R2 VIN BP 10
L2 BP 0 .159 IC= 0
C2 BP 0 .159 IC= 1
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran 1 20 0 1 UIC
*=========Run_Sim============================================
.control
run
plot bp title Settle_Time_Q_10
.endc
.end
===========Transfer_Function========================

===========Copy_Paste_Text_Below_And_Simulate=========
Transfer_Function
* dsauersanjose@aol.com 4/15/08
* www.idea2ic.com ^ VC
* /_\
* |
* __/\ /\ /\_|__/\ /\ /\__
* | \/ \/ \/ \/ |
* | R1 R2 |
* VBN1 _|VCN1 VCN2 |_
* _____________|'QN1 QN2`|__
* VIN| |`->1X 1X<-'| |
* | |VEN1 | |
* | |____________________________| _|_
* _|_ _|_ VEN1 ///
* /AC1\ / _ \1I
* \___/ \/ \/
* | /\_/\ replace(OPT-SPACE)=>SPACE
* _|_ \___/
* /// _|_
* ///
*
.OPTIONS GMIN=1e-18 METHOD=trap srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ======
VCC VC 0 DC 10
VIN VIN 0 DC 0
I1 VEN1 0 1u
QN1 VCN1 VIN VEN1 NPN1 1.00
QN2 VCN2 0 VEN1 NPN1 1.00
R1 VCN1 VC 52K
R2 VCN2 VC 52K
*=========Run_Sim============================================
.control
*DC SOURC1 VSTART VSTOP VSTEP SOURC2 START2 STOP2 STEP2
dc vin -.3 .3 1m
plot VCN1 -VCN2
.endc
*======== ====== ====== ====== ====== ====== ====== ====== ======
.model NPN1 NPN( BF=2100 VAF=216 )
.model PNP1 PNP( BF=2100 VAF=21)
.end
===========Find_RC_3dB========================

Circuit: Find_RC_3dB
Here are the vectors currently active:
Title: Find_RC_3dB
Name: ac30 (AC Analysis)
Date: Mon Jan 18 19:01:43 2010
frequency : frequency, real, 41 long, grid = xlog [default scale]
in : voltage, complex, 41 long
out : voltage, complex, 41 long
vin#branch : current, complex, 41 long
3dB point = 158.489 Hz
===========Copy_Paste_Text_Below_And_Simulate=========
Find_RC_3dB
* dsauersanjose@aol.com 4/15/08
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
* R1
* VIN ___
* _____/\ /\ /\________|OUT|
* | \/ \/ | |___|
* _|__ |
* /_ \ _|_
* // \ \ ___ C1 Find 3dB freq
* \ \_// |
* \____/ _|_
* _|_ ///
* ///
*
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15 temp=27
*======== ====== ====== ====== ====== ====== ====== ====== ======
VIN IN 0 DC 0V AC 1V
R1 IN OUT 1k
C1 OUT 0 1u
*=========Run_Sim============================================
.control
run
*AC DECLin NUMDEC FSTART FSTOP
ac dec 10 1 10khz
plot db(v(out)) ylimit -3 0 title Find_R_C_3dB
display
*=========Find_3dB_Point============================================
let n = 0
let f = 0
repeat 39
let n = n+1
if ( db( out[n]) >-3)
let f = mag(frequency[n])
endif
endrepeat
*=========Print_Out_Results=========================================
echo "3dB point = $&f Hz"
.endc
.end
===========One_Line_Logic========================

===========Copy_Paste_Text_Below_And_Simulate=========
One_Line_Logic
* dsauersanjose@aol.com 4/15/08
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*=========Input_Signal============================================
VT Vtime 0 PWL ( 0 0 1 1 )
B1 A 0 V = u(sin(3.142*50*v(Vtime))) -.03
B2 B 0 V = u(sin(3.142*33*v(Vtime))) -.06
*=========Logic============================================
BAND VAND 0 V = u( v(A)*v(B)-.1) -2.03
BOR VOR 0 V = u( v(A)+v(B)-.1) -2.13
BNOT VNOT 0 V = u(.9-v(B)) -2.26
BXOR VXOR 0 V = u( v(A)*(.9-v(B)) + v(B)*(.9-v(A))-.1) -2.39
BNAND VNAND 0 V = 1- u(v(A)*v(B)-.1) -2.42
BNOR VNOR 0 V = 1- u(v(A)+v(B)-.1) -2.55
*=========Run_Sim============================================
.control
set pensize = 2
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran .1m .1 0 .1m
plot v(a) v(b) v(vand) v(vor) v(vnot) v(vxor) v(vnand) v(vnor)
.endc
.end
===========Binary_Decoder========================

===========Copy_Paste_Text_Below_And_Simulate=========
Binary_Decoder
* dsauersanjose@aol.com 1/18/20s
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*=========Input_Signal============================================
VT Vtime 0 PWL ( 0 0 1 1 )
B0 A 0 V = u(-1*sin( 3.142*20*v(Vtime)+1u))-.03
B1 B 0 V = u(-1*sin( 3.142*40*v(Vtime)+1u))-.06
B2 C 0 V = u(-1*sin( 3.142*80*v(Vtime)+1u))-.09
B3 D 0 V = u(-1*sin(3.142*160*v(Vtime)+1u))-.11
*=========Logic============================================
B0110 V0110 0 V = 0.3*u((.9-v(A))*(V(B))*(V(C))*(.9-V(D)) -.1) -.55
B1010 V1010 0 V = 0.3*u((v(A))*(.9-V(B))*(V(C))*(.9-V(D)) -.1) -.65
*=========Run_Sim============================================
.control
set pensize = 2
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran .1m .1 0 .1m
plot v(a) v(b) v(c) v(d) v(v1010) v(v0110)
.endc
.end
===========D_FlipFlop========================

===========Copy_Paste_Text_Below_And_Simulate=========
D_FlipFlop
* dsauersanjose@aol.com 1/18/20s
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
.OPTIONS GMIN=1p METHOD=gear ABSTOL=1u TEMP=27 srcsteps = 1 gminsteps = 1
.OPTIONS RELTOL=.001 ABSTOL=1n VNTOL=1n ITL4=500 ITL1=400
*======== ====== ====== ====== ====== ====== ====== ====== ======
VT Vtime 0 PWL ( 0 0 1 1 )
B1 CLK 0 V = u(sin(3.142*100*v(Vtime))-.95)-.03
B2 D 0 V = u(sin(3.142*50*v(Vtime)))-.06
XD_FF D CLK OUT D_FF
.control
set pensize = 2
tran .1m .1 0 .1m
plot v(clk) v(d) V(out)
.endc
*======== ====== ====== ====== ====== ====== ====== ====== ======
.SUBCKT D_FF D CLK Q
B5 E 0 V = u( v(CLK)*v(D) -.5) -u( (.9-v(D))*v(CLK)-.5)
D1 E F DD
D2 F E DD
C1 F 0 1p
B6 Q 0 V = .5*u( v(F ))
.ends
* _______
* ____| D Q |__
* | |
* ____|>CLK |
* |_______|
*
* E _______________
* ___ | D1 _|_ _|_D2 _______
* |D |_____|_ \ / ^ _|_ | ___
* |___| /_ \ _v_ /_\ F /_ \ |_|Q |
* // \ \ |_____|_____// \ \ |___|
* ___ \ \// _|_ \ \//
* |CLK|___\___/ ___ C1 \___/
* |___| _|_ _|_ _|_
* /// /// ///
*
*
.model DD D(IS=3.15e-18)
.end
===========Noise_Voltage_Curves=================

===========Copy_Paste_Text_Below_And_Simulate=========
LM394_Noise
* dsauersanjose@aol.com 1/18/20s
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* _______
* _|_ _|_
* /// / _ \
* \/ \/ I1
* /\_/\
* \___/
* _______|
* | _|
* |____|'
* VB |`->
* _|_ VE
* /VIN\
* \___/
* _|_
* ///
*
*
*=========Input_Circuit============================================
vin VE 0 DC 0.0 ac 1.0u
I1 0 VB 1uA
q1 VB VB VE LM394
.model LM394 npn kf=.3e-16 af=.75 bf=600 rb=50
*=========Run_Sim============================================
.control
setplot new
let "V1u" = 0*vector(41)
let "V10u" = 0*vector(41)
let "V100u" = 0*vector(41)
let "V1000u" = 0*vector(41)
*=========Noise_at_1uA============================================
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vb) vin dec 10 10 100k 1
destroy
let unknown.V1u = sqrt(v(onoise_spectrum))
*=========Noise_at_10uA============================================
alter I1 dc = 10u
op
noise v(vb) vin dec 10 10 100k 1
destroy
let unknown.V10u = sqrt(v(onoise_spectrum))
*=========Noise_at_100uA============================================
alter I1 dc = 100u
op
noise v(vb) vin dec 10 10 100k 1
destroy
let unknown.V100u = sqrt(v(onoise_spectrum))
*=========Noise_at_1000uA============================================
alter I1 dc = 1000u
op
noise v(vb) vin dec 10 10 100k 1
destroy
let unknown.V1000u = sqrt(v(onoise_spectrum))
*=========Plot_Output============================================
set pensize = 2
plot unknown.V1u unknown.V10u unknown.V100u unknown.V1000u vs frequency loglog title LM394NoiseVoltage
echo " ... done."
.endcontrol
.end
===========Noise_Current_Curves=================

===========Copy_Paste_Text_Below_And_Simulate=========
BJT Noise Current Test
* dsauersanjose@aol.com 1/18/20s
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* _______
* _|_ _|_
* /// / _ \
* \/ \/ I1
* /\_/\
* R1 \___/
* _/\ __|
* | \/ _|
* |____|'
* VB |`->
* _|_ VE
* /VIN\
* \___/
* _|_
* ///
*===================Input_Circuit============================================
vin VE 0 DC 0.0 ac 1.0u
I1 0 VC 1uA
R1 VC VB 1000k
q1 VC VB VE LM394
.model LM394 npn kf=.3e-16 af=.75 bf=600 rb=50
*===================Run_Sim============================================
.control
setplot new
let "V1u" = 0*vector(41)
let "V10u" = 0*vector(41)
let "V100u" = 0*vector(41)
let "V1000u" = 0*vector(41)
*===================Noise_at_1uA============================================
op
*display
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vc) vin dec 10 10 100k 1
destroy
let unknown.V1u = sqrt(v(onoise_spectrum))*1u
*===================Noise_at_10uA============================================
alter I1 dc = 10u
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vc) vin dec 10 10 100k 1
destroy
let unknown.V10u = sqrt(v(onoise_spectrum))*1u
*===================Noise_at_100uA============================================
alter I1 dc = 100u
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vc) vin dec 10 10 100k 1
destroy
let unknown.V100u = sqrt(v(onoise_spectrum))*1u
*===================Noise_at_1000uA============================================
alter I1 dc = 1000u
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vc) vin dec 10 10 100k 1
destroy
let unknown.V1000u = sqrt(v(onoise_spectrum))*1u
*===================Plot_Noise============================================
set pensize = 2
plot unknown.V1u unknown.V10u unknown.V100u unknown.V1000u vs frequency loglog title LM394NoiseCurrent
echo "... done."
.endcontrol
.end
===========NMOS_Noise_Curves=================

===========Copy_Paste_Text_Below_And_Simulate=========
NMOS Noise Voltage Test
* dsauersanjose@aol.com 1/20/10
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* _______
* _|_ _|_ Tox = 160Angs
* /// / _ \
* \/ \/ I1
* /\_/\ Glass is 10e10 to 10E14 Ohms-m
* \___/ 10Ee10*160E-10/(.8e-6*40e-6) = 5e12 Ohms to 5e16 Ohms
* _______| At Vtox = 1V expect .5pA to .05fA
* | _|
* |____|| .5pA = 3,125,000 electrons/sec
* VG ||-> .05fA = 32.5 electrons/sec
* _|_ VS
* /VIN\
* \___/ 1 electron @ 40fF = 4uV
* _|_
* ///
*
*===================Input_Circuit============================================
vin VS 0 DC 0.0 ac 1.0u
I1 0 VG 10uA
m1 VG VG VS 0 N1 W=40u L=.8u
*===================Run_Sim============================================
.control
setplot new
let "V10u" = 0*vector(61)
let "V100u" = 0*vector(61)
let "V1000u" = 0*vector(61)
*===================Noise_at_10uA============================================
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vg) vin dec 10 1 1000k 1
destroy
let unknown.V10u = sqrt(v(onoise_spectrum))
*===================Noise_at_100uA============================================
alter I1 dc = 100u
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vg) vin dec 10 1 1000k 1
destroy
let unknown.V100u = sqrt(v(onoise_spectrum))
*===================Noise_at_1000uA============================================
alter I1 dc = 1000u
op
*noise v(out) vin decLin points Fstart Fstop [PPS]
noise v(vg) vin dec 10 1 1000k 1
destroy
let unknown.V1000u = sqrt(v(onoise_spectrum))
*===================Plot_Noise_============================================
set pensize = 2
plot unknown.V10u unknown.V100u unknown.V1000u vs frequency loglog title NMOSNoiseVoltage
echo "... done."
.endcontrol
.model N1 NMOS
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=160e-10 xj=0.25e-06 nch=0.5e+17
*------------------V_threshold-------------------------------------------
+ vth0=0.72 nlx=0.12e-06
*------------------Bulk--------------------------------------------------
+ k1=1.04 k2=-1.209E-01
+ cdsc=-2.4E-4 cdscd=-1.506E-04 cdscb=-2.219E-04
*------------------mobility----------------------------------------------
+ u0=678 ua=8.964e-10
+ ub=1.472e-18 uc=-4.441E-17 vsat=86000
*------------------Subthresshold-----------------------------------------
+ nfactor=1.8
+ cit=-5.0E-04 voff=-7.862E-02
+ eta0=4.441e-16 etab=-2.E-01 dsub=0.7
*------------------Hot electrons-----------------------------------------
+ alpha0=1.61e-05 beta0=36.68
*------------------VAF---------------------------------------------------
+ lint=.12e-06 pclm=.19 pscbe1=3.79e+08 pscbe2=9.4e-05
+ delta=0.01655 pvag=0.4484
*------------------Bulk_diode--------------------------------------------
+ js=5.858e-08
*------------------Resistance--------------------------------------------
+ rsh=70 rdsw=375
+ wr=0.7586 prwb=0 prwg=-4.441E-17
*------------------Capacitance-------------------------------------------
+ cj=0.0002424 cjsw=2.73e-10 mj=0.3551 mjsw=0.3873
+ cgso=9e-13 cgdo=9e-13 cgbo=7e-10
+ pb=0.5614 pbsw=0.8 xpart=0
+ dlc=5e-08 dwc=1.5e-07
*------------------BulkChargeEffect--------------------------------------
+ a0=0.7 a1=0 a2=1 ags=0.05583
+ b0=6.305e-08 b1=6.579e-08 keta=-1.531E-02
*------------------ShortChannel------------------------------------------
+ dvt0=2.2 dvt1=0.53 dvt2=-1.521E-01 drout=0.76
+ pdiblcb=.4 pdiblc1=0.00886 pdiblc2=0.00029
*------------------NarrowChannel-----------------------------------------
+ w0=2.6e-04 wint=0.16e-06
+ ww=-9.525E-14 wwn=1.0
+ dvt0w=0 dvt1w=5.3e6 dvt2w=-1.E-01
+ k3=2.53 k3b=-5 dwg=0 dwb=0
*------------------Noise-------------------------------------------------
+ af=1 kf=5e-29 ef=0.95
*------------------Temperature-------------------------------------------
+ pvsat=0 ute=-1.258E+00 kt1=-3.85E-01
+ kt1l=0 kt2=-3.098E-02 ua1=5.705e-09
+ ub1=-1.147E-17 uc1=-1.302E-01 at=20380
* prt=-3.287E+02 lk1=0 lk2=0
+ lvsat=0 la0=0 lags=0 lute=0
+ luc=0
* SPICE MODEL ___
* __/\ ______|(D)| Drain
* CGD | \/ RD |___|
* 1.2fF _____________|__________
* _|_ _|_ _|_ _|_
* Gate ___ / _ \ I_ds ^ ___ CBD
* ___ | \/ \/ /_\ | 90fF <- (Caps for L/W .8u/40u)
* |(G)|__| /\_/\ | |_____| ___
* |___| |___ \___/ V ___| |_________| | Bulk
* | | | | _|_ _|_ 90fF |___|
* _|_ |__/|\___||_| \ / ___ _|_
* 1.2fF ___ |40fF|| _V_ | CBS \(B)/SUB=gnd!
* |_______|__________|_____| \ /
* CGS CGS | ___ V
* |__/\ ______|(S)|
* \/ RS |___| Source
*
* BiCMOS typical noise IDS =20uA @3V tox=160A
* Hz nV/rt_Hz nV/rt_Hz
* freq NMOS 40/.8 PMOS 40/.8
* 10 800 150
* 100 400 60
* 1000 150 30
* 10000 50 20
* 100000 10 15
.END
===========Ftau_Curves========================

15um^2 Ftau vs IE and TF
=>Ibias = Ftau@TF=1E-12
1E-05 9.9928E+08
0.0001 9.25452E+09
0.001 4.63825E+10
0.01 8.57078E+10
0.03 9.25452E+10
0.06 8.57078E+10
0.1 7.93756E+10
=>Ibias = Ftau@TF=2E-12
1E-05 9.9928E+08
0.0001 8.57078E+09
0.001 3.68429E+10
0.01 5.4078E+10
0.03 5.83921E+10
0.06 5.83921E+10
0.1 5.4078E+10
=>Ibias = Ftau@TF=4E-12
1E-05 9.9928E+08
0.0001 7.93756E+09
0.001 2.51008E+10
0.01 3.41209E+10
0.03 3.41209E+10
0.06 3.41209E+10
0.1 3.16E+10
Done.
===========Copy_Paste_Text_Below_And_Simulate=========
NPN_Ftau_15uu_TF
* dsauersanjose@aol.com 1/18/20s
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* ________
* | |
* | _|_
* |C /VCC\
* R1 _| \___/
* ____/\ /\ /\____|'QN1 |
* _|_ \/ \/ B |`-> _|_
* /// |E ///
* |
* _|_
* / _ \
* 1I \/ \/
* /\_/\
* \___/
* _|_
* ///
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15 TEMP=27 srcsteps = 1 gminsteps = 1
VCC C 0 DC 5V
QN1 C B E NPNV
R1 0 B 1
I1 E 0 DC 100u AC .01u
.control
echo "15um^2 Ftau vs IE and TF"
setplot new
* ================Create_Arrays============
set NameList = ( TF_1p TF_2p TF_4p )
compose TfVals values 1p 2p 4p
compose IbiasVals values 10u 100u 1m 10m 30m 60m 100m
settype current IbiasVals
let NoOfTf = length(TfVals)
let NoOfIbias = length(IbiasVals)
begin
unset interrupt
* ================Loop_CJE============
let j = 1
while ( j <= NoOfTf )
let tf = TfVals[j-1]
altermod npnv tf = $&tf
echo "=>Ibias = Ftau@TF=$&tf"
set thisName = $NameList[$&j]
let $thisName = 0*vector(NoOfIbias)
* ================Loop_Ibias==============
let k = 1
while ( k <= NoOfIbias )
let Ibias = IbiasVals[k-1]
alter I1 dc = $&Ibias
alter I1 ac = .01u
ac dec 30 .0001GHz 100GHz
* ================Find_Ftau=============
let g = (-db(b) - 160)
let f = 3.16*mag(frequency[ sortorder( abs(g-10.0) )[0] ] )
echo "$&unknown.Ibias $&f"
let unknown.{$thisName}[unknown.k-1] = f
destroy
if ($?interrupt)
goto bail
endif
let k = k + 1
endwhile
let j = j + 1
endwhile
* ================Plot_Ftau=============
setscale IbiasVals
plot $NameList loglog title "15um^2 Ftau vs IE and TF"
label bail
echo "Done."
end
.endc
* ================Model_File=============
.MODEL NPNV NPN(
+ IS=10.15e-18 NF=1.0 BF=89 VAF=107 IKF=.4
+ NR=1.006 BR=0.4822 VAR=4.286 IKR=0.0002472
+ ISE=9.15E-17 NE=2
+ ISC=1E-21 NC=2
+ RB=12 RBM=3 IRB=.1
+ RE=2 RC=33
+ CJE=37e-15 VJE=0.75 MJE=0.35
+ CJC=45E-15 VJC=0.6399 MJC=0.3531
+ CJS=2.939E-15 VJS=0.3488 MJS=0.1813 XCJC=0.4201
+ TF=1e-12 XTF=1 VTF=1.5 ITF=.8
+ TR=5.9e-9 FC=0.5 PTF=30
+ KF=1.000E-16 AF=1
+ XTB=2 EG=1.11 XTI=5 TNOM=25 )
.end
=============THD_Curves========================

THD% versus VIN_vpk and Temp_C
1 -55 -55 minus55C
0.001 0.00589131
0.003 0.052947
0.01 0.579029
0.03 4.58812
0.1 22.6833
0.3 35.9754
Error: No such vector plus25C
2 25 25 plus25C
0.001 0.003154
0.003 0.0283646
0.01 0.312478
0.03 2.6185
0.1 16.8027
0.3 33.8248
Error: No such vector plus125C
3 125 125 plus125C
0.001 0.00176857
0.003 0.0159104
0.01 0.175934
0.03 1.51973
0.1 11.766
===========Copy_Paste_Text_Below_And_Simulate=========
DIFF_Thd_Temp
* dsauersanjose@aol.com 1/18/20
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* ^ VC
* /_\
* |
* __/\ /\ /\_|__/\ /\ /\__
* | \/ \/ \/ \/ |
* | R1 R2 |
* VBN1 _|VCN1 VCN2 |_
* ___|'QN1 QN2`|__
* VIN _|_ |`->1X 1X<-'| |
* ______ / \ |VEN1 | |
* |VAC1 |EGin | |____________________________| _|_
* _|_ _| | _|_ VEN1 ///
* /AC1\ | \___/ / _ \1I
* \___/ |___| \/ \/
* | _|_ /\_/\
* _|_ /// \___/
* /// _|_
* OUT ///
* _____/\ _____
* _|_ R33 \/1K _|_
* VCN1__ / \ /// www.idea2ic.com
* |Eg1 |E_GAIN1 dsauersanjose@aol.com 4/15/08
* VCN2__| |
* \___/
* _|_
* ///
*
.OPTIONS GMIN=1e-18 METHOD=trap srcsteps = 1 gminsteps = 1
*======== ====== ====== ====== ====== ====== ====== ====== ======
VCC VC 0 DC 10
VAC1 VIN 0 DC 0 SIN( 0 1 1000 )
I1 VEN1 0 1u
QN1 VCN1 VBN1 VEN1 NPN1 1.00
QN2 VCN2 0 VEN1 NPN1 1.00
R1 VCN1 VC 52K
R2 VCN2 VC 52K
E_GAIN1 OUT 0 VCN1 VCN2 1
E_GAININ VBN1 0 VIN 0 1m
* ===============Run_Sim============
.control
tran 25u 5m 0 1u
plot out
* ===============Set_Up_Arrays============
echo "THD% versus VIN_vpk and Temp_C"
setplot new
set NameList = ( minus55C plus25C plus125C )
compose TempVals values (-55) 25 125
compose VinVals values 1m 3m 10m 30m 100m 300m
settype voltage VinVals
let NoOfTemp = length(TempVals)
let NoOfVin = length(VinVals)
begin
unset interrupt
* ===============Loop_Temp============
let j = 1
while (j <= NoOfTemp )
let Tmp = TempVals[j-1]
set temp = $&Tmp
set thisName = $NameList[$&j]
let $thisName = 0 * vector(NoOfVin)
echo "$&j $&Tmp $temp $thisName "
* ===============Loop_Vin==============
let k = 1
while (k <= NoOfVin )
let Vin = VinVals[k-1]
alter e_gainin gain = $&Vin
tran 25u 5m 0 1u
* ===============Do_Spectrum==============
linearize
set specwindow= "blackman"
spec 200 8k 200 v(out)
* ===============Find_THD==============
let thdsq =mag(out[9])^2 +mag(out[14])^2 +mag(out[19])^2 +mag(out[24])^2
let thd_percent= 100*sqrt(thdsq)/mag(out[4])
echo "$&unknown.Vin $&thd_percent"
let unknown.{$thisName}[unknown.k-1] = thd_percent
repeat 3
destroy
end
if ($?interrupt)
goto bail
endif
let k = k + 1
endwhile
* ===============Plot_THD==============
setscale VinVals
set pensize = 2
plot $NameList loglog title "THD_% vs Vin_pK and Temp_C" xlimit .01 1 ylimit .01 100
let j = j + 1
endwhile
label bail
echo "Done."
end
.endc
*======== ====== ====== ====== ====== ====== ====== ====== ======
.model NPN1 NPN( BF=2100 VAF=216 )
.model PNP1 PNP( BF=2100 VAF=210)
.end
===========Gummel_Curves========================

===========Copy_Paste_Text_Below_And_Simulate=========
NPN_gummel
* MEASURE IS,ISE,NF,NE,RE,IKF,BETA
* dsauersanjose@aol.com 1/18/20
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
*
* ________
* | | VC
* |C _|_
* B _| /2v \
* ____|' npnv \___/
* | |`-> |
* VB _|_ | 0 |
* /.7v\ |________|
* \___/ _|_
* | ///
* _|_
* ///
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15
*======== ====== ====== ====== ====== ====== ====== ====== ======
VC C 0 DC 5V
VB B 0 0V
Q1 C B 0 NPNV
.MODEL NPNV NPN(
*==========================================================
+IS=1.1E-18 NF=1.005 BF=220 VAF=130 IKF=5e-03
+ISE=9.15E-15 NE=2
*==========================================================
+CJE=2E-12 CJC=2E-13 CJS=3E-12 TF=.6E-9 )
.control
*DC SOURC1 VSTART VSTOP VSTEP SOURC2 START2 STOP2 STEP2
dc vb .4 1.2 .1
set pensize = 2
plot mag(-i(vc)) mag(-i(vb)) vs mag(V(b)) ylog title Gummel
plot mag(i(vc)/i(vb)) vs mag(vc#branch) loglog title Beta_vs_IC
.endc
.end
===========SubThresshold_Curves========================

===========Copy_Paste_Text_Below_And_Simulate=========
NMOS_bsim3_SubSanity
* MEASURE IS,ISE,NF,NE,RE,IKF,BETA
* dsauersanjose@aol.com 1/18/20
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
*
*
* ________
* | | VC
* |D _|_
* G _| /5v \
* ____|| m1 \___/
* | ||-> |
* VB _|_ | 0 |
* /.7v\ |________|
* \___/ _|_
* | ///
* _|_
* ///
.OPTIONS GMIN=1e-15 METHOD=gear ABSTOL=1e-15
*======== ====== ====== ====== ====== ====== ====== ====== ======
Vds D 0 dc 5v
Vgs G 0 dc 1.2v
v1 D 1 dc 0v
m1 1 G 0 0 N1 W=3u L=1u AD=7p AS=7p PD=10u PS=10u
*DC SOURC1 VSTART VSTOP VSTEP SOURC2 START2 STOP2 STEP2
.dc Vds 1m 5 0.01 vgs 0 1 .1
.control
run
plot mag(i(v1)) loglog
.endc
.model N1 NMOS
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=160e-10 xj=0.25e-06 nch=0.5e+17
*------------------V_threshold-------------------------------------------
+ vth0=0.72 nlx=0.12e-06
*------------------Bulk--------------------------------------------------
+ k1=1.04 k2=-1.209E-01
+ cdsc=-2.4E-4 cdscd=-1.506E-04 cdscb=-2.219E-04
*------------------mobility----------------------------------------------
+ u0=678 ua=8.964e-10
+ ub=1.472e-18 uc=-4.441E-17 vsat=86000
*------------------Subthresshold-----------------------------------------
+ nfactor=1.8
+ cit=-5.0E-04 voff=-7.862E-02
+ eta0=4.441e-16 etab=-2.E-01 dsub=0.7
*------------------Hot electrons-----------------------------------------
+ alpha0=1.61e-05 beta0=36.68
*------------------VAF---------------------------------------------------
+ lint=.12e-06 pclm=.19 pscbe1=3.79e+08 pscbe2=9.4e-05
+ delta=0.01655 pvag=0.4484
*------------------Bulk_diode--------------------------------------------
+ js=5.858e-08
*------------------Resistance--------------------------------------------
+ rsh=70 rdsw=375
+ wr=0.7586 prwb=0 prwg=-4.441E-17
*------------------Capacitance-------------------------------------------
+ cj=0.0002424 cjsw=2.73e-10 mj=0.3551 mjsw=0.3873
+ cgso=9e-13 cgdo=9e-13 cgbo=7e-10
+ pb=0.5614 pbsw=0.8 xpart=0
+ dlc=5e-08 dwc=1.5e-07
*------------------BulkChargeEffect--------------------------------------
+ a0=0.7 a1=0 a2=1 ags=0.05583
+ b0=6.305e-08 b1=6.579e-08 keta=-1.531E-02
*------------------ShortChannel------------------------------------------
+ dvt0=2.2 dvt1=0.53 dvt2=-1.521E-01 drout=0.76
+ pdiblcb=.4 pdiblc1=0.00886 pdiblc2=0.00029
*------------------NarrowChannel-----------------------------------------
+ w0=2.6e-04 wint=0.16e-06
+ ww=-9.525E-14 wwn=1.0
+ dvt0w=0 dvt1w=5.3e6 dvt2w=-1.E-01
+ k3=2.53 k3b=-5 dwg=0 dwb=0
*------------------Noise-------------------------------------------------
+ af=1 kf=1e-28 ef=0.95
*------------------Temperature-------------------------------------------
+ pvsat=0 ute=-1.258E+00 kt1=-3.85E-01
+ kt1l=0 kt2=-3.098E-02 ua1=5.705e-09
+ ub1=-1.147E-17 uc1=-1.302E-01 at=20380
* prt=-3.287E+02 lk1=0 lk2=0
+ lvsat=0 la0=0 lags=0 lute=0
+ luc=0
.end
****************SILICON_DATA*****************************
*
* NMOS_Subthresshold_Drain_Current and Gate_Voltage
* 1mA _______________________________________________
* | . . . .
* | w=20um . l = 1u . . .
* | . . . .
* 100uA |.......................................960mV....
* | . . 960mV .
* | . 960mV . 840mV .
* | . . 840mV .
* 10uA |.....................840mV......................
* | 960mV . . .
* | . . . 720mV .
* | 840mV 720mV 720mV .
* 1uA |................................................
* | . . . .
* |960mV 720mV . . .
* |840mV . . . 600mV .
* 100nA |.....................600mV......600mV...........
* | . . . .
* |720mV 600mV . . .
* | . . . 480mV .
* 10nA |................................480mV...........
* | . 480mV . .
* |600mV 480mV . . .
* | . . . .
* 1nA |.......................................360mV....
* | . . 360mV .
* | . 360mV . .
* | . . . .
* 100pA |480mV.....360mV........................240mV....
* | . . . .
* | . . 240mV .
* | . 240mV . .
* 10pA |360mV..................................120mV....
* | . . . .
* | 240mV . . .
* | . . . .
* 1pA |..240mV..............120mV......120mV...0mV.....
* | . . . .
* | 120mV . 0mV .
* | . . . .
* 100fA |__120mV__________________0mV___________________.
* 1mV 10mV 100mV 1V 10V
*
* Drain Voltage
===========Extract_and_Remake========================

Title: Extract_Reconstruct
Name: spect162 (Spectrum)
Date: Tue Jan 19 16:51:54 2010
frequency : frequency, real, 500 long [default scale]
v(vin) : voltage, complex, 500 long
Extract_Reconstruct
Spectrum Tue Jan 19 16:51:54 2010
--------------------------------------------------------------------------------
Index freq spr spi
--------------------------------------------------------------------------------
0 0.00000e+00 0.00000e+00 0.00000e+00
1 1.00000e+00 -6.36410e-01 -2.00000e-02
2 2.00000e+00 1.33214e-12 8.52651e-17
3 3.00000e+00 2.11578e-01 2.00000e-02
4 4.00000e+00 -1.33230e-12 -7.92700e-17
5 5.00000e+00 -1.26275e-01 -2.00000e-02
6 6.00000e+00 1.33192e-12 2.06073e-16
7 7.00000e+00 8.94749e-02 2.00000e-02
8 8.00000e+00 -1.33176e-12 -1.06119e-16
9 9.00000e+00 -6.88405e-02 -2.00000e-02
10 0.00000e+00 0.00000e+00 0.00000e+00
===========Copy_Paste_Text_Below_And_Simulate=========
Extract_Reconstruct
* dsauersanjose@aol.com 1/18/20
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* ___
* |VIN|
* |___|
* _|_
* /_ \
* // \ \
* \ \//
* \___/
* _|_
* ///
*
*=========Input_Signal=========================
*V_PULSE# NODE_P NODE_N PULSE( VINIT VPULSE TDELAY TRISE TFALL PWIDTH PERIOD )
VIN VIN 0 PULSE( 0 1 .25 1u 1u .5 1 )
*=========Resconstruction_Circuit=========================
VT VT 0 PWL( 0 0 2 2 ) DC 0
VP VP 0 DC 3.141592653589793
V2P V2P 0 DC 6.283185307179586
V1C V1C 0 DC 0
V1S V1S 0 DC 0
V2C V2C 0 DC 0
V2S V2S 0 DC 0
V3C V3C 0 DC 0
V3S V3S 0 DC 0
V4C V4C 0 DC 0
V4S V4S 0 DC 0
V5C V5C 0 DC 0
V5S V5S 0 DC 0
V6C V6C 0 DC 0
V6S V6S 0 DC 0
V7C V7C 0 DC 0
V7S V7S 0 DC 0
V8C V8C 0 DC 0
V8S V8S 0 DC 0
V9C V9C 0 DC 0
V9S V9S 0 DC 0
B1 V1 0 V = v(V1C)*cos( v(V2P)*1*v(VT)) + v(V1S)*sin( v(V2P)*1*v(VT))
B2 V2 0 V = v(V2C)*cos( v(V2P)*2*v(VT)) + v(V2S)*sin( v(V2P)*2*v(VT))
B3 V3 0 V = v(V3C)*cos( v(V2P)*3*v(VT)) + v(V3S)*sin( v(V2P)*3*v(VT))
B4 V4 0 V = v(V4C)*cos( v(V2P)*4*v(VT)) + v(V4S)*sin( v(V2P)*4*v(VT))
B5 V5 0 V = v(V5C)*cos( v(V2P)*5*v(VT)) + v(V5S)*sin( v(V2P)*5*v(VT))
B6 V6 0 V = v(V6C)*cos( v(V2P)*6*v(VT)) + v(V6S)*sin( v(V2P)*6*v(VT))
B7 V7 0 V = v(V7C)*cos( v(V2P)*7*v(VT)) + v(V7S)*sin( v(V2P)*7*v(VT))
B8 V8 0 V = v(V8C)*cos( v(V2P)*8*v(VT)) + v(V8S)*sin( v(V2P)*8*v(VT))
B9 V9 0 V = v(V9C)*cos( v(V2P)*9*v(VT)) + v(V9S)*sin( v(V2P)*9*v(VT))
BFULL VFULL 0 V = v(V1)+v(V2)+v(V3)+v(V4)+v(V5)+v(V6)+v(V7)+v(V8)+v(V9)
*=========Find_Spectrum=========================
.control
set pensize = 2
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran 10m 10 0 10m
*plot vin
*=========Find_Spectrum=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec .1 50 .1 v(vin)
plot mag(real(v(vin))) mag(imag(v(vin))) loglog
display
*=========Create_Arrays============================================
compose freq start= 0 stop= 10 step = 1
compose spr start= 0 stop= 10 step = 1
compose spi start= 0 stop= 10 step = 1
let i = 1
let f = 0
let vr = 0
let vi = 0
*=========Extract_Harmonics========================================
repeat 9
let f = frequency[10*i-1]
let vr = real(vin[10*i-1])
let vi = imag(vin[10*i-1])
let spr[i] = real(vin[10*i-1])
let spi[i] = imag(vin[10*i-1])
*echo index = $&i freq = $&f real = $&vr imag = $&vi
let i = i +1
endrepeat
*=========Print_Harmonics========================================
print freq spr spi
*=========Transfer_Harmonics========================================
let val = spr[1]
alter V1C dc = $&val
let val = spi[1]
alter V1S dc = $&val
let val = spr[2]
alter V2C dc = $&val
let val = spi[2]
alter V2S dc = $&val
let val = spr[3]
alter V3C dc = $&val
let val = spi[3]
alter V3S dc = $&val
let val = spr[4]
alter V4C dc = $&val
let val = spi[4]
alter V4S dc = $&val
let val = spr[5]
alter V5C dc = $&val
let val = spi[5]
alter V5S dc = $&val
let val = spr[6]
alter V6C dc = $&val
let val = spi[6]
alter V6S dc = $&val
let val = spr[7]
alter V7C dc = $&val
let val = spi[7]
alter V7S dc = $&val
let val = spr[8]
alter V8C dc = $&val
let val = spi[8]
alter V8S dc = $&val
let val = spr[9]
alter V9C dc = $&val
let val = spi[9]
alter V9S dc = $&val
*=========Resimulate========================================
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran 10m 2 0 10m
*plot v1 v2 v3 v4 v5 v6 v7 v8 v9
plot vfull vin
.endc
.end
===========Spectrum_2_Jitter========================


VAM1C spectrum
freq = 7 real = -0.000317892 imag = 0.000313487
freq = 8 real = -0.000934059 imag = 3.26567E-16
freq = 9 real = -0.000922559 imag = -0.000909774
freq = 10 real = 0.63641 imag = -0.0089576
freq = 11 real = 0.000922559 imag = -0.000909774
freq = 12 real = 0.000934059 imag = 1.81964E-16
freq = 13 real = 0.000317892 imag = 0.000313487
freq = 27 real = 0.000317892 imag = -0.000313487
freq = 28 real = 0.000934059 imag = -1.23168E-16
freq = 29 real = 0.000922559 imag = 0.000909774
freq = 30 real = -0.211578 imag = 0.0089576
freq = 31 real = -0.000922559 imag = 0.000909774
freq = 32 real = -0.000934059 imag = -1.06597E-16
freq = 33 real = -0.000317892 imag = -0.000313487
VPM1C spectrum
freq = 7 real = -0.006182 imag = 2.00053E-05
freq = 8 real = 0.0222551 imag = 0.000795149
freq = 9 real = -0.169581 imag = -0.00432768
freq = 10 real = 0.588574 imag = 0.00465371
freq = 11 real = 0.169411 imag = -0.00159775
freq = 12 real = 0.0228895 imag = -0.000504505
freq = 13 real = 0.00615656 imag = -0.00138071
freq = 27 real = 0.0191664 imag = -0.00122994
freq = 28 real = -0.0545755 imag = -0.00391036
freq = 29 real = 0.122932 imag = 0.00498121
freq = 30 real = -0.0883851 imag = -0.00212563
freq = 31 real = -0.122439 imag = -0.000553325
freq = 32 real = -0.0551172 imag = -1.15229E-05
freq = 33 real = -0.0189418 imag = 0.00121807
===========Copy_Paste_Text_Below_And_Simulate=========
Spectrum_2_Jitter
* dsauersanjose@aol.com 1/18/20
* www.idea2ic.com replace(OPT-SPACE)=>SPACE
* ___
* |OUT| .5sidebands should product +/- 1.0radians PM
* |___| .3sidebands should product +/- 0.6radians PM
* _|_ +/- (.6/6.28318)*100ms = +/- 9.5msec
* /_ \
* // \ \
* \ \//
* \___/
* _|_
* ///
*
*V_PULSE# NODE_P NODE_N PULSE( VINIT VPULSE TDELAY TRISE TFALL PWIDTH PERIOD )
VIN VIN 0 PULSE( 0 1 .25 1u 1u .5 1 )
*=========The_SideBand_Tests=========================
VT VT 0 PWL( 0 0 2 2 ) DC 0
VP VP 0 DC 3.141592653589793
V2P V2P 0 DC 6.283185307179586
BREF VREF 0 V = cos( v(V2P)*10*v(VT))
BAM1 VAM1 0 V = cos( v(V2P)*10*v(VT)) +.4*cos( v(V2P)*9*v(VT)) +.4*cos( v(V2P)*11*v(VT))
BAM2 VAM2 0 V = cos( v(V2P)*10*v(VT)) -.4*sin( v(V2P)*9*v(VT)) +.4*sin( v(V2P)*11*v(VT))
BPM1 VPM1 0 V = cos( v(V2P)*10*v(VT)) -.3*cos( v(V2P)*9*v(VT)) +.3*cos( v(V2P)*11*v(VT))
BPM2 VPM2 0 V = cos( v(V2P)*10*v(VT)) +.3*sin( v(V2P)*9*v(VT)) +.3*sin( v(V2P)*11*v(VT))
*=========Clipping_Circuit=========================
BREFC VREFC 0 V = u( v(VREF))-.5
BAM1C VAM1C 0 V = u( v(VAM1))-.5
BAM2C VAM2C 0 V = u( v(VAM2))-.5
BPM1C VPM1C 0 V = u( v(VPM1))-.5
BPM2C VPM2C 0 V = u( v(VPM2))-.5
*=========Run_Sim=========================
.control
set pensize = 2
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran 1m 2 0 1m
*=========Create_Arrays============================================
compose rdelay start = 0 stop = 37 step =1
compose a1delay start = 0 stop = 37 step =1
compose a2delay start = 0 stop = 37 step =1
compose p1delay start = 0 stop = 37 step =1
compose p2delay start = 0 stop = 37 step =1
compose rtp start = 0 stop = 37 step =1
*=========Find_Ref_Delay============================================
let i = 0
let tr = 0
let td = 0
let n = 0
repeat 2000
let i = i +1
let t = time[i-1]
if ((tr + .000125 )< t)
let tr = tr + .025
*echo ref= $&tr
endif
if ( vrefc[i] > 0 & vrefc[i+1] < 0)
let td = t - tr
let rtp[n]= tr
let rdelay[n]= td
let n = n +1
*echo n= $&n out_fall= $&t ref= $&tr delay= $&td
endif
if ( vrefc[i] < 0 & vrefc[i+1] > 0)
let td = t - tr
let rtp[n]= tr
let rdelay[n]= td
let n = n +1
*echo n= $&n out_rise= $&t ref= $&tr delay= $&td
endif
endrepeat
*=========Find_PM1_Delay============================================
let i = 0
let tr = 0
let td = 0
let n = 0
repeat 2000
let i = i +1
let t = time[i-1]
if ((tr + .0125 )< t)
let tr = tr + .025
*echo ref= $&tr
endif
if ( vpm1c[i] > 0 & vpm1c[i+1] < 0)
let td = t - tr
let rtp[n]= tr
let p1delay[n]= td
let n = n +1
*echo n= $&n out_fall= $&t ref= $&tr delay= $&td
end
if ( vpm1c[i] < 0 & vpm1c[i+1] > 0)
let td = t - tr
let rtp[n]= tr
let p1delay[n]= td
let n = n +1
*echo n= $&n out_rise= $&t ref= $&tr delay= $&td
end
endrepeat
*=========Find_PM2_Delay============================================
let i = 0
let tr = 0
let td = 0
let n = 0
repeat 2000
let i = i +1
let t = time[i-1]
if ((tr + .0125 )< t)
let tr = tr + .025
*echo ref= $&tr
endif
if ( vpm2c[i] > 0 & vpm2c[i+1] < 0)
let td = t - tr
let rtp[n]= tr
let p2delay[n]= td
let n = n +1
*echo n= $&n out_fall= $&t ref= $&tr delay= $&td
end
if ( vpm2c[i] < 0 & vpm2c[i+1] > 0)
let td = t - tr
let rtp[n]= tr
let p2delay[n]= td
let n = n +1
*echo n= $&n out_rise= $&t ref= $&tr delay= $&td
end
endrepeat
*=========Find_AM1_Delay============================================
let i = 0
let tr = 0
let td = 0
let n = 0
repeat 2000
let i = i +1
let t = time[i-1]
if ((tr + .0125 )< t)
let tr = tr + .025
*echo ref= $&tr
endif
if ( vam1c[i] > 0 & vam1c[i+1] < 0)
let td = t - tr
let rtp[n]= tr
let a1delay[n]= td
let n = n +1
*echo n= $&n out_fall= $&t ref= $&tr delay= $&td
end
if ( vam1c[i] < 0 & vam1c[i+1] > 0)
let td = t - tr
let rtp[n]= tr
let a1delay[n]= td
let n = n +1
*echo n= $&n out_rise= $&t ref= $&tr delay= $&td
end
endrepeat
*=========Find_AM2_Delay============================================
let i = 0
let tr = 0
let td = 0
let n = 0
repeat 2000
let i = i +1
let t = time[i-1]
if ((tr + .0125 )< t)
let tr = tr + .025
*echo ref= $&tr
endif
if ( vam2c[i] > 0 & vam2c[i+1] < 0)
let td = t - tr
let rtp[n]= tr
let a2delay[n]= td
let n = n +1
*echo n= $&n out_fall= $&t ref= $&tr delay= $&td
end
if ( vam2c[i] < 0 & vam2c[i+1] > 0)
let td = t - tr
let rtp[n]= tr
let a2delay[n]= td
let n = n +1
*echo n= $&n out_rise= $&t ref= $&tr delay= $&td
end
endrepeat
*============PlotResults============================================
plot vam1 vam2
plot vpm1 vref xlimit 0 1
plot p1delay p2delay rdelay vs rtp
plot vrefc vam1c vam2c xlimit 0 1
plot vrefc vpm1c xlimit 0 1
*============Find_Spectrum_VAM1C=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec .5 500 .5 v(VAM1C)
display
plot mag(real(v(VAM1C))) mag(imag(v(VAM1C))) loglog ylimit 1u 1
*============Printout_Spectrum_VAM1C=========================
echo VAM1C spectrum
foreach ii 7 8 9 10 11 12 13 27 28 29 30 31 32 33
let i = $ii
let fr = frequency[2*i-1]
let vfftr = real(v(VAM1C)[2*i-1])
let vffti = imag(v(VAM1C)[2*i-1])
echo freq= $&fr real= $&vfftr imag= $&vffti
end
*============ReRun_Simulation=========================
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
tran 1m 2 0 1m
*============Find_Spectrum_VPM1C=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec .5 500 .5 v(VPM1C)
display
plot mag(real(v(VPM1C))) mag(imag(v(VPM1C))) loglog ylimit 1u 1
*============Printout_Spectrum_VPM1C=========================
echo VPM1C spectrum
foreach ii 7 8 9 10 11 12 13 27 28 29 30 31 32 33
let i = $ii
let fr= frequency[2*i-1]
let vfftr = real(v(VPM1C)[2*i-1])
let vffti = imag(v(VPM1C)[2*i-1])
echo freq= $&fr real= $&vfftr imag= $&vffti
end
.endc
.end
===========Clipping_White_Noise========================

Apply 10Vpk sine wave RMS OF peak Values of noise = 1.29753
Apply 10Vpk sine wave RMS OF peak values of signal = 9.91053
Apply 10Vpk square wave RMS OF peak Values of noise = 2.76266
Apply 10Vpk square wave RMS OF peak values of signal = 13.6373
mag(voutc[49]) = 1.26370e+01
===========Copy_Paste_Text_Below_And_Simulate=========
Clipping_White_Noise
* www.idea2ic.com
* dsauersanjose@aol.com 1/20/10 replace(OPT-SPACE)=>SPACE
* OUT Rload
* _____/\ __ Apply 1vrms noise to +/-10V sinewave
* _|_ \/ | signal measures 10 peak
* / \ | noise rms measures 1.29
* /VpwlT\ |
* \ / _|_ Apply 1vrms noise to +/-10V squarewave
* \___/ /// signal measures 10 rms
* | Gnd noise rms measures 2.76
* _|_
* /// the squarewave should be 14.14vrms
* Gnd
*===========Circuit_Netlist=========================
.include PWL_File.inc
Rload OUT 0 1k
*V_SIN# NODE_P NODE_N SIN( V_DC AC_MAG FREQ DELAY FDamp)
VIN VIN 0 SIN( 0 10 50 5m )
BOUT VOUT 0 V = v(OUT) + v(VIN)
BOUTC VOUTC 0 V = 20*u(v(VOUT)) -10
*TRAN TSTEP TSTOP TSTART TMAX ?UIC?
.tran .05m 1 0 .05m UIC
*===========Run_Transient=========================
.control
run
set pensize = 2
plot OUT ylimit -3 +3
plot VOUT
*===========Find_Spectrum_VOUT=========================
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec 1 10k 1 v(VOUT)
display
plot mag(real(v(VOUT))) mag(imag(v(VOUT))) loglog
*===========Find_Spectrum_Signal_Noise=========================
let i = 0
let vpwr = 0
repeat 1000
let i = i +1
let tr = 0
let ngo = 0
if (i = 49 )
let ngo = 1
endif
if (ngo < 1 )
let vpwr = vpwr + mag(VOUT[i])* mag(VOUT[i])
endif
endrepeat
let vrms = sqrt(vpwr)
echo Apply 10Vpk sin wave, RMS OF peak Values of noise = $&vrms
*===========View_Spectrum=========================
let vperHz = vrms/sqrt(1000)
set pensize = 2
plot mag(v(VOUT)) vperHz loglog
*===========Find_RMS_of_Vpk_SineWave=========================
let vrms = mag(VOUT[49])
echo Apply 10Vpk sine wave, RMS OF peak values signal = $&vrms
*===========Find_Spectrum_VOUTC=========================
run
plot VOUTC
linearize
set specwindow = "rectangular"
*SPEC FSTART FSTOP FSTEP VECTOR
spec 1 10k 1 v(VOUTC)
display
plot mag(real(v(VOUTC))) mag(imag(v(VOUTC))) loglog
*===========Find_Spectrum_Noise=========================
let i = 0
let vpwr = 0
repeat 1000
let i = i +1
let tr = 0
let ngo = 0
if (i = 49 | i = 149 | i = 249 | i = 349 )
let ngo = 1
endif
if (i = 449 | i = 549 | i = 649 | i = 749 )
let ngo = 1
endif
if (i = 849 | i = 949 | i = 1049 | i = 1149 )
let ngo = 1
endif
if (ngo < 1 )
let vpwr = vpwr + mag(VOUTC[i])* mag(VOUTC[i])
endif
endrepeat
let vrms = sqrt(vpwr)
echo Apply 10Vpk square wave, RMS OF peak Values of noise = $&vrms
*===========View_Spectrum=========================
let vperHz = vrms/sqrt(1000)
set pensize = 2
plot mag(v(VOUTC)) vperHz loglog
*===========Find_RMS_of_Vpk_SquareWave=========================
let vpwr = 0
let vpwr = vpwr + mag(VOUTC[ 49])* mag(VOUTC[ 49])
let vpwr = vpwr + mag(VOUTC[149])* mag(VOUTC[149])
let vpwr = vpwr + mag(VOUTC[249])* mag(VOUTC[249])
let vpwr = vpwr + mag(VOUTC[349])* mag(VOUTC[349])
let vpwr = vpwr + mag(VOUTC[449])* mag(VOUTC[449])
let vrms = sqrt(vpwr)
echo Apply 10Vpk square wave, RMS OF peak values signal = $&vrms
.endc
.end
===========Inverter_Modeling========================

===========Copy_Paste_Text_Below_And_Simulate=========
Behavior_Modeling_Invertor
* www.idea2ic.com
* dsauersanjose@aol.com 1/20/10 replace(OPT-SPACE)=>SPACE
* XINVR1 BR2 BR3
* ___ |\ ___ |\ ___ |\ ___
* |VIN|_| \/\_|VR2|_| \/\_|VR3|_| \/\_|VR3|
* |___| | /\/ |___| | /\/ |___| | /\/ |___|
* | |/ |/ |/
* | BB1 BB2
* _|_ |\ ___ |\ ___ |\ BB3 ___
* |VIN|_| \/\_|VB2|_| \/\_|VB3|_| \/\_|VB4|
* |___| | /\/ |___| | /\/ |___| | /\/ |___|
* | |/ |/ |/
* _|_
* /_ \ _|_
* // \ \ /VCC\
* \ \// \___/
* \___/ _|_
* _|_ ///
* ///
*=========Test_Circuit=========================
VCC VCC 0 DC 5V
VIN VIN 0 DC PULSE( 0 5 1p 5p 5p 1n 2n )
*=========Real_Inverters=========================
XINVR1 VIN VR2 VCC INV_R
XINVR2 VR2 VR3 VCC INV_R
XINVR3 VR3 VR4 VCC INV_R
XINVR4 VR4 VR5 VCC INV_R
XINVR5 VR5 VR6 VCC INV_R
XINVR6 VR6 VR7 VCC INV_R
XINVR7 VR7 VR8 VCC INV_R
*=========Model_Inverters=========================
XINVB1 VIN VB2 VCC INV_B
XINVB2 VB2 VB3 VCC INV_B
XINVB3 VB3 VB4 VCC INV_B
XINVB4 VB4 VB5 VCC INV_B
XINVB5 VB5 VB6 VCC INV_B
XINVB6 VB6 VB7 VCC INV_B
XINVB7 VB7 VB8 VCC INV_B
*=========Run_Sim=========================
.control
tran 1p 5n 0
plot vr2 vr8 vb2 vb8
.endc
*=========Real_Subcircuit=========================
*
* ^
* INV_R /_\ VCC
* |
* <-
* ||___ 480ps at 6 stages
* __||
* ___ | ||_ MP1
* |VIN|__| | ___
* |___| | |__|VOUT
* | _| |___|
* |__||
* ||___ MN1
* ||->
* _|_
* ///
*
.SUBCKT INV_R IN OUT VCC
MN1 OUT IN 0 0 NMOSC W=1u L=1u
MP1 OUT IN VCC VCC PMOSC W=3u L=1u
.ENDS INV_R
*=========Model_Subcircuit=========================
*
* VOUT
* ___ |\ ___
* |IN |_| \/\__/\ /\ /\_|OUT| R0UT=600 @5V , 900@3V
* |___| | /\/ \/ \/ |___| 480ps at 6 stages
* _|_ |/ ROUT _|_ 80ps
* ___ ___ rc=114 -3dBof RC
* _|_ CIN COUT _|_
* /// ///
*
.SUBCKT INV_B IN OUT VCC
BGain Gain 0 V = 42/(V(VCC)-1.5)
Boff Off 0 V = (V(VCC)-4)/80
BINV VOUT 0 V = .5*V(VCC)*tanh(-V(Gain)*(V(IN)-(.5+V(Off))*V(VCC))) +.5*V(VCC)
ROUT VOUT OUT 600
CIN IN 0 1f
COUT OUT 0 190f
.ENDS INV_B
*==================CMOS_Models=========================
.model NMOSC NMOS(
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=160e-10 xj=0.25e-06 nch=0.5e+17
*------------------V_threshold-------------------------------------------
+ vth0=0.72 nlx=0.12e-06
*------------------Bulk--------------------------------------------------
+ k1=1.04 k2=-1.209E-01
+ cdsc=-2.4E-4 cdscd=-1.506E-04 cdscb=-2.219E-04
*------------------mobility----------------------------------------------
+ u0=678 ua=8.964e-10
+ ub=1.472e-18 uc=-4.441E-17 vsat=86000
*------------------Subthresshold-----------------------------------------
+ nfactor=1.8
+ cit=-5.0E-04 voff=-7.862E-02
+ eta0=4.441e-16 etab=-2.E-01 dsub=0.7
*------------------Hot electrons-----------------------------------------
* alpha0=1.61e-05 beta0=36.68
*------------------VAF---------------------------------------------------
+ lint=.12e-06 pclm=.19 pscbe1=3.79e+08 pscbe2=9.4e-05
+ delta=0.01655 pvag=0.4484
*------------------Bulk_diode--------------------------------------------
+ js=5.858e-08
*------------------Resistance--------------------------------------------
+ rsh=70 rdsw=375
+ wr=0.7586 prwb=0 prwg=-4.441E-17
*------------------Capacitance-------------------------------------------
+ cj=0.0002424 cjsw=2.73e-10 mj=0.3551 mjsw=0.3873
+ cgso=9e-13 cgdo=9e-13 cgbo=7e-10
+ pb=0.5614 pbsw=0.8 xpart=0
+ dlc=5e-08 dwc=1.5e-07
*------------------BulkChargeEffect--------------------------------------
* a0=0.7 a1=0 a2=1 ags=0.05583
* b0=6.305e-08 b1=6.579e-08 keta=-1.531E-02
*------------------ShortChannel------------------------------------------
+ dvt0=2.2 dvt1=0.53 dvt2=-1.521E-01 drout=0.76
+ pdiblcb=.4 pdiblc1=0.00886 pdiblc2=0.00029
*------------------NarrowChannel-----------------------------------------
+ w0=2.6e-04 wint=0.16e-06
+ ww=-9.525E-14 wwn=1.0
+ dvt0w=0 dvt1w=5.3e6 dvt2w=-1.E-01
+ k3=2.53 k3b=-5 dwg=0 dwb=0
*------------------Noise-------------------------------------------------
* af=1 kf=1e-28 ef=0.95
*------------------Temperature-------------------------------------------
* pvsat=0 ute=-1.258E+00 kt1=-3.85E-01
* kt1l=0 kt2=-3.098E-02 ua1=5.705e-09
* ub1=-1.147E-17 uc1=-1.302E-01 at=20380
* prt=-3.287E+02 lk1=0 lk2=0
* lvsat=0 la0=0 lags=0 lute=0
+ luc=0 )
.model PMOSC PMOS(
+ Level= 8 Tnom=27.0
*------------------Process-----------------------------------------------
+ tox=1.725e-08 xj=2e-07 nch=1e+17
*------------------V_threshold-------------------------------------------
+ vth0=-0.90 nlx=1.84e-08
*------------------Bulk--------------------------------------------------
+ k1=0.3969 k2=0.03536
*------------------mobility----------------------------------------------
+ u0=268 ua=4.124e-09
* ub=-3.8E-19 uc=-1.512E-02 vsat=140000
*------------------Subthresshold-----------------------------------------
+ nfactor=.5016
* cit=0.0001 voff=-0.08 nfactor=1.0016 vth0=-0.94
* eta0=0.038 etab=-1.057E-02 dsub=0.3501
*------------------Hot electrons-----------------------------------------
+ alpha0=2.5e-08
beta0=28.92