インテル® Hyperflex™ アーキテクチャー高性能デザイン・ハンドブック

ID 683353
日付 10/04/2021
Public
ドキュメント目次

3.1. サブモジュールを独立してコンパイルする

より大きなデザインのサブモジュールを個別にコンパイルできます。より大きなサブモジュールを個別にコンパイルすると、サブモジュールのパフォーマンス情報を取得し、パフォーマンスを向上させるためにサブモジュールを最適化できます。サブモジュールをコンパイルする際の目標に応じて、次の手法で説明されているように、I / Oを異なる方法で処理することを選択できます。

  • コンパイル中にサブモジュールに追加のHyper-Optimizationが必要な場合は、ラッパー内でサブモジュールをインスタンス化し、各入力と出力に2つ以上のレジスターステージを追加します。この手法により、これらの追加レジスターを回路にリタイミングできます。コンパイラが追加のレジスターをサブモジュールにリタイムする場合は、完全なデザインを変更して、サブモジュールに追加のレジスターを提供できます。この方法は、サブモジュールでハイパー最適化をテストして、サブモジュールがより大きな設計の一部である場合のリタイミングの影響を判断する場合に役立ちます。
  • サブモジュールのHyper-Optimizationをさらに必要としないが、モジュールを分離してコンパイル時間を節約し、完全なデザインでモジュールのタイミングバジェットを模倣する場合は、仮想ピン制約を定義して、サブモジュールに直接接続するレジスターのリタイミングを有効にします。内部クロックツリーのクロックスキューを考慮して、適切なset_input_delayまたはset_ouput_delay SDC制約を指定します。 次のガイドラインと例に従って、reference_pinまたは静的最大制約のいずれかを指定して、内部クロックツリーのクロックスキューを考慮します。
表 8.  サブモジュール・コンパイル制約ガイドライン
SDC引数 ガイドライン
クロック 内部クロックドメイン名を指定します(仮想クロックなし)。この引数により、コンパイラは外部クロックと内部クロックを同じように扱い、境界上にないI / Oレジスターのリタイミングを可能にします。 reference_pin argument:
set_input_delay -clock [get_clocks <name>] \
     0 [get_ports <name>] \ 
     -reference_pin [get_pins [<names>]
static maximum constraint:
set insert_delay <value>
set_input_delay -clock [get_clocks <name>] \
     $insert_delay [get_ports <name>]
遅延 内部クロックツリーのクロックスキューを考慮して、次のいずれかを指定します。
  • max(setup)引数を0に設定し、reference_pin引数をI/Oレジスタのクロックピンに設定します。
  • Compilerは、クロックツリー挿入遅延をI/Oレジスタに自動的に減算します。max引数をクロックツリー挿入遅延以上に設定します。
図 82. サブモジュールコンパイル入力制約の例 
set_input_delay -clock [get_clocks clk_in] \
     0 [get_ports data] \ 
     -reference_pin [get_pins [int_reg|clk]

または

set insert_delay 1.3
set_input_delay -clock [get_clocks clk_in] \
     $insert_delay [get_ports data]