# New Device Model Card Approach

Introduction

Normally a single active device model is extracted to cover a range of device
geometries and temperature. Sometimes this single scaleable model is not sufficient
to describe all the changes in output characteristics over the range of geometry
and temperature required. The total range of geometry and temperature is then
broken up into regions and a model produced for each of these sub-sets of devices.
This is the basis of a binned model and can lead to discontinuities at the bin
boundaries as the model card is changed. To get round this problem * SmartSpice*
has introduced a new functionality to allow the user to go back towards a single
scaleable model card via the use of a function rather than a single parameter
value. This new powerful algorithm allows the user to specify a formula linking
in other device model card parameters as so giving a continous multi-dimensional
function. This then gets round the problems of binning and gives the potential
of a more accurate model fit to the device output characteristics.

**Setting up the Model’s Parameter**

* SmartSpice* offers new algorithm for setting up a
model for SOI, TFT, MOSFET, JFET, MESFET, bipolar and diode. This new feature
is intended to substitute for the binning scheme and gives the user a powerfull
mechanism for device modeling. The new algorithm allows the user to specify
a formula for any model’s parameter. The formula describes the model across
a wide range of data and target model parameters and is represented by a continuos
multidimensional function.

** Syntax**:

m0 B0_x10 adr7 B0_x11 vss nenh L=5.1e-06 W=2.11e-06

.model nenh NMOS

...

+VERSION=3.1 +Vth0=’0.9302 + 0.125E-012/(W*L) +0.001*L-0.012*W’

...

In the example above the model card parameter Vth0 is driven by width and length
which comes from a set of instance parameters. For device m0 * SmartSpice*
will use a model with parameter Vth0 calculated using L=5.1e-06 and W=2.11e-06.

**Building up the Model**

An abstract model nenh is used to generate either a table of Vth0 values or
create a copy of absract model values. * SmartSpice*
uses both algorithms. Table generation algorithm is used by default and is recommended.
There is a variable “modelalg” which must be specified in the initialization
file(.SmartSpice.in(Unix) and smspice.set(Windows) ) to switch the internal
algorithm. If modelalg=0(default) then

*builds up the table with the parameter’s values. If modelalg=1 then*

**SmartSpice***creates a separate model for each instance.*

**SmartSpice**

**Perfomance in the New Model Approach**

modelalg=0 is a memory conserving approach and has a higher speed during the
parser phase. * SmartSpice* bypasses the regular model
creation procedures and builds up an optimized (quick selection) table. During
the simulation phase SmartSpice operates with the table to set up a correct
model parameter value. The overhead for modelalg=0 is near 3%-6% of total simulation
time. The post-processing phase takes less time. Use

*shell command “cmcstat” to get the absolute overhead during the simulation.*

**SmartSpice**modelalg=1 is a more memory consuming approach. If the netlist contains a lot
of different geometries (a lot of groups) * SmartSpice*
will allocate memory for each group. The parser phase can take 4-5 times longer
in comparision with the modelalg=0.

During simulation modelalg=1 is more preferable then modelalg=0 because * SmartSpice*
does not need to make a selection of the model’s parameter from table.
Post processing takes more time.

**SmartSpice****shell Command for Checking up
the Model’s Parameter table**

All devices are grouped with respect to the arguments of the formula used for
the model parameter. To see how many different groups are created and the model
parameter target value * SmartSpice* offers the shell
command “cmcstat”. The output after the use of “cmcstat”
is shown below with modelalg=0:

--> cmcstat

****internal information about CMC format model use

****

Total Overhead During Simulation = 0.000000

Model nenh

vth0=0.9302 + 0.125e-012/(w*l) +0.001*l-0.012*w

group 0 W=1.050000e-05 L=1.440000e-06 9.384671e-01

group 1 W=1.050000e-05 L=1.450000e-06 9.384101e-01

group 2 W=1.050000e-05 L=1.460000e-06 9.383538e-01

group 3 W=2.100000e-06 L=1.100000e-06 9.843125e-01

group 4 W=2.110000e-06 L=2.100000e-06 9.584103e-01

group 5 W=2.120000e-06 L=1.100000e-06 9.838020e-01

group 6 W=2.130000e-06 L=1.100000e-06 9.835504e-01

group 7 W=2.140000e-06 L=1.100000e-06 9.833011e-01

group 8 W=2.150000e-06 L=1.100000e-06 9.830541e-01

group 9 W=2.160000e-06 L=1.100000e-06 9.828094e-01

Output after the use of “cmcstat” is shown below when modelalg=1:

--> cmcstat

****internal information about CMC format model use****

[holder model]=nenh

group 0 W=1.050000e-05 L=1.440000e-06

group 1 W=1.050000e-05 L=1.450000e-06

group 2 W=1.050000e-05 L=1.460000e-06

group 3 W=2.100000e-06 L=1.100000e-06

group 4 W=2.110000e-06 L=2.100000e-06

group 5 W=2.120000e-06 L=1.100000e-06

group 6 W=2.130000e-06 L=1.100000e-06

group 7 W=2.140000e-06 L=1.100000e-06

group 8 W=2.150000e-06 L=1.100000e-06

group 9 W=2.160000e-06 L=1.100000e-06

**User’s Oriented Errors and Warning Messages**

**Conflict of Names in the .PARAM and Formula Arguments**

New model approach algorithm reports about errors. In the case of using the
same names for parameter in .param statement and arguments in formula model’s
parameter (Berckely approach) * SmartSpice* will issue
the warning.

**Example**:

.param w=1.model nenh NMOS

+Vth0=’0.9302 + 0.125E-012/(w*l) +0.001*l-0.012*w’

Warning:

New model format in use : member [ w ] in the expression [ 0.9302 + 0.125e-012/(w*l) +0.001*l-0.012*w ] of model [nenh](file ./bsim3v3.mod/home/user/MYINDECK/CMC/bsim3v3.mod) is treated as device geometry and overrides the value of parameter [w] in the .PARAM

User must check either formula in the .model card or parameter in the .PARAM.

**Arguments in the Formula for Model Card Parameter do not Correspond
to the Set of Device’s Parameters**

**Example**:

q1 cq bq gnd1 gnd QNLREF m=1 areac =45

.modelqnlrefnpn (

...

+ BF=’0.5+area+1’

Fatal Error: CMC model: Model qnlref can not find instance parameter ’area’ in the specified device’s line

q1 cq bq gnd1 gnd qnlref m=1 areac =45

used in the expression ’0.5+area+1’

Error on lines:

29 : .modelqnlrefnpn (

30 : *+BF=100 31 : +BF=’0.5+area+1’

...

cannot evaluate expression ’0.5+area+1’

*SmartSpice’s* System Internal Messages

** SmartSpice** prints the error message “Device
type “CAP32” is not supported in the enchanced modeling algorithm”
if the parse finds inconsistencies in the parser phase. In this case user must
check the .modelcard for device CAP32.

System message “CMC model: module found fatal error, parameter table
and corresponding value table are not syncronized” is issued by SmartSpice
if internal engine fails to find correspondences in the internal tables. User
must report that message to the ** SmartSpice** support.

**Multithreading Support in the New Model Approach**

modelalg=0 and modelalg=1 support multithreading in ** SmartSpice**.
The user does not need to specify any extra input for

**, only -P n, where N-is a number of CPUs.**

*SmartSpice*

**Enchancements of the New Modeling Approach**

The set of allowed instance’s parameters which can be used in the formula
for a model card parameter is the subject for increase later. The core of the
algorithm is scalable.

Table 1. Correspondence between different types of devices

and device’s parameters which can be used in the model’s parameter.