fpga asic エミュレーション用にレイテンシ をゼロに抑えた多 … ·...

17
XAPP1217 (v1.0) 2015 3 17 japan .xilinx.com 1 本資料は表記のバージ ョ ンの英語版を翻訳し たもので、内容に相違が生じ る場合には原文を優先し ます。 資料によっては英語版の更新に対応していないものがあります。 日本 語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。 概要 このアプリケーション ノ ー ト では、 FPGA エミュレーション プラ ッ ト フォームにおいて複数の信号を 1 つの I/O または I/O 差動ペアで別の FPGA に転送する方法について説明し ます。 この多重化方式はデータ を最大 800Mb/s でシ リ アル化し、 こ れよ り低レートで動作するユーザー ロジックに対するレイテンシの増加を 0 サイクルに抑えます。 はじめに FPGA の一般的な用途と して、複雑な ASIC のエミュレーション システムがあります。 ASIC FPGA に比べてロジック数 が多いため、エ ミ ュ レーシ ョ ンの際には ASIC のロジックを複数の FPGA に分割する必要があ り ます。 ASIC を複数の FPGA に分割す る と 、 FPGA 間通信が発生し ます。 この信号数は、 場合によ っては数百または数千におよぶこ と も あ り ます。 最 大規模の FPGA でも、 これだけの数の信号を別の FPGA に転送 し よ う と す る と 汎用 I/O の数が不足する こ と が考え られま す。 このため、 通常はパラレル信号をシ リ アル化して 1 つの I/O で別の FPGA に転送するという方法がとられます。 この 方法を、 このアプ リ ケーシ ョ ン ノ ー ト では 「多重化 I/O」 と呼びます。 1 に、 シ リ アル化の概念図を示し ます。 アプリケーション ノート : ザイリンクス FPGA XAPP1217 (v1.0) 2015 3 17 ASIC エミュレーション用にレイテンシ をゼロに抑えた多重化 I/O 著者 : Luis Bielich X-Ref Target - Figure 1 1: 多重化 I/O の概念ブロック図

Upload: others

Post on 22-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 1

本資料は表記のバージ ョ ンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用としてご使用の上、 最新情報につきましては、 必ず最新英語版をご参照く ださい。

概要このアプリ ケーシ ョ ン ノートでは、FPGA エミ ュレーシ ョ ン プラ ッ ト フォームにおいて複数の信号を 1 つの I/O または I/O差動ペアで別の FPGA に転送する方法について説明します。 この多重化方式はデータを最大 800Mb/s でシ リ アル化し、 これよ り低レートで動作するユーザー ロジッ クに対するレイテンシの増加を 0 サイクルに抑えます。

はじめにFPGA の一般的な用途と して、複雑な ASIC のエミ ュレーシ ョ ン システムがあ り ます。ASIC は FPGA に比べてロジッ ク数が多いため、エ ミ ュレーシ ョ ンの際には ASIC のロジッ クを複数の FPGA に分割する必要があ り ます。ASIC を複数の FPGAに分割する と、 FPGA 間通信が発生します。 この信号数は、 場合によっては数百または数千におよぶこ と もあ り ます。 最大規模の FPGA でも、 これだけの数の信号を別の FPGA に転送しよ う とする と汎用 I/O の数が不足するこ とが考えられます。 このため、 通常はパラレル信号をシ リ アル化して 1 つの I/O で別の FPGA に転送する という方法がと られます。 この方法を、 このアプリ ケーシ ョ ン ノートでは 「多重化 I/O」 と呼びます。 図 1 に、 シ リ アル化の概念図を示します。

アプリケーシ ョ ン ノート : ザイリンクス FPGA

XAPP1217 (v1.0) 2015 年 3 月 17 日

ASIC エミ ュレーシ ョ ン用にレイテンシをゼロに抑えた多重化 I/O著者 : Luis Bielich

X-Ref Target - Figure 1

図 1 : 多重化 I/O の概念ブロック図

Page 2: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ハードウェアの説明

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 2

複数の信号を 1 つの I/O で転送する手段と してシ リ アル化を利用するのは当然ですが、 このアプリ ケーシ ョ ン ノートではこれらすべての信号を 1 パラレル ク ロ ッ ク サイ クル未満 (すなわちゼロ レイテンシ) で転送する方法について説明します。 すべての信号を 1 ク ロ ッ ク サイ クル未満で転送できれば、 タイ ミ ングのボ トルネッ クが発生しないため ASIC ロジックの変更が不要という利点があ り ます。しかし 1 ク ロ ッ ク サイクルですべてのビッ ト を転送しよ う とする と、実際の MUX比よ り も実効 MUX 比を小さ くする必要があ り ます。 たとえばシ リ アル ビッ ト時間がパラレル周波数の 32 倍の場合、 実効 MUX 比は 32 未満とする必要があ り ます。これは、図 2 に示すよ うにデザインで実際に利用できるのは次のパラレル クロ ッ ク エッジまでに受信したビッ トに限られるためです。パラレル ク ロ ッ クの後に到着するビッ トは破棄されます。これらのビッ ト をこ こでは 「ク リ ップ ビッ ト 」 と呼びます。 図 2 では、 ビッ ト A[20:0] が有効ビッ ト でビッ ト A[31:21] がクリ ップ ビッ トです。 このため、 すべての I/O または I/O 差動ペアにおいて実効 MUX 比は 21 とな り ます。

