# ``tftanalyze.py`` ドキュメント
## ファイル概要
TFT n-チャネルトランジスタの電気特性を解析するツールです。
詳細説明:
このスクリプトは、TFT (Thin-Film Transistor) のn-チャネルデバイスにおける I-V特性(伝達特性 (ID-VG) および出力特性 (ID-VD))データを読み込み、解析し、結果をExcelレポートとPNGプロットとして出力します。
コマンドラインからの使用例は以下の通りです。
```bash
python tftanalyze.py --mode all --infile_vg transfer.csv --infile_vd output.csv
主な機能:
CSV形式の測定データを自動的にエンコーディングを検出して読み込みます。
伝達特性データから閾値電圧 (
Vth)、移動度 (Mobility)、サブスレッショルドスイング (S) などの主要なデバイスパラメータを抽出します。出力特性データから線形領域のコンダクタンス (
gd) や移動度 (mu_lin,mu_eff) を評価します。サビツキー・ゴレイフィルターを用いたデータの平滑化をサポートします。
解析結果をインタラクティブなグラフ表示とPNGファイルとして保存します。
全ての解析結果と生データ、平滑化データをExcelファイルに集約して出力します。
関連リンク:
tftanalyze_usage
インポートされたライブラリ
標準ライブラリ
osオペレーティングシステムに依存する機能、主にファイルパスの操作やディレクトリ作成に使用されます。
sysシステム固有のパラメータと関数へのアクセスを提供し、標準出力のリダイレクトなどに使用されます。
argparseコマンドライン引数を解析するためのライブラリです。
csvCSV (Comma Separated Values) ファイルの読み書きをサポートします。
pathlibオブジェクト指向のファイルシステムパスを提供し、パス操作を容易にします。
非標準ライブラリ
chardet(バージョン 3.0.4 以降が推奨されます)ファイルの文字エンコーディングを検出するために使用されます。
numpy数値計算、特に多次元配列オブジェクトを扱うための基本的なパッケージです。
scipy科学技術計算のためのオープンソースライブラリ群で、ここでは
constantsモジュール(物理定数)とsignalモジュール(Savitzky-Golayフィルター)が使用されています。
pandasデータ操作と分析のためのライブラリで、データフレーム (
DataFrame) 構造を提供します。
matplotlib.pyplotPythonのプロットライブラリで、データの可視化に使用されます。
sklearn.linear_model.LinearRegressionScikit-learnライブラリの一部で、線形回帰モデルを提供します。
定数
EPS0真空の誘電率 (
scipy.constants.epsilon_0) を表す物理定数です。単位は F/m です。
figsize_idvg_quadplot_idvg_quad()関数で使用されるMatplotlibのプロットのサイズ (幅, 高さ) を定義するタプルです。値は(10, 8)です。
クラス
Tee
stdout / stderr をコンソールとログファイルへ同時出力する簡単な Tee クラスです。
詳細説明: このクラスは、複数のファイルライクオブジェクトに書き込み操作をミラーリングするために使用されます。例えば、標準出力への書き込みと同時にログファイルへの書き込みを行う場合に便利です。
__init__()
コンストラクタです。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
データを書き込む対象となる一つ以上のファイルライクオブジェクト。 |
write()
データを全てのストリームに書き込み、フラッシュします。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
書き込むデータ。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。 |
flush()
全てのストリームをフラッシュします。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
|
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。 |
関数
get_args()
コマンドライン引数をパースします。
詳細説明: この関数は、TFT解析スクリプトに必要な全てのコマンドライン引数を定義し、ユーザーが指定した引数をパースして返します。引数には、入力ファイルパス、解析モード、TFTデバイスの物理的寸法、誘電体定数、電流の閾値、平滑化パラメータ、プロット表示・保存設定などが含まれます。
オプション |
デフォルト値 |
タイプ |
説明 |
|---|---|---|---|
|
|
|
伝達特性 (ID-VG) データファイルへのパス。 |
|
|
|
出力特性 (ID-VD) データファイルへのパス。 |
|
|
|
解析モード ( |
|
|
|
出力Excelファイル。省略された場合、モードに依存したファイル名が使用されます。 |
|
|
|
チャネル長 [um]。 |
|
|
|
チャネル幅 [um]。 |
|
|
|
ゲート絶縁膜厚 [nm]。 |
|
|
|
ゲート絶縁膜の比誘電率。 |
|
|
|
S抽出のための参照ドレイン電流 [A]。 |
|
|
|
対数解析のための最小電流フロア [A]。 |
|
|
|
Savitzky-Golayフィルターのウィンドウ長。 |
|
|
|
Savitzky-Golayフィルターの多項式の次数。 |
|
|
|
プロットをインタラクティブに表示します (デフォルト: |
|
|
|
プロットをインタラクティブに表示しません。 |
|
|
|
領域チェックのための安全係数。 |
|
|
|
解析プロットをPNGファイルとして保存します (デフォルト: |
|
|
|
解析プロットを保存しません。 |
|
|
|
プロット保存ディレクトリ。 |
|
|
|
データ読み込み後に |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
端点付近でもSavitzky-Golay平滑化を適用します。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
パースされた引数を含む |
calculate_cox()
ゲート酸化膜容量 (Cox) を計算します。
詳細説明:
ゲート絶縁膜の厚さ (ナノメートル単位) と比誘電率から、単位面積あたりのゲート酸化膜容量 (F/cm^2) を計算します。物理定数として真空の誘電率 (EPS0) を使用します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
ゲート絶縁膜の厚さ [nm]。 |
|
|
ゲート絶縁膜の比誘電率。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
単位面積あたりのゲート酸化膜容量 [F/cm^2]。 |
default_excel_name()
指定された解析モードに応じたデフォルトのExcelファイル名を返します。
詳細説明:
異なる解析モード(read, analyze_idvg, analyze_idvd, all)に対して、それぞれ適切なデフォルトのExcelファイル名を決定します。指定されたモードが辞書にない場合は、汎用的なレポートファイル名を返します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
解析モードを示す文字列。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
デフォルトのExcelファイル名。 |
_existing_or_first_path()
出力名の基準にする入力ファイルを選びます。存在確認はゆるく行います。
詳細説明:
複数のファイルパスが与えられた場合、最初に空でないパス、または提供されたパスのリストの最初のパスを Path オブジェクトとして返します。ファイルシステムの存在チェックは行いません。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
検査するファイルパスの可変引数。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
基準として選択されたファイルパスの |
prepare_output_paths()
Excel/PNG/log の保存先を入力ファイルと同じディレクトリにそろえます。
詳細説明:
入力ファイルパス (args.infile_vg, args.infile_vd) を基準に、Excelレポート、PNGプロット、ログファイルの出力ディレクトリとファイル名を決定し、args オブジェクトに設定します。これにより、全ての出力が関連する入力ファイルの近くに集約されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
コマンドライン引数を含む |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
出力パスが設定された |
plot_path()
入力stemつきPNG保存パスを作成します。
詳細説明:
コマンドライン引数 (args) から取得した出力ステムとプロットディレクトリを基に、指定された名前 (name) でPNGファイルの完全な保存パスを構築します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
コマンドライン引数を含む |
|
|
保存するPNGファイルの名前(拡張子なし)。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
生成されたPNGファイルの完全なパス。 |
savgol_center_only()
サビツキー・ゴレイフィルターを適用し、オプションで端点付近の生データを保持します。
詳細説明:
scipy.signal.savgol_filter は端点付近を外挿/補間することがあります。TFT出力曲線では、VD=0 側の点数が少ないため、端点平滑化が系統的なずれのように見えることがあります。keep_edge_raw=True の場合、完全な中心ウィンドウを持つ点のみが平滑化された値に置き換えられ、端点付近のデータは元のクリップされたデータのまま維持されます。データ長が短すぎる場合、またはウィンドウ長が不正な場合は、元のデータが返され、平滑化が適用されなかったことを示すブール配列が返されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
平滑化するデータ配列。 |
|
|
サビツキー・ゴレイフィルターのウィンドウ長。奇数である必要があります。 |
|
|
フィルターの多項式の次数。 |
|
|
|
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
平滑化されたデータ配列と、各点が平滑化に使用されたかを示すブール配列のタプル。 |
add_read_columns_grouped()
データフレームに電流のクリッピングと平滑化された電流の列を追加します。
詳細説明: この関数は、読み込み/プレビューモードのために、各グループ(またはデータ全体)に対して、以下の列を追加します:
ID_abs_floor:IDの絶対値をargs.Iminでクリッピングした値。ID_smooth_linear: 線形スケールで平滑化されたID。logID_smooth: 対数スケールで平滑化されたlog10(abs(ID))。ID_smooth_log:logID_smoothを元に対数スケールで平滑化されたID。ID_smooth:args.read_smooth_domainに応じてID_smooth_linearまたはID_smooth_log。savgol_used_linear,savgol_used_log,savgol_used: Savitzky-Golay平滑化が適用された点を示すブールマスク。
重要な点:
伝達特性 (ID-VG) のプレビューは、デフォルトで log10(abs(ID)) の平滑化後に逆変換します。出力特性 (ID-VD) のプレビューは、線形電流平滑化と線形Y軸プロットを強制します。デフォルトでは、端点付近ではSavitzky-Golayフィルターの完全な中心ウィンドウがないため、平滑化は無効化されます。これにより、VD=0 付近の人工的なずれを回避します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
処理対象の |
|
|
データのX軸となる列名(例: |
|
|
グループ化に使用する列名(例: |
|
|
コマンドライン引数を含むオブジェクト。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
クリップおよび平滑化された電流列が追加された |
plot_read_data()
読み込み/プレビューモードで平滑化されたデータをプロットします。
詳細説明:
生のクリップされたデータ (ID_abs_floor) と平滑化されたデータ (ID_smooth) をX軸 (xcol) に対してプロットします。groupcol が指定されている場合、データはグループごとにプロットされ、凡例に表示されます。Y軸はオプションで対数スケールに設定できます。生成されたプロットは、args.save_plot が True の場合、指定されたディレクトリにPNGファイルとして保存されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
読み込み/プレビュー用に処理されたデータを含む |
|
|
X軸としてプロットする列名(例: |
|
|
データをグループ化するための列名(例: |
|
|
プロットのタイトル。 |
|
|
コマンドライン引数を含むオブジェクト。 |
|
|
保存するPNGファイル名のベース。 |
|
|
Y軸のスケール( |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
生成されたMatplotlibの |
run_read_mode()
読み込み/プレビューモードの処理を実行します。
詳細説明:
指定された入力ファイル(伝達特性と出力特性)を読み込み、Imin で電流をクリッピングし、Savitzky-Golayフィルターで平滑化します。その後、処理されたデータをプロットし、結果の概要をコンソールに出力します。伝達特性 (ID-VG) データは対数電流平滑化がデフォルトですが、出力特性 (ID-VD) データは線形電流平滑化と線形Y軸プロットが強制されます。処理されたデータフレームとサマリー情報は、Excelエクスポートのために返されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
コマンドライン引数を含むオブジェクト。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
Matplotlibの |
_normalize_tft_column_name()
測定CSVの列名を解析用の標準名へそろえます。
詳細説明:
例: VG(V) -> VG, Id -> ID。既存の解析コードは VG, VD, ID などの大文字列名を仮定しているため、読み込み直後にここで正規化します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
正規化する列名。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
標準化された列名。 |
_to_numeric_dataframe()
全列を可能な範囲で数値化します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
数値化する |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
全列が数値化された |
_float_meta()
4155/4156系CSVメタデータから float 値を取り出します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
|
|
取得するメタデータのキー。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
取得された |
_int_meta()
4155/4156系CSVメタデータから int 値を取り出します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
|
|
取得するメタデータのキー。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
取得された |
_infer_smu_sweep_variable()
Primary/Secondary掃引に対応する電圧名を推定します。
詳細説明:
Keysight/Agilent 4155系CSVでは、通常 Channel.VName = VD, VS, VG と Channel.Func = VAR2, CONST, VAR1 のようなメタデータがあり、VAR1 がPrimary、VAR2 がSecondaryに対応します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
|
|
掃引の役割( |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
推定された電圧名(例: |
_infer_sweep_values()
Primary/Secondary掃引の値リストをメタデータから推定します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
|
|
掃引の役割( |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
推定された掃引値のリスト。 |
_infer_primary_branch_points()
Primary掃引1枝あたりの点数をメタデータから推定します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
Primary掃引1枝あたりの点数。推定できない場合は |
_is_double_primary_sweep()
Primary掃引がダブル掃引(往復掃引)であるか判定します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
メタデータを含む辞書。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
ダブル掃引である場合は |
_add_4155_inferred_columns()
4155系DataName/DataValue CSVに不足しがちな掃引列を補います。
詳細説明: DataName/DataValueブロックにはPrimary変数、ID、IGだけが保存され、Secondary変数(今回の例ではVD)が各行に書かれない場合があります。その場合、メタデータのSecondary Start/Step/Countから各行のVDを復元します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
処理対象の |
|
|
メタデータを含む辞書。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
掃引列が補完された |
read_4155_dataname_datavalue_csv()
Keysight/Agilent 4155系の DataName/DataValue CSV を読み込みます。
詳細説明:
戻り値は (df, metadata) です。DataValue 行が見つからない場合は (None, metadata) を返し、通常CSV読み込みへフォールバックできるようにします。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
読み込むCSVファイルのパス。 |
|
|
ファイルの文字コード。デフォルトは |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
データを含む |
_read_text_lines_with_detected_encoding()
文字コードをゆるく推定してCSVを行単位で読み込みます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
読み込むCSVファイルのパス。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
ファイルの行リストと推定された文字コードのタプル。 |
detect_and_load()
CSVファイルからTFT解析用データを自動検出して読み込みます。
詳細説明: 対応形式:
既存対応の「列ヘッダ行 + 数値データ行」形式
Keysight/Agilent 4155系の
DataName / DataValue形式
後者では、DataValue ブロックに VD や VG などのSecondary掃引列が明示されない場合でも、メタデータから VD または VG を復元して既存解析コードへ渡します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
読み込むCSVファイルのパス。 |
|
|
|
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
読み込まれたデータを含む |
valid_savgol_window()
指定されたデータ点数に対して有効な奇数のSavitzky-Golayウィンドウ長を返します。
詳細説明:
サビツキー・ゴレイフィルターのウィンドウ長は、多項式の次数よりも大きく、かつ奇数である必要があります。また、データ点数を超えることはできません。この関数は、与えられた制約 (n, requested, order) に基づいて、これらの条件を満たす最小かつ有効な奇数のウィンドウ長を計算して返します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
データ点の総数。 |
|
|
要求されたSavitzky-Golayウィンドウ長。 |
|
|
Savitzky-Golayフィルターの多項式の次数。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
有効な奇数のSavitzky-Golayウィンドウ長。 |
nearest_row_by_current()
データフレーム内で指定された目標電流 (target_id) に最も近い ID_smooth を持つ行を検索します。
詳細説明:
データフレーム df の ID_smooth 列を基に、目標電流値 target_id との絶対差が最小となる行を特定します。見つかった行のインデックスとその行全体のデータを返します。データフレームが空の場合、または ID_smooth 列が存在しない場合は、None を返します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
検索対象の |
|
|
検索する目標電流値 [A]。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
目標電流に最も近い行のインデックスと、その行のPandas |
add_sweep_index()
指定された列の掃引方向の変化に基づいて、掃引セグメントのインデックスを追加します。
詳細説明:
データフレームの指定された列 (col) の値の連続的な変化を分析し、掃引方向が反転するたびに掃引セグメントのインデックスを1つ増やします。これにより、多方向掃引データ(例: VG の往復掃引)を個別のセグメントに分割できます。結果のインデックスは新しい列 (idx_col) としてデータフレームに追加されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
処理対象の |
|
|
掃引方向を検出する基準となる列名(例: |
|
|
生成される掃引インデックス列の名前。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
掃引セグメントインデックス列が追加された |
select_sweep_segment()
掃引方向の変化インデックスに基づいて、DataFrameから特定の掃引セグメントを選択します。
詳細説明:
この関数は、add_sweep_index を使用して、指定された列 (col) の掃引セグメントインデックスを計算し、その後、要求されたインデックス (idx) に対応するセグメントのみをフィルタリングして返します。要求されたインデックスが存在しない場合、利用可能な最初のセグメントがフォールバックとして選択されます。オプションで、選択されたセグメントを col 列でソートできます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
処理対象の |
|
|
掃引セグメントを識別する基準となる列名(例: |
|
|
選択する掃引セグメントのインデックス。 |
|
|
警告メッセージなどで使用するインデックスのラベル(例: |
|
|
|
|
|
|
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
選択された掃引セグメントを含む |
build_analysis_points()
伝達特性解析の主要点をロングフォーマットで返します。
詳細説明:
res 辞書から Vth, Smin, mu_max などの主要な解析ポイントを抽出し、Excelサマリーシートに適したリスト形式で提供します。各ポイントは、その VG, ID, 導関数、移動度などの詳細な情報とともに辞書として格納されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
伝達特性解析結果を含む辞書。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
各解析ポイントのデータを格納した辞書のリスト。 |
region_check_saturation()
飽和領域動作の条件をチェックします。
詳細説明:
トランジスタが飽和領域で動作しているかどうかを判断するために、指定された VG, VD, Vth, および安全係数 (factor) を使用して VD >= factor * (VG - Vth) の条件を確認します。VG-Vth が正でない場合、または条件が満たされない場合は警告が生成されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
ドレイン電圧 [V]。 |
|
|
ゲート電圧 [V]。 |
|
|
閾値電圧 [V]。 |
|
|
飽和領域を保証するための安全係数。デフォルトは |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
飽和領域チェックの結果を含む辞書。 |
region_check_linear()
線形領域動作の条件をチェックします。
詳細説明:
トランジスタが線形領域で動作しているかどうかを判断するために、指定された VG, VD, Vth, および安全係数 (factor) を使用して VG - Vth >= factor * VD の条件を確認します。VD が正でない場合、VG-Vth が負の場合、または条件が満たされない場合は警告が生成されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
ドレイン電圧 [V]。 |
|
|
ゲート電圧 [V]。 |
|
|
閾値電圧 [V]。 |
|
|
線形領域を保証するための安全係数。デフォルトは |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
線形領域チェックの結果を含む辞書。 |
classify_transfer_region()
線形/飽和/中間領域の推奨を返します。
詳細説明: 線形領域チェックと飽和領域チェックの結果に基づいて、現在解析中の動作点が線形、飽和、またはどちらでもない中間領域のどれに属するかを分類します。分類結果と、それに関連する推奨/警告メッセージを返します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
|
|
|
|
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
推奨される領域タイプと、関連する警告/説明メッセージのタプル。 |
analyze_vg_core()
特定 VD スライスの ID-VG から、線形法と飽和法の両方で Vth/移動度を抽出します。
詳細説明:
ID-VG データに基づいて、線形領域(最大相互コンダクタンス gm から)と飽和領域(最大 d(sqrt(ID))/dVg から)の閾値電圧 (Vth) と移動度を抽出します。サブスレッショルドスイング (S) やオフ電流 (Ioff) も計算します。抽出されたポイントの動作領域チェックも行い、推奨される抽出方法を提示します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
全ての |
|
|
解析対象のドレイン電圧 [V]。 |
|
|
コマンドライン引数を含むオブジェクト。 |
|
|
単位面積あたりのゲート酸化膜容量 [F/cm^2]。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
特定 |
annotate_vline()
Matplotlibのプロットに垂直線とテキストアノテーションを追加します。
詳細説明:
指定されたX座標 (x) に垂直線 (axvline) を引き、その線の近くにテキストラベル (label) を回転させて配置します。Y軸の範囲 (ymin, ymax) が指定されていない場合、現在のプロットのY軸範囲が使用されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
プロット対象のMatplotlib |
|
|
垂直線を引くX座標。 |
|
|
垂直線の横に表示するテキストラベル。 |
|
|
垂直線が描画されるY軸の下限。 |
|
|
垂直線が描画されるY軸の上限。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。 |
plot_idvg_quad()
伝達特性解析結果を 2x2 サブプロットとして可視化します。
詳細説明:
ID-VG データに基づいて計算された様々なデバイス特性(ID-VG 曲線、線形抽出、飽和抽出、移動度プロファイル)を2x2のサブプロットとして表示します。各プロットには、Vth, Smin, 移動度最大値などの主要な解析ポイントがアノテーションとして表示されます。プロットはファイルに保存することも可能です。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
|
|
|
コマンドライン引数を含むオブジェクト。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
生成されたMatplotlibの |
print_transfer_report()
伝達特性解析結果をコンソールに整形して出力します。
詳細説明:
analyze_vg_core() 関数によって生成された伝達特性の解析結果辞書 (res) から、線形領域と飽和領域の閾値電圧 (Vth)、移動度 (mu)、サブスレッショルドスイング (Smin)、オフ電流 (Ioff) などの主要なデバイスパラメータを抽出し、コンソールに分かりやすい形式で詳細なレポートを出力します。また、各移動度抽出点における動作領域の適合性チェック結果も表示します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
伝達特性解析結果を含む辞書。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。 |
interpolate_id_at_vd()
単一の VG 出力曲線内で、要求された VD 値における ID の絶対値を線形補間します。
詳細説明:
与えられたデータフレーム (df_vg) が特定の VG での ID-VD データを含んでいると仮定し、vd_target における abs(ID) の絶対値を線形補間によって推定します。vd_target が測定範囲外の場合、またはデータが不足している場合は np.nan を返します。補間は VD と ID 列をソートした後に行われます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
単一の |
|
|
補間したい目標ドレイン電圧 [V]。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
|
analyze_idvd_logic()
TFTの出力特性 (ID-VD) を解析し、デバイスの線形領域特性と移動度を評価します。
詳細説明:
入力された ID-VD データフレームから、以下の解析を実行します:
最大の
VD値における伝達特性スライス (df_full) を用いて、参照閾値電圧 (vth_ref) を抽出します。各
VG値におけるID-VD曲線に対して、線形領域(低いVD)での伝達コンダクタンス (gd) を線形回帰で計算します。低い
VDスライスにおけるID-VGデータから、相互コンダクタンス (gm) とS値を計算します。抽出された
gdとgm、およびvth_refを用いて、実効移動度 (mu_eff) と線形移動度 (mu_lin) を導出します。各移動度抽出点に対して線形領域条件のチェック (
region_check_linear) を行い、警告情報を記録します。解析結果の概要をコンソールに出力し、出力曲線と移動度プロットを生成します。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
|
|
|
コマンドライン引数を含むオブジェクト。 |
|
|
単位面積あたりのゲート酸化膜容量 [F/cm^2]。 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
各 |
make_summary_dataframe()
伝達特性解析結果のリストから、Excel出力用のPandas DataFrame を作成します。
詳細説明:
t_summary リスト内の各解析結果辞書から、Excelサマリーシートに適した主要なパラメータを抽出します。元のデータフレーム (df) や詳細な分析ポイント (analysis_points)、および内部的なインデックス (idx_ で始まるキー) は除外されます。結果はPandas DataFrame として整形され、Excelへのエクスポートに適した形式で提供されます。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
各 |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
主要な解析結果パラメータを含むPandas |
run_analysis()
スクリプトのメイン実行ロジックをカプセル化します。
詳細説明:
この関数は、コマンドライン引数をパースし、ゲート酸化膜容量 (Cox) を計算します。選択された解析モード (read, analyze_idvg, analyze_idvd, all) に応じて、対応するデータ読み込み、解析、プロット生成の関数を呼び出します。すべての結果(生データ、平滑化データ、解析サマリー、詳細分析ポイント)は集約され、最終的に単一のExcelレポートファイルとPNGプロットとして出力されます。プロットは --show_plot が指定されている場合、インタラクティブに表示されます。
出力されるExcelファイル (args.out_excel) には以下のシートが含まれます:
Analysis_Settings: 解析設定の概要。Read_Summary: 読み込みモードのサマリー。Read_Data_VG,Read_Data_VD: 読み込みモードの生データおよび平滑化データ。Summary_Transfer: 伝達特性解析のサマリー。Analysis_Points: 伝達特性解析における主要ポイントの詳細。Data_Transfer_VG_Dep: 伝達特性解析中のVG依存データ。Data_Output_VG_Dep: 出力特性解析中のVG依存データ。
引数:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
コマンドライン引数を含む |
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。解析結果はファイルシステムに出力されます。 |
main()
プログラムのエントリポイントです。
詳細説明:
この関数は、コマンドライン引数をパースし、Excel、PNG、ログファイルの出力パスを準備します。標準出力と標準エラー出力をコンソールとログファイルの両方に出力するように設定した後、run_analysis() 関数を呼び出して主要な解析ロジックを実行します。解析終了後、Tee 機能は解除されます。
戻り値:
名前 |
タイプ |
説明 |
|---|---|---|
|
|
なし。 |