# Diode

Piecewise or exponential diode

**Library:**Simscape / Electrical / Semiconductors & Converters

## Description

The Diode block can represent either a piecewise linear diode, an exponential diode, or a diode with tabulated I-V curve.

### Piecewise Linear Diode

The piecewise linear diode model is the same model as the **
Simscape™
** > **Foundation Library** > **Electrical** > **Electrical Elements** > **Diode** block, with the addition of a fixed junction capacitance and optional charge
dynamics. If the diode forward voltage exceeds the value specified in the **Forward
voltage** parameter, the diode behaves as a linear resistor with the resistance
specified in the **On resistance** parameter. Otherwise, the diode behaves as a
linear resistor with the small conductance specified in the **Off conductance**
parameter. Zero voltage across the diode results in zero current flowing.

### Exponential Diode

The exponential diode model represents the following relationship between the diode current
*I* and the diode voltage *V*:

$$\begin{array}{l}I=IS\cdot \left({e}^{\frac{qV}{Nk{T}_{m1}}}-1\right)\text{}\text{}\text{}V>-BV\\ I=-IS\cdot \left({e}^{\frac{-q(V+Vz)}{k{T}_{m1}}}-{e}^{\frac{qV}{Nk{T}_{m1}}}\right)\text{}\text{}V\le -BV\end{array}$$

where:

*q*is the elementary charge on an electron (1.602176e–19 coulombs).*k*is the Boltzmann constant (1.3806503e–23 J/K).*BV*is the**Reverse breakdown voltage**parameter value.*N*is the emission coefficient.*IS*is the saturation current.*T*is the temperature at which the diode parameters are specified, as defined by the_{m1}**Measurement temperature**parameter value.

When (*q**V* /
*N**k**T _{m1}*) >
80, the block replaces $${e}^{\frac{qV}{Nk{T}_{m1}}}$$ with (

*q*

*V*/

*N*

*k*

*T*– 79)e

_{m1 }^{80}, which matches the gradient of the diode current at (

*q*

*V*/

*N*

*k*

*T*) = 80 and extrapolates linearly. When (

_{m1}*q*

*V*/

*N*

*k*

*T*) < –79, the block replaces $${e}^{\frac{qV}{Nk{T}_{m1}}}$$ with (

_{m1}*q*

*V*/

*N*

*k*

*T*+ 80)e

_{m1 }^{–79}, which also matches the gradient and extrapolates linearly. Typical electrical circuits do not reach these extreme values. The block provides this linear extrapolation to help convergence when solving for the constraints during simulation.

When you select `Use parameters IS and N`

for the
**Parameterization** parameter, you specify the diode in terms of the
**Saturation current IS** and **Emission coefficient N**
parameters. When you select `Use two I-V curve data points`

for the
**Parameterization** parameter, you specify two voltage and current
measurement points on the diode I-V curve and the block derives the *IS* and
*N* values. The block then calculates *IS* and
*N* as follows:

$$\text{N}=(({V}_{1}-{V}_{2})/{V}_{t})/(\mathrm{log}({I}_{1})-\mathrm{log}({I}_{2}))$$

$$\text{IS}=\left({I}_{1}/(\mathrm{exp}({V}_{1}/(\text{N}{V}_{t}))-1)+{I}_{2}/(\mathrm{exp}({V}_{2}/(\text{N}{V}_{t}))-1)\right)/2$$

where:

*V*=_{t}*k**T*/_{m1}*q*.*V*and_{1}*V*are the values in the_{2}**Voltages [V1 V2]**vector.*I*and_{1}*I*are the values in the_{2}**Currents [I1 I2]**vector.

When you select `Use an I-V data point and IS`

for the
**Parameterization** parameter, then the block calculates *N*
as follows:

$$N={V}_{1}/\left({V}_{t}\mathrm{log}\left(\frac{{I}_{1}}{IS}+1\right)\right)$$

When you select `Use an I-V data point and N`

for the
**Parameterization** parameter, then the block calculates
*IS* as follows:

$$IS={I}_{1}/\left(\mathrm{exp}\left({V}_{1}/\left(N{V}_{t}\right)-1\right)\right)$$