図 2 に示したよ うに、 デジタル レイテンシ、 ト レース遅延、 パッケージ遅延、 IDELAY 遅延の分だけ有効ビッ ト数が減少します。 これら遅延の合計が大き くなるほど有効ビッ トが減少し、 ク リ ップ ビッ トが増加します。 したがって、 これらの遅延はなるべく最小にする必要があ り ます。 両方の FPGA のパラレル ク ロ ッ ク間のスキューも有効ビッ ト数に影響します。 可能な限り、 パラレル ク ロ ッ ク ド メ インのスキューを抑えてください。

ハードウェアの説明このアプリ ケーシ ョ ン ノートには 2 つのデザインが付属します。 これらはそれぞれ Vivado® Design Suite 用のカスタム IPと してパッケージ化されています。

• 出力 MUX ト ランス ミ ッ ター

• 入力 DEMUX レシーバー

ト ランスミ ッ ター

ト ランス ミ ッ ターはパラレル ク ロ ッ クの立ち上がりエッジをポーリ ングします。立ち上がりエッジを検出する と、 ト ランス ミ ッ ターは ODDR プリ ミ ティブのシ リアル レートでユーザー データの送信を開始します。図 2 の 「Valid Bits (有効ビット )」 はユーザー データを表します。 ト ランス ミ ッ ターは最初に有効ビッ ト を送信し、次にク リ ップ ビッ ト を送信します。ク リ ップ ビッ トは 0 と して送信されます。 送信される有効ビッ トの数は実効 MUX 比、 すなわち DATA_WIDTH パラ メーターで指定し ます。 1 パラ レル ク ロ ッ クで送信される ビ ッ ト の総数は FULL_WIDTH パラ メ ーターで指定し ます。FULL_WIDTH から DATA_WIDTH を引いたものがク リ ップ ビッ ト数です (図 3 参照)。

X-Ref Target - Figure 2

図 2 : 多重化 I/O の概念波形図

Page 3: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ハードウェアの説明

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 3

レシーバー

レシーバー側では、 データが IDELAY プリ ミ ティブを通過してから IDDR プリ ミ ティブで取り込まれます。 IDDR を通過後、有効ビッ トはデジシ リ アライズされてパラレル ド メ インへ送られます。ク リ ップ ビッ トは破棄され、ユーザー ロジックからは見えません。有効ビッ ト と ク リ ップ ビッ ト を正し く区別するため、 リセッ ト終了時にキャ リブレーシ ョ ン ステージが必要です。 図 4 にレシーバー デザインのブロッ ク図を示します。

キャリブレーシ ョ ン

キャ リブレーシ ョ ン エンジンの目的は、 次の 2 つの機能を実行するこ とにあ り ます。

• 有効なアイの中央をキャプチャできるよ うに IDELAY タ ップを中央に揃える

• 有効ビッ トが位置する適切なサイクルを検出する

レシーバーは、パワー サイ クル時またはリセッ ト終了時に毎回キャ リブレーシ ョ ンを実行する必要があ り ます。 キャ リブレーシ ョ ンを実行するのはレシーバーですが、 ト ランス ミ ッ ターもレシーバーにト レーニング パターンを送信するためにキャ リブレーシ ョ ン モードに移行する必要があ り ます。 ト ランス ミ ッ ターのリセッ トが終了する と、 stop_training 入力をデ ィ アサー ト し て ト ラ ン ス ミ ッ ターを ト レーニング モード に移行し ます。 する と、 real_data 入力からではな くtraining_pattern 入力からの ト レーニング データが送信されます。

注記 : training_pattern は固定値に接続するこ とを推奨しますが、 動的ト レーニング パターンに対応できるよ うにするため入力のまま と しています。

X-Ref Target - Figure 3

図 3 : ト ランスミ ッ ター MUX のブロック図

X-Ref Target - Figure 4

図 4 : レシーバー DEMUX のブロック図

Page 4: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

デザインの分割

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4

レシーバーは、 リセッ トが終了する とキャ リブレーシ ョ ン モードに移行します。レシーバーがト レーニング パターンを検出する と、キャ リブレーシ ョ ン モードが終了します。 レシーバーのキャ リブレーシ ョ ンでは、キャプチャ アイの中央を検出するために IDELAY タ ップをスイープします。データ有効ウ ィンド ウの中央を検出してデータ と ト レーニング パターンが一致したらキャプチャ アイの中央に IDELAY タ ップが配置され、 calib_comp 信号がアサート されます。 ト ランス ミ ッターは、 レシーバーからの calib_comp 信号を受信する とキャ リブレーシ ョ ンを終了します。 複数の I/O で多重化 I/O を利用する場合、すべてのレシーバーがキャ リブレーシ ョ ンを完了するまですべての ト ランス ミ ッ ターを ト レーニング モードのままにしておく こ とができます。 図 5 に、 ト ランス ミ ッ ターとレシーバーの制御およびステータス信号のシーケンスを示します。

