sycan.components.active.mosfet_4t¶
Four-terminal segmented MOSFET — L1 strong inversion + matched weak-inversion tail, polarity-aware (NMOS / PMOS), with the bulk node exposed and a long-channel body-effect correction on the threshold.
This is the canonical implementation; the three-terminal cell
NMOS_3T /
PMOS_3T is a thin
wrapper that ties the bulk to the source so the body effect drops out.
Equations¶
Threshold with body effect (long-channel form):
V_TH(V_SB) = V_TH0 + γ * (sqrt(2 φ_F + V_SB) − sqrt(2 φ_F))
with V_SB the polarity-aware source-to-bulk voltage,
γ = gamma the body-effect coefficient (units √V), and 2 φ_F = phi
the surface potential at strong inversion (default 0.7 V). Setting
gamma = 0 (the default) makes the body terminal cosmetic — it
still appears as a port, but it does not feed back into V_TH.
Drain current uses the same segmented form as MOSFET_3T:
V_GS_eff >= V_off— Shichman-Hodges Level 1 (saturation + triode, with optional channel-length modulationλ).V_GS_eff < V_off— exponential tail joined C¹-smooth at the boundaryV_off = V_TH + 2 m V_Twith prefactorI_off = 2 β (m V_T)².
The body effect enters through V_TH, so the strong/weak boundary,
the L1 saturation knee, and the weak-inversion exponential offset all
shift consistently with V_SB.
Classes
|
NMOS_4T with the bulk tied to the source. |
|
Four-terminal segmented L1 + matched-weak-inversion NMOS. |
|
PMOS_4T with the bulk tied to the source. |
|
Four-terminal segmented L1 + matched-weak-inversion PMOS ( |
- class sycan.components.active.mosfet_4t.NMOS_4T(name, drain, gate, source, bulk, mu_n, Cox, W, L, V_TH0, lam=<factory>, gamma=<factory>, phi=<factory>, m=<factory>, V_T=<factory>, C_gs=<factory>, C_gd=<factory>, V_GS_op=None, V_DS_op=None, V_BS_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]¶
Bases:
_MOSFET_4TFour-terminal segmented L1 + matched-weak-inversion NMOS.
- Parameters:
name (str)
drain (str)
gate (str)
source (str)
bulk (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
V_TH0 (Expr)
lam (Expr)
gamma (Expr)
phi (Expr)
m (Expr)
V_T (Expr)
C_gs (Expr)
C_gd (Expr)
V_GS_op (Expr | None)
V_DS_op (Expr | None)
V_BS_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_4t.PMOS_4T(name, drain, gate, source, bulk, mu_n, Cox, W, L, V_TH0, lam=<factory>, gamma=<factory>, phi=<factory>, m=<factory>, V_T=<factory>, C_gs=<factory>, C_gd=<factory>, V_GS_op=None, V_DS_op=None, V_BS_op=None, KF=<factory>, AF=<factory>, EF=<factory>, *, include_noise=None)[source]¶
Bases:
_MOSFET_4TFour-terminal segmented L1 + matched-weak-inversion PMOS (
V_TH0is a positive magnitude).- Parameters:
name (str)
drain (str)
gate (str)
source (str)
bulk (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
V_TH0 (Expr)
lam (Expr)
gamma (Expr)
phi (Expr)
m (Expr)
V_T (Expr)
C_gs (Expr)
C_gd (Expr)
V_GS_op (Expr | None)
V_DS_op (Expr | None)
V_BS_op (Expr | None)
KF (Expr)
AF (Expr)
EF (Expr)
include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])
- polarity: ClassVar[str] = 'P'¶
- class sycan.components.active.mosfet_4t.NMOS_3T(name, drain, gate, source, mu_n, Cox, W, L, V_TH, **kwargs)[source]¶
Bases:
NMOS_4TNMOS_4T with the bulk tied to the source.
Equivalent to
NMOS_4T(..., bulk=source, V_TH0=V_TH, ...)— the constructor just suppliesbulk = sourcefor you and acceptsV_THas a friendlier name for the zero-bias threshold. All the rest of the model — port set, DC equations, AC stamps, body-effect plumbing (with V_SB ≡ 0), noise sources — is inherited verbatim, so a 3T instance is genuinely a 4T whose body is shorted out.Callers wanting body effect should pass
gamma > 0toNMOS_4Tdirectly with a distinct bulk node.- Parameters:
name (str)
drain (str)
gate (str)
source (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
- property V_TH: Expr¶
Alias for
V_TH0— kept for backwards compatibility with the original (pre-4T) MOSFET_3T API.
- class sycan.components.active.mosfet_4t.PMOS_3T(name, drain, gate, source, mu_n, Cox, W, L, V_TH, **kwargs)[source]¶
Bases:
PMOS_4TPMOS_4T with the bulk tied to the source. See
NMOS_3Tfor the rationale; identical wrapper, opposite polarity.- Parameters:
name (str)
drain (str)
gate (str)
source (str)
mu_n (Expr)
Cox (Expr)
W (Expr)
L (Expr)
- property V_TH: Expr¶