Manuals >Nonlinear Device Models Volume 1 >MOS Model 9 Characterization
Print version of this Book (PDF file)
prevnext

The MM9 Model File

This section describes the MOS Model 9 model parameters, model variables, DUT/setup details, and macros.

Model Parameters

The following table describes the MOS Model 9 parameters.

Table 71 MOS Model 9 Parameters
Parameter
Description
Default
LER
Effective channel length of the reference transistor.
501.3n
WER
Effective channel width of the reference transistor.
9.787u
LVAR
Difference between the actual and the programmed poly-silicon gate length.
-198.7n
LAP
Effective channel length reduction per side due to the lateral diffusion of the source/drain dopant ions.
0.000
WVAR
Difference between the actual and the programmed field-oxide opening.
-212.7n
WOT
Effective channel width reduction per side due to the lateral diffusion of the channel-stop dopant ions.
0.000
TR
Temperature at which the parameters have been determined.
27.00
VTOR
Threshold voltage at zero back-bias.
810.2m
STVTO
Coefficient of the temperature dependence of VTO.
-1.508m
SLVTO
Coefficient of the length dependence of VTO.
18.95n
SL2VTO
Second coefficient of the length dependence of VTO.
-15.09f
SWVTO
Coefficient of the width dependence of VTO.
55.35n
KOR
Low-back-bias body factor.
610.0m
SLKO
Coefficient of the length dependence of KO.
-76.45n
SWKO
Coefficient of the width dependence of KO.
55.79n
KR
High-back-bias body factor.
170.5m
SLK
Coefficient of the length dependence of K.
-293.1n
SWK
Coefficient of the width dependence of K.
185.5n
VSBXR
Transition voltage for the dual-k factor model.
1.926
SLVSBX
Coefficient of the length dependence of VSBX.
443.2n
SWVSBX
Coefficient of the width dependence of VSBX.
-349.8n
BETSQ
Gain factor.
155.9u   
ETABET
Exponent of the temperature dependence of the gain factor.
1.655
THE1R
Coefficient of the mobility due to the gate induced field.
306.3m
STTHE1R
Coefficient of the temperature dependence of THE1.
-613.8u
SLTHE1R
Coefficient of the length dependence of THE1.
66.10n
STLTHE1
Coefficient of the temperature dependence of the length dependence of THE1.
-95.78p
SWTHE1
Coefficient of the width dependence of THE1.
-44.23n
THE2R
Coefficient of the mobility due to the back-bias.
43.49m
STTHE2R
Coefficient of the temperature dependence of THE2.
97.75u
SLTHE2R
Coefficient of the length dependence of THE2.
-56.97n
STLTHE2
Coefficient of the temperature dependence of the length dependence of THE2.
-13.64p
SWTHE2
Coefficient of the width dependence of THE2.
19.14n
THE3R
Coefficient of the mobility due to the lateral field.
264.4m
STTHE3R
Coefficient of the temperature dependence of THE3.
8.227u
SLTHE3R
Coefficient of the length dependence of THE3.
135.8n
STLTHE3
Coefficient of the temperature dependence of the length dependence of THE3.
-509.4p
SWTHE3
Coefficient of the width dependence of THE3.
-20.09n
GAM1R
Coefficient for the drain induced threshold shift for large gate drive.
65.48m
SLGAM1
Coefficient of the length dependence of GAM1.
28.22n
SWGAM1
Coefficient of the width dependence of GAM1.
-9.967n
ETADSR
Exponent of the VDS dependence of GAM1.
600.0m
ALPR
Factor of the channel-length modulation.
6.248m
ETAALP
Exponent of length dependence of ALP.
0.000
SLALP
Coefficient of the length dependence of ALP.
0.000
SWALP
Coefficient of the width dependence of ALP.
4.761n
VPR
Characteristic voltage of channel length modulation.
443.5m
GAMOOR
Coefficient of the drain induced threshold shift at zero gate drive.
20.40m
SLGAMOO
Coefficient of the length dependence of GAMO.
5.295f
ETAGAMR
Exponent of the back-bias dependence of GAMO.
2.000
MOR
Factor of the subthreshold slope.
536.6m
STMO
Coefficient of the temperature dependence of MO.
470.4u
SLMO
Coefficient of the length dependence of MO.
164.2u
ETAMR
Exponent of the back-bias dependence of M.
2.000
ZET1R
Weak-inversion correction factor.
1.815
ETAZET
Exponent of length dependence of ZET1.
500.0m
SLZET1
Coefficient of the length dependence of ZET1.
-1.413m
VSBTR
Limiting voltage of the VSB dependence of M and GAMO.
15.97
SLVSBT
Coefficient of the length dependence of VSBT.
10.12u
A1R
Factor of the weak-avalanche current.
61.47
STA1
Coefficient of the temperature dependence of A1.
50.07m
SLA1
Coefficient of the length dependence of A1.
-907.0n
SWA1
Coefficient of the width dependence of A1.
-7.211u
A2R
Exponent of the weak-avalanche current.
31.48
SLA2
Coefficient of the length dependence of A2.
-877.5n
SWA2
Coefficient of the width dependence of A2.
-923.4n
A3R
Factor of the drain-source voltage above which weak-avalanche occurs.
755.6m
SLA3
Coefficient of the length dependence of A3.
-114.4n
SWA3
Coefficient of the width dependence of A3.
12.17n
TOX
Thickness of the oxide layer.
15.00n
COL
Gate overlap per unit channel width.
100.0p
NTR
Coefficient of the thermal noise.
0.000
NFR
Coefficient of the flicker noise.
0.000

