NGSPICE簡易説明書(Windows版)

Ver. 20140609
NGSPICE 簡易説明書(Windows 版)
芝浦工業大学
電子情報システム学科
渡部英二
1 まえがき
NGSPICE は,Next Generation SPICE の略で,回路解析プログラム SPICE の 3 番目のバージョンである
SPICE3 を基にして,Paolo Nenzi が 1999 年頃に開発したものである.
SPICE そのものは,1960 年代後半から 1970 年代前半にかけてカリフォルニア大学バークレイ校で開発さ
れた.その後 SPICE2 に進化し,それを基に多くの商用バージョンが生み出され,SPICE ファミリーは標準
的回路解析プログラムとして世界的に幅広く受け入れられた.オリジナルの SPICE2 に対して,商用バージョ
ンは解析機能や精度を向上させているものが多い.SPICE3 は,SPICE2 に対して X ウィンドウ上のユーザ
インタフェースを付加したものである.SPICE3 は,カリフォルニア大学バークレイ校で教育目的で開発・配
付されているもので,実際の回路設計現場で使うのには解析機能や精度の点で力不足であるといわれている.
特に,SPICE2 の時代から存在したバイアス解析のバグはそのまま残されている.とはいえ,簡単な回路の直
流解析や交流解析,過渡解析,雑音解析,フーリエ解析等を行うことができるので,回路科目を学習しながら
使う回路解析プログラムとしては十分な機能を有している.
これに対し,NGSPICE は SPICE3 のバグを取るとともに,新しいデバイスモデルを取り込む形で進化し
ている.特筆すべきは,バイアス解析の部分に,中央大学の山村教授が開発したアルゴリズムが採用されて
いることである.NGSPICE のユーザーインタフェースは SPICE3 のものが踏襲されている.NGSPICE は
フリーソフトとして,GNU General Public License (GPL) の下でソースコードが公開されているので,様々な
OS で使用することができる.また,MS Windows については,バイナリパッケージも公開されている.
本説明書では,まず “入力ファイル作成規則” について述べる.ここでは NGSPICE に入力するファイルを
作成するために最低限必要と思われる規則を説明する.次の “入力ファイルの例” では,エミッタ接地増幅回
路の入力ファイル作成例を示す.本説明書を実際に読む際には,この “入力ファイルの例” を見ながら読み進
めて行くと規則の理解が容易である.最後の “入力ファイルの作成と NGSPICE の実行” では,入力ファイル
の編集方法とその NGSPICE での実行方法,および結果を PC の画面やプリンタに出力する方法等について述
べる.
本説明書では,NGSPICE を体験するために必要な最低限の事柄だけを述べている.このため,NGSPICE
全体の機能を知るには,これだけでは不十分であることに留意されたい.
2 入力ファイル作成上の規則
NGSPICE を用いて回路解析を行うためには,まず回路の接続状態や素子値,解析の種類などを記述した
ファイルを作成する必要がある.これを入力ファイルと呼び,回路を記述したステートメントのことをネット
リストと呼ぶ.以下では,入力ファイルを作成する上での規則の概要を述べる.
2.1 入力フォーマット
NGSPICE の入力フォーマットは,基本的にフリーフォーマットである.欄の区切りには,通常スペースが
用いられる.ただし第一行はタイトル行で,この行には回路の接続状態や素子値,解析の種類などを書くこと
はできない.また,データの最終行は,.END で終らなければならない.これ以外の記述の順序は自由である.
アスタリスク (*) で始まる行はコメント行と解釈されるので,記述を見やすくするために適当にコメントを挿
–1–
入しておくとよい.*1 .入力ファイル内では大文字と小文字の区別はない.
2.2 回路素子の記述
NGSPICE では回路素子の記述は,基本的に,
素子の名前 接点番号 素子値もしくはモデル名
というフォーマットをとる.
まず最初の “素子の名前” では,素子の種類を区別するために最初の 1 文字が素子種を表すと定められて
いる.例えば,抵抗は R,コンデンサは C,トランジスタは Q 等である.これに続く文字列は,その素子の
名前を表している.以下では,この文字列を****で表す.次に,その素子が接続されている “節点番号” を記
述する.接点番号の付け方は任意で,数字が連続している必要はないが,接地点の接点番号は必ずゼロでな
ければならない.最後に,“素子値もしくはモデル名” を記述する.素子値を表す場合に,補助単位 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
1
2πTF
著者の使用しているバージョン (spice-3f5) では,スペースで始まる行もコメント行と解釈される.
–2–
(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) において,0.33 は接合容量の電圧依存性を表すパラメータである.また,0.75
はコレクタ · ベース間の障壁電位で,ディメンションは V である.これらの値はデフォルト値であ
り,任意に設定可能であるが,そのためのパラメータについては省略する.
PNP トランジスタのモデル記述例
例えば,2SC1815 のコンプリメンタリペアである 2SA1015 のモデル記述は,モデルパラメータは同
一で,タイプを PNP に変えるだけでよい.
.MODEL QP PNP(BF=200 TF=0.64N RB=500 IS=10E-15 CJC=3P)
2.3 解析方法の記述
NGSPICE では,直流解析や交流解析,過渡解析,雑音解析などの種々の解析が可能である.SPICE2 やそ
れをベースにした商用 SPICE では,解析方法を指示するにはピリオドで始まるコマンドを入力ファイル中に
記述する必要がある.このようなコマンドをドットコマンドとよぶ.NGSPICE では,入力ファイル中にドッ
トコマンドを書くほかに,ドットコマンドからピリオドを除いたコマンドを対話的に入力することもできる.
■直流解析 直流動作点を求めるのが直流解析である.NGSPICE は,どのような解析を行う場合でも,その
前に必ず直流動作点の計算を行う.直流動作点に関する情報を取り出すためには
.OP
と記述する.指定した直流電源の電圧値あるいは電流値をスイープさせて動作点を計算するには
.DC LIN 電源名 開始値 終了値 増分値
または
.DC DEC 電源名 開始値 終了値 1 ディケード毎の解析ポイント数
と記述すればよい.ここで,LIN と DEC はスイープ方法の指定であり,LIN は等間隔にスイープし,DEC は
常用対数的に等間隔にスイープする.指定されなかった電源については電源記述の DC 値が用いられる.
■交流解析 交流解析を指定すると NGSPICE は,まず直流解析を行なって動作点を求めた後,AC 電源の周
波数を変化させてこの動作点における周波数特性を解析する.交流解析を行なうには,
.AC スイープ方法 解析ポイント数 開始周波数 終了周波数
–3–
と記述すればよい.スイープ方法は DEC または LIN である.ここで “解析ポイント数” は,DEC のとき 1
ディケード毎のポイント数であり,LIN のとき開始周波数から終了周波数までの総ポイント数である.
■過渡解析 回路の過渡解析を行なうためには,電源が過渡値を持っていないといけない.すなわち,
V**** 節点番号 + 節点番号 − SIN(オフセット電圧 振幅 周波数)
のように記述する.これは t = 0 で括弧内のパラメータを有する位相 0 の正弦波を回路に入力することを意味
する.この記述では過渡値しか持っていない電圧源の書き方になっているが,当然ながら DC 値,AC 値およ
び過渡値の全てを含む電源を
V**** 節点番号 節点番号 DC 値 AC 値 過渡値
のように記述してよい.
このとき
.TRAN 時間きざみ 解析終了時間
と記述することにより,t = 0 から解析終了時間までを記述した時間きざみで解析する.過渡解析は過渡値が
記述されている電源が全て計算に寄与する.そうでない電源については,DC 値が記述されているときは DC
値が使われ,DC 値が記述されていない電源は DC 値を零として取り扱われる.AC 値は過渡解析には無関係
である.
■解析結果の表示 NGSPICE では解析結果を表の形とグラフの形で表示でき,表示するためのコマンドは
対話的に入力するようになっている.したがって,NGSPICE は,ここで紹介する .PRINT,.PLOT および
.FOUR の三つのドットコマンドを無視する.しかし,NGSPICE 以外の SPICE との互換性維持のためこれら
のドットコマンドを記述しておく場合が多いので,説明しておく.
節点電圧の解析結果を表の形で表示するには,
.PRINT 解析の種類 V(節点番号)
と記述する.“解析の種類” とは直流解析や交流解析等を意味し,交流解析の場合は AC と記述する.“節点番
号” には電位を出力したい接点番号を記述する.“V(節点番号)” を複数並べて記述してもよい.また,“VDB(接
点番号)” とすることにより,デシベル値を表示することもできる.節点間の電位差は “V(節点番号 1,節点番
号 2)” とすることにより表示される.これは,V(節点番号 1) − V(節点番号 2) を意味する.一方,解析結果を
グラフ (ラインプリンタイメージ) で表示するには,
.PLOT 解析の種類 V(節点番号)
と記述すればよく,PRINT が PLOT に代わる以外は表の形で表示する方法と全く同様である.素子を流れる
電流は “I(素子名)” とすることにより表示される.
さらに,過渡解析の出力波形のフーリエ級数成分および高調波ひずみ率を表示するには
.FOUR 基本周波数 V(節点番号)
と記述する.
3 入力ファイルの例
入力ファイルの作成例として,図 1 のエミッタ接地増幅回路を取り上げる.ただし,コレクタからバイパス
コンデンサを通して開放状態で出力を取り出すと解析が行えない*2 ため,バイパスコンデンサを省略してある.
*2
NGSPICE では,どこにも接続されない端子があるとエラーとなる.
–4–
RL
5. 2K
R1
8 3K
10
3
2
1
VCC
10 V
4
C 1 10 μ
R2
17 K R E
1K
Vin
+
CE
10 0μ
図 1 入力ファイルを作成するエミッタ接地増幅回路
以下に示す 3 つの例は,入力信号の記述と解析方法が異なるのみで,他は同じである.
入力ファイル例 1(交流解析のみ)
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
qn
.model qn npn(bf=200 tf=0.64n rb=500 is=10e-15 cjc=3p)
.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)
.tran 0.01m 2m
.end
入力ファイル例 3(直流動作点解析,交流解析,過渡解析の両方)
test circuit
vin
1
0
ac
1.0
sin(0 0.017 2k)
–5–
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
.ac dec
20
10
1meg
.tran 0.01m 2m
.end
4 入力ファイルの作成と NGSPICE の実行手順
ここでは Windows 上で NGSPICE を実行する方法について述べる.
4.1 NGSPICE のインストールと実行
NGSPICE の公式 Web ページである http://ngspice.sourceforge.net/より ngspice-XX_yymmdd.zip
を取得する. XX はバージョン番号であり,yymmdd は日付けである.2014 年 6 月 9 日現在の最新はバー
ジョン 26 である.zip ファイルを適当なフォルダで展開しすると,spice というフォルダの中に必要なファ
イルが全て入る.
4.2 入力ファイルの作成 —エディタの起動—
入力ファイルの作成にはエディタと呼ばれる編集プログラムを使用する.“入力ファイル名” は,適当な名前
をつければよいが,ファイル識別子を cir として,ファイル名を amp.cir のようにすると便利である.
4.3 NGSPICE の実行と終了
spice フォルダの中の bin フォルダにある ngspice.exe が NGSPICE の実行ファイルであるので,これを
ダブルクリックすれば NGSPICE が立ち上がる.
NGSPICE ウィンドウの一番下がステータス行で,NGSPICE の現在の状態を表示するとともに,終了の
ための QUIT ボタンがある.下から 2 行目の背景が白の行がコマンドラインで,ここにコマンドを入力して
リターンキーを押すとコマンドが実行される.コマンドラインではコマンドを編集することができる.上下
の矢印キーでコマンドヒストリーを呼び出すこともできる.コマンドラインの上側がコマンド実行画面で,
NGSPICE,ngspice 1 -> のような番号付きのプロンプトが出て,コマンドの実行結果が表示される.これ
以降では,コマンドラインでの入力例を
(例) ngspice -> quit
のように表すことにする.
NGSPICE を終了するには,上記のようにコマンドラインで quit と打つと終了する.あるいは,ステータ
ス行の QUIT ボタンを押してもよい.
–6–
図 2 NGSPICE の起動画面
4.4 入力ファイルの読み込み
入力ファイルの読み込ませるには,入力ファイルのアイコンを NGSPICE の実行ファイルのアイコンにド
ラッグ&ドロップさせる.ドラッグ&ドロップで読み込んだファイルの名前はステータスラインに絶対パスで
表示される.
あるいは,コマンドラインで source コマンドを使って
(例) ngspice -> source ファイル名
と 入 力 す る と ,入 力 フ ァ イ ル を 読 み 込 む こ と が で き る .NGSPICE の 実 行 フ ァ イ ル の あ る フ ォ ル ダ で
NGSPICE を立ち上げてないときは,相対あるいは絶対パスでファイル名を表示しないといけない.
フォルダの移動は cd コマンドを用いて
(例) ngspice -> cd 相対あるいは絶対パス表示の移動先フォルダ名
と入力する.カレントフォルダを表示するには
(例) ngspice -> cd
のように,オプションをつけずに cd コマンドを実行する.
4.5 ネットリストの表示
NGSPICE のコマンドラインで listing と打つとネットリストの内容が表示される.
(例) ngspice -> listing
4.6 解析の実行
NGSPICE のプロンプトの出ているところで run と打つと解析が実行される.この場合,入力ファイル内
の解析指示のドットコマンドがすべて実行される.
(例) ngspice -> run
–7–
ドットコマンド(.ac, .op, .tran, .dc)からピリオドを除いた部分を小文字で入力すれば,コマンドラ
インから解析を直接実行できる.直流動作点解析をコマンドラインから実行するには
(例) ngspice -> op
とする.交流解析をコマンドラインから実行するには(入力ファイル例 1),
(例) ngspice -> ac dec
20
10
1meg
とする.また、過渡解析をコマンドラインから実行するには(入力ファイル例 2),
(例) ngspice -> tran 0.01m 2m
のようにすればよい.ただし,コマンドラインで解析を実行するに当たっては,入力ファイル内にその解析に
対応した入力信号の記述をしておく必要がある.
4.7 解析結果の表示
4.7.1 表示対称の選択
入力ファイルで単一の解析のみを指定している場合は,その解析の結果がデフォルトで表示される.それに
対して,入力ファイルで複数の解析を指定した場合や,NGSPICE のコマンドラインから複数の解析を実行し
た場合,解析結果表示コマンドで表示されるのはデフォルトで一番最後に実行した解析である.以前の解析結
果を表示させたいときは,
(例) ngspice -> 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)
?
のように解析結果一覧を表示し,?マークを出して入力待ちとなり,どの解析結果を選択するか聞いてくる.
解析結果一覧の内訳は,解析コマンドの指定の仕方に依存する.ここで,tran1 は過渡解析結果,op1 は直流
動作点解析結果,ac1 は交流解析結果である.Current は,現在の選択項目を示し,上の場合は,過渡解析結
果がデフォルトとして表示される.交流解析結果を表示するのであれば,ac1 と答える.
4.7.2 結果の表示
交流解析あるいは過渡解析の実行後に節点 3 の電圧をグラフ表示させたいのであれば,
(例) ngspice -> plot v(3)
と打つ.電圧をデシベル表示するのであれば,v(3) の代わりに
(例) ngspice -> plot vdb(3)
とする.節点 3 の電圧と節点 2 の電圧の差(節点 2 を基準にしたときの節点 3 の電位)を表示するには,
–8–
(例) ngspice -> plot v(3,2)
とすればよい.この場合,グラフの横軸は交流解析のときは周波数,過渡解析のときは時間となる.交流解析
の db 表の例を図 3 に示す.
図 3 周波数特性のグラフ(db 表示)
解析結果を表形式で表示するには print コマンドを用いて,
(例) ngspice -> print v(3)
とする.表のデータを amp.out という名前のファイルにセーブするには,以下のようにリダイレクションを
使う.
(例) ngspice -> print v(3) > amp.out
ファイルはカレントフォルダに生成される.
トランジスタの直流動作点の表示にも print コマンドを用いる.op コマンドの実行直後か setplot コマ
ンドで直流動作点解析を選択した後
(例) ngspice -> print v(2) v(3) v(4)
のようにコマンドを入れる,この場合,図 1 の回路を仮定すると,それぞれベース,コレクタ,エミッタの直
流電圧が表示されることになる.
さらに,過渡解析の出力波形のフーリエ級数成分および高調波ひずみ率を表示するには
ngspice ->fourier 基本周波数 V(節点番号)
と記述する.ただし,フーリエ解析を表示するするためには setplot コマンドで過渡解析結果が選択されて
いなければならない.
4.8 解析結果のプリントアウト
グラフはプリンタに出力できる.図 1 の plot コマンドによる出力ウィンドウのタイトルバーをマウスの右
クリックすることにより図 4 のようにプリントアウトメニューが出る.
–9–
図 4 プリンアウトメニューの表示
ここから Printer... を選択すると Windows の印刷ウィンドウが開くので,必要な設定をしてグラフをプ
リントアウトできる.
TEX に取りこむことが可能なポストスクリプトファイルの生成には,Postscript file, color あるいは
Postscript file, bw を選択すれば,カレントフォルダに識別子が ps のファイルが生成される.前者はカ
ラーで後者は白黒である.
5 NGSPICE の詳細
NGSPICE の詳細なマニュアルが開発者により用意されている.これは,http://ngspice.sourceforge.net/docs.html
から pdf ファイルの形でダウンロードできる.
参考文献
[1] 高木茂孝編著,“EE Text アナログ電子回路”,オーム社
[2] ポール W.トゥネンガ著,松本 敏之訳,“SPICE による電子回路設計入門”,CQ 出版社
[3] 柳沢 健著,“アナログ集積電子回路”,コロナ社
[4] 藤井 信生著,“アナログ電子回路 —集積化時代の—”,昭晃堂
– 10 –