ほとんどのツールでは、レジスタを複製してクリティカル パス上のファンアウトの大きいネットを削減できます。または、特定のレジスタまたは階層レベルに属性を適用して、複製可能なレジスタと不可能なレジスタを指定することもできます。たとえば、複製されたネットに LUT1 があると、属性または制約が最適化の妨げになります。合成中、最適化されたネット上にある階層セルの KEEP_HIERARCHY 属性、または異なる階層のネット セグメントにある KEEP 属性により、複製最適化が変更されることがあります。合成およびインプリメンテーション中は、DONT_TOUCH 制約によっても有益な最適化が妨げられます。
ファンアウトの大きいネットは、特定のネットに MAX_FANOUT 属性を使用して RTL または合成で対処されることがあります。これは、特に MAX_FANOUT 属性の値が小さすぎる場合や複数の主要な階層に接続されているネットに設定されている場合、最適な配線リソースが使用されるとは限りません。さらに、ファンアウトの大きい信号がレジスタの制御信号であり、必要以上に複製されると、タイミング クロージャには不要なレジスタが追加され、制御セットの数が多くなってデザインの消費電力が増加することがあります。
ファンアウトを削減するには、多くの場合、ファンアウトの大きい信号に対してバランスの取れたツリーを使用するのがより良い方法です。1 つの階層に含まれるセルは通常一緒に配置されるので、デザイン階層に基づいてレジスタを手動で複製することを考慮してください。
再構成して制御セットおよびファンアウトの大きいネットを削減するには、opt_design
Tcl コマンドの次のいずれかのオプションを指定して使用できます。
-
-control_set_merge
- 論理的に等価の制御信号の複数のドライバーを積極的に 1 つのドライバーに統合します。
-
-merge_equivalent_drivers
- 制御信号を含む論理的に等価の信号のドライバーを 1 つのドライバーに統合します。
これらのオプションはファンアウト複製の逆であり、ネットがモジュール ベースの複製に適したものになります。この統合は、次の図に示すように複数段のリセット ツリーでも機能します。
複製されたオブジェクトの数を削減したら、opt_design
Tcl コマンドで次のオプションを使用して、階層の特性に基づいて制限的な複製を実行できます。
-
-hier_fanout_limit <arg>
- 階層に応じてレジスタを複製します。
<arg>
は論理階層に応じた複製のファンアウトの制限を指定します。ファンアウトの大きいネットで駆動される階層インスタンスで、階層内のファンアウトが指定の値以内である場合、階層内のネットはファンアウトの大きいネットの複製されたドライバーにより駆動されます。複製されたドライバーは元のドライバーと同じ階層レベルに配置され、複製は制御セット レジスタに制限されません。
次の図に、opt_design -hier_fanout_limit
1000
を使用して、ファンアウトが 60000 のクロック イネーブル ネットを複製したところを示します。各モジュール SR_1K には 1000 個のロードが含まれるので、ドライバーは 59 回複製されます。
ファンアウト最適化は、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 内で個別により柔軟に配置できます。