第2章 基本的なQucs/ngspice/Xyceシミュレーション

2.1 はじめに

このセクションでは、QucsのGUI上の回路図から、ngspiceとXyceというSPICE互換シミュレータエンジンを使用して回路シミュレーションを起動するための基本的ないくつかの手法を説明します。 Spice4qucsは、特にこの目的のために設計されたspice4qucsサブシステムを手段として、SPICEの組み込みサポートを含んでいます。 ngspiceとXyceシミュレータはQucsに埋め込まれていませんが、独立した外部のシミュレータとして動作します。 Qucsで使用する前に、Qucsを使用しているコンピュータのオペレーティングシステムにngspiceとXyceの両方をインストールする必要があります

2.2 サポートするシミュレータ

ngspice は3つのオープンソースのソフトウェアパッケージ:SPICE 3f5, Ciderと XSPICEをベースに実装されたミックスレベル/ミックスシグナルの回路シミュレータです。Ngspiceは、利用可能なもっとも広く使われ安定した現世代のオープンソースのSPICEシミュレータの1つです。それにはもともとのSPICE3ftシミュレーションの機能、例えばDC、AC、過渡解析、フーリエ解析、感度解析、それに加えてとても多くの特別のシミュレーションと素子モデルの拡張を実装されています。ngspiceと一緒に、ngnutmegという名前のデータ操作パッケージが配布されています。これは、最先端の数値解析とngspiceのシミュレーションデータの後処理のための可視化ルーチンを提供しています。ngspiceのインストール手順は、webサイトhttp://ngspice.sourceforge.net/download.htmlに書かれています。そのngspiceウェブサイトからは、すべての配布と開発コードのソースに自由にアクセスすることができます。

Xyceは、大規模並列コンピューティング・プラットフォーム上で非常に大きな回路の問題を解決することのできるオープンソースで、SPICE互換であり、高性能なアナログ回路シミュレータです。また、すべての一般的なデスクトッププラットフォーム上でシリアル実行、またUnixライクなシステム上で小規模の並列実行をサポートしています。 Linux、Microsoft Windows、およびMacOSのためのXyceは公式ウェブサイトのhttps://xyce.sandia.gov/Xyceからダウンロードすることができます。 Linux上で実行できるXyce並列回路シミュレータには、OpenMPIライブラリをインストールする必要があります。 Spice4qucsはXyceシリアルとXyceパラレル(現在Microsoft Windowsオペレーティングシステムでは利用できません)の両方をサポートしています。

2.3 一般的なシミュレーション手法

spice4qucs拡張がQucsのGUIにどのように組み込まれているかを理解するための出発点は、外部シミュレータでQucsの回路図をシミュレートするための基本的な操作でしょう。この目的のために、図2.1に示した単純なRCL回路を考えます。この回路図例は、Qucsの例題を格納するツリーの中にあります:

examples\ngspice\RCL.sch .

図2.1 Qucsから制御するngspiceまたはXyceシミュレーションをデモするための単純なRCLテスト回路

この回路図では2つのシミュレーションを指定しています:

  • 1 MHz から10 MHzまでのACシミュレーション

  • 0 から1 usまでの過渡シミュレーション

図2.1の回路図が正確に描かれていることを確認するために、Simulation->Simulateという手順でqucsatorを使ってシミュレーションします。Qucsのシミュレーションが終了したら、以下にリストした出力データをプロットします:

  • 周波数領域でのR1抵抗両端の電圧 (vR ノード)

  • 入力と出力電圧波形( vInvR ノード)

  • 周波数領域の電流(Pr1 電流プローブ)

  • 電流波形 (Pr1)

Spice4qucsでは、Qucsと同様に回路図部品のプロパティを定義することができます。部品の値は、SPICEネットリストに互換性のある形式に自動的に変換されます。ユーザーが手動で改造する必要はありません。しかし、すべての定義済みのQucsコンポーネントがngspiceまたはXyceによるシミュレーションで利用可能なわけではないことに注意してください。どのコンポーネントをどのシミュレータで使用できるかのテキストリストは、後のセクションでいくつかのテーブルにわけて提供されます。 部品を配置し配線した後、一つ以上のシミュレーションアイコンを加えれば、SPICEシミュレーションはQucsメニューのSimulation -> Simulate with Spiceというシーケンスで起動できます。続いて、外部シミュレータのダイアログが表示されます。このダイアログを、図2.2に表示します。

ExtSimDlg_EN

