Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

サブシステムと浮動小数点 IP のリソース共有

"リソース共有" とは、HDL Coder™ によって行われる面積の最適化の 1 つです。機能的に等価な複数のリソースが特定され、単一のリソースに置き換えられます。同じ演算を実行するために、データが共有リソース全体で時間多重化されます。リソース共有の仕組みの詳細については、リソース共有を参照してください。

次のガイドラインは、リソース共有最適化を Atomic サブシステムおよび MATLAB Function ブロックなどのサブシステムおよび浮動小数点 IP で効率的に使用する方法を示します。各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

サブシステム共有の一般的な注意事項

ガイドライン ID

3.1.5

重大度

推奨

説明

ProductAdd および Delay ブロックをグループ化して 1 つの DSP スライスにマッピングする場合など同じサブシステムのリソースを共有するには、共有対象のサブシステムは Atomic Subsystem ブロック、Virtual Subsystem ブロック、または MATLAB Function ブロックでなければなりません。

  • 既存のクロック レートまたはそれより高いクロック レートでリソースを共有するかどうかを決定します。

  • Enabled Subsystem の共有はサポートされていません。共有リソースの場合、イネーブル セマンティクスがない Atomic サブシステムまたはバーチャル サブシステムを使用します。

  • 共有するサブシステムの数以上であるSharingFactorを指定します。

    たとえば、サブシステムが 10 個あり、[SharingFactor]5 に設定する場合、HDL Coder はリソース共有をサブシステムの 2 個のインスタンスに実装できません。サブシステムを共有するには、サブシステムを分割して小さい方のサブシステムのインスタンスを共有します。

  • さまざまなサブシステムに指定する [SharingFactor] を確認します。リソース共有最適化は、さまざまなサブシステムの [SharingFactor] の LCM (最小公倍数) に従って、共有リソースをオーバークロックします。

    たとえば、一方の Subsystem では [SharingFactor]5 に指定し、他方の Subsystem では [SharingFactor]7 に指定する場合、リソース共有最適化は 35 に従って共有リソースをオーバークロックします。そのような場合、57 などのように、両方のサブシステムで同じ [SharingFactor] を使用することを推奨します。この計算の詳細については、リソース共有の仕組みを参照してください。

MATLAB Function ブロックと共有するための MATLAB Datapath アーキテクチャの使用

ガイドライン ID

3.1.6

重大度

推奨

説明

HDL Coder は、以下の MATLAB Function ブロックを共有します。

  • Simulink® チェックサムが同一である。チェックサムを確認するには、Simulink.SubSystem.getChecksum を使用します。

  • HDL ブロック プロパティが同一である。

ブロックで以下が使用されていないことを確認します。

  • 永続変数

  • ループのストリーム

  • 出力パイプライン

MATLAB Datapath アーキテクチャを使用して、MATLAB Function ブロック内および MATLAB Function ブロックを超えたリソースを Simulink モデル内の他のブロックと共有できます。このアーキテクチャを使用すると、MATLAB Function ブロックがコード ジェネレーターで通常の Subsystem ブロックと同様に扱われます。この機能により、MATLAB Function ブロックを使用して速度と面積のさまざまな最適化をさらに広く適用できます。MATLAB Datapath アーキテクチャを使用した、MATLAB Function ブロック境界を越えた HDL 最適化を参照してください。

サブシステムの共有

ガイドライン ID

3.1.7

重大度

推奨

説明

HDL Coder は、同じ Simulink チェックサムと同じ HDL ブロック プロパティを持つ Subsystem ブロックを共有できます。

Subsystem ブロックを共有するために、ブロックに含めることができる状態要素は以下のとおりです。

  • Delay

  • Unit Delay

  • Unit Delay Enabled Synchronous

  • Unit Delay Resettable Synchronous

  • Unit Delay Enabled Resettable Synchronous

状態要素は、[初期条件] パラメーターを 0 に設定しなければなりません。

同期セマンティクスをもつ Enabled Subsystem 内のサブシステムの共有はサポートされていません。リソースを共有するには、クラシック セマンティクスをもつ Enabled Subsystem を使用します。

次のブロックまたはブロック実装を含むサブシステムは共有できません。

  • Detect Change

  • Discrete Transfer Fcn

  • HDL FFT

  • HDL FIFO

  • Math Function (conj、hermitian、transpose)

  • 永続変数を含む MATLAB Function ブロック

  • Sqrt

  • カスケード アーキテクチャ (MinMax、Product、Sum)

  • ニュートン法逆数アーキテクチャ

  • Discrete FIR Filter を含む Filter ブロック

  • Communications Toolbox™ ブロック

  • Discrete FIR Filter を除く DSP System Toolbox™ ブロック

  • Stateflow® ブロック

  • 遅延の均衡化でサポートされていないブロック。詳細については、遅延の均衡化の制限を参照してください。

制限

モデルに以下が含まれる場合、Atomic サブシステムのリソース共有により、検証モデルの初期化サイクルで不一致が発生する可能性があります。

  • 入力がゼロである場合に非ゼロの出力を生成する共有サブシステム内のロジック。

  • テスト対象設計 (DUT) サブシステム内の直列構成の共有サブシステム。

浮動小数点 IP のリソース共有

ガイドライン ID

3.1.8

重大度

推奨

説明

複数を共有するには、次の手順に従います。

  • 浮動小数点加算器の ShareAdders をオンに設定する。

  • 浮動小数点乗算器の ShareMultipliers がオンであることを確認する。

  • 他の浮動小数点リソースの ShareFloatingPointIP をオンに設定する。

ネイティブ浮動小数点を使用したモデル化も参照してください。

参考

モデル設定

関連する例

詳細