レジスタの複製の使用 - 2023.2 日本語

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

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

ほとんどのツールでは、レジスタを複製してクリティカル パス上のファンアウトの大きいネットを削減できます。または、特定のレジスタまたは階層レベルに属性を適用して、複製可能なレジスタと不可能なレジスタを指定することもできます。たとえば、複製されたネットに LUT1 があると、属性または制約が最適化の妨げになります。合成中、最適化されたネット上にある階層セルの KEEP_HIERARCHY 属性、または異なる階層のネット セグメントにある KEEP 属性により、複製最適化が変更されることがあります。合成およびインプリメンテーション中は、DONT_TOUCH 制約によっても有益な最適化が妨げられます。

ファンアウトの大きいネットは、特定のネットに MAX_FANOUT 属性を使用して RTL または合成で対処されることがあります。これは、特に MAX_FANOUT 属性の値が小さすぎる場合や複数の主要な階層に接続されているネットに設定されている場合、最適な配線リソースが使用されるとは限りません。さらに、ファンアウトの大きい信号がレジスタの制御信号であり、必要以上に複製されると、タイミング クロージャには不要なレジスタが追加され、制御セットの数が多くなってデザインの消費電力が増加することがあります。

ファンアウトを削減するには、多くの場合、ファンアウトの大きい信号に対してバランスの取れたツリーを使用するのがより良い方法です。1 つの階層に含まれるセルは通常一緒に配置されるので、デザイン階層に基づいてレジスタを手動で複製することを考慮してください。

再構成して制御セットおよびファンアウトの大きいネットを削減するには、opt_design Tcl コマンドの次のいずれかのオプションを指定して使用できます。

-control_set_merge
論理的に等価の制御信号の複数のドライバーを積極的に 1 つのドライバーに統合します。
-merge_equivalent_drivers
制御信号を含む論理的に等価の信号のドライバーを 1 つのドライバーに統合します。
注記: このオプションを使用すると、ツールで主な階層と Pblock 制約が認識されるので、まずこのオプションを試してみてください。

これらのオプションはファンアウト複製の逆であり、ネットがモジュール ベースの複製に適したものになります。この統合は、次の図に示すように複数段のリセット ツリーでも機能します。

図 1. opt_design -control_set_merge を使用した制御セットの統合

複製されたオブジェクトの数を削減したら、opt_design Tcl コマンドで次のオプションを使用して、階層の特性に基づいて制限的な複製を実行できます。

-hier_fanout_limit <arg>
階層に応じてレジスタを複製します。<arg> は論理階層に応じた複製のファンアウトの制限を指定します。ファンアウトの大きいネットで駆動される階層インスタンスで、階層内のファンアウトが指定の値以内である場合、階層内のネットはファンアウトの大きいネットの複製されたドライバーにより駆動されます。複製されたドライバーは元のドライバーと同じ階層レベルに配置され、複製は制御セット レジスタに制限されません。

次の図に、opt_design -hier_fanout_limit 1000 を使用して、ファンアウトが 60000 のクロック イネーブル ネットを複製したところを示します。各モジュール SR_1K には 1000 個のロードが含まれるので、ドライバーは 59 回複製されます。

図 2. ファンアウトの大きいクロック イネーブル ネットのモジュール ベースの複製

ファンアウト最適化は、place_design でデフォルトでイネーブルになっています。複製は配置フローの初期に実行され、配置情報に基づきます。1000 個を超えるロードを駆動するレジスタや、DSP、ブロック RAM、および UltraRAM を駆動するレジスタは複製の対象として考慮され、複製が実行された場合はロードと一緒に配置されます。FORCE_MAX_FANOUT プロパティをネットに追加すると、ネットを駆動するレジスタまたは LUT を強制的に複製できます。FORCE_MAX_FANOUT の値には、複製最適化後のネットに必要な最大物理ファンアウトを指定します。

MAX_FANOUT_MODE プロパティを使用すると、物理デバイス属性に基づいて複製を強制できます。MAX_FANOUT_MODE プロパティにサポートされる値は、CLOCK_REGION、SLR、MACRO です。たとえば、MAX_FANOUT_MODE プロパティに CLOCK_REGION 値を指定すると、物理クロック領域に基づいてドライバーが複製され、同じクロック領域に配置されたロードがまとめられます。詳細は、 『Vivado Design Suite ユーザー ガイド: インプリメンテーション』 (UG904)このセクションを参照してください。

SSI テクノロジ デバイスでは、ファンアウトの大きいドライバーを各 SLR で複製し、Pblock を使用してそのロードと共に同じ SLR 内に割り当てます。この手法を使用すると、SLR 間をまたぐ遅延による影響を削減し、複製されたファンアウトの大きいネットを各 SLR 内で個別により柔軟に配置できます。