Quartus® Prime プロ・エディションのユーザーガイド: デザイン最適化

ID 683641
日付 7/08/2024
Public
ドキュメント目次

5.5.9.9.3. レジスターの自動複製

デザイン階層情報を活用した複製の作成とそのファンアウト割り当ては、DUPLICATE_HIERARCHY_DEPTH アサインメントによってイネーブルされます。
set_instance_assignment -name DUPLICATE_HIERARCHY_DEPTH -to <register_name> <num_levels>

ここで、

  • register_name は、複数の階層にファンアウトするチェーンの最後のレジスターです。レジスターツリーを作成するには、ノードの背後に十分な数の単純なレジスターがあり、それらの単純なレジスターが自動的にツリーに取り込まれるようにします。
  • num_levels は、階層を下に複製するために使用する、チェーンに存在するレジスター数の上限に対応します。

DUPLICATE_HIERARCHY_DEPTH アサインメントは、合成段階で処理されます。ファンアウトの大きい信号は、レジスターのパイプラインを通過してモジュールのサブ階層にドライブするのが一般的です。例えば、システム全体のリセットを数クロックサイクルにわたって伝播させ、デザイン全体の多くのモジュールに駆動することができます。いくつかのシナリオでは、このサブ階層の構造を利用して、作成されるレジスターツリーの構造を推測すると、類似した階層内のエンドポイントに同じ信号のコピーが割り当てられ、デザイン内で分岐するようになります。階層は、レジスターツリーのどこに分岐を配置するかを決定します。

重要:

チェーン内のレジスターが複製に含まれるためには、次の条件をすべて満たしている必要があります。

  • レジスターは、別のレジスターによってのみ供給される必要があります。
  • レジスターは組み合わせロジックによってフィードされてはいけません。
  • レジスターはシンクロナイザー・チェーンの一部であってはなりません。
  • レジスターに 2 次信号があってはなりません。
  • レジスターには、preserve 属性または PRESERVE_REGISTER アサインメントを含めることはできません。
  • 最後のレジスターを除くチェーン内のすべてのレジスターは、ファンアウトを 1 つだけ持つ必要があります。

次の例は、レジスターチェーンとそれが駆動するエンドポイントの階層的な構成を持つネットリストの図です。DUPLICATE_HIERARCHY_DEPTH アサインメントは、階層間で複製されるレジスター で示すように、パイプライン・レジスターを階層全体で複製します。

図 66. 複数の階層に接続された 4 つのパイプライン・レジスターを示すオリジナルの図

この場合、regZ は 4 つのレジスターのチェーンのエンドポイントであるため、適切な割り当てターゲットです。この例では最大 3 つの複製候補 (regZregY、および regX) あるため、割り当て値は 1〜3 のいずれかにすることができます。regA は、その前のパスのタイミングと最適化を維持するために階層に取り込まれません。DUPLICATE_HIERARCHY_DEPTH アサインメントは、信号を 100 を超える複製に複製する必要があり、チェーンの下のサブ階層が深く、必要なツリーの構造をガイドするのに十分な意味がある場合に最適に使用されます。

図 67. regZ を階層レベル 1 に複製した後のネットリスト set_instance_assignment -name DUPLICATE_HIERARCHY_DEPTH -to regZ 1

num_levels が 1 に設定されている場合、regZ のみがチェーンから取り出され、そのファンアウトツリーの 1 つの階層レベルに押し下げられます。

図 68. regZ を階層レベル 2 に複製した後のネットリスト set_instance_assignment -name DUPLICATE_HIERARCHY_DEPTH -to regZ 2

num_levels が 2 に設定されている場合、regYregZ の両方がチェーンから引き出されます。 regZ は最大の階層の深さ 2 で終わり、regY は階層の深さ 1 で終わります。

図 69. 階層間で複製されるレジスター set_instance_assignment -name DUPLICATE_HIERARCHY_DEPTH -to regZ 3

num_levels が 3 に設定されている場合、3 つすべてのレジスター (regZregY、および regZ) がチェーンから引き出され、それぞれ 3、2、および 1 レベルの最大階層深度に押し下げられます

合成レポートの Hierarchical Tree Duplication Summary パネルには、DUPLICATE_HIERARCHY_DEPTH アサインメントで指定されたレジスターに関する情報が表示されます。また、アサインメントをさらに改善するための開始点として使用できるチェーンの長さの理由も含まれています。合成レポートには、Hierarchical Tree Duplication Details というパネルもあり、実装された複製の構造をよりよく理解するために使用できるチェーン内の個々のレジスターに関する情報が提供されます。