Model Variables

The following table describes the MOS Model 9 model variables.

Table 72 MM9 Variables
Variable Name
Description
Default Value
VP_large
VP of large device in dataset
4.210
L_large
Length of large device in dataset
10.00u
SETUP_LIST_SIZE
Default number of visible setups
1
MACRO_LIST_SIZE
Default number of visible macros
16
VAR_ROW_SIZE
Default number of visible variables
22
PARAM_ROW_SIZE
Default number of visible parameters
22
VSUP
Maximum bias voltage
5.000
NUMDUT
Number of devices in dataset
14.00
DUT
Present device being measured/extracted
2
COMGATE
Scanner pin connected to common device gate
20.00
COMSOURCE
Scanner pin connected to common device source
26.00
COMBULK
Scanner pin connected to common device bulk
18.00
MATADD
Address of scanner as used in SWM_init statement
22.00
MATNAME
Name of scanner as used in SWM_init statement
HP4085B
DUT_LARGE
Index number for the DUT considered to be large
1.000
YLOW
Low bound for drain current optimization
500.0f
YHIGH
High bound for drain current optimization
1
KFACTOR
Choice of 1 or 2 K-factor model
2.000
YLOW_SUB
Low bound for substrate current optimization
-1
YHIGH_SUB
High bound for substrate current optimization
-5E-13
LIN_VGSSTEP
Vgs step size for linear region curves
100.0m
VBS1
Vbs bias used for saturation and subthreshold sweeps
0.000
VBS2
Vbs bias used for saturation and subthreshold sweeps
2.000
VBS3
Vbs bias used for saturation and subthreshold sweeps
5.000
SAT_DELVGS
First saturation region curve in idvg1 is measured for VGS = TYPE * (VTH + SAT_DELVGS)
100.0m
SAT_VGS2
Vgs value for saturation region curves
2.000
SAT_VGS3
Vgs value for saturation region curves
3.500
SAT_VGS4
Vgs value for saturation region curves
5.000
SAT_VDSSTEP
Vds step size for saturation region curves
100.0m
SVT_DELVGS1
For the subthreshold curves Vgs is varied from
600.0m
SVT_DELVGS2
TYPE*(VTH-SVT_DELVGS1) to
TYPE*(VTH-SVT_DELVGS2)
300.0m
SVT_VGSSTEP
Vgs step size for subthreshold region curves
50.00m
SUB_VDS1
Vds value for substrate current curves
4.000
SUB_VDS2
Vds value for substrate current curves
4.500
SUB_VDS3
Vds value for substrate current curves
5.000
SUB_VGSSTEP
Vgs step size for substrate current curves
100.0m
SVT_VDS1
Vds value for subthreshold curves
1.000
SVT_VDS2
Vds value for subthreshold curves
3.000
SVT_VDS3
Vds value for subthreshold curves
5.000
LIN_VDS
Vds for linear region curves
100.0m
NUMLPLOT
Array size for the data in extract/par_vs_L
7.000
NUMWPLOT
Array size for the data in extract/par_vs_W
5.000
NUMRPLOT
Array size for the data in extract/par_vs_R
3.000
IMIN
Low current limit used for determining optimization targets and the minimum current predicted by MM9
500.0f
EQNTYPE
Allows equation simplification for linear parameter extraction:
0 = Use normal parameter extraction equations.
1 = Use a simplification to help linear region extraction.
2 = Use the extended equations that would be implemented in a circuit simulator.
0
MODLEVEL
Selects equation and parameter set for miniset, maxiset, single temperature or all temperature extraction:
0 = Use the miniset parameters to evaluate the currents. These miniset parameters are read from the variable table of the DUT from which MM9 is invoked.
1 = Use the maxiset parameters and the full scaling rules but assuming operation at nominal temperature. The maxiset parameters are read from the model parameter list.
2 = Use the full geometry and temperature scaling rules (i.e., the normal model equation). The model parameters are read from the model parameter list.
3 = Use the full geometry scaling rules with the geometry coefficients as read from the model parameter list. However the values of the temperature sensitive parameters are read from the variable table of the model from which the function is invoked (usually a model holding data at a non-nominal temperature).
1
TYPE
Device type: 1 for NMOS, -1 for PMOS
1.000
TEMP
Measurement temperature
21.00
MULTDUT
Indicates if there are multiple transistors connected in parallel
N
PROBETYPE
Indicates how the devices are to be connected:
M : manually; A: automatically with a scanner
M
NUMTEMP
Number of temperatures at which the devices will be measured for temperature parameter extraction
2.000
GEOMFILE
Name of system file in which the miniset parameters will be temporarily stored
mm9_geompars
TEMPFILE
Name of system file in which the temperature specific parameters will be temporarily stored
mm9_temppars
LIN_NUMVBS
Number of curves measured in the linear region
6.000
DISPLAYPLOTS
Automatically displays plots when measuring or optimizing.
Hint: For a small number of devices, such as two, you may want to set this variable to Y. When measuring or optimizing three or more, set this variable to N.
N
DATASOURCE
Enables you to generate measured data from the model code if measured data is not available. To do this, set this variable to S and execute one of the measure macros. When measuring real data, this variable must be set to M.
M
SWAPDIRECTION
Help variable used during the setup of the non-nominal temperature models
1
TA_SWAP
Help variable used to set temperature
100
NUMTPLOT
Array size for the data in extract/par_vs_T
3.000
GDSMIN
Low GDS limit used for determining optimization targets
1.000p
VBSTOP
Last value of Vbs for linear region
5.0
LIMIT_FLAG
Indicates if one of the parameters is at its allowed limit
0
ERROR
Used to indicate an error with the quick extraction routines for the linear, subthreshold or saturation regions
0
THE3_STORE
Temporary store for THE3


