SPICEシミュレータとBSIM4モデルの協調
SPICEシミュレータとBSIM4モデルの協調
- MOSFETモデル(BSIM4)が返す情報の全体像
1.1 端子電圧 → 物理パラメータ → 電流・容量・偏微分
BSIM4の実装コード(C/C++やVerilog-Aなど)では、ユーザが指定するMOSFETパラメータ(しきい値電圧や移動度係数など)と、SPICEから与えられる端子電圧 \displaystyle (V_g, V_d, V_s, V_b) を用いて、以下を計算します。
1. チャネル電流 I_d
• 短チャネル効果やチャネル長変調、サブスレッショルド領域などを考慮し、ドレイン電流がどう変化するかを式で評価。
2. 寄生容量・ダイオード容量
• ゲート–ドレイン/ゲート–ソース/ゲート–バルクの各容量(\displaystyle C_{gd}, C_{gs}, C_{gb})や、ドレイン–バルク/ソース–バルクの接合容量(\displaystyle C_{db}, C_{sb})など。
3. 接合ダイオード電流
• バルク–ドレイン、バルク–ソースのpn接合電流を電圧依存で算出。
4. 偏微分係数(ヤコビアン要素)
• \displaystyle \frac{\partial I_d}{\partial V_g}, \frac{\partial I_d}{\partial V_d}, \ldots といった微分値や、必要に応じて容量の電圧微分などを返す。
これらの値はすべて**「モデルが端子電圧を読み取り、物理パラメータを使って計算した結果」**として返されます。モデル自体は、回路全体を解くわけではなく、この局所的な“デバイス特性”を提供するのが仕事です。
- SPICEシミュレータが行うこと
2.1 ネットリスト解析とインスタンス生成
1. ネットリスト読込
• たとえば「M1 drain gate source bulk mymodel L=… W=…」といった記述から、デバイス名(M1)や各端子(drain, gate, source, bulk)のノード番号を割り当てる。
• 同時に「mymodel」に紐づくBSIM4パラメータ(.MODELステートメントや.libファイル)を読み込み、初期設定を行う。
2. インスタンス構造の準備
• シミュレータ内部で「M1に対応する内部インスタンス」を生成し、そこにL, W, さらにBSIM4モデルのパラメータ群をひも付ける。
• ここではまだ電流や容量は計算しないが、「後からBSIM4モデルを呼び出すためのフック」が用意される。
2.2 MNA行列構造の用意
• Modified Nodal Analysis (MNA) の枠組み
• シミュレータは「ノード数+電圧源数」に応じた行列やベクトルの大きさを決定し、メモリを確保。
• BSIM4に対応している場合、「MOSFETのゲート–ドレイン容量は最終的にどこの行列要素に足し込まれるか」などがプログラム済みになっている。
- 「呼び出し→行列更新→解く」の具体的ステップ
3.1 DC解析や過渡解析の1ステップの流れ
1. シミュレータ:推定ノード電圧を用意
• DC解析なら最初は0Vや簡単な初期解、過渡解析なら前の時刻ステップの結果などを流用。
2. MOSFETモデル(BSIM4)を呼び出す
• このインスタンスの端子電圧 (V_g, V_d, V_s, V_b) を計算し、BSIM4コードに渡す。
• コードは先述の \displaystyle I_d, C_{gd}, \frac{\partial I_d}{\partial V_g} などを返す。
3. 行列スタンピング
• ゲート–ドレイン容量なら行列上の「(ゲート, ドレイン)」間へ該当コンダクタンスや電流源(過渡解析のコンパニオンモデル)を加算。
• ドレイン電流ならドレイン・ソースKCLへの電流源として計上し、ヤコビアン要素も組み込む。
4. 連立方程式を解く
• DC解析→ニュートン–ラプソン法、過渡解析→同じニュートン–ラプソンの反復を時刻ごとに行うなど。
• 解が収束しない(誤差が大きい)場合は再度モデルを呼び出して値を更新→行列を再スタンピング→解く…を繰り返す。
3.2 AC解析の場合
• 小信号解析
• 動作点(DC解)が決まったあと、MOSFETモデルは「ゲート容量やトランスコンダクタンス(g_m)などの微分パラメータ」を返す。
• シミュレータはそれを小信号行列(線形行列)に反映し、周波数をスイープして解を得る。
• MOSFETモデル側でも、AC解析用の小信号パラメータを計算するロジックが備わっており(例: \frac{\partial I_d}{\partial V_g}など)、やはりシミュレータがその情報を行列にスタンピングする形をとる。
-
なぜMOSFETモデルは「等価回路図」を直接出力しないのか
• 等価回路図はあくまで解説用の概念
• BSIM4仕様書には、ゲート酸化膜容量やフリンジ容量、ドレイン–バルクダイオードなどを回路素子に見立てた図がある。しかし、実装は**「端子電圧→数式評価→結果を返す」**という関数で行われる。
• SPICEシミュレータがスタンピングを行う構造を既に持っている
• ユーザが「サブサーキット」としてC要素やD要素を記述しなくても、SPICEはモデルが返す容量や電流を行列に組み込む仕組みをあらかじめ用意している。 -
さらに詳しい要素:偏微分と非線形解法
5.1 偏微分(ヤコビアン)の重要性
• 非線形素子(MOSFET)は、電圧–電流特性が複雑なため、ニュートン–ラプソン法を使って解を反復する。
• モデルが返す「\displaystyle \partial I_d/\partial V_g」などの値が正しくないと、解が収束しづらい・遅い・不安定になるなどの問題が起こる。
• BSIM4は細かい領域分割(弱反転/強反転など)や電圧依存パラメータを考慮するため、正確な偏微分計算が欠かせない。
5.2 スタンピングへの反映
• たとえば「ドレイン電流 I_d のゲート電圧微分」は、行列の(\mathrm{drain_node}, \mathrm{gate_node})成分に追加される。
• シミュレータは、モデルが返す偏微分を「コンダクタンスの一部」として組み込み、\mathbf{J},\Delta \mathbf{x} = -\mathbf{f}(\mathbf{x}) を解いてノード電圧をアップデート。
-
ユーザにとっての最終的な利点
- 自由度の高いMOSFETモデル
• BSIM4のような高度モデルを使えば、実際の微細プロセスに近いシミュレーションができ、設計の信頼性が高まる。 - 実装の面倒が少ない
• ユーザは“.MODEL”やパラメータファイルを指定するだけで、SPICEシミュレータが行列形成や解法を自動でやってくれる。 - 汎用性と将来性
• SPICEシミュレータは「非線形行列の解法」という根幹部分を共通化し、BSIM4など各種モデルは「物理計算」に特化する。
• 将来、BSIM5(仮)など新モデルが出ても、モデル側で物理式を更新すれば、シミュレータは同じ枠組みで使える。
- 自由度の高いMOSFETモデル
-
まとめ
• MOSFETモデル(BSIM4):
• 端子電圧とパラメータから、チャネル電流や寄生容量、ダイオード電流、偏微分係数を計算して返す“プログラム”。
• 等価回路は概念図で、実際にはモデル内部で数式評価するのみ。
• SPICEシミュレータ:
• 回路全体のノード割り当てやMNA行列の初期構築を行い、BSIM4モデルを呼び出しながら行列をスタンピング。
• ニュートン–ラプソン法、過渡解析のコンパニオンモデル化などを通じてノード電圧を求める。
両者が**「端子電圧 \to モデル計算 \to 行列スタンピング \to 連立方程式解」の流れを繰り返すことで、最終的に回路の挙動が得られます。
BSIM4対応のSPICEシミュレータは、仕様書に定義された物理式に合わせてどのノード間に何をスタンピングすれば良いかをプログラム済み**であり、ユーザは「.MODEL指定やネットリスト」を用意するだけで、複雑な短チャネル効果や寄生容量を自動的に扱えるのです。
おわりに
上記のように、MOSFETモデルとSPICEシミュレータは役割を分担しつつ、常に相互やり取りを行って非線形回路方程式を解いています。理解しておくと、シミュレータの収束トラブルやMOSFETモデルのパラメータ調整を行う際にも役立ちます。ぜひご活用ください。
Discussion