インテルのみ表示可能 — GUID: ewa1409325970637
Ixiasoft
2.3.1. aocl_mmd_get_offline_info
2.3.2. aocl_mmd_get_info
2.3.3. aocl_mmd_open
2.3.4. aocl_mmd_close
2.3.5. aocl_mmd_read
2.3.6. aocl_mmd_write
2.3.7. aocl_mmd_copy
2.3.8. aocl_mmd_set_interrupt_handler
2.3.9. aocl_mmd_set_status_handler
2.3.10. aocl_mmd_yield
2.3.11. aocl_mmd_shared_mem_alloc
2.3.12. aocl_mmd_shared_mem_free
2.3.13. aocl_mmd_reprogram
インテルのみ表示可能 — GUID: ewa1409325970637
Ixiasoft
1.4.2.2. board_spec.xml ファイルの作成
board_spec.xmlXML ファイルには、ハードウェア・システムを インテル® FPGA SDK for OpenCL™ に記述するために必要なメタデータが含まれています。
board_spec.xmlファイルに含む必要のある型について詳しくは、board_spec.xml ファイルの XML エレメント、属性、およびパラメーターの項を参照してください。board_spec.xmlテンプレートは、カスタム・プラットフォーム・ツールキットの ALTERAOCLSDKROOT/board/custom_platform_toolkit/board_package/hardware/template ディレクトリーで使用可能です。
- 次の XML エレメントと属性を含めるためにboard_spec.xmlファイルを構造化します。
表 3. board_spec.xml ファイルで指定した XML エレメントと属性 エレメント 属性 board version、name device device_model、used_resources global_mem name、max_bandwidth、interleaved_bytes、config_addr、[default]、interface host kernel_config [channels] interface interfaces interface、kernel_clk_reset compile project、revision、qsys_file、generic_kernel、generate_cmd、synthesize_cmd、auto_migrate - boardエレメントでは、ボードのバージョンとアクセラレーター・ボードの名前を指定します。ボード名は、board_spec.xmlファイルが存在するディレクトリー名と一致している必要があります。
重要: ボードバージョンは、カスタム・プラットフォームの開発に使用するSDKのバージョンと一致している必要があります。重要: ボード名は、文字、数字、アンダースコア ( _ )、ハイフン ( - )、もしくはピリオド (.) のみでの組み合わせ ( 例 : a10_ref ) でなければなりません。
- deviceエレメントでは、次の手順を実行してデバイス・モデル・ファイル名を指定します。
- ALTERAOCLSDKROOTがSDKインストーレーションへのパスを参照する ALTERAOCLSDKROOT/share/models/dmディレクトリーに移動します。ディレクトリーは、アクセラレーター・ボード上で使用可能な FPGA リソースを記述するデバイス・モデル・ファイルのリストを含んでいます。
- デバイスがdmディレクトリーにリストされている場合、device_model属性にデバイス・モデル・ファイルの名前を指定します。手順 4 に進みます。
例 : device_model="10ax115s2f45i2sges_dm.xml"
- デバイスがdmディレクトリーにリストされていない場合、またはボードにデバイスモデルがない FPGA を使用している場合は、手順 d~g を実行して新しいデバイスモデルを作成します。
- ALTERAOCLSDKROOT/share/models/dmディレクトリー ( 例 :10ax115s2f45e2lg_dm.xml) からデバイスモデルをコピーします。
- board_spec.xmlファイルが存在するファイルが存在するカスタム・プラットフォーム・サブディレクトリーにデバイスモデルのコピーを保存します。
- ファイル名を変更し、ボードが使用するパーツを記述するために値を変更します。
- board_spec.xmlファイルで、ファイル名とともにdeviceエレメントのdevice_model属性を更新します。
- deviceエレメントでは、used_resources属性でパラメーターを指定して、OpenCL カーネルが存在しないボードデザインが消費する FPGA リソースを記述します。
デザインにすべてのボードロジック周辺に定義されたパーティションが含まれている場合、Fitter レポートの Partition Statistics セクションからデータを抽出することができます。
- 各グローバルメモリーのタイプで、次の情報を指定します。
- メモリータイプの名前。
- 結合された最大グローバルメモリーの帯域幅。
メモリーのデータシートから帯域幅の値が算出できます。
- インテル® FPGA SDK for OpenCL™オフライン・コンパイラーがメモリーバンクをまたいでインターリーブするデータのサイズ。
注: interleaved_bytes = burst_size x width_bytes
- ホモジニアス・メモリー・システムを使用している場合は手順 e に進みます。ヘテロジニアス・メモリー・システムを使用している場合は、グローバルメモリー・タイプごとに ACL Mem Organization Control Qsys コンポーネント (mem_org_mode) のベースアドレスでconfig_addr属性を指定します。
- グローバル・メモリー・タイプをデフォルト設定に選択する場合は、オプションのdefault属性に値 1 を割り当てます。
この属性を含まない場合は、board_spec.xmlファイルで定義されている最初のメモリーがデフォルトメモリーになります。
- interface属性にパラメーターを指定し、各メモリー・インターフェイスの特性を記述します。
- hostエレメントでは、kernel_config属性にパラメーターを指定し、カーネルが存在する場所でオフセットを記述します。OpenCL Kernel Interface Qsys コンポーネントで、kernel_craマスターの観点からオフセットの開始を決定します。
- ボードが直接 OpenCL カーネルから I/O へのアクセスのためのチャネルを提供している場合は、すべてのチャネル・インターフェイスでchannelsエレメントを含めます。interface属性にパラメーターを指定して各チャネル・インターフェイスの特性を記述します。
- OpenCL カーネルに接続し OpenCL カーネルを制御するカーネル・インターフェイスを記述するinterfacesエレメントを含めます。各インターフェイス型 ( つまり、master、irq、およびstreamsource) の 1 つを含めます。
- interface属性にパラメーターを指定して各カーネル・インターフェイスの特性を記述します。
streamsourceインターフェイス型では、スヌーブストリームが使用するクロック名で clock属性も指定します。通常、このクロックはカーネルクロックです。重要: streamsourceカーネル・インターフェイスで指定されたスヌープ・インターフェイス (acl_internal_snoop) の幅を更新します。幅の更新は、board_spec.xmlのglobal_memインターフェイス・エントリーが、デフォルトメモリーで対応する OpenCL Memory Bank Divider コンポーネントからのbank<N> Avalon®メモリーマップド (Avalon-MM) マスターの特性と一致していることを確認します。
- kernel_clk_reset属性でパラメーターを指定し、抽出したカーネルクロックを含めてインターフェイスをカーネル・インターフェイスとしてリセットします。
- interface属性にパラメーターを指定して各カーネル・インターフェイスの特性を記述します。
- compileエレメントを含んで Quartus® Primeコンパイル、レジストレーション、および自動移行を制御するためにその属性を指定します。
下は、board_spec.xmlファイルの XML コード例です。
<?xml version="1.0"?> <board version="16.1" name="a10gx"> <compile project="top" revision="top" qsys_file="none" generic_kernel="1"> <generate cmd="quartus_sh -t scripts/pre_flow_pr.tcl"/> <synthesize cmd="quartus_cdb -t import_compile.tcl"/> <auto_migrate platform_type="a10_ref" > <include fixes=""/> <exclude fixes=""/> </auto_migrate> </compile> <device device_model="10ax115s2f45i2sges_dm.xml"> <used_resources> <alms num="33120"/> <!-- Total ALMs - ALMs available to kernel_system_inst --> <ffs num="132480"/> <dsps num="0"/> <rams num="333"/> </used_resources> </device> <!-- DDR4-2400 --> <global_mem name="DDR" max_bandwidth="19200" interleaved_bytes="1024" config_addr="0x018"> <interface name="board" port="kernel_mem0" type="slave" width="512" maxburst="16" address="0x00000000" size="0x80000000" latency="240" addpipe="1"/> </global_mem> <host> <kernel_config start="0x00000000" size="0x0100000"/> </host> <interfaces> <interface name="board" port="kernel_cra" type="master" width="64" misc="0"/> <interface name="board" port="kernel_irq" type="irq" width="1"/> <interface name="board" port="acl_internal_snoop" type="streamsource" enable="SNOOPENABLE" width="31" clock="board.kernel_clk"/> <kernel_clk_reset clk="board.kernel_clk" clk2x="board.kernel_clk2x" reset="board.kernel_reset"/> </interfaces> </board>