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