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

NOISE_1f_stop_bias

This function stops the bias from the specified DC source. It is used in conjunction with the NOISE_1f_force_bias.

Variables:

 

  GPIB Address:

instrument address.

Parameters:

 

  Bias source:

specify DC Bias Source Type (4142/4156).

  GPIB Interface:

interface name.

  Unit Slot (4142) or SMU (4156).

Examples:

ret = NOISE_1f_force_bias(29, "4142", "hpib", "2") the SMU unit at slot 2 of the 4142 at address 29 will stop any voltage or current bias.

This transform is used during 1/f noise parameters extraction for bipolar and MOS devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl
The transform is used in the setup measure/Noise. It is called by the GUI interface function btMeasure located in the setup GuiDriver/MeasureNoise.

Optimize

The IC-CAP general purpose optimizer. Performs Levenberg-Marquardt optimization, random optimization, hybrid optimization, and sensitivity analysis. The optimizer is described in Chapter 7, "Optimizing," in the User's Guide.

Input Arguments:

None

Output:

Levenberg-Marquardt: array of real, length 2 (RMS error, max error)

Random or Hybrid:

Array of real, length 1 (RMS error)

Sensitivity:

Nx1 matrix of real numbers; size determined by inputs.

Automatic Invocation:

By Optimize menu function (or Extract menu function when the Extract Flag option is set to Yes)

Package

A utility function that can either "embed or de-embed" the effects of a package from S-parameter data provided as input. The resultant set of S-parameters is returned as a data set with the same frequency and bias conditions as the input S-parameter data set.

Usage

Package(S_parameter_data_set, embed/dEEmbed_flag, Z1, D1, L1a, L1b, L1m, C1m, C1, C12, Z3, D3, L3, Z2, D2, L2a, L2b, L2m, C2m, C2)

:

The package topology used here is a very simple series shunt representation of a component's package. This package is more general purpose than EEfet3_package, EEbjt2_package, or EEmos1_package. Each port of this package has a transmission line that represents the package lead frame. Then a "T" network is defined on the input and output (port 1 and 2) that represents bond wires and can be used to model simple matching networks used in some pre-matched devices. This network is not included on the common lead. So working from the outside edge of the package's input port (port 1) there is an ideal transmission line (Z1, D1), followed by the bonding/matching network.

L1a + L1b represent the bond inductance of the input port. The inductance is split into 2 parts. In a pre-matched device L1a is the bond inductance from the lead frame of port 1 to the shunt matching capacitor (modeled by L1m, C1m). L1b would be the bond wire from the top of the matching capacitor to the gate/base of the transistor. C1, C12, and C2 are fringing capacitors that encircle the intrinsic device (usually small values 20-30ff).

In the case of a transistor with no pre-matching, L1m, C1m and L1b would be set to zero. The "common" node of the input matching capacitor C1m and the output matching capacitor C2m is where transmission line and bond inductance of the common lead join.The intrinsic S-parameters used as input/output are connected at the "internal" side of L1b, L2b and L3.The output port (port 2) is an exact duplication of the input port. The transmission line (Z2, D2) represents the lead frame. The output matching/ bonding network is modeled with L2a, L2b and L2m, C2m.

All 3 of the transmission lines are ideal lines modeled with a characteristic impedance and length. The length is in units of meters.

Because you must use the same values for each of these arguments in many places in the IC-CAP model file, this function is constructed to use model variables as arguments. First: create 1 variable, in the model variable table, for each of the function arguments (thus making it global to the entire model in use). Then use the variables each time the function is used. In this manner you can ensure that the same values are being used to embed the model as were extracted from measurements.

The first argument is the data set upon which the function will operate. The second argument is a text string or variable containing a text string "embed" or "de-embed." The function will operate on the input data set as indicated by the second argument.

PEL example that de-embeds a package from a measurement (based on first defining the following variables in the system variable table):

