SPICE (ソフトウェア)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
SPICE(スパイス)は電気回路、電子回路の回路のアナログ動作をシミュレーションするソフトウェアである。
Simulation Program with Integrated Circuit Emphasisの頭字語で、カリフォルニア大学バークレー校で1973年に開発された。プリント基板、集積回路などの設計、あるいはそれらで使用する素子の開発時などに使用される。
シミュレーション対象となる回路は一般的な受動素子(抵抗、キャパシタ(コンデンサー)など)と能動素子(ダイオード、トランジスタなど)と伝送線路、各種電源を組み合わせたものである。 解析手法としては過渡解析、直流解析、小信号交流解析、雑音解析などが可能である。
受動素子は、ほぼ理論通りの動作をするのに対して、能動素子は動作の正確なモデル化が難しくやや精度が落ちる。
現在使われている回路シミュレータの多くはこのバークレー校のものを元に改良、機能付加したものである。名称にSPICEの語を含む場合も多く、それらを含めてSPICEと呼ばれることもある。
後に登場したCAEさらにEDAという概念に含まれるソフトウェアの嚆矢的存在である。
目次 |
[編集] 回路、動作記述
[編集] 概略
シミュレータへの入力となる回路や動作、制御文などをテキストで記述する。各項目の基本は行単位であるが複数行にまたがっての記述も可能である。その場合次の行の冒頭に+を付ける。
最初の行は表題となり、最後の行は.ENDで終了する。(その後があってもよいが無視される。) その間に回路記述や制御文などがはさまる。
回路記述は行頭は素子のインスタンス名(固有の名前)を示し最初の一文字が素子種別を表す。抵抗ならRxxx、インダクタンスならLyyyといった名前となる。インスタンス名、ノード名などの区切りは空白文字である。
簡単な例1:CR回路
CR circuit R1 0 1 10 C1 1 2 20 .END
ここでR1の行の最後は10Ω、C1の行の最後は20Fを示す。 0,1 あるいは 1,2 はそれぞれの端子のノードを示す。 結果として 0---R1---1---C1---2 と抵抗とキャパシタが直列につながった回路となる。
これだけでは回路記述のみであり電気回路として動作しない。 次のようにVで始まる素子は付加することで電源を付加することができる。
簡単な例2:CR回路 + 直流電源
CR circuit+power R1 0 1 10 C1 1 2 20 V1 0 2 5 .END
この例では前述の回路の両端に 5V の電圧を加えたことになる。 電源には直流のほか正弦波やパルス波形、定電流源なども指定できる。 電源も形式的には素子との位置づけであり他の素子同様、回路記述内に含める。 ノード 0 は、必ず含まれていなくてはならない。 各部の電圧とは、指定した場所の電位とノード 0 との電位差として定義されている。
これを実際に動作させるには解析内容を指定する。
簡単な例3:CR回路 + 直流電源 + 過渡解析
CR circuit+power+transient .TRAN 1 10 R1 0 1 10 C1 1 2 20 V1 0 2 5 .END
.TRAN文は1秒きざみで10秒まで経過させることを意味する(過渡解析)。 なおピリオドに始まる語は各種制御文を意味する。
シミュレータとしては動作した結果の観測も可能でなければならない。 次の指定で表示ができる。
簡単な例4:CR回路 + 直流電源 + 過渡解析 + 表示
CR circuit+power+transient+print .TRAN 1 10 .PRINT TRAN V(1) I(1) R1 0 1 10 C1 1 2 20 V1 0 2 5 .END
.PRINT文でノード1の電圧と電流を一覧として出力する。 ほかに.PLOT文もありグラフ化することができる。
なお先頭行と.ENDの間の記述順序は任意である。
[編集] 素子詳細
素子の記述は一般に頭が種別を示すインスタンス名、それに続くノード名の列挙、必要に応じてパラメータなどの値の列挙が続く形式となっている。ノード名は初期は数値が基本であるがSPICEの種類、バージョンにより英数字での単語も可能となっている。 以下に主要な素子を列挙する。(細かいオプションは略)
- 抵抗(R)
Rxxx N1 N2 value
- N1、N2はノード名、valueは抵抗値で単位はオーム
- キャパシタ(C)
Cxxx N+ N- value
- N+、N-は正負のノード、valueは容量値で単位はファラド
- インダクタ(L)
Lxxx N+ N- value
- N+、N-は正負のノード、valueはインダクタンスで単位はヘンリー
- 相互インダクタ(K)
Kxxx Lyyy Lzzz value
- Lyyy、Lzzzは結合したインダクタの名前でvalueは結合係数である。
- 独立電圧源(V)
Vxxx N+ N- <option>
- N+、N-は正負のノード、optionに交流(AC)、直流(DC)の区分、形式、電圧値などを記述する。
- 独立電流源(I)
Ixxx N+ N- <option>
- N+、N-は正負のノード、optionに交流(AC)、直流(DC)の区分、形式、電圧値などを記述する。
- 電圧制御電流源(G)
Gxxx N+ N- NC+ NC- value
- N+、N-は正負のノード、NC+、NC-は正負の制御ノード、valueは相互コンダクタンス。
- 電圧制御電圧源(E)
Exxx N+ N- NC+ NC- value
- N+、N-は正負のノード、NC+、NC-は正負の制御ノード、valueは電圧増幅率。
- 電流制御電流源(F)
Fxxx N+ N- vname value
- N+、N-は正負のノード、vnameは制御電流が流れている電圧源N、valueは電流増幅率。
- 電流制御電圧源(H)
Hxxx N+ N- vname value
- N+、N-は正負のノード、vnameは制御電流が流れている電圧源N、valueは相互抵抗。
- ダイオード(D)
Dxxx N+ N- model <option>
- N+、N-は正負のノード、modelにモデルを指定する。
- バイポーラトランジスタ(Q)
Qxxx NC NB NE model <option>
- NCはコレクタ、NBはベース、NEはエミッタの各ノード、modelにモデルを指定する。
- 接合形電界効果トランジスタ(J)
Jxxx ND NG NS <NB> model <option>
- NDはドレイン、NGはゲート、NSはソース(NBはバルクでオプションの一部)の各ノード、modelにモデルを指定する。
- MOS形電界効果トランジスタ(M)
Mxxx ND NG NS <NB> model <option>
- NDはドレイン、NGはゲート、NSはソース(NBはバルクでオプションの一部)の各ノード、modelにモデルを指定する。
- 無損失伝送線路(T)
Txxx N1 N2 N3 N4 Z0=value
- N1、N2はポート1のノード、N3、N4はポート2のノード、Z0は特性インピーダンス。
- 有損失伝送線路(O)
Oxxx N1 N2 N3 N4 model
- N1、N2はポート1のノード、N3、N4はポート2のノード、MODELはモデル。
- 一様分布RC線路(U)
Uxxx N1 N2 N3 model L=LEN <option>
- N1、N2はRC伝送線路が結ぶノード、N3はキャパシタがつながるノード、MODELはモデル、LENはRC伝送線路の長さ。
- サブサーキット
.SUBCKT name N1 <N2 ...> 回路記述 .ENDS
- 素子ではないが同一の回路ブロックを複数使用する場合、それを階層化するために用いる。nameがサブサーキット名、N1、N2..は端子名。呼び出し時は素子Xとして呼び出す。
[編集] 制御文詳細
- 過渡解析初期設定(.IC)
.IC V(ノード1)=value1 <V(ノード2)=value1 ... >
- ノード1にvalue1を与える。以降必要数繰り返す。
- 過渡解析指定(.TRAN)
.TRAN step stop <option>
- stepはPRINTまたはPLOTの時間の区切り。stopは最終時間。
- 直流解析指定(.DC)
.DC src start stop step <option>
- srcは独立電圧源または電流源、startは開始値、stopは終了値、stepは増分値。
- 温度指定(.TEMP)
.TEMP temp
- tempで温度を指定する。
- オプション(.OPTIONS)
.OPTIONS opt1 <opt2 ...>
- 各種オプション指定。
[編集] 歴史
初期のバージョンはFORTRANで書かれておりフリーウェアとして公開されている。後にはC言語に移植された(バージョン3)。
1980年代 商用版各種登場(HSPICE、PSPICEなど)
参考資料
[編集] 各種SPICE
- spice3f(バークレイによる最終版)
- ngspice(オープンソース版のひとつ)
- HSPICE(meta software社開発、現シノプシス)
- PSpice(OrCAD社開発、現ケイデンス・デザイン・システムズ)