# Comprehensive MOS Model Validation Environment

Case Study: BSIM3v3

Validating SPICE Models is as important as striving to create
an accurate model. With the increasing complexity of models (to
cover more physical effects), it is becoming very difficult for
a modeling engineer to judge the quality of the model just by
simulating several I-V curves. This is especially true for scaleable
MOS models intended to cover all geometry and bias ranges. The
users of these models (circuit designers) are becoming increasingly
suspicious as to the model quality, frequently raising the question
as to how the model was validated. The new routine `VALIDATE`

in UTMOSTIII has been developed to allow fast and comprehensive
model validation.

Introduction

The `VALIDATE`

routine allows verification of BSIM3
and ALL_DC measurement data against the final DC extracted model.
The comparison of the simulated data versus the measured data
for the parameters `Vsat, Isat and Vth`

is important
for circuit designers. `Vsat, Isat and Vth`

are respectively
the saturation drain voltage, saturation drain current and threshold
voltage extracted from Ids/Vgs-Vbs and Ids/Vds-Vgs characteristics.
Moreover, the extraction is usually done on a set of L-array devices
(typically devices with a constant large width and various drawn
lengths) and a set of W-array devices (typically devices with
a constant large length and various drawn widths). It is very
important to verify the model on intermediate geometries as well.

The routine is organized to display different plots very efficiently. The user can use this routine in batch mode or interactively. A new batch command has been introduced to set the values of the fitting variables for this routine.

Fitting Variables

The fitting variables allow the user to set the kind of data that is displayed for each plot and to select the method used for Vth extraction.

Eight different types of curves can be plotted:

- Vsat vs Ldrawn for different Vbs sweeps and a constant Vgs
- Vsat vs Wdrawn for different Vbs sweeps and a constant Vgs
- Isat vs Ldrawn for different Vbs sweeps and a constant Vgs
- Isat vs Wdrawn for different Vbs sweeps and a constant Vgs
- Vth vs Ldrawn for different Vbs sweeps and a constant Vgs
- Vth vs Vds for different devices and a constant Vbs
- Vth vs Vbs for different devices and a constant Vds

These variables can take one of 4 possible values:

**0:**No plot**1:**Measurement data only**2:**Simulation data only**3:**Measurement + Simulation data

Figure 1. Fitting Variable Screen

Extraction Methods

The parameters Vsat, Isat and Vth are extracted using traditional methods. This section describes these methods.

Vsat/Isat extraction

The saturation voltage and the saturation current are extracted
from the Ids.Vds-Vbs curves. These parameters are at the coordinates
of the intersection point between the slope of the linear region
and the minimum slope in the saturation region.

Figure 2. **Vsat/Isat
extraction example.**

Vth Extraction

There are two methods possible for determining the threshold voltage
parameter. If the *Model(Old=0)* fitting variable is set
to 0 then the threshold voltage is determined using the maximum
slope method. If *Model(Old=0)* is set to 1 the threshold
voltage is calculated as the voltage at which Ids just exceeds
*Vth_factor* * Wdrawn/Ldrawn. Vth_factor can be set by the
user on the fitting variable screen, see Figure 1.

Figure 3. Vth extraction example using the maximum slope method.

Reading of the BSIM3 and ALL_DC Measurement Data

The BSIM3 and ALL_DC routines allow the user to measure the Ids/Vds-Vgs and Ids/Vgs-Vbs characteristics for devices with different geometries. The Validate routine selects the appropriate data from these routines in order to extract the parameters Isat, Vsat and Vth.

This section describes data selection for each plot. It is important to note that this routine works only if a data log file containing BSIM3 or ALL_DC measurement is loaded in UTMOST.

It should be noted that this routine does not make any distinction between measurement data collected from several groups of devices. It is recommended not to select Pmos and NMOS devices at the same time even if they are not in the same group.

The log file used to generate all examples in this article is obtained by using the BSIM3 measurement routine and the following devices:

```
10/10, 10/2, 10/1, 10/0.6, 10/0.5, 10/0.45, 2/10,
0.6/0.5, 0.6/10, 5/5
```

Isat/Vsat vs Ldrawn Plots

The Validate routine uses the maximum number of devices corresponding to a set of L_array devices ( constant width and various drawn lengths).

Since the BSIM3 routine was used for measurements, two sets of Ids versus Vds curves are available in the log file: one at zero substrate bias and the other at high substrate bias (-3.3V). The Ids vs Vds data sets have been measured with Vds swept between minimum and maximum values of 0.0V and 3.3V respectively. A data sweep represents one Vds voltage sweep measured over a defined Vds range for constant Vgs and Vbs biases. The gate voltage has been stepped in five equal step values between Vth+0.1V and 3.3V.

