2.1 CMOSインバータの設計とネットリスト記述

2.1.1 回路構成と動作原理

Schematic of Inverter
図2.1 CMOSインバータ (NOT)
図2.1の回路は、CMOSインバータと呼ばれ、最も基本的なCMOS論理回路である。M1は、GND側がソースに接続してあり、M2は、ソースにVDDを接続してある。M1, M2 をゲート電圧で制御されるスイッチと考えると、

入力電圧Vx (V)トランジスタの状態出力電圧Vz (V)
VDDM1="ON", M2="OFF"0
0M1="OFF", M2="ON"VDD

となっているので、出力立上りの時はM2に電流が流れ、立下りの時にはM1に電流が流れる。M1, M2の電流が同じになるようにしておけば、出力パルス波形の立ち上がり時間と立ち下がり時間が等しくなり、パルス波形の歪みは少なくなるはずだ。

2.1.2 MOSFETのサイズ

各MOSFETのサイズは、試しに表2.1のように定めてシミュレーションを行う。ゲート幅 W は、p-ch MOSFET と n-ch MOSFET で、ON 状態の時に大体同じ電流値となるように、2.5倍の差をつけてある。

表2.1 各MOSFETのサイズ
LabelM1M2Structure of MOSFET
ゲート長 L (m)0.5u0.5u
ゲート幅 W (m)1u2.5u
ソース, ドレイン長
DL, SL
(m)
1.5u1.5u

M1のドレイン面積ADとソース面積ASは、AD = AS = W x DL = 1.5p (m2)。M2については、AD = AS = W x DL = 3.75p (m2) である。

【参考】より正確なトランジスタの特性をシミュレーションしたい場合は、PD(ドレイン周囲長[m]), PS(ソース周囲長[m])の値も設定すること。

2.1.3 ネットリスト

回路図は、コンピュータが処理しやすいネットリストと呼ばれる形式で表現されている。ネットリストは、回路図からコンピュータにより自動的に作成することもできるが、この実習ではネットリストを直接テキストエディタで書くことにする。標準的なSPICEネットリストのフォーマットを知ることは、回路シミュレータの動作を理解するのに役立ち、また、シミュレーション時エラーの原因を特定するのに役立つ。また、多種類の小さい回路をシミュレーションする場合、複雑で重いCADツールを使用するよりも手軽である。ここでは、ネットリストの詳しい文法解説は省略して、実用上必要な記述方法のみを説明する。

M1, M2 に流れる電流を調べるために電流計VCM1, VCM2を挿入した回路を図2.2に示す。このインバータ特性測定回路に基づいてSPICEネットリストを作成する。M1, M2 のデバイスモデル名は、それぞれNMOS3, PMOS3とする(デバイスモデル名は半導体メーカが指定する)。MOSFETのソースとドレイン端子を間違えないように注意すること。M1, M2ともに、B(基板)端子が接続されている側がソース端子である。電源電圧VDD=3.3V。負荷容量CLの値は、出力に繋がる配線やゲートの入力容量により変化する。ここでは、10fFとしておこう。

CMOS Inverster on SPICE
図2.2 SPICEシミュレーション用CMOSインバータ回路
図2.2の回路は、図2.1の回路に素子定数を記入したものである。MOSFETの寸法は図中に(L/W)として表記してある(表2.1の値と同じ。但し、u(マイクロ)は省略してあるので注意)。

図中の (1) - (4) と記載した番号は、ノード番号またはネット名と呼ばれ、各ネット(配線)に付された番号である(文字列でもよい)。ネットリストでは、このノード番号を用いて接続関係を記述する。ノード番号の付け方には決まりはないが、GND(基準電位)のノード名として、0(ゼロ)が予約されている。

[テクニック] VCM1, VCM2 は、0Vの理想電圧源であるので、回路としては意味を持たないが、M1とM2のドレイン-ソース間の電流を測定するための電流計として挿入してある。SPICEでは、電圧源に流れる電流を調べることができるので、このように回路に影響の無い0V電圧源が電流計として使用される。電流の向きは、電圧源の+から流れ込む電流が+と定義されている。

[参考] 厳密には、ネット(配線)名、入・出力ポート名、信号名は、別のものであるが、SPICEでは全部同じ名前で表現される。一々定義する必要がないため、簡潔な記述ができる反面、言葉で説明しようとすると混乱しやすい。