デザインの分割ASIC ロジッ クをどこで複数の FPGA に分割するかを決定する必要があ り ます。 タ イ ミ ング ク ロージャを達成するには、分割後の境界のロジッ ク階層が低くなるよ うにするこ とを推奨します。 図 6 では、 「User Logic (ユーザー ロジッ ク )」 と示したブロ ッ クがこれに該当します。 ユーザー ロジッ クのコードは ASIC に存在するこ とになるため、 論理的に等価なまま維持されます。 境界のロジッ ク階層を低く した方がよいのは、 ユーザー ロジッ ク とシ リ アラ イザーまたはデシ リ アラ イザーとの間の境界はパラレル ク ロ ッ ク周期よ り タイ ミ ングが厳しいためです。

X-Ref Target - Figure 5

図 5 : 制御およびステータス信号のシーケンス

Page 5: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ハードウェア要件と考慮事項

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 5

ハードウェア要件と考慮事項このセクシ ョ ンでは、 このアプリ ケーシ ョ ン ノート を使用する際のハードウェア要件と考慮事項について説明します。

• パラレル ク ロ ッ クはシステム同期と し、 同じ周波数にする

• シ リ アル ク ロ ッ クはシステム同期と し、 同じ周波数にする

• シ リ アル ク ロ ッ ク とパラレル ク ロ ッ クを相互に同期させる

• I/O データ有効キャプチャ ウ ィンド ウは 6 IDELAY タ ップとする

• 暫定的な有効ビッ ト を計算する

• タイ ミ ング制約に関する注意事項

パラレル クロックはシステム同期とし、 同じ周波数にする

パラレル ク ロ ッ クは、 シ リ アル化するバス信号が属するク ロ ッ ク ド メ インです。 このク ロ ッ クは、 両方の FPGA に同じオシレーターから供給する必要があ り ます。 このデザインは、 異なるクロ ッ ク ド メ インによる PPM の違いには対応していません。つま り、両方の FPGA をシステム同期とする必要があ り ます。周波数も両方の FPGA で揃える必要があ り ます。

シリアル クロックはシステム同期とし、 同じ周波数にする

両方の FPGA のシ リ アル ク ロ ッ クの関係についても、 パラレル ク ロ ッ クの関係と同様の要件があ り ます。 PPM の違いが生じないよ うに、両方の FPGA に同じオシレーターからシ リ アル ク ロ ッ クを供給し、周波数も同じにする必要があ り ます。

シリアル クロックとパラレル クロックを相互に同期させる

シ リ アル ク ロ ッ ク とパラレル ク ロ ッ クは互いに同期している必要があ り ます。両方のクロ ッ クを同じ MMCM で生成してください。 こ うする とシ リ アル ク ロ ッ ク とパラレル ク ロ ッ ク間の不確実性が減少し、 タイ ミ ング ク ロージャが容易になり ます。

X-Ref Target - Figure 6

図 6 : ユーザー データ幅が x16 のシステムの例

Page 6: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ハードウェア要件と考慮事項

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 6

I/O データ有効キャプチャ ウィンドウは 6 IDELAY タ ップとする

シグナル インテグ リ テ ィ を確認するには IBIS シ ミ ュレーシ ョ ンが必要です。 少なく と も 6 IDELAY タ ップのデータ有効ウ ィンド ウが必要です。 IDELAY のタ ップごとの遅延は、使用するデバイスのデータシートで確認して ください。7 シ リーズ デバイスの場合、 IDELAY のタップごとの遅延は IDELAY コン ト ローラーへの基準クロ ッ クが 200MHz の場合で 78ps、300MHz の場合で 52ps です。 78ps のタ ップを使用する場合、 78ps x 6 = 468ps のデータ有効ウ ィンド ウが必要です。 キャ リブレーシ ョ ン ロジッ クによるキャ リブレーシ ョ ンはスタート アップ時に 1 回しか実行されません。 このため、制御された環境での動作を推奨します。 データ有効ウ ィンド ウの中には、 BUFG のデューティ サイクル歪みと して 200ps を必ず含めて ください。 シ リ アル ク ロ ッ クは高速なため、 I/O に対するスタテ ィ ッ ク タ イ ミ ングは必要あ り ません。 キャ リブレーシ ョ ン ロジッ クによってアイの中央が検出されます。

暫定的な有効ビッ ト を計算する

