LTspiceでIBISモデルを扱う(RampとWaveform)
IBISモデルとは部品の入出力特性だけモデル化してSPICEの過渡解析だけを行うようなシミュレーションモデルです。そのため、一般的にはIBISデータとSPICEデータは互換性がありません。
しかし、IBISモデルはSPICEモデルに比べてシミュレーション時間が短縮できるため基板設計などに於いては有効な解析ツールになっています。
因みに「IBIS」とはInput/Output Buffer Information Specificationの頭文字から作った単語です。
IBIS to SPICEにデータ変換ソフト
色々調べてみると、IBISモデルから簡易的にSPICEモデルに変換するツールが以下のところにありました(IBISモデルにはバージョンが何種類もありますが、Ver3.2に対応していれば問題ないと思います)。
①IBIS2SPICEと言う無料のソフトですがダウンロードするにはメールアドレスと電話番号などが必要になります。
②SPISim_IBISはオンライン上で変換してくれるソフトですが、JAVA環境をインストールしないと動作しません。
変換したデータを使ってシンボルを作ったり意外と面倒臭いので取りあえず試すにはIBISデータから直接、SPICEモデルを簡易的に作ってみることにしました。
IBISモデルはあまり詳しくはないのですが、以下のような構成になっているようです。
詳細なパラメータの定義などは以下のページに日本語で説明があります。
IBISデータからSPICEデータで使えそうなパラメータは
[Pullup][Pulldown][Ramp][Rising Waveform][Falling Waveform]
但し、Waveformデータは必須でないようですが、データとして添付されていれば変換しやすいです。
最初に[Waveform]データを測定するときの等価回路をイメージしてみると以下のようになります。
注)パッケージパラメータのR_pkg、L_pkg、C_pkgやC_compは測定上は含んでいるので等価回路では無視します。
R_fixture、V_fixture、WaveformデータはIBISデータとして入手できるので平均的なR_sgを計算で求められます。例えば、東芝の74hc00のibisファイルでは以下のようにWaveformデータが書かれています。ここでは赤枠のTypeデータを利用します。
[Waveform]
Waveformデータは測定環境、つまり電源電圧毎に測定データがあり、ここでは3.3V と5.0Vで測定されています。また、V_fixtureは電源に接続した場合と、GNDに接続した場合があり、接続方法によって、Rsgの値がどうなるか計算してみましょう。
等価回路からわかるように接続方法(V_fixtureの値)によりデータが異なります。ここでは3.3V系で計算してみます。抵抗が直列接続されているため、RsgとR_fixtureの抵抗比がそのまま、電圧比になるので
GNDに接続された場合は
(3.3 - 1.0176) / Rsg = 1.0176 / 50 → Rsg = 112Ω
電源に接続された場合は
2.1188 / Rsg = (3.3 - 2.1188) / 50 → Rsg = 90Ω
平均値としてRsg = 100Ωとして考えてもいいし、今回は前者のデータを使うのでRsg = 112Ωをそのまま利用しても、Rsgが大きな値ではないのでどちらでも問題ないと思います。
実際のWaveformデータは3.3V系では以下の4種類あります。
IBISファイルはテキストデータなので上記の部分以外はテキストエディタなどで削除します。その後にエクセルなどでcsvファイルとして読込み、赤枠部分だけにします。
次に、A1の下にA2、B1の下にB2とデータを繋げます。但し、A2、B2の時間データはエクセルのセルをA1、B1部分からドローすることにより自動で書き換えます。上手く書きまわっていると最後の時間は「8.05E-8」に今回のデータではなります。
今の手順をグラフ化してみると以下のようになります。
シミュレーションとして一番簡単な波形はRsg=112ΩとしてA1+A2のpulse波を過渡解析で使う方法です。実際に使う場合は電圧を3.3Vに拡大する必要があります。
しかし、よく見ると立上りと立下りの波形がかなり異なっています。そこでもう少し改善してみましょう。
合成したpulse波をそれぞれA波とB波とすると(A+B)/2と平均値を取ると点線のような波形になります。この場合、Rsgもそれぞれの平均値として(112+90)/2=101Ωとします。
図のように0~3.3Vに拡大してエクセルなどで信号源データを作ります。作り方は平均値データVave(n)の最小値をVmin、最大値をVmaxとすると
Vsg(n) = (Vave(n) - Vmin) * 3.3 / Vmax
[Ramp]
Waveformデータは使いやすいのですが、実際に使うときにはPWLファイルとしてLTspiceに取り込む必要があり、意外と面倒臭い感じがします。もう少し簡単に扱えるパラメータとしては「Ramp」パラメータがあります。
これは立上りと立下り、それぞれの電圧の20%~80%の電圧差と時間を測定する方法です。dV/dt_r、dV/dt_f、 R_loadのパラメータで表現されています。この値は立上りと立下りの平均的な傾きを表すことに相当します。今回のIBISモデルだと
データ区間は60%(=80-20)なので残りは40%になり、単純に直線だと仮定すると全区間としては1+40/60 → 1.6666
dV/dt_r 0.6106/3.275e-9 → 1.01766/5.456e-9
dV/dt_f 0.7087/4.052e-9 → 1.18116/6.753e-9
測定時の抵抗値と全区間の電圧(太字の値)が出てくるのでWaveformと同様に出力抵抗が計算できます。
dV/dt_r 0.6106/3.275e-9 → 1.01766/5.456e-9 → 112Ω
dV/dt_f 0.7087/4.052e-9 → 1.18116/6.753e-9 → 90Ω
Rampの場合は出力抵抗としては平均値を取って100Ωとします。Rampデータを使った場合はLTspice電圧源で立上り時間を5.456e-9、立下り時間を6.753e-9に設定したpulse電源を過渡解析で使うことができます。
これだとPWLファイルを読み込まないで良いので扱いが楽だと思います。
RampとWaveformの関係
Rampの測定法はWaveformと似ています。Waveformの測定時にR_fixtureしかない場合は測定環境は同じになります。
例えば、「dV/dt_r」を測定するときはイメージとしてWaveformの立上り波形の20~80%間の電圧/時間を測定すれば良いことになります。立下りも同様に測定します。
Waveform を使ってRampとほぼ同等な波形を作るには「dV/dt_f」用の波形の最小値で引算してそのデータの最大値が「dV/dt_r」用波形の最大値と同じなるように倍率を調整すれば前に説明した「Waveformの改善」に近い波形ができます。この場合はRsg=101Ωとして使います。
波形の比較(Waveform,Ramp)
今まで、説明してきた波形を実際にLTspiceで過渡解析してみると以下のようになります。
①waveform_v0
V_fixture=0の立上り、立下りのWaveformデータを使った場合はVsgのPWL設定の記述は、データファイル名をv0.txt(v0.csv形式でもOK)として
Vsg→PWL value_scale_factor=3.2429 repeat for 10 file=v0.txt endrepeat
Rsg=112Ω
意味としては、データの最大値が1.0176なので、倍率が3.3/1.0176=3.2429になり、ファイルデータを10回繰り返すpulse波形を設定
②waveform_v0v33_ave
Waveformの改良型の場合は、電圧レベルはエクセル上で計算してファイル化したので「value_scale_factor」は不要、ファイル名をv0v33_ave.txtとして
Vsg→PWL repeat for 10 file=v0v33_ave.txt endrepeat
Rsg=101Ω
③waveform_ramp
Rampの測定条件で作った合成波形も電圧レベルはエクセル上で計算してファイル化したので「value_scale_factor」は不要、ファイル名をramp.txtとして
Vsg→PWL repeat for 10 file=ramp.txt endrepeat
Rsg=101Ω
④Ramp波形
傾きだけは正確に設定し時間軸はWaveformデータに合わせ込んで波形を生成してあります。
Vsg→PULSE(0 3.3 10n 5.456n 6.753n 80.5n 10)
Rsg=101Ω
Rampデータから作ったpluse波形④とRampと同じ条件のwavefor波形③は傾きなどはほぼ同じになります。
良く使われる①の波形は簡単ですが、立下りが少し違ってきます。②が一番理想的な波形になっていると思いますが、データを作るのに少し手間がかかります。
素子の飽和特性が含まれていませんが、取扱いが一番簡単なのはやはりRampデータを基に過渡解析をすることにだと思います。
Ramp波形の改善
PULSE設定だと、どうしても角が不連続になってしまうのでRCを使ってスムーズな曲線を作ります。RCを使うとインピーダンスが変化してしまうため、ビヘービア電源を使って出力抵抗を別に設定します。
この波形はWaveformデータから作成した電源とほぼ同じなります。メリットは読込ファイルをエクセル等で編集する必要もなく、簡単にPULSE電源として波形を作ることができます。
PULSE電源の構成なのでデータ長なども簡単に変更できるのが嬉しい。設定の仕方は先ずRCで波形を滑らかになるように編集し、その後、必要ならばPULSE設定のdelayで時間合わせをして波形を作ります。
この方法ならRampデータでWaveformデータと同等な動作を得ることができそうです。
以上の方法でIBISデータからspiceデータにデータ変換することにより簡易的になりますがLTspiceの過渡解析で配線等のシミュレーションが可能になると思います。
最後まで読んでいただいて有難うございます。 コメントは今後の参考に、フォローやサポートは今後の励みになります。