2.1.4 ネットリスト記述方法

リスト2.1 インバータのネットリストとシミュレーション制御コマンド
リスト説明
CMOS Inverter ver.1
* designed by Hoge Hoge,
* 1/1/2000

**** Netlist ****
VDD   1 0 DC 3.3V
VX    3 0 DC 0V
VCM1  5 0 DC 0V
VCM2  1 2 DC 0V
M1    4 3 5 5 NMOS3 
+L=0.5u W=1.0u AD=1.5p AS=1.5p
M2    4 3 2 2 PMOS3 
+L=0.5u W=2.5u AD=3.75p AS=3.75p
CL    4 0 10fF
.LIB 'ic1.lib' typ

**** Simulation ****
.OP
.OPTION LIST POST NODE
.TEMP 25
.END
1行目は、タイトル行。回路の名前を書いておくとよい。
*の後ろはコメント。日付と氏名(Hoge Hogeの部分)を書いておくこと。これは、バージョン管理のため重要である。

ネットリストの各行が、パーツ(部品)1つに対応し、パーツ名 接続ノード番号リスト 素子値の順にスペースで区切って記述する。例えば、電圧源の場合、

VDD10DC 3.3V
パーツ名+端子のノード番号−端子のノード番号直流3.3V

のように記述される。パーツ名は先頭文字以外は、任意の名前をつけてよい。先頭文字は、デバイスの種類を表す。表2.2によく使用する先頭文字の例を示す。また、表2.3にスケール記号を示す。MOSFETの記述フォーマットは、以下のとおり。

M14355NMOS1L=1u W=8u AD=8p AS=8p
パーツ名D端子ノード番号G端子ノード番号S端子ノード番号B端子ノード番号デバイスモデル名デバイスモデルパラメータ代入文
(注)1パーツの記述は1行に書く。途中で改行したければ、左の例のように、改行後の先頭に + を記入することで、前の行の続きとみなされる。

デバイスモデルパラメータの値は、左の例のように直接代入することができる。MOSFETの場合(表2.1の図参照)、L(ゲート長)、W(ゲート幅)、AD(ドレイン領域面積=W*DL)、AS(ソース領域面積=W*SL)を定義する必要がある。この他、ドレイン周囲長PDやソース周囲長PSも指定すると、ドレインとソース領域の形状を考慮したより正確なシミュレーションができる。

.LIBコマンドは、使用するデバイスモデルライブラリを指定する。この例では、デバイスモデルライブラリファイル=ic1.libのなかの、ライブラリtypの中に記述されている NMOS3, PMOS3 を使用するため、この.LIBコマンドを使用している。

.OPコマンドは、直流動作点の算出を行い、リストを出力する。.OPTION LIST POST NODEはシミュレーション結果のファイル出力制御のためのオプションである。.TEMPでは、回路が置かれている温度を設定する。.TEMPの後ろの数値は摂氏温度を示す。.OP, .OPTION LIST POST NODE, .TEMP 25については、「おまじない」と考えていつも付けておくとよい。

.ENDは、SPICE入力情報の終わりを表す。これは必ず必用。

[その他]

  1. 大文字と小文字は区別されない
  2. 素子値の単位(V, A, Fなど)は付けなくてもよい。付ける場合は数値との間にスペースを空けないこと
  3. 先頭に+(プラス)記号を書くと、前行のパーツの続きと見なされる
  4. 先頭が.(ピリオド)で始まる文字は、SPICEに対するコマンドである(.LIB, .OPTIONなど)。.(ピリオド)を見落としやすいので注意
  5. 先頭にスペースを空けてはいけない
  6. .END の後に改行を入れておくこと

表2.2 先頭文字の意味
先頭文字VIMQDRCLE
デバイス電圧源電流源MOSFETバイポーラトランジスタダイオード抵抗容量インダクタ電圧制御電流源
この他にもいろいろある。

表2.3 スケール記号
記号fpnumKMEGGT
指数部の大きさ1e-151e-121e-91e-61e-31e+31e+61e+91e+12
メガ=MEGと記述することに注意。

2.1.5 ネットリストの作成

ネットリストをテキストエディタ(emacs など)で入力して、inv1.spというファイル名で保存せよ。本ページからコピー&ペーストしてもよい。但し、行頭に不用なスペースが入らないよう注意すること。また、編集日時と氏名をコメント行に記入しておくこと。


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

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