【第1回】メルマガ11月号 テクニカルコーナーPSpiceのモデルについて
ネットリストとモデル
PSpiceのモデルを考えるにはまず、PSpiseのシミュレーションについて調べることからスタートしなければなりません。ここでは
図1のような簡単なトランジスタ回路を作成し、1V(0-peak)1kHz の正弦波を入力して10msまでの回路の動作をシミュレーションすることを考えてみましょう。

図1. トランジスタ回路
回路中の各ノード(ネット)にはノード名が記入されている
PSpiceでシミュレーションを行うためには最初にOrCAD Capture上で回路図を描き、同時にシミュレーションを行うための設定を行います。
OrCAD Captureから[
PSpiceを実行(
Run Simulation)]ボタンをクリックすると、OrCAD Captureはリスト1のような**cirファイルというテキストファイルを作成しPSpiceに渡します。このファイルがSPICE入力ファイルと呼ばれるものです(この言い方は厳密ではありません。昔の大型計算機/Fortran言語時代からの流れで、この入力文は“SPICE Deck:Deckはカードの束の意味”と呼ばれることがあります)。
PSpiceはこの形式のファイルを読み込んでシミュレーションを開始します。実際のOrCAD Captureからはこのリストよりもう少し違った形でリストを出力しますが、もっとも基本的な形にすると
リスト1のようになります。

リスト1. 図1のトランジスタ回路のSPICE入力文(.cirファイル)
0s-10msまでの過渡解析を行うように設定してある
このSPICE入力文の解説は別の機会に行うことにして、
リスト1のネットリストをご覧ください、
この文の3行目のところを見ると、
Ra 2 Vcc 10k
と書かれています。
PSpiceはまずネットリストの各行の先頭の1文字をチェックし、この部品が何かを判断します。先頭文字がBであればガリウム砒素(GaAs)FET、Cであればコンデンサ、Dであればダイオードというように(先頭文字がAに対応する部品はありません)、PSpiceはこの部品が何であるかを判断します。この一覧はPSpiceレファレンスガイド(*)に記載されています。
リスト1では部品Raは抵抗であり、この部品はノード2とノードVccに接続され、その値は10kΩであることを示しています。PSpiceがこの部品を抵抗と判断したので値の単位はファラッド[F]やヘンリー[H]ではなくオーム[Ω]として読み込みます。
Model文
一方、リストの9行目を見ると文の先頭がQ1となっていますが、これはトランジスタ(BJT)を表しています。SPICEの記述ルールに従いトランジスタQ1のコレクタがノード1に接続され、ベースがノード2に接続され、そしてエミッタがノード3に接続されていることが示されます。
単純な(一般の)抵抗、コンデンサ、インダクタなどはネットリストの情報だけで十分です。ただ、トランジスタのような複雑な特性を示す部品ではネットリストだけからはトランジスタの接続情報しかわからず、PSpiceにはこのトランジスタがどのような性質のものであるか、特性の詳細がまったくわかりません。そこで、.model文を追加します。.model文により、このトランジスタがNPNタイプであり、またこのパーツの特性はカッコの中の値であることを明確にします(カッコ自体は省略可能です)。
さて、リスト中の.model文のカッコの中身ですが、この記述を見ても回路設計エンジニアには何のことかわかりません。これらのパラメータの意味は「PSpiceレファレンスガイド」の「アナログデバイス」の項の「Q バイポーラトランジスタ」のところに解説されています。
トランジスタのモデルパラメータは少し複雑ですので、代わりにダイオードの例を
表1に示します。

