=========BSIM_PARAMETER_TEST_METHODS===========


This website attempts to show how to test and display bsim model curves such as are shown

below. There are ways in ngspice to process data and display it in the same format as

is found in most BSIM documents. Parameters, such as the extraction of threshold

voltage, have a prescribed way to extrapolate a value. Ngspice has ways to process

data curves, and the resulting data can be reformatted to display any type of curve.

A pdf file containing all the Ngspice Bsim simulation of parameters can be found here.

The reference files for BSIM3, and BSIM4 are also available.

 



Only parameters listed under bsim are tested. It is not obvious what bsim parameters 

get ignored. Some parameters are listed under bsim, yet still seem to be ignored in 

ngspice. Some parameters not listed under bsim are flagged as an error, and ignored.

But most non-listed parameters, included those listed under hspice, just appear to

get ignored. 

 


The BSIM parameters are first grouped under the following headings

Process          Values needed to do the calculations correctly

V_threshold      Includes the effects of channel length and temperature

NarrowChannel    Includes how channel width adjusts Vth

Bulk             Bulk coefficients with temperature

Mobility         Mobility coefficients with temperature

Resistance       Source and drain Ohms per square with temperature 

VAF              Early voltage in Triode, CLF, DIBL, and SCBE regions

Subthresshold    SubVth Drain current and Early voltage vs Gate and Drain voltages

HotElectrons     Bulk current due to hot electrons

Capacitance      Sanity checks the stray capacitances including CV curves

BulkDiode        Sanity checks the bulk to source and drain diodes

BulkChargeEffect Affects drain current in triode region

Noise???         Recommend using ngspice’s transient noise features instead 

dLdW?????        Not sure how to use or test yet 

Bsim???          Have not mapped to Bsim3 or Bsim4 yet (ignored in ngspice??)

HspiceBSIM4??    Have mapped to Hspice  (ignored in ngspice??)

Flagged!!        Will be flagged and ignored by ngspice


.model             N1                NMOS

+ Level=  49       Tnom=27.0          version=3.24

+ mobmod=2         capmod=3           noimod=2                  

**-----------------Process----------------------------------------------- 

+ tox=160e-10      toxm=160e-10    

+ ngate=8.000e+19  xj=0.25e-06        nch=0.5e+17                        

*------------------V_threshold------------------------------------------- 

+ vth0=0.72        lvth0=0.025        nlx=0.12e-06      kt1=-0.9821 

+ dvt0=2.2         dvt1=0.53          dvt2=-1.521E-01 

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

*------------------Bulk-------------------------------------------------- 

+ k1=1.04          k2=-1.209E-01      kt2=-0.2916 

+ 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  

+ ute=-1.176       ua1=5.705e-09      ub1=-1.147E-17   uc1=-1.302E-01                                       

+ vsat=86000       at=20380           elm=2   

*------------------Resistance-------------------------------------------- 

+ rsh=70           rdsw=375           prt=-3.287E+02                                     

+ wr=0.7586        prwb=0             prwg=-4.441E-17    

*------------------VAF---------------------------------------------------

+ lint=.12e-06     pclm=.19           pscbe1=3.79e+08     pscbe2=9.4e-05   

+ delta=0.01655    pdiblc1=0.39       pdiblc2=0.0086      drout=0.56

*------------------Subthresshold-----------------------------------------

+ nfactor=1.8      cit=-5.0E-04       voff=-7.862E-02     

+ eta0=4.441e-16   etab=-2.E-01       dsub=0.7   

*------------------HotElectrons----------------------------------------- 

+ alpha0=1.61e-05  alpha1=8.276E-05   beta0=36.68                      

*------------------Capacitance-------------------------------------------

+ cjswg=2.73e-10   mjswg=0.2          pbswg=8.800e-01       

+ cj=0.0002424     mj=0.3551          pb=0.5614 

+ cjsw=2.73e-10    mjsw=0.3873        pbsw=0.8 

+ cgso=9e-13       cgdo=9e-13         cgbo=7e-10                        

+ dlc=5e-08        dwc=1.5e-07        xpart=0   

*------------------BulkDiode-------------------------------------------- 

+ js=5.858e-08     jsw=1.25E-10       xti=2.000e+00      nj=1.08 

