秋月ファンクラブ掲示板 過去ログ

3つ以上のparameter sweep - ok-909

2014/07/13 (Sun) 21:33

LTSPICEで3つ以上のパラメータsweepを行うと、
only three dimension can be step
のエラーができます。この対処法はないでしょうか?
どうしても4つ以上のパラメータsweepを行いたいのですが。
(一度で)

Re: 3つ以上のparameter sweep - inara1

2014/07/14 (Mon) 06:30

.step param コマンドでパラメータ掃引を行うときの掃引パラメータ数は最大3つ
ですね。

素子の値をある範囲で変化させたときに、特性がどのような範囲で変化するかを見
たいという目的で.step param を使う場合は、パラメータをランダムに変化させる
モンテカルロシミュレーションを使うと、パラメータ数の制約を受けずに済みま
す。

添付図は6個のパラメータを1度に変化させた例です。トランジスタの電流増幅率と
温度を .step param で変化させ、それと同時に、C1とR1とR2とvcc(電源電圧)を
ある範囲でランダムに変化させたときの出力波形の重ね描きしたものです。添付図
の赤色の枠内がモンテカルロシミュレーションの設定になります。

最初の
.param r1=1Meg r2=10k vcc=5V c1=1u
は素子値の中心値を指定したものです。

次の
.param tol1=0.05 tol2=0.05 tol3=0.2 tol4=0.2
は素子値の振れ幅を指定したものです。tol1=0.05というのは±5%の振れ幅になり
ます。

抵抗R1のところに {mc(r1,tol1)} と書かれていますが、これは「中心値 r1、振れ
幅 tol1 の数値をランダムに出す」という意味になります。r1=1Meg、tol1=0.05な
ので、シミュレーションでは R1 は 950kΩ~1050kΩ の範囲でランダムに抵抗値
が変化することになります。

その次の
.step param x 0 20 1
は、x を 0 から 20 まで 1 ずつ増やしていくということですが、この x はダ
ミー変数で、シミュレーションを21回繰り返すという意味になります。1回のシ
ミュレーションごとに、C1とR1とR2とvccが、ある範囲でランダムに変化するの
で、結果的に多くのパラメータを変えていることになります。

.step paramで電流増幅率と温度を4種類ずつ掃引しているので、このパラメータで
の組み合わせ数は4×4=16になります。そのシミュレーションを、素子値を変えな
がら21回繰り返すので、合計の組み合わせは16*21=336になります(合計336回のシ
ミュレーションを行う)。

モンテカルロシミュレーションでは、繰り返し回数が少ないと、振れ幅の端に近い
値のパラメータが出てこないことがあるので、繰り返し回数をできるだけ大きくし
たほうがいいですが、シミュレーションにかかる時間もそれに比例して増えます。
添付図の例では結果が出るまで1分くらいかかっています。