RECALC
Indicates whether a quick extraction function should do a measurement or use existing data
0
Linear Region Variables for Quick Extraction
VSBREF
A reference value of Vsb to set the threshold voltage to at the end of the quick extraction routines.
0
VT_RANGE
The maximum expected change in threshold voltage between successive iterations. If the change in threshold voltage exceeds this value, an error occurs.
3
K_MODEL
Choice of K-factor model
1: a single K-factor is used
2: the dual K-factor model is used
2
DOBODY
Control variable for body-effect parameters
0: no body-effect parameters are extracted
1: body-effect parameters are extracted
1
VGATE1
First gate overdrive voltage
0.6
VGATE2
Second gate overdrive voltage
1.5
VGATE3
Third gate overdrive voltage
3.5
VSB11
1st Vsb
0
VSB12
2nd Vsb
0.3
VSB21
3rd Vsb
4
VSB22
4th Vsb
5
VTHMAX
The maximum absolute value of threshold voltage anticipated for the device under test.
-0.15
VDSPRG
The drain voltage to be used during linear region extractions.
0.1
Subthreshold Region Variables for Quick Extraction
VDSSTH1
1st Vds
1
VDSSTH2
2nd Vds
5
VGATST1
Offset from threshold voltage of 1st Vgs bias
-0.15
VGATST2
Offset from threshold voltage of 2nd Vgs bias
-0.2
VSBSTH1
1st Vbs
0
VSBSTH2
2nd Vbs
5
Saturation Region Variables for Quick Extraction
NUMIDS
Number of points chosen to optimize with respect to ids.
3
NUMGDS
Number of points chosen to optimize with respect to gds
3
VSBSAT
Vbs for saturation measurements
0
DVDGDS
The increment in drain voltage to be used when measuring output conductance
0.05
Weak Avalanche Variables for Quick Extraction
VSBWA
Vbs for weak avalanche measurements
0
VGSWA1
Offset from threshold voltage of 1st Vgs
0.75
VGSWA2
Offset from threshold voltage of 2nd Vgs
0.5
VGSWA3
Offset from threshold voltage of 3rd Vgs
1.5
VDSWA1
1st Vds
5
VDSWA2
2nd Vds
6.5
QTRANS_NAME
Holds the name of the transform in quick_ext/store, which can be used to set the variables associated with quick extraction
quick_extraction_setup
KO_INIT
Initial value for KO
0.8
K_INIT
Initial value for K
0.2
VSBX_INIT
Initial value for VSBX
1.5
GAMOO_INIT
Initial value for GAMOO
0.01
MO_INIT
Initial value for MO
0.5
ZET1_INIT
Initial value for ZET1
1
VP_INIT
Initial value for VP
1.5
ALP_INIT
Initial value for ALP
0.01
THE3_INIT
Initial value for THE3
0
GAM1_INIT
Initial value for GAM1
0.01

The extract DUT

The extract device contains all of the sequences used for the parameter optimizations and much of the setup information.

extract/devices    holds setup information that has the form of an array. The input index is used to establish the size of the various arrays. Its size in turn is controlled by the variable NUMDUT from the model variable table. Note that the DUTs are labeled from 1 to the number of devices but the arrays holding the DUT information begin with index 0. The outputs for this setup are shown next.

width
Holds the widths of the devices to be measured
length
Holds the lengths of the devices to be measured
mult
Holds the values for MULT for each device, that is, the number of similar structures connected in parallel.
drain
Holds the matrix pin numbers connected to the drains (if a switching matrix is being used)
gate
The matrix pin numbers connected to the gates
source
The matrix pin numbers connected to the sources
bulk
The matrix pin numbers connected to the bulks
dotemp
An array that indicates if the devices are to be measured at temperature. If the value of dotemp for any device is set to 1, then this device will be measured at temperature.

The devices setup contains the following transforms:

connect    calls SWM_init and Connect to connect the matrix for a particular device or prompts you to connect the device. It uses information contained in the outputs described for the setup devices.

dummy    is an empty (apart from comments) PEL transform. It was found that when a variable that affects the array size in any setup (NUMDUT in this case) is changed from a C transform, then a call to a dummy transform is necessary to force IC-CAP to re-establish the proper array dimensions before attempting to write to these arrays.

extract/single_ext    contains the sequences for extracting the miniset parameters. The variable table of this setup contains a list of MIN and MAX values for use in the optimization steps. It is easier to modify the optimization limits from such a variable table rather than from the individual optimization transforms. For the extraction of a miniset for any particular DUT, this setup is first copied into the appropriate DUT. The optimizations then operate on the miniset variables local to that DUT.

The single_ext setup contains the following transforms:

full_extract    is the controlling PEL for miniset extraction. For more information, refer to the discussion on full_extract in the section Optimization Transforms and Macros.

par_init    initializes parameter (local variables in fact) values at the beginning of miniset extraction.

lin_opt1    is an optimization call for linear region fitting at Vbs = 0 for the parameters BET, THE1, and VTO

lin_opt2    is an optimization call for linear region fitting for all Vbs for the parameters KO, THE2, VSBX, and K. This transform is used for the case of the 2 k-factor model.

