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

2.1 はじめに

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

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ライクなシステム上で小規模の並列実行をサポートしています LinuxMicrosoft WindowsおよびMacOSのためのXyce公式ウェブサイトのhttps://xyce.sandia.gov/Xyceからダウンロードすることができます Linux上で実行できるXyce並列回路シミュレータには、OpenMPIライブラリをインストールする必要があります。 Spice4qucsXyceシリアルXyceパラレル現在Microsoft Windowsオペレーティングシステムでは利用できませんの両方をサポートしています

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

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

RCL_sch_EN

図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という名前です Qucsqucsatorシミュレーション結果ngspiceXyceシミュレーション結果は、3つの異なるデータセットになります:

  • RCL.dat — qucsator用
  • RCL.dat.ngspice — ngspice用
  • RCL.dat.xyce — Xyce用

すべての3つのデータセットは、データセットポストシミュレーション視覚化のためのQucsデータを含むことを意味するための拡張子datを持っています ngspiceXyceデータセットでは、外部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に示します

RCL_ac_EN

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

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

RCL_tran_EN

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

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

xyce_EN

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

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

diagr_dlg_xyce_EN

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

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

RCL_tran_xyce_EN

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

2.4 変数名

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

表2.1 QucsとSPICEの変数の対応

変数のタイプ Qucs 記法
Spice 記法
DC node voltage Node.V V(node)
AC node voltage Node.v ac.v(node)
TRAN node voltage Node.Vt tran.v(node)
HB node voltage Node.Vb hb.v(node)
DC probe current Pr1.I i(pr1)
AC probe current Pr1.i ac.i(pr1)
TRAN probe current Pr1.It tran.i(pr1)

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

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

接頭辞
説明
Node.Vt Qucs simulation, default dataset
dataset:Node.Vt Qucs simulation, external dataset
ngspice/tran.v(node) Ngspice simulation, default dataset
ngspice/dataset:tran.v(node) Ngspice simulation, external dataset
xyce/tran.v(node) Xyce simulation, default dataset
xyce/dataset:tran.v(node) Xyce simulation, external dataset

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にリストされています。

ngspice_DC

図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章に記述する特別なカスタムのシミュレーション技術により制御されています。

Comments