In this case, UTMOST will extract the Isat and Vsat parameters
for each device for the set of L-array devices: ```
10/10, 10/2,
10/0.6, 10/0.5, 10/0.45
```

at Vgs=5V/Vbs=0V and at Vgs=5V/Vbs=-3.3V.

Figure 4. Vsat versus Ldrawn validation
example. Extracted Isats for measured and simulated data are overlayed
and rms, average and maximum errors are calculated. Two sets of
data correspond to low and high back bias voltages.

Figure 5. Vsat versus Ldrawn validation
example. Extracted Vsats for measured and simulated data are overlayed
and rms, average and maximum errors are calculated. Two sets of
data correspond to low and high back bias voltages.

Isat/Vsat vs Wdrawn Plots

The Validate routine uses the maximum number of devices corresponding to a set of W_array devices (constant length and various drawn widths).

Since the BSIM3 routine was used for measurements, two sets of Ids versus Vds curves are available in the log file: one at zero substrate bias and the other at high substrate bias (-3.3V).

UTMOST will extract the Isat and Vsat parameters for each device
of the set of W-array devices: `10/10, 2/10, 0.6/10`

at Vgs=5V/Vbs=0V and at Vgs=5V/Vbs=-3.3V.

Figure 6. Isat versus Wdrawn validation
example. Extracted Isats for measured and simulated data are overlayed
and rms, average and maximum errors are calculated. Two sets of
data correspond to low and high back bias voltages.

Vth vs Ldrawn Plots

The Validate routine uses the maximum number of devices corresponding to a set of L_array devices (constant width and various drawn lengths).

Since the BSIM3 routine was used for measurements, two sets of
Ids versus Vgs curves are available: one at very low drain bias
of 0.1V and the other at high value of drain bias (3.3V). The
Ids versus Vgs data sets have been measured with Vgs swept between
defined minimum and maximum values, 0.0V and 3.3V respectively.
A data sweep represents one Vgs voltage sweep measured over a
defined Vgs range for constant Vbs and Vds biases. The bulk voltage
has been stepped in six equally spaced values between 0 and -3.3V.

Figure 7. Isat versus Wdrawn validation
example. Extracted Vsats for measured and simulated data are overlayed
and rms, average and maximum errors are calculated. Two sets of
data correspond to low and high back bias voltages.

In this case, UTMOST will extract the threshold voltage for each
device for the set of L-array devices: ```
10/10, 10/2, 10/1,
10/0.6, 10/.05, 10/0.45
```

at the Vds value of 0.1V and for
the 5 first Vbs step values. The number of Vbs values in this
case is limited to 5 by the ALL_DC routine.

Figure 8. Vth versus Ldrawn validation
example. Five sets of measured and simulated Vth curves correspond
to five Vbs steps

Vth vs Wdrawn Plots

The Validate routine uses the maximum number of devices corresponding to a set of W_array devices (constat length and various drawn widths).

UTMOST will extract the threshold voltage for each device in the set of W-array devices: 10/10, 2/10, 0.6/10 for a Vds value of 0.1V and for the five first Vbs step values. The number of Vbs step values in this case is limited to 5 by the ALL_DC routine.

Figure 9. Vth versus Wdrawn validation
example. Five sets of measured and simualted Vth curves correspond
to five Vbs steps.

Vth vs Vds Plots

The validation of the threshold voltage variations with Vds is
typically performed on L_array devices and not on W_array devices.
Consequently, on the plot displayed in Figure 10, only L_array
devices are used. It is important for analog designs to model
Vth dependency on drain voltage (ETA type parameters) as accurately
as possible. No commercial model accurately models Vth as a function
of Vds. It is up to the modeling engineer to decide when the model
is **"good enough"**

Since the BSIM3 routine was used for measurements, two sets of Ids versus Vgs curves are available in the log file: one set for Vds=0.1V and the other for Vds=3.3V.

UTMOST will extract the threshold voltage Vth at Vbs=0.0V/Vds=0.1V and at Vbs=0.0V/Vds=3.3V for all the selected devices. It is recommended to try both Vth extraction methods: the maximum slope method and the method where Vgs just exceeds the Vth_factor * Wdrawn/Ldrawn.

Figure 10. Vth versus Vds validation example.
Only threshold voltage extracted on L array devices is used for
display.