lin_opt3    is an optimization call for linear region fitting for all Vbs for the parameters KO and THE2. This transform is used for the case of the 1 k-factor model.

subvt_opt1    is an optimization call for subthreshold region fitting at Vbs = 0 for the parameters GAMOO, MO, and ZET1.

normal_gds_opt1    is an optimization call for gds fitting at Vbs = 0 for the normal devices and for the parameters GAM1 and ALP

large_gds_opt1    calls an optimization sequence for gds for the special case of the device with the largest length. This sequence in turn calls vp_opt and alp_opt.

vp_opt    is an optimization call for gds fitting at Vbs = 0 for the parameter VP.

alp_opt    is an optimization call for gds fitting at Vbs = 0 for the parameter ALP

set_VP    sets the VP of any device by scaling of the VP of the large device.

set_VP_large    sets a model level variable VP_large to hold the VP of the large device.

ids_opt1    is an optimization call for ids fitting at Vbs = 0 for the parameter THE3.

isub_opt1    is an optimization call for avalanche current fitting for Vbs = 0 for the parameters A1, A2, and A3.

subvt_opt2    is an optimization call for subthreshold region fitting for all Vbs for the parameter VSBT.

limit_check    is called at the end of each miniset optimization to check the parameters with respect to the miniset limits. It is used by the macros extract_one_miniset and extract_all_minisets.

extract/scaled_ext    contains the optimization sequences necessary for scaled (maxiset) extraction at the nominal temperature. The variable table of this setup contains the parameter MIN and MAX limits that will be used during optimization.

The scaled_ext setup contains the following transforms:

sim_all    cause the currents in all the DUTs at the nominal temperature to be resimulated (i.e., evaluated with the MM9 C transform).

sca_opt    controls the sequence for maxiset optimizations. For more information, refer to the discussion on sca_opt in the section Optimization Transforms and Macros.

read_sca_opt_files    reads the definitions of the optimization transforms from the UNIX file system. When you execute SETUP, the number of devices may change and the optimization tables for maxiset extraction need to be rebuilt. This is performed by the C transform SETUP which writes the new optimization definitions to the file system. This transform then reads these new definitions back into IC-CAP.

sca_lin_opt1    is an optimization call for linear region fitting at Vbs = 0 for the parameters VTOR, SLVTO, SL2VTO, SWVTO, BETSQ, THE1R, SLTHE1R, and SWTHE1.

sca_lin_opt2    is an optimization call for linear region fitting at all Vbs for the parameters THE2R, SLTHE2R, SWTHE2, KOR, SLKO, SWKO, KR, SLK, SWK, VSBXR, SLVSBX, and SWVSBX. This sequence is used for the 2 k-factor model option.

sca_lin_opt3    is an optimization call for linear region fitting at all Vbs for the parameters THE2R, SLTHE2R, SWTHE2, KOR, SLKO, and SWKO. This sequence is used for the 1 k-factor model option.

sca_subvt_opt1    is an optimization call for subthreshold optimization at Vbs = 0 for the parameters GAMOOR, SLGAMOO, MOR, SLMO, ZET1R and SLZET1.

sca_gds_opt1    is an optimization call for gds fitting for Vbs = 0 for the parameters GAM1R, SLGAM1, SWGAM1, ALPR, SLALP, SWALP and VPR.

sca_ids_opt1    is an optimization call for ids fitting for Vbs = 0 for the parameters THE3R, SLTHE3R, and SWTHE3.

sca_isub_opt1    is an optimization call for substrate (avalanche) current fitting at Vbs = 0 for the parameters A1R, SLA1, SWA1, A2R, SLA2, SWA2, A3R, SLA3 and SWA3.

sca_opt_subvt2    is an optimization call for subthreshold current fitting for all Vbs for the parameters VSBTR and SLVSBT.

sca_limit_check    is called at the end of a maxiset extraction or optimization to check the parameters with respect to the maxiset limits. It is used by the macros extract_maxiset and optimize_maxiset.

extract/single_temp_extract    contains the optimization sequences necessary for the extraction of the temperature sensitive parameters at a single temperature. It will be copied into each model that exists for a non-nominal temperature and the extraction sequences in this setup will therefore modify the variables of the model in which this setup occurs.

At a model level, the variables that represent the temperature-sensitive parameters are xVTOR, xBETSQ, xTHE1R, xSLTHE1R, xTHE2R, xSLTHE2R, xTHE3R, xSLTHE3R, xMOR and xAIR. The variable table of single_temp_extract contains the upper and lower bounds that will be used during the optimization sequences.

The single_temp_extract setup contains the following transforms:

temp_par_init    initializes the temperature-sensitive parameters at any temperature to their value at the nominal temperature.

select_single_temp_model    sets MODLEVEL and EQNTYPE so that the single temperature option of the MM9 transform will be used. That is to say, where most parameters are read from the Parameters table and full geometry scaling is used, but where the values for the temperature-dependent parameters are read from the variable table of the model that has measurements at a non-nominal temperature.

swapdata    is used to transfer setup information (mainly bias voltages and temperatures) from the MM9 model to any model containing temperature data.

single_temp_opt    controls the optimization sequence for temperature optimizations at one temperature. For more information, refer to the discussion on single_temp_opt in the section Optimization Transforms and Macros.

single_temp_lin_opt1    is an optimization call to fit linear region data at Vbs = 0 for all the devices at a particular non-nominal temperature.

The variables optimized are xVTOR, xBETSQ, xTHE1R, and xSLTHE1R.