実際にハード ウェアで実行する前に、 暫定的な有効ビッ ト (PVB : Potential Valid Bits) を計算しておく必要があ り ます。 これによ り、あるシ リ アル送信レートで 1 パラレル ク ロ ッ ク サイクルあたりに送信可能なビッ ト数がわかり ます。この計算の詳細は、 「実効 MUX 比を求める手順」 で説明します。

タイ ミング制約に関する注意事項

ト ランスミ ッ ター

先ほどの図 2 を見る と、パラレル ク ロ ッ ク ド メ インからシ リ アル ク ロ ッ ク ド メ イン (および反対方向) へのタイ ミ ング制約は 1 シ リ アル ク ロ ッ ク サイ クルとなっています。 シ リ アル ク ロ ッ クの動作周波数は高いため、 タイ ミ ング要件を緩和するこ とが望まれます。 ト ランス ミ ッ ター側のタイ ミ ング要件を緩和するには、 IP の設定で SLACK_CYCLE の値を大きく します。 こ うする と、 データパスのパラレル ド メ インからシ リ アル ド メ インへの制約を SLACK_CYCLE パラ メーターで指定したサイ クル数 (マルチサイ クル) にできます。 ただし SLACK_CYCLE を大き くする と、 転送される有効ビッ ト数が減少します。図 7 は、SLACK_CYCLE を増やすと制約が緩和される と同時に有効ビッ トが少なくなる様子を示しています。

レシーバー

ト ランス ミ ッ ター同様に、 レシーバーもユーザー境界でのタイ ミ ング要件を緩和できます。 そのためには、 パラレル クロ ッ ク とシ リ アル ク ロ ッ クの周波数を維持したまま、 実効 MUX 比を小さ く します。 こ うする とデータをよ り高速に取り込むこ とができ、 パラレル ク ロ ッ クの立ち上がりエッジまでに複数のシ リ アル ク ロ ッ ク サイ クルを確保します。 図 8 のスラ ッ ク サイクルは、 マルチサイクル制約によってこの制約を緩和できる様子を示しています。

X-Ref Target - Figure 7

図 7 : ト ランスミ ッ ターで SLACK_CYCLE を増やしてパラレル ド メインからシリアル ド メインへの制約をマルチサイクルにする

Page 7: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

実効 MUX 比を求める手順

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 7

実効 MUX 比を求める手順こ こまでの説明で、ト ランス ミ ッ ターとレシーバーの両方にタイ ミ ング マージンを追加する方法を紹介しました。これで、あるボード コンフ ィギュレーシ ョ ンにおいて実際に転送可能な有効ビッ ト数を計算できます。 MUX/DeMUX あた りの実際の有効ビッ ト数がわかれば、 FPGA 間にいくつの I/O が必要かが決ま り ます。 MUX/DeMUX のインスタンスが複数ある場合は、 それぞれの I/O を合計する と全体の信号数を求めるこ とができます。 この計算には次の情報が必要です。

• シ リ アル ク ロ ッ ク ド メ インとパラレル ク ロ ッ ク ド メ インのクロ ッ ク比

• ボード ト レース遅延

• パッケージ フライ ト タイム

• タ ップ数 0 の場合の IDELAY 遅延 (タイ ミ ング アナライザーよ り )。 通常は約 1ns の遅延。

• デザインのデジタル遅延 :

° 出力のレイテンシは 2 シ リ アル ク ロ ッ ク サイ クル

° 入力のレイテンシは 4 シ リ アル ク ロ ッ ク サイ クル

• ト ランス ミ ッ ターおよびレシーバー側で必要なスラ ッ ク

• 両方の FPGA のパラレル ク ロ ッ ク スキュー

入力と出力に適切なスラ ッ クを設定した後、 実効 MUX 比を手順 1 ~ 4 で求めます。

手順 1 : 暫定的な有効ビッ ト数を計算する

式 1 で、 実際の有効ビッ ト数ではなく暫定的な有効ビッ ト数 (PVB) を求めます。

式 1

説明 :

PCP = パラレル ク ロ ッ ク周期IODd = 入力および出力デジタル遅延Id = IDELAY 遅延BTd = ボード ト レース遅延PFT = パッケージ フライ ト タイムPCS = パラレル ク ロ ッ ク スキューSBT = シ リ アル ビッ ト時間PVB = 暫定的な有効ビッ ト

X-Ref Target - Figure 8

図 8 : 有効ビッ ト数を減らして受信タイ ミング マージンを増加

PCP IODd– Id– BTd– PFT– PCS–SBT

----------------------------------------------------------------------------------------------------- PVB=

Page 8: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

実効 MUX 比を求める手順

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 8

[Re-customize IP] ダイアログ ボッ クスにも この計算結果が表示されます (図 9)。制限は、 IDELAY が 1ns に固定され、 パッケージ フライ ト タイムが 200ps に固定され、 ク ロ ッ ク スキューを 0 とするこ とだけです。 [Trace Delay] に追加のタイ ミ ングを割り当てる と、 これらの制限を回避できます (図 9)。

手順 2 : シリアル クロック周期がタイ ミング ボトルネックになっているかを確認する