Figure 11. **Vth
versus Vbs validation example. Only threshold voltage extracted
on L array devices is used for display**

Vth vs Vbs Plots

The validation of the threshold voltage variations with Vbs is typically performed on L_array devices and not on W_array devices. Consequently, on the plot displayed in Figure 11, only L_array devices are used.

Since the BSIM3 routine was used for measurements, two sets of Ids versus Vgs curves are available in the log file: one set for Vds=0.1V and the other for Vds=3.3V.

UTMOST will extract the threshold voltage Vth at Vbs=0.0V/Vds=0.1V
and at Vbs=0.0V/Vds=3.3V for all the selected devices. It is recommended
to try both Vth extraction methods: the maximum slope method and
the method where Vgs just exceeds the Vth_factor * Wdrawn/Ldrawn.

Simulation

Simulation data can be used for model validation in two different ways.

If measured data is available, simulation data is obtained for the same bias points used to obtain the measurement data, and the two data sets are superimposed on all validation plots.

In a more general case, simulation can be done on an arbitrary
set of geometries and bias ranges. Only simulation data is then
displayed. This method is used to scan model robustness across
all geometries and all possible bias conditions. It is important
to note how device geometries are specified and selected: the
selected group number must be higher than the maximum group number
used for measurements, and each group number must be different
for each plot.

Batch Mode Example

New Batch Command

In the current version of UTMOST, it is not possible to set a value for a fitting variable when UTMOST is used in batch mode. A new command fitvar is introduced for this application.

Syntax: fitvar ```
<fitting variable
number> <Routine name> = <fitting variable value>
```

Example

The following is an example of the batch commands used with the
log file that will automatically produce all of the above plots.

`# **************************** *`

`# * demo VALIDATE routine *`

`# **************************** *`

`# example working on BSIM3 measurement data`

`batchdir = .`

`# load a setup file`

`model ./VALIDATE`

```
# load a log file containing BSIM3 data for PMOS and NMOS
devices
```

`init inf = ./validate_bsim3.log`

```
#initialisation of the fitting variables : flags set to
0
```

`fitvar 1 Validate = 0 # isat vs L plot`

`fitvar 2 Validate = 0 # isat vs W plot`

`fitvar 3 Validate = 0 # vsat vs L plot`

`fitvar 4 Validate = 0 # isat vs W plot`

`fitvar 5 Validate = 0 # vth vs L plot`

`fitvar 6 Validate = 0 # vth vs W plot`

`fitvar 7 Validate = 0 # vth vs Vds plot`

`fitvar 8 Validate = 0 # vth vs vbs plot`

`fitvar 9 Validate = 0 # selector of the method`

`for VTH extraction`

`fitvar 10 Validate = 1e-7 # factor`

`plotter = yes`

`define group = 1`

`deselect Validate devices all`

`select Validate devices all`

`# plot of isat vs L for NMOS devices : meas + sim`

`fitvar 1 Validate = 3`

`simulate Validate`

`fitvar 1 Validate = 0`

`# plot of isat vs W for NMOS devices : meas`

`fitvar 2 Validate = 1`

`simulate Validate`

`fitvar 2 Validate = 0`

`# plot of Vth vs W for NMOS devices : meas + sim`

`fitvar 6 Validate = 3`

`simulate Validate`

`fitvar 6 Validate = 0`

`# plot of Vth vs L for NMOS devices : meas + sim`

`fitvar 5 Validate = 3`

`simulate Validate`

`fitvar 5 Validate = 0`

```
fitvar 9 Validate = 1 #vth selector = 1 ( vth is extracted
at ids = w/l *factor
```

`deselect Validate devices all`

`select Validate devices 1 5 9 11 15 19`

`# plot of Vth vs Vds for NMOS devices : meas + sim`

`fitvar 7 Validate = 3`

`simulate Validate`

`fitvar 7 Validate = 0`

`select Validate devices 1 5 9`

`# plot of Vth vs Vbs for NMOS devices : meas + sim`

`fitvar 8 Validate = 3`

`simulate Validate`

`fitvar 8 Validate = 0`

`quit`

Summary

The new VALIDATE routine allows quick MOS model validation against the available measurement data or through simulation. It allows validation of model capability on an arbitrary set of geometries. This routine is a powerful tool for final model validation before model libraries is released. What remains as future development is to insert optimization capabilities in each plot routine (especially Vth vs Ldrawn and Wdrawn), to allow optimization of reverse short channel effects, or depending on application, allow optimization of Vth versus Vbs curves or adjust Isat/Vsat for a particular geometry set.