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