手順 1 で PVB の値を求めたら、次にシ リ アル ク ロ ッ ク周期がパラレル ク ロ ッ ク とシ リ アル ク ロ ッ ク間のタイ ミ ング制約と して妥当かど うかを判断します。 シ リ アル ク ロ ッ ク周期が妥当な場合、 PVB の値をそのままユーザー データ幅と して使用できます。 シ リ アル ク ロ ッ ク周期がタイ ミ ング的に厳しい場合は、 手順 3 に進んで制約を緩和します。

手順 3 : ト ランスミ ッ ターの制約を緩和する

ト ランス ミ ッ ター側でタイ ミ ング マージンが必要な場合、有効ビッ ト数と引き換えにタイ ミ ングを緩和できます。 たとえば制約を 2 シ リ アル ク ロ ッ ク サイクルだけ緩和した場合、 有効ビッ ト数は 4 ビッ ト少な くな り ます。 シ リ アル ク ロ ッ クのマージンを 1 サイ クル増やすと、 多重化される有効ビッ トが 2 ビッ ト減少します。 このタイ ミ ング制約は IP に追加され、RTL にもパラレル データがシ リ アル ド メ インで安定するためのマージンが追加されます。 スラ ッ クを増やすには、 IPの SLACK_CYCLE パラ メーターの値を大き くする必要があ り ます。SLACK_CYCLE = 1 ではスラ ッ クは増えず、シ リ アルクロ ッ ク要件のままです。 SLACK_CYCLE の値を 1 つ増やすと 1 シ リ アル ク ロ ッ ク サイ クルが追加され、 その結果有効ビッ ト数が 2 ビッ ト減少します。 IP ではなく RTL を直接使用する場合は、 シ リ アル ク ロ ッ ク ド メ インとパラレル ク ロ ック ド メ イン間に適切なタイ ミ ング例外を追加しないと IP は機能しません。

手順 4 : レシーバーのタイ ミングを緩和する

ト ラ ン ス ミ ッ ター同様、 レシーバーのタ イ ミ ング も有効ビ ッ ト 数 と 引き換えに緩和でき ます。 この設定も IP のSLACK_CYCLE オプシ ョ ンで行います。 SLACK_CYCLE の値を 1 つ大き くするごとに有効ビッ ト数が 2 ビッ ト減少します。 SLACK_CYCLE の値を変更した場合の影響は、 ト ランス ミ ッ ター デザインとレシーバー デザインで異なり ます。 レシーバー デザインの場合は、SLACK_CYCLE の値を変更しても IP の制約が変更されるだけでソース コードは影響を受けません。 ト ランス ミ ッ ター デザインの場合は、 SLACK_CYCLE の値を変更する と制約と ソース コードの両方が変更されます。

X-Ref Target - Figure 9

図 9 : [Re-customize IP] ダイアログ ボックスに表示される暫定的な有効ビッ ト数の計算結果

Page 9: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ポートおよびパラメーターの一覧

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 9

実効 MUX 比の計算例

この例では、パラレル ク ロ ッ クの周波数を 25MHz (40ns 周期)、シ リ アル転送レート を 800Mb/s (1.25ns ビッ ト時間) と します。 IDDR または ODDR プ リ ミ テ ィブを使用するため、 シ リ アル 転送レー ト が 800Mb/s の場合のシ リ アル ク ロ ッ クは400MHz (2.5ns 周期) です。 IDELAY 遅延は 1ns で、パッケージ フライ ト タイムは ト ランス ミ ッ ター側とレシーバー側でそれぞれ 125ps です。ボード ト レースは約 6 インチで、遅延は約 960ps です。パラレル ク ロ ッ ク スキューは 0 と します。 これらの値を式 1 に代入する と、 PVB の値は 18 とな り ます (式 2)。

式 2

次に、 スラ ッ ク サイクル数を求める必要があ り ます。 現時点で、 パラレル ク ロ ッ ク ド メ インとシ リ アル ク ロ ッ ク ド メ インの間には 2.5ns の要件があ り ます。 この 2.5ns の要件は、 ト ランス ミ ッ ターとレシーバーのユーザー インターフェイスに対するものです。レシーバーと ト ランス ミ ッ ター間のスラ ッ クを大き く してデータパスの要件を 200MHz (5ns) とするには、 ト ランス ミ ッ ター側のパラ メーターに 1 シ リ アル ク ロ ッ ク サイ クルを足し、 レシーバー側で 1 ク ロ ッ ク サイ クル分の有効ビッ ト を減らします。 これでシ リ アル ク ロ ッ クが 2 サイクル減少し、 有効ビッ ト数が 4 ビッ ト少なくな り ます。 この結果、 上の例で境界タイ ミ ング要件が 200MHz の場合の実効 MUX 比は 14:1 とな り ます。

ポートおよびパラメーターの一覧表 1 と表 2 に、 ト ランス ミ ッ ターのパラ メーターおよびポートの一覧をそれぞれ示します。