flag = "deembed"
Z1 = 50
D1 = 250e-6
L1a = 0.9e-9
L1b = 0
L1m = 0
C1m = 0
C1 = 20e-15
C12 = 20e-15
Z3 = 50
D3 = 0
L3 = 0.15e-9
Z2 = 25
D2 = 500e-6
L2a = 0.33e-9
L2b = 0
L2m = 0
C2m = 0

 s_intrinsic = Package(meas_spars, flag, Z1, D1, L1a, L1b,
L1m, C1m, C1, C12, Z3, D3, L3, Z2, D2, L2a, L2b, L2m, C2m,)
PB_abort

Karl Suss Prober function. Returns prober to local mode.

Input Arguments:

None

Output:

Array of 3 values:
output[0]= 0 if command succeeded, else returns error code.
output[1]= Column of current die location, else returns -999.999
output[2]= Row of current die location, else returns -999.999

Example:

 result = PB_abort()

PB_bincode

Karl Suss Prober function. Sets the Bincode of the current die location.

Input Arguments:

 

   Reals or Integers:

binvalue

Output:

Single value
output[0]= 0 if command succeeded, else returns error code.

Example:

result=PB_bincode(binvalue)
PB_bindex

Karl Suss Prober function. Sets the Bincode of the current die location, then steps (index) to the next testable die location (as defined by the pbench wafer map).

Input Arguments:

 

   Reals or Integers:

bin value

Output:

Array of 3 values
output[0]= 0 if command succeeded, else returns error code.
output[1]= Column of new die location, else returns -999.999
output[2]= Row of new die location, else returns -999.999

Example:

result=PB_bindex(binvalue)
PB_bindex_cr

Karl Suss Prober function. Sets the Bincode of the current die location, then moves the prober to the absolute column and row location specified.

Input Arguments:

 

   Reals or Integers:

bin value, column value, row value

Output:

Array of 3 values
output[0]= 0 if command succeeded, else returns error code.
output[1]= Column of new die location, else returns -999.999
output[2]= Row of new die location, else returns -999.999

Example:

result=PB_bindex_cr(binvalue,column,row)
PB_gindex_cr

Karl Suss Prober function. Return the current die index location from the wafer map.

Input Arguments:

None

Output:

Array of 4 values
output[0]= column (die) if command succeeded, else returns error code.
output[1]= row (die)
output[2]= X location (from home, absolute)
output[3]= Y location (from home, absolute)

Example:

 result=PB_gindex_cr()

PB_gsite_xy

Karl Suss Prober function. Return the x and y location (in tenths of microns) of the current subsite.

Input Arguments:

None

Output:

Array of 2 values
output[0]= Subsite x value
output[1]= Subsite y value

Example:

 result=PB_gindex_xy()

PB_index

Karl Suss Prober function. Steps (index) to the next testable die location (as defined by the pbench wafer map).

Input Arguments:

None

Output:

Array of 3 values
output[0]= 0 if command succeeded, else returns error code.
output[1]= Column of new die location, else returns -999.999
output[2]= Row of new die location, else returns -999.999

Example:

 result = PB_index()

PB_index_cr

Karl Suss Prober function. Moves the prober to the absolute column and row location specified.

Input Arguments:

 

   Reals or Integer:

Column value, Row value

Output:

Array of 3 values
output[0]= 0 if command succeeded, else returns error code.
output[1]= Column of new die location, else returns -999.999
output[2]= Row of new die location, else returns -999.999

Example:

result=PB_index_cr(column,row)
PB_msite_xy

Karl Suss Prober function. Moves the prober to subsite location x, y (in tenths of microns).

Input Arguments:

 

   Reals or Integer:

x value, y value

Output:

Output: Array of 3 values
output[0]= 0 if command succeeded, else returns error code.
output[1]= Subsite x coordinate, else returns -999.999
output[2]= Subsite y coordinate, else returns -999.999

Example:

result=PB_msite_xy(x,y)
PBench_CMD

Karl Suss Prober function. Sends a user-specified command to the prober.

Input Arguments:

 

   String:

Arbitrary string name to identify calling function Suss Prober command

Output:

output[0]= 0 if command succeeded, else returns error code.

Example:

result=PBench_CMD("Myfunction", "StepNextDie")
Pdown

Wafer prober function. Lowers the chuck of the wafer prober. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Single number with exit status

