「アナログCMOS集積回路の設計」とは?

こちらはアナログ集積回路を学ぶ上での入門書になります。
必要な前提知識は高校物理・高校数学、また大学数学の線形代数・微積分学、電気工学・電子工学・半導体工学などです。
研究室に配属された大学4年生や大学院1年生にオススメの参考書となっていますが、残念ながら現在は絶版しています。今は第二版が販売されているので、いつかやってみようかな。
大学の図書館で借りたので、せっかくなのでやっていこうと思います。
計算環境
使用する言語:Python
使用するライブラリ:Numpy Matplotlib.pyplot
使用するPC:HP 15-fc windows11(クソどうでもいい)
パラメータの定義
本書p.44の表2.1にすべてのパラメータが定義されており、それらはあらかじめコードの序盤に定義している。
大問2-1
$ W/L=50/0.5 $のPFETおよびNFETの$ |V_{DD}| $が$ 0 $から$ 3.0 $まで変化したときのドレイン電流$ I_d $の変化を図に示せ。ただし$ |V_{DS}|=3.0 $とする。
解答コード
Q_2-1.py
import numpy as np
import matplotlib.pyplot as plt
# 定義済みのパラメータ
EPSILON_0 = 8.85 * 10**-12 # 真空の誘電率[F/m]
EPSILON_SIO2 = 3.9 # SI02の比誘電率[F/m]
TOX = 9.0 * 10**-9 # ゲート酸化膜厚[m]
COX = (EPSILON_0 * EPSILON_SIO2) / TOX # 単位面積あたりのゲート容量[F/m**2]
#表2-1のモデルパラメータ
UO_N = 350 * 10**-4 # 電子の移動度[m^2/Vs]
LAMBDA_N = 0.1 # NMOSのチャネル長変調係数
GAMMA_N = 0.45 # NMOSの基板バイアス定数[V**(1/2)]
PHI_N = 0.9 # 2PHI[V]
VTH_N = 0.7 # NMOSのしきい値電圧[V]
LD_N = 0.08e-6 # ソース/ドレインの側壁拡散長[m]
PB_N = 0.9 # ソース/ドレイン接合のビルトインポテンシャル[V]
MJ_N = 0.45 # CJの解析式の指数[なし]
MJSW_N = 0.2 # CJSWの解析式の指数[なし]
CJ_N = 0.56E-3 # ソース/ドレイン底面の単位面積あたりの接合容量[F/m**2]
CJSW_N = 0.35e-11 # ソース/ドレイン側壁の単位長あたりの接合容量[F/m]
CGDO_N = 0.4E-9 # 単位長あたりのゲート-ドレインのオーバーラップ容量[F/m]
UO_P = 100 * 10**-4 # ホールの移動度[m^2/Vs]
LAMBDA_P = 0.2 # PMOSのチャネル長変調係数
GAMMA_P = 0.4 # PMOSの基板バイアス定数[V**(1/2)]
PHI_P = 0.8 # 2PHI[V]
VTH_P = -0.8 # PMOSのしきい値電圧[V]
LD_P = 0.09e-6 # ソース/ドレインの側壁拡散長[m]
PB_P = 0.9 # ソース/ドレイン接合のビルトインポテンシャル[V]
MJ_P = 0.5 # CJの解析式の指数[なし]
MJSW_P = 0.3 # CJSWの解析式の指数[なし]
CJ_P = 0.94E-3 # ソース/ドレイン底面の単位面積あたりの接合容量[F/m**2]
CJSW_P = 0.32e-11 # ソース/ドレイン側壁の単位長あたりの接合容量[F/m]
CGDO_P = 0.3E-9 # 単位長あたりのゲート-ドレインのオーバーラップ容量[F/m]
#大問2-1のパラメータ
VDD = 3 # VDD[V]
beta_N = UO_N * COX * (W / L) # beta_N
beta_P = UO_P * COX * (W / L) # beta_P
#解答
VGS = np.arange(-3, 3, 0.01)
VDS = VDD
# ドレイン電流の式 (飽和領域の近似式)
# VGS が VTH_N より小さい場合は電流が流れないため、0とする
Id_n = np.where(VGS > VTH_N, beta_N * (VGS - VTH_N)**2 * (1 + LAMBDA_N * VDS), 0)
Id_p = np.where(VGS < VTH_P, beta_N*(VGS - VTH_P)**2*(1+LAMBDA_N*VDS),0)
plt.plot(VGS, Id_n)
plt.plot(VGS, Id_p)
plt.title('MOS Drain Current (Id_n) vs. Gate-Source Voltage (VGS)') # グラフタイトルを追加
plt.xlabel('VGS [V]') # x軸ラベルを追加
plt.ylabel('Id [A]') # y軸ラベルを追加
plt.grid(True) # グリッド線を追加
plt.show()
出力結果
今回用いた公式
今回用いた公式は以下である。
\displaylines{
I_d\approx\frac{1}{2}\mu_n C_{ox} \frac{W}{L}(V_{GS}-V_{TH})^2 (1+\lambda V_{DS})
}
これは飽和領域におけるドレイン電流の公式である。