第1回 SPICEシミュレータの仕組み

Modeling_Technology
■ こんにちは。株式会社モーデック CDK事業部の落合です。これから設計にSPICEシミュレーションを導入するユーザに向け、「SPICEモデルの作り方とSPICEへの組み込み」と題して、5回にわたりお話したいと思います。ぜひぜひお付き合いください。
■ 記念すべき「第1回 SPICEシミュレータの仕組み」では、
 ● 様々な専門分野で利用される回路シミュレータ:SPICE
 ● 道具の使い方を間違えると、間違った回路を設計してしまうことがある
 ● 回路シミュレータは、回路設計者のアイデアを確認するための道具にすぎない
 ● SPICEの仕組みを知ることが効率的な回路設計につながる
 ● SPICEとは
 ● SPICEの文法
をお話します。
 
第1回 SPICEシミュレータの仕組み
 

1-1. さまざまな専門分野で利用される回路シミュレータ:SPICE

SPICE(Simulation Program with Integrated Circuit Emphasis)は、代表的な回路シミュレータの一つです。無償で使用できるLTspiceの登場で、個人でも気軽にSPICEが利用されるようになりました。また、クルマなどの電装化により、電気・電子回路分野以外の学生や企業の技術者などがSPICEを利用する機会も増えてきています。そのため、SPICEの仕組みを十分に把握せずに利用している人も増えてきました。もちろん、SPICEの仕組みを把握しなくても回路シミュレーションによる電子回路設計は可能です。しかし、SPICEの特長を把握していないことが原因で、思わぬトラブルに直面することもあります。本稿ではSPICEの仕組みを解説し、効率的に電子回路を設計することを目的としています。

 

1-2. 道具の使い方を間違えると、間違った回路を設計してしまうことがある

図1に示すように金槌を使って釘を打つ例を考えます。大工が金槌を使えば、非常に素早くかつ安全に釘を打つことができます。しかし、金槌を使い慣れていない人が釘を打つとどうでしょうか。釘を打ち終わるのに時間を要したり、あるいは手を怪我してしまったりすることもあるかもしれません。これと同じことが回路シミュレーションの場面でも起こります。

 
釘打ちの様子

図1.釘打ちの様子

 

1-3. 回路シミュレータは、回路設計者のアイデアを確認するための道具にすぎない

せっかく素晴らしいアイデア(回路)を思いついても、道具(シミュレータ)の使い方が適切でないと間違った答えを導き出すことが起こり得ます。具体的な例を示しましょう。電源電圧10Vを分圧して5Vを出力する回路として、図2に示す回路を考えたとします。一見すると問題ないように思えますが、この回路をLTspiceでシミュレーションするとエラーが発生してシミュレーションが実行できません。どこが問題かお判りでしょうか。実は、図2に示す回路図にはGNDが存在しません。SPICEでは、電位の基準であるGND(0V)を必ず指定する必要があるからです。これはかなり極端な例かもしれませんが、実際に筆者が体験した事例です。

 
電源電圧10V を分圧して5V を出力する回路

図2.電源電圧10V を分圧して5V を出力する回路

 

1-4. SPICEの仕組みを知ることが効率的な回路設計につながる

仮に上記のような事例が発生しても、事前にSPICEの仕組みを知っていれば、エラーにすぐに気が付くはずです。しかし、それを知らなければ、長時間その問題に悩まされてしまうことになります。回路シミュレーションの結果が事前の予想と異なる場合、それは自分の考えた回路に要因があるのか、あるいはSPICEの設定や使い方に問題があるのかのいずれかです。もし、後者(SPICE)に問題がないことにいち早く気が付けば、その分自分のアイデアの軌道修正に時間が割けるわけです。そのためにはSPICEの仕組みを知っておくことが重要になってきます。SPICEの仕組みを知ることが、効率的な回路設計の第一歩と言っても過言ではありません。

 

1-5. SPICEとは

● SPICEの成り立ち

SPICEは、1973年にカリフォルニア大学バークレー校(UC Berkeley)で開発された回路シミュレータです。初期バージョンはFORTRANで記述されていました。このFORTRANによるSPICEは改良・機能追加を経てSPICE2G6が最終版となります。これが代表的な商用版SPICE(PSpice、HSPICE等)の元になっています。その後、「Berkeley SPICE」はC言語に移植されました。C言語SPICEは、SPICE3として開発が継続され、SPICE3F5が最終版となりました。図3はSPICEの遍歴を簡単にまとめたものです。後ほど詳しく説明しますが、実はこのSPICEの成り立ちに起因して、ちょっとした煩わしさが生じてしまったのです。

 
SPICEシミュレータの変遷

図3.SPICEシミュレータの変遷

 
● Berkeley SPICEから派生したSPICE(SPICEには親戚がいる!)

先に説明したように、Berkeley SPICEが元になってさまざまな有償・無償のSPICEが登場しました。LTspiceもBerkeley SPICE(SPICE3F4/5)が元になっています(現在のLTspiceシミュレータは、性能向上、バグ修正、機能拡張のために完全な書き換えが行われています)。Berkeley SPICEを親とすると、LTspiceやPSpiceはその子供たち、あるいは親戚ともいえるわけです。ただ、困ったことに、この親戚は少々仲が悪いというと言い過ぎかもしれませんが、実は互いに互換性が十分ではないのです。もちろん、基本的な機能は共通なのですが、一部のSPICEでしか使えない機能・素子などがあります。例えば、図4 はLTspiceで使用できる代表的な素子の一覧です。