Automatic Invocation:

None

Phome

Wafer prober function. Used for loading a wafer onto the chuck and moving it to the home position. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Single number with exit status

Automatic Invocation:

None

Pimove

Wafer prober function. Moves the chuck a relative increment from its current position. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

X Delta, Y Delta

Output:

Single number with exit status

Automatic Invocation:

None

Pink

Wafer prober function. Calls the inker function of the prober if it is supported. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

Inker Num

Output:

Single number with exit status

Automatic Invocation:

None

Pmove

Wafer prober function. Moves the chuck to an absolute position. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

X Position, Y Position

Output:

Single number with exit status

Automatic Invocation:

None

PNCAPsimu

Calculates P-N Junction capacitance versus voltage. Can be used as a quick simulation. The proper parameter names must be specified as inputs.

Input Arguments:

 

   Data Sets:

Junction V

   Reals or Integers:

CJ Param, VJ Param, MJ Param

Output:

Array of real numbers; size determined by inputs

Porig

Wafer prober function. Defines the current X & Y position of the chuck. Must be called before calling the Pmove or Pimove functions. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

X Origin, Y Origin

Output:

Single number with exit status

Automatic Invocation:

None

Ppos

Wafer prober function. Returns the current X & Y position of the chuck. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Array of 2 points: x and y

Automatic Invocation:

None

Prober_debug

Wafer prober function. Used to turn the debug and macro stop (on error) flags on and off. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

Debug Flag, Stop Flag

Output:

Single number with exit status

Automatic Invocation:

None

Prober_init

Wafer prober function. Initializes the prober for use. This function must be called before any other prober functions are used in the Macro. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers

Bus Address, Orientation

   Strings/Pars/Vars

Prober Type, Device File

Output:

Single number with exit status

Automatic Invocation:

None

  

Prober_reset

Wafer prober function. Sends a device clear command to the prober. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Single number with exit status

Automatic Invocation:

None

Prober_status

Wafer prober function. Sends a query to the prober to obtain the Remote/Local control state and the edge sensor contact state. The prober should be initialized with Prober_init before this function. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Array of 3 points: x and y and z

Automatic Invocation:

None

Program or Program2

The Program2 function is the recommended way to define a program in IC-CAP's Parameter Extraction Language over the older Program function. Program2 provides improved function argument/parameter management and improves access to IC-CAP variables.

Both Program and Program2 functions provide a text editor in which a program can be written in IC-CAP's Parameter Extraction Language to carry out simple or complicated computations. When a RETURN statement is used, the computed results are available for use in Plots, other Transforms, and table elements throughout IC-CAP. Both functions can also execute most IC-CAP menu functions using an iccap_func call. Both functions also provides features enabling users to write custom extraction routines and assign new Model parameter values.

Refer to Chapter 9, "Parameter Extraction Language," in this manual, and to Chapter 9, "Using Transforms and Functions" in the User's Guide, for more information.

If GET_INT, GET_REAL, GET_STRING or LINPUT is used in a Program or Macro to pass parameters, all GET_INT statements should be located immediately at the start of the Program or Macro along with any other GET_INT, GET_REAL, GET_STRING or LINPUT statements. Once any other ICCAP_FUNC statement is invoked, the list of anticipated arguments is reset, thereby removing all the extra arguments from the calling ICCAP_FUNC statement. The Program2 function does not have these limitations.

The statement GET_DATASET can be used to redirect passed Program2 function parameter dataset arguments to local variables of a Program2 function. GET_DATASET is not supported with Program or Macro functions—it is only currently supported with the Program2 function.

If GET_INT, GET_REAL, GET_STRING or LINPUT statements are used in a Program or Macro to pass parameters, those input statements search the passed parameter list until they find a valid passed parameter argument of the expected type. In the Program2 function, the GET_DATASET, GET_INT, GET_REAL, GET_STRING or LINPUT statements will only try to evaluate the next available passed function parameter as a value of the expected type, and will error out if the next passed function parameter is not able to be evaluated as a value of the expected type.

