分散型パイプライン方式とクロックレート パイプラインのガイドライン
特定のブロック実装を指定したり、特定の設定を使用する場合、コード ジェネレーターはレジスタを導入します。次のガイドラインは、これらのレジスタの詳細と設計のタイミングを最適化するためのレジスタの使用方法を示します。
各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。
クロックレート パイプラインのガイドライン
ガイドライン ID
3.2.1
重大度
情報
説明
多くの場合、コード ジェネレーターは、クロック レートより実行速度が遅い領域にレジスタを導入します。さらなるレイテンシを回避したり、最小限にするために、クロック レート パイプラインを使用して、これらのレジスタを高速クロック レートで実行できます。次の最適化では、クロックレート パイプラインを使用できます。
入力および出力パイプライン
Sqrt および Reciprocal といった複雑な数学演算子などのマルチサイクル ブロックの実装
浮動小数点ライブラリのマッピング
遅延の均衡化
リソース共有とストリーミング
複数の階層をもつ設計では、特定のシステムレベルの最適化 (共有や分散型パイプライン方式など) を実行する場合は、最上位のサブシステムで HDL ブロック プロパティ [FlattenHierarchy] を有効にすることを推奨します。
クロックレート パイプラインおよびこの最適化の障壁となるブロックの詳細については、クロックレート パイプラインを参照してください。
分散型パイプライン方式の推奨設定
ガイドライン ID
3.2.2
重大度
推奨
説明
分散型パイプライン方式は、機能的な動作を維持しながら、設計内で既存の遅延を移動させることでクリティカル パスを減少させる速度の最適化です。この最適化によって、階層を維持しながらサブシステム内で遅延を移動します。
design に対してこの最適化を使用するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] 、 [最適化] ペインで、[パイプライン] タブに移動して、[分散型パイプライン] チェック ボックスをオンにします。
この最適化をさらに効果的に使用するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] 、 [最適化] ペインで、次の追加設定を指定します。
ConstrainedOutputPipeline: 指定した入力および出力パイプラインを含む、挿入される遅延の合計数が Subsystem の [ConstrainedOutputPipeline] に指定する値以上であることを確認します。
分散型パイプラインに合成推定値を使用: 合成タイミング推定を使用して、分散型パイプライン方式で、設計に含まれるコンポーネントの伝播遅延を計算するには、このオプションを選択します。このオプションを使用すると、ハードウェアに対するコンポーネントの機能をより正確に反映することで、設計における分散型パイプラインの精度を高めてターゲット デバイスのクロック周波数を最大化できます。Distributed Pipelining Using Synthesis Timing Estimatesを参照してください。
クロック レート パイプライン: コード ジェネレーターが、レジスタをデータ レートではなくクロック レートで挿入するようにするには、このオプションを選択します。
DUT 出力端子のクロック レート パイプラインを許可: コード ジェネレーターが、レジスタを DUT 出力端子でデータ レートではなくクロック レートで挿入するようにするには、このオプションを選択します。
設計上の遅延分散を許可: コード ジェネレーターが、設計に追加した遅延を移動しないようにするには、このオプションを無効にします。最適化が移動させるのはパイプライン レジスタのみです。
パイプライン分散の優先順位:
Numerical Integrity
またはPerformance
を優先するかどうかを指定します。Performance
を使用する場合、シミュレーション結果が一致することを確認してください。そのような場合、この設定によってレジスタは定数などの初期値をもつブロック内に移動し、これがシミュレーション結果に影響する可能性があります。
最適化を適用するサブシステムは、次の要件を満たしていなければなりません。
この最適化を適用するサブシステムにフィードバック ループが含まれていてはなりません。
サブシステムに含まれるブロックは分散型パイプライン方式がサポートされているブロックのみでなければなりません。サポートされていないブロックの一覧は、分散型パイプライン方式の制限を参照してください。回避方法は、次のとおりです。
Dot Product ブロックなどのサポートされていない一部のブロックについては、分散型パイプライン方式が有効になっていない別のサブシステム内に配置します。
Enabled Subsystem ブロックなどのブロックについては、[パイプライン分散の優先順位] パラメーターを
Performance
に変更します。
ブロックの [サンプル時間] パラメーターは離散でなければなりません。[サンプル時間] が
inf
に設定されたブロックがあり、無限大のサンプル時間が DUT 出力に伝播する場合は、それらを-1
に変更します。サンプル時間をプログラムで特定して変更するには、find_system と set_param を使用したブロック パラメーターの変更を参照してください。