Skip to content

mos

[WIP]

I_d(width, length, psi_ss, psi_sd, v_g)

drain current

Source code in passive_auto_design\components\mos.py
41
42
43
44
45
46
def I_d(width: float, length: float, psi_ss, psi_sd, v_g):
    """
    drain current
    """
    beta = mu_Cox * width / length
    return beta * (f_psi(psi_sd, v_g) - f_psi(psi_ss, v_g))

V_non_eq(psi_s, V_g)

non-equilibrium voltage

Source code in passive_auto_design\components\mos.py
56
57
58
59
60
61
62
63
def V_non_eq(psi_s: float, V_g: float):
    """
    non-equilibrium voltage
    """
    ga = gamma(mu_Cox, N)
    n_i = 1e15
    phib = phi_b(N, n_i)
    return -U_t * np.log((((V_g - psi_s) / ga) ** 2 - psi_s) / U_t) + psi_s - 2 * phib

f_psi(psi, V_g)

function that link bulk potential and drain current

Source code in passive_auto_design\components\mos.py
28
29
30
31
32
33
34
35
36
37
38
def f_psi(psi: float, V_g: float):
    """
    function that link bulk potential and drain current
    """
    ga = gamma(mu_Cox, N)
    return (
        -0.5 * psi**2
        - (2 / 3) * ga * (psi**1.5)
        + (V_g + U_t) * psi
        + ga * U_t * (psi**0.5)
    )

gamma(c_ox, N_atom)

body effect parameter

Source code in passive_auto_design\components\mos.py
20
21
22
23
24
25
def gamma(c_ox: float, N_atom: float):
    """
    body effect parameter
    """
    eps_si = 11.5 * eps0
    return 50 * np.sqrt(2 * q * eps_si * N_atom) / c_ox

phi_b(N, n_i)

bulk potential

Source code in passive_auto_design\components\mos.py
49
50
51
52
53
def phi_b(N: float, n_i: float):
    """
    bulk potential
    """
    return U_t * np.log(N / n_i)