推論ロジックをチェック - 2023.2 日本語

Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 日本語

デザインをコード記述する際には、推論されるロジックに注意してください。次の状況で、パイプラインをさらに考慮する必要があるかどうかを調べます。

  • ファンインの大きいロジック コーン

    たとえば、出力の算出に大きなバスや複数の組み合わせ信号を必要とするコードです。

  • 配置に制限がある、clock-to-out が遅い、またはセットアップ要件が大きいブロック

    たとえば、出力レジスタのないブロック RAM または正しくパイプラインされていない演算コードです。

  • 長い配線の原因となる指定配線

    たとえば、ピン配置により配線がチップを横断する必要がある場合、高速動作を可能にするためにパイプラインが必要です。

  • 大型の XOR 関数で構成されるロジック

    大型の XOR 関数は、スイッチング レートが高く、ダイナミック消費電力が大きくなる可能性があります。これらの関数をパイプライン処理してスイッチングを削減すると、回路の消費電力を削減できる可能性があります。

次の図では、クロック速度が次のものによって制限されます。

  • ソース フリップフロップの clock-to-out タイム
  • 4 段のロジックを介するロジック遅延
  • 4 個のファンクション ジェネレーターに関連した配線
  • デスティネーション レジスタのセット アップ タイム
図 1. パイプライン処理前

次のいずれかの方法を使用して、デザインでパイプライン レジスタが正しく使用されるようにします。

  • RTL コードで、リタイミングするロジックの前または後、可能であれば階層内にレジスタを追加します。
  • Vivado 合成のグローバル リタイミングまたは BLOCK_SYNTH.RETIMING オプションを使用します。これは、パスのタイミングを解析し、可能であればレジスタを移動してタイミングを改善します。
  • 別の方法として、より詳細に制御するため、retiming_forward および retiming_backward 合成属性を使用します。これらの属性を特定のレジスタに追加すると、ロジックのタイミング スコアにかかわらず、組み合わせロジックを介してツールをリタイミングできます。これらの属性の詳細は、 『Vivado Design Suite ユーザー ガイド: 合成』 (UG901) を参照してください。

次の図に、レジスタを追加後のパイプライン処理を示します。

図 2. レジスタを追加後のパイプライン処理

次の図は、パイプライン処理前と同じデータパスの例です。フリップフロップがファンクション ジェネレーターと同じスライスに含まれているので、クロック速度はソース フリップフロップの clock-to-out 時間、1 段のロジックを介するロジック遅延、配線遅延、デスティネーション レジスタのセットアップ タイムによって制限されます。この例では、パイプライン処理およびリタイミング後は、元のデザインよりシステム クロックが高速になります。

図 3. リタイミング後にパイプライン処理

次に、リタイミング属性を使用して、「リタイミング後にパイプライン処理」の図に示す特定のリタイミングを強制的に実行する方法を示すコード例を示します。

(* retiming_backward = 3 *) reg reg1;
(* retiming_backward = 2 *) reg reg2;
(* retiming_backward = 1 *) reg reg3;