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

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

12.1.1.7.2. INTERFACEを指定するXML要素

インテル® FPGA SDK for OpenCL™ ライブラリーのRTLモジュールXML仕様ファイルには、RTLモジュールのインターフェイスの側面を指定するために定義できるXML要素がINTERFACEにあります (Avalon®-STインターフェイスなど)。
表 7.  RTLモジュールXML仕様ファイルのINTERFACE要素に関連のある必須XML要素
XML要素 説明
INPUT

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

INPUT属性

  • port—RTLモジュールのポート名を指定します。
  • width—ポート幅をビットで指定します。

    AOCLは、OpenCLのデータ型に対応する幅のみをサポートします。つまり8 (uchar)、16、32、64、128、256、512、1024 (long16) ビットのみをサポートします。

    注: type3ベクトルのサイズは4 x sizeof(type) のため、有効サイズの24、48、96、192ビットはサポートされていないという印象を与えます。

入力パラメーターは連結されて入力ストリームを形成します。

構造体や配列などの集約データ構造は、入力パラメーターとしてサポートされていません。

出力

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

OUTPUT属性

  • port—RTLモジュールのポート名を指定します。
  • width—ポート幅をビットで指定します。

    SDKは、OpenCLのデータ型に対応する幅のみをサポートします。つまり、8 (uchar)、16、32、64、128、256、512、1024 (long16) ビットのみのサポートです。

    注: type3ベクトルのサイズは4 x sizeof(type) のため、有効サイズの24、48、96、192ビットはサポートされていないという印象を与えます。

入力ストリームからの戻り値は、出力ストリームの出力パラメーターを介し送信されます。

構造体や配列などの集約データ構造は、入力パラメーターとしてサポートされていません。

RTLモジュールが外部メモリーと通信する場合は、XML要素を追加し含める必要があります。

<MEM_INPUT port="m_input_A" access="readonly"/>
<MEM_INPUT port="m_input_sum" access ="readwrite"/>
<AVALON_MEM port="avm_port0" width="512" burstwidth="5" optype="read" buffer_location=""/>
表 8.  外部メモリーアクセスをサポートするために追加するXML要素
XML要素 説明
MEM_INPUT

RTLモジュールへのポインター入力を記述します。

MEM_INPUT属性

  • port—ポインター入力の名前を指定します。
  • access—RTLモジュールにおけるこのポインターの使用方法をインテル FPGA SDK for OpenCLオフライン・コンパイラーに指定します。有効なアクセスの値は、readonlyreadwriteです。RTLモジュールがこのポインターでのみ書き込む場合は、readwriteaccessに割り当てます。

外部メモリーへのポインターはすべて64ビットである必要があるため、MEM_INPUTに関連付けられるwidth属性はありません。

AVALON_MEM

RTLモジュールのAvalon-MMインターフェイスを宣言します。

AVALON_MEM属性

  • port—RTLモジュールの対応するポート名のルートを指定します。例えばportavm_port0_の値を持っている場合、RTLモジュールのAvalon-MMインターフェイスのポート名はすべて、avm_port0_で始まります。
  • width—データ幅を指定します。この値は、アクセラレーター・ボードのboard_spec.xmlファイルの対応する幅の値と一致している必要があります。board_spec.xmlファイルでは、幅の値はglobal_meminterface要素で指定されています。

    詳細は、 インテル® FPGA SDK for OpenCL™ カスタム・プラットフォーム・ツールキット・ユーザーガイドBoard_spec.xmlファイル内のXML要素、属性、およびパラメーターにあるglobal_memの章を参照ください。

  • burstwidth—バーストサイズを表すために必要なビット数を指定します。burstwidth = log(maxburst) +1を使用しバーストサイズを計算します。このmaxburstは、board_spec.xmlファイルで指定された対応する最大バーストサイズです。例えばmaxburst=16の場合、burstwidth=5 です。
  • optype— Avalon-MMポートが、外部メモリーから読み取り (read) を行うか書き込み (write) を行うかを指定します。optypeにはreadまたはwriteのいずれかしか割り当てることができません。
  • Buffer_location—異種メモリーをサポートします。異種メモリー・コンパイル・フローは現在検証されていないため、この属性は空白のままにしてください。

上のコード例で定義されたAVALON_MEM要素に対応するRTLモジュールポートは次のようになります。

output         avm_port0_enable,
input  [511:0] avm_port0_readdata,
input          avm_port0_readdatavalid,
input          avm_port0_waitrequest,
output [31:0]  avm_port0_address,
output         avm_port0_read,
output         avm_port0_write,
input          avm_port0_writeack,
output [511:0] avm_port0_writedata,
output [63:0]  avm_port0_byteenable,
output [4:0]   avm_port0_burstcount,

MEM_INPUTで指定するポインターとAVALON_MEMで指定するAvalon-MMインターフェイス間に、想定の関係はありません。RTLモジュールは1つのポインターを使用し、0から複数のAvalon-MMインターフェイスのアドレスを指定することができます。