sパラメータファイルから等価回路をspiceとリンクできる形式(netlist)で抽出し,そのnetlistをspiceに渡して他の回路の一部に組み込んで回路解析する過程を説明します.netlistの抽出に伴う問題点,よく使われるspiceの特徴, sonnetが備える複数のnetlist抽出機能の特徴と操作の例,そしてLT-SPICEにnetlistを読み込む操作の例を紹介します.
netlist抽出に必要な最低限の前提知識
Sパラメータからnetlistあるいは等価回路を抽出するにあたって, 最低限知っておくべきことをまとめます.
netlistモデルはSパラメータの周波数範囲外では信頼できない.
Sパラメータは有限で離散的な周波数で測定なり解析されたデータです.netlistモデルは等価回路モデルで,直流から無限に高い周波数まで連続的に振る舞います. 例えば2MHzから2GHzまで50点のSパラメータに完璧に一致するnetlistを抽出したとしても,そのnetlistの2MHz未満と2GHz以上の周波数領域での振る舞いはもとのSパラメータとは関係ありません.
低い周波数で
Sパラメータを扱う測定器やシミュレータの多くは直流を扱うことができませんし, Sパラメータには直流や低い周波数領域のデータが含まれていません. ところがSPICEシミュレータはどんな場合にも(自動的に内部で) 直流解析を行うので, 異常な結果を出したり解析に失敗したりする可能性があります. これに対処するためにSパラメータファイルに直接DC(とみなしうる非常に低い周波数)の値を(手で)書き加える必要があるかもしれません. Sonnet Professinalでは解析周波数としてDCを指定することができます.
高い周波数で
EMC,EMI問題では高い周波数領域の再現が期待されることがあります. そのためにSパラメータファイルは必要な高い周波数領域のデータを含んでいなければなりません. そのSパラメータは,最終的にEMC,EMI問題を再現したいシステムと同じ境界条件や伝搬モードで評価されたSパラメータでなければなりません.しかし,そのような条件を設定することはほぼ不可能です.
Causality(因果律)に従わないSパラメータが多い
例えば 測定から得られたSパラメータでは 絶対値の小さいデータに対して 無視できない誤差が含まれており, netlist抽出の過程で必要な\(\frac{\partial \mathrm{S_{11}}}{\partial \mathrm{freq}}\)の計算に非常に大きな誤差を生じます.
損失の小さな系の測定結果や無損失でのシミュレーションでは, しばしば\(\mathrm{\sqrt{{S_{11}}^2+{S_{22}}^2}}\)が1より大きいデータが含まれます. そこから抽出されたnetlistは負性抵抗を含む可能性があり, しばしばSPICEを混乱させます.
このようなデータは高周波回路シミュレータや測定器では全く問題になりませんが,netlistを抽出してSPICE解析を行った時初めて問題が起こります.
netlistは物理モデルに基づいた等価回路ではない
ある一つのSパラメータファイルと等価なnetlistをだた一つに決めることは原理的にできません.例えば右の2つの回路は完全に等価な特性を持つ異なる回路です.多数の素子を含む系では完全に同じ特性の多くの回路が存在します.
物理的な材料や構造との対応を説明したり,回路の動作を理解しやすくするために使われる 等価回路は ほとんど無数の等価回路の中から,理解しやすいたった一つを選んだに過ぎません.
Sonnetのbbextractでは, 抽出アルゴリズムが複雑で大規模な等価回路を SPICEで可読なnetlistに表現して出力します. それはSPICEに読ませることが目的であって,人に理解させたり説明するための等価回路とは全く違います.恐らくどの細かい部分を見ても人間には理解できないでしょう.
物理モデルに基づいた等価回路抽出はどうやる?
物理的な材料や構造との対応を説明したり,回路の動作を理解しやすくするための 等価回路が必要な場合は,等価回路の形(トポロジ)を指定し, 抽出アルゴリズムをその都度開発しなければなりません. 需要の多い分野では専用の抽出アルゴリズムを使ったシステムが製品化されています. もし,キャパシタやインダクタの自己共振周波数やアンテナの等価回路が望みなら,単純な並列または直列共振回路で再現でき,その抽出に専用のソフトウェアは必要ありません.
Sonnetのbbextractには スパイラルインダクタやトランスの等価回路抽出に適した Inductor Model Fileが含まれています.
Sonnet Liteには, 波長よりずっと小さなコネクタやviaの等価回路に適したPI-Modelと 波長よりずっと小さな断面で,波長と同程度か長い多条線路のRLGC等価回路を抽出するN-Coupled Line Modelが用意されています.
spiceの選択
LTSPICE
lt-spiceはこれを書いている2023年の時点で最も多く使われているSPICEと思われます. 無料で使用でき,日本語のマニュアルや資料も豊富です.
PSPICE
有料ですが,日本代理店から技術サポートを受けることができます. Sonnetのbbextractが正式にサポートしています.
H-SPICE
大規模な回路開発で多く使われているますが,高価です. sonnetのbbextractが正式にサポートしています.
UCBK SPICE
UCBK(University of California Berkeley) SPICE(the Simulation Program with Integrated Circuit Emphasis).これがオリジナルのSPICEです. ソースファイルもドキュメントも無料です. 現在ではこのUCBK SPICEを直接使用することはあまりないでしょう. しかし他の多くのSPICEはこのUCBK SPICEとの互換性を保っているので, UCBKのドキュメントやアルゴリズムを理解することは有益です.
netlist抽出の例
電磁界解析のポート
図は差動線路の電磁界解析モデルの一例です. このモデルのような線路の短い部分や,コネクタ,via等は波長よりずっと小さいので Sonnet Liteに含まれる PI-Model で良い結果を得られる場合が多いです.
差動モードと同相モードとmixedモードのポート番号
結合線路では端子に付与するポート番号を変更することで 差動,同相あるいはそれらのmixedモードを解析することができます.
左は差動モード,中央は同相モード,右はmixedモードの抽出に適したポート番号の配置です.
N-Coupled Line Modelを抽出する場合のモード番号
N-Coupled Line Model を抽出する場合は,図の様にグランド端子を除く全ての端子に別のポート番号を,図の順序で付与しなければなりません.負(マイナス)のポート番号を使ってはいけません.
抽出モデルのトポロジ
Sonnetでnetlistを抽出する時emgraphの[Output]メニューには右図のようにサブメニューがあります. 下表にこれらの意味をまとめました.
サブメニュー | トポロジ | 長所 | 短所 |
---|---|---|---|
S,Y,Z Parameter File… | トポロジはありません.S,Y,Zパラメータの周波数特性が表形式で記録されます. いわゆるTouchstoneファイルです. | Sonnetのすべてのグレードで使用できます.他社のほとんどの高周波用シミュレータや測定器と相互に利用できます.S,Y,Zパラメータの相互変換や,周波数分解能の粗いSパラメータファイルを補間して微細な周波数分解能のSパラメータファイルを作ることができます. | 限られたSPICEでしか使用できません.SPICEでの解析負荷は重くなることがあります. |
PI-Model File… | π型の回路トポロジです. | 概ね1/20波長以下の大きさの構造をモデル化できます.Sonnetのすべてのグレードで使用できます.ほとんどのSPICEで使用できます. | 波長に対して無視できない大きさの構造や,複数の共振を含む場合は大きな誤差が生じる可能性があります.適用できる周波数範囲が狭いため周波数範囲ごとに微妙に異なるモデルが出力されます.ユーザー自身で適切なモデルを選択しなければなりません. |
N-Coupled Line Model File… | H-SPICEかspectre向けモデルです. 互いに結合した複数の伝送線路をRLGC等価回路の行列で表現します. | Sonnetのすべてのグレードで使用できます.波長に比べて無視できない長さから,非常に長い線路まで使用できます.高速デジタル信号の時間領域での解析に適したモデルをコンパクトに表現できます. | 限られたSPICEでしか使用できません.抽出元になるモデルの構造やポート番号の付与順に制約があります.伝送線路のモデルだけに使用できます.伝送線路と見なす事ができない構造では大きな誤差が生じるか,抽出そのものができません. |
Broadband Model File… | 多量の線形回路素子が 複雑に接続された大規模な回路トポロジです. | DCから非TEMモードが発生する周波数領域まで非常に広帯域に使用できます.ほとんどのSPICEで使用できます. | 製品版のbbextractのライセンスが必要です.波長に対して無視できない大きさの構造では抽出した回路規模が巨大になる場合や,抽出に長い時間がかかる可能性があります.特に単純な系ではSパラメータデータのない周波数領域でPI Modelよりも誤差が大きくなる場合があります.特に損失の少ないモデルでは変換条件を細かく指定する必要があります. |
Inductor Model File… | スパイラルインダクタやトランスの一般的な等価回路です. | 高周波半導体中で使われるスパイラルインダクタの特性を 高精度且つコンパクトに表現できます.ほとんどのSPICEで使用できます. | 製品版のbbextractのライセンスが必要です. 製品版のbbextractのライセンスが必要です.指定された構造のインダクタにしか使用できません. 指定外の構造では大きな誤差が生じるか,抽出そのものができません. |
PI-Modelの抽出
emgraphに読み込んでグラフをプロットしてください.測定器の出力や部品メーカーから入手したSパラメータファイルもemgraphにグラフをプロットすることさえできればnetlistを抽出することができます.
[Output]-[PI-Model File…]を選んでください.
Data Typeはほとんどの場合[De-Embedded]がよいでしょう. 小型アンテナでは[not De-Embedded]のほうが良いかもしれません.
[Include Adaptive Data]のチェックは外しておいてください. 左の図で黒く反転した部分に
* Analysis frequencies: 20.0, 112.468265 MHz .subckt SON4f6e_0 1 2 3 4 REF
“SON4f6e_0というsubcktは20~112MHzのSパラメータから抽出された” と書いてあります
.PI-Modelによるnetlist抽出では 周波数ごとに異なるsubcktが抽出されるのです.[Include Adaptive Data]のチェックが入っていると非常に多くのsubcktが抽出されて選択に困るでしょう.
図は解析結果の一例です. グラフでは6つの周波数にマーカーが置かれています. sonnetではこのマーカーのある周波数が厳密に電磁界解析を行った周波数で,それ以外はABSというSonnet社独自の補間を行ったデータです. 低い周波数と二番目に低い周波数のマーカーが上記の
* Analysis frequencies: 20.0, 112.468265 MHz
と一致しています. 他のマーカー同士の間でもそれぞれに異なるsubcktが抽出されますが, グラフから分かるようにこのグラフは10GHz以下では直線的に変化しており, どの周波数領域から抽出したsubcktでもほぼおなじになるはずです.PI Modelが適している典型的な例です.
[Model Options]をクリックすると別のダイアログが開きます.
このダイアログはnetlist抽出にあたってSonnetが無視する値の設定です. 例えば1000Ωより大きな抵抗, 0.01pFより小さなキャパシタ, 100nHより大きなインダクタは単に絶縁されているとみなします. これらのデフォルトの設定はマイクロ波周波数領域で一般的な設定です. 目的に応じて適切な値に変更する必要があります. 例えば13.56MHzのRFIDでは[Lmax]をより大きな値にしなければ,RFIDのインダクタが無視されてしまいます.
このダイアログを[Close]で閉じ,一つ前のダイアログで[Save]を選んで, netlistファイルを保存してください. netlistファイルは単なるASCIIファイルです.メモ帳などのエディタプログラムで開いて内容を確認してみてください.
netlistの読み方を少しだけ解説しておきます.上の例で,* で始まる行はコメント行です.. で始まる行はspiceのモデルや動作を宣言します.ここでは .subckt で 回路のモジュール?とでも言う subcircuitを定義するよと書いてあります.その下に続く行はsubcircuitの具体的な配線図?です.C_C1 1 REF 0.014..pF
は C1はキャパシタで,基準点と1番の端子に繋がっていて,0.014pFだという意味です.基準点は必ずしもグランドではありません.あくまで基準点です.この記法はすべてのSPICEに共通なので知っていて損はないです.
bbextractモデルの抽出
emgraphで目的のsパラメータファイルを開き,正常か確認します.図の例ではtestfile.s2p
を開いて,4つのsパラメータを全て表示し,周波数軸を対数目盛にしてあります.sパラメータファイルにはしばしば間違いや不正な値が含まれています.目的のデバイスの特徴を把握しやすい目盛と項目を表示して次のような問題を解決してください.例えば
- 特定の周波数だけで飛び抜けた値
- passive素子でありながらLoss Factorが正
- ランダム雑音
- 非常に小さな値50未満のデータ数
[Output]-[Broadband Model File…]を選びます.
ダイアログが開きます.
[Error Threshold]を無闇に小さくしないでください.与えられたデータだけ一致し,データが存在しない領域で極端な反応をする恐れがありますし,規模の大きいモデルを生成しようとし,処理時間が長くなります.
[Stability Factor]はStabilityの問題が起こったときのみ、この値を大きくしてください.強い共振を持った構造では小さめ, 逆に不安定な構造では大きなStability factorを設定してください.Stability factorのデフォルト値は1e-3で、一般的な値は 1e-5から0.5までの間です.bbextractは極の絶対値に対して実部をStability factor以下にしません.[Advanced…]ボタンでより詳細な設定ができます.必要に応じてこれらを設定して [Extract…]ボタンを押します.
Advancedダイアログです.
Predicted S-parametersとは,抽出後のモデルから逆にSパラメータを予測する設定です.デフォルトでは与えられたSパラメータの最大周波数の3倍の周波数まで抽出したモデルに基づいた予測を行い,結果を…predict.snpというファイルに書き込みます.Sパラメータには通常[DC point]のデータは含まれませんが,モデルに基づいた予測は可能です.
Limit Modeling Bandは抽出に使用する周波数範囲です.もちろんデフォルトでは与えられたSパラメータの範囲を使用します.
Total Orderはモデルが使用する最大の次数です.この値を大きくすると複雑で大規模な等価回路を使います.
変換結果のサマリです.
変換時間は、周波数ポイント数とポート数の二乗に比例します. 2ポートでは一瞬で終わりますが,ポート数が多い場合は非常に長い時間がかかる場合があります.
警告やエラーが表示されたら,英文を理解して対処してください. 右の例では”0.38GHz以下の5つの周波数で系がpassiveでないのでthreshold値を上げたほうがいい”というエラーが出ていますが,そもそもこの例で使ったsパラメータは利得を持ったアンプなのでこのエラーは当然です.[Plot]ボタンを押すと、今作ったSpiceモデルに基づいて逆にSパラメータを計算し、変換元のSパラメータファイルと一緒にグラフを描くことができます.
変換結果のグラフです変換元のsパラメータ、今作ったSpiceモデルから逆に計算したSパラメータは一致しています.変換元のsパラメータには2GHzまでのデータしか含まれていないので,2GHz以上の周波数領域の予測値は現実の物理的なデバイスと一致しません.変換元のsパラメータにはDCデータが含まれていないので,このSpiceモデルを使ってSpice解析した場合のDCでの振る舞いは現実の物理的なデバイスと一致しません.
ここでの例で生成されたファイルは
- testfile.s2p,変換元のSパラメータファイル
- testfile.libSpice,モデルファイル
- testfile_predict.snpSpice モデルから逆変換したSパラメータファイル.
LTSPICE XVIの解析例
ここでは, netlistファイルをLT-SPICEに読み込み時間軸解析する様子を紹介します.
シンボルを定義する
[File]-[New Symbol]を選んで新しいシンボルの定義を始めます.
.
[Draw]-[Rect]を選んで適当な長方形を描きます
[Edit]-[Add Pin/Port]を選んで,端子を設定します.
Labelは回路図に表示されるピン番号
Netlist Orderは対応するSUBCKTの端子の順序
Pin Label Justificationは回路図上のピンの表示位置です.
必要な数の端子を定義します. この例では 4port Sパラメータに対応するシンボルなので 4つの端子を定義し,
5番目の端子はcommonという意味で”c”というlabelを付けました.
[Edit]-[Attributes]-[Edit Attributes]を選んで, シンボルの属性を定義します.
Symbol Typeは “Block”
Prefixは必ず X にしてください
Descriptionはなんでもいいです.ここでは “s4p”としました.
[File]-[Save As]で名前をつけて保存します.
保存場所は,この後作る回路を定義したファイルと同じ場所でなければなりません. 何処に保存したかを自分でしっかり把握しておいてください.
名前は,何でもいいです.ここでは “s4p”としました.これでシンボルの定義は終わりです.[File]-[Close]で ファイルを閉じてしまいましょう.
シンボルを読み込む
[File]-[New Schematic]で新しい回路の定義を始めます.
重要→ここでまず, [File]-[Save As]で名前をつけて保存してください.
ここではdiff.asc
としました.保存場所は,この上で定義したシンボルと同じ場所でなければなりません.
[Edit]-[Component]を選び,先ほど定義したシンボルを追加します.
右上端の▼をクリックすると,デフォルトのシンボル群の他に 上で保存した場所もブラウズできますから, そこから先ほど定義したシンボルを選択します.
netlistの読み込み
重要→Sonnetで抽出したnetlistファイルhoge.lib
は上で定義した回路と同じ場所に保存しておいてください.
[Edit]-[SPICE Directive]を選びます.
How to netlist this textは[SPICE directive]にチェックし,
その下の枠には “.inc”と入力して
[OK]ボタンで閉じてください.
回路図の適当な場所に”.inc”という文字が現れるので,左クリックで配置してください.
この上で右クリックすると,再びダイアログが現れます.
今度はHow to netlist this textとして [SPICE .inc directive]にチェックし
[Browse]ボタンをクリックしてください.
Sonnetで抽出したnetlistファイルhoge.lib
を選択してください.図の例では4p_pi.lib
を選んでいます.
そして[Open]ボタンで,netlistファイルを開きます.
重要→スクロールして “.SUBCKT” という文字列で始まる行を探してください. その行の二番目の単語がこのnetlistが定義する特性の名前です. これは後で必要になります.bbextractで抽出した場合は.SUBCKTは一つだけです.
PI Modelで抽出した場合は 多くの”.SUBCKT”があります.対応する周波数領域に注意して設定してください. 右図では例として632MHzから3.5GHzの4p_pi_2
を拡大表示しています.ファイルを閉じ,ダイアログを[OK]で閉じてください. これで,回路にnetlist ファイルを読み込ませる設定ができました.必要なら複数の”.inc”を置いて,複数のnetlistを読み込ませることもできます.
シンボルとnetlistを関連付ける
回路ブロックのシンボルを右クリックしてください
[Value]に上記の netlistが定義する特性の名前を指定してください. 右図の例では`4p_pi_2`です.
回路を入力し解析する
あとは,通常のSPICEの回路入力です. 任意の回路を設定して解析できます.右の例では周期1nSecの差動パルスを与えています.
spiceの時間領域の解析結果を周波数領域に変換すると,非常に高い周波数の高調波も表示できますが, どの周波数領域まで正しいかは次のことを考慮して判断してください.
* 抽出元のSパラメータファイルに含まれる周波数範囲
* bbextractで抽出した場合は抽出元のSパラメータと同じ周波数範囲まで正しい
* PI Modelで抽出した場合は選択したSUBCKTの周波数範囲だけで正しい.
まとめ
- sonnet Lite
- PI Modelのnetlistを抽出してspiceとリンクする事ができます.
- PI Modelでは適切な周波数でのモデルを選択しないと間違った結果になります.
- sonnet professionalのbbextractオプションなら
- 与えたSパラメータファイルの全ての周波数領域で矛盾しないnetlistを抽出できます.
- spiceの直流解析や,時間軸解析に必要なDC特性を含めることができます.