sycan.components.active.jfet

Shichman-Hodges JFET, polarity-aware (N-JFET / P-JFET).

The JFET is a depletion-mode device: the channel is fully open at V_GS = 0 and pinches off when the gate-source voltage is sufficiently reverse-biased. With

pol = +1 for NJFET, -1 for PJFET V_GS_eff = pol * (V(gate) - V(source)) V_DS_eff = pol * (V(drain) - V(source)) V_ov = V_GS_eff + VTO

the conduction condition in both cases is V_ov > 0 and saturation is V_DS_eff >= V_ov. VTO is stored as a positive magnitude for both polarities (analogous to V_TH for MOSFETs).

DC drain current (saturation + channel-length modulation):

I_D_mag   = BETA * (V_GS_eff + VTO)**2 * (1 + LAMBDA * V_DS_eff)
I_D_SPICE = pol * I_D_mag     # current INTO drain (SPICE sign)

For NJFET this is positive (I_D flows into drain); for PJFET it is negative (the device pulls current out of the drain externally).

AC small-signal model — obtained by differentiating I_D_SPICE at (V_GS_op, V_DS_op):

g_m  = dI_D/dV_GS|_OP
g_ds = dI_D/dV_DS|_OP

Gate capacitances C_gs / C_gd are stamped as s*C admittances in AC mode. The gate-channel junction is assumed to be ideal (zero gate current) — simple Shichman-Hodges model.

Concrete classes NJFET and PJFET fix polarity via typing.ClassVar; users pick one in their netlist / Python API.

Classes

NJFET(name, drain, gate, source, BETA, VTO)

Shichman-Hodges N-channel JFET (depletion-mode).

PJFET(name, drain, gate, source, BETA, VTO)

Shichman-Hodges P-channel JFET (depletion-mode).

class sycan.components.active.jfet.NJFET(name, drain, gate, source, BETA, VTO, LAMBDA=<factory>, C_gs=<factory>, C_gd=<factory>, V_GS_op=None, V_DS_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]

Bases: _JFET

Shichman-Hodges N-channel JFET (depletion-mode).

Parameters:
  • name (str)

  • drain (str)

  • gate (str)

  • source (str)

  • BETA (Expr)

  • VTO (Expr)

  • LAMBDA (Expr)

  • C_gs (Expr)

  • C_gd (Expr)

  • V_GS_op (Expr | None)

  • V_DS_op (Expr | None)

  • KF (Expr)

  • AF (Expr)

  • EF (Expr)

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

polarity: ClassVar[str] = 'N'
class sycan.components.active.jfet.PJFET(name, drain, gate, source, BETA, VTO, LAMBDA=<factory>, C_gs=<factory>, C_gd=<factory>, V_GS_op=None, V_DS_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]

Bases: _JFET

Shichman-Hodges P-channel JFET (depletion-mode).

Parameters:
  • name (str)

  • drain (str)

  • gate (str)

  • source (str)

  • BETA (Expr)

  • VTO (Expr)

  • LAMBDA (Expr)

  • C_gs (Expr)

  • C_gd (Expr)

  • V_GS_op (Expr | None)

  • V_DS_op (Expr | None)

  • KF (Expr)

  • AF (Expr)

  • EF (Expr)

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

polarity: ClassVar[str] = 'P'