ベクトル データ型入力をもつブロックの分散型パイプライン方式レジスタの挿入
分散型パイプライン方式は、機能的な動作を維持しながら、設計内で既存の遅延を移動させることでクリティカル パスを減少させる速度の最適化です。このガイドラインは、ベクトル入力に最適化を効果的に使用する方法を示します。
各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。
ガイドライン ID
3.2.3
重大度
情報
説明
ベクトル型を使用した分散型パイプライン方式に使用されるブロック
特定の設定を指定することで、3
より大きいサイズをもつベクトルを入力する場合に、これらのブロックのパイプライン レジスタを挿入するために分散型パイプライン方式の最適化を適用できます。詳細については、各ブロック ページの [HDL コード生成] セクションを参照してください。
加算器: Add、Subtract および Sum of Elements
乗算器: Gain、Product および Product of Elements
ブロック設定と要件
このブロックの HDL ブロック プロパティで、[Architecture] を次のように設定します。
加算器、乗算器、MinMax ブロックの場合は
Tree
またはLinear
。分散型パイプライン方式レジスタの挿入は、Cascade
アーキテクチャをサポートしません。Dot Product の場合は
Linear
。分散型パイプライン方式レジスタの挿入は、このブロックのTree
アーキテクチャをサポートしません。
[HDL ブロック プロパティ] ダイアログ ボックスの [InputPipeline] および [OutputPipeline] プロパティを使用するか、Delay ブロックを手動で挿入し、パイプライン ステージ数を指定します。
この最適化を適用する Subsystem で [DistributedPipelining] を有効にします。
分散型パイプライン方式のレポートを開きます。
生成されたモデルを開いて調べます。
要素のベクトル和の分散型パイプライン方式の例
この例では、ベクトル入力を受け入れる Sum of Elements ブロックの出力でパイプライン レジスタを分散する方法を示します。
open_system('hdlcoder_distributed_pipelining_soe') set_param('hdlcoder_distributed_pipelining_soe','SimulationCommand','Update')
モデルで移動すると、Sum of Elements ブロックの 3 つのパイプライン ステージが表示されます。
open_system('hdlcoder_distributed_pipelining_soe/DUT/Add')
Sum of Elements ブロックの出力で 3 つの Delay ブロックが追加されていることがわかります。分散型パイプライン方式を使用して、遅延を分散させることができます。
1. Sum of Elements ブロックの [Architecture] を Tree
に設定します。
hdlset_param('hdlcoder_distributed_pipelining_soe/DUT/Add/Add', ... 'Architecture','Tree')
2.Add Subsystem で [DistributedPipelining] を有効にします。
hdlset_param('hdlcoder_distributed_pipelining_soe/DUT/Add', ... 'DistributedPipelining','On')
3.DUT サブシステムの HDL コードを生成します。
makehdl('hdlcoder_distributed_pipelining_soe/DUT')
4.コード生成レポートを開き、分散型パイプライン方式の最適化の効果を確認します。
5.変換の効果とパイプライン レジスタの分散状態を確認するには、生成されたモデルを開き、Add Subsystem に移動します。
load_system('gm_hdlcoder_distributed_pipelining_soe') set_param('gm_hdlcoder_distributed_pipelining_soe','SimulationCommand','Update') open_system('gm_hdlcoder_distributed_pipelining_soe/DUT/Add')