前回はマクロモデルの中で非線形な従属電源の特性をPOLY(多項式)で表現してみました。これができればどんな特性でも思うがままなどとほくそ笑んだのですが、前回の方法では新たな特性のデバイスを定義する度にモデルファイルを書き換えねばなりません。メンドイです。今回は「パラメータ化」してみたいと思います。
※「SPICEの小瓶」投稿順インデックスはこちら
マクロモデルの特性をパラメタライズ?
パラメタライズなどと書くと高級な感じがしますが、前回使用したライブラリのモデルにおいて、特性を決めているPOLY(多項式定義)の係数部分を、具体的な数字からシンボルに置き換えるだけです。
上記で黄色のマーカ引いた部分です。シンボル部分は{ } カーリーブラケットってやつで囲ってます。
それを使って描いた回路が以下に。前回の回路と見た目はほとんど同じ。マクロモデルのシンボル名がTSTPOLY1PとPが増えただけ。
でもシンボルのアトリビュートエディタを開けば、以下のように SpiceLineとある行にC1=0.5,…などと設定すべき数字を書き込んでます。これでライブラリファイルの中には具体数値がなく、「現物」の回路の方に具体数値がおかれた状態になりました。
なお当然ながら、シンボルファイル内で参照しているライブラリファイルのパスやモデル名等も「パラメタライズ版」に変更しておかねばなりません。
シミュレーション結果が以下に。ちゃんと2次関数になっているみたいっす。
パラメータ化した値をさらに.stepしてみる
上記のようにライブラリファイルの中身をシンボル化してしまうとそのシンボルに割り当てる値を .step でいろいろ変えてみることもできます。回路上に .step コマンドを記述。
そして、マクロモデルのアトリビュートでは、上記で定義したABCというパラメータを参照するように C1={ABC}と記述。C1のところは具体的な数字になるまで2段階の参照を経由することになります。
シミュレーション結果が以下に。上記では、.stepしている一番右の値1.5が切れて見えてないですが、3つの値すべてについてシミュレーションを行ってグラフを描いてくれています。
これでPOLYによる記述、バッチリ? ホントか?