Documentation /  Analog Insydes /  Tutorial /  Frequency-Domain Analysis of Linear Circuits /

Two-Port ParametersAC Analysis of the CMOS Amplifier

2.9.6 Advanced Transistor Modeling

Implementation of MOS Models with Inline Design-Point Information

By using the value-field keywords Value and Symbolic we can provide design-point information in subcircuit or model definitions. However, directly specifying numerical values in the netlist definition of a model object hardly makes sense because, in general, different model instances have different sets of design-point values. Therefore, instead of treating these values as global quantities we must pass individual parameter sets to every model instance.

The techniques for passing parameters to subcircuit instances have already been dealt with in Chapter 2.3, and the same approaches can be used to handle instance-specific design-point information. Here, we just have to observe the additional requirement that every element in a model netlist now needs two symbolic parameters: one that represents the symbolic value of the element and one that is replaced by the associated numerical value during subcircuit expansion.

For standard applications, you do not need to take care of these things as on the one hand Analog Insydes provides a library with built-in device models and on the other hand there is no need to write netlists by hand as this is automatically done by ReadNetlist. Following, we explain the internal model mechanism which is implemented in the Analog Insydes model library.

Consider the following circuit description which contains a model definition for the high-frequency MOSFET model introduced in Section 2.9.1 (see Figure 9.3). The symbolic element values are given as arguments to the Symbolic options while the design-point values, denoted by the names with a trailing $ac, are given as arguments to the Value options. Both sets of symbols must appear in the parameter lists of the model definitions to allow for passing design-point values from a model reference to a model instance and to ensure that symbolic parameters are correctly instantiated.

In[30]:= hfMOSmodel =
Circuit[
Model[
Name -> MOSFET,
Selector -> HighFrequency,
Scope -> Global,
Ports -> {D, G, S, B},
Parameters -> {gm, gmb, Gds, Cgs, Cgd, Cbs, Cbd,
GM$ac, GMB$ac, GDS$ac, CGS$ac, CGD$ac, CBS$ac,
CBD$ac},
Definition -> Netlist[
{CGS, {G, S}, Value -> CGS$ac, Symbolic -> Cgs},
{CGD, {G, D}, Value -> CGD$ac, Symbolic -> Cgd},
{VCG, {G, S, D, S}, Value -> GM$ac,
Symbolic -> gm},
{GDS, {D, S}, Value -> GDS$ac, Symbolic -> Gds},
{VCB, {B, S, D, S}, Value -> GMB$ac,
Symbolic -> gmb},
{CBD, {B, D}, Value -> CBD$ac, Symbolic -> Cbd},
{CBS, {B, S}, Value -> CBS$ac, Symbolic -> Cbs}
]
]
]

Out[35]=

In[31]:= ExpandSubcircuits[hfMOSmodel];
GlobalSubcircuits[]

Out[37]=

Generating Design Points

Please consider the circuit description of the differential amplifier circuit from Section 2.9.2 (see Figure 9.4). From the netlist entries for M1 to M4 it becomes apparent how the design-point information is specified for each transistor model instance. Values are assigned only to parameters which represent numerical information. No assignments are made to the corresponding symbolic model parameters to let them be instantiated automatically. Note again, that this is all taken care of automatically by the command ReadNetlist.

Let's examine the effects of the preceding parameter definitions and assignments by recalculating the single-input-to-single-ended voltage transfer function of the differential amplifier, this time using the high-frequency MOS model we just defined. First, we set up symbolic circuit equations using the option setting DefaultSelector -> HighFrequency.

In[32]:= eqscmoshf = CircuitEquations[cmosdiffamp,
ElementValues -> Symbolic,
DefaultSelector -> HighFrequency]

Out[38]=

As a result of default parameter instantiation (see Chapter 2.3) unique symbolic values have been generated for all instances of the transistor model elements. In addition, the arguments of the Value keywords have been replaced by the numerical values specified in the model references. Therefore, we can now use GetDesignPoint to extract the design-point list from the DAEObject.

In[33]:= GetDesignPoint[eqscmoshf]

Out[39]=

Two-Port ParametersAC Analysis of the CMOS Amplifier