40ns 2 4+( ) 2.5ns 1ns– 0.96ns– 0.250ns– 0ns–×–

2.5ns2

---------------

------------------------------------------------------------------------------------------------------------------------------------------------------- 18=

表 1 : ト ランスミ ッ ター デザインのパラメーター

パラメーター名 タイプ 説明

DATA_WIDTH 整数 送信可能な有効ビッ トの数を示します。2 の倍数とする必要があ り ます。

FULL_WIDTH 整数 実際にシ リ アル化される幅を示します。これはシ リ アル ビッ ト時間とパラレル ク ロ ッ ク周期の比です。

SLACK_CYCLE 整数 シ リ アル ド メ インとパラレル ド メ イン間に追加するスラ ッ クをシ リ アル ク ロ ッ ク サイクル数で指定します。 パッケージ化した IP を使用する場合、こ こで指定したスラ ッ ク サイクル数に基づいてマルチサイクル制約が追加されます。

DIFFERENTIAL ブール型 TRUE の場合、 IBUFDS を挿入します。 FALSE の場合、 シングルエンドI/O と します。

表 2 : ト ランスミ ッ ター デザインのポート

ポート名 幅 方向 説明

clk_parallel 1 入力 パラレル ク ロ ッ ク (低速クロ ッ ク )。

clk_serial 1 入力 シ リ アル ク ロ ッ ク (高速クロ ッ ク )。

reset 1 入力 非同期リセッ ト信号。パラレル ク ロ ッ ク とシ リ アル ク ロ ッ クが安定してから リセッ ト をディアサート して ください。

training_pattern DATA_WIDTH 入力 stop_training をディアサートする と このパターンが送信され、アサートする と real_data が送信されます。 この入力は固定値とするこ とを推奨します。

stop_training 1 入力 ディアサートする と training_pattern が送信されます。

real_data DATA_WIDTH 入力 ユーザー ロジッ クからのデータ入力。 stop_training をアサートする と送信されます。

data_out_to_pins 1 出力 出力ポート ド ラ イバー。

in_training 1 出力 ト レーニングの終了を通知する出力ステータス信号。

Page 10: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

ポートおよびパラメーターの一覧

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 10

表 3 と表 4 に、 レシーバーのパラ メーターおよびポートの一覧をそれぞれ示します。

表 3 : レシーバー デザインのパラメーター

パラメーター名 タイプ 説明

DATA_WIDTH 整数 受信する有効ビッ トの数を示します。 2 の倍数とする必要があ り ます。

FULL_WIDTH 整数 実際にシ リ アル化される幅を示します。 これはシ リ アル ビッ ト時間とパラレルクロ ッ ク周期の比です。

SLACK_CYCLE 整数 シ リ アル ド メ イン とパラレル ド メ イン間に追加するス ラ ッ クをシ リ アル クロ ッ ク サイクル数で指定します。パッケージ化した IP を使用する場合、 こ こで指定したスラ ッ ク サイクル数に基づいてマルチサイクル制約が追加されます。

DIFFERENTIAL ブール型 TRUE の場合、 IBUFDS を挿入します。 FALSE の場合、シングルエンド I/O と します。

IODELAY_GRPNAME 文字列 IDELAY の IODELAY_GRPNAME パラ メーターの文字列ラベル。

表 4 : レシーバー デザインのポート

ポート名 幅 方向 説明

clk_parallel 1 入力 パラレル ク ロ ッ ク (低速クロ ッ ク )。

clk_serial 1 入力 シ リ アル ク ロ ッ ク (高速クロ ッ ク )。

reset 1 入力 非同期リセッ ト信号。パラレル ク ロ ッ ク とシ リ アル ク ロ ッ クが安定してから リセッ ト をディアサート して ください。

training_pattern DATA_WIDTH 入力 キャ リ ブレーシ ョ ン時にこのパターンを使用して有効なパターンを検出します。 この入力は固定値とするこ とを推奨します。

data_in_from_pins 1 入力 入力ポート レシーバー。

real_data_in DATA_WIDTH 出力 キャ リブレーシ ョ ン完了後、 このデータを ト ランス ミ ッ ターから受信します。

calib_comp 1 出力 キャ リブレーシ ョ ンが完了したこ とを示します。

delay_locked 1 出力 IDELAY CONTROLLER がロ ッ ク しているこ とを示します。

Page 11: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

リファレンス デザインの実装

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 11

リファレンス デザインの実装このサンプル デザインには、送信したデータ と受信したデータが同じであるこ とを確認するためのシンプルなカウンターモジュールとチェ ッカー モジュールが含まれます。 これらが異なる場合、 チェ ッカーのエラー フラグがアサート されます。このフラグはリセッ ト をパルスするまでアサート されたままです。図 10 に、このサンプル デザインの接続を示します。

