IBIS-AMIモデルとは?
IBISモデルとIBIS-AMIモデルは何が違うのでしょうか?
IBIS-AMIモデルはIBISモデルと全く異なる概念で動作します。また、主に10Gbps以上のSerDes(高速シリアル伝送)では、高周波他帯の伝送路損失をIC側で補うしくみとして、イコライザを採用しているケースがあります。このシミュレーションを実行する場合、従来のIBISモデルでは複雑なイコライザを表現する事は不可能ですが、IBIS-AMIモデルでは複雑なイコライザのモデル化や、SerDesに特化した高速シミュレーションを実行する事が可能です。また、コンパイルされた機密性の高いモデル形式を提供する事も可能です。IBIS-AMIモデルを用いた解析を実行する場合、必ずしもIBIS-AMIモデルやシミュレータ内部の詳細について熟知する必要はありませんが、内部動作を知る事により、適切な解析や考察が可能になります。ここでは、従来と全く異なるモデルであるIBIS-AMIモデルについて説明します。
SerDesシステムとIBIS-AMIモデル
最初にSerDesシステムに着目しましょう。SerDesシステムは、アナログ部とアルゴリズミック部の2つの部に分けて表現されます。アナログ部は、伝送線路とビアで構成される基板の配線、Sパラメータでモデル化されたコネクタ等、様々なパッシブ要素で構成されるインターコネクト、パッケージと、チャネルに直接接続する為のフロントエンドとして機能するアナログバッファで構成されます。アナログバッファはIBISモデルでモデル化されます。
アルゴリズミック部としては、フロントエンド前のトランスミッタ部分とその後のレシーバ部分にはイコライザがあります。それらは従来のIBISモデルでの対応は難しく、IBIS Version 5.0からSerDes用にイコライザ、CDR(Clock Data Recovery)を表現するAMIが入り、DFE(Decision Feedback Equalizer)、FFE(Feed Forward Equalizer)、CTLE(Continuous Time Line Equalizer)、CDRをIBIS-AMIモデルで表現する事が可能となりました。IBIS-AMIモデルでは畳み込み積分、統計解析の手法でアイパターンを計算している為、SerDesのチャネルを効率よく高速に解析する事が可能です。SPICEモデルを使用した場合と比較して、1,000倍以上の速さでアイパターンを計算する事が可能です。またアイパターンの評価に必要なBER(Bit Error RateまたはBit Error Ratio)やジッタ分布を評価する事が可能です。
IBIS-AMIは従来のIBISシミュレーションとは全く異なる概念で動作します。
AMIを使用するIBISモデルでは、.ami拡張子のAMIのパラメーターファイルと、.dll(Windowsの動的ライブラリ)または.so(Linuxの動的ライブラリ)を参照します。シミュレーションを実行すると、EDAツールとICベンダーから提供されたこれらの動的ライブラリが協調して動作します。EDAツールとIBIS-AMIの動的ライブラリがうまく協調して動作するよう、IBIS 仕様書で多く規定がされており、昨今開発中のSerDes仕様に合わせて、拡張されています。
IBISファイルによる紐づけ、プログラムに渡すフラグ・パラメータの定義
IBIS-AMIの解析には、少なくとも下記3つのファイルが必要になります。これらの3つのファイルを同じフォルダ内において使用します。
1 | IBISファイル | .ibis |
|
2 | AMIの動作プログラム本体 | Dynamic Link Library (*.dll) もしくは Shared Object (*.so) |
|
3 | AMIパラメータ定義ファイル | .ami |
|
ここからは具体的なモデル記述例をご紹介します。
下記はAMIモデルにおけるIBISファイル例です。パッケージモデルはRLC形式で指定することはできますが、広帯域で精度のよいパッケージモデルが提供される場合、回路でもしくはInterconnectモデルとしてS-parameterを接続する場合もあります。
AMI特有の記述としては、[Algorithmic Model]があります。[Algorithmic Model]では、OS, コンパイラ, アーキテクチャ情報、AMIの動作プログラム本体である実行ファイルとAMIパラメータ定義ファイルが記載されており、解析実行時はこの情報を元に、各ファイルが協調し動作します。
下記はAMIモデルの記載例です。Reserved_Parametersは予約パラメータです。基本的には触りませんが、これらのモデルの記載を確認することにより、提供されたAMIモデルがどういう想定で動作するのか、そのシナリオを読み解くことは可能です。シナリオについてはこの後、用意されたシナリオとフラグと動作ケースで詳しくご説明します。Model_Specificは、ICベンダーが公開している提供するAMIモデルに応じたパラメータです。EDAツールによってはこれらの設定がシミュレーションのコンポーネントの設定値として読み込まれるので、テキスト情報を直接編集する必要がないケースもあります。
IBIS-AMI利用者は、AMIパラメータ定義ファイル内で公開されているパラメータモデルと変数タイプ、範囲の情報として確認することができます。AMIモデルはOSに合わせて.dllファイルと.soファイルはどちらかの形式で提供されていますが、32ビットまたは64ビットのOSに依存することに注意してください。
用意された2つのシナリオ
一般的なSerDesのシステムでは、線形動作時不変のLTI(Linear Time Invariant)、非線形動作時変のNLTV(Non Linear Tune Variant)どちらで表現されます。
- LTI(Linear Time Invariant)
- 線形動作
- 入力がX倍されると出力もX倍される、クリップしない
- 時不変
- 入力が遅延すれば、出力もそれに伴い変化せずに遅延する
- LTIで表現できる例
- チャネル
- FFE(Feed Forward Equalizer)
- De-Emphasis(2Taps FFE)
- 線形動作
- NLTV(Non Linear Tune Variant)
- 非線形動作
- 入力X倍で出力がX倍にならない=クリップする
- 時変
- 入力の遅延により、出力波形が変化する
- NVTVで表現できる例
- CDR(Clock Data Recovery)
- DFE(Decision Feedback Equalizer)
- 非線形動作
AMIのSerDesのシステムモデルがチャネル、FFE(Feed Forward Equalizer)、De-Emphasis(2Taps FFE)、CTLEで構成される場合、出力の関係が線形時不変になりますので、下記のようにインパルス応答の重ね合わせで表現することができます。
インパルス応答と畳み込み
LTIではインパルス応答による計算を行うことで、ランダムビット列のバスタブカーブやアイパターンを高速に計算できるという点でメリットがあります。
しかしながら、システムモデルがCDR(Clock Data Recovery)、DFE(Decision Feedback Equalizer)の場合は、非線形で時変のシステムとなりますので、インパルス応答の重ね合わせで表現できません。以上より、AMIでは想定されるシステムに応じて、統計モード、タイムドメインモードという2つのシナリオが想定されています。
- 統計モード
- インパルス応答の重ね合わせによる統計解析
- システムをすべてLTIとして解析
- 無限長、ランダムビット列による低BERのバスタブカーブ算出
- タイムドメインモード(Bit-By-Bit)
- 時間軸解析
- システムをNLTVとして解析
- 目的:有限長、指定ビット列による全システムの動作検証
フラグと動作ケース
さてここからは、AMIモデルの予約パラメータにあったInit_Returns_Impulse, GetWave_Existsについて紐解いていきます。
まず上記AMI_Txモデルで想定されるシナリオを確認してみましょう。
Init_Returns_Impulseは、AMI_Init()関数の返り値です。この関数は、LTIモデル、NLTVモデルに関わらず必ず実装されている関数です。Init_Returns_ImpulseフラグがTrueである場合、インパルス応答によるLTIモデルであることを示し、Falseの場合は、LTIとしてモデル化できないことを示しています。LTI(線形、時不変)の仮定に基づいてBERを合成する場合、この関数で計算が行われ、GetWave関数の実装は必要ありません。
GetWave_Existsは、AMI_GetWave ()関数の返り値です。この関数の実装はオプションです。GetWave関数では、NLTVモデルにおいて、入力ビットシーケンスを計算して対応する応答に変換するメカニズムを実装します。GetWave_ExistsフラグがTrueの場合はNLTVモデルであることを示しており、Falseの場合はLTIモデルであることを示しています。
この2つの関数のフラグの値をまとめると下記のようになります。
上記のTxモデルにおいては、LTIで表現されるシステムであることが分かります。
AMIモデルは、異なるICベンダーから提供されるAMIモデルを協調させて動作します。続いて、Tx、Rxモデル共にInit_Returns_ImpulseフラグはTrue、つまりTx、Rx共にLTIとしてモデル化できる場合のみ期待通り動作します。
GetWave_Existsフラグは、TxはLTIモデル、RxがNLTVモデルの場合が頻出ケースになりますが、Tx, Rxモデルの値によらず動作は保証されます。
具体的な動作
IBIS の AMI の章では、システムシミュレーション(チャネル解析)のために、統計的シミュレーション(統計モード)、時間領域シミュレーション(タイムドメインモード)の2つのシナリオのシミュレーションのリファレンスフローが定義されています。EDAツールには、このリファレンスフローに従って生成される波形と一致した波形を出力する動作が期待されます。
システムシミュレーションでは、通常、トランスミッタ(Tx)モデルとレシーバ(Rx)モデルの間にパッシブチャネルを配置します。
以下では、2つのシナリオのそれぞれにおけるEDAツールのリファレンスフローを説明します。これによって、EDAツールでどのような結果を出力するのかを理解することができます。
統計的シミュレーションのリファレンスフロー
EDAツールは、統計的シミュレーションのシミュレーションを次のステップで進めます。
- アナログチャネルの複合インパルス応答を計算します。
- 複合インパルス応答:
Txのアナログ出力, チャネル, Rxのアナログフロントエンド の各インパルス応答の畳み込み
注意: Tx, Rx でのフィルタリング効果(例:イコライゼーション)は含まれません。これらは Tx, Rx の実行可能モデルファイルの動作で表現されます。
- 複合インパルス応答:
- ステップ 1. で得たインパルス応答を渡してTxの実行可能モデルファイルのAMI_Init関数を実行し、インパルス応答を得ます。
- AMI_Init関数の主な入出力:
【入力】ステップ 1. のインパルス応答、AMIパラメータ定義ファイル(.amiファイル)をもとにEDAツールが決めたパラメータ
【出力】 Txとアナログチャネルの合成インパルス応答
- AMI_Init関数の主な入出力:
- ステップ 2. で得たインパルス応答を渡してRxの実行可能モデルファイルのAMI_Init関数を実行し、インパルス応答を得ます。
- AMI_Init関数の主な入出力:
【入力】 ステップ 2. のインパルス応答、AMIパラメータ定義ファイル(.amiファイル)をもとにEDAツールが決めたパラメータ
【出力】 Tx-チャネル-Rx の合成インパルス応答
- AMI_Init関数の主な入出力:
- ステップ 3. で得たインパルス応答を用いて、残りのシミュレーション/解析(例えば、統計的処理等)を実施して結果を得ます。これにより、結果にはチャネルと結合されたTx, Rx の「アルゴリズムモデル」の動作が完全に表現されます。
- TxとRxのAMI_Close関数を実行して最終的な処理を行います。
時間領域シミュレーションのリファレンスフロー
EDAツールは、時間領域シミュレーションのシミュレーションを次のステップで進めます。
- アナログチャネルの複合インパルス応答を計算します。
- 複合インパルス応答
Txのアナログ出力, チャネル, Rxのアナログフロントエンド の各インパルス応答の畳み込み
注意: Tx, Rx でのフィルタリング効果(例:イコライゼーション)は含まれません。
これらは Tx, Rx の実行可能モデルファイルの動作で表現されます。
- 複合インパルス応答
- ステップ 1. のインパルス応答を渡してTxの実行可能モデルファイルのAMI_Init関数を実行し、インパルス応答を得ます。
- AMI_Init関数の主な入出力:
【入力】前述 1. のインパルス応答、AMIパラメータ定義ファイル(.amiファイル)をもとにEDAツールが決めたパラメータ
【出力】 Txとアナログチャネルの合成インパルス応答
(モデルによっては入力のインパルス応答から何も変化しない場合があります)
- AMI_Init関数の主な入出力:
- ステップ 2. で得たインパルス応答を渡してRxの実行可能モデルファイルのAMI_Init関数を実行し、インパルス応答を得ます。得られるインパルス応答は何も変化しない場合があります。
- AMI_Init関数の主な入出力:
【入力】前述 2. インパルス応答、AMIパラメータ定義ファイル(.amiファイル)をもとにEDAツールが決めたパラメータ
【出力】 Txとアナログチャネルの合成インパルス応答
(モデルによっては入力のインパルス応答から何も変化しない場合があります) - 備考:
例えば、RxのAMI_Init関数に最適化アルゴリズムが含まれている場合、最適化が正しく機能するためには、RxのAMI_Init関数が返すインパルス応答にTxのイコライゼーションの効果が含まれていなければなりません。TxのAMI モデルにTxのAMI_Init関数と同等またはそれ以上のイコライゼーションを実行するAMI_GetWave関数が含まれている場合、Txの実行可能モデルファイル内でイコライゼーション効果が「ダブルカウント」される可能性があります。このようなモデルを正しく使用するために、EDA ツールによって異なる動作をする場合があります。
動作例:- TxのAMI モデルのAMI_GetWave機能を利用しない(GetWave_Exists が False であるかのように扱う)
- Rx フィルタのインパルス応答を取得するために(ステップ3. の出力から入力の)逆畳み込みを使用する。
- 注意:
RxのAMI_Init関数に渡されるインパルス応答が常にTxフィルタの効果を含むことが保証されていないため、RxのAMI_Init関数はすべての状況下で正確な最適化ができない場合があります。 このため、RxのAMI_Init関数のパラメータが常に有効な値にデフォルト設定されるようにするか、ユーザー定義の係数を受け入れてシミュレーションを確実に成功させるために自動最適化ルーチンをオフにできるようなメカニズムを備えることが、Rxの実行可能モデルの作成者に求められています。
- AMI_Init関数の主な入出力:
- Txに入力するためのデジタル波形を生成します。
- レベルHigh:0.5
- レベルLow:-0.5
- -0.5から0.5までの中間値を持つ場合もあり(0交差で状態遷移する前提で)
- [TxのGetWave_ExistsがTrueの場合]
ステップ 4. の波形を渡してTx の実行可能モデルファイルの AMI_GetWave 関数を実行し、ステップ 6. に渡す波形を得ます。 - TxとRxのGetWave_Existsの値によって、それぞれ以下の動作をします。
- (a) [Tx: True, Rx: True の場合]
ステップ 5. の出力とステップ 1. の出力を畳み込み、その結果をステップ 7. に渡します。 - (b) [Tx: False, Rx: True の場合]
ステップ 4. の出力とステップ 2. の出力を畳み込み、その結果をステップ 7. に渡します。 - (c) [Tx: False, Rx: False の場合]
ステップ 4.の出力とステップ 3. の出力を畳み込み、その結果をステップ 8. に渡します。 - (d) [Tx: True, Rx: Falseの場合]
ステップ 5.の出力、ステップ 1. の出力とRxフィルタのインパルス応答を畳み込み、その結果をステップ 8. に渡します(Rxフィルタのインパルス応答は、前述3.の出力から入力を逆畳み込みして得られます)。
注意: TxのAMI_Init関数がイコライゼーション効果を含まない(チャネルのインパルス応答を変更しない場合)シナリオでは、(d) はステップ 5. の出力をステップ 3. の出力で単純に畳み込むのと同等です。
- (a) [Tx: True, Rx: True の場合]
- [RxのGetWave_ExistsがFalseの場合]
ステップ6. の出力を渡してRxの実行可能モデルファイルのAMI_GetWave関数に実行し、その結果をステップ 8. に渡します。 - ステップ 6.(c)/6.(d)/7. の出力がRxの判定点でのシミュレーション波形出力となります。
ステップ 7. がクロックティックを返す場合は、シミュレーションの後処理に利用したりユーザにそのまま提示したりします。 - ステップ 4. ~ 8. を繰り返してアナログ波形全体を処理します。
備考: アナログ波形全体を複数の区間に分けて繰り返し処理することで、長時間のシミュレーションで必要なメモリを削減するとともに、AMI_GetWave関数から数ビットごとのモデルの状態を得られるようになります。 - TxとRxのAMI_Closeを呼び出して最終的な処理を行い、割り当てられたメモリを解放します。
従属モデルパラメータ
Tx, Rx のモデルによっては、AMIファイル(*.ami) に「従属モデルパラメータ (Dependent Model Parameters)」が含まれている場合があります。従属モデルパラメータは IBIS Ver 6.1 で初めて規定されたものです。
EDAツールは、そのようなモデルを使用したシミュレーションをする際、AMI_Init関数などにパラメータを渡す前に、AMI_Resolve関数を使用してそのモデルの従属パラメータの値を取得する必要があります。この機構は、モデルベンダーがモデル間の複雑な依存関係をモデルに実装できるようにするために用意されています。
以下では、これがどのような機構で動作するのかを示します。
- ユーザは、モデルを選択して条件(データレート等)を指定します。
- EDA ツールは、各モデルの実行可能モデルファイルにAMI_Resolve関数が含まれているか確認します。含まれていなければ、上述のリファレンスフローに示すような統計的シミュレーションや時間領域シミュレーションを実施します。
- EDA ツールは、Usage タイプ In の全パラメータの名前と値のペア、データレート等の他のパラメータの値をAMI_Resolve関数へ渡します。
- 実行可能モデルファイルは、ステップ 3. の値を受け取って従属パラメータ(Usage タイプ が Dep であるパラメータ)の値を計算し、EDAツールへその値を返します。
- EDAツールは、ステップ 4. の値によってシミュレーションで使用するパラメータを設定・調整します。
- EDAツールは、ステップ 5. の値と他のパラメータを用いて、上述のリファレンスフローに示すような統計的シミュレーションや時間領域シミュレーションを実施します。
注意: AMI_Init関数とAMI_GetWave関数が返す Usage タイプ InOut のパラメータの値は、シミュレーションで使用される従属パラメータの値には影響しません。
IBIS-AMIモデルに関する最新動向
最新の動向として、2019年3月に策定されたIBIS Version 7.0におけるIBIS-AMIモデル関連のアップデート内容をご紹介します。
IBIS Version 7.0 IBIS-AMIモデル関連のアップデート内容
IBIS Version 7.0では、次のようなIBIS-AMIモデル関連のアップデートがありました。
- バックチャネルへの対応
- Tx Rx 間のリンクトレーニングを IBIS-AMI でも再現可能に。
- Touchstone使用のAMIアナログバッファモデル
- トランスミッタ、レシーバのアナログバッファの特性を4ポートのSパラメータ等で表現が可能に。
- Special_Param_Namesパラメータ
- IBIS規格を超えたEDAツールの動作に使うModel_Specificパラメータが明示される事に。
- レシーバノイズに関する拡張
- ガウシアンノイズに加えて一様ノイズにも対応
- 仕様の一部不明確点の明確化 (説明割愛)
以降の節では、上記の 1. から 4. についてもう少し詳しく説明し、関連するAMI予約パラメータの一覧も示します。
バックチャネルへの対応
一般に、高速シリアル伝送では、Tx, Rx がリンクトレーニングにより LSI 内部を調整した状態で伝送が行われます。
従来のIBIS-AMIでは、Rx 単独でアダプテーション等を含めたモデル化を行うことは可能でしたが、リンクトレーニングをシミュレーションしてTx/Rx モデル間のデータ交換をサポートする手段がありませんでした。
IBIS Ver 7.0では、Back Channel Interface Protocol としてリンク確立前の Tx/Rx モデル間通信をサポートするため、モデル間通信の手段・インタフェースを規定しています。ここで、モデル間通信のプロトコルの詳細やモデル内部の挙動については規定されておらず、Tx, Rx モデル作成者に委ねられています。
EDAツールは、Tx, Rxモデルの AMI_Init(), AMI_GetWave() 関数とのパラメータ授受によりシミュレーションを制御します。
バックチャネル関係のAMI予約パラメータ
Touchstone 使用の AMI アナログバッファモデル
従来のIBIS-AMI(IBIS Ver 5.1)では、アナログ出力/入力網の周波数依存性が十分表現できないため、シンボル間干渉(ISI)を考慮したり、信号品質を判断することができませんでした。その後、IBIS Ver 6.0 で、アナログ出力/入力網をIBIS-ISSで表現できるようになりましたが、AMIでの使用や取り扱いが複雑という問題がありました。
IBIS Ver 7.0 では、AMIファイル(.ami)において、Tx/Rxバッファのアナログ特性をTouchstoneファイルによって表現することができるようになりました。アナログ出力/入力網をAMIファイルと4ポートのTouchstoneファイルを用いて、IBIS-ISSと比べてシンプルに表現が可能になっています。
AMIファイルでは、AMIパラメータでTouchstoneファイル名・励振入力電圧・入出力抵抗を与えます。このTouchstoneファイルのポート数は4、ポート番号は上図の順序・配置で固定です。
当情報はAMIファイルで指定されているため、非AMI(従来IBIS)でのシミュレーションでは参照されませんので注意が必要です。IBISファイル(.ibs) の [External Model] キーワードでIBIS-ISS等で同等のモデルが記載されている場合があります。
Touchstoneアナログバッファモデル関係のAMI予約パラメータ
Special_Param_Names パラメータ
AMIモデルがEDAツールへIBIS規格外の特別な動作を要求する場合に、そこで使用されるモデル固有のパラメータ名が明示されるようになりました。
モデル固有パラメータ関係のAMI予約パラメータ
レシーバノイズに関する拡張
従来のIBIS-AMIでは、Rxの観測ラッチ入力における電圧に(統計解析的に)加えるレシーバノイズの要因として、ガウシアンノイズ(非有界のガウス過程ノイズ)のみ記述可能でした。
IBIS Ver 7.0 では、このレシーバノイズ要因として一様ノイズ(有界の一様分布ノイズ)も記述可能になりました。
なお、レシーバノイズは、Tx, Rxのジッタ等に関する他パラメータとは異なり電圧方向のノイズ量を規定するものです。
レシーバノイズ関係のAMI予約パラメータ