レジスタの複製を使用すると、レジスタのコピーを作成して信号のファンアウトを削減することにより、クリティカル パスを高速化できます。これにより、インプリメンテーション ツールでさまざまなロードおよび関連ロジックの配置配線がより柔軟に実行されるようになります。合成ツールでは、この手法が広範に使用されます。
ほとんどの合成ツールでは、ファンアウトしきい値制限を使用して、レジスタを複製するかどうかが自動的に決定されます。このグローバルしきい値を下げると、ファンアウトの大きいネットが自動的に複製されるようになりますが、どのレジスタを複製するか、そのロードをどのようにグループ化するかなどの詳細な制御はできません。また、グローバル複製メカニズムではタイミング スラックが正確に評価されないので、セルが不必要に複製されたり、ロジックの使用率が増加したり、消費電力が大きくなったりする可能性があります。
高周波数デザインでファンアウトを削減するには、ファンアウトの大きい信号に対してバランスの取れたツリーを使用するのがより良い方法です。1 つの階層に含まれるセルは通常一緒に配置されるので、デザイン階層に基づいてレジスタを手動で複製することを考慮してください。たとえば、次の図に示すバランスの取れたリセット ツリーでは、ファンアウトの大きいリセット FF RST2 が RTL で複製され、異なるモジュール間でファンアウトのバランスが取られます。必要であれば、物理合成でさらに複製を実行し、配置情報に基づいて WNS を向上できます。
クロック ドメイン間をまたぐ信号を同期するのに使用されたレジスタは複製しないようにしてください。これらのレジスタに ASYNC_REG 属性を適用すると、複製されなくなります。同期チェーンのファンアウトが大きく、タイミングを満たすために複製が必要な場合は、同期チェーンの後に ASYNC_REG 属性を設定しないレジスタを追加します。
次の表に、デザインで許容されるファンアウト数のガイドラインを示します。
条件 | ファンアウト > 5000 | ファンアウト > 200 | ファンアウト > 100 |
---|---|---|---|
低周波数 1 ~ 125 MHz | 最大周波数での同期ロジック間のロジック段数は 13 未満 | なし | なし |
中周波数 125 ~ 250 MHz | デザインでタイミングが満たされない場合、ファンアウトまたはロジック段数を削減する必要がある場合あり。 | 最大周波数でのロジック段数は 6 未満 (ドライバーおよびロード タイプがパフォーマンスに影響)。 | なし |
高周波数 > 250 MHz | ほとんどのデザインで推奨されない。 | 高速の場合、通常ロジック段数を少なくすることが必要。 | アドバンス パイプライン手法が必要。注意してロジック複製。コンパクトな関数。ロジック段数を少なくすることが必要 (ドライバーおよびロード タイプがパフォーマンスに影響)。 |
opt_design -hier_fanout_limit
、place_design
、phys_opt_design
などのインプリメンテーション ツール オプションを使用して信号を複製することを考慮してください。<original_name>_a
、<original_name>_b
のような名前を付けて複製されたものであることがわかるようにし、RTL コードが管理しやすくなるようにしてください。