2.2 CMOSインバータの直流解析

2.2.1 直流伝達特性の解析

2.1節で、ネットリストを作成したが、入力電圧VXには、初期状態として DC 0V(直流 0V)を与えていた。ここでは、この電圧を変数にして、直流伝達特性(直流入力電圧 vs. 直流出力電圧)を調べる。

前ページで作成したSPICE入力ファイルinv1.spをテキストエディタで開いて、.ENDの行より前に、次の1行を挿入する。行頭の.(ピリオド)を見落とさないように注意。SPICEでは、先頭のタイトル行と最後の.END行の間なら、どういう順番で行を記述してもよい。しかし、ネットリストとシミュレーション制御コマンドは、分離しておいた方が解り易い。

.DC VX 0V 3.3V 0.01V

この意味は、下記のとおり。

.DCVX0V3.3V0.01V
直流解析(直流電圧の掃引)コマンド電圧掃引する電源名掃引開始電圧掃引終了電圧電圧変化ステップ

2.1節では、勘に頼って W=1.0u (M1), W=2.5u (M2) の値を与えた。ディジタル回路では、CMOSのペアとなるMOSFETのサイズは、通常、p-ch MOSFETのWが、 n-ch MOSFET のWの1.5〜3倍程度である。MOSFETサイズの影響を調べるために、パラメトリック解析(パラメータを変えながら解析)を行う。SPICE入力ファイルに次の変更を行う。

M2行: W=WP

この変更により、M2 のゲート幅がパラメータ WP の値により変更される。このパラメータ変数はどのような文字列でも良いが、他のパーツ名と重ならないように注意しよう。尚、パラメータは、電圧源の電圧、電流源の電流にも適用できる。パラメータの値は、.DC 行に SWEEP オプションを追加することにより設定できる。下記のように .DC 行を変更しよう。

.DC VX 0V 3.3V 0.01V SWEEP WP POI 3 0.5u 2.5u 9.0u

この意味は、下記のようになる。

.DC VX 0V 3.3V 0.01VSWEEPWPPOI 30.5u 2.5u 9.0u
上述のとおりパラメータ変更して掃引を繰り返すオプションパラメータ変数パラメータ3点でシミュレーションするパラメータ値リスト(スペースで区切る)

これを実行すると、WP=0.5u, 2.5u, 9.0u の3点に対して、VX = 0〜3.3Vの掃引が行われる。ついでに、次のようなパラメトリック解析オプションの書き方も覚えておこう。(これは実行しなくてもよい)

.DC VX 0V 3.3V 0.01VSWEEPWP0.5u9.5u1u
上述のとおりパラメータ変更して掃引を繰り返すオプションパラメータ変数パラメータ開始値パラメータ変化終了値パラメータ変化ステップ

2.2.2 SPICEの実行

コマンドターミナル上で次のコマンドを実行して HSPICE を使用するための準備をする。

vlsi> setlic[RET]

CADツールリストが表示されるので、6 [RET]を入力して、6 Hspice を選択する。setlic は、コマンドターミナルに対して1回だけ実行すればよい。

vlsi> cd ~/islab[RET]
vlsi> hspice inv1.sp[RET]

setlicは、CADツールを動かすための環境変数を設定するスクリプトプログラムである。1つのシェルに対して1回実行すればよい。~/islabは、1.3節で作成した実習用ディレクトリである。実習で作成するファイルが他のファイルと混じらないよう、常にこのディレクトリ内で実習を行うこと。hspiceは、HSPICEの実行コマンドであり、引数にSPICE入力ファイルを指定する。

>info: ***** hspice job concluded

と表示されたら成功!

>error ***** hspice job aborted

というメッセージが表示されたら、どこかにエラーがあるか、または数値解析が収束していないので、表示された画面や拡張子が.st0となっているファイルを開いてエラーの種類を調べてみよう。

レポート課題1直流解析の方法
(1) 直流解析に使用した入力ファイル(inv1.sp)は、レポートの実験方法の章に貼り付けるため、保存しておくこと。TeXでソースリストを貼り付ける場合は、\begin{verbatim}, \end{verbatim}を使用する(TeX雛形ファイルを参照)。ただし、レポートでは、入力ファイルを貼り付けるだけでなく、どのような条件設定(設定温度、電源電圧、入力電圧の掃印範囲、W(M1), W(M2), L(M1), L(M2) の値、入力ノードの番号、出力ノードの番号など)でシミュレーションを行ったか説明すること。

2.2.3 グラフの表示

HSPICE等のシミュレーション結果を表示および解析するツールとして、CosmosScopeというツールがインストールされている。このツールを使ってシミュレーション結果のグラフを作成する。SPICE入力ファイルに、.OPTION POSTが記述してあると、CosmosScopeで表示可能な波形ファイルがHSPICEにより自動生成される。CosmosScopeは下記のコマンドを実行して起動する。ただし、source は、コマンドターミナルに対して1回だけ実行すればよい。

vlsi> source /user/synopsys/cshrc.hspice.0903 [RET]
vlsi> cscope &[RET]

