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

Find_RC_3dB           PMOS                   Vector_Types

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==============================

     pictures/ArrayTest.jpg

--------------------------------------------------------------------------------

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======================

     pictures/subcircuit.jpg

===========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======================


pictures/sweepDecades.jpg


===========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======================


pictures/FFT_tests.jpg


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======================



pictures/FFT_Scale.jpg


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=========================


pictures/PWL_Noise.jpg


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====================

pictures/OneFNoiseShape.jpg


===========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========================


pictures/oneFPWL.jpg



===========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================


pictures/CMOS_delay.jpg


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==================

pictures/PWM_Bal.jpg

===========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===================

pictures/PWMsync.jpg


===========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========================


pictures/ringstartup.jpg


===========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========================

pictures/transferfunction.jpg

===========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========================

pictures/fine3dB.jpg

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========================

pictures/onelinelogic.jpg

===========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========================


pictures/binaryDecode.jpg


===========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========================

pictures/Dff.jpg

===========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=================

pictures/NoiseV.jpg

===========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=================

pictures/NoiseI.jpg

===========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=================

pictures/mosNoise.jpg

===========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========================

pictures/ftau.jpg

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========================

pictures/thd.jpg

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========================


pictures/gummel.jpg

===========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========================


pictures/subthresshold.jpg

===========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========================

pictures/extractremake.jpg



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========================


pictures/jitter1.jpg


pictures/jitter2.jpg


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========================



pictures/clipednoise.jpg




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========================

pictures/modelinverter.jpg

===========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