この中で、×印のデバイスはSPICE2G6系のSPICEでは互換性がありません。また、△印のデバイスは、LTspiceで独自に拡張されており、LTspice以外のSPICEでは使えません。このことは単独のSPICEを使用している限り特に問題ないのでは?と思われる読者がいるかもしれません。しかし、実はこの互換性が結構煩わしい問題になるのです。次にそのあたりを詳しく説明していきます。

 
LTspiceで使用できる代表的な素子一覧

(×: SPICE2G6 系では互換性なし △:LTspiceで独自に拡張)
図4.LTspiceで使用できる代表的な素子一覧

 

1-6. SPICEの文法

● 人間にはわかりやすい回路図。でも、SPICEには理解できない!

商用版SPICEやLTspiceには、回路図エディタという回路図を描くツールが付属しています。ユーザは、回路図エディタを使って電子回路を作成し、回路シミュレーションを実行するわけです。しかし、SPICEはこの「回路図」を人間のように認識することはできません。では、SPICEはどのように回路図を「認識」しているのでしょうか。実はLTspiceや商用版SPICEは、回路図からSPICEが認識できるフォーマットへ自動で変換し、回路シミュレーションを実行しているのです。SPICEが認識できるフォーマット(言語)が、「ネットリスト」と呼ばれるものです。ネットリストとは、図5 に示すようにある決まった構文・文法に従って回路素子の接続情報や素子値、または解析設定などを記述したASCIIファイルのことです。C言語をはじめとするプログラム言語は、人間が記述したソースコードから機械語に変換して実行ファイルを作成していますが、まさにSPICEでいうところの機械語がこのネットリストに相当します。機械語を人間が解読して記述するのは大変ですが、SPICEネットリストは構文が非常に簡単ですので、人間が作成することも容易です(なお、本稿ではSPICEネットリストの構文は割愛しますので、参考文献[1][2][3]などを参考にしてください)。従って、実は回路図を作成しなくともSPICEネットリストをテキストエディタなどで作成すれば、SPICEシミュレーションを実行することができるのです。

 
SPICEネットリスト構文例

図5.SPICEネットリスト構文例

<参考文献>
[1] http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE
[2] http://ayumi.cava.jp/audio/spiceman
[3] 青木英彦著、電子回路シミュレータLTspice XVII リファレンスブック、CQ出版社
 
● 日本の公用語は日本語、SPICEにも専用の言語があり、方言もある!

SPICEにはBerkeley SPICEの派生版が存在することを説明しました。また、SPICEはネットリストと呼ばれる共通フォーマットを元にして回路シミュレーションを実行することも説明しました。「派生版SPICE」はBerkeley SPICEのネットリスト形式を「ほぼ」踏襲していますが、各々のSPICEによって独自の「方言」があります。日本人が公用語である日本語を使っていても、関西弁や東北弁といった地方独自の特徴があるのと一緒です。派生版SPICEにも「方言」のような独自構文が存在しているのです。従って、あるSPICEで作成されたネットリストを別のSPICEで読み込んで実行しても正常に動作しなかったり、結果が異なったり、ということが発生するので注意が必要です。

 
次回もお会いできることを楽しみにしています。


■ 次回(第2回)予定の内容
 ● SPICEの基本機能:直流/交流/過渡解析
 ● 基本機能の違い:変動要因を限定して、回路特性を確認する
 ● 直流解析:変動要因は、「電源電圧、温度、入力信号の直流電圧・電流値」
 ● 交流解析:変動要因は、「電源電圧、入力信号の周波数」
 ● 過渡解析:変動要因は、「時間」
 ●効率よく回路設計するためには、解析の順番がとても重要


本連載記事
 第1回 SPICEシミュレータの仕組み
 第2回 SPICEにできること
 第3回 SPICEモデルの作り方とSPICEへの組み込み
 第4回 モデルを作ってみよう(その1)
 第5回 モデルを作ってみよう(その2)
 

ochiai■ 著者紹介
落合 忠博(おちあい ただひろ)
株式会社モーデック CDK事業部 マネージャ

アナログ回路設計で培った技術で、基板設計ユーザ向けの「Model On!」サービスや、部品メーカからの受託サービスなどを統括しています。IC回路モデルモデリング、デバイスモデリングにとどまらず、設計へのアドバイスなども積極的に実施しています。

 

関連記事
第5回 モデルを作ってみよう(その2)
SPICEモデルの作り方とSPICEへの組み込み
第5回 モデルを作ってみよう(その2)
第4回 モデルを作ってみよう(その1)
SPICEモデルの作り方とSPICEへの組み込み
第4回 モデルを作ってみよう(その1)
第3回 SPICEモデルの作り方とSPICEへの組み込み
SPICEモデルの作り方とSPICEへの組み込み
第3回 SPICEモデルの作り方とSPICEへの組み込み
第2回 SPICEにできること
SPICEモデルの作り方とSPICEへの組み込み
第2回 SPICEにできること