SPICE3簡易説明書

SPICE3 簡易説明書
芝浦工業大学
Ver. 20080731
電子情報システム学科
渡部英二
1 まえがき
SPICE3 とは,1960 年代後半から 1970 年代前半にかけてカリフォルニア大学バークレイ校で開発された回
路解析プログラム SPICE の 3 番目のバージョンで,SPICE2 に対して X ウィンドウ上のユーザーインター
フェースを付加したものである.SPICE は,世界的に幅広く受け入れられている標準的回路解析プログラム
であり,解析機能や精度を向上させた多数の商用バージョンもある.PSPICE3 は教育目的で開発・配付され
ているもので,実際の回路設計現場で使うのには解析機能や精度の点で力不足であるといわれている.とはい
え,直流解析や交流解析,過渡解析,雑音解析,フーリエ解析等を行うことができるので,回路科目を学習し
ながら使う回路解析プログラムとしては十分な機能を有している.
本説明書では,まず “入力ファイル作成規則” について述べる.ここでは SPICE3 に入力するファイルを作
成するために最低限必要と思われる規則を説明する.次の “入力ファイルの例” では,エミッタ接地増幅回路
の入力ファイル作成例を示す.本説明書を実際に読む際には,この “入力ファイルの例” を見ながら読み進め
て行くと規則の理解が容易である.最後の “入力ファイルの作成と SPICE3 の実行” では,入力ファイルの編
集方法とその SPICE3 での実行方法,および結果を PC の画面やプリンタに出力する方法等について述べる.
本説明書では,SPICE3 を体験するために必要な最低限の事柄だけを述べている.このため,SPICE3 全体
の機能を知るには,これだけでは不十分であることに留意されたい.
2 入力ファイル作成上の規則
SPICE3 を用いて回路解析を行うためには,まず回路の接続状態や素子値,解析の種類などを記述したファ
イルを作成する必要がある.これを入力ファイルあるいはと呼び,回路を記述したステートメントのことを
ネットリストと呼ぶ.以下では,入力ファイルを作成する上での規則の概要を述べる.
2.1 入力フォーマット
SPICE3 の入力フォーマットは,基本的にフリーフォーマットである.欄の区切りには,通常スペースが用
いられる.ただし第一行はタイトル行で,この行には回路の接続状態や素子値,解析の種類などを書くことは
できない.また,データの最終行は,.END で終らなければならない.これ以外の記述の順序は自由である.
アスタリスク (*) で始まる行はコメント行と解釈されるので,記述を見やすくするために適当にコメントを挿
入しておくとよい.*1 .入力ファイル内では大文字と小文字の区別はない.
2.2 回路素子の記述
SPICE3 では回路素子の記述は,基本的に,
素子の名前 接点番号 素子値もしくはモデル名
というフォーマットをとる.
まず最初の “素子の名前” では,素子の種類を区別するために最初の 1 文字が素子種を表すと定められて
いる.例えば,抵抗は R,コンデンサは C,トランジスタは Q 等である.これに続く文字列は,その素子の
*1
著者の使用しているバージョン (spice-3f5) では,スペースで始まる行もコメント行と解釈される.
–1–
名前を表している.以下では,この文字列を****で表す.次に,その素子が接続されている “節点番号” を記
述する.接点番号の付け方は任意で,数字が連続している必要はないが,接地点の接点番号は必ずゼロでな
ければならない.最後に,“素子値もしくはモデル名” を記述する.素子値を表す場合に,補助単位 K(kilo),
MEG(mega), U(micro),N(nano) 等が使用できる.以下に主な素子の記述方法を挙げる.
1. 抵抗
R**** 節点番号 節点番号 素子値
2. コンデンサ
C**** 節点番号 節点番号 素子値
3. 電圧源
V**** 節点番号 + 節点番号 − DC 直流電圧値 AC 交流電圧振幅値
電圧は節点番号 − から節点番号 + の向きが正方向である.直流や交流のどちらか,または両方の記述
ができる.
4. バイポーラ接合トランジスタ
Q**** コレクタ節点番号 ベース節点番号 エミッタ節点番号 モデル名
“モデル名” とは使用する素子のデバイスパラメータに与えられた名前である,デバイスパラメータ
は.MODEL ステートメントにより,
.MODEL モデル名 タイプ (パラメータ 1=値 パラメータ 2=値....)
と記述する.ここで,“タイプ” は NPN トランジスタ,PNP トランジスタ等の素子の種類を表し,NPN
トランジスタの場合は NPN,PNP トランジスタの場合は PNP と記述する.“パラメータ” は各素子に
より異なるので,詳細は参考文献 [2] に譲る.ここでは,NPN トランジスタ 2SC1815 のデバイスパラ
メータの記述を示すにとどめる.
NPN トランジスタのモデル記述例
.MODEL QN NPN(BF=200 TF=0.64N RB=500 IS=10E-15 CJC=3P)
これは,モデル名 QN の NPN トランジスタが次のパラメータを持っていることを表している.
• BF
順方向エミッタ接地電流増幅率 βF の最大値.縦形NPNトランジスでは通常 100 から 200 であ
る.BF にデフォルト値はなく,必ず指定しなければならない.
• TF
順方向少数キャリア通過時間.デフォルト値は 0sec である.TF を用いると α 遮断周波数 fα は
fα =
1
2πTF
(1)
と表される. fα の値は 300MHz から 500MHz 程度である.
• RB
ベース抵抗で,100Ω から 500Ω 程度の値をとる.デフォルト値は 0Ω である.
• IS
pn 接合逆方向飽和電流.エミッタ面積で決まる.デフォルト値は 1 × 10−16 A である.
• CJC
コレクタ接合容量の零バイアス電圧における値.1pF から 3pF 程度の値である.デフォルト値は
0F である.バイアスがかかっているときには,コレクタ接合容量は減少する.コレクタ · ベース間
のバイアス電圧を VCB とし,このときのコレクタ接合容量を CJCVCB とすると
VCB −0.33
CJCVCB = CJC 1 +
0.75
–2–
(2)
と表される.式 (2) において,0.33 は接合容量の電圧依存性を表すパラメータである.また,0.75
はコレクタ · ベース間の障壁電位で,ディメンションは V である.これらの値はデフォルト値であ
り,任意に設定可能であるが,そのためのパラメータについては省略する.
2.3 解析方法の記述
SPICE3 では,直流解析や交流解析,過渡解析,雑音解析などの種々の解析が可能である.SPICE2 やそれ
をベースにした商用 SPICE では,解析方法を指示するにはピリオドで始まるコマンドを入力ファイル中に記
述する必要がある.このようなコマンドをドットコマンドとよぶ.SPICE3 では,入力ファイル中にドットコ
マンドを書くほかに,ドットコマンドからピリオドを除いたコマンドを対話的に入力することもできる.
■直流解析 直流動作点を求めるのが直流解析である.SPICE3 は,どのような解析を行う場合でも,その前
に必ず直流動作点の計算を行う.直流動作点に関する情報を取り出すためには
.OP
と記述する.指定した直流電源の電圧値あるいは電流値をスイープさせて動作点を計算するには
.DC LIN 電源名 開始値 終了値 増分値
または
.DC DEC 電源名 開始値 終了値 1 ディケード毎の解析ポイント数
と記述すればよい.ここで,LIN と DEC はスイープ方法の指定であり,LIN は等間隔にスイープし,DEC は
常用対数的に等間隔にスイープする.指定されなかった電源については電源記述の DC 値が用いられる.
■交流解析 交流解析を指定すると SPICE3 は,まず直流解析を行なって動作点を求めた後,AC 電源の周波
数を変化させてこの動作点における周波数特性を解析する.交流解析を行なうには,
.AC スイープ方法 解析ポイント数 開始周波数 終了周波数
と記述すればよい.スイープ方法は DEC または LIN である.ここで “解析ポイント数” は,DEC のとき 1
ディケード毎のポイント数であり,LIN のとき開始周波数から終了周波数までの総ポイント数である.
■過渡解析 回路の過渡解析を行なうためには,電源が過渡値を持っていないといけない.すなわち,
V**** 節点番号 + 節点番号 − SIN(オフセット電圧 振幅 周波数)
のように記述する.これは t = 0 で括弧内のパラメータを有する位相 0 の正弦波を回路に入力することを意味
する.この記述では過渡値しか持っていない電圧源の書き方になっているが,当然ながら DC 値,AC 値およ
び過渡値の全てを含む電源を
V**** 節点番号 節点番号 DC 値 AC 値 過渡値
のように記述してよい.
このとき
.TRAN 時間きざみ 解析終了時間
と記述することにより,t = 0 から解析終了時間までを記述した時間きざみで解析する.過渡解析は過渡値が
記述されている電源が全て計算に寄与する.そうでない電源については,DC 値が記述されているときは DC
値が使われ,DC 値が記述されていない電源は DC 値を零として取り扱われる.AC 値は過渡解析には無関係
–3–
R1
8 3K
1
C 1 10 μ
Vin
RL
5. 2K
10
3
2
VCC
10 V
4
R2
17 K R E
1K
+
CE
10 0μ
図 1 入力ファイルを作成するエミッタ接地増幅回路
である.
■解析結果の表示 SPICE3 では解析結果を表の形とグラフの形で表示でき,表示するためのコマンドは対話
的に入力するようになっている.したがって,SPICE3 は,ここで紹介する .PRINT,.PLOT および .FOUR の
三つのドットコマンドを無視する.しかし,SPICE3 以外の SPICE との互換性維持のためこれらのドットコ
マンドを記述しておく場合が多いので,説明しておく.
節点電圧の解析結果を表の形で表示するには,
.PRINT 解析の種類 V(節点番号)
と記述する.“解析の種類” とは直流解析や交流解析等を意味し,交流解析の場合は AC と記述する.“節点番
号” には電位を出力したい接点番号を記述する.“V(節点番号)” を複数並べて記述してもよい.また,“VDB(接
点番号)” とすることにより,デシベル値を表示することもできる.節点間の電位差は “V(節点番号 1,節点番
号 2)” とすることにより表示される.これは,V(節点番号 1) − V(節点番号 2) を意味する.一方,解析結果を
グラフ (ラインプリンタイメージ) で表示するには,
.PLOT 解析の種類 V(節点番号)
と記述すればよく,PRINT が PLOT に代わる以外は表の形で表示する方法と全く同様である.素子を流れる
電流は “I(素子名)” とすることにより表示される.
さらに,過渡解析の出力波形のフーリエ級数成分および高調波ひずみ率を表示するには
.FOUR 基本周波数 V(節点番号)
と記述する.
3 入力ファイルの例
入力ファイルの作成例として,図 1 のエミッタ接地増幅回路を取り上げる.ただし,コレクタからバイパス
コンデンサを通して開放状態で出力を取り出すと解析が行えない*2 ため,バイパスコンデンサを省略してある.
以下に示す 3 つの例は,入力信号の記述と解析方法が異なるのみで,他は同じである.
入力ファイルの例 1(交流解析のみ)
test circuit
*2
vin
1
0
ac
1.0
vcc
10
0
dc
10.0
c1
1
2
10u
SPICE3 では,どこにも接続されない端子があるとエラーとなる.
–4–
r1
10
2
83k
r2
2
0
17k
q1
3
2
rl
10
3
5.2k
re
4
0
1k
ce
4
0
100u
4
qn
.model qn npn(bf=200 tf=0.64n rb=500 is=10e-15 cjc=3p)
.op
.ac dec
20
10
1meg
.end
入力ファイルの例 2(過渡解析のみ)
test circuit
vin
1
0
sin(0 0.017 2k)
vcc
10
0
dc
c1
1
2
10u
r1
10
2
83k
r2
2
0
17k
q1
3
2
rl
10
3
5.2k
re
4
0
1k
ce
4
0
100u
4
10.0
qn
.model qn npn(bf=200 tf=0.64n rb=500 is=10e-15 cjc=3p)
.op
.tran 0.01m 2m
.end
入力ファイルの例 3(直流動作点解析,交流解析,過渡解析の両方)
test circuit
vin
1
0
ac
1.0
vcc
10
0
dc
10.0
c1
1
2
10u
r1
10
2
83k
r2
2
0
17k
q1
3
2
rl
10
3
5.2k
re
4
0
1k
ce
4
0
100u
4
sin(0 0.017 2k)
qn
.model qn npn(bf=200 tf=0.64n rb=500 is=10e-15 cjc=3p)
.op
.ac dec
20
10
1meg
.tran 0.01m 2m
.end
–5–
4 入力ファイルの作成と SPICE3 の実行手順
ここでは UNIX の X ウィンドウ上で SPICE3 を実行する方法について述べる.UNIX の操作についてはす
でに知識があるものとする.一つだけ注意しておくと,入力ファイル内では大文字と小文字の区別がなかった
のに対して,コマンドライン上では大文字と小文字の区別があることを忘れないでほしい.
4.1 入力ファイルの作成 —エディタの起動—
入力ファイルの作成にはエディタと呼ばれる編集プログラムを使用する.エディタとして emacs を用いる
ならば,プロンプトの後に,
emacs 入力ファイル名
と入力する.“入力ファイル名” には,新規作成の場合は適当な入力ファイル名を,修正を行う場合は修正した
い入力ファイル名を書く.ここで,ファイル識別子を cir として,ファイル名を amp.cir のようにすると便利
である.
4.2 SPICE3 の実行
SPICE3 を走らせるには,
spice3 入力ファイル名
と入力する.例えば,
(例) spice3 amp.cir
と入力すると,SPICE3 が立ち上がり,Spice 1 -> のような番号付きのプロンプトが出てくる.これ以降で
は,簡単のため,SPICE3 のプロンプト番号を省略して Spice -> と表すことにする.
4.3 SPICE3 の終了
SPICE3 のプロンプトの出ているところで quit と打つと終了する.
(例) Spice -> quit
4.4 ネットリストの表示
SPICE3 プロンプトの出ているところで listing と打つとネットリストの内容が表示される.
(例) Spice -> listing
4.5 ネットリストの編集
SPICE3 プロンプトの出ているところで edit と打つと,SPICE3 を終了しなくても,ネットリストを編集
することができるので,ネットリストのデバグに便利である.
(例) Spice -> edit
エディタとして emacs を使うのであれば,編集に先立って
–6–
(例) Spice -> set editor=emacs
と入力する.SPICE3 を実行する前に境変数 EDITOR が設定されているなら,それで設定されているエディ
タがデフォルトとして用いられるので,上の操作は必要ない.
4.6 解析の実行
SPICE3 のプロンプトの出ているところで run と打つと解析が実行される.この場合,入力ファイル内の解
析指示のドットコマンドがすべて実行される.
(例) Spice -> run
ドットコマンド(.ac, .op, .tran, .dc)からピリオドを除いた部分を小文字で入力すれば,コマンドラ
インから解析を直接実行できる.直流動作点解析をコマンドラインから実行するには
(例) Spice -> op
とする.交流解析をコマンドラインから実行するには
(例) Spice -> ac dec
20
10
1meg
とする.また、過渡解析をコマンドラインから実行するには
(例) Spice -> tran 0.01m 2m
のようにすればよい.ただし,コマンドラインで解析を実行するに当たっては,入力ファイル内にその解析に
対応した入力信号の記述をしておく必要がある.
4.7 解析結果の表示
4.7.1
表示対称の選択
入力ファイルで単一の解析のみを指定している場合は,その解析の結果がデフォルトで表示される.それに
対して,入力ファイルで複数の解析を指定した場合や,SPICE3 のコマンドラインから複数の解析を実行した
場合,解析結果表示コマンドで表示されるのはデフォルトで一番最後に実行した解析である.以前の解析結果
を表示させたいときは,
(例) Spice -> setplot
と入力すれば
Type the name of the desired plot:
new
Current tran1
New plot
TEST CIRCUIT (Transient Analysis)
op1
TEST CIRCUIT (Operating Point)
ac1
TEST CIRCUIT (AC Analysis)
const
Constant values (constants)
のように解析結果一覧を表示してどれにするか聞いてくるので,例えば ac1 のように答える.
4.7.2
結果の表示
交流解析あるいは過渡解析の実行後に節点 3 の電圧をグラフ表示させたいのであれば,
–7–
(例) Spice -> plot v(3)
と打つ.電圧をデシベル表示するのであれば,v(3) の代わりに vdb(3) とする.節点 3 の電圧と節点 2 の電
圧の差(節点 2 を基準にしたときの節点 3 の電位)を表示するには,v(3,2) とすればよい.この場合,グラ
フの横軸は交流解析のときは周波数,過渡解析のときは時間となる.
解析結果を表形式で表示するには print コマンドを用いて,
(例) Spice -> print v(3)
とする.表のデータを amp.out という名前のファイルにセーブするには,以下のようにリダイレクションを
使う.
(例) Spice -> print v(3) > amp.out
トランジスタの直流動作点の表示にも print コマンドを用いる.op コマンドの実行直後か setplot コマ
ンドで直流動作点解析を選択した後
(例) Spice -> print v(2) v(3) v(4)
のようにコマンドを入れる,この場合,図 1 の回路を仮定すると,それぞれベース,コレクタ,エミッタの直
流電圧が表示されることになる.
さらに,過渡解析の出力波形のフーリエ級数成分および高調波ひずみ率を表示するには
Spice ->fourier 基本周波数 V(節点番号)
と記述する.ただし,フーリエ解析を表示するするためには setplot コマンドで過渡解析結果が選択されて
いなければならない.
4.8 解析結果のプリントアウト
グラフはポストスクリプトプリンタに出力できる.プリンタ名が ps printer であるとき,節点 3 の電圧をプ
リンタに送るには,
set hcopydev = ps_printer
set hcopydevtype=postscript
のように出力デバイスとタイプの設定をしてから,グラフを表示しているウィンドウにある hardcopy ボタン
を押せばよい.上記の設定は SPICE3 を終了するまで有効である.グラフをポストスクリプト形式のファイ
ルにするには
(例) Spice -> hardcopy amp.ps v(3)
とすればよい.ここで,amp.ps はポストスクリプトファイル名である.hardcopy コマンドで出来上がるポス
トスクリプトファイルは TEX に取りこむことが可能である.
参考文献
[1]
柳沢 健著 “アナログ集積電子回路”,コロナ社
[2]
藤井 信生著 “アナログ電子回路 —集積化時代の—”,昭晃堂
[3]
ポール W.トゥネンガ著,松本 敏之訳 “SPICE による電子回路設計入門”,CQ 出版社
–8–