Manuals >Reference >IC-CAP Functions
Print version of this Book (PDF file)
prevnext

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.

Extracts:

ALPHA0, BETA0

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.

Extracts:

B0, B1

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.

Extracts:

KETA, PDIBLCB

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


prevnext