信号の選択

  1. CosmosScopeのメインウインドウが立ち上がったら、メニューバーから File | Open | Plotfiles を選ぶ
  2. Open Plotfiles フォームが現れるので、ファイルのリストから、表示したい回路に対応するファイル名を左クリックで選択し、Open ボタンを左クリックする(今回は、inv1.sw0を選択)
  3. 拡張子 .sw* は直流解析(電圧-電流特性)であることを示し、.ac* は交流解析(周波数特性)、.tr* は過渡応答解析(時間領域波形)のデータであることを示している
  4. 図2.3のようなinv1.sw0ウインドウに信号リストが表示されているので、表示したい電圧名または電流名を左クリックで選び、Plotボタンを左クリックするとグラフウインドウに特性が表示される(カッコ内の数字はネットリストのノード番号に対応ている)
  5. ここでは、入力電圧v(3), 出力電圧v(4), ドレイン電流i(vcm1)を表示
signals
図2.3 信号リスト

グラフの加工

図2.4のようなグラフを作るには、

  1. グラフウインドウで、凡例として表示されている信号名v(3)を信号名v(4)の付近または重ねたいグラフの上までドラッグすると、2つのグラフが1枚のグラフにまとめて表示される
  2. X軸、Y軸の目盛りや数字をダブルクリックするとAxis Attributeフォームが現れ、表示範囲やスケールが変更できる。(Linux上では、バグのせいか、数値が変更できないことがあるので、虫眼鏡アイコンを使用する)
  3. X軸、Y軸の名前は自動的に表示されない。上記のAxis Attributeフォームで、Axis Label欄に、適切な縦軸と横軸の名称を入力しておくこと。ここでは、横軸に、Input voltage [V]、縦軸に、Drain Current [A] または Output voltage [V] を設定しておく。
  4. グラフを削除するには、グラフウインドウから削除する信号名を選んで、メインウインドウのメニューから Edit | Delete を左クリック
  5. 目盛り線を表示するには、メインウインドウのメニューから Graph | Toggle Axis Grid を選ぶ
  6. グラフに文字や図形を書き込むには、メインウインドウのメニューから Tools | Drawing Tool を選ぶ
  7. パラメータを変更してシミュレーションを行った場合は、同一信号名の複数のカーブが同じ色で表示されているので色を変え、パラメータ値とカーブの対応関係を確認しよう。方法は、メインウインドウのメニューから、Graph | Members...を選ぶと、図2.5のMember Attributes ウインドウが現れるので、Rainbow Colored をクリックする
  8. パラメータの値をグラフ上に表示させるには、メインウインドウのメニューから、Graph | Members...を選ぶと、図2.5のMember Attributes ウインドウが現れるので、Show All Labels をクリックする。文字が重なって表示される場合は、文字や矢印の先端をドラッグして移動させよう。
  9. パラメータの値は丸め誤差により、設定値とわずかに異なるかもしれない。設定値を表示したい場合は、メインウインドウのメニューから、Tools | Drawing Tool を選んで、Textの手入力により、グラフに値を書き込む。
cscope Main Window
図2.4 グラフ表示(メインウインドウ)

cscope Member Attributes
図2.5 Member Attributes ウインドウ

[注意] 図2.4は、縦軸と横軸の名前がデフォルト値となっていて、何を表しているのかはっきりしない。グラフの加工の説明に従い、各軸の名称を設定しておこう。ここでは、横軸をInput Voltage [V], 縦軸(上)をCrossing Current [A], 縦軸(下)をOutput Voltage [V] などとすると良いだろう。今後作成するグラフでも同様に軸の名称を付けること。

2.2.4 シミュレーション結果の検討

上記の手順を参考にして、Vz(出力電圧v(4))- Vx(入力電圧v(3))のグラフと、I(vcm1)(M1, M2のドレイン電流)- Vx(入力電圧v(3))のグラフを作成せよ。

入力電圧を増やしていくと出力電圧が急に変化するところがある。この電圧がインバータの閾値 Vinv である(MOSFETの閾値とは異なる)。Vinv よりも低い入力電圧では、出力は高電圧となり、Vinvより高い入力電圧では、出力は低電圧となる。また、Vinvの付近だけ、I(vcm1)が流れている。これは、Vinvの付近では、トランジスタM1, M2の両方がON状態になっているためである(貫通電流)。

各WPに対するインバータの閾値Vinvを測定せよ。Vinvは、I(vcm1)が最大となるVxの値を読み取ることにより得られる。実は、VinvはMOSFET M1とM2の(W/L)に依存して決定されている(この理由については集積回路工学第1で取り扱う)。

グラフの読み取りと2次加工

  1. メインウインドウのツールバーで、図2.6のX軸またはY軸のボタンを左クリック
  2. グラフ上でカーブを左クリックし、マウスカーソルを移動させると、どれかの曲線上にマーカーが移動し、マーカの位置の値が表示される
  3. 複数のカーブがある場合は、マウスが近いカーブ上にマーカーが現れる