single_temp_lin_opt2    is an optimization call to fit linear region data for all Vbs for all the devices at a particular non-nominal temperature.

The variables optimized are xTHE2R and xSLTHE2R.

single_temp_subvt_opt1    is an optimization call to fit subthreshold data for Vbs = 0 for all the devices at a single non-nominal temperature. The variable optimized is xMOR.

single_temp_ids_opt1    is an optimization call to fit ids at Vbs = 0 for all the devices at a single non-nominal temperature. The variables optimized are xTHE3R and xSLTHE3R.

single_temp_isub_opt1    is an optimization call to fit the avalanche current at Vbs = 0 for all the devices at a single non-nominal temperature. The variable optimized is xA1R.

single_temp_limit_check    is called at the end of the parameter optimization for a single non-nominal temperature to check the single temperature parameters with respect to their limits. It is used by the macro optimize_at_one_temperature.

extract/all_temp_extract    contains the extraction sequences needed for optimization of the temperature coefficients of MOS Model 9 for all the devices measured at all non-nominal temperatures. These parameters are ETABET, STVTO, STTHE1R, STLTHE1, STTHE2R, STLTHE2, STMO, STTHE3R, STLTHE3, and STA1.

The variable table of this setup contains the MIN and MAX limits that are to be used for these parameters during optimization.

There is one input defined in this setup (index) that is used to set up the array size for the output temp. This output holds the list of non-nominal temperatures at which you want measurements to be performed. This array will be updated whenever you execute the SETUP macro.

The all_temp_extract setup contains the following transforms:

dummy  is an empty (except for comments) PEL that is used to re-establish the array size in this setup when the variable NUMTEMP changes.

read_all_temp_opt_files  forces the optimization tables to be rebuilt and read from the file system whenever SETUP macro is run.

all_temp_lin_opt1 fits the linear region data at Vbs = 0 by optimizing the parameters and ETABET, STVTO, STTHE1R, STLTHE1.

all_temp_lin_opt2 fits the linear region data at all Vbs by optimizing the parameters STTHE2R and STLTHE2

all_temp_subvt_opt1 fits the subthreshold region data at Vbs = 0 by optimizing the parameter STMO.

all_temp_ids_opt1 fits the ids (saturation) data at Vbs = 0 by optimizing the parameters STTHE3R and STLTHE3.

all_temp_isub_opt1 fits the avalanche current data at Vbs = 0 by optimizing the parameter STA1.

all_temp_limit_check is used to check the overall temperature parameters with respect to their limits. It is used by the macros extract_temperature_coefficients and optimize_temperature_coefficients.

extract/par_vs_L,   par_vs_W,   par_vs_R, and par_vs_T   are used to illustrate the geometry (L, W, R) and temperature (T) scaling. The par_vs_L, par_vs_W, and par_vs_R setups store graphs of the miniset parameters A1, A2, A3, ALP, GAM1, GAMOO, K, KO, MO, THE1, THE2, THE3, VP, VSBT, VSBX, VTO, ZET1 and BET vs. 1/Leff, 1/Weff, or 1/Reff where Reff is a dimension number associated with transistors that do not lie on the standard length and width arrays.

The parameters in these 3 setups are initially created by the C transform MM9_GEOMSCAL, which extracts the geometry scaling coefficients (the maxiset model). In any of these plots, the variables with extension .m (e.g., VTO.m) represent the values of the miniset parameters as extracted for an individual device.

The variables with extension .s (e.g., VTO.s) represent the miniset value predicted by using the scaled model. Because the scaled model can be optimized, these values can be recalculated for the new scaling coefficients by a call to the C transform MM9_GEOMPAR.

The variables with suffix _lsq are used to hold the initial fits to the miniset parameters just after the least-squares fitting in MM9_GEOMSCAL.

The par_vs_T setup shows the variation of the temperature-sensitive parameters VTOR, BETSQ, THE1R, SLTHE1R, THE2R, SLTHE2R, THE3R, SLTHE3R, MOR and A1R with temperature and their fitting with the temperature scaling rules.

In these plots, the extension .m indicates the parameter values extracted at a single temperature, while the extension .s indicates the predicted value of the parameter using the temperature coefficients of the current model set (assuming the plots have been updated with a call to the C transform MM9_TEMPPAR) and the suffix _lsq indicates the fits that were obtained by the temperature coefficients obtained from the least-squares extraction transform MM9_TEMPSCAL.

extract/par_vs_L2 and par_vs_W2 enable parameter versus length plots for a user-specified width and parameter versus width plots for a user-specified length to be generated. This is useful if the device set includes more than one "L-array" and more than one "W-array."

The quick_ext DUT

The quick_ext device contains the measurement templates and the transforms used for quick extraction of the miniset parameters of MOS Model 9. The DUT variables are used to store the current values of the miniset parameters as they are being extracted.

quick_ext/lin_quick_ext  is used during the extraction of the linear region parameters. It contains input definitions for the bias voltages vd, vg, vs, and vb, as well as the definition for the current to be measured, id. The lin_quick_ext setup contains the following inputs and outputs:

vd
A constant value set by the variable VDS
vg
A list with three voltages set by the variables: VGS0, VGS1, and VGS2
vs
A constant value of 0V
vb
A constant value set by the variable VBS
id
The current output from the vd terminal

The variables VDS, VGS0, VGS1, VGS2 and VBS are setup variables and are set automatically by the function MM9_LIN_EXT.

The lin_quick_ext setup contains the following transforms:

mm9_ids  calls the MM9 transform for current simulation.

copy_ids  allows current to be copied from mm9_ids to id.m.

set_dimensions  sets the dimension information in the quick_ext DUT from the information in the extract/devices arrays.

linear_extract  calls the linear region extraction functions.

quick_measure  used by MM9_LIN_EXT to initiate measurements. If the variable DATASOURCE is set to M, then real measurements are to be performed. If not, then it is assumed that measurements are being made using an ideal miniset. This causes a little confusion because the quick extraction changes the miniset parameters as it proceeds. Thus the ideal miniset parameters and the quick extraction miniset parameters have to be used appropriately. Some transforms in the setup store are used to achieve this.

par_init_quick_ext  sets initial values of ETAGAM and ETAM.

quick_ext/svt_quick_ext  used during the extraction of the subthreshold region parameters. It contains input definitions for the bias voltages vd, vg, vs and vb, as well as the definition for the current to be measured, id. The svt_quick_ext setup contains the following inputs and outputs:

vd
A constant value set by the variable VD
vg
A constant value set by the variable VG
vs
A constant value set by the variable VS
vb
A constant value set by the variable VB
id
The current output from the vd terminal

The variables VD, VG, VS, and VB are setup variables and are set automatically by the function MM9_STH_EXT.

The svt_quick_ext setup contains the following transforms:

mm9_ids  calls the MM9 transform for current simulation.

copy_ids  allows current to be copied from mm9_ids to id.m.

subvt_extract  calls the subthreshold region extraction functions.

quick_measure  used by MM9_STH_EXT to initiate subthreshold region measurements. Its functionality is the same as that of quick_measure in lin_quick_ext.

quick_ext/sat_quick_ext  used during the extraction of the saturation (including output conductance) parameters. It contains input definitions for the bias voltages vd, vg, vs, and vb, as well as the definition for the current to be measured, id. The sat_quick_ext setup contains the following inputs and outputs:

vd
A constant value set by the variable VD
vg
A constant value set by the variable VG
vs
A constant value set by the variable VS
vb
A constant value set by the variable VB
id
The current output from the vd terminal

The variables VD, VG, VS, and VB are setup variables and are set automatically by the function MM9_SAT_EXT.

The sat_quick_ext setup contains the following transforms:

mm9_ids  calls the MM9 transform for current simulation.

copy_ids  allows current to be copied from mm9_ids to id.m.

saturation_extract  calls the saturation region extraction functions.

quick_measure  used by MM9_SAT_EXT to initiate saturation region measurements. Its functionality is the same as that of quick_measure in lin_quick_ext.

quick_ext/weav_quick_ext  used during the extraction of the weak avalanche parameters. It contains input definitions for the bias voltages vd, vg, vs, and vb, as well as the definitions for the current to be measured, id and ib. The weav_quick_ext setup contains the following inputs and outputs:

vd
A constant value set by the variable VD
vg
A constant value set by the variable VG
vs
A constant value set by the variable VS
vb
A constant value set by the variable VB
id
The current output from the vd terminal
ib
The current output from the vb terminal

The variables VD, VG, VS, and VB are setup variables and are set automatically by the function MM9_WEAVAL_EXT.

The weav_quick_ext setup contains the following transforms:

mm9_ids  calls the MM9 transform for current simulation.

copy_ids  allows current to be copied from mm9_ids to id.m.

mm9_ib   calls the MM9 transform for ib simulation.

copy_ib  allows current to be copied from mm9_ids to ib.m.

weaval_extract  calls the weak avalanche extraction functions.

quick_measure  used by MM9_WEAVAL_EXT to initiate weak avalanche region measurements. Its functionality is the same as that of quick_measure in lin_quick_ext.

quick_ext/store  contains miscellaneous data and transforms used during quick extraction. The store setup contains the following inputs and outputs:

index
An input definition used to set up array sizes
vdsids
An array containing the drain voltage offsets to be used by MM9_SAT_EXT for Ids measurements
vgsids
An array containing the gate voltages to be used by MM9_SAT_EXT for Ids measurements
vdsgds
An array containing the drain voltage offsets to be used by MM9_SAT_EXT for gds measurements
vgsgds
An array containing the gate voltages to be used by MM9_SAT_EXT for gds measurements

The store setup contains the following transforms:

ideal_parameters   used to copy the present miniset parameters into the transform array.

restore_ideal_parameters  used to set the miniset parameters to the values stored in the array ideal_parameters

working_parameters  used to copy the present miniset parameters into the transform array

restore_working_parameters  used to set the miniset parameters to the values stored in the array

print_par  a call to MM9_SAVE_SPARS that appends the list of miniset variables to the file whose name is held in the model variable GEOMFILE.

quick_extraction_setup  used to specify the quick extraction setup details including options and bias voltages. It can be used as an alternative to entering these details from the keyboard. You can make multiple copies of this transform (with different names) to store the setup information for frequently used processes. The setups in the present transform apply to a typical 5V process.

The new quick extraction functions control all aspects of quick extraction, that is, determining the bias levels to be applied to the device, initiating measurements, and performing calculations to extract the appropriate parameters.

MM9_LIN_EXT
Performs the linear region parameter extractions
MM9_STH_EXT
Performs the subthreshold parameter extractions
MM9_SAT_EXT
Performs the saturation parameter extractions including output conductance
MM9_WEAVAL_EXT
Performs the weak avalanche (substrate current) parameter extractions

The following arrays in quick_ext/store control the applied drain and gate biases:

vgsids
gate voltages for ids measurement
vdsids
drain voltages for ids measurement
vgsgds
gate voltages for gds measurement
vdsgds
drain voltages for gds measurement

Note that Vds is never allowed to have a value of less than 0.1V during saturation region quick extraction measurements.

The dutx DUT

The variable table of dutx contains the miniset parameters and the quantities VT1, VT2, and VT3, which are used to store the measured threshold voltages at the three back-biases used for the saturation and subthreshold measurements.

dutx/measure_vt  performs a linear region measurement, that is, Ids vs. Vgs for a low value of Vds to determine the threshold voltage of the devices at the three values of Vbs used for subsequent measurements. An estimate of these threshold voltages is necessary to establish the gate biases for the saturation and subthreshold measurements.

The measure_vt setup contains the following transforms:

id_fit  estimates Vt. It looks for the point of maximum transconductance, fits a straight line in the neighborhood of this point and estimates the threshold voltage from the intercept of this line with the Vgs axis. The output of this transform is the calculated current, based on the resulting transconductance and threshold voltage for display on the vt_fit plot.

calc_vt  invokes id_fit for each of three Ids - Vgs curves measured in the setup. This transform also rounds the Vt values to the nearest 10mV.

mm9_ids  calls the MM9 transform to evaluate the model current.

copy_sim_to_meas  Copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform, which is necessary to enable data to be copied into a measured array. The variables table of measure_vt contains two quantities VT_FIT and CURVE where CURVE points to the curve that calc_vt is working on at a given time and VT_FIT is the threshold voltage associated with this curve.

dutx/idvg  performs the measurements required for extraction of the linear region parameters. The idvg setup contains the following transforms:

The idvg setup contains the following transforms:

mm9_ids  calls the MM9 transform to evaluate the model current.

set_dimensions  Sets the correct values for W, L and MULT. For the measurement of any device, dutx is first copied to a new DUT. Then the dimension information in this DUT has to be set to correct values.

tid_lin   converts the measured data to make a target array for the linear region extractions. It is common practice in Philips to filter any data points with current less than 10% of maximum when doing the linear region optimizations.

This transform mimics this procedure by setting any points less than 10% of maximum to a value of 0.5*IMIN. Because IMIN will be used to set an optimization floor, the resulting data points are ignored.

calc_all  causes all the currents in the DUT to be re-evaluated with calls to MM9.

print_par  calls the MM9_SAVE_SPARS transform that writes the miniset parameters to a file.

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

set_par_from_quick_ext  transfers miniset parameter values from the DUT quick_ext to a DUT containing the conventional optimization-type measured data. (found in idvg setup of dutx).

dutx/idvd1  performs the saturation region measurements for the first Vbs value (0V) that are needed for the optimization of the output conductance and saturation parameters.

The idvd1 setup contains the following transforms:

gds  is a call to the derivative function to evaluate the derivative of the measured current.

mm9_gds  is a call to the derivative function to evaluate the derivative of the simulated current

mm9_ids  calls the MM9 transform to evaluate the model current.

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

set_vth  stores the threshold voltage in the setup variable VTH.

dutx/idvd2,   idvd3  perform the saturation region measurements at the two non-zero Vbs values. The data in these setups is not used during the parameter optimization sequences but is used as an extra check on model accuracy.

The idvd2,   idvd3 setups contain the following transforms:

gds  is a call to the derivative function to evaluate the derivative of the measured current

mm9_gds  is a call to the derivative function to evaluate the derivative of the simulated current

mm9_ids  calls the MM9 transform to evaluate the model current.

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

dutx/subvt1  performs the subthreshold measurements for the first value of Vbs (0V). These measurements are used for the subthreshold optimizations at Vbs = 0V.

The subvt1 setup contains the following transforms:

mm9_ids  calls the MM9 transform to evaluate the model current.

abs_vg  is a call to the equation transform to calculate the absolute value of Vgs. This is necessary for the plot logidvg_vbs which shows the subthreshold current at non-zero Vbs values.

tid_svt   generates target current values for subthreshold optimization. The main purpose is to eliminate data that could lie on the noise floor. It evaluates the transconductance on a log scale and eliminates points that have a transconductance of less than 70% of maximum on the low current side of the maximum point by setting their value to 0.5*IMIN.

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

set_vth  stores the threshold voltage in the setup variable VTH.

dutx/subvt2,   subvt3  enable measurement of subthreshold data for non-zero Vbs values that are required for the non-zero Vbs subthreshold optimizations.

The subvt2,   subvt3 setups contain the following transforms:

mm9_ids  calls the MM9 transform to evaluate the model current.

abs_vg  is a call to the equation transform to calculate the absolute value of Vgs. This is necessary for the plot logidvg_vbs which shows the subthreshold current at non-zero Vbs values.

tid_svt   generates target current values for subthreshold optimization. The main purpose is to eliminate data that could lie on the noise floor. It evaluates the transconductance on a log scale and eliminates points that have a transconductance of less than 70% of maximum on the low current side of the maximum point by setting their value to 0.5*IMIN.

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

set_vth  stores the threshold voltage in the setup variable VTH.

dutx/ibvg  allows the measurement of substrate (avalanche) current needed for the extraction of the substrate (avalanche) current parameters.

The ibvg setup contains the following transforms:

mm9_isub  calls the MM9 transform to evaluate the avalanche current

copy_sim_to_meas  copies the current generated by the MM9 transform into the measured array. It is used for making sample measured data. It uses the MM9_COPY C transform which is necessary to enable data to be copied into a measured array.