表1. ダイオードモデルのパラメータ一覧
右端がデフォルトで設定される値:PSpiceレファレンスガイより抜粋
これらのパラメータの値を変えることで現実にある無数のダイオードのモデルが作られます。パラメータの意味をさらに詳しく知りたいときは文末の参考文献をご参照ください。
もちろん、これらのパラメータ値を直接手で入力するのは困難です。そこで、パラメータの値を求めるための手段としてPSpiceに付属しているModel Editorプログラムを使います。 Model Editorではデバイスのデータシートに記載されている各特性グラフ中の値やテーブル中の数値をピックアップしてModel Editor中のリストに記入していきます。Extractボタンをクリックするとプロットしたポイントに最もフィットするカーブが作られ、このときのカーブに対するパラメータ値が抽出されます。もちろん、抽出した値が妥当かどうかは試験を行って最終的に人間が判断する必要があります。
データシート上の特性曲線はほとんどが標準値で記載されていますので、抽出されたモデルは標準値を持ったデバイスということになります。
この表を見てもわかるように、PSpiceを含めSPICEではそれぞれのパラメータに対してデフォルトの値が前もって定められています。
.model文中に記載されないパラメータ値があれば自動的にこのデフォルト値が入力されます。たとえば、極端に
.model DABC D( )
と書くと、“DABC”という名前のダイオードはすべてのパラメータの値が
表1のデフォルトの値であるダイオードになることがわかります。ただし、全部のパラメータがデフォルト値であるダイオードの型番/データシートが存在するわけではないので、具体的にどのような仕様のダイオードかは知るよしもありません。
MOSのモデル
ICチップ上で使用するMOS FETについては近年の微細加工化に伴い、精密なモデルが必要となってきました。たとえばBSIM(Berkeley Short-Channel IGFET Model :IGFET はInsulated-Gate Field-Effect Transistor)のような複雑なモデルなどがその例です。そのため、同じMOSでもいくつかの異なった種類のモデルに対応する必要があります。このようなモデルに対しては.model内に「LEVEL=」という記述を追加して複数のモデルに対応しています。PSpiceではVer 16.0の時点で7種類のMOSモデルを用意しています。
たとえばMOSの.model文中にLEVEL=7と記述すればこのモデルはBSIM3 Ver 3.2に対応したモデルと解釈してPSpiceは記載されたパラメータ値を読み込みます。
1970年代に開発されたSPICEですが、このプログラムにいまだに最新のモデルが追加されているのもおもしろい現実です。
サブサーキット
先頭がXで始まる記述文はサブサーキットです。サブサーキットは内部が抵抗、コンデンサ、トランジスタなど基本素子の集合体とその接続情報の形で表されています。基本素子だけでは表現できない素子、たとえばOPアンプ、フォトカプラ、MOS単体と寄生ダイオードをひとまとめとしてパワーMOS素子としたものなど広範囲に使われます。
基本素子の場合、詳細な特性は.model文で書かれましたが、サブサーキットの場合、モデル文はリスト2のような記述になります。

リスト2. サブサーキットの例(OPアンプ uA741(μA741)の例)
記述を見るとこのパーツはコンデンサ、ダイオードなどから成り立っていることがわかる。また、最初の6行のコメント文(先頭がアスタリスクの文)に引数の意味がコメントされている(PSpiceのOPamp.libより抜粋)
サブサーキット化されてしまった回路(リスト2はOPアンプです)は元がどんな回路図になっているかはよくわかりません。そこで便宜をはかるため、必要に応じてコメント文の形でサブサーキットの各ピンの意味/機能が記載されています。リスト2ではサブサーキットの1ノードがnon-inverting input(OPアンプの非反転入力ピン)、2ノードがinverting input(反転入力ピン)...とコメントされています。
cirファイルのネットリスト中に
X100 10 11 12 13 14 uA741
と書かれると、ネットリストの情報から「部品番号X100はそれぞれノード10、11、12、13、14に接続された部品でサブサーキット名はuA741である」ということがわかります。PSpiceではこの記述順に対応してサブサーキットに引数が渡されます。ここではノード10にはサブサーキットuA741の1ノード、ノード11にはサブサーキットの2ノード、ノード12にはサブサーキットの3ノード、ノード13にはサブサーキットの4ノード、そしてノード14にはサブサーキットの5ノードがそれぞれ対応します。このようにしてサブサーキットとネットリスト間のリンクが構成され、シミュレーションが行われます。
model文もsubckt文も記述形式は違ってもPSpiceから見た扱いがほとんど同じですので、libファイル内(後述)に混在して書かれています。
アナログ ビヘイビア モデル(ABM)
今まで述べてきたモデルは現実に近い、いわゆる物理モデルとして表現されています。それに対し、ABM(Analog Behavioral Model)パーツは内部が数式やテーブルで表された数理モデルとして表されます。ABMは@設計した回路本体の周辺にファンクションジェネレータや負荷などを接続するとき、これらが理想的パーツであるほうが設計した回路自体を評価しやすい。A回路の動作を確認するとき、一部の回路機能については数式やテーブルで表し、回路動作が正しいことを確認し、その後ABMの部分を具体的な回路で書き換えるB希望の回路が大きくて具体的な回路で設計/シミュレーションを行うのが面倒である...などの理由からシミュレーション用回路の一部をABMで記述する、といったことがあります。ABMをうまく使うと効率のよいシミュレーションが行うことができる場合も少なくありません。それぞれのABMの使い方についてはPSpiceユーザーズガイド(*)をご覧ください。
ABMを使った例として実効値(Root Mean Square:RMS)演算回路を図2に示します。
この回路ではまず、電圧制御電流源(VALUEパーツ)G1とコンデンサC1で入力電圧の積分演算が行われます。その後で電圧制御電圧源(EVALUEパーツ)E1により平方根の演算を行い、さらにこれまでの経過時間で割る演算を行います。これでRMSの演算になりますので、その演算結果を電圧値として出力しています。
つまり、この回路の出力電圧V(OUT)は
(ただし、t=0でV(OUT)=0)
となります。この回路に正弦波を入力してシミュレーションを行った結果を
図3に示します。
シミュレーションの進行とともにリアルタイムで演算が行われているようすがわかるでしょう。

