IBIS ファイルから、ドライバの出力抵抗と立ち上がり時間を読む
データシートの「出力抵抗 約10Ω」は代表値が1つだけです。IBIS ファイルには typ/min/max 3コーナー分の V-I テーブルがそのまま入っていて、原点近くの傾きを読むだけで、コーナーごとの Ro とダンピング抵抗の当たりが付けられます。
IBIS は「測定済みの実測データ」がそのまま入っている
IBIS(I/O Buffer Information Specification)は、SPICE モデルの代わりに、ドライバの出力段を V-I テーブルと立ち上がり時間のテーブルとしてテキストで渡す規格です。データシートの「出力抵抗 約10Ω」「立ち上がり時間 1ns」は代表値が1個だけですが、IBIS ファイルにはほぼ必ず typ/min/max の3コーナーぶんのテーブルが入っていて、プロセスばらつきの端まで数字で追えます。
このサイトの IBIS波形シミュレータ は、ファイルの [Pulldown]/[Pullup]/[Ramp] などをそのまま読み込み、パッケージや配線、終端まで含めた過渡解析をして送受端の波形を出します。本記事の数字は、そこに「デモモデルを試す」ボタンで読み込める demo_cmos33.ibs(3.3V CMOS の合成モデル。実在デバイスではありません)を使って、実際の値で計算しています。ファイルはテキストなので、エディタで開いて照らし合わせながら読むのがおすすめです。
この記事で扱うのは、IBIS ファイルの中でも実務で数字を拾うことが多い5つのキーワードです:[Component]、[Model]、[Pulldown]/[Pullup]、[GND_Clamp]/[POWER_Clamp]、[Ramp]。
ファイルの骨格:Component → Pin → Model
[Component] の下には [Package] と [Pin] がぶら下がります。[Package] は基板のランドからダイまでの寄生を typ/min/max の3組で持つ表で、demo_cmos33.ibs では R_pkg = 0.060Ω、L_pkg = 2.50nH、C_pkg = 0.35pF(typ)です。[Pin] は、ピン番号ごとに signal_name・model_name・そのピン固有の R_pin/L_pin/C_pin を並べた表で、「このピンはどの [Model] を使うか」の対応表になっています。
[Model] の中に、実際に読みたい V-I テーブル([Pulldown]/[Pullup]/[GND_Clamp]/[POWER_Clamp])と、立ち上がり時間の情報([Ramp]、モデルによっては [Rising Waveform]/[Falling Waveform])が入っています。Model_type が Output/I-O ならドライバの特性、Input なら Vinh/Vinl としきい値だけ、という違いも押さえておくと迷いません。
typ/min/max の意味と、Pullup の罠
typ/min/max は「抵抗の公差」ではなく、プロセス・電源電圧・温度をまとめた3つの動作コーナーです。min 列は電流が小さい、つまり弱く・遅いドライバ、max 列は電流が大きい、つまり強く・速いドライバを表します。この「弱い/強い」の対応は、同じファイル内の [Pulldown]・[Pullup]・[Ramp]・[GND_Clamp] すべてで揃っているのが IBIS の約束事です。ある表の min 列と別の表の min 列が違うコーナーを指す、ということは起きません。
読み違えやすいのが、電圧軸の基準です。[Pulldown] と [GND_Clamp] の電圧はピンの電圧そのもの(GND 基準)ですが、[Pullup] と [POWER_Clamp] の電圧は Vcc − V(pin) で書かれています。Vcc が違う電源電圧でも同じ形の表を使い回せるようにするための書式ですが、そのまま「V(pin) = 1.0V のとき I = −62mA」と読むと符号も値も外れます。実際にこのサイトの IBIS シミュレータでも、Pullup の電流は I(Vcc − V(pin)) という形で評価しています。
たとえば demo_cmos33.ibs の DEMO_OUT_33 の [Pullup] には、表の電圧 1.0V の行に I(typ) = −61.96mA とあります。Vcc = 3.3V なら、これは ピン電圧 2.3V のときに 61.96mA を吐き出しているという意味です。表の電圧をそのままピン電圧だと思うと、電流の大きさも符号も取り違えます。
Pulldown の V-I テーブルから Ro を読む
出力抵抗 Ro は、V-I テーブルの原点近くの接線の傾きから読みます。1点だけを選んで V ÷ I をやってはいけません。[Pulldown] のテーブルは、低い電圧では FET が線形領域(三極管領域)にいて抵抗のようにふるまいますが、電圧が上がるにつれて飽和して電流の伸びが鈍る、非線形な曲線だからです。
demo_cmos33.ibs の DEMO_OUT_33・[Pulldown]・typ 列で確認します。V = 0.1V で I = 9.09mA なので、Ro ≒ 0.1V ÷ 9.09mA ≒ 11.0Ω。これが小信号での Ro です。同じ表の V = 3.3V(フルスイング)では I = 123.1mA なので、V ÷ I をそのまま計算すると 26.8Ω になります。同じ typ コーナーの同じ表なのに、読む場所によって Ro が2.4倍違って見えるのは、Pulldown が非線形だからです。「Ro」と呼んでよいのは原点近くの接線の傾きだけで、大振幅での電圧降下を見積もるときはテーブルをそのまま補間して使う必要があります。
min/max 列でも同じように原点近くの傾きを取ると、Ro_min(弱い・遅いコーナー)≒ 13.7Ω、Ro_max(強い・速いコーナー)≒ 9.0Ωになります。同じ型番の同じピンでも、コーナーによって Ro が1.5倍変わるということです。
typ/min/max のコーナーと、そこから決まる立ち上がり時間
[Ramp] は dV/dt_r(立ち上がり)と dV/dt_f(立ち下がり)を「電圧の変化量 / その時間」の形で、typ/min/max ごとに持っています。IBIS のこの区間は振幅の20%〜80%で測ったものと決まっているので、dt の値をそのまま20-80%の立ち上がり時間 trとして使えます(0-100%のフルスイングの時間は、目安として tr ÷ 0.6 です)。測定条件として R_load(多くは 50Ω)も書かれており、これは実際の配線インピーダンスではなく測定用の基準負荷です。
demo_cmos33.ibs の DEMO_OUT_33・[Ramp] は dV/dt_r = 0.980/1.05E-9(typ)、0.720/1.85E-9(min)、1.180/0.72E-9(max)。dt をそのまま読むと、typ で 1.05ns、弱い・遅いコーナー(min 列)で 1.85ns、強い・速いコーナー(max 列)で 0.72ns です。Pulldown で Ro が小さかった(強い)コーナーが、Ramp でも edge が速い(max 列)コーナーになっていて、コーナーの対応が表をまたいで一貫しているのが確認できます。
| コーナー | Ro(原点接線) | t_r(20-80%、[Ramp]の dt) | 臨界配線長 |
|---|---|---|---|
| 弱い・遅い(min 列) | 13.7Ω | 1.85ns | 47mm |
| typ | 11.0Ω | 1.05ns | 27mm |
| 強い・速い(max 列) | 9.0Ω | 0.72ns | 18mm |
立ち上がり時間から臨界配線長へ
配線が伝送線路として扱われるかどうかの境目は、配線は何mmから「伝送線路」になるかで説明した臨界長 ℓ = tr ÷ (6 × tpd) で決まります。[Ramp] から得た tr をここに代入するだけで、その IBIS モデルに固有の臨界長が出ます。
上の表のとおり、同じピンでもコーナーによって臨界長が18mmから47mmまで2.6倍動きます。配線長を決めるときは、typ の 27mm ではなく、いちばん厳しい(速い)コーナーの 18mm を基準にしてください。18mm 以下に収まらない配線には、反射への対策(終端かダンピング抵抗)が要ります。
ダンピング抵抗 Rs = Z0 − Ro を決める
配線が臨界長を超えるなら、いちばん簡単な対策は送端の直列終端(ダンピング抵抗)です。Rs = Z0 − Ro になるように選び、Rs と Ro の合計を配線の特性インピーダンス Z0 に合わせます。Z0 = 50Ω、Ro_typ = 11.0Ω なら Rs = 39.0Ω。E96 系列に 39.2Ω があるので、そのまま実装できます。
問題は、Ro がコーナーで 9.0〜13.7Ω まで動くのに対して、実装できる Rs は1つの固定値だということです。typ 基準で Rs = 39Ω を選ぶと、強い・速いコーナー(Ro = 9.0Ω)では Rs + Ro = 48.0Ω < Z0 となり、送端が低抵抗側にずれます。受端(開放に近い入力)での反射で電圧が最終値を約2%超え、その反射がもう一度送端で反射して、小さなリンギングとして残ります。逆に弱い・遅いコーナー(Ro = 13.7Ω)では Rs + Ro = 52.7Ω > Z0 となり、最初の一段が最終値の約97%までしか届かず、階段状に2段目でようやく収束する、過減衰側の波形になります。
ノイズ耐性を優先するなら、いちばん Ro が小さいコーナー(強い・速い)でも Rs + Ro ≥ Z0 になるように Rs を決めるのが安全です。この例なら Rs = Z0 − Ro_max = 50 − 9.0 = 41Ω を選べば、全コーナーでオーバーシュートが出ません。代わりに弱い・遅いコーナーでの階段(過減衰)が少し深くなりますが、ringing よりは実害が小さいことがほとんどです。
Pullup 側の Ro と、非対称なドライバ
[Pullup] の側でも、Vcc に近い端(表の電圧が 0V 付近)で同じように接線を引けば Ro が読めます。demo_cmos33.ibs の DEMO_OUT_33・[Pullup]・typ では、表の V = 0.1V(ピン電圧では 3.2V)で I = −7.15mA なので、Pullup 側の Ro_typ ≒ 14.0Ω。Pulldown 側の 11.0Ω より少し大きく、H を出すときと L を出すときで Ro が違う非対称なドライバだと分かります。
H 出力と L 出力でダンピング抵抗の最適値が微妙に違う、という場合はここが原因です。厳密にやるなら Rs は Pulldown 側・Pullup 側それぞれの Ro で計算し、実害が大きい方(多くは反射が症状として見えやすい、速いエッジの側)に合わせます。
注意:Ro とタイミングだけでは決まらないもの
- C_comp:[Model] の C_comp(
demo_cmos33.ibsの DEMO_OUT_33 で typ 3.00pF)は、ダイの容量として Ro と並列に効く負荷です。配線のトレース容量やコネクタの容量と合算しないと、実際のエッジはテーブルの Ramp よりも鈍ります。 - パッケージの L_pkg:[Package] の L_pkg(typ 2.50nH)は、電流が速く変わるほど効きます。DEMO_OUT_33 の typ コーナーで、Pulldown 電流がフルスイング(0→123mA)まで 1.05ns で変化すると仮定すると、L_pkg による電圧降下は V = L × dI/dt ≒ 2.5nH × (0.123A ÷ 1.05ns) ≒ 0.29V。3.3V 振幅の約9%にあたり、単純な Ro だけのモデルでは説明できないオーバーシュートやリンギングの一因になります。
- [Ramp] の R_load:Ramp の dV/dt は、指定された R_load(多くは50Ω)を負荷にしたときの測定条件です。実際の配線の Z0 がこれと大きく違う(25Ωや100Ωなど)場合、立ち上がり時間はテーブルの値から多少ずれます。厳密に見たいなら、Pulldown/Pullup の V-I テーブルと C_comp、パッケージの RLC まで含めて過渡解析するしかなく、それがこのサイトの IBIS波形シミュレータ がやっていることです。
まとめ:実務でのチェックリスト
- Ro は Pulldown/Pullup の V-I テーブルの原点近くの接線の傾きから読む。1点の V ÷ I や、データシートの代表値をそのまま使わない。
- [Pullup] と [POWER_Clamp] の電圧軸は Vcc − V(pin) 基準。[Pulldown] と [GND_Clamp] はピン電圧そのもの。
- typ/min/max は、同じファイル内のすべての表で同じ強さ・速さのコーナーを指す。min 列と max 列、どちらが厳しいかは見る指標(信号品質か、タイミングマージンか)で変わる。
- [Ramp] の dt はそのまま 20-80% の立ち上がり時間として使い、臨界配線長 ℓ = tr ÷ (6 × tpd) に代入する。基準にするのはいちばん速いコーナー。
- ダンピング抵抗は Rs = Z0 − Ro で決め、いちばん Ro が小さいコーナーでも Rs + Ro ≥ Z0 になっているか確認してから固定値に決める。
- C_comp・パッケージの RLC・[Ramp] の R_load 条件まで含めて波形で確認したい場合は、IBIS波形シミュレータ に実ファイルを読み込んで見るのが早い。
よくある質問
IBIS の Ro は、データシートの「出力抵抗」の値と同じになりますか。
min と max、信号品質にとって厳しいのはどちらのコーナーですか。
[Ramp] が無く、[Rising Waveform]/[Falling Waveform] しか無いモデルはどう扱いますか。
配線の Z0 が [Ramp] の R_load(50Ω)と大きく違う場合、立ち上がり時間はどれくらいずれますか。
Ro のコーナー差が大きいドライバでは、ダンピング抵抗をどう選べばいいですか。
参考にした規格・資料
- IBIS Open Forum, I/O Buffer Information Specification (IBIS) — [Component]/[Model]/[Pulldown]/[Pullup]/[GND_Clamp]/[POWER_Clamp]/[Ramp] の書式、Pullup・POWER_Clamp の電圧軸が Vcc 基準であることを規定
- IBIS Open Forum, The IBIS Cookbook — Ro の読み方、typ/min/max コーナーの考え方、Ramp の使い方など実務向けの解説