インテル® FPGA SDK for OpenCL™プロ・エディション: プログラミング・ガイド

ID 683846
日付 4/01/2019
Public
ドキュメント目次

12.1.1.7.1. ATTRIBUTESを指定するXML要素

インテル® FPGA SDK for OpenCL™ ライブラリーのRTLモジュールXML仕様ファイルには、モジュールの特性を設定するために指定できるXML要素がATTRIBUTESにあります。
表 6.  RTLモジュールのXML仕様ファイルにおけるATTRIBUTES要素に関連するXML要素
重要: IS_STALL_FREEおよびEXPECTED_LATENCYを除き、すべての要素には安全な値があります。属性に指定する値に確信がない場合は安全な値を設定してください。安全な値を使用するライブラリーでカーネルをコンパイルすると、機能的なハードウェアをもたらします。ただし、ハードウェアは実際のサイズよりも大きい場合があります。
XML要素 説明
IS_STALL_FREE

インテル® FPGA SDK for OpenCL™オフライン・コンパイラーに、RTLモジュール周囲のすべてのストールロジックを削除するように指示します。

IS_STALL_FREE"yes"に設定し、モジュールでストールを生成しないこと、および受信ストールの適切な処理ができないことを示します。モジュールはストールの入力を単純に無視します。IS_STALL_FREE"no"に設定する場合、モジュールはストールおよび有効な信号をすべて適切に処理する必要があります。

注: IS_STALL_FREE"yes"に設定する際は、IS_FIXED_LATENCY"yes"に設定する必要があります。また、RTLモジュールが内部状態がを持つ場合、ivalid=0入力を適切に処理する必要があります。

不正なIS_STALL_FREEを設定すると、ハードウェに不正確な結果をもたらします。

IS_FIXED_LATENCY

RTLモジュールのレイテンシーが固定されているかどうかを示します。

RTLモジュールが常に既知のクロックサイクル数で出力を計算する場合は、IS_FIXED_LATENCY"yes”に設定します。EXPECTED_LATENCY要素に指定する値は、クロックサイクル数を指定します。

IS_FIXED_LATENCYの安全な値は"no”です。IS_FIXED_LATENCY="no"を設定する際に、EXPECTED_LATENCYの値は少なくとも1でなければなりません。

注: 特定のモジュールでは、IS_FIXED_LATENCY"yes"にし、IS_STALL_FREE"no"に設定することができます。このようなモジュールは、固定のクロックサイクル数で出力を生成し、ストール信号を適切に処理します。
EXPECTED_LATENCY

RTLモジュールの予想されるレイテンシーを指定します。

IS_FIXED_LATENCY"yes"に設定すると、EXPECTED_LATENCYの値は、モジュールにあるパイプラインのステージ数を示します。この場合、この値はモジュールの正確なレイテンシーに設定する必要があります。正確に設定されていない場合、オフライン・コンパイラーは不正確なハードウェアを生成します。

レイテンシーが可変のモジュールにおいては、オフライン・コンパイラーはこのモジュール周辺のパイプラインを、指定したEXPECTED_LATENCYの値でバランスを取ります。ストールをサポートし、ireadyなどの信号を必要とするモジュールにおいては、EXPECTED_LATENCYの値は最低でも1に設定する必要があります。指定した値と実際のレイテンシーは異なることがあり、パイプラインのストール数に影響を与える場合があります。 ただし、生成されるハードウェアは正しいものです。

CAPACITY

このモジュールが同時に処理できる複数の入力の数を指定します。IS_STALL_FREE="no"およびIS_FIXED_LATENCY="no"も設定する場合は、CAPACITYの値を指定する必要があります。それ以外の場合はCAPACITYの値を指定する必要はありません。

CAPACITYEXPECTED_LATENCYよりもわずかでも小さい場合、オフライン・コンパイラーは必要に応じて、容量のバランスをとるFIFOバッファーをこのモジュールの後に自動的に挿入します。

CAPACITYの安全な値は1です。

HAS_SIDE_EFFECTS RTLモジュールに副作用があるかどうかを示します。内部状態のあるモジュールや外部メモリーと通信するモジュールは、副作用をともなうモジュールの例になります。

HAS_SIDE_EFFECTS"yes"に設定し、モジュールに副作用があることを示します。HAS_SIDE_EFFECTS"yes"に指定すると、最適化を行う際に副作用のあるモジュールへの呼び出しは削除されません。

副作用があり、ストールのないモジュール (IS_STALL_FREE="yes"でありHAS_SIDE_EFFECTS="yes"のモジュール) は、無効なデータを受け取る可能性があるため、ivalid=0の入力を適切に処理する必要があります。

HAS_SIDE_EFFECTSの安全な値は"yes"です。

ALLOW_MERGING オフライン・コンパイラーに、RTLモジュールの複数のインスタンスをマージするよう指示します。

ALLOW_MERGING"yes"に設定し、モジュールの複数のインスタンスのマージを可能にします。インテルでは、ALLOW_MERGING"yes"に設定することを推奨しています。

ALLOW_MERGINGの安全な値は、"no"です。

注: HAS_SIDE_EFFECTS="yes"でモジュールをマークしてもマージを防ぐことはできません。
PARAMETER

RTLモジュールのパラメーター値を指定します。

PARAMETERの属性

  • name—RTLモジュールのパラメーター名を指定します。
  • value—パラメーターに10進数の値を指定します。
  • type—システム・パラメーターに、RTLモジュールのパラメーター値として使用される値を指定します。次のシステム・パラメーター名をtype属性で使用できます。
    • bspaddresswidth—ボード・サポート・パッケージのOpenCLグローバルメモリーにコンフィグレーションされたメモリー範囲のアドレスを指定するために必要な、Avalonメモリーバス幅を指定します。
注: RTLモジュールのパラメーター値は、value属性またはtype属性を使用し指定できます。