第1章 はじめに

注意:Firefoxでは図が表示されます

2014年8月のQucs-0.0.18のリリースに続いて、Qucs開発チームはこのソフトウェアの将来バージョンのいくつもの可能な方向の詳細について検討しました。Spice4qucsはそのうちの1つです。そのほかのGPLの回路シミュレーションパッケージの最良の特徴をQucsに取り入れながら、現バージョンのQucsのいくつかの問題を解決します。

同時にこのプロジェクトは、現在入手可能なツールに追加のモデル開発ツールを付け加えようと目論んでいます。QucsはもともとSPICEにない、Sパラシミュレーション、マルチポート小信号AC回路解析とかRF回路合成機能などを特徴とするRF・マイクロウェーブ設計用ツールとして開発されました。2003年に General Public License (GPL)でリリースされて以来、Qucsは安定で、柔軟で、適度に機能する回路シミュレーションパッケージをユーザに提供して来ました。

2003年以降何年もの間、Qucs開発チームはいくつものシミュレーション能力、例えば過渡解析、素子パラメータのスィープ機能、シングルトーンのハーモニックバランス解析などを加え、Qucsの機能を低周波でSPICEに並ぶものとし、高周波では顕著に拡張しました。Qucsとともに配布される素子モデリングツールを改良する相当な努力もなされてきました。Qucsの最新版には、代数式を操作するコード、Equation-Defined Device (EDD)モデリング、 Radio Frequency Equation-Defined Device (RFEDD) シミュレーション、 Verilog-A の合成されたモデル 、さらに広い範囲のコンパクト・ビヘイビャ素子モデリング、そして驚くべきパワーと効用をもったオープンソースパッケージの中心的な機能となったシミュレーションデータ後処理ツールが含まれます。

Qucsに対する新しい機能要求のうちの1つは、「より良いドキュメント」、特にシミュレーションの使用と限界とQucsに組み込まれたモデリング機能について概説するドキュメントです。 Qucsは、回路設計を補助するツールとして使用できる非常に柔軟な、大規模かつ複雑なパッケージです。したがって、その機能を説明するために多くの文書が書かれていますが、Qucsのマニュアルからはシミュレーションとモデリングの例が欠落しがちです。将来的にはQucsのリリースには二つかそれ以上の基本的なドキュメントをQucsに添付します。 最初のものは単に「Qucs - ヘルプ 」と呼ばれるもので、Qucsを使い初めて助けを必要とする初心者や、その他のユーザのためにも(確かに助けは必要なので)、入門情報を提供します。 「Spice4qucs·ヘルプ」と呼ばれる2番目のQucs文書は、より高度なシミュレーションとモデリングのトピックを紹介します。両方のドキュメントは、一般的な回路シミュレーションとコンパクトなデバイスモデリング例を多数提示します。これらは、文章の中でQucsの詳細な一連の参照マニュアルにリンクされています。 2003年以来Qucs開発チーム、および他の著者は、Qucsとその応用に関する研究成果を公開しています。これらの刊行物の目録は、この文書の最後にあります。 Qucsについての基礎と応用トピックに関する豊富な情報を提供しているので、Qucsの習得に興味を持って人はだれでも、これらの出版物を読むことをお勧めします。 「Qucs_Help」と「Spice4qucs·ヘルプ」のドキュメントの両方ともまさに現在進行中の仕事です。最新版は、それぞれが新しいQucsとともにリリースされます。また、Qucsの最新の開発状況を共有するために、Qucs開発中もそれらを更新する予定です。最新のドキュメントはhttps://github.com/Qucs/qucs-helpに置いてあります。

1.1 Background

http://qucs.sourceforge.net/からのQucsの現在のダウンロード頻度は、週当たり約3000なので、Qucs が最初2003年にリリースされて以来、およそ150万ダウンロードされたことになります。しかし、この数字は、150万コピーのQucsが現在定常的に使われていることを意味するものではありません。それは、特にRF回路設計とシミュレーションに関心のあるユーザーの間で、このソフトウェアに人気があるという指標にはおそらくなります。多くの割合の一般Qucsユーザにとって、現行バージョン(Qucs 0.0.18)は、日常のニーズを満たすに十分以上の機能をもった適度に安定した正確なシミュレーションツールを提供しています。実際にはQucsは完璧ではなく、いくつもの弱点と知られている多くの制限ももっています。技術の進歩に伴い、Qucsは単なるシミュレーションツールから、新興技術のデバイスを含む回路のモデリングとシミュレーションを扱うことができる設計ツールに進化することが強く要求されています。今日Qucsは驚異的な範囲の部品、素子と回路モデリングツールを含んでおり、それにより、標準的なコンポーネントと新しい製品デバイスから作られる回路とシステムをモデル化しシミュレーションすることができます。