*------------------BulkChargeEffect--------------------------------------  

+ a0=0.7           a1=1               a2=1                ags=0.05583    

+ b0=6.305e-08     b1=6.579e-08       keta=-1.531E-02  

*------------------Noise????-------------------------------------------------

+ af=1             kf=0               ef=1              em=4.1E+07  

+ noia=1E+20       noib=50000         noic=-1.4E-12  

*------------------dLdW?????------------------------------------------  

+ wl=0             wln=1               wwl=0                          

+ ll=0             lln=1               lw=0               lwn=1

+ lwl=0            llc=2E-13           lwc=0              lwlc=0                       

+ wlc=0            wwc=0               wwlc=0 

*------------------Bsim???------------------------------------ 

+ wk3=0            lk3=0               pk3=1.257               

+ lk3b=0           wk3b=0              pk3b=0 

+ pa0=0.0489       la0=-1.052          lags=0.01093

+ wags=0           pags=0.1573         lketa=0        

+ wdwg=0           ldwb=0              wdwb=0     

*------------------HspiceBSIM4??-------------------------------------------   

+ hdif=2.7E-07     ldif=0              lu0=0      ldwg=0  

+ uc1=-1.098E-11   acm=13              wu0=1

+ wua=3.641E-11    lua=9.782E-10       pua=-4.46E-10   lub=-7.249E-19

+ wub=1.056E-20    pub=8.812E-19       pu0=1

+ wuc=1.177E-11    luc=-2.164E-10      puc=1.231E-10    

*------------------Flagged!!-------------------------------------------

* nqsmod           lmlt=1.000e+00      wmlt=1.000e+00 

* tlev=0.000e+00   tlevc=0.000e+00 

*------------------------------------------------------------------------ 

Most of the parameters where simulated to display functionality. 

A parameter which had no effect is color coded cyan.

The Noise??? parameters are not recommended to use.

It is not obvious yet how to test the dLdW??? parameters.

The parameters listed under Bsim?? are not mapped to Bsim3 or Bsim4.

The parameters listed under HspiceBSIM4?? are listed in Hspice.

The parameters listed under Flagged!! will flag a problem.


=============HOW_SIMULATION_IS_DONE=================================================

All spice code is included as text in this pdf document.

TextWrangler seems to work well as a text editor.

The text can be copied and pasted and into a spice file.

It is best to save the spice file in unix format.



Ngspice is started with typing the following line...

> ngspice

Supplying your path to the test circuit will run the program..

ngspice 1 -> source /Users/don_sauer/Downloads/stabie/SI_Lib/Tests.cir


The following is a typical result...

 


===============SPICE_MODEL_SCHEMATIC========================================

*

*        SPICE MODEL                     ___

*                           __/\  ______|(D)| Drain

*          CGD             |    \/ RD   |___|

*      .4fF   _____________|__________

*           _|_     _|_        _|_   _|_

*     Gate  ___    / _ \ I_ds   ^    ___ CBD 

*      ___   |     \/ \/       /_\    | 4fF  <- (Caps for A=7p)

*     |(G)|__|     /\_/\  |     |_____|          ___   

*     |___|  |___  \___/  V  ___|     |_________|   | Bulk

*            |   |   |       | _|_   _|_  4fF   |___|

*           _|_  |__/|\___||_| \ /   ___         _|_

*      .4fF ___      | 2fF||   _V_    |  CBS    \(B)/SUB=gnd!

*            |_______|__________|_____|          \ /

*           CGS        CGS |             ___      V

*                          |__/\  ______|(S)| 

*                               \/ RS   |___| Source

*   



=============PARAMETER_DATA_FORMAT===========================================

The parameter name and its meaning is used as a header.

The parameter’s location within its group follows.

Some Bsim reference information may be included.

The plots generated from the simulation comes next. 

The full source code for the simulation comes last. 

This text source code can be copied and pasted into a spice file to run.


The following is an example section from the full pdf file which demonstrates

how the standard Threshold voltage method can be done in ngspice.


==============vth0=ThressholdVoltage=================================

*------------------V_threshold------------------------------------------- 

+ vth0=0.72        lvth0=0.025        nlx=0.12e-06      kt1=-0.9821 