cscope Member Attributes
図2.6 ツールバー

  1. メインウインドウのメニューから、Tools | Measurement Tool を選ぶと、図2.7のような Measurement フォームが表示される
  2. Measurement: 欄右側の矢印を左クリックし、リストから Levels | Maximum をクリック
  3. 表示項目リストで Maximum が選ばれていることを確認
  4. Signal: 欄右側の矢印を左クリックし、リストからi(vcm1)を選ぶ
  5. Create New Waveform on New Graph: 右側の矢印を左クリックし、リストから、New Graph を選ぶ
  6. Applyボタンを左クリックすると、I(vxm) のパラメータ wp 依存性のグラフが表示される
  7. 図2.8の例は、i以上の方法で、パラメータWP(p-ch MOSFETのゲート幅)に対するドレイン電流i(vcm1)の最大値をプロットしたものである。シミュレーションを行ったwpに対する
cscope Member Attributes
図2.7 Measurement フォーム

cscope Member Attributes
図2.8 パラメータ依存特性のグラフ表示

同様の手順で、パラメータWP(p-ch MOSFETのゲート幅)に対する Vinv のグラフも作成しておこう。

  1. メインウインドウのメニューから、Tools | Measurement Tool を選ぶ
  2. Measurement: 欄右側の矢印を左クリックし、リストから General | Crossing をクリック
  3. Signal: 欄右側の矢印を左クリックし、リストからv(4)(出力電圧)を選ぶ
  4. Ref. Signal: 欄右側の矢印を左クリックし、リストからv(3)(入力電圧)を選ぶ
  5. 表示項目リストで X at Crossing vs. wp が選ばれていることを確認
  6. Create New Waveform on New Graph: 右側の矢印を左クリックし、リストから、New Graph を選ぶ
  7. Applyボタンを左クリックすると、Vinv のパラメータ wp 依存性のグラフが表示される
2.2.5 グラフの保存

グラフの保存

グラフを後で加工する必要がある場合は、CosmosScopeのグラフフォーマット(拡張子 .ai_graph)で保存しておく。

  1. メインウインドウのメニューから、File | Save Graph を選ぶ
  2. Saveフォームが表示されるので、File name: 欄にファイル名を入力して Save ボタンを左クリック
  3. データの読み込みは、メインウインドウのメニューから File | Open | Graph で拡張子.ai_graph のファイルを読み込む

印刷・提示用データの出力

紙に印刷する場合は、背景が黒のままでは見にくいので、背景色を白に変更し、標準的に使用されているフォーマットで保存する。メニューから、Graph -> Color Map -> Map 2 または Mono を選択すると背景が白のグラフとなる。

EPSフォーマットで保存しておけば、後で印刷したり直接TeXに貼り込んだりできる。OpenOfficeやHTMLに貼りこむ場合は、pngフォーマットなどで保存するとよいだろう。(jpegフォーマットは、グラフや文字のような細い線が見づらくなるので避けよう)

EPSフォーマットで保存する場合の例:

  1. メインウインドウのメニューから File -> Export Image... を選ぶと、Export Image フォームが現れる
  2. File of type 欄を左クリックして、Postscriptを選ぶ
  3. File name を入力してSave ボタンを左クリック。保存したいファイルフォーマットに合わせて、ファイル名には .ps または .eps の拡張子を付けておくこと。
  4. 保存したPS, EPS等のグラフは、GIMP等で確認することができる
各種のイメージのフォーマットの変換:

vlsi> convert fig01.png eps2:fig01.eps
(fig01.pngからfig01.epsを作成する場合)

レポート課題2直流解析の結果とデータの処理
(1) Vz(出力電圧)- Vx(入力電圧)のグラフと I(vcm)(M1, M2のドレイン電流)- Vx(入力電圧)のグラフを保存し、レポートに貼付け、シミュレーションの実行条件(入力電圧の範囲、M1のW, M2のWの値、温度など)等を説明せよ。M2のWの値をグラフ中に記入しておくこと。
(2) 入力電圧の範囲が、マイナスやVDDより大きい値になったとき、何が起こるか試してみよう。グラフを保存し、レポートに貼り付けること。
(3) インバータの閾値Vinv - W(M2)のグラフと、I(vcm)の最大値Imax(vcm) - W(M2)のグラフを保存し、レポートに貼付せよ。W(M1)はM1のW、W(M2)はM2のWを表す。測定点が3点しかないので傾向がはっきりわからないと思う人は、M2のWを多数変化させてシミュレーションを行うこと。

レポート課題3直流解析結果の考察
(1) 入力電圧がマイナスのときとプラスの時で特性が異なっているだろうか。もし、異なっているのであれば、その理由について自分なりの考えを考察として述べよ。
(2) どの(W(M2)/W(M1))の値のとき、Vinv = VDD/2に近くなるだろうか? また、ディジタル回路として、どの (W(M2)/W(M1)) の値が最適だろうか。そのように考えた理由もあわせて説明せよ。


INDEX
お問い合わせはこちらまで: kitagawa@is.t.kanazawa-u.ac.jp

Copyright © 2001 Akio Kitagawa, Kanazawa Univ. All rights reserved.