sycan.components.active.mosfet_subthreshold¶
Sub-threshold MOSFET, polarity-aware (NMOS / PMOS).
Drain current in the weak-inversion regime, with
pol = +1 (NMOS) or -1 (PMOS):
V_GS_eff = pol * (V(gate) - V(source))
V_DS_eff = pol * (V(drain) - V(source))
I_D_mag = mu_n * Cox * (W/L) * V_T**2
* exp((V_GS_eff - m * V_TH) / (m * V_T))
* (1 - exp(-V_DS_eff / V_T))
I_D_SPICE = pol * I_D_mag # current INTO drain (SPICE convention)
m = 1 + C_d/C_ox is the sub-threshold slope factor and V_T is
the thermal voltage; V_TH is stored as a positive magnitude for
both polarities. Only DC analysis is modelled.
Concrete classes NMOS_subthreshold and
PMOS_subthreshold fix polarity via a class variable.
Classes
|
Weak-inversion NMOS. |
|
Weak-inversion PMOS. |
- class sycan.components.active.mosfet_subthreshold.NMOS_subthreshold(name, drain, gate, source, mu_n, Cox, W, L, V_TH, m=<factory>, V_T=<factory>, I_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]¶
Bases:
_MOSFET_subthresholdWeak-inversion NMOS.
- Parameters:
name (str)
drain (str)
gate (str)
source (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
V_TH (Expr)
m (Expr)
V_T (Expr)
I_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.mosfet_subthreshold.PMOS_subthreshold(name, drain, gate, source, mu_n, Cox, W, L, V_TH, m=<factory>, V_T=<factory>, I_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]¶
Bases:
_MOSFET_subthresholdWeak-inversion PMOS.
- Parameters:
name (str)
drain (str)
gate (str)
source (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
V_TH (Expr)
m (Expr)
V_T (Expr)
I_op (Expr | None)
KF (Expr)
AF (Expr)
EF (Expr)
include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])
- polarity: ClassVar[str] = 'P'¶