さまざまなブロックのリソース共有設定
"リソース共有" とは、HDL Coder™ によって行われる面積の最適化の 1 つです。機能的に等価な複数のリソースが特定され、単一のリソースに置き換えられます。同じ演算を実行するために、データが共有リソース全体で時間多重化されます。リソース共有の仕組みの詳細については、リソース共有を参照してください。
次のガイドラインは、リソース共有最適化を Add および Product などのブロックで効率的に使用する方法を示します。各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。
Add ブロックのリソース共有
ガイドライン ID
3.1.1
重大度
推奨
説明
複数の Add ブロックを共有するには、次の手順に従います。
[加算器の共有] 設定を選択します。
[加算器共有の最小ビット幅] を
0
のままにします。既存のクロック レートまたはそれより高いクロック レートでリソース共有を実行するかどうかを決定します。高いクロック レートを使用するには、
1
より大きい [オーバーサンプリング係数] を指定します。ベクトル入力または出力をもつ Add ブロックについてはStreamingFactorを指定します。
スカラー入力または出力をもつ Add ブロックについてはSharingFactorを指定します。
Add ブロックの入力語長が一致していることを確認します。
たとえば、次の図は、[SharingFactor] が
3
である Subsystem 内に、3 つの Add ブロックが含まれるモデルを示しています。Add ブロックを共有するには、入力語長を一致させるために [出力データ型] がint16
に設定されている Data Type Conversion ブロックを挿入しなければなりません。
Gain ブロックのリソース共有
ガイドライン ID
3.1.2
重大度
推奨
説明
設計の複数の Gain ブロックを共有する場合、最適化によってシリアル化および逆シリアル化ロジックが共有リソースに挿入されます。大量のリソースを共有していない場合、この追加ロジックは面積オーバーヘッドとなります。したがって、共有する大量の Gain ブロックが設計に含まれていない場合、リソース共有最適化を無効にすることを推奨します。複数の Gain ブロックを共有するには、次の手順に従います。
複数の Gain ブロックを共有するには、次の手順に従います。
Gain ブロックの実装方法を決定します。HDL Coder は Gain ブロックを以下の場合に共有しません。
[ConstMultiplierOptimization] パラメーターが
csd
またはfcsd
に設定されている。[ゲイン] パラメーターは 2 のべき乗です。
どちらの場合も、コード ジェネレーターは乗算器の演算をシフトおよび加算または減算演算で置換するためにキャスト演算を使用するため、共有が失敗します。さらに、[ゲイン] パラメーターが
0
または1
である場合、リソース共有には追加のロジックは必要ありません。ベクトル入力または出力をもつ Gain ブロックについてはStreamingFactorを指定します。
スカラー入力または出力をもつ Gain ブロックについてはSharingFactorを指定します。
既存のクロック レートまたはそれより高いクロック レートでリソース共有を実行するかどうかを決定します。高いクロック レートを使用するには、
1
より大きい [オーバーサンプリング係数] を指定します。Gain ブロックの
DSPStyle
ブロックのプロパティを指定する場合、同じ合成属性の設定を使用します。HDL Coder は、合成属性の設定が異なる乗算器を共有しません。
Product ブロックのリソース共有
ガイドライン ID
3.1.3
重大度
推奨
説明
複数の Product ブロックを共有するには、次の手順に従います。
Xilinx® デバイスをターゲットとする場合、
18
を [乗算器分割のしきい値] として指定し、Intel® デバイスをターゲットとする場合、25
をしきい値として指定します。この設定により、幅広いビット幅をもつ乗算器のリソース共有をさらに行うことができるため、FPGA での DSP の使用が削減されます。語長の異なる Product ブロックを共有する場合、[乗算器拡張のしきい値] を指定します。乗算器拡張しきい値は、HDL Coder が他の乗算器と共有するために乗算器を拡張する最大の語長です。
[乗算器の共有] 設定を有効に、[乗算器共有の最小ビット幅] を
0
にしておきます。ベクトル入力または出力をもつ Product ブロックを含むサブシステムについてはStreamingFactorを指定します。
スカラー入力または出力をもつ Product ブロックを含むサブシステムについてはSharingFactorを指定します。
Product ブロックへの入力のいずれかが定数である場合、Product ブロックの代わりに Gain ブロックを使用します。Gain ブロックの [ゲイン] パラメーターとして定数値を使用します。浮動小数点データ型を
Native Floating Point
モードで使用する場合、HDL Coder は、コード生成中に Product ブロックを Gain ブロックに自動的に変換します。詳細については、HDL Coder での定数演算の簡略化と設計の複雑度の低減を参照してください。既存のクロック レートまたはそれより高いクロック レートでリソース共有を実行するかどうかを決定します。高いクロック レートを使用するには、
1
より大きい [オーバーサンプリング係数] を指定します。Product ブロックの
DSPStyle
ブロックのプロパティを指定する場合、同じ合成属性の設定を使用します。HDL Coder は、合成属性の設定が異なる乗算器を共有しません。
Multiply-Add ブロックのリソース共有
ガイドライン ID
3.1.4
重大度
推奨
説明
複数の Multiply-Add ブロックを共有するには、次の手順に従います。
[Multiply-Add ブロックの共有] 設定を有効に、[Multiply-Add ブロック共有の最小ビット幅] を
0
にしておきます。既存のクロック レートまたはそれより高いクロック レートでリソース共有を実行するかどうかを決定します。高いクロック レートを使用するには、
1
より大きい [オーバーサンプリング係数] を指定します。SharingFactorを指定します。