BSIM1DC_geom_indep
This function is obsolete.
Generates the BSIM geometry independent parameters (all parameters scaled to channel length and width) from a device file generated either by the BSIM extraction routines in IC-CAP or from a compatible BSIM characterization system.
Input Arguments:
|
None
|
Output:
|
None
|
Extracts:
|
VFB, LVFB, WVFB, PHI, LPHI, WPHI, K1, LK1, WK1, K2, LK2, WK2, ETA, LETA, WETA, MUZ, U1, LU1, WU1, DL, DW, X2E, LX2E, WX2E, X3D, LX3E, WX3E, X2MZ, LX2MZ, WX2MZ, MUS, LMUS, WMUS, X2MS, LX2MS, WX2MS, X3MS, LX3MS, WX3MS, X2U0, LX2U0, WX2U0, X2U1, LX2U1, WX2U1, X3U1, LX3U1, WX3U1
If subthreshold parameters are extracted, the following geometry independent parameters are also extracted: N0, LN0, WN0, NB, LNB, WNB, ND, LND, WND
|
Automatic Invocation:
|
By Extract menu function
|
BSIM1DC_lin_sat
This function is obsolete.
Extracts the linear and saturation region parameters of the BSIM model using Id versus Vg curves for a single device.
Input Arguments:
|
|
Data Sets:
|
Gate V, Bulk V, Drain V, Drain I
|
Output:
|
None
|
Extracts:
|
The linear region parameters: VFB, PHI, K1, K2, U0, X2U0.
The saturation region parameters: ETA, MUZ, U1, X2MZ, X2E, X3E, X2U1, MUS, X2MS, X3MS, X3U1.
|
Automatic Invocation:
|
By Extract menu function
|
BSIM1DC_sub
This function is obsolete.
Extracts the BSIM subthreshold parameters for a single device using 4 Id versus Vg curves.
Input Arguments:
|
|
Data Sets:
|
Gate V, Bulk V, Drain V, Drain I 1, Drain I 2, Drain I 3, Drain I 4
|
Output:
|
None
|
Extracts:
|
N0, NB, ND
|
Automatic Invocation:
|
By Extract menu function
|
BSIM2_lin_plot
This function is obsolete.
Acquires specified parameter value data versus 1/W or 1/L and displays plot.
Input Arguments:
|
|
Data Sets:
|
Input an output data set with both measured and simulated data types set
|
Strings/Pars/Vars:
|
Parameter name of parameter to be plotted against 1/W or 1/L, Sort Key - W or L
|
Output:
|
Array of real numbers; size determined by inputs
|
Automatic Invocation:
|
None
|
BSIM2_save_dev_pars
This function is obsolete.
Appends the set of BSIM2 extracted parameters for a single device to the device file in the user's home directory.
Input Arguments:
|
None
|
Output:
|
None
|
Automatic Invocation:
|
By Extract menu function
|
BSIM2DC_geom_indep
This function is obsolete.
Generates the BSIM2 geometry independent parameters (all parameters scaled to channel length and width) from a device file generated by the BSIM2 extraction routines in IC-CAP or from a compatible BSIM2 characterization system.
Input Arguments:
|
None
|
Output:
|
None
|
Extracts:
|
VFB, LVFB, WVFB, PHI, LPHI, WPHI, K1, LK1, WK1, K2, LK2, WK2, ETA0, LETA0, WETA0, MU0, DL, DW, UA0, LUA0, WUA0, U10, LU10, WU10, MU0B, LMU0B, WMU0B, ETAB, LETAB, WETAB, UB0, LUB0, WUB0, UAB, LUAB, WUAB, U1B, LU1B, WU1B, MUS0, LMUS0, WMUS0, MUSB, LMUSB, WMUSB, UBB, LUBB, WUBB, U1D, LU1D, WU1D, N0, LN0, WN0, NB, LNB, WNB, ND, LND, WND, MU20, LMU20, WMU20,MU2B, LMU2B, WMU2B, MU2G, LMU2G, WMU2G, MU30, LMU30, WMU30, MU3B, LMU3B, WMU3B, MU3G, LMU3G, WMU3G, MU40, LMU40, WMU40, MU4B, LMU4B, WMU4B, MU4G, LMU4G, WMU4G, VOF0, LVOF0, WVOF0, VOFB, LVOFB, WVOFB, VOFD, LVOFD, WVOFD, AI0, LAI0, WAI0, AIB, LAIB, WAIB, BI0, LBI0, WBI0, BIB, LBIB, WBIB, VGHIGH, LVGHIGH, WVGHIGH, VGLOW, LVGLOW, WVGLOW
|
Automatic Invocation:
|
By Extract menu function
|
BSIM2DC_lin_sat
This function is obsolete.
Extracts the linear, saturation, and subthreshold region parameters of the BSIM2 model using 2 families of Id versus Vg curves for a single device. Also extracts the output resistance parameters of the BSIM2 model using 2 families of Id versus Vd curves for a single device.
Input Arguments:
|
|
Data Sets:
|
Gate V, Bulk V, Drain V, Drain I vs Vg, Drain I vs Vd
|
Output:
|
None
|
Extracts:
|
The linear region parameters: VFB, PHI, K1, K2, MU0, MU0B, UA0, UAB, UB0, UBB, VGHIGH, VGLOW.
The saturation region parameters: MUS0, MUSB, U10, U1B, ETA0, ETAB, VOF0, VOFD, VOFB.
The subthreshold region parameters: N0, NB, ND.
The output resistance parameters: MU20, MU2B, MU2G, MU30, MU3B, MU3G, MU40, MU4B, MU4G, AI0, AIB, BI0, BIB, U1D
|
Automatic Invocation:
|
By Extract menu function
|
BSIM3_calculate
Calculates the drain current of the BSIM3v3.2 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one.
Input Arguments:
|
|
Variables:
|
vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1)
|
Parameters:
|
None
|
Output:
|
Value to calculate or failure indicator output[0] = lx; output[1] = wx; output[2] = vbseff; output[3] = vt0; output[4] = nonlat; output[5] = dvtx; output[6] = dvtx_w; output[7] = k3w0; output[8] = eta_vd; output[9] = vth; output[10] = vgsteff; output[11] = abulk; output[12] = ueff; output[13] = rds; output[14] = vdsat; output[15] = vdseff; output[16] = idlin; output[17] = idr; output[18] = vasat; output[19] = vaclm; output[20] = vadiblc; output[21] = inv_vascbe; output[22] = va; output[23] = idout;
|
Extracts:
|
Nothing
|
BSIM3_check_par
Checks whether a model parameter is in a predefined range. The range information for this parameter must be given in a variable in the referenced path. The range information is stored in a string in the following format:
range_A0
>-1 0 10 -
| | | |___ upper error condition ({operator(<,<=), value}{-)}
| | |______ upper optimization boundary
| |___________ lower optimization boundary
|______________ lower error condition ({operator(>,>=), value}{-)}
|
Input Arguments:
|
|
Variables:
|
Actual value of parameter to check
|
Parameters:
|
Parameter name Path to parameter range definition
|
Output:
|
Flag for correct operation: 0: parameter is in specified range -1: parameter is outside specified range -2: error during function execution (e.g., variable 'range_xx' not found)
|
- Example call in PEL:
-
check = BSIM3_check_par(prwg,"PRWG", "/BSIM3_DC_CV/Extraction_configuration/Boundaries")
BSIM3_DC_calc_bin_parameter
This function calculates from the input the 4 binning parameters P0, PL, PW, and PP. If the calculation is done correctly, outputs[0] will return 0. Otherwise, outputs[0] will result in a negative number. In such a case, the error will be printed in detail in the output window.
Input Arguments:
|
|
Inputs:
|
Array with 4 parameters P1 .. P4 of the bin corners Array with 4 gate lengths L1 .. L4 of the bin corners Array with 4 gate widths W1 .. W4 of the bin corners Array with 4 values for the number of gate fingers NF1 .. NF4 of the bin corners Parameter set (get with 'BSIM3_DC_get_parameter()')
|
Output:
|
Array containing error condition and binning parameters outputs[0] = error condition (0=o.k., any other number indicates an error) outputs[1] = P0 outputs[2] = PL outputs[3] = PW outputs[4] = PP
|
Extracts:
|
Binning parameters P0, PL, PW, PP
|
- Example call in PEL:
-
complex l[4] complex w[4] :
l[0]= 1u : par = BSIM3_DC_get_parameter() bin_par = BSIM3_DC_calc_bin_parameter(p, l, w, par)
BSIM3_DC_calculate
Calculates the drain current of the BSIM3v3.2 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one.
Input Arguments:
|
|
Variables:
|
vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1)
|
Output:
|
Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations:
0. leff 1. weff 2. - 3. - 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. cox 15. - 16. - 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. -
|
|
24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. - 29. - 30. pocket implant =nonlat 31. narrow channel effect = k3w0 32. short channel effect = dvtx 33. small channel effect = dvtx_w 34. high vds effect = eta_vd 35. vth 36. - 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. - 43. - 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. - 51. - 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55. - 56. n 57. - 58. actual version
|
Example call in PEL:
erg = BSIM3_DC_calculate(par, point_vd, point_vg, 0,
point_vb, MAIN.L, MAIN.W, 0, 0, TEMP, TYPE, 0)
|
BSIM3_DC_get_parameter
This function loads all BSIM3 model parameters from the actual model parameter set and checks them for consistency. Without finding errors, the function gives back an array with model parameters in a given order.
Output:
|
Array of BSIM3 model parameters in the following order:
|
|
error = outputs[0]; ! in case of an ! error during the parameter check ! error would be set to 1e-99 LEVEL = outputs[1]; VERSION = outputs[2]; MOBMOD = outputs[3]; TOX = outputs[4] TOXM = outputs[5] XJ = outputs[6] NCH = outputs[7] NGATE = outputs[8] RSH = outputs[9] VTH0 = outputs[10] K1 = outputs[11] K2 = outputs[12] K3 = outputs[13] K3B = outputs[14] W0 = outputs[15] NLX = outputs[16] VBM = outputs[17] DVT0 = outputs[18] DVT1 = outputs[19] DVT2 = outputs[20] DVT0W = outputs[21] DVT1W = outputs[22] DVT2W = outputs[23] U0 = outputs[24] UA = outputs[25] UB = outputs[26] UC = outputs[27] VSAT = outputs[28]
|
|
A0 = outputs[29] AGS = outputs[30] B0 = outputs[31] B1 = outputs[32] KETA = outputs[33] A1 = outputs[34] A2 = outputs[35] WINT = outputs[36] LINT = outputs[37] DWG = outputs[38] DWB = outputs[39] VOFF = outputs[40] NFACTOR = outputs[41] ETA0 = outputs[42] ETAB = outputs[43] DSUB = outputs[44] CIT = outputs[45] CDSC = outputs[46] CDSCB = outputs[47] CDSCD = outputs[48] PCLM = outputs[49] PDIBLC1 = outputs[50] PDIBLC2 = outputs[51] PDIBLCB = outputs[52] DROUT = outputs[53] PSCBE1 = outputs[54] PSCBE2 = outputs[55] PVAG = outputs[56] DELTA = outputs[57] RDSW = outputs[58] PRWG = outputs[59] PRWB = outputs[60] WR = outputs[61] ALPHA0 = outputs[62] ALPHA1 = outputs[63] BETA0 = outputs[64] TNOM = outputs[65] UTE = outputs[66] KT1 = outputs[67] KT1L = outputs[68] KT2 = outputs[69]
|
|
UA1 = outputs[70] UB1 = outputs[71] UC1 = outputs[72] AT = outputs[73] PRT = outputs[74] WL = outputs[75] WLN = outputs[76] WW = outputs[77] WWN = outputs[78] WWL = outputs[79] LL = outputs[80] LLN = outputs[81] LW = outputs[82] LWN = outputs[83] LWL = outputs[84] WLC = outputs[85] WWC = outputs[86] WWLC = outputs[87] BINUNIT = outputs[88]
|
- Example call in PEL:
-
par = BSIM3_DC_get_parameter()
BSIM3_DC_vth
Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, ... etc. This makes it easier to call the function with variable inputs inside the PEL programs.
The 'Flag' variable is used to define certain conditions, for example, the extraction of vth for the large device that does not need to calculate all the early voltage values.
Input Arguments:
|
|
Input:
|
parameter set (get with 'BSIM3_DC_get_parameter()')
|
Variables:
|
Length (L) Width (W) Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used where ID_REF_VTH is a model variable. # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: )
|
Parameters:
|
path to setup vd vg vb id type id
|
Output:
|
Value vth or failure indicator
|
Extracts:
|
Vth (1e99 indicates error)
|
- Example call in PEL:
-
erg = BSIM3_DC_vth(par, MAIN.L, MAIN.W, flag, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M")
BSIM3_error
This function takes a set of measured and simulated data and calculates the error between simulation and measurement in the specified range (xmin, xmax, ymin, ymax). The error is given back as output. In addition, the maximum error and the root mean square (RMS) error are given back through an IC-CAP system variable.
Input Arguments:
|
|
Inputs:
|
x-coordinate values measured y-coordinate values simulated y-coordinate values
|
Variables:
|
x_min x_max y_min y_max
|
Parameters:
|
IC-CAP Variable to write MAX_ERROR IC-CAP Variable to write RMS_ERROR
|
Output:
|
error in the specified range, all other points of the output = 0
|
- Example call in PEL:
-
error = BSIM3_error(vg,id.m,id.s,0,3,0,1e-6,"MAX_ERROR", "RMS_ERROR")
BSIM3_set_opt
The function accepts a list of model parameters, separated by blanks (e.g., "A0 AGS KETA") and searches the range information for these parameters in the range_<PARAMETER> variables in the referenced path.
After analyzing the range information for each parameter, the variables min_<PARAMETER> and max_<PARAMETER> in the local setup/DUT are set. These variables can be used as upper/lower limit in an optimizer call.
The range information is stored in a string in the following format:
range_A0
>-1 0 10 -
| | | |___ upper error condition ({operator(<,<=), value}{-)}
| | |______ upper optimization boundary
| |___________ lower optimization boundary
|______________ lower error condition ({operator(>,>=), value}{-)}
|
Input Arguments:
|
|
Parameters:
|
Parameter names, separated by blanks Path to parameter range definition
|
Output:
|
Flag for correct operation: 0: everything is ok -1: error during function execution (e.g., variable 'range_xx' not found)
|
- Example call in PEL:
-
erg = BSIM3_set_opt("RDSW PRWG PRWB","Extraction_configuration/Boundaries")
BSIM3_toolkit_vth
Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd and so on. This makes it easier to call the function with variable inputs inside the PEL programs.
The Flag variable is used to define certain conditions. For example, the extraction of vth for the large device, which does not need to calculate all the early voltage values.
Input arguments
|
|
Variables:
|
Length (L) Width (W) Flag for extraction options flag: 0 Large device q low vds 1 Short and small device @ low vds 2 Short and small device @ high vds # of curve
|
Parameters:
|
path to setup, vd, vg, vb, id, type id
|
Output:
|
Value vth or failure indicator
|
Extracts:
|
Vth (1e99 indicates error)
|
BSIM3CV_total_cap
Extracts the total PN junction capacitance parameters from the bottom and sidewall for the BSIM3 model. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates.
Extracts:
|
CJ, MJ, CJSW, MJSW, PB
|
BSIM3CVmodCBD
BSIM3 Bulk to Drain Capacitance model. Calculates CBD from the input voltage.
BSIM3CVmodCBS
BSIM3 Bulk to Source Capacitance model. Calculates CBS from the input voltage.
BSIM3DC_bulk_short
Standard extraction for the BSIM 3 model. Extracts substrate current parameters using Ib versus Vg measured on a set of devices with a large and fixed width and different length.
BSIM3DC_lin_large
Standard extraction for the BSIM 3 model. Extracts linear region parameters using Id versus Vg measured on a large device.
Extracts:
|
VTH0, K1, K2, U0, UA, UB, UC, VOFF
|
BSIM3DC_lin_narrow
Standard extraction for the BSIM 3 model. Extracts width effect parameters using Id versus Vg measured on a set of devices with a large and fixed length and different width.
Extracts:
|
K3, W0, K3B, WINT, DWB
|
BSIM3DC_lin_short
Standard extraction for the BSIM 3 model. Extracts length effect parameters using Id versus Vg measured on a set of devices with a large and fixed width and different length.
Extracts:
|
DVT0, DVT1, DVT2, LINT, RDSW, NLX, PRWB
|
BSIM3DC_lin_small
Standard extraction for the BSIM 3 model. Extracts small effect parameters using Id versus Vg measured on a set of devices with a short and fixed length and different width.
Extracts:
|
WR, DVT0W, DVT1W, DVT2W
|
BSIM3DC_model
UCB BSIM3 MOS model. Calculates Id, Gd, Rout, or Ib from voltages.
BSIM3DC_sat_narrow
Standard extraction for the BSIM 3 model. Extracts saturation parameters using Id versus Vd measured on a set of devices with a large and fixed length and different width.
BSIM3DC_sat_short
Standard extraction for the BSIM 3 model. Extracts saturation and output resistance parameters using Id versus Vd measured on a set of devices with a large and fixed width and different length.
Extracts:
|
A0, A1, A2, DROUT, VSAT, PCLM, PDIBLC1, PDIBLC2, PSCBE1, PSCBE2, PVAG
|
BSIM3DC_sat_short2
Standard extraction for the BSIM 3 model. Extracts saturation parameters using Id versus Vd measured on a set of devices with a large and fixed width and different length.
BSIM3DC_sub_short
Standard extraction for the BSIM 3 model. Extracts subthreshold parameters using Id versus Vg measured on a set of devices with a large and fixed width and different length.
Extracts:
|
CDSC, CDSCB, NFACTOR
|
BSIM3DC_sub_short2
Standard extraction for the BSIM 3 model. Extracts subthreshold parameters at high drain voltage using Id versus Vg measured on a set of devices with a large and fixed width and different length.
Extracts:
|
ETA0, ETAB, CDSCD
|
BSIM3DC_vth
Calculates the threshold voltage from Id versus Vg measurements.
BSIM3DC_vth_sim
Calculates the threshold voltage from the model parameters.
BSIM3DC_vth_versus
Acquires threshold voltage data versus length or width to display in plot.
BSIM4_check_par
Checks whether a model parameter is in a predefined range. The range information for this parameter must be given in a variable in the referenced path. The range information is stored in a string in the following format:
range_A0
>-1 0 10 -
| | | |___ upper error condition ({operator(<,<=), value}{-)}
| | |______ upper optimization boundary
| |___________ lower optimization boundary
|______________ lower error condition ({operator(>,>=), value}{-)}
|
Input Arguments:
|
|
Variables:
|
Actual value of parameter to check
|
Parameters:
|
Parameter name Path to parameter range definition
|
Output:
|
Flag for correct operation: 0: parameter is in specified range -1: parameter is outside specified range -2: error during function execution (e.g. variable 'range_xx' not found)
|
- Example call in PEL:
-
check = BSIM4_check_par(prwg,"PRWG", "/BSIM4_DC_CV/Extraction_configuration/Boundaries")
BSIM4_DC_calc_bin_parameter
This function calculates from the input the 4 binning parameters P0, PL, PW, and PP. If the calculation is done correctly, outputs[0] will return 0. Otherwise, outputs[0] will result in a negative number. In such a case, the error will be printed in detail in the output window.
Input Arguments:
|
|
Inputs:
|
Array with 4 parameters P1 .. P4 of the bin corners Array with 4 gate lengths L1 .. L4 of the bin corners Array with 4 gate widths W1 .. W4 of the bin corners Array with 4 values for the number of gate fingers NF1 .. NF4 of the bin corners Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Output:
|
Array containing error condition and binning parameters outputs[0] = error condition (0=o.k., any other number indicates an error) outputs[1] = P0 outputs[2] = PL outputs[3] = PW outputs[4] = PP
|
Extracts:
|
Binning parameters P0, PL, PW, PW
|
- Example call in PEL:
-
complex l[4] complex w[4] : l[0]= 1u : par = BSIM4_DC_get_parameter() bin_par = BSIM4_DC_calc_bin_parameter(p, l, w, nf, par)
BSIM4_DC_calculate
Calculates the drain current of the BSIM4.2.0 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one.
Input Arguments:
|
|
Input:
|
Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1)
|
Output:
|
Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations:
0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6] 35. vth
|
|
36. f_doping 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55. vth_dits 56. n 57. vfbsd 58. actual version
|
- Example call in PEL:
-
erg = BSIM4_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, 0, 0, TEMP, TYPE, 0)
BSIM430_DC_calculate
Calculates the drain current of the BSIM4.3.0 model and different internal states of the model for the given terminal voltages vd, vg, vs and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one.
Input arguments:
|
|
Input:
|
Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width SA Distance between OD edge to poly from one side SB Distance between OD edge to poly from other side SD Distance between neighboring fingers Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1)
|
Parameters:
|
-
|
Output:
|
Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6] 35. vth 36. f_doping
|
|
37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55 vth_dits 56. n 57. vfbsd 58. actual version
|
- Example call in PEL:
-
erg = BSIM430_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, 0, 0, TEMP, TYPE, 0)
BSIM450_DC_calculate
Calculates the drain current of the BSIM4.3.0 model and different internal states of the model for the given terminal voltages vd, vg, vs and vb. The type of internal state, e.g. the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one.
Input Arguments:
|
|
Input:
|
Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width SA Distance between OD edge to poly from one side SB Distance between OD edge to poly from other side SD Distance between neighboring fingers SCA Integral of the first distribution function for scattered well dopant SCB Integral of the second distribution function for scattered well dopant SCC Integral of the third distribution function for scattered well dopant SC Distance to a single well edge Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1)
|
Parameters:
|
-
|
Output:
|
Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6]
|
|
35. vth 36. f_doping 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55 vth_dits 56. n 57. vfbsd 58. actual version
|
- Example call in PEL:
-
erg = BSIM450_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, MAIN.SCA, MAIN.SCB, MAIN.SCC, MAIN.SC, 0, 0, TEMP, TYPE, 0)
BSIM4_DC_extr_A0_AGS_KETA
Extract model parameters A0, AGS, KETA from the measurement:
id = f(Vgs) @ diff. Vbs @ high Vds
from a transistor with large and wide gate length.
Input Arguments:
|
|
Input:
|
parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
Length (L) Width (W) Number fingers (NF) Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: )
|
Parameters:
|
path to setup vd vg vb id type id
|
Output:
|
Value of: output[0] = a0 output[1] = ags output[2] = keta
In the case of an error, all 3 outputs are set to 1e99
|
Extracts:
|
A0, AGS, KETA
|
- Example call in PEL:
-
erg = BSIM4_DC_extr_A0_AGS_KETA(par, MAIN.L, MAIN.W, MAIN.NF, TEMP, TYPE, 0,".","vd","vg","vb","id")
BSIM4_DC_get_parameter
This function loads all BSIM4 model parameters from the actual model parameter set and checks them for consistency. Without finding errors, the function gives back an array with model parameters in a given order.
Output:
|
Array of BSIM4 model parameters in the following order:
|
|
error = outputs[0]; ! in case of an ! error during the parameter check ! error would be set to 1e-99 LEVEL = outputs[1]; VERSION = outputs[2]; MOBMOD = outputs[3]; RDSMOD = outputs[4]; IGCMOD = outputs[5]; IGBMOD = outputs[6]; GEOMOD = outputs[7]; EPSROX = outputs[8]; TOXE = outputs[9]; TOXP = outputs[10]; TOXM = outputs[11]; DTOX = outputs[12]; XJ = outputs[13]; NDEP = outputs[14]; NGATE = outputs[15]; NSD = outputs[16]; XT = outputs[17]; RSH = outputs[18]; RSHG = outputs[19]; VTH0 = outputs[20]; PHIN = outputs[21]; K1 = outputs[22]; K2 = outputs[23]; K3 = outputs[24]; K3B = outputs[25]; W0 = outputs[26]; LPE0 = outputs[27]; LPEB = outputs[28]; VBM = outputs[29]; DVT0 = outputs[30]; DVT1 = outputs[31]; DVT2 = outputs[32]; DVTP0 = outputs[33]; DVTP1 = outputs[34];
|
|
DVT0W = outputs[35]; DVT1W = outputs[36]; DVT2W = outputs[37]; U0 = outputs[38]; UA = outputs[39]; UB = outputs[40]; UC = outputs[41]; EU = outputs[42]; VSAT = outputs[43]; A0 = outputs[44]; AGS = outputs[45]; B0 = outputs[46]; B1 = outputs[47]; KETA = outputs[48]; A1 = outputs[49]; A2 = outputs[50]; WINT = outputs[51]; LINT = outputs[52]; DWG = outputs[53]; DWB = outputs[54]; VOFF = outputs[55]; VOFFL = outputs[56]; MINV = outputs[57]; NFACTOR = outputs[58]; ETA0 = outputs[59]; ETAB = outputs[60]; DSUB = outputs[61]; CIT = outputs[62]; CDSC = outputs[63]; CDSCB = outputs[64]; CDSCD = outputs[65]; PCLM = outputs[66]; PDIBLC1 = outputs[67]; PDIBLC2 = outputs[68]; PDIBLCB = outputs[69]; DROUT = outputs[70]; PSCBE1 = outputs[71]; PSCBE2 = outputs[72]; PVAG = outputs[73]; DELTA = outputs[74]; FPROUT = outputs[75];
|
|
PDITS = outputs[76]; PDITSL = outputs[77]; PDITSD = outputs[78]; RDSW = outputs[79]; RDSWMIN = outputs[80]; RDW = outputs[81]; RDWMIN = outputs[82]; RSW = outputs[83]; RSWMIN = outputs[84]; PRWG = outputs[85]; PRWB = outputs[86]; WR = outputs[87]; ALPHA0 = outputs[88]; ALPHA1 = outputs[89]; BETA0 = outputs[90]; AGIDL = outputs[91]; BGIDL = outputs[92]; CGIDL = outputs[93]; EGIDL = outputs[94]; AIGBACC = outputs[95]; BIGBACC = outputs[96]; CIGBACC = outputs[97]; NIGBACC = outputs[98]; AIGBINV = outputs[99]; BIGBINV = outputs[100]; CIGBINV = outputs[101]; EIGBINV = outputs[102]; NIGBINV = outputs[103]; AIGC = outputs[104]; BIGC = outputs[105]; CIGC = outputs[106]; AIGSD = outputs[107]; BIGSD = outputs[108]; CIGSD = outputs[109]; DLCIG = outputs[110]; NIGC = outputs[111]; POXEDGE = outputs[112]; PIGCD = outputs[113]; NTOX = outputs[114]; TOXREF = outputs[115]; DWJ = outputs[116];
|
|
TNOM = outputs[117]; UTE = outputs[118]; KT1 = outputs[119]; KT1L = outputs[120]; KT2 = outputs[121]; UA1 = outputs[122]; UB1 = outputs[123]; UC1 = outputs[124]; AT = outputs[125]; PRT = outputs[126]; WL = outputs[127]; WLN = outputs[128]; WW = outputs[129]; WWN = outputs[130]; WWL = outputs[131]; LL = outputs[132]; LLN = outputs[133]; LW = outputs[134]; LWN = outputs[135]; LWL = outputs[136]; WLC = outputs[137]; WWC = outputs[138]; WWLC = outputs[139]; XL = outputs[140]; XW = outputs[141]; BINUNIT = outputs[142]; LAMBDA = outputs[143]; VTL = outputs[144]; XN = outputs[145]; LC = outputs[146]; SAREF = outputs[147]; SBREF = outputs[148]; WLOD = outputs[149]; KU0 = outputs[150]; KVSAT = outputs[151]; TKU0 = outputs[152]; LKU0 = outputs[153]; WKU0 = outputs[154]; PKU0 = outputs[155];
|
|
LLODKU0 = outputs[156]; WLODKU0 = outputs[157]; KVTH0 = outputs[158]; LKVTH0 = outputs[159]; WKVTH0 = outputs[160]; PKVTH0 = outputs[161]; LLODVTH = outputs[162]; WLODVTH = outputs[163]; STK2 = outputs[164]; LODK2 = outputs[165]; STETA0 = outputs[166]; LODETA0 = outputs[167]; TEMPMOD = outputs[168]; UD = outputs[169]; UP = outputs[170]; LP = outputs[171]; UD1 = outputs[172]; TVFBSDOFF = outputs[173]; TVOFF = outputs[174]; WEB = outputs[175]; WEC = outputs[176]; KVTH0WE = outputs[177]; K2WE = outputs[178]; KU0WE = outputs[179]; SCREF = outputs[180]; WPEMOD = outputs[181];
|
- Example call in PEL:
-
par = BSIM4_DC_get_parameter()
BSIM4_DC_vth
Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, ... etc. This makes it easier to call the function with variable inputs inside the PEL programs.
The 'Flag' variable is used to define certain conditions, for example, the extraction of vth for the large device that does not need to calculate all the early voltage values.
Input Arguments:
|
|
Input:
|
parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
Length (L) Width (W) Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used where ID_REF_VTH is a model variable. # of curve Number fingers (NF) Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing)
|
Parameters:
|
path to setup vd vg vb id type id
|
Output:
|
Value vth or failure indicator
|
Extracts:
|
Vth (1e99 indicates error)
|
- Example call in PEL:
-
erg = BSIM4_DC_vth(par, MAIN.L, MAIN.W, flag, i, MAIN.NF, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M")
BSIM430_DC_vth
"Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage Vth. The setup is specified by the parameters path to vd, ... etc. This function should only be used with model versions BSIM4.3 and higher.
Input Arguments:
|
|
Input:
|
Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
Length(L) Width (W) Number fingers (NF) SA SB SD Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used Reference current ID_REF_VTH for extraction options 3 # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing)
|
Parameters:
|
path to setup vd vg vb id type id
|
Output:
|
Value vth or failure indicator
|
Extracts:
|
Vth (1e99 indicates error)
|
- Example call in PEL:
-
erg = BSIM430_DC_vth(par, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, flag, ID_REF_VHT, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M")
BSIM450_DC_vth
Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage Vth. The setup is specified by the parameters path to vd, ... etc. This function should only be used with model versions BSIM4.5 and higher.
Input Arguments:
|
|
Input:
|
Parameter set (get with 'BSIM4_DC_get_parameter()')
|
Variables:
|
Length(L) Width (W) Number fingers (NF) SA SB SD SCA SCB SCC SC Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used 4 A constant reference current Idref = ID_REF_VTH*(W-2*Delta W)/(L-2*Delta L)
|
|
Reference current ID_REF_VTH for extraction options 3,4 Delta L (one side) for extraction options 4 Delta W (one side) for extraction options 4 # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing)
|
Parameters:
|
path to setup vd vg vb id type id
|
Output:
|
Value vth or failure indicator
|
Extracts:
|
Vth (1e99 indicates error)
|
- Example call in PEL:
-
erg = BSIM450_DC_vth(par, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, MAIN.SC, MAIN.SCA, MAIN.SCB, MAIN.SCC, flag, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M")
BSIM4_error
This function takes a set of measured and simulated data and calculates the error between simulation and measurement in the specified range (xmin, xmax, ymin, ymax). The error is given back as output. In addition, the maximum error and the root mean square (RMS) error are given back through an IC-CAP system variable.
Input Arguments:
|
|
Inputs:
|
x-coordinate values measured y-coordinate values simulated y-coordinate values
|
Variables:
|
x_min x_max y_min y_max
|
Parameters:
|
IC-CAP Variable to write MAX_ERROR IC-CAP Variable to write RMS_ERROR
|
Output:
|
error in the specified range, all other points of the output = 0
|
- Example call in PEL:
-
error = BSIM4_error(vg,id.m,id.s,0,3,0,1e-6,"MAX_ERROR", "RMS_ERROR")
BSIM4_set_opt
The function accepts a list of model parameters, separated by blanks (e.g., "A0 AGS KETA") and searches the range information for these parameters in the range_<PARAMETER> variables in the referenced path.
After analyzing the range information for each parameter, the variables min_<PARAMETER> and max_<PARAMETER> in the local setup/DUT are set. These variables can be used as upper/lower limit in an optimizer call.
The range information is stored in a string in the following format:
range_A0
>-1 0 10 -
| | | |___ upper error condition ({operator(<,<=), value}{-)}
| | |______ upper optimization boundary
| |___________ lower optimization boundary
|______________ lower error condition ({operator(>,>=), value}{-)}
|
Input Arguments:
|
|
Parameters:
|
Parameter names, separated by blanks Path to parameter range definition
|
Output:
|
Flag for correct operation: 0: everything is ok -1: error during function execution (e.g., variable 'range_xx' not found)
|
- Example call in PEL:
-
erg = BSIM4_set_opt("RDSW PRWG PRWB","Extraction_configuration/Boundaries")
BSIMCV_total_cap
This function is obsolete.
Extracts the total PN junction capacitance parameters from the bottom and sidewall for the BSIM1 and BSIM2 models. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates.
Input Arguments:
|
|
Data Sets:
|
Cap 1, Cap 2, Junction V
|
Reals or Integers:
|
Cap 1 Area, Cap 1 Perim, Cap 2 Area, Cap 2 Perim
|
Output:
|
None
|
Extracts:
|
CJ, MJ, CJSW, MJSW, PB
|
Automatic Invocation:
|
By Extract menu function
|
|