+ dvt0=2.2         dvt1=0.53          dvt2=-1.521E-01   

*----------------------------------------------------------------------- 

3.2 Extraction of Threshold Voltage

A graphically based method has been considered for determining threshold voltage. 

Calculation steps are given below: 

In Fig. 1 it is shown that the application of the threshold voltage extraction steps and obtaining.

• Measure IDS-VGS characteristics at low VDS (<0.1V,  typically 50mV),

• Determine the maximum slope of the IDS-VGS curve, that is maximum gm point,

Extrapolate IDS-VGS from the max gm point to IDS=0,

• Note the corresponding extrapolated VGS value (VGS0) for IDS=0 point.

• Calculate Vth according Vth =Vgs0 -0.5*Vds

   

Circuit: nmos_vth0_extract  vth0=0.5 0.72 1.0

vtt1 = 5.387191e-01

vtt2 = 7.583627e-01

vtt3 = 1.038719e+00


NMOS_VTH0_EXTRACT  vth0=0.5 0.72 1.0

*              ________        _____

*             |     v1_|_    _|_ v2 |

*             |      / 0v\  / 0v\   |

*             |      \___/  \___/   |  It looks like vth0 defines where Ids=0.1u @Vds=100mV 

*             |        | 1    |2    |

*             |D    VC_|_    _|_ VB |

*      G     _| m1   /.1v\  /0v \   |

*      ____||______  \___/  \___/  _|_

*     |    ||->    |   |      |    ///

* VG _|_      |    |__/|\_____|

*   /.7v\     |________|

*   \___/      _|_

*     |        ///

*    _|_                         _

*    ///

.OPTIONS  GMIN=1e-15    METHOD=gear   ABSTOL=1e-15 

*======== ====== ====== ====== ====== ====== ====== ====== ======

Vds       D      0      dc      .1v

Vgs       G      0      dc      1.2v

Vbs       0      B      dc      0v

v1        D      1      dc      0v

m1        1      G      0       B     N1     W=3u   L=3u AD=7p AS=7p PD=10u PS=10u

.control

destroy   all

altermod  N1     vth0=0.5 

*DC       SOURC1 VSTART VSTOP  VSTEP  SOURC2 START2 STOP2  STEP2

dc        Vgs    1m     5      0.05    

altermod  N1     vth0=0.72    

*DC       SOURC1 VSTART VSTOP  VSTEP  SOURC2 START2 STOP2  STEP2

dc        Vgs    1m     5      0.05    

altermod  N1     vth0=1

*DC       SOURC1 VSTART VSTOP  VSTEP  SOURC2 START2 STOP2  STEP2

dc        Vgs    1m     5      0.05   

* ========collect three dc plots=====================

let ic1 = mag(dc1.i(v1))

let ic2 = mag(dc2.i(v1))

let ic3 = mag(dc3.i(v1))

plot      ic1 ic2 ic3    xlabel VGS   ylabel IDS 

plot      ic1 ic2 ic3    xlabel VGS   ylabel IDS  ylog  title whynotwork

* ========find slopes====================================================

let dic1= deriv(ic1)

let dic2= deriv(ic2)

let dic3= deriv(ic3)

plot      dic1 dic2  dic3 

* ========find maximum of slopes====================================

let ic1max = vecmax(dic1)

let ic2max = vecmax(dic2)

let ic3max = vecmax(dic3)

let numb   = length(ic1) -1

* ========find index for each maximum of slopes====================

let n      = 0

let nn1    = 0

let nn2    = 0

let nn3    = 0

repeat     $&numb

if         ( dic1[n] >= ic1max )   

let nn1    = n     

end

if         ( dic2[n] >= ic2max )

let nn2    = n

end

if         ( dic3[n] >= ic3max )

let nn3    = n

end

let n      = n +1

endrepeat

* print nn1 nn2 nn3

let vstep= g[1] -g[0]

* ==========find zero crossings solving this equation {  y = mx+b }======

let vtt1 = - ic1[nn1]/dic1[nn1] +vstep*nn1 -.1/2

let vtt2 = - ic2[nn2]/dic2[nn2] +vstep*nn2 -.1/2

let vtt3 = - ic3[nn3]/dic3[nn3] +vstep*nn3 -.1/2

print        vtt1 vtt2 vtt3

