UltraScale および UltraScale+ デバイスでのクロック遅延の削減 - 2023.2 日本語

FPGA および SoC 用 UltraFast 設計手法ガイド (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 日本語

UltraScale および AMD UltraScale+™ でのグローバル クロックの配線では、まずグローバル クロック バッファーから水平配線トラックと垂直配線トラックを介してクロック ルートと呼ばれる中央位置へのクロック ネットが配線されます。クロック ネットは、クロック ルートから垂直分配トラックを介して各クロック領域のクロック行に分配されます。各行には、BUFCE_ROW ルートスルー サイトのクロック ネットワークにプログラム可能な遅延があり、クロック ルートからさらに遠くに伝搬されるクロックの大まかなスキュー調整が実行されます。

次の図に、グローバル クロック バッファー (BUFG) からクロック ルートへのクロック パスを示します。クロック配線は、垂直分配トラックへの配線から、各クロック領域行の BUFCE_ROW で水平分散トラックに切り替わり、その後最下位レベルに駆動されます。ソースは緑、デスティネーションは赤で示されています。

図 1. BUFG から BUFCE_ROW を介して最下位レベルに到達するクロック パス

行プログラム可能タップ遅延は、クロック ルートの近くで最大です。この遅延は、ルートから垂直方向に離れるにつれてクロック領域ごとに 1 タップ減少し、最終的に 0 になります。

次の図に、プログラム可能な行タップ値がルートから遠ざかるにつれ減少するトポロジを示します。タップ値が大きいと、製造プロセスの違いによる最小/最大遅延の変動によりタイミングのばらつきが追加されるので、遅延が大きくなり、SLR をまたぐクロック スキューも大きくなります。そのため、プログラム可能なタップ遅延値の大きいルート近くのタイミングを満たすのが困難になります。ルートからの垂直距離が長くなると、ばらつきが少なくなり、通常は SLR バスをまたぐ際のホールド違反を修正しやすくなります。SLR をまたぐバスのルートから水平距離が長くなると、クロック行遅延が大きくなります。この追加の遅延により、最小/最大遅延の変動が大きくなり、SLR をまたぐ際のパフォーマンスが低下します。

図 2. UltraScale+ SSI テクノロジ デバイスの行プログラム可能タップ遅延設定

UltraScale+ SSI テクノロジ デバイスでは、次のいずれかの方法を使用すると、SLR をまたぐスピードを向上できます。

  • クロック ルートの SLR をまたぐ部分からの水平距離を近くする。
  • 最大行プログラム可能タップ遅延値を制限してばらつきを削減する。
注記: ルートからの垂直距離が長いタイミング パスは、ホールド修正配線迂回からの遅延が増加するため、多少遅くなる可能性がありますが、これらの方法を使用すると全体的なパフォーマンスが向上します。

クロック使用率レポートの [Device Cell Placement Summary for Global Clock] セクションで、デザインの各グローバル クロックに対して Vivado ツールで選択された行プログラム可能タップ遅延設定を確認できます。次の例に、[HORIZONTAL PROG DELAY] 列に表示される g13 グローバル クロックの行プログラム可能タップ設定を、黄色でハイライトして示します。

図 3. クロック使用率レポートのグローバル クロックの行プログラム可能タップ遅延設定

UltraScale+ SSI テクノロジ デバイスでは、最小/最大遅延の変動を低減してクロック ルート付近の SLR をまたぐクロック スキューを低減するため、配置で最大行プログラム可能タップ遅延値が制限されると同時に、ルートから遠くにある SLR をまたぐパスのクロック スキューのバランスを取るため、SLR 境界の両側にあるクロック領域が増加または減少タップ遅延を持つようになります。配置で使用される最大行プログラム可能タップ遅延値を調べるには、クロック ネットの MAX_PROG_DELAY プロパティをクエリします。

行プログラム可能タップ遅延を制限するには、USER_MAX_PROG_DELAY プロパティを使用します。次に例を示します。USER_MAX_PROG_DELAY プロパティを設定するには、グローバル クロック バッファーで直接駆動されるネット セグメントに値を適用する必要があります。USER_MAX_PROG_DELAY プロパティを設定しない場合、配置で可能な最大タップ設定 7 が使用される可能性があります。

set_property USER_MAX_PROG_DELAY <0-7> [get_nets -of [get_pins BUFG/O]]

次に、USER_MAX_PROG_DELAY プロパティを使用する際のヒントを示します。

  • UltraScale+ SSI テクノロジ デバイスの大部分に分配されるクロックに推奨される USER_MAX_PROG_DELAY タップ値は 3 または 4 です。デバイスの中央でない GT、 PCIe® 、または CMAC ブロックの近くにクロック ルートがある場合、ソース クロックとデスティネーション クロックの共通ノードが SLR をまたぐ部分から遠くなるので、デバイスの反対側の SLR をまたぐパフォーマンスが大きく影響を受けます。
  • クロック ネットワーク一致のため CLOCK_DELAY_GROUP を使用するクロック グループでは、クロック グループ内のすべてのクロックに同じ USER_MAX_PROG_DELAY 値を使用してください。