このサンプル デザインを実装するための Tcl ス ク リ プ ト build_project.tcl が project ディ レク ト リ にあ り ます。Vivado IDE を起動し た ら Tcl コ ン ソールで現在の作業デ ィ レ ク ト リ を project デ ィ レ ク ト リ に変更し、build_project.tcl スク リプ ト を source コマンドで実行します (図 11)。

build_project.tcl ファ イルを source コマンドで実行する とプロジェク トが作成され、 ビッ ト ス ト リームの作成またはビヘイビアー シ ミ ュレーシ ョ ンの実行が可能になり ます。

X-Ref Target - Figure 10

図 10 : サンプル デザインのブロック図

X-Ref Target - Figure 11

図 11 : Tcl スクリプ ト を source コマンドで実行してプロジェク ト をビルド

Page 12: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

リファレンス デザインの実装

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 12

ハードウェア上でのサンプル デザインの実行

このサンプル デザインは Kintex®-7 FPGA KC705 評価ボードで動作します。 このボードの GPIO SMA コネク タを 2 組のSMA ペア ケーブルで接続します (図 12)。

Vivado IDE の Flow Navigator で [Generate Bitstream] をク リ ッ ク します。 これで、 KC705 ボードをターゲッ トにしたビッ トス ト リームが生成されます。ビッ ト ス ト リームを生成したら、 Integrated Logic Analyzer (ILA) コアを使用できるよ うにするために Vivado ハード ウェア マネージャーで FPGA をプログラムします。 サンプル プロジェ ク ト に含まれる ILA コアはVivado ハードウェア マネージャーにのみ対応し、 iMPACT には対応していません。

Vivado ハード ウェア マネージャーで [Trigger Immediate] をク リ ッ クする と、 送信および受信したデータが表示されます。こ こで、 送信したデータ と受信したデータが同じであるこ とを確認します。 図 13 に、 ILA のデータを示します。

SMA ケーブルを抜いて故意にエラーを発生させる と、 エラー LED (GPIO_LED_2_LS) が点灯します。 ケーブルを再び接続し、 リセッ ト (GPIO_SW_S) をパルスする とエラー LED が消灯します。

X-Ref Target - Figure 12

図 12 : ハードウェアのセッ トアップ

X-Ref Target - Figure 13

図 13 : ILA のデータ

Page 13: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

リファレンス デザインの実装

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 13

サンプル シミ ュレーシ ョ ンの実行

サンプル シ ミ ュレーシ ョ ンを実行するには、Vivado IDE の Flow Navigator で [Run Behavioral Simulation] をク リ ッ ク します(図 14)。 する と、 Vivado シ ミ ュレータでビヘイビアー シ ミ ュレーシ ョ ンが開始します。

サンプル シ ミ ュレーシ ョ ンのテス トベンチは ト ランス ミ ッ ターをレシーバーに接続し、 data_path_board_jitter 信号への代入によってジッターをエミ ュレート します。こ うする と、キャ リブレーシ ョ ン ステート マシンに実際の物理ボード と同じ条件でス ト レスを与えるこ とができます。 キャ リブレーシ ョ ンが完了するまで、 少なく と も 400µs はシ ミ ュレーシ ョ ンを実行して ください。

波形コンフ ィギュレーシ ョ ン ファ イルは、データ チェッカー モジュールの信号を表示するよ うに設定しています (図 15)。

X-Ref Target - Figure 14

図 14 : サンプル ビヘイビアー シミ ュレーシ ョ ンを実行

X-Ref Target - Figure 15

図 15 : ビヘイビアー シミ ュレーシ ョ ン実行後のサンプル波形

Page 14: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

IP をカスタム デザインに追加する方法

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 14

IP をカスタム デザインに追加する方法このアプリ ケーシ ョ ン ノートに付属する IP ブロッ クは、 packaged_ip ディ レク ト リにあ り ます。 この IP をカスタム デザインに追加するには、パッケージ化した IP を IP リ ポジ ト リに含める必要があ り ます。 [Project Settings] ダイアログ ボックスで packaged_ip ディ レク ト リ を選択します (図 16)。 続いて [OK] をク リ ッ ク します。

packaged_ip ディ レク ト リ を IP リ ポジ ト リに追加する と、 Vivado IP カタログに I/O MUX IP が表示されます (図 17)。

X-Ref Target - Figure 16

図 16 : IP をリポジト リに追加

X-Ref Target - Figure 17

図 17 : IP カタログに表示された IP

Page 15: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

リソース使用量

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 15

リソース使用量表 5 および表 6 に、FULL_WIDTH パラ メーターを 32 に設定した場合のト ランス ミ ッ ターとレシーバーの標準的なサイズを示します。 これらのデザインはなるべく軽量になるよ うにしています。

ファイル階層図 18 に、 リ ファレンス デザインのディ レク ト リ構造を示します。

表 5 : ト ランスミ ッ ターのリソース使用量

データ幅 LUT フリ ップフロップ

16 18 19

20 22 23

24 26 27

表 6 : レシーバーのリソース使用量

有効ビッ ト LUT フリ ップフロップ

16 60 80

20 63 92

24 65 104

