以前ギブアップしていたopenEMSにもう一度チャレンジする。
KiCADでパタンを形成してそれをシミュレーションしてみる。
KiCADでHyperlynx形式で出力してhyp2matでmファイルに変換すればいいらしい。こちらが参考サイト。で、もうメンドクサイことは書かずに無言で画面キャプチャを貼り付けていく。
ほんで、Octaveのソースコードは参考サイトのtutorial_hyp2mat.mほぼそのまんま。hypファイル名を自分が作成したものに変更。TPのポート記述が違うので、TP?.TPはTP?.1に書き換える。AddLumpedElementはお好みの値に変更。で、たまにhypファイルにSTACKUPがexportされていなくてエラーが出ることがあるんだけど、その場合は、KiCADでDRCしてExportするか、自力でSTACKUPを記述する<--層構成だけの記述なので大したことない。
STACKUP記述はこんな感じ
{STACKUP
(SIGNAL T=0.00137795 P=0 C=1.724e-08 L="F.Cu" M=COPPER)
(DIELECTRIC T=0.0594488 C=4.5 L="DE_F.Cu" M="FR4")
(SIGNAL T=0.00137795 P=0 C=1.724e-08 L="B.Cu" M=COPPER)
}
それと、参考サイトから、GetEpsilon.mとGetUnits.mをもらってきてソースコードと同じフォルダに貼り付けておく。で、実行。
基板サイズと層構成がどのように解釈されたかが出力される。で、こんなんが出る。どれか座標軸の正負方向が反転してるらしい。まぁそうなるって知っておけばいいことなので、今回モデルを修正したりはしない。
で、これを閉じてしばらく待つ。うちのLinuxマシン(i5-7300U, 8GB)だと約3時間30分(<--こういうのやるにはやっぱり非力だよなー)。モデルをもうちょっと工夫した方がいいのかも。で、こんな感じで出力される。
で、>> s_param=[];
>> s_param(1,1,:) = port{1}.uf.ref./ port{1}.uf.inc;
>> s_param(1,2,:) = port{1}.uf.ref./ port{2}.uf.inc;
>> s_param(2,1,:) = port{2}.uf.ref./ port{1}.uf.inc;
>> s_param(2,2,:) = port{2}.uf.ref./ port{2}.uf.inc;
>> write_touchstone('s',f,s_param,'out.s2p');
>>
ってな感じでやると、Touchstoneに保存できる。
さいしょっからコードに書いておけば、良いんだけど、オリジナルをとりあえず実行するってことを優先したので、後から出力した次第でございます。まぁうまくいったぞ。
てか、脇道に逸れてやってしまったOpenEMSの環境構築。まぁ発散と収束を繰り返しながら進めるもんよ、、、言い訳;
0 件のコメント:
コメントを投稿