In the Program2 function, all variables are automatically treated as local variables unless those variables are first explicitly declared as global variables using the GLOBAL_VAR statement. Before using a variable from a variable table in Program2, you should declare the variable as global with the GLOBAL_VAR statement. In Program and Macro functions, all variables can be resolved globally or locally without needing to explicitly specify which variables are global using the GLOBAL_VAR statement.

Input Arguments:

None (input statements and data are supplied interactively into a dedicated text editor)

Output:

Complex array or matrix array. Size and type depends on the arguments to a RETURN statement in program text. The size will be 1 if return data is returned by a RETURN_VALUE statement. In the absence of an appropriate RETURN statement there is no output data set.

Extracts:

Both functions permit the extraction of any combination of Model parameters, DUT parameters, and IC-CAP system variables.

Automatic Invocation:

For both functions, several possibilities exist

    • If a program uses the RETURN statement to generate a data set, and 1 of the data sets used within the program changes (due to a simulation, for example), then the program is automatically invoked, so that its returned data set is refreshed.
    • If a program assigns new values to Model or DUT parameters, then the program is considered an extraction function, and Automatic Invocation occurs when the Extract command is issued for the associated Setup or DUT.
These rules are mutually exclusive, and the second one takes higher precedence. When neither rule is satisfied, no Automatic Invocation occurs. Some statements allow direct control over these rules, for example, UPDATE_MANUAL. For more information, refer to "Automatic Transform Execution" in the User's Guide.

Pscale

Wafer prober function. Defines the X & Y stepping dimensions used by the Pmove and Pimove functions. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

 

   Reals or Integers:

X Size [um], Y Size [um]

Output:

Single number with exit status

Automatic Invocation:

None

PSP_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 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:

 

   Variables:

Length (L)
Total gate width (W)
Number fingers (NF)
Flag for extraction options
  flag:
   1 Fixed Id(Vth) = Idref*L/W
   2 Fixed Id(Vth) = Idref*NF*      ((W/NF)-2*Delta_W)/
     (L-2*Delta_L)
Reference current Idref for   extraction options
Delta L (one side)
Delta W (one side)
# of curve
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 (M,S)
version

Output:

Value vth or failure indicator

Extracts:

Vth (1e99 indicates error)

PSP_check_par

Checks whether a model parameter is in a predefined range. The range information for this parameters 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)

PSP_DC_calc_bin_parameter

Calculates from the input the four 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

   Variables:

PSP binning type

Output:

Array containing error condition and binning parameters
outputs[0] = error condition
  (0=o.k., any other number
  indicates an error)
outputs[1] = P0<par>, e.g. POVFB
outputs[2] = PL<par>, e.g. PLVFB
outputs[3] = PW<par>, e.g. PWVFB
outputs[4] = PLW<par>, e.g.
  PLWVFB

Extracts:

Binning parameters P0<par>, PL<par>, PW<par>, PLW<par>

PSP_set_opt