図2.2 外部シミュレータ用ダイアログ:ここで(1)はシミュレータ選択ボタン、(2)はシミュレーション設定ボタン、(3)はシミュレート実行ボタン、(4)はネットリスト保存ボタン

ngspiceかXyceシミュレータをインストールしたディレクトリが、OSのshell変数$PATHの宣言に含まれてない場合、ユーザはngspiceやXyceのシミュレーションを実行する前に、実行コードの在り処の場所を入力しなくてはなりません。このステップはWindowsとMacOSで必要です。その場合、Qucsユーザは図2.2で(2)のラベルのついたボタンを押して、図2.3に示すSimulator settingsダイアログを実行する必要があります。これにより、キーボード入力かOpen File Select buttonを適当に押すかで、ngspiceやXyceの実行コードのアドレスを入力できます。Xyce Parallelシミュレータの場合、コンピュータシステムに実装されたプロセッサーの数も、キーボードで入力するか、矢印を上下して設定しなくてはなりません。

Simset_EN

図2.3 シミュレータの実行コードの場所を設定するダイアログ

:Xyce Pararellの実行コードを定義する方法に注意してください。Xyce-ParallelパッケージのXyce parallelのコマンド行は以下のようなフォーマットです:

<Path_to_xyce_executable>/xmpirun -np %p

.ここで、%pというワイルドカードは、プロセッサーの数に置き換えられます。

ユーザがビルドしたXyce-Parallel にはxmpirun スクリプトがありません。ですから、自分でコマンド行を構成してください。例えば opeMPI/usr/binに、またXyce-Parallel が /usr/local/Xyce_Parallelにインストールされる場合は、コマンド行は次のようになります:.

/usr/bin/mpirun -np %p /usr/local/Xyce_Parallel/bin/Xyce

テンポラリにシミュレーションデータとネットリストを保存するディレクトリ(シミュレータ用作業ディレクトリ — デフォルトでは$HOME/.qucs/spice4qucs)を定義することもできます

Qucsの回路図をngspiceシミュレータでシミュレーションするには、simulatorとしてngspice を選択し図2.2のSimulate ボタンを押します。シミュレーション実行中に、ngspiceは、シミュレーションログを生成します。それは、図2.4のExternal simulatorダイアログウィンドウに表示されます。ログは、Qucsシステムのログの置き場所$HOME/.qucs/log.txtに保存され、後でSimulation->Show last messages(または F5のショートカット)で見ることができます。ngspiceのシミュレーションが失敗した場合、ngspiceのシミュレーション中に報告されたエラーは、シミュレーションログウィンドウにリストされます。同様に、Qucs/ngspiceシミュレーションが成功した場合も報告されます。

ngsp_EN

.図2.4 Simulate with an external simulatorダイアログウィンドウに表示されたngspiceの実行ログの一部

spice4qucsで導入された新たな特徴は、Qucs回路図に含まれる情報からSPICEネットリストファイルを生成し保存できることです。現在のシミュレーションに対応するSPICEネットリストを保存するには、図2.2で(4)とラベルされた Save netlistボタンを押してください。ボタン(4)を押すと、SPICEネットリストが、~/.qucs/spice4qucsディレクトリにnetlist.cirというファイル名で保存されます。RLCテスト回路の例で生成されたネットリストです:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

* Qucs 0.0.19 /home/vvk/qucs/examples/ngspice/RCL.sch V1 _net0 0 DC 0 SIN(0 0.6 7.5MEG 0 0) AC 0.6 VPr1 _net0 vIn DC 0 AC 0 L1 vIn _net1 10U R1 0 vR 30 C1 _net1 vR 40P .control set filetype=ascii AC LIN 1000 1MEG 10MEG write RCL_ac.txt VPr1#branch v(vIn) v(vR) destroy all TRAN 4.97512e-09 1e-06 0 write RCL_tran.txt VPr1#branch v(vIn) v(vR) destroy all exit .endc .END

ngspiceかXyceのシミュレーション実行が成功したらExternal simulationダイアログを閉じてください。生成されたシミュレーションデータは、通常のQucsの可視化ルーチンでのプロットに使用することができます: ダイアグラムアイコンかテーブルアイコンを現在のQucs回路図ウィンドウか関連したQucs表示ページににドラッグします。ダイアグラムかテーブルが配置されると、 Diagram propertiesダイアログが現れます。現在のシミュレーションに対するデータセットを選択することで、シミュレーション結果出力を標準のQucsと同じ方法で、プロットしたり表にしたりできるようになります。

diagr_dlg_EN

