TFTシミュレーションプログラム技術ドキュメント
プログラムの動作
tft.py プログラムは、薄膜トランジスタ (TFT: Thin Film Transistor) の電気的特性シミュレーションと構造の視覚化を目的としたPythonアプリケーションです。
主な機能は以下の通りです。
TFTのI-V特性シミュレーション: ゲート電圧 (Vg) とドレイン電圧 (Vd) に対するドレイン電流 (Id) の関係を計算します。
TFTの構造図表示: 2Dまたは3DでTFTの層構造を図示します。
パラメータ設定: TFTの移動度、誘電率、寸法などの物理的パラメータをコマンドライン引数で詳細に設定できます。
結果のグラフ表示: シミュレーション結果はMatplotlibとTkinterを統合したインタラクティブなグラフウィンドウで表示されます。グラフにはアノテーション、マウス追従、ポップアップメニューなどの機能が含まれます。
結果のファイル出力: シミュレーションされたI-V特性データはExcelファイルとして保存されます。
プラグインのサポート: 外部プラグインを読み込むことで、グラフのポップアップメニューに機能を追加できます。
本プログラムは、TFTの設計や解析において、その電気的振る舞いを予測し、構造を視覚的に理解するためのツールとして機能します。
原理
tft.py の simulate_IV 関数は、簡略化されたTFTの電流-電圧 (I-V) 特性モデルに基づいてシミュレーションを行います。このモデルは、主にゲート酸化膜容量 (\(C_{ox}\))、移動度 (\(\mu\))、チャネルの形状 (\(W/L\))、およびしきい値電圧 (\(V_{th}\)) に基づいています。
ゲート酸化膜容量 (\(C_{ox}\)): ゲート絶縁膜をコンデンサと見なし、その単位面積あたりの容量を以下の式で計算します。
\[C_{ox} = \frac{\epsilon_r \epsilon_0}{d_g}\]ここで、
\(C_{ox}\) は単位面積あたりのゲート酸化膜容量 [F/m\(^2\)]
\(\epsilon_r\) (プログラム内では
erg) はゲート絶縁膜の比誘電率\(\epsilon_0\) (プログラム内では
e0) は真空の誘電率 [F/m]\(d_g\) (プログラム内では
dg) はゲート絶縁膜厚 [m]
電流駆動係数 (\(K\)): TFTの電流を決定する主要な係数 \(K\) は、以下のように定義されます。
\[K = C_{ox} \mu \frac{W}{L}\]ここで、
\(\mu\) (プログラム内では
mu) はキャリア移動度 [m\(^2\)/(V\(\cdot\)s)]\(W\) はチャネル幅 [m]
\(L\) はチャネル長 [m]
ドレイン電流 (\(I_d\)): ドレイン電流 \(I_d\) は、ゲート電圧 (\(V_g\)) とドレイン電圧 (\(V_d\)) の関係によって、線形領域と飽和領域の2つのモードで計算されます。プログラムでは \(V_p = V_g - V_{th}\) (ここで \(V_{th}\) はしきい値電圧) を用いています。
飽和領域 (\(V_d \geq V_p\) の場合、\(V_d\) は \(V_p\) にクランプされる): $\(I_d = I_{sat} = \frac{1}{2} K V_p^2\)$
線形領域 (\(V_d < V_p\) の場合): $\(I_d = K \left( V_p V_d - \frac{1}{2} V_d^2 \right)\)$
このプログラムは、これらの基本式を用いて、指定された \(V_g\) と \(V_d\) の範囲で \(I_d\) を計算し、TFTの転送特性 (Id-Vg) と出力特性 (Id-Vd) をシミュレートします。
必要な非標準ライブラリとインストール方法
このプログラムは、いくつかの非標準Pythonライブラリを使用しています。これらをインストールするには、通常 pip コマンドを使用します。
tklib: このライブラリは、tft.pyと同じ開発者によって提供されるカスタムライブラリです。標準のpipではインストールできません。プログラムのエラーメッセージによると、tklibが含まれるディレクトリをPYTHONPATH環境変数に追加する必要があります。インストール方法:
tklibライブラリがtkProg/tklib/pythonのようなパスにある場合、その親ディレクトリ (tkProg/tklib/python) をPYTHONPATHに追加してください。Windowsの場合:
set PYTHONPATH=%PYTHONPATH%;C:\path\to\tkProg\tklib\python
Linux/macOSの場合:
export PYTHONPATH=$PYTHONPATH:/path/to/tkProg/tklib/python
numpy: 数値計算を効率的に行うためのライブラリです。インストール方法:
pip install numpy
matplotlib: グラフ描画およびプロットを行うためのライブラリです。インストール方法:
pip install matplotlib
tqdm: ループ処理の進捗バーを表示するためのライブラリです。インストール方法:
pip install tqdm
openpyxl: Excelファイル (.xlsx) を読み書きするために、tklibのtkVariousDataモジュール内部で使用されている可能性があります。直接インポートはされていませんが、Excel出力機能を利用する場合は必要となることがあります。インストール方法:
pip install openpyxl
必要な入力ファイル
tft.py は、コマンドライン引数を通じてほとんどのパラメータを受け取ります。特定の入力データファイルを直接読み込むことはありません。
ただし、tkApplication クラスによってアプリケーション設定ファイル (例: app_config.json や .ini ファイル) が自動的に読み込まれる可能性があります。この設定ファイルはプログラムの動作やデフォルト値を制御するために使用されますが、必須ではありません。
また、プラグインディレクトリ (plugin_dir) からモジュール (.py ファイル) を動的にロードする機能がありますが、これらは入力データファイルとは異なります。
生成される出力ファイル
tft.py は、実行モードに応じて以下のファイルを生成する可能性があります。
TFT_IV.xlsx:生成条件:
--mode=IVで実行された場合。内容: TFTのシミュレーションされたI-V特性データ。Excelワークシート形式で保存されます。
データ構造: 以下の列が含まれます。
Vd [V]: ドレイン電圧のリスト。Vg [V]: ゲート電圧のリスト。Id@Vg=XX [A]: 各特定のゲート電圧XXにおけるドレイン電流 (\(I_d\)) のリスト。Vdが変化する際のId値を表します。プログラムで指定されたnVgの数だけこれらの列が追加されます。
image.png:生成条件:
--mode=IVで実行され、かつTkinterインターフェース上で「Save image.png」ボタンがクリックされた場合。内容: 表示されているI-V特性グラフの画像ファイル。
コマンドラインでの使用例 (Usage)
tft.py は以下の形式で実行されます。
python tft.py [オプション]
主なオプション:
--mode=[model|model3d|IV|Vch|plotz|plotx]: 実行モードを指定します。model: TFTの2D構造図を表示します。model3d: TFTの3D構造図を表示します。IV: TFTのI-V特性をシミュレーションし、グラフとExcelファイルを出力します (デフォルトモード)。Vch,plotz,plotx: 現在のプログラムでは未実装であり、実行するとエラーが発生します。
--use_tkplt=[0|1]: MatplotlibのグラフをTkinterウィンドウに統合して表示するかどうかを設定します。0: 非統合 (通常のMatplotlibウィンドウ) (デフォルト)。1: Tkinter統合表示 (ツールバーや追加ウィジェットが利用可能)。
--mu=[float]: キャリア移動度 (\(\mu\)) を設定します [m\(^2\)/(V\(\cdot\)s)]。デフォルトは10.0e-4。--dg=[float]: ゲート絶縁膜厚 (\(d_g\)) を設定します [m]。デフォルトは100.0e-9。--erg=[float]: ゲート絶縁膜の比誘電率 (\(\epsilon_r\)) を設定します。デフォルトは11.9。--W=[float]: チャネル幅 (\(W\)) を設定します [m]。デフォルトは300.0e-6。--L=[float]: チャネル長 (\(L\)) を設定します [m]。デフォルトは50.0e-6。--Vth=[float]: しきい値電圧 (\(V_{th}\)) を設定します [V]。デフォルトは0.0。--Vg_min=[float]: ゲート電圧 (\(V_g\)) の最小値を設定します [V]。デフォルトは0.0。--Vg_max=[float]: ゲート電圧 (\(V_g\)) の最大値を設定します [V]。デフォルトは20.0。--nVg=[int]: ゲート電圧 (\(V_g\)) のステップ数を設定します。デフォルトは51。--Vd_min=[float]: ドレイン電圧 (\(V_d\)) の最小値を設定します [V]。デフォルトは0.0。--Vd_max=[float]: ドレイン電圧 (\(V_d\)) の最大値を設定します [V]。デフォルトは20.0。--nVd=[int]: ドレイン電圧 (\(V_d\)) のステップ数を設定します。デフォルトは51。その他、バンド構造やドーピングに関するパラメータ (
--EV,--EC,--ND,--ED,--NA,--EA) も設定可能です。
コマンドラインでの具体的な使用例
例1: I-V特性シミュレーションとグラフ表示
ゲート電圧の範囲を0Vから10Vに設定し、ドレイン電圧のステップ数を31に変更してI-V特性をシミュレーションします。
python tft.py --mode=IV --Vg_max=10 --nVd=31
実行結果の説明:
TFTのI-V特性が計算されます。
TFT_IV.xlsxというExcelファイルが現在のディレクトリに生成され、シミュレーションデータが保存されます。Matplotlibのグラフウィンドウが開かれ、「Transfer characteristics (Id-Vg)」と「Output characteristics (Id-Vd)」の2つのグラフが表示されます。
グラフウィンドウでマウスを動かすと、カーソルの位置のデータポイント情報がコンソールに出力されます。
ユーザーがEnterキーを押すまでプログラムは待機します。
例2: 3D TFT構造図の表示
ゲート絶縁膜厚を20nmに変更して、TFTの3D構造図を表示します。
python tft.py --mode=model3d --dg=20e-9
実行結果の説明:
TFTの3D構造モデルがMatplotlibのグラフウィンドウに表示されます。
構造は「substrate」「gate」「insulator」「semiconductor」「source」「drain」の各層から構成されます。
ユーザーがEnterキーを押すまでプログラムは待機します。
例3: Tkinter統合I-V特性シミュレーション
TkinterとMatplotlibを統合してI-V特性をシミュレーションし、グラフを表示します。
python tft.py --mode=IV --use_tkplt=1
実行結果の説明:
例1と同様にI-V特性が計算され、
TFT_IV.xlsxが生成されます。グラフがTkinterウィンドウ内に表示され、ツールバーや追加のウィジェット (例: Entryボックス、Label、Button) が利用可能になります。
ツールバーの「Start annotate」ボタンでグラフ上のデータポイントにアノテーションを表示したり、「Start follow mouse」ボタンでマウスカーソル位置のデータを追従したりできます。
「Save image.png」ボタンをクリックすると、表示されているグラフが
image.pngとして保存されます。ユーザーがEnterキーを押すまでプログラムは待機します。