Accepts a list of model parameters, separated by blanks 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 = PSP_set_opt("RDSW PRWG
       PRWB","Extraction_configuration/Boundaries")
PTFTCV_cgd

This function is obsolete.

Standard extraction for the UCB p-Si TFT model. Extracts p-Si TFT gate-to-drain overlap capacitance and a transition parameter.

Input Arguments:

 

   Data Sets:

Gate-Drain V, Source-Drain V, Gate-Drain C

Output:

None

Extracts:

CGDO, ACGD

Automatic Invocation:

By Extract menu function

PTFTCV_cgs

This function is obsolete.

Standard extraction for the UCB p-Si TFT model. Extracts p-Si TFT gate-to-source overlap capacitance and transition parameters.

Input Arguments:

 

   Data Sets:

Gate-Source V, Drain-Source V, Gate-Source C

Output:

None

Extracts:

CGSO, ACGS, VGTRANLC, VGTRANHC

Automatic Invocation:

By Extract menu function

PTFTDC_lin

This function is obsolete.

Standard extraction for the p-Si TFT model. Extracts linear region parameters using Id versus Vg data measured on a p-Si TFT device.

Input Arguments:

 

   Data Sets:

Drain V, Gate V, Source V, Drain I

Output:

None

Extracts:

VTO, U0, U1, U2, U3, U4, SUBSLOPE, VOFF, THERMALI, VGTRANL, VGTRANH, GIDLA, GIDLB

Automatic Invocation:

By Extract menu function

PTFTDC_sat

This function is obsolete.

Standard extraction for the p-Si TFT model. Extracts saturation region parameters using Id versus Vd data measured on a p-Si TFT device.

Input Arguments:

 

   Data Sets:

Drain V, Gate V, Source V, Drain I

Output:

None

Extracts:

VMAX, L2, PHITA, S1, S2

Automatic Invocation:

By Extract menu function

Pup

Wafer prober function. Moves up the chuck of the wafer prober. For more information regarding this function, refer to External Prober User Functions.

Input Arguments:

None

Output:

Single number with exit status

Automatic Invocation:

None

rand_flat

Returns a single random number generated for each call between 0.0 and 1.0 inclusive. Use rand_seed() to set a seed value. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08.

Input Arguments:

None

Output:

Single real number

Automatic Invocation:

None

Example:

    • Example PEL code:
! create 100 random numbers between 
! lower bound and upper bound
! ex. 100 random real numbers from 1.0 to 10.0

complex num[100]
! sets a varying random seed for all successive calls
! to rand_flat()
x=rand_seed(val(system$("date +%s")))

lowerbound=1.0
upperbound=10.0
i=0
while i<100
  num[i]=rand_flat()*(upperbound-lowerbound)+lowerbound
  i=i+1
endwhile
    • To view an example of the random functions used in a setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, "Creating Graphic User Interfaces", "Random Numbers (Example)," section.
rand_gauss

Returns a random number generated for each call that follows a normal distribution with the given mean and sigma values. Use rand_seed() to set a seed value. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08.

Input Arguments:

 

   Reals or Integers:

Mean, Sigma

Output:

Single real number

Automatic Invocation:

None

Example:

    • Example PEL code:
 ! Creates 100 random numbers within a
! gaussian distribution with a mean of 
! approximately 5 and a standard deviation 
! of approximately 1

complex num[100] 
! sets a varying random seed for all successive calls
!  to rand_gauss(…) 
x=rand_seed(val(system$("date +%s")))

i=0
while i<100
  num[i]=rand_gauss(5,1)
  i=i+1
endwhile
    • To view an example of the random functions used in a setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, "Creating Graphic User Interfaces", "Random Numbers (Example)," section.
rand_seed

Sets a seed for the internal random number generator that has the initial seed of 3300. The rand_seed(seed) function should be used to set the seed for the internal random number generator for all successive calls to the rand_flat() or rand_gauss() functions. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08.

Input Arguments:

 

   Reals or Integers:

Seed (must not be zero)

Output:

None

Automatic Invocation:

None

Example:

    • Using a specific/fixed seed value with rand_flat() or rand_gauss().
You can input a fixed seed value for the rand_seed(seed) function.

For example:

x=rand_seed(42)
y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma)
y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma)
where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2.

If you set the same fixed seed value again and call rand_flat() or rand_gauss(gaussMean, gaussSigma) again.

For example:

x= rand_seed(42)
y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma)
x= rand_seed(42)
y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma)
where y1 == y2 since the seed was set to the same fixed seed before each call.

Since rand_flat() or rand_gauss() return a single random number, each time you call rand_seed(42) beforehand you will get the same single random number.

    • Generating a varying seed value based on the current time with random().
Instead of using the same fixed seed number each time to generate a random number, another approach would be to create a varying real number seed out of the current time.

For example:

x = rand_seed(val(system$("date + %s")))
y1 = rand_flat() or y1 = rand_gauss(gaussMean, gaussSigma)
y2 = rand_flat() or y2 = rand_gauss(gaussMean, gaussSigma)
where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2.

If you were to call rand_seed(val(system$("date + %s"))) again later before another call to rand_flat() or rand_gauss(…) the random seed value would have been set differently each time so the calls to rand_flat() or rand_gauss() would still return different random values.