.図2.5 Diagram propertiesダイアログ:ここで(1)はデータセット選択ボタン、(2)はシミュレータ選択ボタン

ngspiceのシミュレーション出力データは、SPICE 3f5の生テキストの出力形式です。Qucsは、SPICE 3f5スタイルのデータをQucsのspice4qucsサブシステムが提供するルーチンを使ってQucsのデータセットに変換します。異なった種類のシミュレーション、例えば、SPICEのACとTRAN,は1つのQucsデータセットに結合されます。Qucsは、名前の衝突と異なる種類のシミュレーション結果が混合するのを回避するために、各シミュレータのデータセット名に適切な接尾辞を追加します。 RCLのテスト例ではQucsの回路図はRCL.schという名前です。 Qucsのqucsatorシミュレーション結果、ngspiceとXyceシミュレーション結果は、3つの異なるデータセットになります:

  • RCL.dat — qucsator用

  • RCL.dat.ngspice — ngspice用

  • RCL.dat.xyce — Xyce用

すべての3つのデータセットは、データセットがポストシミュレーション視覚化のためのQucsデータを含むことを意味するための拡張子datを持っています。 ngspiceとXyceデータセットでは、外部Qucsシミュレータの名前を識別するためにファイル名に2番目の拡張子が含まれています。

データセットセレクタ(図2.5の(1))はデータセットの唯一のベース名(例えば RCL)を示しています。ユーザは、(2)とラベルを付けたシミュレータ名選択のドロップダウンリストを使用して、適切なシミュレータを選択する必要があります。このドロップダウンリストには、ユーザーが誤って存在しないデータセットを選択することが無いように、既存のシミュレータのデータセットだけを表示しています。

データセット選択後、ユーザはプロットすべき変数を選択しなくてはなりません。Qucsは、node voltage名とcurrent probe 名についてSpiceの記法を引き継いでいます。SPICE名は、spice4qucsでは大文字小文字の区別は無く、例えば以下のようなものです。

  • v(out) — ノード outの電圧

  • i(Pr1) — 電流プローブ Pr1で記録される電流

またQucsのspice4qucs拡張では、異なるSPICEシミュレータからの異なる出力変数を区別するために、シミュレータに依存する接頭辞、例えばACシミュレーションならac.、過渡解析なら tran.、DCスイープ解析ならdc.をそれぞれの変数名に付け加えます。

それぞれのシミュレータには、個別の接尾辞が決まっています。

  • ngspice/ — ngspiceシミュレータの接尾辞

  • xyce/ — Xyceシミュレータの接尾辞

ですから、ngspiceシミュレータの変数のフルネームは ngspice/v(out)です。

このネームシステムのおかげで、データセットの名前の競合を回避することができます。

プロットのための個々の項目は、変数リスト上の名前をダブルクリックして選択できます。例として ac.i(pr1) をダブルクリックすると、その名前はQucsによって、右側のプロットウィンドウにコピーされます。この動作は図2.5に白い矢印マークで示しています。標準のQucsと同じ様に一つまたはそれ以上の変数を、2次元または3次元のグラフにプロットするために選択することができます。最後に、図2.5の下部に表示したようにApply ボタンを押すと、選択された変数の項目がプロットされます。外部ngspiceによる RCLテスト回路ののACシミュレーション結果のプロットを図2.6に示します。

図2.6 外部のSPICEシミュレーションによる8 MHz近傍での直列共振ピークを持つRCL回路に流れる電流のAC振幅応答

RCLテスト例の過渡シミュレーションデータをプロットするには、選択された自分の名前にtranが入っているプロット変数にする以外は、ACシミュレーションに記載された手順と同様の手続きに従いますので、図2.7を参照してください。

図2.7 RCL回路の入力と出力ノードにおける過渡シミュレーション電圧波形

RCLテスト回路もXyceでシミュレートすることができ、単に、外部シミュレーションダイアログでXyceを選択し、シミュレーションボタンを押すだけなので、図2.2を参照してください。 Xyceシミュレーション実行ログも表示されるので、図2.8を参照してください。

図2.8 External Simulate ダイアログウィンドウに表示されたXyce実行ログの一部

Xyce によるRCLシミュレーションデータをプロットするには、最初に、データセットRCL_xyce を選択しますが、図2.9を参照してください。

図2.9 XyceのEdit Diagram Propertiesウィンドウ

次にプロットするための変数を選択します。Xyceの過渡シミュレーション結果は次のとおりです:

図2.10 RCLテスト例のXyceによる過渡シミュレーションのプロット波形