Macros

Macros control the overall extraction sequence.

SETUP  Lets you provide setup information to describe the device type, dimensions, and matrix connections if appropriate, the bias voltages used, the nominal measurement temperature and the measurement temperatures for temperature coefficient extraction. You can also specify minimum current and conductance levels for extraction. You can use setup to modify existing information as well as specify new information. The setup information is held in the model variable table of MM9 and in the devices and all_temp_ext setups of the extract DUT. Any information that can be represented by a single value is held in the variable table, while information represented as an array is held in the setups. When SETUP is run, the information is first read from the existing IC-CAP arrays or variables. At the end of SETUP, the information is written back into the IC-CAP tables or arrays. SETUP also builds optimization tables for use in the maxiset and temperature extractions and puts them in the setups scaled_ext, single_temp_ext, and all_temp_ext.

measure  Controls the measurement sequence for all specified devices. The macro prompts you to specify whether you want to measure the devices at the nominal temperature or at another temperature. The template for the measurements is located in dutx.

When you measure devices at the nominal temperature, dutx is copied as dut1, dut2, etc., for each device specified, and then the measurement transforms are invoked in each of these new DUTs.

When you measure devices at non-nominal temperatures, a new model is created for each specified temperature by copying mm9_tempx to a new model, mm9_tx, where x is a number representing the temperature.

extract_one_miniset  Invokes the miniset extraction sequence for one device. It is a special case of the extract_all_minisets macro.

extract_all_minisets  Controls the miniset extraction for all the devices measured at the nominal temperature. Miniset extraction consists of a series of optimizations that act on the miniset parameters. These miniset parameters are stored as DUT variables in the individual DUTs. The template for the extraction sequence is held in the setup extract/single_ext. As the miniset parameters for each DUT are being extracted, the setup extract/single_ext is first copied into the DUT. The optimizations are then performed and the single_ext setup is then deleted from the DUT. This procedure was implemented to prevent multiple copies of what should be the same extraction sequence.

extract_maxiset  Invokes the extraction of the maxiset parameters, i.e., the normal MOS Model 9 parameters at nominal temperature. First each of the miniset parameter sets is written to a file (whose name is given by the variable GEOMFILE) and then the transform MM9_GEOMSCAL is called. This reads the miniset parameters from the file just created and performs a least-squares fitting to obtain the maxiset parameters. This function writes the new parameter values into the parameter list and creates plots in the par_vs_L, par_vs_W, and par_vs_R setups of extract showing the variation of the miniset parameters with geometry and the fitting of this variation achieved by the maxiset parameters. Finally all the nominal devices are resimulated using the new maxiset parameters.

optimize_maxiset  Calls the optimization sequence for the maxiset parameters at the nominal temperature. The extraction sequence itself is controlled by the transform extract/scaled_ext/sca_opt. After the optimization, all the devices are resimulated using the new model parameters.

display_parameter_vs_geometry_plots  Displays plots of the chosen miniset parameters vs. geometry.

simulate_using_extended_equations  Causes all the DUTs at the nominal temperature to be resimulated using the extended equations as would be used in a circuit simulator.

optimize_at_one_temperature  Prompts you to specify the temperature of interest, calls the extract/single_temp_ext/single_temp_opt transform to perform optimizations of the temperature sensitive parameters at the chosen temperature, and then causes all the devices at this temperature to be resimulated using the new parameters. You would typically execute this macro once for each non-nominal temperature being used.

extract_temperature_coefficients  Controls the extraction of the temperature coefficients that are valid over the full range of temperatures. First the temperature-sensitive parameters at all the temperatures are written to a file whose name is given by the variable TEMPFILE. Then the function MM9_TEMPSCAL is called which reads the parameters from the file just created and extracts the temperature coefficients using least-squares fitting. The DUTs at the non-nominal temperatures are then resimulated with the new parameters.

optimize_temperature_coefficients  Calls the optimization sequences in extract/all_temp_ext to optimize the temperature coefficients for all the devices measured at the non-nominal temperatures. Each such device is resimulated with the new parameters when the optimizations are complete.

display_parameter_vs_temperature_plots  Displays plots of specified parameters versus temperature.

quick_extraction_one_dut  This asks the user to specify a DUT number (one of the devices already specified in setup) and then performs the quick extraction procedures on these. The measurements are performed in the quick_ext DUT and the miniset parameters extracted are placed in this DUT also. Therefore performing a quick extraction on a device will overwrite any data or miniset parameters in quick_ext associated with a previous device. Therefore, performing a quick extraction does not create any new data structures in IC-CAP. This choice to consider the quick extraction data as temporary and not to create new data structures for every device measured was made to keep the quick extraction time to a minimum and to avoid the possibility of generating an unmanageable model size when IC-CAP is being used to gather volume data (i.e. hundreds or more model sets) for statistical analysis.

test_quick_ext_with_ideal_pars  This macro is used to test the quick extraction algorithms using synthetic data generated from a previously extracted/optimized set of miniset parameters.

make_extra_par_vs_geometry_plots  This macro is used to create parameters versus length plots for a user-specified width and parameter versus width plots for a user-specified length. This is useful if the device set includes more than one "L-array" and more than one "W-array."

display_extra_par_vs_geometry_plots  Displays plots of the chosen miniset parameters versus L2 and W2.

read_data_from_directory  Reads data previously stored in a subdirectory under the current working directory.

write_data_to_directory  Writes data to a subdirectory under the current working directory.


prevnext