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.