### Tabulated Diode

To model a tabulated diode, set the **Diode model** parameter to
`Tabulated I-V curve`

. This figure shows the implementation of the
tabulated diode option:

When choosing this parameterization, you must provide the data for the forward bias only.
If the diode is reverse biased, it is modeled as a constant off-state conductance specified in
the **Off conductance** parameter instead. The value of the **Off
conductance** must be less than the gradient of the forward I-V curve for small
positive voltages.

The block implements the diode using a smooth interpolation option. If the diode exceeds the provided tabulated data range, the block uses a linear extrapolation technique at the last voltage-current data point.

**Note**

The tabulated diode does not model the reverse breakdown.

### Junction Capacitance

The block provides the option to include a junction capacitance:

When you select

`Include fixed or zero junction capacitance`

for the**Parameterization**parameter, the capacitance is fixed.When you select

`Use parameters CJO, VJ, M & FC`

for the**Parameterization**parameter, the block uses the coefficients*CJO*,*VJ*,*M*, and*FC*to calculate a junction capacitance that depends on the junction voltage.When you select

`Use C-V curve data points`

for the**Parameterization**parameter, the block uses three capacitance values on the C-V capacitance curve to estimate*CJO*,*VJ*, and*M*and uses these values with the specified value of*FC*to calculate a junction capacitance that depends on the junction voltage. The block calculates*CJO*,*VJ*, and*M*as follows:$$CJ0={C}_{1}{(({V}_{R2}-{V}_{R1})/({V}_{R2}-{V}_{R1}{({C}_{2}/{C}_{1})}^{-1/M}))}^{M}$$

$$VJ=-(-{V}_{R2}{({C}_{1}/{C}_{2})}^{-1/M}+{V}_{R1})/(1-{({C}_{1}/{C}_{2})}^{-1/M})$$

$$M=\mathrm{log}({C}_{3}/{C}_{2})/\mathrm{log}({V}_{R2}/{V}_{R3})$$

where:

*V*,_{R1}*V*, and_{R2}*V*are the values in the_{R3}**Reverse bias voltages [VR1 VR2 VR3]**vector.*C*,_{1}*C*, and_{2}*C*are the values in the_{3}**Corresponding capacitances [C1 C2 C3]**vector.

The reverse bias voltages (defined as positive values) should satisfy

*V*>_{R3}*V*>_{R2}*V*. This means that the capacitances should satisfy_{R1}*C*>_{1}*C*>_{2}*C*as reverse bias widens the depletion region and hence reduces capacitance. Violating these inequalities results in an error. Voltages_{3}*V*and_{R2}*V*should be well away from the Junction potential_{R3}*VJ*. Voltage*V*should be less than the Junction potential_{R1}*VJ*, with a typical value for*V*being 0.1 V._{R1}

The voltage-dependent junction capacitance is defined in terms of the capacitor charge
storage *Q _{j}* as:

For

*V*<*FC*·*VJ*:$${Q}_{j}=CJ0\cdot (VJ/(M-1))\cdot ({(1-V/VJ)}^{1-M}-1)$$

For

*V*≥*FC*·*VJ*:$${Q}_{j}=CJ0\cdot {F}_{1}+(CJ0/{F}_{2})\cdot ({F}_{3}\cdot (V-FC\cdot VJ)+0.5(M/VJ)\cdot ({V}^{2}-{(FC\cdot VJ)}^{2}))$$

where:

$${F}_{1}=(VJ/(1-M))\cdot (1-{(1-FC)}^{1-M}))$$

$${F}_{2}={(1-FC)}^{1+M}))$$

$${F}_{3}=1-FC\cdot (1+M)$$

These equations are the same as used in [2], except that the
temperature dependence of *VJ* and *FC* is not modeled.

### Charge Dynamics

For applications such as commutation diodes it can be important to model diode charge dynamics. When a forward-biased diode has a reverse voltage applied across it, it takes time for the charge to dissipate and hence for the diode to turn off. The time taken for the diode to turn off is captured primarily by the transit time parameter. Once the diode is off, any remaining charge then dissipates, the rate at which this happens being determined by the carrier lifetime.

