Schottky Diode I-V Characteristics Simulator
プログラムの動作
schottky.py は、ショットキーダイオードの電流-電圧 (I-V) 特性をシミュレートするためのPythonプログラムです。
その主な目的は、異なる物理モデルに基づいたショットキーダイオードの電気的挙動を、ユーザーが指定した多様なパラメータ(温度、ドーピング濃度、材料定数など)の条件下で視覚的に解析することです。
主な機能:
物理パラメータの計算: ショットキーダイオードの特性を決定する基本的な物理量(リチャードソン定数、半導体側の伝導帯実効状態密度、フェルミ準位、ショットキー障壁高さ、内蔵電位、飽和電流密度、直列抵抗)を計算します。
複数のI-Vモデルのサポート: 以下の異なる物理モデルに基づいてI-V特性を計算できます。
Simple (単純): 理想的な熱電子放出モデル。
Diffusion (拡散): 熱電子放出と拡散を組み合わせたモデル。
Schottky (ショットキー障壁低下): イメージ電荷効果による障壁低下を考慮したモデル。
Tunneling (トンネリング): 簡易的なトンネリング電流効果を考慮したモデル。
TFE (Thermionic-Field Emission): 熱電子放出と電界放出(トンネリング)の複合モデル。
グラフィカルな結果表示: 計算されたI-V特性は、
matplotlibライブラリを使用してグラフとして表示され、視覚的な解析を容易にします。
解決する課題:
このプログラムは、ショットキーダイオードの複雑な物理現象を理解し、様々な外部条件や材料特性がその電気的性能にどのように影響するかを評価するためのツールとして機能します。特に、順方向および逆方向バイアスにおける電流応答が、温度、ドーピング濃度、有効質量などの要因によってどのように変化するかを、異なる物理モデルの枠組みで比較・検討することを可能にします。
原理
schottky.py は、ショットキーダイオードのI-V特性を計算するために、以下の数式とアルゴリズムを使用しています。
基本的な物理定数
ボルツマン定数 (\(k_B\)):
KB = 1.380649e-23J/K素電荷 (\(q\)):
QE = 1.60217663e-19C真空の誘電率 (\(\epsilon_0\)):
EPS0 = 8.854187e-12F/m電子質量 (\(m_e\)):
ME = 9.109383e-31kg
パラメータ計算 (calculate_params 関数)
リチャードソン定数 (\(A^{**}\)): \(A^{**} = A_0 \cdot m_{en} / m_e\) ここで、\(A_0 = 1.20173 \times 10^6\) A/m\(^2\)/K\(^2\) は自由電子質量に基づくリチャードソン定数、\(m_{en}\) は電子の有効質量、\(m_e\) は自由電子質量です。 コード内では
reff = 1.20173e6 * args.menで計算されます。伝導帯実効状態密度 (\(N_C\)): \(N_C = 2.51 \times 10^{19} \left(\frac{m_{en}}{m_e}\right)^{1.5} \left(\frac{T}{300}\right)^{1.5}\) cm\(^{-3}\) \(T\) は温度です。
フェルミ準位 (\(E_{fn}\)): 半導体中のフェルミ準位は、伝導帯端 \(E_{cn}\)、ドーピング濃度 \(N_D\)、伝導帯実効状態密度 \(N_C\) から計算されます。 $\(E_{fn} = E_{cn} - \frac{k_B T}{q} \ln\left(\frac{N_{Dn}}{N_C}\right)\)$
ショットキー障壁高さ (\(\phi_b\)): 金属のフェルミ準位 \(E_{fm}\) と半導体の電子親和力 \(E_{cn}\) から、理想的には次のように計算されます。 $\(\phi_b = E_{fm} - E_{cn}\)$ コードでは符号が反転しており、
-(args.ecn - args.efm)となっています。内蔵電位 (\(V_{bi}\)): 金属のフェルミ準位 \(E_{fm}\) と半導体のフェルミ準位 \(E_{fn}\) の差です。 $\(V_{bi} = \frac{E_{fm} - E_{fn}}{q}\)$ コードでは符号が反転しており、
-(efn - args.efm)となっています。飽和電流密度 (\(J_s\)): 熱電子放出理論に基づくリチャードソン・ダッシュマン方程式で与えられます。 $\(J_s = A^{**} T^2 \exp\left(-\frac{q \phi_b}{k_B T}\right)\)$
直列抵抗 (\(R_s\)): 半導体層の抵抗率 \(\rho_n = (q \mu_n N_{Dn})^{-1}\) と厚さ \(d_n\)、ダイオード面積 \(A\) から計算されます。 $\(R_s = \frac{\rho_n d_n}{A} = \frac{d_n}{q \mu_n N_{Dn} A}\)$ コードではまず単位面積あたりの抵抗
rn = 1.0 / sigma_n * args.dn * 1e-7(ohm cm^2) を計算し、その後rs = rs_unit / args.areaでダイオード面積を考慮しています。
電流-電圧特性の計算 (calculate_schottky_current 関数)
この関数は、印加電圧 \(V_{app}\) に対して、ダイオードにかかる電圧 \(V_D\) とそれによって流れる電流 \(I\) を計算します。直列抵抗 \(R_s\) の影響を考慮するため、\(V_{app} = V_D + I R_s\) の方程式を、数値的な反復法(実質的にニュートン法に似た手法)を用いて解きます。 電流 \(I\) は、選択されたモデルに基づいて計算されます。
Simple Model (理想ダイオード): $\(I = A J_s \left( \exp\left(\frac{V_D}{n k_B T / q}\right) - 1 \right)\)\( ここで \)n\( は理想係数であり、プログラムでは \)1.0$ を使用しています。
Diffusion Model: 主に逆方向バイアスで電界の低い領域を考慮します。 $\(I = A q \mu_s N_C E_{max} \exp\left(-\frac{q \phi_b}{k_B T}\right) \left( \exp\left(\frac{V_D}{n k_B T / q}\right) - 1 \right)\)\( ここで \)E_{max} = \sqrt{\frac{2 q N_{Ds} (V_{bi} - V_D)}{\epsilon_s}}\( は空乏層中の最大電界、\)\epsilon_s$ は半導体の誘電率です。
Schottky Model (障壁低下): イメージ電荷による障壁低下効果を考慮します。これにより、有効な障壁高さが電圧依存で減少し、特に逆方向で電流が増加します。 飽和電流密度 \(J_s\) が障壁低下項で補正されます。 $\(J_s' = J_s \exp\left(\frac{q}{k_B T} \Delta \phi_b\right)\)\( ここで \)\Delta \phi_b = \sqrt{\frac{q E_{max}}{4 \pi \epsilon_s}}\(。 コードでは、\)k_1 = \left(\frac{q}{\epsilon_s}\right)^{1.5} \frac{\sqrt{2}}{4\pi} \sqrt{N_{Ds}} \sqrt{V_{bi}-V_D}$ を用いて指数関数内の項を計算しています。
Tunneling Model: 簡易的なトンネリング電流モデル。コードでは、トンネリングによる電流増加を指数関数
math.exp(vd / (n_tunnel * 0.026))で表しています。 $\(I = A J_s K_{tunnel} \left( \exp\left(\frac{V_D}{n k_B T / q}\right) - 1 \right)\)\( ここで \)K_{tunnel}$ はトンネリング寄与を表す項です。TFE (Thermionic-Field Emission) Model: 熱電子放出と電界放出の複合モデル。特徴的なエネルギー \(E_{00}\) が導入されます。 $\(E_{00} = \frac{q \hbar}{2} \sqrt{\frac{N_{Ds}}{\epsilon_s m_{eff}}}\)\( ここで \)\hbar\( は換算プランク定数、\)m_{eff}\( は電子の有効質量です。 さらに、\)E_0 = E_{00} \coth\left(\frac{E_{00}}{k_B T / q}\right)\( が計算されます。 順方向では電流は \)\exp(V_D / E_0)$ に比例します。 逆方向では、障壁の薄層化による透過率の増加を考慮する簡易的な補正項
math.exp(abs(vd) * (e00 / kt_q)**2)が適用されます。
必要な非標準ライブラリとインストール方法
schottky.py を実行するためには、以下の非標準Pythonライブラリが必要です。
numpy: 高度な数値計算、特に配列操作に利用されます。matplotlib: グラフの描画に使用されます。
これらのライブラリは、Pythonのパッケージマネージャーである pip を使ってインストールすることができます。コマンドプロンプトやターミナルで以下のコマンドを実行してください。
pip install numpy matplotlib
必要な入力ファイル
schottky.py は、外部からの入力ファイルを必要としません。
すべての必要な設定パラメータ(温度、材料定数、シミュレーション範囲など)は、プログラムをコマンドラインから実行する際に、引数として直接渡されます。これにより、手軽に異なる条件でのシミュレーションを試すことができます。
生成される出力ファイル
schottky.py を実行すると、以下の2種類の出力が生成されます。
標準出力 (コンソール出力): シミュレーションの実行後、計算された主要な物理量と設定情報がコンソールにテキスト形式で表示されます。これには、使用されたモデル名、障壁高さ (\(\phi_b\))、内蔵電位 (\(V_{bi}\))、および飽和電流密度 (\(J_s\)) が含まれます。 出力例:
Model : Simple Barrier phiB: 0.3500 eV V_bi : 0.6958 V Js : 3.551676e-07 A/cm2
グラフウィンドウ (matplotlib):
matplotlibライブラリを使用して、計算されたショットキーダイオードの電流-電圧 (I-V) 特性曲線がグラフィカルに表示されます。このグラフは、印加電圧 [V] を横軸に、電流の絶対値 [A] を縦軸に取る半対数プロット(Y軸が対数スケール)です。グラフのタイトルには、シミュレーションに使用されたモデル名が示され、異なるモデル間の比較が容易になります。このグラフは、プログラムが終了するまで表示され続けます。
schottky.py は、明示的に結果をファイルに保存する機能は持っていません。グラフの画像やデータが必要な場合は、グラフウィンドウから手動で保存するか、プログラムを適宜修正する必要があります。
コマンドラインでの使用例 (Usage)
schottky.py は、コマンドライン引数を使用して動作を設定します。基本的な実行コマンドは以下の通りです。
python schottky.py [OPTIONS]
利用可能なオプション(引数)は以下の通りです。
--model {Simple,Diffusion,Schottky,Tunneling,TFE}: 使用するI-Vモデルを選択します。Simple: 理想的な熱電子放出モデル。Diffusion: 拡散電流を含む熱電子放出モデル。Schottky: ショットキー障壁低下効果を考慮。Tunneling: 簡易的なトンネリング電流モデル。TFE: 熱電子-電界放出複合モデル。 デフォルト値:Simple
--temp <float>: シミュレーション温度 [K]。 デフォルト値:300.0--area <float>: ダイオードの活性面積 [cm\(^2\)]。 デフォルト値:0.01--efm <float>: 金属のフェルミ準位(仕事関数) [eV]。 デフォルト値:4.4--ecn <float>: 半導体の電子親和力(伝導帯端) [eV]。 デフォルト値:4.05--ndn <float>: 半導体のドナー濃度 [cm\(^{-3}\)]。 デフォルト値:1.0e16--mun <float>: 半導体中の電子移動度 [cm\(^2\)/(Vs)]。 デフォルト値:1500.0--eps_r <float>: 半導体の比誘電率。 デフォルト値:11.9--dn <float>: 半導体層の厚さ [nm]。 デフォルト値:1000.0--men <float>: 電子の有効質量比(自由電子質量に対する比)。 デフォルト値:0.19--n_tunnel <float>:Tunnelingモデルで使用されるトンネリング理想係数。 デフォルト値:2.0--v0 <float>: 印加電圧の開始値 [V]。 デフォルト値:-2.0--v1 <float>: 印加電圧の終了値 [V]。 デフォルト値:1.0--step <float>: 印加電圧のステップサイズ [V]。 デフォルト値:0.02
コマンドラインでの具体的な使用例
例1: デフォルトパラメータで Simple モデルを実行
このコマンドは、すべてのデフォルト設定を使用し、最も基本的な熱電子放出モデル (Simple) でI-V特性を計算します。
python schottky.py
実行結果の説明:
コンソールには、計算された主要な物理量(障壁高さ、内蔵電位、飽和電流密度)が表示されます。その後、matplotlib によってI-V特性のグラフウィンドウがポップアップ表示されます。グラフは順方向バイアス(正の電圧)で電流が指数関数的に増加し、逆方向バイアス(負の電圧)でほぼ一定の飽和電流が流れる、理想的なダイオードの特性を示します。
Model : Simple
Barrier phiB: 0.3500 eV
V_bi : 0.6958 V
Js : 3.551676e-07 A/cm2
(グラフウィンドウが表示される)
例2: TFE モデルを使用し、温度とドーピング濃度を変更
この例では、TFE (Thermionic-Field Emission) モデルを選択し、温度を350Kに上げ、ドナー濃度を \(5 \times 10^{17} \text{ cm}^{-3}\) に増やしてシミュレーションを行います。
python schottky.py --model TFE --temp 350 --ndn 5e17
実行結果の説明: コンソールには、指定されたパラメータで再計算されたモデル名、障壁高さ、内蔵電位、飽和電流密度が表示されます。温度の上昇とドーピング濃度の増加により、飽和電流密度が大きくなり、内蔵電位が変化します。 グラフウィンドウには、TFEモデルによるI-V特性が表示されます。このモデルでは、特に高いドーピング濃度(または低温)において、トンネリング効果が熱電子放出と組み合わされるため、順方向のサブスレッショルド領域や逆方向で、理想モデルよりも大きな電流が観測される可能性があります。
Model : TFE
Barrier phiB: 0.3500 eV
V_bi : 0.5369 V
Js : 6.883738e-06 A/cm2
(グラフウィンドウが表示される)
例3: Schottky モデルで逆方向バイアスの電圧範囲を広げる
このコマンドは、イメージ電荷による障壁低下効果を考慮する Schottky モデルを使用し、逆方向バイアスの範囲を -5.0 V まで広げてI-V特性をプロットします。
python schottky.py --model Schottky --v0 -5.0
実行結果の説明: コンソールには、Schottkyモデルの基本パラメータが表示されます。グラフウィンドウには、-5.0Vまでの広範囲な逆方向バイアスでのI-V特性が示されます。このモデルでは、逆方向電圧が増加するにつれて、イメージ電荷効果による障壁低下が顕著になり、電流が理想的な飽和電流よりも増加する(逆方向リーク電流が増大する)様子が観察されます。これは、実際のショットキーダイオードでよく見られる現象です。
Model : Schottky
Barrier phiB: 0.3500 eV
V_bi : 0.6958 V
Js : 3.551676e-07 A/cm2
(グラフウィンドウが表示される)