図2. ABMパーツを使った実効値(RMS)演算回路

図3 RMS回路(図2)のシミュレーション結果(0s-10msまで)
出力信号(V(OUT))は時間とともに0.707Vに収束していくのがわかる
このように、実際の部品を使ってこの回路を設計するのはたいへんですが、回路ブロックを数式により表現することで簡単で高精度のRMS回路が実現できます(シミュレーション終了後、波形を表示させた段階でRMS演算を行う手段もあります)。
ディジタルパーツのモデル
PSpice A/Dではカウンタやフリップフロップ、ゲートなど使用するディジタルパーツにもモデルがあります。そもそもSPICEがアナログIC回路の設計/シミュレーション用として開発されたソフトウェアなので、ディジタルパーツという考え方がSPICEにはありません。したがってSPICEプログラム間でほぼ共通に使えるアナログパーツと異なり、ディジタルパーツはPSpice独自に開発されました。そのため、PSpice独自の記述言語で書かれています。つまり、他のSPICEプログラムではディジタルパーツのモデルは読み込むことはできません。PSpiceのディジタルパーツは内部が実際の回路のように個々のMOSやトランジスタで書かれているのではなく、そのパーツの機能(カウンタ、ゲート、フリップフロップなどの動作の記述)、タイミング、入出力仕様、アナログ-ディジタル、ディジタル-アナログインターフェースの仕様などが独自の言語で書かれています。
libファイル
リスト1では.model文はcirファイル内に直接書かれています。この形式がオリジナルのSPICEの記述方法です。しかし、汎用に使用するモデルについていちいちcirファイル内に記述しているようでは非効率です。そこで、一連のデバイスのモデル群をひとまとめにし、“***.lib”というファイルにしておくことも可能です。
OrCAD CaptureからSimulation Settingsの画面を表示させコンフィギュレーションタブを選択し、シミュレーションで使用するパーツのモデルが含まれるライブラリファイル(.libファイル)を登録します。PSpiceの記述では.mode文の代わりにたとえば
.lib c;\Mylib\”Mylib”
と書かれます(実際の記述は少し異なります)。
PSpiceはこの.libに記されているパスの情報をもとにMylibファイルを探しに行き、その中にあるモデルを読み込みます。もし、このパスが書かれていなかったり、間違っていたりするとPSpiceは
.model *** is undefined
というエラーを表示してシミュレーションを停止してしまいます。
おわりに
PSpice本体は回路計算を行うエンジンなので、シミュレーション条件の設定に従って十分な精度で回路計算を行うことができます。むしろ、シミュレーションの結果を左右するのはモデルの正確さに依存します。したがって、厳密なシミュレーションを行うためには使用するモデルをどこから得たのか、そのモデルの出所先を確認しておく必要があります。
(*)PSpiceレファレンスガイドおよび、ユーザーズガイドは
C:\OrCAD\OrCAD_16.0\日本語ドキュメント\マニュアル\PSpice
フォルダ内に収録されています(PDF形式のファイルです)。
■参考文献
日本語で書かれた文献として
(1) 新原盛太郎“SPICEとデバイス・モデル”,2005, CQ出版(株)
基本デバイスのモデルパラメータの詳細について知りたいときは
(2) Giuseppe Massobrio , Paolo Antognetti “Semiconductor Device Modeling with SPICE ”(2nd Edition) 1993, McGraw-Hill, Inc