The Diode block uses the model of Lauritzen and Ma [3] to capture these effects. These are the defining equations.

$i=\frac{{q}_{E}-{q}_{M}}{{T}_{M}}$ | (1) |

$\frac{d{q}_{M}}{dt}+\frac{{q}_{M}}{\tau}-\frac{{q}_{E}-{q}_{M}}{{T}_{M}}=0$ | (2) |

$${q}_{E}=\left(\tau +{T}_{M}\right)i$$ | (3) |

*i*is the diode current.*q*is the junction charge._{E}*q*is the total stored charge._{M}*T*is the transit time._{M}*τ*is the carrier lifetime.*v*is the voltage across the diode._{D}*v*is the diode forward voltage._{F}*R*is the diode on resistance.*G*is the diode off conductance.

This graphic shows a typical reverse-mode current characteristic for a diode device.

where:

*i*is the peak reverse current._{RM}*i*is the starting forward current when measuring_{F}*i*._{RM}*a*is the rate of change of current when measuring*i*._{RM}*t*is the reverse recovery time._{rr}

Data sheets for diodes quote values for peak reverse current for an initial forward current and a steady rate of change of current. The data sheet might also provide values for reverse recovery time and total recovery charge.

**How the Block Calculates**

*T*and Tau_{M}The block calculates transit time *T _{M}* and carrier
lifetime

*τ*based on the values you enter for the

**Charge Dynamics**parameters. The block uses

*T*and

_{M}*τ*to solve the charge dynamics equations 1, 2, and 3.

During initial current drop in reverse mode, the diode is still on, and the rate of change of current is determined by an external test circuit.

First, the block uses equation 1 to perform this calculation.

${i}_{F}+at=\frac{{q}_{E}-{q}_{M}}{{T}_{M}}$ | (4) |

Then, it substitutes equation 4 into equation 2.

$\frac{d{q}_{M}}{dt}+\frac{{q}_{M}}{\tau}={i}_{F}+at$ | (5) |

Then, it solves equation 5 for *q _{M}*,

${q}_{M}={i}_{F}\tau -a{\tau}^{2}+\frac{k}{\mathrm{exp}\left(\frac{t}{\tau}\right)}+a\tau t,$ | (6) |

*k*is a constant.

When *t* is zero, *i* =
*i _{F}* and

*q*=

_{M}*τi*because the system is in steady state.

_{F}Substituting these relationships into equation 6 and solving the equation gives
*k* = *aτ ^{2}*.

Therefore,

${q}_{M}={i}_{F}\tau +a{\tau}^{2}\left(\frac{1}{\mathrm{exp}\left(\frac{t}{\tau}\right)}-1\right)+a\tau t.$ | (7) |

*t*=

*t*, the current is

_{s}*i*and the junction charge

_{RM}*q*is zero.

_{E}The block substitutes these values into equation 1.

${i}_{RM}=\frac{-{q}_{M}}{{T}_{M}}$ | (8) |

*q*and substitutes the result into equation 7.

_{M}$-{T}_{M}{i}_{RM}={i}_{F}\tau +a{\tau}^{2}\left(\frac{1}{\mathrm{exp}\left(\frac{{t}_{s}}{\tau}\right)}-1\right)+a\tau {t}_{s}$ | (9) |

Then, the block expresses time *t _{s}* in terms of

*i*,

_{RM}*i*, and

_{F}*a*.

${t}_{s}=\frac{{i}_{RM}-{i}_{F}}{a}$ | (10) |

Consider the diode recovery, that is, when *t* >
*t _{s}*. The diode is reverse biased, and current and
junction charge are effectively zero.

The current is defined by this equation.

$i={i}_{RM}\text{exp[}\frac{-(t-{t}_{s})}{{\tau}_{rr}}],$ | (11) |

where:

$\frac{1}{{\tau}_{rr}}=\frac{1}{\tau}+\frac{1}{{T}_{M}}.$ | (12) |

The block now relates the expression in equation 12 to the reverse recovery time
*t _{rr}*.

