Updated diode documentation.

This commit is contained in:
pnenzi 2003-10-22 17:53:22 +00:00
parent cf43dfbb3b
commit 6c0d0ad47c
1 changed files with 482 additions and 181 deletions

View File

@ -674,6 +674,11 @@ the GNU Autoconf documentation for the former.
The options specific to NGSPICE are: The options specific to NGSPICE are:
@itemize @bullet @itemize @bullet
@item @command{--enable-numaparam}: Preliminary support for parameters expansion
in netlists. Numparam is a library that attach itself to a single point
in NGSPICE code and comes with its own documentation. Before using this
library you should look at library's documentation in @file{src/frontend/numaparam}
directory.
@item @command{--enable-ftedebug}: This switch enables the code for debugging @item @command{--enable-ftedebug}: This switch enables the code for debugging
the NGSPICE frontend. Developers who wish to mess with the frontend the NGSPICE frontend. Developers who wish to mess with the frontend
should enable it (and set to @code{TRUE} the "debug" option). The should enable it (and set to @code{TRUE} the "debug" option). The
@ -733,10 +738,7 @@ The options specific to NGSPICE are:
this to have it compiled into NGSPICE. this to have it compiled into NGSPICE.
@item @command{--with-readline}: This option enables GNU Readline on NGSPICE. @item @command{--with-readline}: This option enables GNU Readline on NGSPICE.
Since NGSPICE license is incompatible with GPL (which covers Readline Since NGSPICE license is incompatible with GPL (which covers Readline
library), the code is not included into NGSPICE by default. The Readline library), the code is not included compiled into NGSPICE by default.
code is delivered as a separate patch. Before enabling this option the
patch must be applied. @emph{Applying the patch will break the GPL,
consider this!}
@end itemize @end itemize
@sc{Caveat Emptor}: @sc{Caveat Emptor}:
@ -1101,19 +1103,40 @@ stationary gaussian process.
@node Analysis at Different Temperatures, Convergence, Types of Analysis, Supported Analyses @node Analysis at Different Temperatures, Convergence, Types of Analysis, Supported Analyses
@section Analysis at Different Temperatures @section Analysis at Different Temperatures
All input data for NGSPICE is assumed to have been measured at a nominal
temperature of 27°C, which can be changed by use of the @code{TNOM}
parameter on the @code{.OPTION} control line. This value can further be
overridden for any device which models temperature effects by
specifying the @code{TNOM} parameter on the model itself. The circuit
simulation is performed at a temperature of 27°C, unless
overridden by a @code{TEMP} parameter on the @code{.OPTION} control line.
Individual instances may further override the circuit temperature
through the specification of a @code{TEMP} parameter on the instance.
Temperature dependent support is provided for resistors, diodes, Temperature, in NGSPICE, is a property associated to the entire circuit,
JFETs, BJTs, and level 1, 2, and 3 MOSFETs. BSIM (levels 4 and 5) rather an analysis option. Circuit temperature has a default (nominal)
MOSFETs have an alternate temperature dependency scheme which adjusts value of 27°C (300.15 K) that can be changed using the @option{TNOM}
option in an @code{.OPTION} control line. All analyses are, thus,
performed at circuit temperature, and if you want to simulate circuit
behaviour at different tempereratures you should prepare a netlist
for each temperature.
All input data for NGSPICE is assumed to have been measured at the
circuit nominal temperature. This value can further be overridden for
any device which models temperature effects by specifying the @option{TNOM}
parameter on the @code{.model} itself.
Individual instances may further override the circuit temperature
through the specification of @option{TEMP} and @option{DTEMP} parameters
on the instance. The two options are not independent even if you can
specify both on the instance line, the @option{TEMP} option overrides
@option{DTEMP}. The algorithm to compute instance temperature is described
below:
@example
IF TEMP is specified THEN
instance_temperature = TEMP
ELSE IF
instance_temperature = circuit_temperature + DTEMP
END IF
@end example
Temperature dependent support is provided for all devices except voltage
and current sources (either independent and controlled) and BSIM models.
BSIM MOSFETs have an alternate temperature dependency scheme which adjusts
all of the model parameters before input to NGSPICE. For details of the all of the model parameters before input to NGSPICE. For details of the
BSIM temperature adjustment, see [6] and [7]. BSIM temperature adjustment, see [6] and [7].
@ -1141,10 +1164,10 @@ $$
@end example @end example
@end ifnottex @end ifnottex
where `k' is Boltzmann's constant, `q' is the electronic charge, `E' where `@math{k}' is Boltzmann's constant, `@math{q}' is the electronic
is the energy gap which is a model parameter, `G' and `XTI' is the charge, `@math{E}' is the energy gap which is a model parameter, `@math{G}'
saturation current temperature exponent (also a model parameter, and and `@math{XTI}' is the saturation current temperature exponent (also a
usually equal to 3). model parameter, and usually equal to 3).
@ -1169,10 +1192,11 @@ $$
@end ifnottex @end ifnottex
where `T_0' and `T_1' are in degrees Kelvin, and `XTB' is a user-supplied where `@math{T_0}' and `@math{T_1}' are in degrees Kelvin, and `@math{XTB}'
model parameter. Temperature effects on beta are carried out by appropriate is a user-supplied model parameter. Temperature effects on beta are carried
adjustment to the values of `B_F' , `I_SE' , `B_R' , and `I_SC' (spice model out by appropriate adjustment to the values of `@math{B_F}', `@math{I_SE}',
parameters @code{BF}, @code{ISE}, @code{BR}, and @code{ISC}, respectively). `@math{B_R}', and `@math{I_SC}' (spice model parameters @option{BF},
@option{ISE}, @option{BR}, and @option{ISC}, respectively).
@ -1201,16 +1225,16 @@ $$
@end ifnottex @end ifnottex
where @code{N} is the emission coefficient, which is a model parameter, and the where `@math{N}' is the emission coefficient, which is a model parameter, and the
other symbols have the same meaning as above. Note that for Schottky other symbols have the same meaning as above. Note that for Schottky
barrier diodes, the value of the saturation current temperature barrier diodes, the value of the saturation current temperature
exponent, @code{XTI}, is usually 2. exponent, `@math{XTI}', is usually 2.
Temperature appears explicitly in the value of junction potential, `U' Temperature appears explicitly in the value of junction potential,
(in NGSPICE @code{PHI}), for all the device models. The temperature `@option{U}' (in NGSPICE @option{PHI}), for all the device models.
dependence is determined by: The temperature dependence is determined by:
@tex @tex
$$ $$
@ -1228,16 +1252,16 @@ $$
@end example @end example
@end ifnottex @end ifnottex
where `k' is Boltzmann's constant, `q' is the electronic charge, `N_a' where `@math{k}' is Boltzmann's constant, `@math{q}' is the electronic
is the acceptor impurity density, `N_d' is the donor impurity density, charge, `@math{N_a}' is the acceptor impurity density, `@math{N_d}' is
`N_i' is the intrinsic carrier con centration, and `E_g' is the energy the donor impurity density, `@math{N_i}' is the intrinsic carrier
gap. concentration, and `@math{E_g}' is the energy gap.
Temperature appears explicitly in the value of surface mobility, `M_0' Temperature appears explicitly in the value of surface mobility,
(or UO), for the MOSFET model. The temperature dependence is `@math{M_0}' (or @math{U_0}), for the MOSFET model. The temperature
determined by: dependence is determined by:
@tex @tex
$$ $$
@ -1257,7 +1281,8 @@ $$
@end example @end example
@end ifnottex @end ifnottex
The effects of temperature on resistors is modeled by the formula: The effects of temperature on resistors, capacitor and inductors is modeled
by the formula:
@tex @tex
$$ $$
@ -1272,8 +1297,8 @@ $$
@end example @end example
@end ifnottex @end ifnottex
where `T' is the circuit temperature, `T_0' is the nominal temperature, where `@math{T}' is the circuit temperature, `@math{T_0}' is the nominal temperature,
and `TC_1' and `TC_2' are the first- and second order temperature and `@math{TC_1}' and `@math{TC_2}' are the first and second order temperature
coefficients. coefficients.
@ -1327,7 +1352,7 @@ converge to the desired state.
@node General Structure and Conventions, Basics, Circuit Description, Circuit Description @node General Structure and Conventions, Basics, Circuit Description, Circuit Description
@section General Structure and Conventions @section General Structure and Conventions
The circuit to be analyzed is described to NGSPICE by a set of element The circuit to be analyzed is described to ngspice by a set of element
lines, which define the circuit topology and element values, and a set lines, which define the circuit topology and element values, and a set
of control lines, which define the model parameters and the run of control lines, which define the model parameters and the run
controls. The first line in the input file must be the title, and the controls. The first line in the input file must be the title, and the
@ -1535,6 +1560,10 @@ Semiconductor resistor model
Semiconductor capacitor model Semiconductor capacitor model
@item L
Inductor model
@item SW @item SW
Voltage controlled switch Voltage controlled switch
@ -1741,13 +1770,67 @@ in the direction of voltage drop).
@menu @menu
* General options and information::
* Elementary Devices:: * Elementary Devices::
* Voltage and Current Sources:: * Voltage and Current Sources::
* Transmission Lines:: * Transmission Lines::
* Transistors and Diodes:: * Transistors and Diodes::
@end menu @end menu
@node Elementary Devices, Voltage and Current Sources, Circuit Elements and Models, Circuit Elements and Models @node General options and information, Elementary Devices, Circuit Elements and Models, Circuit Elements and Models
@section General options and information
@menu
* Simulating more devices in parallel::
* Technology scaling::
* Model binning::
@end menu
@node Simulating more devices in parallel, Technology scaling, General options and information, General options and information
@subsection Simulating more devices in parallel
If you need to simulate more devices of the same kind in parallel, you
can use the @option{m} (often called parallel multiplier) option which
is available for all instances except transmission lines and sources
(both independent and controlled).
The parallel multiplier is implemented by multiplying by the value of
@option{m} the element's matrix stamp, thus it cannot be used to accurately
simulate larger devices in integrated circuits.
The netlist below show how to correclty use the parallel multiplier:
@example
Multiple devices
d1 2 0 mydiode m=10
d01 1 0 mydiode
d02 1 0 mydiode
d03 1 0 mydiode
d04 1 0 mydiode
d05 1 0 mydiode
d06 1 0 mydiode
d07 1 0 mydiode
d08 1 0 mydiode
d09 1 0 mydiode
d10 1 0 mydiode
...
@end example
The @code{d1} instance connected between nodes 2 and 0 is equivalent
to the parallel @code{d01-d10} connected between 1 and 0.
@node Technology scaling, Model binning, Simulating more devices in parallel, General options and information
@subsection Technology scaling
Still to be implemented and written.
@node Model Binning, Elementary Devices, Technology scaling, General options and information
@subsection Model binning
Still to be implemented and written.
@node Elementary Devices, General options and information, Circuit Elements and Models, Circuit Elements and Models
@section Elementary Devices @section Elementary Devices
@ -1789,35 +1872,24 @@ discrete and semiconductor resistors. Semiconductor resistors in ngspice
means: resistors described by geometrical parameters. So, do not expect means: resistors described by geometrical parameters. So, do not expect
detailed modeling of semiconductor effects. detailed modeling of semiconductor effects.
@option{n+} and @option{n-} are the two element nodes, @option{value} is the @option{n+} and @option{n-} are the two element nodes, @option{value} is
resistance (in ohms) and may be positive or negative but not zero. If you the resistance (in ohms) and may be positive or negative but not zero.
need to simulate very small resistors (0.001 Ohm or less) , you should use
CCVS (transresistance), it is less efficient but improves numerical @sc{Hint}: If you need to simulate very small resistors (0.001 Ohm or
accuracy (a small resistance is a large conductance). less), you should use CCVS (transresistance), it is less efficient but
improves overall numerical accuracy. Think about that a small resistance
is a large conductance.
Ngspice can assign a resistor instance a different value for AC analysis, Ngspice can assign a resistor instance a different value for AC analysis,
specified using the @option{ac} keyword. This value must not be zero as specified using the @option{ac} keyword. This value must not be zero as
described above. The AC resistance is used in AC analysis only (not Pole-Zero described above. The AC resistance is used in AC analysis only (not Pole-Zero
nor noise). If you do not specify the @option{ac} parameter, it is defaulted nor noise). If you do not specify the @option{ac} parameter, it is
to @option{value}. defaulted to @option{value}.
The @option{m} parameter is the "multiplication factor", and can be used to If you want to simulate temperature dependence of a resistor, you need
simulate "m" instances of the same kind in parallel. This parameter affects to specify its temperature coefficients, using a @command{.model} line,
all analyses. like in the example below:
The @option{scale} keyword let the designer choose a different scale for
elements. This option is not yet very useful, it will fully implemented in the
future to perform technology scaling. At present is here as a work in progress.
The operating temperature of instances can be changed using the @option{dtemp}
keyword. Ngspice simulates the circuit with all components at the same single
temperature (the circuit temperature). To adjust the temperature of a resistor
instance you can define its temperature difference from the rest of the
circuit using @option{dtemp}.
If you want to simulate temperature dependence of a resistor, you need to
specify its temperature coefficients, using a @command{.model} line, like in the
example below:
@example @example
RE1 1 2 700 std dtemp=5 RE1 1 2 700 std dtemp=5
@ -1855,8 +1927,8 @@ $$
@end example @end example
@end ifnottex @end ifnottex
If you are interested in temperature effects or noise equations, read the If you are interested in temperature effects or noise equations, read
following section on semiconductor resistors. the following section on semiconductor resistors.
@node Semiconductor Resistors, Semiconductor Resistor Model (R), Resistors, Elementary Devices @node Semiconductor Resistors, Semiconductor Resistor Model (R), Resistors, Elementary Devices
@subsection Semiconductor Resistors @subsection Semiconductor Resistors
@ -1877,18 +1949,18 @@ following section on semiconductor resistors.
@end example @end example
This is the more general form of the resistor presented before (@pxref{Resistors}) This is the more general form of the resistor presented before (@pxref{Resistors})
and allows the modeling of temperature effects and for the calculation of the and allows the modeling of temperature effects and for the calculation
actual resistance value from strictly geometric information and the of the actual resistance value from strictly geometric information and
specifications of the process. If @option{value} is specified, it overrides the specifications of the process. If @option{value} is specified, it
the geometric information and defines the resistance. If @option{mname} is overrides the geometric information and defines the resistance. If
specified, then the resistance may be calculated from the process information @option{mname} is specified, then the resistance may be calculated from
in the model @option{mname} and the given @option{length} and @option{width}. the process information in the model @option{mname} and the given @option{length}
If @option{value} is not specified, then @option{mname} and @option{length} and @option{width}. If @option{value} is not specified, then @option{mname}
must be specified. If @option{width} is not specified, then it is taken and @option{length} must be specified. If @option{width} is not specified,
from the default width given in the model. then it is taken from the default width given in the model.
The (optional) @option{temp} value is the temperature at which this device is The (optional) @option{temp} value is the temperature at which this device
to operate, and overrides the temperature specification on the is to operate, and overrides the temperature specification on the
@command{.option} control line and the value specified in @option{dtemp}. @command{.option} control line and the value specified in @option{dtemp}.
@ -1926,7 +1998,7 @@ corrected for temperature. The parameters available are:
The sheet resistance is used with the narrowing parameter and @option{l} The sheet resistance is used with the narrowing parameter and @option{l}
and @option{w} from the resistor device to determine the nominal resistance and @option{w} from the resistor device to determine the nominal resistance
by the formula by the formula:
@tex @tex
$$ $$
@ -1966,7 +2038,7 @@ where $R({\rm TNOM}) = R_{nom} \vert R_{acnom}$.
@end example @end example
@end ifnottex @end ifnottex
In the above formula, "T" represents the instance temperature, which can be In the above formula, `@math{T}' represents the instance temperature, which can be
explicitly using the @option{temp} keyword or os calculated using the explicitly using the @option{temp} keyword or os calculated using the
circuit temperature and @option{dtemp}, if present. circuit temperature and @option{dtemp}, if present.
@ -2066,20 +2138,6 @@ in a @command{.model} line, as in the example below:
Both capacitors have a capacitance of 3nF. Both capacitors have a capacitance of 3nF.
The @option{m} parameter is the "multiplication factor", and can be used to
simulate "m" instances of the same kind in parallel. This parameter affects
all analyses.
The @option{scale} keyword let the designer choose a different scale for
elements. This option is not yet very useful, it will fully implemented in the
future to perform technology scaling. At present is here as a work in progress.
The operating temperature of instances can be changed using the @option{dtemp}
keyword. Ngspice simulates the circuit with all components at the same single
temperature (the circuit temperature). To adjust the temperature of a capacitor
instance you can define its temperature difference from the rest of the
circuit using @option{dtemp}.
If you want to simulate temperature dependence of a capacitor, you need to If you want to simulate temperature dependence of a capacitor, you need to
specify its temperature coefficients, using a @command{.model} line, like in the specify its temperature coefficients, using a @command{.model} line, like in the
example below: example below:
@ -2305,11 +2363,10 @@ where $C({\rm TNOM}) = C_{nom}$.
@end example @end example
@end ifnottex @end ifnottex
In the above formula, "T" represents the instance temperature, which can be In the above formula, `@math{T}' represents the instance temperature, which can be
explicitly using the @option{temp} keyword or os calculated using the explicitly using the @option{temp} keyword or os calculated using the
circuit temperature and @option{dtemp}, if present. circuit temperature and @option{dtemp}, if present.
If both @option{temp} and @option{dtemp} are specified, the latter is ignored.
@node Inductors, Inductor model, Semiconductor Capacitor Model (C), Elementary Devices @node Inductors, Inductor model, Semiconductor Capacitor Model (C), Elementary Devices
@ -2330,12 +2387,12 @@ If both @option{temp} and @option{dtemp} are specified, the latter is ignored.
LSHUNT 23 51 10U IC=15.7MA LSHUNT 23 51 10U IC=15.7MA
@end example @end example
The inductor device implemented into ngspice has many enhancements over the The inductor device implemented into ngspice has many enhancements over
orginal one. @option{n+} and @option{n-} are the positive and negative element the orginal one. @option{n+} and @option{n-} are the positive and negative
nodes, respectively. @option{value} is the inductance in Henries. element nodes, respectively. @option{value} is the inductance in Henries.
Inductance can be specified in the instance line as in the examples above or Inductance can be specified in the instance line as in the examples above
in a @command{.model} line, as in the example below: or in a @command{.model} line, as in the example below:
@example @example
L1 15 5 indmod1 L1 15 5 indmod1
@ -2346,26 +2403,12 @@ in a @command{.model} line, as in the example below:
Both inductors have an inductance of 3nH. Both inductors have an inductance of 3nH.
The @option{m} parameter is the "multiplication factor", and can be used to The @option{nt} is used in conjunction with a @command{.model} line, and
simulate "m" instances of the same kind in parallel. This parameter affects is used to specify the number of turns of the inductor.
all analyses.
The @option{scale} keyword let the designer choose a different scale for If you want to simulate temperature dependence of an inductor, you need
elements. This option is not yet very useful, it will fully implemented in the to specify its temperature coefficients, using a @command{.model} line,
future to perform technology scaling. At present is here as a work in progress. like in the example below:
The @option{nt} is used in conjunction with a @command{.model} line, and is used
to specify the number of turns of the inductor.
The operating temperature of instances can be set using the @option{temp}
option. Ngspice simulates the circuit with all components at the same single
temperature (the circuit temperature). To adjust the temperature of an
inductor instance you can define its temperature difference from the rest of
the circuit using @option{dtemp}.
If you want to simulate temperature dependence of an inductor, you need to
specify its temperature coefficients, using a @command{.model} line, like in
the example below:
@example @example
Lload 1 2 1u ind1 dtemp=5 Lload 1 2 1u ind1 dtemp=5
@ -2374,9 +2417,10 @@ the example below:
@end example @end example
The (optional) initial condition is the initial (timezero) value of The (optional) initial condition is the initial (timezero) value of
inductor current (in Amps) that flows from @option{n+}, through the inductor, inductor current (in Amps) that flows from @option{n+}, through the
to @option{n-}. Note that the initial conditions (if any) apply only if the inductor, to @option{n-}. Note that the initial conditions (if any)
@option{UIC} option is specified on the @command{.tran} analysis line. apply only if the @option{UIC} option is specified on the @command{.tran}
analysis line.
Ngspice calculates the nominal inductance as described below: Ngspice calculates the nominal inductance as described below:
@ -2395,10 +2439,10 @@ $$
@node Inductor model, Coupled (Mutual) Inductors, Inductors, Elementary Devices @node Inductor model, Coupled (Mutual) Inductors, Inductors, Elementary Devices
@subsection Inductor model @subsection Inductor model
The inductor model contains physical and geometrical information that may be used to The inductor model contains physical and geometrical information that
compute the inductance in some special cases (solenoid, toroid) In the present may be used to compute the inductance of some common topologies like
form is not very useful, but may be extended in the future to accomodate solenoids and toroids, wound in air or other material with constant
silicon integrated inductors, an emerging technology. magnetic permeability.
@multitable @columnfractions .15 .4 .2 .1 .1 @multitable @columnfractions .15 .4 .2 .1 .1
@item name @tab parameter @tab units @tab default @tab example @item name @tab parameter @tab units @tab default @tab example
@ -2448,10 +2492,10 @@ $$
@end example @end example
@end ifnottex @end ifnottex
If neither @option{value} nor @option{IND} are specified, then geometrical and If neither @option{value} nor @option{IND} are specified, then geometrical
physical parameters are take into account. In the following formulas @option{NT} and physical parameters are take into account. In the following formulas
refers to both instance and model parameter (instance parameter overrides model @option{NT} refers to both instance and model parameter (instance parameter
parameter): overrides model parameter):
If @option{LENGTH} is not zero: If @option{LENGTH} is not zero:
@ -2515,12 +2559,9 @@ where $L({\rm TNOM}) = L_{nom}$.
@end example @end example
@end ifnottex @end ifnottex
In the above formula, "T" represents the instance temperature, which can be In the above formula, `@math{T}' represents the instance temperature,
explicitly using the @option{temp} keyword or os calculated using the which can be explicitly using the @option{temp} keyword or calculated
circuit temperature and @option{dtemp}, if present. using the circuit temperature and @option{dtemp}, if present.
If both @option{temp} and @option{dtemp} are specified, the latter is ignored.
@node Coupled (Mutual) Inductors, Switches, Inductor model, Elementary Devices @node Coupled (Mutual) Inductors, Switches, Inductor model, Elementary Devices
@ -3482,6 +3523,7 @@ conditions.
@menu @menu
* Junction Diodes:: * Junction Diodes::
* Diode Model (D):: * Diode Model (D)::
* Diode Equations::
* Bipolar Junction Transistors (BJTs):: * Bipolar Junction Transistors (BJTs)::
* BJT Models (NPN/PNP):: * BJT Models (NPN/PNP)::
* Junction Field-Effect Transistors (JFETs):: * Junction Field-Effect Transistors (JFETs)::
@ -3500,7 +3542,8 @@ conditions.
General form: General form:
@example @example
DXXXXXXX N+ N- MNAME <AREA> <OFF> <IC=VD> <TEMP=T> DXXXXXXX n+ n- mname <area=val> <pj=val> <off> <ic=vd> <temp=val>
+ <dtemp=val>
@end example @end example
@ -3512,59 +3555,317 @@ conditions.
@end example @end example
The pn junction (diode) implemented in NGSPICE expands the original
spice's implementation. Perimetral effects and high injection level
have been introduced into the original model and temperature dependence
of some parameters has beed added.
N+ and N- are the positive and negative nodes, respectively. MNAME is @option{n+} and @option{n-} are the positive and negative nodes, respectively.
the model name, AREA is the area factor, and OFF indicates an (optional) @option{mname} is the model name, @option{area} is the area factor, @option{pj}
starting condition on the device for dc analysis. If the area factor is is the perimeter factor, and @option{off} indicates an (optional)starting
omitted, a value of 1.0 is assumed. The (optional) initial condition condition on the device for dc analysis. If the area factor is omitted,
specification using IC=VD is intended for use with the UIC option on the a value of 1.0 is assumed. The (optional) initial condition specification
.TRAN control line, when a transient analysis is desired starting from using @option{ic} is intended for use with the @option{uic} option on
other than the quiescent operating point. The (optional) TEMP value is the @code{.tran} control line, when a transient analysis is desired starting
from other than the quiescent operating point. You should supply the inital
voltage across the diode there. The (optional) @option{temp} value is
the temperature at which this device is to operate, and overrides the the temperature at which this device is to operate, and overrides the
temperature specification on the .OPTION control line. temperature specification on the @code{.option} control line. As always,
instance temperature can be specified as an offset to the circuit
temperature with the @option{dtemp} option.
@node Diode Model (D), Diode Equations, Junction Diodes, Transistors and Diodes
@node Diode Model (D), Bipolar Junction Transistors (BJTs), Junction Diodes, Transistors and Diodes
@subsection Diode Model (D) @subsection Diode Model (D)
The dc characteristics of the diode are determined by the parameters IS The dc characteristics of the diode are determined by the parameters
and N. An ohmic resistance, RS, is included. Charge storage effects @option{IS} and @option{N}. An ohmic resistance, @option{RS}, is
are modeled by a transit time, TT, and a nonlinear depletion layer included. Charge storage effects are modeled by a transit time,
capacitance which is determined by the parameters CJO, VJ, and M. The @option{TT}, and a nonlinear depletion layer capacitance which is
temperature dependence of the saturation current is defined by the determined by the parameters @option{CJO}, @option{VJ}, and @option{M}.
parameters EG, the energy and XTI, the saturation current temperature The temperature dependence of the saturation current is defined by the
exponent. The nominal temperature at which these parameters were parameters @option{EG}, the energy and @option{XTI}, the saturation
measured is TNOM, which defaults to the circuit-wide value specified on current temperature exponent. The nominal temperature at which these
the .OPTIONS control line. Reverse breakdown is modeled by an parameters were measured is @option{TNOM}, which defaults to the
exponential increase in the reverse diode current and is determined by circuit-wide value specified on the @code{.options} control line.
the parameters BV and IBV (both of which are positive numbers). Reverse breakdown is modeled by an exponential increase in the
reverse diode current and is determined by the parameters @option{BV}
and @option{IBV} (both of which are positive numbers).
@multitable @columnfractions .1 .45 .15 .15 .15 .1 @sc{Junction DC parameters}
@item name @tab parameter @tab units @tab default @tab example @tab area @multitable @columnfractions .10 .40 .1 .15 .15 .10
@item IS @tab saturation current @tab A @tab 1.0e-14 @tab 1.0e-14 @tab * @item name @tab parameter @tab units @tab default @tab example @tab scale factor
@item RS @tab ohmic resistance @tab Z @tab 0 @tab 10 @tab * @item BV @tab reverse breakdown voltage @tab V @tab infinite @tab 40.0
@item N @tab emission coefficient @tab - @tab 1 @tab 1.0 @item IBV @tab current at breakdown voltage @tab A @tab 1.0e-3 @tab 1.0e-4
@item TT @tab transit-time @tab sec @tab 0 @tab 0.1ns @item IK (IKF) @tab forward knee current @tab A @tab 1.0e-3 @tab 1.0e-6
@item CJO @tab zero-bias junction capacitance @item IK @tab reverse knee current @tab A @tab 1.0e-3 @tab 1.0e-6
@tab F @tab 0 @tab 2pF @tab * @item IS (JS) @tab saturation current @tab A @tab 1.0e-14 @tab 1.0e-16 @tab area
@item VJ @tab junction potential @tab V @tab 1 @tab 0.6 @item JSW @tab Sidewall saturation current @tab A @tab 1.0e-14 @tab 1.0e-15 @tab perim.
@item M @tab grading coefficient @tab - @tab 0.5 @tab 0.5 @item N @tab emission coefficient @tab - @tab 1 @tab 1.5
@item EG @tab activation energy @item RS @tab ohmic resistance @tab Ohm @tab 0 @tab 100 @tab 1/area
@tab eV @tab 1.11 @tab 1.11 Si; 0.69 Sbd; 0.67 Ge
@item XTI @tab saturation-current temp. exp
@tab - @tab 3.0 @tab 3.0 jn; 2.0 Sbd
@item KF @tab flicker noise coefficient @tab - @tab 0
@item AF @tab flicker noise exponent @tab - @tab 1
@item FC @tab coefficient for forward-bias
@tab - @tab 0.5 @tab depletion capacitance formula
@item BV @tab reverse breakdown voltage @tab V @tab infinite @tab 40.0
@item IBV @tab current at breakdown voltage @tab A @tab 1.0e-3
@item TNOM @tab parameter measurement temperature @tab C @tab 27 @tab 50
@end multitable @end multitable
@sc{Junction capacitance paramters}
@multitable @columnfractions .10 .40 .1 .15 .15 .10
@item name @tab parameter @tab units @tab default @tab example @tab scale factor
@item CJO (CJ0) @tab zero-bias junction bottowall capacitance @tab F @tab 0.0 @tab 2pF @tab area
@item CJP (CJSW) @tab zero-bias junction sidewall capacitance @tab F @tab 0.0 @tab .1pF @tab perim.
@item FC @tab coefficient for forward-bias depletion bottomwall capacitance formula
@tab - @tab 0.5 @tab -
@item FCS @tab coefficient for forward-bias depletion sidewall capacitance formula
@tab - @tab 0.5 @tab -
@item M (MJ) @tab Area junction grading coefficient @tab - @tab 0.5 @tab 0.5
@item MJSW @tab Periphery junction grading coefficient @tab - @tab 0.33 @tab 0.5
@item VJ @tab junction potential @tab V @tab 1 @tab 0.6
@item PHP @tab Periphery junction potential @tab V @tab 1 @tab 0.6
@item TT @tab transit-time @tab sec @tab 0 @tab 0.1ns
@end multitable
@sc{Temperature effects}
@multitable @columnfractions .10 .40 .1 .15 .15 .10
@item name @tab parameter @tab units @tab default @tab example @tab scale factor
@item EG @tab activation energy @tab eV @tab 1.11 @tab 1.11 Si
@item @tab @tab @tab @tab 0.69 Sbd
@item @tab @tab @tab @tab 0.67 Ge
@item TM1 @tab 1st order tempco for MJ @tab 1/°C @tab 0.0 @tab -
@item TM2 @tab 2nd order tempco for MJ @tab 1/°C^2 @tab 0.0 @tab -
@item TNOM @tab parameter measurement temperature @tab C @tab 27 @tab 50
@item TRS @tab 1st order tempco for RS @tab 1/°C^2 @tab 0.0 @tab -
@item TTT1 @tab 1st order tempco for TT @tab 1/°C @tab 0.0 @tab -
@item TTT2 @tab 2nd order tempco for TT @tab 1/°C^2 @tab 0.0 @tab -
@item XTI @tab saturation-current temp. exp @tab - @tab 3.0 @tab 3.0 pn
@item @tab @tab @tab @tab 2.0 Sbd
@end multitable
@sc{Noise modeling}
@multitable @columnfractions .10 .40 .1 .15 .15 .10
@item name @tab parameter @tab units @tab default @tab example @tab scale factor
@item KF @tab flicker noise coefficient @tab - @tab 0
@item AF @tab flicker noise exponent @tab - @tab 1
@end multitable
@node Diode Equations, Bipolar Junction Transistors (BJTs), Diode Model (D), Transistors and Diodes
@subsection Diode Equations
The junction diode is the the basic semiconductor device and the simplest
one modeled in NGSPICE, but it's model is quite complex, even if not
all the physical phenomena affecting a pn junction are modeled. The diode
is modeled in three different regions:
@itemize @bullet
@item
Forward bias: the anode is more positive than the cathode, the
diode is "on" and can conduct large currents. To avoid convergence
problems and unrealistic high current, it is better to specify a
series resistance to limit current with @option{RS} model parameter.
@item
Reverse bias: the cathode is more positive than the anode and
the diode is "off". A reverse biase diode conducts a small leakage
current.
@item
Brakdown: the breakdown region is modeled only if the @option{BV}
model parameter is given. When a diode enters breakdown the current
increase expoentially (remember to limit it). @option{BV} is a
positive value.
@end itemize
@sc{Parameters Scaling}
Model parameters are scaled using the unitless parameters @option{AREA}
and @option{PJ} and the multiplier @option{M} as depicted below:
@tex
$$AREA_{eff} = {\rm AREA}\cdot{\rm M} $$
$$PJ_{eff} = {\rm PJ}\cdot{\rm M} $$
$$IS_{eff} = {\rm IS} \cdot AREA_{eff} + {\rm JSW} * PJ_{eff} $$
$$IBV_{eff} = {\rm IBV}\cdot AREA_{eff}$$
$$IK_{eff} = {\rm IK}\cdot AREA_{eff} $$
$$IKR_{eff} = {\rm IKR}\cdot AREA_{eff} $$
$$CJ_{eff} = {\rm CJ0}\cdot AREA_{eff} $$
$$CJP_{eff} = {\rm CJP}\cdot PJ_{eff} $$
@end tex
@ifnottex
@example
AREAeff = AREA * M
PJeff = PJ * M
ISeff = IS * AREAeff + JSW * PJeff
IKeff = IK * AREAeff
IKReff = IKR * AREAeff
CJeff = CJ0 * AREAeff
CJPeff = CJP * PJeff
@end example
@end ifnottex
@sc{Diode DC, Transient and AC model equations}
@tex
$$
I_D= \cases{IS_{eff} ( e^{q V_D \over N k T} - 1) + V_D * GMIN, &if $V_D \geq -3{NkT \over q}$\cr
-IS_{eff} [1 + ({3NkT \over q V_D e })^3] + V_D * GMIN , &if $-BV_{eff}<V_D<-3{NkT \over q}$\cr
-IS_{eff} ( e^{-q (BV_{eff} + V_D) \over N k T}) + V_D * GMIN, &if $V_D \leq -BV_{eff}$ \cr}
$$
@end tex
@ifnottex
@example
To be written!
@end example
@end ifnottex
The breakdown region must be described with more depth since the breakdown
is not modeled in physically. As written before, the breakdown modeling
is based on two model parameters: the "nominal breakdown voltage" @option{BV}
and the current at the onset of breakdown @option{IBV}. For the diode
model to be consistent, the current value cannot be arbitrary choosen,
since the reverse bias and breakdown regions must match.
When the diode enters breakdown region from reverse bias, the current
is calculated using the formula:
@tex
$$
I_{bdwn} = -IS_{eff} ( e^{-q {\rm BV} \over N k T} - 1)
$$
@end tex
@ifnottex
@example
To be written!
@end example
@end ifnottex
@sc{Note:} if you look at the code in @file{diotemp.c} you will discover
that the exponential relation is replaced with a first order taylor
series expansion.
The computed current is necessary to adjust the breakdown voltage
making the two regions match. The algorithm is a little bit convoluted
and only a brief description is given here:
@tex
if $IBV_{eff} < I_{bdwn}$ then
$$ IBV_{eff} = I_{bdwn} $$
$$BV_{eff} = {\rm BV} $$
else
$$BV_{eff} = {\rm BV} - {\rm N} V_t \ln({ IBV_{eff} \over I_{bdwn}}) $$
@end tex
@ifnottex
@example
IF IBVeff < Ibdwm THEN
IBVeff = Ibwn
BVeff = BV
ELSE
BVeff = BV - N * Vt * LN(IBVeff/Ibdvn)
END IF
@end example
@end ifnottex
Most real diodes shows a current increase that, at high current levels,
does not follow the exponential relationship given above. This behavior
is due to high level of carriers injected into the junction. High
injection effects (as they are called) are modeled with @option{IK} and
@option{IKR}.
@tex
$$
I_{Deff} = \cases{ {{I_D} \over {1 + \sqrt{I_D \over IK_{eff} }}}, &if $V_D \geq -3{NkT \over q}$\cr
{{I_D} \over {1 + \sqrt{I_D \over IKR_{eff} }}}, &otherwise.\cr}
$$
@end tex
@ifnottex
@example
Not yet written!
@end example
@end ifnottex
Diode capacitance is divided into two different terms:
@itemize @bullet
@item Depletion capacitance
@item Diffusion capacitance
@end itemize
Depletion capacitance is composed by two different contributes, one
associated to the bottom of the junction (bottowall depletion capacitance)
and the other to the periphery (sidewall depletion capacitance).
The basic equations are:
@tex
$$
C_{Diode} = C_{diffusion} + C_{depletion}
$$
@end tex
@ifnottex
@example
Cdiode = Cdiffusion + Cdepletion
@end example
@end ifnottex
Where the depletion capacitance i defined as:
@tex
$$
C_{depletion} = C_{depl_{bw}} + C_{depl_{sw}}
$$
@end tex
@ifnottex
@example
Cdepletion = CdeplBW + CdeplSW
@end example
@end ifnottex
The diffusion capacitance, due to the injected minority carriers is
modeled with the transit time @option{TT}:
@tex
$$
C_{diffusion} = {\rm TT}{{\partial I_{Deff}} \over {\partial V_{D}}}
$$
@end tex
@ifnottex
@example
dIDeff
Cdiffusion = ----- * TT
dVd
@end example
@end ifnottex
The depletion capacitance is more complex to model, since the function
used to approximate it diverges vhen the diode voltage become greater
than the junction built-in potential. To avoid function divergence, the
capacitance function is approximated with a linear extrapolation for
applied voltage greater than a fraction of the junction built-in potential.
@tex
$$
C_{depl_{bw}} = \cases{ CJ_{eff}\cdot(1-{V_D \over {\rm VJ}})^{-{\rm MJ}}, &if $V_D < {\rm FC}\cdot{\rm VJ}$\cr
CJ_{eff}\cdot{{1 - {\rm FC}\cdot(1 + {\rm MJ}I) + {\rm MJ}\cdot{V_D \over {\rm VJ}}}\over{(1-{\rm FC})^{(1 +{\rm MJ})}}} , &otherwise.\cr}
$$
$$
C_{depl_{sw}} = \cases{ CJP_{eff}\cdot(1-{V_D \over {\rm PHP}})^{-{\rm MJSW}}, &if $V_D < {\rm FCS}\cdot{\rm PHP}$\cr
CJP_{eff}\cdot{{1 - {\rm FCS}\cdot(1 + {\rm MJSW}) + {\rm MJSW}\cdot{V_D \over {\rm PHP}}}\over{(1-{\rm FCS})^{(1 +{\rm MJSW})}}} , &otherwise.\cr}
$$
@end tex
@ifnottex
@example
Not yet written!
@end example
@end ifnottex