sycan.components.active.diode

Shockley diode — DC and small-signal AC model (SPICE D).

DC:

I_D = IS * (exp(V_D / (N V_T)) - 1)

with V_D = V(anode) - V(cathode).

AC small-signal linearisation produces a conductance g_d = dI_D/dV_D evaluated at V_D_op, plus an optional junction capacitance C_j stamped as admittance s·C_j.

Classes

Diode(name, anode, cathode, IS[, N, V_T, ...])

Shockley diode with small-signal AC model.

class sycan.components.active.diode.Diode(name, anode, cathode, IS, N=<factory>, V_T=<factory>, I_op=None, C_j=<factory>, V_D_op=None, *, include_noise=None)[source]

Bases: Component

Shockley diode with small-signal AC model.

Pass include_noise="shot" (or "all") to attach a shot-noise current source between anode and cathode with one-sided PSD 2·q·I_op. I_op defaults to a per-instance symbolic operating-point current named I_op_<diode-name>; supply a sympy expression to pin it down.

C_j (junction capacitance, default 0) is stamped as s·C_j in AC analysis. V_D_op is the DC operating-point voltage used to compute the small-signal conductance g_d; it defaults to a per-instance symbol V_D_op_<name>.

Parameters:
  • name (str)

  • anode (str)

  • cathode (str)

  • IS (Expr)

  • N (Expr)

  • V_T (Expr)

  • I_op (Expr | None)

  • C_j (Expr)

  • V_D_op (Expr | None)

  • include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])

name: str
anode: str
cathode: str
IS: Expr
N: Expr
V_T: Expr
I_op: Expr | None = None
C_j: Expr
V_D_op: Expr | None = None
include_noise: None | str | list[str] | tuple[str, ...] | frozenset[str] = None
ports: ClassVar[tuple[str, ...]] = ('anode', 'cathode')
has_nonlinear: ClassVar[bool] = True
SUPPORTED_NOISE: ClassVar[frozenset[str]] = frozenset({'shot'})
noise_sources()[source]

Return the small-signal noise sources this component emits.

Default is no-op; concrete components override to emit thermal / shot / flicker contributions weighted by the include_noise selection.

Return type:

list[NoiseSource]

stamp(ctx)[source]
Parameters:

ctx (StampContext)

Return type:

None

stamp_nonlinear(ctx)[source]

Add transcendental terms to ctx.residuals at solve time.

Only invoked for DC analysis when the circuit contains at least one component with has_nonlinear = True. Default is no-op.

Parameters:

ctx (StampContext)

Return type:

None