When $t=\frac{{i}_{RM}}{a}+{t}_{rr},$ the current is $\frac{{i}_{RM}}{10}.$

Therefore,

$\mathrm{exp}\left(-\frac{t-{t}_{s}}{{\tau}_{rr}}\right)=0.1$ | (13) |

${t}_{rr}={\tau}_{rr}\mathrm{log}\left(10\right)+\frac{{i}_{RM}}{a}.$ | (14) |

The block uses equations 9 and 14 to calculate values for
*T _{M}* and

*τ*. The calculation uses an iterative scheme because of the exponential term in Equation 9.

**Alternatives to Specifying**

*t*Directly_{rr}In addition to allowing you to specify reverse recovery time
*t _{rr}* directly, the block supports three alternative
parameterizations. The block can derive

*t*from either of these parameters:

_{rr}Reverse recovery time stretch factor

*λ*Reverse recovery charge

*Q*, when the data sheet specifies this value instead of the reverse recovery time._{rr}Reverse recovery energy

*E*, when the data sheet specifies this value instead of the reverse recovery time._{rec}

The relationship between reverse recovery time stretch factor *λ* and
*t _{rr}* is expressed by the equation

$\lambda =\frac{{t}_{rr}a}{{i}_{RM}}.$

Reverse recovery time must be greater than $\frac{{i}_{RM}}{a}$ and a typical value is $$3(\frac{{i}_{RM}}{a}).$$

Therefore, a typical value for *λ* is 3. *λ* must be
greater than 1.

Reverse recovery charge *Q _{rr}* is the integral over
time of the reverse current from the point where the current goes negative until it decays back
to zero.

The initial charge, to time t_{s} (as shown in the figure), is
expressed by this equation:

$${Q}_{s}=\frac{1}{2}\left(-{i}_{RM}\right)\frac{{i}_{RM}}{a}.$$ | (15) |

Integrating equation 11 gives the charge between times t_{s} and inf.
This charge is equal to

${\tau}_{rr}{i}_{RM}.$

Therefore, total reverse recovery charge is given by this equation:

${Q}_{rr}=-\frac{{i}_{RM}^{2}}{2a}+{\tau}_{rr}{i}_{RM}.$ | (16) |

Rearranging equation 16 to solve for *τ _{rr}* and
substituting the result into equation 14 gives an equation that expresses

*t*in terms of

_{rr}*Q*:

_{rr}${t}_{rr}=\left(\frac{{Q}_{rr}}{{i}_{RM}}+\frac{{i}_{RM}}{2a}\right)\mathrm{log}\left(10\right)+\frac{{i}_{RM}}{a}.$

Alternatively, the block calculates *τ _{rr}* by using
the reverse recovery energy,

*E*. This equation defines the diode voltage curve:

_{rec}${v}_{d}={v}_{R}-\left({v}_{R}-{v}_{RM}\right)\mathrm{exp}\left(-\left(t-{t}_{1}\right)/{\tau}_{rr}\right),$ | (17) |

If $\frac{L}{{\tau}_{rr}}\gg R$, which is a common condition for the reverse recovery test circuit, the block calculates the maximum diode reverse voltage as:

${v}_{RM}={v}_{R}+{i}_{RM}\frac{L}{{\tau}_{rr}}.$

Since the drop time value is small, the block assumes that the diode current drop is linear:

${i}_{F}+didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}\text{t}\text{\hspace{0.17em}}\text{=}\text{\hspace{0.17em}}\frac{{q}_{E}-{q}_{M}}{{T}_{M}}.$ | (18) |

Then, it substitutes equation 18 into equation 5:

$\frac{d{q}_{M}}{d}+\frac{{q}_{M}}{\tau}={i}_{F}+didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}t.$ | (19) |

To obtain the total stored charge, it solves equation 19 :

${q}_{M}={i}_{F}\tau +didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}{\tau}^{2}\left(\frac{1}{\mathrm{exp}\left(\frac{t}{\tau}\right)}-1\right)+didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}\tau t,$ | (20) |

*didt*is the gradient of the current.