Qucs 開発チームによって行われる主な目的のうち3つは、最初がソフトウェアのバグを削除して、パッケージの全体的なパフォーマンスを向上させること、第二に、既知の弱点と制限を除去し、第三に、ユーティリティを増加する新機能を追加したパッケージを開発することです。オープンソースソフトウェアの開発に慣れていない読者は、開発プロセスがどのように動作するかを知らないかもしれません。 Qucs開発チームとは、GPLのQucsパッケージの改善のために自分の時間と専門知識の両方を惜しみなく与えることに興味をもった個人のグループです。 Qucs開発チームは、固定されたグループではなく、異なった人々が、ソフトウェアの同じ部分や異なった部分に、同時に、または異なる時間に、貢献するダイナミックな組織です。 spice4qucsプロジェクトグループは、全体的なQucs開発チーム内のサブグループの一つです。これは、現在のQucsリリースの既知のいくつもの制限を解決するために、そして他のngspice(http://ngspice.sourceforge.net/)やXyceシミュレータ(https://xyce.sandia.gov/)に取り組んでいるGPL回路シミュレーションチームとによって行われた仕事を活用するために設立されました。

spice4qucsイニシアティブは進行中のプロジェクトであり、以下を目指しています:

  1. Qucsatorは、電子回路ネットワークの線形および非線形の実数と複素数の代数方程式と時間領域の代数と微分方程式の解のための古典的な数値計算のための数学ルーチンに基づいています。 qucsatorは小さな回路では、DCおよびAC小信号ドメインで正常に機能します。しかし、過渡とハーモニックバランスシミュレーションドメインでは、多くの場合、許容できる解に収束することができません。その性能は、多くの場合、スパース行列アルゴリズムを採用した近代的な回路シミュレータに期待されるよりも低いです。しかし、qucsatorは、RF小信号ACシミュレーションではよく動作しており、ここしばらくの間シミュレーションのためのファーストチョイスでありつづけるでしょう。

  2. .Qucsユーザにシミュレータエンジンをqucsator、ngspice、Xyceの中から選べるようにする。ngspiceかXyceを特定の回路のためのシミュレーションエンジンに選ぶことにより、ユーザはこの40年間におきた広範な開発によりもたらされた多くの機能を利用できます。ngspiceとXyceは、特に大規模な非線形回路に対し過渡シミュレーションの収束とスピードの改善をもたらします。Xyceは、シングルトーンのハーモニックバランスシミュレーションを別の方法で実現しており、線形と非線形の部品と素子に対しずっと改善した収束性を与えます。将来のXyceバージョンは、マルチトーンのハーモニックバランスシミュレーションを提供すると思われます。

  3. Qucsのサブサーキット、数式で定義された素子(EDD)、RF領域の数式で定義された素子(RFEDD)、Verilog-A素子の拡張。将来のQucsリリースでは、相互にリンクされた構造として動作する非常に改善した部品と素子のモデリング機能を提供し、モデル開発を物理的な概念からコンパイルされたC++のコードまで連続した開発フローとしてサポートします。これは、Berkeleyの“Model and Algorithm Prototyping Platform” (MAPP http://draco.eecs.berkeley.edu/dracotiki/tiki-index.php?page=MAPP )をQucsに加え、QucsのEDDとRFEDDモデルからngspiceとXyceのSPICEコードを合成し、QucsのEDDモデルからVerilog-Aモデルを合成することにより完成しようとするspice4qucsの野心的試みです。

  4. QucsのユーザにngspiceとXyceが提供する追加のシミュレーションツールと特別な部品と素子モデルへのアクセスを提供する。それには、素子製造元のSPICEモデルの使用を許す、より改善した部品ライブラリ設備を含みます。

  5. Qucs/ngspice/XSPICEシミュレーションを使うことで、Qucsに初めて、新のミックスモードのアナログ・デジタル回路シミュレーション能力を提供します。

spice4qucsイニシアティブは進行中のプロジェクトであり、まさに進展中の仕事と考えてもらわなくてはなりません。早いリリースでは、上記リストの機能がすべて一般の使用に供せられることはないでしょう。しかし、Qucs開発チームは、それらを可能な限り短期間に導入することを意図しています。前記の項目のリストにない機能もspice4qucsに導入されるかも知れません。

1.2 Qucs-0.0.18 Structure

Qucs-0.0.18パッケージの主なアナログモデリングおよびシミュレーション機能を示すブロック図を図1.1に示します。便宜上、特に簡単に識別できるように、同様のモデル化または同様のシミュレーション機能を備えたブロックには、同一の色をつけました、例えば暗赤色は、GUIとqucsatorアナログ·シミュレーション·エンジン、濃い緑色は、部品と素子モデリングツールです。ブロック間のデータの流れの方向も向きをもった矢印で示されています。 Qucs-0.0.18パッケージの動作の中心は、Qucsグラフィカルユーザインタフェース(GUI)、qucsatorシミュレーションエンジンと、素子と回路のパラメータを抽出し、シミュレーションされた信号波形を可視化するためのシミュレーションデータ処理機能(図1.1に黄色のブロックにより示される)です。図1.1のシアンのブロックは、よく知られているオクターブ数値解析パッケージ(https://www.gnu.org/software/octave/ )です。 Qucsは、追加のポストシミュレーションデータ処理や波形の可視化に加えて、qucsatorとOctaveが協調してトランジェント回路シミュレーションを行う実験的な回路シミュレーションプロセス(シアン色のブロック)にOctaveを採用しています。図1.1の単一の薄茶色のブロックは、具体的な回路の性能基準を満足する回路部品の値と素子パラメータを決定するためにQucsが使用するASCO最適化パッケージを示しています。

Qucs GUIの基本的な操作と使用、回路シミュレータおよび出力処理ルーチンに慣れていない読者は、このより高度な文書をさらに読み進める前に、「Qucs-ヘルプ」ドキュメントを参照する必要があります。

図1.1. Qucs-0.0.18が提供するアナログ·モデリングとシミュレーション機能を示すブロック図

1.3 Qucsに将来入る予定の機能

図1.2に示すのは、Qucs-0.0.18機能図の拡張版であり、追加されたブロックは、将来のQucsの開発のために選ばれた領域を示します。 Qucsの機能への2つの主要な拡張機能が、ngspiceとXyce回路シミュレータのQucsへの追加とMAPPソフトウェアの追加によりQucsデバイスモデリング機能の増強であることは明らかです。図1.2では、図1.1と同じカラーコーディングが採用されています。 MAPPモデリング拡張は、Qucsソフトウェアの一部を形成しますが、その機能のためにOCTAVEパッケージに依存していることを示すためにその色はシアンです。図1.2は、spice4qucsプロジェクトで取り組んでいる、Qucsに提案された変更を示すおおざっぱな絵です。詳細の多くは、以下のチュートリアルとそれに続くリファレンスのセクションで明らかになります。

図1.2. spice4qucsの主導で開発中の拡張したQucsシミュレーションとモデリングツールの概要を説明する拡張したブロック図

1.4 拡張したspice4qucsデバイスモデリングとシミュレーション機能の最初の視点

バージョン0.0.18のリリース以降にQucsがどれだけ進化しているかを示すには、この時点で簡単な例を紹介することが適当と思われます。この例は、すでにspice4qucsプロジェクトによって開発された、または将来のリリースで計画されている新Qucsの概要を提示するために注意深く選びました。新spice4qucsの機能を最大限に活用する方法について、十分な情報を読者に提供するために、それらをこの文書の後の章で詳述します。

Qucsバージョン0.0.18は、大部分のQucsのユーザには明らかでない隠された機能をもった、驚くほど洗練されたプログラムです。図1.3は、回路シミュレータの少ししか知られていない応用を示すQucs回路図です。 Qucsは、配布されたソフトウェアに実装されていない新しいコンポーネントまたはデバイスの高レベルの機能モデルを開発する上で理想的です。図1.3の回路図は、半導体トンネルダイオードのための物理方程式と素子パラメータを導入しています。QucsパラメータスイープとDCシミュレーションを使用することにより、ダイオードのバイアス電圧としてVPNをスキャンすることが可能であり、各バイアスポイントでトンネルダイオードバイアス電流IDNを計算し、ID = F(VD)の特性をプロットします。この入門例でQucsの回路図には、どのような電気部品も含まれていないことに注意してください。また、トンネルダイオードの電流は、その物理的model_equationsとmodel_parametersから直接計算されます

図1.3. 素子のmodel_parametersと、model_equationsとQucsのDC スキャンテストを含む半導体トンネルダイオードの Id = f(Vd)という数学表現

BerkeleyのModel and Algorithm Prototyping Platform (MAPP)は、新しいGPLのモデリング・シミュレーションツールです。それは、Octave数値解析ソフトに共通なMATLAB言語のサブセットを使って、University of California, BerkeleyのDepartment of Elecrical Engineering and Computer ScienceのMAPPチームによって開発されました。spice4qucsプロジェクトの一部として、MAPPソフトウェアは、QucsのGUIにインタフェースされています。図1.4は、図1.3のトンネルダイオードに対するMAPPによるビヘイビャモデルを紹介するものです。図1.3と1.4のモデルがとても似ていることに注意してください。MAPPによるダイオード特性の回路シミュレーション結果は、図1.4のプロットになります。

図1.4. MAPPのトンネルダイオードモデルと印加されたバイアス電圧の関数としてシミュレーションされたダイオード電流

QucsとMAPPモデリングツールにより、モデルをテストする素子の物理特性に基づき、一連の数式で表現することができるようになり、それらの正しい動作を回路図に取り込むシミュレーションモデルを構築する前に確認できます。図1.5は、トンネルダイオードの3番目のモデルと、素子のDC電流対電圧特性をシミュレートするテスト回路を示します。このモデルは、Qucs-0.0.18と、spice4qucs版の回路シミュレータで動作します。それは、いかにQucsのEDDモデルがトンネルダイオードの物理モデルを表現し、このモデルがどのように固有のシンボルで表現されそのほかの部品と組み合わされてDC特性のテスト回路を構成するかを示しています。QucsのEDDは、SPICEシミュレータには実装されていません。SPICE 3f5とそれ以降にはそのかわりに、例えばBタイプ電源のような機能が用意されています。

図1.5. 図3で最初に紹介されたトンネルダイオードに対するQucsのEDDビヘイビャモデル

QucsのEDD要素には、コンパクトデバイスのシミュレーションモデルを開発する際に特に重要な1つの特徴があり、それは、その構造とモデリング能力はVerilog-Aハードウェア記述言語と類似しているということです。そのため、MAPP/Qucs EDDモデルが満足に動作しているなら、それは、Verilog−Aのコンパクトモデルに目視またはコンピュータによる合成により書き換えができます。そうしてできたVerilog-Aモデルとテスト回路を図1.6に示します。

図1.6. トンネルダイードのVerilog-Aコンパクトモデルとテスト回路

spice4qucsイニシアチブの主要な目的の1つは、Qicsのコンパクト素子モデリング機能を改善し、同時にモデリングとシミュレーションの一連の出来事の間の情報の流れを合理化することです。spice4qucsプロジェクト以前のすべてのQucsリリースにおいて、配布ソフトウェアにはいくつものモデリングツールが実装されましたが、ユーザがモデルを別のシミュレータやモデリングツールで使いたい場合には、それぞれのモデルフォーマットを別のフォーマットに手作業で書き換える必要がありました。1つの例外は、qucsconvという名前のSPICEネットリストをQucsのネットリスト形式に変換する初歩的なツールでした。例えば、Qucsのネットリスト形式でコーディングされたQucsのモデルを、SPICEシミュレータで直接シミュレーションすることもQucs EDDモデルからVerilog-Aコードを直接生成することもできませんでした。この状況は、spice4qucsプロジェクトが進展すれば大きく変わります:中長期的には、いくつかの合成./翻訳ルーチンがQucsに追加されて、モデルの変換はQucsユーザは意識しなくてもよくなります。最初に開発されるのは、Qucsのネットリストフォーマットと、ngspice/Xyceシミュレータのネットリストフォーマットの変換部分です。図1.7に示すのは、Qucsのトンネルダイオード用EDDモデル、DCスィープするパラメータのテスト回路、それからいくつかのngspiceのシミュレーション結果です。そのすぐ後には、spice4qucsにより自動的に生成されたngspice用のSPICE3スタイルのネットリストが続きます。このネットリストは、単なるSPICEの部品宣言のリストではなく、SPICEの.control .... and .... .endcの間には、埋め込まれたngnutmegスクリプトが含まれることに注意してください。この話題や先に紹介したすべてについては、この文書の後の欄にもっと書かれています。

図1.7. Qucs EDDトンネルダイオードモデルとngspiceのシミュレーション結果

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

* Qucs 0.0.19 * Qucs 0.0.19 TD.sch .SUBCKT TD _net0 _net1 VT=0.025 Is=1e-12 Ip=1e-5 Iv=1e-6 Vp=0.1 Vv=0.4 K=5 C=0.01p BD1I0 _net0 _net1 I=Is*(exp((V(_net0)-V(_net1))/VT)-1.0) GD1Q0 _net0 _net1 nD1Q0 _net1 1.0 LD1Q0 nD1Q0 _net1 1.0 BD1Q0 nD1Q0 _net1 I=-(C*(V(_net0)-V(_net1))) BD1I1 _net0 _net1 I=Iv*exp(K*((V(_net0)-V(_net1))-Vv)) BD1I2 _net0 _net1 I=Ip*((V(_net0)-V(_net1))/Vp)*exp((Vp-(V(_net0)-V(_net1)))/Vp) .ENDS XTD2 _net0 0 TD VT=0.025 Is=1E-12 Ip=1E-5 Iv=1E-6 Vp=0.1 Vv=0.4 K=5 C=0.01P VI_TD1 _net1 _net0 DC 0 AC 0 V1 _net1 0 DC 0.1 .control set filetype=ascii DC V1 -0.05 0.4 0.000997783 write _dc.txt VI_TD1#branch destroy all exit .endc .END