Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

分散型パイプライン方式

分散型パイプライン方式とは

分散型パイプライン方式、つまりレジスタのリタイミングとは、設計の既存の遅延を移動して、機能的動作を維持しながらクリティカル パスを低減する速度の最適化です。

HDL Coder™ ソフトウェアでは、Leiserson-Saxe リタイミング アルゴリズムを変更したものを使用しています。

たとえば、次のモデルには出力で 2 の遅延があります。

次の図は、クリティカル パスを低減するために分散型パイプライン方式によって遅延を再分布した後に生成されたモデルを示しています。

分散型パイプライン方式の利点とコスト

分散型パイプライン方式では設計のクリティカル パスを減らし、クロック速度とスループットを向上させることができます。

しかし、分散型パイプライン方式では設計にいくつかの遅延が必要となります。分散型パイプライン方式を利用するために設計に遅延を追加しなければならない場合は、設計の占める面積と初期のレイテンシが増加します。

分散型パイプライン方式の仕組み

HDL Coder は、分散型パイプライン方式を他の最適化オプションと共に適用して、設計内で既存の遅延を移動させることでクリティカル パスを減少させます。設計内の既存の遅延は、設計上の遅延またはパイプライン遅延のいずれかです。設計上の遅延は、Delay ブロックや状態をもつ他のブロック (Queue、HDL FIFO、Buffer ブロックなど) を使用して手動で設計に挿入する遅延です。パイプライン遅延は、最適化設定 (入力や出力のパイプライン オプションなど) やブロック実装設定 (Divide ブロックの ShiftAdd 実装や Trigonometric Function ブロックの CORDIC 近似など) によって生成される遅延です。InputPipelineおよびOutputPipelineを参照してください。

コードを生成すると、分散型パイプライン方式の実行前に、指定した入力パイプラインと出力パイプラインが設計内の入力端子と出力端子に挿入されます。HDL Coder は、これらのパイプラインを使用して、レイテンシ要件と設計に最適なパイプラインの概要を特定します。

HDL Coder による分散型パイプライン方式では、まず、設計内の各コンポーネントに等しい重みを割り当ててコンポーネントの伝播遅延を計算します。ただし、Selector ブロックや Bit Concat ブロックなどのワイヤ コンポーネントにはゼロの伝播遅延が割り当てられます。分散型パイプライン方式では、次に、設計内の各コンポーネントに割り当てられた重みに基づいて設計上の遅延とパイプライン遅延が再分布されます。分散型パイプライン方式ではすべてのパイプライン ステージが考慮され、最短のクリティカル パスを得るためにできるだけ均等に分散されます。挿入されたパイプラインは、当初要求した場所に表示されない場合があります。分散型パイプライン方式を使用すると、クリティカル パスを改善するためにこれらのパイプラインが移動する可能性があるためです。

ブロックの後の特定ポイントにパイプラインが必要な場合は、指定したポイントにあるブロックの HDL ブロック プロパティ [ConstrainedOutputPipeline] を、そのブロックの後の出力パイプラインとして保持するパイプラインの数に設定できます。制約付き出力パイプラインでは追加のパイプラインは挿入されませんが、代わりに、設計内のその特定ポイントに移動したか残ったパイプラインを最優先するための情報が分散型パイプライン方式に提供されます。このオプションは、分散型パイプライン方式によって指定したパイプラインが移動するのを防ぐ場合、または分散型パイプライン方式によってパイプラインをその指定したポイントに移動する必要がある場合にのみ使用します。詳細については、制約付き出力パイプラインを参照してください。

メモ

分散型パイプライン方式がサブシステムで実行されないようにする場合に、設計内のブロックで制約付き出力パイプラインを設定しているときは、サブシステムに対して分散型パイプライン方式を無効にして、ブロックの [ConstrainedOutputPipeline] プロパティをゼロにリセットします。

設計内にある設計上の遅延が分散型パイプライン方式によって移動されないようにするには、[設計上の遅延を保持] を有効にします。設計上の遅延を保持を参照してください。

分散型パイプライン方式の要件

分散型パイプライン方式では、設計に再分布可能な遅延やレジスタが含まれていなければなりません。入力パイプラインや出力パイプラインを使用して、追加のレジスタを挿入できます。このような遅延は手動で挿入するか、分散型パイプライン方式を設定する予定のサブシステムまたはブロックの HDL ブロック プロパティ [InputPipeline] または [OutputPipeline] を設定して挿入できます。詳細については、InputPipelineおよびOutputPipelineを参照してください。

設計がタイミングの要件を満たさない場合は、結果を向上させるために遅延やレジスタを追加してみてください。