When $t={t}_{1}=\frac{{i}_{RM}-{i}_{F}}{didt}$, the peak reverse current is:

${i}_{RM}=\frac{-{q}_{M}}{{T}_{M}}.$ | (21) |

The block now substitutes equation 21 into equation 20:

$$\begin{array}{l}-{i}_{RM}{T}_{M}={i}_{F}\tau +\text{\hspace{0.17em}}didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}{\tau}^{2}\left(\mathrm{exp}\left(-\frac{{i}_{RM}-{i}_{F}}{didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}\tau}\right)-1\right)+\tau \left({i}_{RM}-{i}_{F}\right)\\ -\left({T}_{M}+\tau \right){i}_{RM}=didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}{\tau}^{2}\left(\mathrm{exp}\left(-\frac{{i}_{RM}-{i}_{F}}{didt\text{\hspace{0.17em}}\xb7\text{\hspace{0.17em}}\tau}\right)-1\right)\\ {i}_{RM}=F\left(didt,{i}_{F},{T}_{M},\tau \right).\end{array}$$ | (22) |

Finally, the block solves equation 22 to obtain the reverse recovery energy:

$$\begin{array}{l}{E}_{rec}={\displaystyle {\int}_{{t}_{1}}^{{t}_{2}}{i}_{d}{v}_{d}dt}\\ {E}_{rec}=\frac{{\tau}_{rr}{i}_{RM}\left({v}_{R}+{v}_{RM}\right)}{2}\\ {E}_{rec}=\frac{{i}_{RM}\left(2{v}_{R}{\tau}_{rr}+{i}_{RM}L\right)}{2}.\end{array}$$ | (23) |

**Charge dynamics with faults**

When the device is faulted, the Diode block calculates the junction charge as

$${q}_{E}=\left(\tau +{T}_{M}\right){i}_{diode},$$

where:

*i*is the diode current without the charge model._{diode}*q*is the junction charge._{E}*T*is the transit time._{M}*τ*is the carrier lifetime.

This equation then defines the value of the diode current:

$$\begin{array}{l}\frac{d{q}_{M}}{dt}+\frac{{q}_{M}}{\tau}-\frac{{q}_{E}-{q}_{M}}{{T}_{M}}=0\\ i=\frac{{q}_{E}-{q}_{M}}{{T}_{M}}{Q}_{scale}-\left({Q}_{scale}-1\right){i}_{diode}\end{array}$$

where:

*i*is the diode current.*q*is the total stored charge._{M}*Q*is the current value of the charge ratio._{scale}

### Temperature Dependence

The default behavior for the Diode block is that dependence on temperature is not modeled, and the device is simulated at the temperature for which you provide block parameters. The exponential diode model contains several options for modeling the dependence of the diode current-voltage relationship on temperature during simulation. Temperature dependence of the junction capacitance is not modeled because it has a much smaller effect.

When including temperature dependence, the diode defining equation remains the same. The
measurement temperature value, *T _{m1}*, is replaced with
the simulation temperature,

*T*. The saturation current,

_{s}*IS*, becomes a function of temperature according to the following equation:

$$I{S}_{Ts}=I{S}_{Tm1}\cdot {({T}_{s}/{T}_{m1})}^{XTI/N}\cdot \mathrm{exp}\left(-\frac{EG}{Nk{T}_{s}}(1-{T}_{s}/{T}_{m1})\right)$$

where:

*T*is the temperature at which the diode parameters are specified, as defined by the_{m1}**Measurement temperature**parameter value.*T*is the simulation temperature._{s}*IS*is the saturation current at measurement temperature._{Tm1}*IS*is the saturation current at simulation temperature. This is the saturation current value used in the standard diode equation when temperature dependence is modeled._{Ts}*EG*is the energy gap for the semiconductor type measured in joules(J). The value for silicon is usually taken to be 1.11 eV, where 1 eV is 1.602e-19.*XTI*is the saturation current temperature exponent. This is usually set to 3.0 for pn-junction diodes, and 2.0 for Schottky barrier diodes.*N*is the emission coefficient.*k*is the Boltzmann constant (1.3806503e–23 J/K).

