MOSFETモデルの内部状態変数と SPICE シミュレータの役割分担

# BSIM4などのMOSFETモデルの内部状態変数と SPICEシミュレータの役割分担を解説

半導体デバイスシミュレーションでよく使われる SPICE 互換モデルの一つに **BSIM4** があります。  
「BSIM4 は、引数としてステップサイズは必要とせず、端子電圧（$V_{\mathrm{gs}}, V_{\mathrm{ds}}, V_{\mathrm{bs}}$ など）を入力すると、即座にドレイン電流と容量と偏微分値を返してくれる『静的な関数』のように見えるけれど、本当にそれだけなのか？」という疑問を持たれる方も多いのではないでしょうか。

実は、**BSIM4 は内部に状態変数を持ち、過去の履歴（電荷の蓄積など）を考慮した動作を行う“動的”なモデル**です。以下では、その仕組みをできるだけ分かりやすく解説します。

---

## 1. SPICE の回路シミュレーションと「状態」の関わり

### 1.1 回路方程式における未知量

SPICE 型回路シミュレータは、回路全体で **ノード電圧** や一部の枝電流などを未知量とする大きな方程式を解いています。MOSFET は「端子電圧を与えられたときに電流と容量を返す」サブブロックとして扱われます。具体的には下記のようなステップでシミュレーションが進行します。

1. ある時刻 $t_n$ における各ノード電圧を仮定（あるいは前のステップからの解を利用）  
2. モデルに「ゲート・ドレイン・ソース・バルク端子電圧が与えられたときの電流・容量値」を問い合わせる  
3. 得られた電流値・容量値を使って回路方程式を組み立て、未知量を更新  
4. 次の時刻 $t_{n+1}$ に進み、再度同じ計算を繰り返す  

このように、回路全体は「現在の状態（ノード電圧など）」を元に次の状態を決定する **微分方程式系** を解いているわけです。

### 1.2 「容量＝電荷の蓄え」が状態になる

MOSFET にはゲート酸化膜やチャネル近傍、ソース・ドレイン拡散部など、複数の **容量成分** が存在します。  
容量成分は電圧の変化に応じて **電荷 $Q$** を蓄えたり放出したりしますが、これは言い換えると「過去の電圧履歴によって積算された電荷」が存在しているということです。  
この「蓄えられた電荷」が、**BSIM4 内部の状態変数**（あるいは内部状態）として機能し、モデル計算の際に参照されます。

---

## 2. BSIM4 の“内部状態”をより直感的に理解する

### 2.1 一見「静的関数」に見える理由

ユーザがシミュレーションで MOSFET を使うときは、「回路図上でトランジスタを置き、デバイスパラメータ（長さや幅、しきい値など）を設定し、回路解析を実行する」だけです。  
そのため、“$V_{\mathrm{gs}} \rightarrow I_{\mathrm{d}}$” という **単なる静的関数** のように感じるかもしれません。  
しかし、シミュレータが過渡解析や AC 解析を行う際には、内部で **過去の電圧履歴に基づく電荷（容量）の値を追跡**しており、実際には動的な振る舞いを実現しています。

### 2.2 “電荷の履歴”が支配するスイッチング動作

高速スイッチングなど過渡状態を考えると、ゲート電圧が変化するたびにゲート酸化膜やチャネル内外に蓄えられた電荷が放出・再蓄積されます。これは必ずしも「即座にゼロになる」わけではなく、回路の時間定数（MOSFET や周辺回路の容量と抵抗の組み合わせ）を通じて徐々に変化します。  
ここには「どのくらい電荷が溜まっているか」という状態が、まさに履歴情報として効いてくるのです。

---

## 3. 具体的にはどう“動的”になるのか？

1. **チャージベースの計算**  
   - BSIM4 では、ゲート酸化膜やバルク近傍などに分布する電荷を解析的にモデル化しており、**蓄積電荷 $Q$** がどのように変化するかを求めます。  
   - 過去の時刻からの電荷の変化量 $\Delta Q$ は、過渡的な電流や容量の振る舞いに直結します。  

2. **MOSFET の内部端子電圧や表面ポテンシャル**  
   - バルク効果（ボディ効果）をはじめ、チャネル領域の実効電圧やしきい電圧の変化には、内部的な表面ポテンシャルなどが関わっています。  
   - これらも “その時点の端子電圧だけ” でなく、前の動作点との連続性（履歴）を考慮することで値が確定していきます。

3. **シミュレータから見た「状態方程式」**  
   - SPICE で過渡解析をするときは、

     $$
     C \frac{dV}{dt} = i
     $$

     という形の容量電流の方程式（微分方程式）を各デバイス単位で組み上げ、回路全体で連立します。  
   - すなわち、**過去時刻の $V$（およびそれに伴う電荷）の値が、現在の $i$ に影響する**という構造をもっており、これこそ「動的モデル」である証拠です。

---

## 4. SPICE シミュレータが「時間」を扱う仕組み

ここでよくある疑問として、
「**ステップサイズが 1ns のときと 1s のとき、BSIM4 は同じ値を返してしまうのではないか？**  
**大きな時間ステップだと、例えばリーク電流で電荷が抜け続ける現象は考慮されないのか？**」  
というものがあります。