分散型パイプライン方式の指定

サブシステムの分散型パイプライン方式、サブシステム内の Stateflow® チャートおよび MATLAB Function ブロックを指定できます。MATLAB Function ブロックの分散型パイプライン挿入を参照してください。

UI を使用して分散型パイプライン方式を指定するには、次の手順に従います。

  • [アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。Subsystem を選択し、[HDL ブロック プロパティ] をクリックします。[DistributedPipelining][on] に設定して [OK] をクリックします。

  • Subsystem を右クリックし、[HDL コード][HDL ブロック プロパティ] を選択します。[DistributedPipelining][on] に設定して [OK] をクリックします。

サブシステムに対して分散型パイプライン方式を有効にするには、コマンド ラインで次のように入力します。

hdlset_param('path/to/subsystem', 'DistributedPipelining', 'on')

メモ

パイプライン レジスタを挿入した場合、最初は出力データが無効の状態になることがあります。初期の無効なサンプルによってテスト ベンチでエラーが発生しないように、これらのサンプルに対して出力チェックを無効にします。詳細については、出力データのチェックを無視 (サンプル数)を参照してください。

分散型パイプライン方式の制限

分散型パイプライン方式の最適化には次の制限があります。

  • ターゲット ハードウェアにおける演算子のレイテンシが分散型パイプライン方式のアルゴリズムで使用されている推定の演算子のレイテンシとは異なる場合があるため、パイプラインの結果がハードウェアで最適ではないことがあります。

  • 次の場合、HDL Coder がパイプライン レジスタを出力位置に生成します。クリティカル パスを低減するためにレジスタが分配されることはありません。

    • 状態、ローカル変数、または静的に解決不能なインデックスをもつ行列が含まれている Stateflow チャート。

  • HDL Coder は、次のブロックの内部ではなく周囲に、パイプライン レジスタを分配します。

    • Model

    • Sum (カスケード実装)

    • Divide

    • Reciprocal

    • Sqrt

    • Sine HDL Optimized and Cosine HDL Optimized

    • Product (カスケード実装)

    • MinMax

    • Upsample

    • Downsample

    • Rate Transition

    • Zero-Order Hold

    • Reciprocal Sqrt (RecipSqrtNewton 実装)

    • Trigonometric Function (CORDIC 近似)

    • Single Port RAM

    • Dual Port RAM

    • Simple Dual Port RAM

    • 浮動小数点 IP (ネイティブ浮動小数点) をもつブロック

  • これらのブロックを含むサブシステムに対して分散型パイプライン方式を有効にすると、HDL Coder はコード生成時に HDL コード生成チェック レポートに警告メッセージを生成します。このメッセージによって、サブシステムで分散型パイプライン方式にとって障壁となるブロックを把握できます。HDL Coder は入れ子にされたサブシステムの周囲にパイプライン レジスタを分配します。

    • M-PSK Demodulator Baseband

    • M-PSK Modulator Baseband

    • QPSK Demodulator Baseband

    • QPSK Modulator Baseband

    • BPSK Demodulator Baseband

    • BPSK Modulator Baseband

    • PN Sequence Generator

    • Repeat

    • HDL Counter

    • LMS Filter

    • Sine Wave

    • Viterbi Decoder

    • Triggered Subsystem

    • Counter Limited

    • Counter Free-Running

分散型パイプライン方式のレポート

分散型パイプライン情報をレポートで見るには、各サブシステムまたはモデル参照のコードを生成する前に、最適化レポートを有効にします。[HDL コード] タブで、[レポート オプション] を選択して、[最適化レポートを生成] を選択します。

[分散型パイプライン] セクションで最適化レポートを生成すると、生成されたモデルおよび [分散型パイプライン方式の概要] で分散型パイプライン方式が有効になっているサブシステムにおける分散型パイプライン方式最適化の効果が分かります。分散型パイプライン方式に失敗した場合、診断メッセージと、分散型パイプライン方式が失敗する原因となったブロックがレポートに示されます。

設計内のブロックの HDL ブロック プロパティ [ConstrainedOutputPipeline] を設定した場合は、[制約付き出力パイプラインの概要] に、要求された制約付き出力パイプラインが表示されます (コード生成時にそれらの要求が満たされている場合)。

分散型パイプライン方式に成功した場合、[分散型パイプライン] セクションの [詳細レポート] に、分散型パイプライン方式の変換を適用する前後のレジスタを比較する表が示されます。

参考文献

Leiserson, C.E, and James B. Saxe. "Retiming Synchronous Circuitry." Algorithmica. Vol. 6, Number 1, 1991, pp. 5-35.

参考

プロパティ

関連する例

詳細