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

ID 683353
日付 10/04/2021
Public

インテルのみ表示可能 — GUID: mml1544540526396

Ixiasoft

ドキュメント目次

2.3.2.2.2. ステップ2:可変レイテンシー・モジュールのインスタンス化

Fast Forward Compilation機能を使用すると、自動パイプライン挿入に適した場所を特定できます。通常、次の場所はパイプラインの自動挿入に適しています。
  • 絶えず変化するデータを転送しているクロック境界により、Fitterは有利な場合にブロックを遠くに広げることができます。 
  • 複雑な組み合わせ機能に隣接する場所は、タイミングが合わない機能に適しています。
  • 同じクロックドメイン上の2つの独立した機能ブロック間の位置により、Fitterは有利な場合にブロックを遠くに広げることができます。

クロックドメイン境界での可変レイテンシーのインスタンス化

Fast Forwardコンパイルでは、クロックドメインの境界にパイプライン・ステージを追加することをお勧めします。この場合、追加のレイテンシーに簡単に対応できます。クロック境界で可変レイテンシーをインスタンス化することにより、Fitterは有利な場合にこれらのブロックを遠くに広げることができます。このような場合、シンクロナイザーまたはFIFOの前または後にhyperpipe_vlatモジュールを簡単にインスタンス化できます。 ネットリスト接続に関して、comb関数とhyperpipe_vlatの間に他のレジスターやロジックを使用せずにhyperpipe_vlatをインスタンス化します。

このインスタンス化により、Hyper-Retimerは、タイミング要件を満たすのに十分なパイプライン・レジスターを自動的に挿入できます。この場合、データは絶えず変化するため、遅延の影響を受けない誤ったパスは不適切です。

複雑な組み合わせ関数に隣接する可変遅延のインスタンス化

複雑な組み合わせモジュールに隣接するhyperpipe_vlatモジュールをインスタンス化して、Hyper-Retimerがタイミング要件を満たすのに十分なレジスターを挿入できるようにすることができます。後方リタイミングは初期条件に対応するために追加のリセットサイクルを必要としないため、複雑な組み合わせモジュールの後にhyperpipe_vlatモジュールをインスタンス化します。hyperpipe_vlatモジュール内のレジスターのタイミングを、順方向、後続のロジック、または逆方向に組み合わせモジュールに変更するかどうかを制御することはできません。

独立した機能ブロック間の可変レイテンシーのインスタンス化 

同じクロックドメイン内の2つの独立した機能ブロック間のhyperpipe_vlatモジュールをインスタンス化することができます 。このインスタンス化により、タイミング要件を満たすために必要なブロック間のパイプライン・ステージの数を追加するだけで、配置中に機能ブロックを分散させることができます。

注: 可変レイテンシー・モジュールをパーティション境界に直接隣接して配置しないでください。むしろ、レイテンシー・モジュールとパーティションポートの間にレジスターを配置して、それらを分離します。図 36が示すように、-hyperpipe_vlatモジュールをパーティション境界のすぐ隣に配置した場合、可変レイテンシーモジュールはリタイミング中に自動パイプラインを実行しません。
図 36. 不適切な可変レイテンシモジュールの配置により、自動パイプラインが妨げられる 
図 37. 可変レイテンシー・モジュールとパーティションの間にレジスターを配置して、自動パイプラインを可能にする

誤ったパスまたは例外制約を適用する 

独立した機能ブロック間でhyperpipe_vlatモジュールをインスタンス化する場合、誤ったパス(set_false_path)またはその他のタイミング例外を追加して、接続されたブロックが配置中に浮き上がるようにする必要があります。hyperpipe_vlatモジュールのvlat_rレジスターにfalseパスまたは例外を適用します。タイミング例外を条件付きifステートメント内に配置することにより、Timing Analyzerは、vlatがレジスターを追加するとき、または最終的なタイミングサインオフ中に例外を使用せず、各レジスターがクロック要件を満たしていることを確認します。

対応する誤ったパスまたは例外制約がない場合、hyperpipe_vlat メリットはほとんどありません。誤ったパスまたは例外制約がない場合、配置およびルーティング中にHyper-Retimerはhyperpipe_vlatの単一のパイプライン・ステージのみを認識します。Hyper-Retimerは、配置とルーティングが完了した後にのみ、追加のパイプライン・ステージを追加します。 Compilerは、単一のパイプライン・ステージで接続された2つの機能ブロックを、それらの間のパスが切断されない限り、近接して配置する傾向があります。

次の行は、my|top|design|hyperpipe_vlat_insthyperpipe_vlatインスタンスにset_false_path例外を適用する適切な.sdc構文を示しています。独立した機能ブロックに接続するhyperpipe_vlatインスタンスの同様の行を.sdcに追加します。

if { ! [is_post_route] } {
     set_false_path -to my|top|design|hyperpipe_vlat_inst|vlat_r[*]}

さらに、MAX_PIPEパラメーターを使用してパイプラインの数を制限する場合は、set_false_path例外ではなく、max_delayまたはmulticycle例外を適用することを検討してください。 vlatインスタンスにMAX_PIPE制約がある場合、set_false_path例外によってロジックが遠くに移動し、MAX_PIPE制約が不十分になる可能性があります。 このため、multicycle例外の方が適しています。 たとえば、NUM_PIPES=3の場合、NUM_PIPES(3)に等しいマルチサイクル例外を追加できます。

if {![is_post_route]} {
set_multicycle_path -setup –to my|top|design|hyperpipe_vlat_inst|vlat_r[*] 3
set_multicycle_path –hold –to my|top|design|hyperpipe_vlat_inst|vlat_r[*] 2}
可変レイテンシー制約-fromまたは-toを適用する
可変レイテンシー・モジュールを使用して、レジスター・チェーンの順方向または逆方向にHyper-Registersを追加できます。組み合わせロジックを介してレジスターをプッシュする場合は、次の制約方法を使用してください。
  • -from—.パイプライン化する組み合わせロジックの前にパイプライン化する組み合わせロジックの前にvlat_rを配置してから、マルチサイクルまたはfalseパス–from制約を適用します。
    図 38. 組み合わせロジックの前にvlat_hrを挿入する
  • -to—パイプライン化する組み合わせロジックの後にvlat_rを配置してから、マルチサイクルまたはfalseパス–to制約を適用します。
    図 39. 組み合わせロジックの後にvlat_rを挿入する