### 4.1 MOSFET モデルとシミュレータの役割分担

- **MOSFET モデル（BSIM4）**  
  「端子電圧・内部状態 $\rightarrow$ ドレイン電流や容量」を計算する。時間ステップ $\Delta t$ そのものは入力しておらず、あくまで“瞬間的”な状態量を返す。  

- **SPICE シミュレータ**  
  「過去の電圧履歴＋MOSFET モデルが返す電流・容量情報 $\rightarrow$ 時間ステップごとに微分方程式を解いてノード電圧を更新」する。  
  つまり、**リークなどの時間に依存する挙動は、シミュレータが微分方程式を数値積分することで最終的に電圧変化へ反映**させている。

#### 4.1.1 「同じ値を返してしまうのでは？」と疑問を持つのは自然

多くの人が、「モデル側は時間ステップを受け取らないから、1ns のステップでも 1s のステップでも同じ値が返ってきそう…」と疑問を抱きます。  
実はこれは**不思議ではない自然な発想**です。初めて MOSFET モデルの仕組みを知った方であれば、むしろ誰しもが一度は思うことかもしれません。  
しかし、その仕組みの裏には、「時間の積分」を SPICE シミュレータが担当し、モデルは常に「端子電圧 $\rightarrow$ 電流/容量」を瞬間的に返すだけ…という役割分担があるのです。

### 4.2 では BSIM4 の仕様書にはどう書かれているか？

BSIM4 仕様書には、「デバイスの物理モデルをどう表すか」「端子電圧からどう電流・容量を計算するか」が詳しく書かれている一方、**「時間ステップ $\Delta t$ を使ってどう積分するか」といったシミュレータ側の数値解法までは触れていません**。  
これは **SPICE シミュレータごとに微分方程式の解法（Gear 法、Trapezoidal 法など）を実装しており、その詳細は各シミュレータのエンジンの仕事** だからです。

---

## 5. まとめ

1. **BSIM4 はチャージベースモデル**  
   ゲート酸化膜やチャネル近傍の電荷を詳細に扱うため、過去に蓄えられた電荷（履歴）が現在の動作特性に影響します。

2. **ユーザが時間変数を直接与えるわけではない**  
   シミュレータが内部で微小時間ステップごとのノード電圧を更新し、過去からの電荷変化を連続的に計算しているため、一見すると「静的」に見えるだけです。

3. **実際には「内部状態」を持つ動的モデル**  
   回路シミュレータは容量・電荷を踏まえた微分方程式を解くことで、MOSFET のスイッチング動作や高周波特性を正確に再現します。

4. **リークなど“時間で変化する現象”も無視されない**  
   - デバイス側は「電流や容量」の式を返す。  
   - シミュレータ側が「何秒流れたか」を積分して最終的に電圧を更新するため、時間スケールが大きいリークでも**長時間シミュレーションであればちゃんと電荷変化が反映される**。  
   - BSIM4 仕様書には、この時間積分手法の詳細は書かれていないが、SPICE エンジンは独自に微分方程式ソルバーを備えており、これがリークなどの時間依存を支えている。

---

## 6. もう一歩踏み込む：長時間スケールや極端なステップサイズの扱い

- **極端に大きいステップサイズを設定したらどうなる？**  
  シミュレータは収束精度を保つために、内部で自動的にステップを細分化することが一般的です。もし大きなステップがそのまま受理されても、数値誤差が増大し、過渡解析が不安定になるかもしれません。  
- **本当にリークを厳密に観測したい場合**  
  長時間かけて少しずつ電荷が抜けていくような現象を正確に見るには、ある程度細かいステップ（または自動ステップ制御）を使って解析すると精度が向上します。  
- **シミュレーション時間を短縮するには**  
  過渡解析中にそこまで厳密な過程を追わなくてもよい場合、ステップサイズをやや大きめにして、必要なときだけ細かく刻む――という調整も行われることがあります。

---

### 最後に

もし、BSIM4 が「純粋に端子電圧 $\rightarrow$ 電流を与えるだけ」の静的関数であれば、時間方向の解析（過渡解析）を正確に行うことは困難です。  
実際には **内部に“状態変数”としての電荷や表面ポテンシャル**などを抱えており、SPICE シミュレータは微分方程式としてそれらを解くことで、過去の履歴を踏まえた動作点が決まるのです。  

こうした仕組みのおかげで、BSIM4 は現実の MOSFET 動作に近い高精度のシミュレーション結果を得られるよう設計されています。  
「BSIM4 は静的モデルか？」と問われれば、**答えは「いいえ、内部に状態変数を持ち、動的特性を考慮するモデルです」** ということになります。

---

### 参考リンク / ドキュメント
- [Berkeley BSIM4 Official Site](https://bsim.berkeley.edu/models/bsim4/)  
- 各種 SPICE ツールのユーザガイド（HSPICE, Spectre, LTspice など）  
- BSIM4 のパラメータと方程式が網羅されたユーザーズマニュアル・Technical Manual  

以上