X-Ref Target - Figure 18

図 18 : デザイン ファイルの階層

Page 16: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

用語の定義

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 16

用語の定義表 7 に、 このアプリ ケーシ ョ ン ノートで使用する用語の定義を示します。

まとめFPGA の一般的な用途である複雑な ASIC デザインのエ ミ ュレーシ ョ ンでは、 最大規模の FPGA を使用してもデザインを複数の FPGA に分割する必要があ り ます。 この場合、 FPGA 間で転送する信号の数が数千におよぶこ と もあ り ます。 このアプ リ ケーシ ョ ン ノートでは、 ASIC 設計者を対象にレイテンシを 0 サイ クルに抑えて I/O を多重化する方法について説明しました。

リファレンス デザインこのアプリ ケーシ ョ ン ノートの リ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。

表 8 に、 リ ファレンス デザインの詳細を示します。

表 7 : 用語の定義

用語 説明

有効ビッ ト 実際に送受信が可能なビッ ト。

暫定的な有効ビッ ト ユーザー ロジッ ク境界での制約を考慮しない有効ビッ ト数。

ク リ ップ ビッ ト 有効ビッ トの後に送信され、 破棄されるビッ ト 。

パラレル ク ロ ッ ク ユーザー ク ロ ッ ク ド メ イン。一般的に、エ ミ ュレーシ ョ ン システムでは低クロ ッ ク レート。

シ リ アル ク ロ ッ ク 送信および受信クロ ッ ク。 パラレル ク ロ ッ ク よ り も高速。

実効 MUX 比 ユーザーから見た場合の多重化比。 ク リ ップ ビッ トは含みません。

実際の MUX 比 パラレル ク ロ ッ ク とシ リ アル ク ロ ッ クの比。

表 8 : リファレンス デザインの詳細

パラメーター 説明

全般

開発者 Luis Bielich

ターゲッ ト デバイス Kintex-7 FPGA

ソース コードの提供 あ り

ソース コードの形式 (提供される場合) RTL、 Tcl

シミ ュレーシ ョ ン

論理シ ミ ュレーシ ョ ンの実施 あ り

タイ ミ ング シ ミ ュレーシ ョ ンの実施 あ り

論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョ ン用テス トベンチの提供

両方

テス トベンチの形式 Verilog/SystemVerilog

使用したシ ミ ュレータ /バージ ョ ン Vivado シ ミ ュレータ

Page 17: FPGA ASIC エミュレーション用にレイテンシ をゼロに抑えた多 … · デザインの分割 XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 4 レシーバーは、リセットが終了するとキャリブレーション

改訂履歴

XAPP1217 (v1.0) 2015 年 3 月 17 日 japan.xilinx.com 17

改訂履歴次の表に、 この文書の改訂履歴を示します。

法的通知The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products. To the maximum extentpermitted by applicable law: (1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES ANDCONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, includingnegligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, theMaterials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss ofdata, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonablyforeseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes no obligation to correct any errors contained in the Materials or tonotify you of updates to the Materials or to product specifications. You may not reproduce, modify, distribute, or publicly display the Materials withoutprior written consent. Certain products are subject to the terms and conditions of Xilinx’s limited warranty, please refer to Xilinx’s Terms of Sale whichcan be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support terms contained in a license issued to you byXilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk andliability for use of Xilinx products in such critical applications, please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.

Automotive Applications Disclaimer

XILINX PRODUCTS ARE NOT DESIGNED OR INTENDED TO BE FAIL-SAFE, OR FOR USE IN ANY APPLICATION REQUIRING FAIL-SAFEPERFORMANCE, SUCH AS APPLICATIONS RELATED TO: (I) THE DEPLOYMENT OF AIRBAGS, (II) CONTROL OF A VEHICLE, UNLESSTHERE IS A FAIL-SAFE OR REDUNDANCY FEATURE (WHICH DOES NOT INCLUDE USE OF SOFTWARE IN THE XILINX DEVICE TOIMPLEMENT THE REDUNDANCY) AND A WARNING SIGNAL UPON FAILURE TO THE OPERATOR, OR (III) USES THAT COULD LEADTO DEATH OR PERSONAL INJURY. CUSTOMER ASSUMES THE SOLE RISK AND LIABILITY OF ANY USE OF XILINX PRODUCTS INSUCH APPLICATIONS.

© Copyright 2015 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein aretrademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの右下

にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。いただきましたご意見を参考に早急に

対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。

SPICE/IBIS シ ミ ュレーシ ョ ンの実施 N/A

使用したインプリ メンテーシ ョ ン ツール/バージ ョ ン 2014.4

スタティ ッ ク タイ ミ ング解析の実施 あ り

ハードウェア検証

ハードウェア検証の実施 あ り

使用したプラ ッ ト フォーム KC705 ボード

表 8 : リファレンス デザインの詳細 (続き)

パラメーター 説明

日付 バージョ ン 内容

2015 年 3 月 17 日 1.0 初版