x= rand_seed(val(system$("date + %s")))
y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma)
x= rand_seed(val(system$("date + %s")))
y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma)
where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2.

    • To view an example of the random functions being used in a Setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, "Creating Graphic User Interfaces", "Random Numbers (Example)," section.
random

Creates a data set of random numbers with values between 0 and 1. This function is based on the underlying C code for srand48 and rand48. This function will return a dataset of 'N' numbers where N is the size defined by the current Setup's input sweeps. This function is referred to data in an IC-CAP DUT Setup that includes a defined input set that evaluates to a specific number of points.

Input Arguments:

 

   Reals or Integers:

Seed

Output:

Array of real numbers; size determined by setup

Automatic Invocation:

On Data Set Input Change

Example:

    • Using a specific/fixed seed value with random(seed).
You can call the random(seed) function with a specific seed value.

For example:

random(49)
Also, say that the IC-CAP DUT Setup in which you are calling the IC-CAP "random" function (transform is defined in your DUT Setup's "Extract / Optimize" tab) has 100 points in your DUT Setup's "Measure / Simulate" tab, then the result of running the random(seed) function will also evaluate to 100 numbers in the resulting random number dataset. However, each time you call the random(49) function, you'll get the same 100 random numbers because they're all starting with the same seed number (example random(49) has seed = 49).

    • Generating a varying seed value based on the current time with random(seed).
Instead of using the same seed number all the time to generate a random number, another approach would be to create a varying real number seed out of the current time.

For example:

random(val(system$("date +%s"))) 
    • To view an example of the random functions being used in a Setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, "Creating Graphic User Interfaces", "Random Numbers (Example)," section.
RBBcalc

Used in extraction of base resistance parameters for the UCB Bipolar model. Calculates RBB from corrected H11 measurements generated with the H11corr function described above. A circle fit is performed on the complex data to extrapolate the high frequency real axis intercepts.

Input Arguments:

 

   Data Sets:

H11

Output:

Array of complex numbers; size determined by inputs

Automatic Invocation:

On Data Set Input Change

Example PEL Statement:

rbbcalc_data = RBBcalc(H11)
RMSerror

Calculates the RMS error between 2 data sets. The error of the second input is calculated with respect to the first input. Returns the error in percent or magnitude. Three formulations are available depending on the value of the third argument labeled % Err Flag.

Input Arguments:

 

   Data Sets:

Input 1, Input 2

Reals or Integers:

% Err Flag

Output:

Single real number

Automatic Invocation:

On Data Set Input Change

Example PEL Statement:

percent_error = RMSerror(ic.m,ic.s,1)

If 0 is passed as the third argument, the absolute value of the difference between the two datasets is returned.

If 1 or 2 is passed as the third argument, a relative (or percent) error is calculated. For a value of 1, the error of the second input is calculated with respect to the first input for each point. If any values in the first dataset are 0, the function returns an error.

For a value of 2, the same formulation used by the Levenberg-Marquardt optimizer is used. This is also a relative (or percent) error calculation, but the formulation takes the error relative to the larger of the two data set values on a point by point basis. This formulation always returns a value.

Where

simi   = the ith simulated data point

measi   = the ith measured data point

N   = the total number of data points

sin

Sine of an angle in radians.

Input Arguments:

Data Sets:  Input 1

Output:  Complex number, matrix, complex array, or matrix array (depends on input argument)

Automatic Invocation:  On Data Set Input Change

sinh

Hyperbolic sine.

Input Arguments:

 

   Data Sets:

Input 1

Output:

Complex number, matrix, complex array, or matrix array (depends on input argument)

Automatic Invocation:

On Data Set Input Change

smooth3

Returns 3-point running average of the Input data set. End points of each curve are not affected. Defined in userc.c.

Input Arguments:

 

   Data Sets:

Input

Output:

Complex array or matrix array (depends on input argument)

Automatic Invocation:

On Data Set Input Change

SPECSSpin

Used in an IC-CAP Macro to determine the matrix connections of the device under test. ICMSpin returns the matrix pin number that corresponds to a specified terminal index on the device. This function only returns valid data when IC-MS test execution is running. Refer to the IC-MS User's Manual for more information on using ICMSpin.

Input Arguments:

 

   Reals or Integers:

Terminal Index

Output:

Matrix pin number corresponding to the specified device terminal index

Automatic Invocation:

None

Example PEL Statement:

pin_num = ICMSpin(1)
sqrt

Square root function. Note that sqrt(-1) correctly produces an imaginary result.

Input Arguments:

 

   Data Sets:

Input 1

Output:

Complex number, matrix, complex array, or matrix array (depends on input argument)

Automatic Invocation:

On Data Set Input Change

SWM_debug

Switching matrix function. Turns the debug flag on and off. For more information regarding this function, refer to External Matrix Driver User Functions.

Input Arguments:

 

   Reals or Integers:

Debug Flag

Output:

Single number with exit status

Automatic Invocation:

None

SWM_init

Switching matrix function. Initializes the switching matrix and clears all port and pin connections. This must be called before any other switching matrix functions are used in the Macro. For more information regarding this function, refer to External Matrix Driver User Functions.

Input Arguments:

 

   Reals or Integers:

Block 1 Addr, Block 2 Addr

   Strings/Pars/Vars:

Matrix Type, Device File

Output:

Single number with exit status

Automatic Invocation:

None

tan

Tangent of an angle in radians.

Input Arguments:

 

   Data Sets:

Input 1

Output:

Complex number, matrix, complex array, or matrix array (depends on input argument)

Automatic Invocation:

On Data Set Input Change

tanh

Hyperbolic tangent.

Input Arguments:

 

   Data Sets:

Input 1

Output:

Complex number, matrix, complex array, or matrix array (depends on input argument)

Automatic Invocation:

On Data Set Input Change

TARGET_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, and so on. This makes it easier to call the function with variable inputs inside the PEL programs.

The Flag variable defines certain conditions, for example, the extraction of vth for the large, which does not need to calculate all the early voltages.

Input Arguments:

 

  Variable

Length (L)
   Total gate width (W)
   Number fingers (NF)
   Flag for extraction options
      flag: 1 Fixed Id(Vth) = Idref*L/W
              2 Fixed Id(Vth) = Idref*NF*
                 ((W/NF)-2*Delta_W)/
                 (L-2*Delta_L)
   Reference current Idref for
      extraction options
   Delta L (one side)
   Delta W (one side)
   # of curve
   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 (M,S)
version

Output:

Value vth or failure indicator

Automatic Invocation:

Vth (1e99 indicates error)

tis_p_down

HP 4071A wafer prober function. Lowers the chuck of the wafer prober.

tis_p_home

HP 4071A wafer prober function. Used for loading a wafer onto the chuck and moving it to the home position.

tis_p_imove

HP 4071A wafer prober function. Moves the chuck a relative increment from its current position.

tis_p_ink

HP 4071A wafer prober function. Calls the inker function of the prober if it is supported.

tis_p_move

HP 4071A wafer prober function. Moves the chuck to an absolute position.

tis_p_orig

HP 4071A wafer prober function. Defines the current X & Y position of the chuck. Must be called before calling the tis_p_move or tis_p_imove functions.

tis_p_pos

HP 4071A wafer prober function. Returns the current X & Y position of the chuck.

tis_p_scale

HP 4071A wafer prober function. Defines the X and Y stepping dimensions that are used by the tis_p_move and tis_p_imove functions.

tis_p_up

HP 4071A wafer prober function. Moves up the chuck of the wafer prober.

tis_prober_get_ba

HP 4071A wafer prober function. No Help Available.

tis_prober_get_name

HP 4071A wafer prober function. No Help Available.

tis_prober_init

HP 4071A wafer prober function. Initializes the prober for use. This function must be called before any other prober functions are used in the Macro.

tis_prober_read_sysconfig

HP 4071A wafer prober function. No Help Available.

tis_prober_reset

HP 4071A wafer prober function. Sends a device clear command to the prober.

tis_prober_status

HP 4071A wafer prober function. Sends a query to the prober to obtain the Remote/Local control state and the edge sensor contact state. The prober should be initialized with tis_prober_init before this function.


prevnext