Spice 3f5 の使い方 (1)

業界標準の回路シミュレータSPICEの解説書はたくさんありますが、 ほとんどが商用版のPSpiceの説明に終止していて、 Unixで使えるBerkeleySpcie 3f5では使えません。 The Spice PageUser's manualsとか、 SPICE3 Version 3F5 User's Manual を見ながら、多少の試行錯誤をすればわかるのですが、 SPICE2の機能とSpice3f5で追加された機能、 そしてSpice3f5で失われたSPICE2の機能が混在しているため、 User's Manualにはわかりにくい部分があって、 始めて使うときには混乱します。

そこで、いくつかの実例を用意して取り付きやすくしようというのが、 この解説の意図で、 前半でSpice 3f5の概要と操作上の注意点を説明した後、 後半で簡潔な具体例を元に解析方法を説明します。

SPICEのデバイスモデルや回路の記述方法は、 すべてのSPICE派生版で同じですから、 これらについては既存の書籍を御覧ください。 この解説だけでSPICEがわかるわけではありませんが、 読んでよかったと思っていただけるようには書くつもりです。 ただ、少なくとも、SPICEUser's Manualは見てください。

1. SPICE の歴史

User'c ManualのわかりにくさのかなりがSPICEの歴史に起因しますので、 まず、歴史の概説を行ってから、SPICEの概要を説明し、 次いで具体的な実例を記述します。

SPICEの開発は 1968 年 University of California, Berkeleyで回路合成を教えることになった 回路最適化の研究者Ron Rohrer が優れたシミュレーションツールの必要性を痛感し、 自ら開発を決意したことに始まります。

Rohrerと彼の学生たちが組み立てた非線形回路シミュレータは 当時学生だったLarry Nagelにより CANCER(Computer Analysis of Nonlinear Circuits Execuluding Radiation) と命名され、 DC operating point、DC sweep、Transient sweep、AC frequency sweep analysis が可能で、 抵抗、キャパシタ、インダクタ、 Ebbers-Mollモデルによる接合ダイオードとバイポーラトランジスタを 最高 400 個とノード数 100 までの回路を扱うことができました。 当時のコンピュータではこの程度が限界です。

1970 年代の回路シミュレータとしてはCANCER以外に、 IBMによるECAPECAP-II. BIASCANCERの初期の仕事に基づく SLICI(Simulator for Linear Integrated Circuits) Rockwell で開発されたTRAC、 それをもとに Motorola で開発されたTIMEMTIME、 それから派生した Berkeley のSINCなどがあります。

1970 年代始めまでNagelCANCERの開発を継続し、 1971 年に改良版 SPICE1(Simulaton Program with Integrated Circuit Emphasis) を public domain に公開しました。 Berkeleyは無料に近い価格でこのプログラムを配布したため、 業界標準のシミュレーションツールとして急速に普及します。 SPICE1CANCERのバイポーラトランジスタのモデルを Gummel-Poonモデルに変更し、 JFETShichman-HodgesモデルによるMOSFETを 追加し、マクロモデル機能を追加しました。

この時期に急速に発展した集積回路の課題は従来の基板レベルの回路で使われてきた 解析技術では解決できず、 コンピュータシミュレーションの重要性をあきらかにしましたが、 集積回路が中心的解析対象になったため、 基板レベルの解析に使う場合は、 インダクタやトランスを扱うとき、特別な注意が必要になります。

1975 年にリリースされたSPICE2では電圧制御電源などの追加や 過渡特性計算の高精度化と高速化など大幅な改定が行われ、 1975 年から 1983 年まで改良を続けた後、 大学は 1983 年に fortran によるSPICEの最終バージョンSPIE2G6を public domain にリリースしました。この版は今でも入手可能です。 (注1)

CANCERSPICEのいずれも fortran で書かれたプログラムですが、 Unixベースのワークステーションの普及により、 BerkeleySPICE2Cへの書き換えを決断し、 SPICE3が生まれることになります。 SPCIE3SPICE2のすべての機能を含み、 より改善されたデバイスモデルや電圧制御スイッチ、Pole-Zero analysis、 グラフィック機能を持つポストプロセサなどを含む計画だったのですが、 既に 1970 年代の熱気が失われ、使える資金も限られるため、 22,000 行の fortran プログラムの C への書き換えは大勢の学生に委ねられることになりました。 そのため最初のリリースSPICE3A1には多量の bug が存在し、 悪いことにSPCIE2G6の機能の一部も失われてしまいました。 SPCIE3SPICE2G6の上位互換ではなくなってしまったのです。 Berkeleyは最終リリースのSPICE3F5まで改良を続けますが、 遂にSPICE2G6の上位互換性は実現できずに終りました。

なお、1980 年以降、SPICE2を元に、 Meta-Software 社の HSPICE、Bell Labs の ADVICE、 Texas Instruments の TISPICE、Motrola の NCSPICE などのSPICE派生商用版が生まれ、 さらにIBM-PCの普及により、 SPCIE2にグラフィック機能を持つポストプロセサを追加した MicroSim 社の PSpiceが普及し、その解説書がたくさん生まれることになりました。