2.4 変数名

spice4qucs拡張の一環として、ngspiceとXyceシミュレーション変数名は、SPICE表記からQucs表記に、またその逆にも変換されます。表2.1は、2つの表記の対応を示します。

表2.1 QucsとSPICEの変数の対応

また、別のシミュレータのデータを指定するための変数の接頭辞を表2.2に示します。

表2.2 QucsとSPICEの変数名の接頭辞

2.4 SPICE DC simulation

Qucsでは、SPICEの”DCスイープ”シミュレーションと等価なものを別の解析して定義はしていません。Qucs流の"DCスイープ"は、Qucsのより一般的なParameter sweep機能の特別なケースに過ぎません。SPICEのDC sweepを模擬するために、QucsのDC解析と 独立DC電圧源または電流源、あるいは抵抗のParameter sweepを組み合わせたものを使います。spice4qucsのSpiceネットリストビルダは、それらの2つの種類の 解析の結合を見つけると、それらをDC SPICEネットリストの項目に変換します。図2.11に示すように、この手順で、テスト回路は、1N4148ダイオードのDC電流電圧特性をシミュレートするテストベンチとして結線された、ダイオードDCバイアスネットワークから構成されています。この例は、Qucs例のディレクトリのツリーのexamples\ngspice\diode.schにリストされています。

図2.11 テスト回路と1N4148シリコンダイオードのシミュレートされたDC電流電圧特性

SPICE用とQucsのDCスイープシミュレーションには以下の違いがあることに注意してください。

  • SPICE用のDCスイープ:電源や抵抗の値”ではなく”、例えば、R1V1のようにスイープする電源の名前か抵抗の名前を、図2.11の V1 のように使います。

  • SPICE用のDCスイープ:SPICEモデルパラメータを、例えばT1.BfのようにDevice.Paramという記法を使ってトランジスタT1のパラメータBfをスイープできます。

2.5 AC

小信号のACシミュレーションは、spice4qucsサブシステムで完全にサポートされています。特に何もする必要はありません。回路図上に、AC simulation部品のアイコンを配置して、ngspice かXyceのシミュレーションを実行するだけです。変数名の置き換えは、表2.1にリストしています。Qucsのspice4qucsデータセットビルダーは、ACシミュレーションで生成されたすべての変数にac.という接頭辞を付加します。

NgspiceとXyceの小信号周波数ドメインACシミュレーションは、linear、decadeまたはoctaveの周波数スケールを使います。適応的な周波数ステップはまだ実装されていません。

2.6 TRAN

過渡シミュレーションも、spice4qucsサブシステムで完全にサポートされています。回路図上にTransient simulationの部品アイコンを配置し、シミュレートするだけです。qucsatorと、ngspice、Xyceシミュレータでは、過渡シミュレーリョンのタイムステップは異なった方法で実装されています。

qucsatorは常に、固定のタイムステップを使います。ngspiceとXyceは、適応的なタイムステップを使います。シミュレーションの間に出力されるシミュレーションポイントの数は、Transient simulationのプロパーティリストで指定されたシミュレーションポイントの数とほぼ同じです。例えば、図2.11のテスト回路では(訳注:この部分おかしいです)、回路図上では、200点が指定されています。しかし、SPICEシミュレーションでは、適応的にタイムステップを採用することから、ngspiceでは213個のシミュレーションポイント、Xyceでは799個のタイムポイントを使っています。この違いは、シミュレーションデータの後処理や、シミュレーション結果を比較する際には、考慮しなくてはなりません。

2.7 そのほかのシミュレーション

SPICE 3f5とは対照的に、Qucsのパラメータスイープの機能は、ngspiceとXyceシミュレータに実装されています。パラメータスイープシミュレーションはすべてspice4qucsにより設定され制御されています。spice4qucsのパラメータスイープ機能の動作の詳細は、セクション5.2で扱います。

Xyce はハーモニックバランスシミュレーションをサポートします。それについては、セクション8.7で紹介し、詳しく述べます。

ngspiceは、以下の 付加的なシミュレーションもサポートします:

  • フーリエ解析(第5.1章)

  • 感度解析

  • 歪解析(第5.2章)

  • ノイズ解析

フーリエ解析と歪解析は特別な部品を必要とします。これらは、QucsのSpice simulations グループに置かれています。フーリエ、感度、歪に対する回路シミュレーションはまたこの文書の第9章に記述する特別なカスタムのシミュレーション技術により制御されています。

back to the top