Appropriate values for *XTI* and *EG* depend on the type
of diode and the semiconductor material used. Default values for particular material types and
diode types capture approximate behavior with temperature. The block provides default values for
common types of diode.

In practice, the values of *XTI* and *EG* need tuning to
model the exact behavior of a particular diode. Some manufacturers quote these tuned values in a
SPICE Netlist, and you can read off the appropriate values. Otherwise, you can determine
improved estimates for *EG* by using a datasheet-defined current-voltage data
point at a higher temperature. The block provides a parameterization option for this. It also
gives the option of specifying the saturation current at a higher temperature
*IS _{Tm2}* directly.

You can also tune the values of *XTI* and *EG* yourself,
to match lab data for your particular device. You can use Simulink^{®}
Design Optimization™ software to help tune the values for *XTI* and
*EG*.

**Caution**

Device temperature behavior is also dependent on the emission coefficient. An
inappropriate value for the emission coefficient can give incorrect temperature dependence,
because saturation current is a function of the ratio of *EG* to
*N*.

If defining a finite reverse breakdown voltage (*BV*), then the value of
the reverse *BV* is modulated by the reverse breakdown temperature coefficient
*TCV* (specified using the **Reverse breakdown voltage temperature
coefficient, dBV/dT** parameter):

BV =
_{Ts}BV – _{Tm1}TCV·
(T –
_{s}T)_{m1} | (24) |

### Faults

The Diode block allows you to model three types of faults:

`Open`

— Failure due to metallization burnout.`Short`

— Failure due to punch-through.`Parameter shift`

— Failure due to aging.

The block can trigger fault events:

At a specific time

When a current limit, a voltage limit, or a temperature limit are exceeded for longer than a specific time interval

You can enable or disable these trigger mechanisms separately, or use them together if more than one trigger mechanism is required in a simulation. When more than one mechanism is enabled, the first mechanism to trigger the fault takes precedence. In other words, the component fails no more than once per simulation.

You can also choose whether to issue an assertion when a fault occurs by using the
**Reporting when a fault occurs** parameter. The assertion can take the form
of a warning or an error. By default, the block does not issue an assertion.

### Modeling Thermal Effects

You can expose the thermal port to model the effects of generated heat and device
temperature. To expose the thermal port, set the **Modeling option**
parameter to either:

`No thermal port`

— The block does not contain a thermal port and does not simulate heat generation in the device.`Show thermal port`

— The block contains a thermal port that allows you to model the heat that conduction losses generate. For numerical efficiency, the thermal state does not affect the electrical behavior of the block.

For more information on using thermal ports and on the **Thermal Port**
parameters, see Simulating Thermal Effects in Semiconductors.

### Variables

Use the **Variables** section of the block
interface to set the priority and initial target values for the block
variables prior to simulation. For more information, see Set Priority and Initial Target for Block Variables.

## Assumptions and Limitations

When you select

`Use two I-V curve data points`

for the**Parameterization**parameter, choose a pair of voltages near the diode turn-on voltage. Typically, this is in the range from 0.05 to 1 V. Using values outside of this region may lead to numerical issues and poor estimates for*IS*and*N*.The block does not account for temperature-dependent effects on the junction capacitance.

You may need to use nonzero ohmic resistance and junction capacitance values to prevent numerical simulation issues, but the simulation may run faster with these values set to zero.

You cannot use the

`Tabulated I-V curve`

parameterization to model the reverse breakdown.

## Ports

### Conserving

## Parameters

## References

[1] MH. Ahmed and P.J. Spreadbury. *Analogue and digital
electronics for engineers*. 2nd Edition. Cambridge, UK: Cambridge University Press,
1984.

[2] G. Massobrio and P. Antognetti. *Semiconductor Device
Modeling with SPICE*. 2nd Edition. New York: McGraw-Hill, 1993.

[3] Lauritzen, P.O. and C.L. Ma.
“A Simple Diode Model with Reverse Recovery.” *IEEE ^{®} Transactions on Power Electronics*. Vol. 6, No. 2, April 1991, pp.
188–191.

## Extended Capabilities

## Version History

**Introduced in R2008a**