ラベル spice の投稿を表示しています。 すべての投稿を表示
ラベル spice の投稿を表示しています。 すべての投稿を表示

2025年11月21日金曜日

ngspice の収束で困っていたときに使うとよい .options

 ngspice の収束で困っていたときに見つけたのでメモ


過渡解析がおおよそうまく行く SPICE のオプションとその説明

.options gmin=1e-10 : ダイオードとトランジスタ内の各ダイオードに並列に  1e10 (=10GOhm) の大きな抵抗を追加.
.options abstol=1e-10 : 収束基準の許容誤差を 1e-12 から 1e-10 に増加.
.options reltol=0.003 : 収束基準の許容誤差を 0.0001 から 0.003 に増加.0.003 を超えることは絶対にしてはいけない.
.options cshunt=1e-15 : 各ノードからグランドへ追加される CSHUNT 容量として 1e-15 を追加.高周波振動や数値ノイズによって引き起こされる "Timestep too small" 問題を解決できる.デフォルトは  0 .

「代替ソルバーや cshunt のような機能を必要とする回路には注意が必要です.これは,回路のどこかに不具合がある,つまりモデルに現実離れした部分があることを意味します.」とのこと.

2020年11月10日火曜日

SPICEとSpectreの違い

SPICE は修正接点解析(Modified Nodal Analysis)つまり電圧保存則(KVL),Spectre は電荷保存則(KCL)で回路を解く.

正確には,ニュートン法での収束判定において,SPICE はタイムステップ前後の電圧差分と電流差分が一定値以下になれば収束と判定し,Spectre は電流差分ではなく電荷差分が一定以下であれば収束と判定する.電荷を判定に使う事で,Spectre は SPICE に比べ異常な点での収束を防ぐことができる利点がある.

Reference: Ken Kundert, "Simulation of Analog and Mixed-Signal Circuits", https://kenkundert.com/docs/bctm98-MSsim.pdf