1975 年にリリースされた電子回路シミュレータSPICE 2G6は その後の全ての電子回路シミュレータのルーツとなりましたが、 UC Berkeley からリリースされた最後のバージョンSPICE 3F5では 抜け落ちた機能もあって、 今でも動かしたくなることがあります。
しかし、現時点ではソースコードやドキュメントが分散し、 見付けにくくなってきましたので、 ここに、まとめておくことにしました。
SPICE 2G6はFortranで書かれた完成度の高いプログラムですが、 まだグラフィックディスプレイが生まれる前の時代ですから、 130 字/行のラインプリンタで ASCII文字を使ったグラフを印字する設計になっています。 しかし、現時点では、その後のコンピュータ技術の劇的進歩により、 グラフィック機能についてはAWKなどのscript言語による gnuplotなどの作図プログラムとの併用(一体化)は極めて容易で、 グラフィック機能の不足は何ら問題ではなくなってしまいました。
ただ、当時としては、 その後のUnixベースのworkstaionの普及という環境の革命的変化が、 22,000 行のFortranプログラムのCへの書き換えによる、 (Unix の)X11によるグラフィック機能と、 その後の新しいデバイスに対応するための、 いくつかの機能追加を含むSPICE3の開発を促し、 1985 年 3 月にpublic domainのソフトウェアとして SPICE 3F5が公開されました。 現在のFreeBSDでは ports/cad/spice に収容されています。
ここに収容したSPICE 2G6のソースコードは 386BSD時代のプロジェクトの一つとして、 Fortranのソースコードをf2cでCに変換してコンパイル するようにしたもので、 そのコードのごく一部をFreeBSD-8.4で使えるように書き換えたものです。
テスト用のサンプルスクリプトを一つ付けておきましたが、 SPICE Version 2G User's Guideにも、いくつかのサンプルが含まれています。
SPICE 2G6は入力ファイルを標準入力から読みますので、
spice2 <fileと起動してくでさい。
このプログラムの実行にはf2cの run-time libraly が必要で、 FreeBSD-8.4 の ports/lang/f2c をインストールすれば良いのですが、 これをコンパイルするためには ports/distfiles/f2c-20060810/f2c.tar が必要で、 自分で見付けてこないとコンパイルできなくなっていますので、 ここに置いておくことにしました。
SPICEの解説書のほとんどが、SPICE 3F5から派生したPSpice などの商用ソフトウェアを前提にしていて、 SPICE 2G.6を前提にしたものは極めて少ないのですが、
Thomas W. Thorpe,- COMPUTERRIZED CIRCUIT ANALYSIS WITH SPICE (Jhon Wiley & Sons, Inc) ISBN 0-471-55164-3は今でも見られると思います。
SPICEが開発された当時の事情については The Origins of SPICE に開発者Laurence W. Nagelによる 解説があります。
SPICE 2G6のアルゴリズムについては SPICE2: A COMOUTER PROGRAM TO SIMULATE SEMICONDUCTOR CIRCUIT bt Laurence W. Nagelで見られます。
なお、SPICE 3F5リリース以降のbug fixや Jspice3、 XSPICE などで開発された新しい機能の追加が NGSPICE で行われていて、 このうちXSPICE以外はFreeBSD-8.4の ports/cad にも収容されています。
なお、SPICE 2G.6 本来のソースコードは Spiceにあります。
平林 浩一, 2015-09-20