.endc


.model             N1                NMOS

+ Level=  49       Tnom=27.0          version=3.24

+ mobmod=2         capmod=3           noimod=2                  

**-----------------Process----------------------------------------------- 

+ tox=160e-10      toxm=160e-10    

+ ngate=8.000e+19  xj=0.25e-06        nch=0.5e+17                        

*------------------V_threshold------------------------------------------- 

+ vth0=0.72        lvth0=0.025        nlx=0.12e-06      kt1=-0.9821 

+ dvt0=2.2         dvt1=0.53          dvt2=-1.521E-01 

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

*------------------Bulk-------------------------------------------------- 

+ k1=1.04          k2=-1.209E-01      kt2=-0.2916 

+ 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  

+ ute=-1.176       ua1=5.705e-09      ub1=-1.147E-17   uc1=-1.302E-01                                       

+ vsat=86000       at=20380           elm=2   

*------------------Resistance-------------------------------------------- 

+ rsh=70           rdsw=375           prt=-3.287E+02                                     

+ wr=0.7586        prwb=0             prwg=-4.441E-17    

*------------------VAF---------------------------------------------------

+ lint=.12e-06     pclm=.19           pscbe1=3.79e+08     pscbe2=9.4e-05   

+ delta=0.01655    pdiblc1=0.39       pdiblc2=0.0086      drout=0.56

*------------------Subthresshold-----------------------------------------

+ nfactor=1.8      cit=-5.0E-04       voff=-7.862E-02     

+ eta0=4.441e-16   etab=-2.E-01       dsub=0.7   

*------------------HotElectrons----------------------------------------- 

+ alpha0=1.61e-05  alpha1=8.276E-05   beta0=36.68                      

*------------------Capacitance-------------------------------------------

+ cjswg=2.73e-10   mjswg=0.2          pbswg=8.800e-01       

+ cj=0.0002424     mj=0.3551          pb=0.5614 

+ cjsw=2.73e-10    mjsw=0.3873        pbsw=0.8 

+ cgso=9e-13       cgdo=9e-13         cgbo=7e-10                        

+ dlc=5e-08        dwc=1.5e-07        xpart=0   

*------------------BulkDiode-------------------------------------------- 

+ js=5.858e-08     jsw=1.25E-10       xti=2.000e+00      nj=1.08 

*------------------BulkChargeEffect--------------------------------------  

+ a0=0.7           a1=1               a2=1                ags=0.05583    

+ b0=6.305e-08     b1=6.579e-08       keta=-1.531E-02  

*------------------Noise????-------------------------------------------------

+ af=1             kf=0               ef=1              em=4.1E+07  

+ noia=1E+20       noib=50000         noic=-1.4E-12  

*------------------dLdW?????------------------------------------------  

+ wl=0             wln=1               wwl=0                          

+ ll=0             lln=1               lw=0               lwn=1

+ lwl=0            llc=2E-13           lwc=0              lwlc=0                       

+ wlc=0            wwc=0               wwlc=0 

*------------------Bsim???------------------------------------ 

+ wk3=0            lk3=0               pk3=1.257               

+ lk3b=0           wk3b=0              pk3b=0 

+ pa0=0.0489       la0=-1.052          lags=0.01093

+ wags=0           pags=0.1573         lketa=0        

+ wdwg=0           ldwb=0              wdwb=0     

*------------------HspiceBSIM4??-------------------------------------------   

+ hdif=2.7E-07     ldif=0              lu0=0      ldwg=0  

+ uc1=-1.098E-11   acm=13              wu0=1

+ wua=3.641E-11    lua=9.782E-10       pua=-4.46E-10   lub=-7.249E-19

+ wub=1.056E-20    pub=8.812E-19       pu0=1

+ wuc=1.177E-11    luc=-2.164E-10      puc=1.231E-10    

*------------------Flagged!!-------------------------------------------

* nqsmod           lmlt=1.000e+00      wmlt=1.000e+00 

* tlev=0.000e+00   tlevc=0.000e+00 

*------------------------------------------------------------------------ 


.end

* source /Users/don_sauer/Downloads/stabie/SI_Lib/Tests.cir



11-1-13-12-43-23

dsauersanjose@aol.com

Don Sauer