一方、public domain ではSPICE 3F5リリース以降の bug fix に加えて、 超電導分野のJosephson素子をサポートした Jspice3や、 デジタル回路解析機能を追加した XSPICE などで開発された新しい機能の追加が NGSPICE プロジェクトで行われていて、 Unixのフリーソフトウェアの世界で普及しつつあります。 (注2)

2. SPICEの操作

SPICEの操作は基本的に

  1. テキストエディタでSPICEの入力ファイルを作る
  2. 作成したファイルをSPICEに入力し、出力ファイルを得る
  3. 解析結果を吟味し、必要なら入力ファイルを修正して、解析しなおす

になりますが、入力ファイルは

から構成され、N1, N2 はノード(接点)番号、 VALUE は回路素子の値、 PARM は回路素子のパラメータです。

回路素子としては、下記のようなものがあります。 XXXXXXX, YYYYYYY, ZZZZZZZ は任意の英数字で個々の部品の識別に使います。

伝送線路OUには導体抵抗の周波数特性が考慮されていませんので、 長いケーブルの解析ができないことに注意してください。 伝送線路の長さが伝送すべき電磁波の波長と比べて無視できない場合については、 別途解説を用意してあります。 集積回路やプリント回路の場合は十分間に合います。

解析コマンドには次ぎのようなものがあります。 後に述べるように、 Spice 3f5にはSPICE2互換を目指した バッチモード(batch mode / spice2 emulation mode)と 対話モード(interactive mode)があって、 「.」文字で始まるSPICE2互換モードのコマンドは 大文字と小文字を区別しませんが、 spice 3f5の対話モードでは大文字と小文字を区別し、 解析コマンドも異なります。 下記の解析コマンドで「/」の後に小文字で記述したものが spice 3f5の対話モードで使うコマンドになります。

これらの素子、回路、コマンドの具体的な記述方法は この後の例題をSpice 3f5のマニュアルやSPICEの参考書と比べることで、 容易に理解できると思います。

なお、「.TEMP」などSPICE2にあった解析コマンドの一部はSpcie 3f5 には組み込まれずに終ってしましましたので、 必要な場合はSPICE 2G6を使うか、 SPICE3F5の対話モードのプログラミング機能を利用します。

3. 対話モードとバッチモード

SPICE 3f5には下記 3 つの独立したプログラムが含まれています。

spice は -b オプションを付けずに「spice file」の構文で起動すると、 SPICE2の「.PRINT」「.PLOT」など一部の命令を無視して file に記述された回路を解析し、 その後キーボードから対話的に入力したコマンド実行します。 終了するときは quit を入力するか Ctrl-D を(場合によっては 2 回)入力します。

キーボードからの入力を前もって file に記述しておきたいときは

.control
SPICE 3f5の対話コマンド
..
.endc
を「.END」行の直前に入れておきます。

spiceを終了せずに、再度同じ file を処理しなおしたり、 他のファイルを処理する場合は、 「source file」コマンドを使い、 既に読み込んだファイルを再度処理しなおしたいときは「run」コマンドを使います。

spice に -b オプションを付けて「spice -b file」の構文で起動すると、 バッチモード(batch mode / spice2 emulation mode) で動作し、 指定した file を読んで実行後、終了します。 この場合は基本的にSPICE2互換の動作になるのですが、 前記の歴史的事情で、完全な互換性が失われていて、 SPCIE2でないと動かない解析機能があります。

バッチモードの場合は「.control」から「.endc」までの行を無視します。

対話モードでは各種の演算操作やファイル操作、Unixの操作、 各種の演算、プログラミングもできるようになっていて、 Spice 3f5のマニュアルを一読する必要があります。

.. 具体的な解析例につづく ..

3. 注

3.1. 注1 - SPCIE2の入手

例えば、 http://www.mogami.com/unix/spice2g6/spice2g6.html などを見てください。

3.1. 注2 - SPCIEの起源

The Origins of SPICE に開発者Laurence W. Nagelによる 解説があります。

3.3. SPICEのマニュアル

3.4. SPICEの参考書

  一冊だけ読むなら、

  Andrei Vladimirescu,- THE SPICE BOOK
	(Jhon Wiley & Sons, Inc.) ISBN 0-471-60928-9

  SPICE2 の解説なら

  Thomas W. Thorpe,- COMPUTERIZED CIRCUIT ANALYSIS WITH SPICE
	(Jhon Wiley & Sons, Inc.) ISBN 0-471-55164-3

  SPICE の内部については

  Ron Kielkowski,- Inside SPICE
	(McGraw-Hill) ISBN 0-07-913712-1

  周波数領域解析の SPECTRE と時間領域解析の SPICE の両方に触れた

  Keneth S. Kundert,- The Designer's Guide to SPICE & SPECTRE
	(Kluwer Academic Publishers) ISBN 0-7923-9571-9
日本語で読める本もたくさんあって、容易に見付かりますが、 これらのレベルには到底及びません。

なお、SPICE2 の内部構造については下記に著者の論文があって、たくさんの 回路例も含まれています。

  SPICE2: A COMPUTER PROGRAM TO SIMULATA SEMICONDUCTOR CIRCUITS by Laurence W. Nagel

平林 浩一, 2015-09