OpenCL* - BSP - サポートセンター

OpenCL* BSP サポートページへようこそ!ここでは OpenCL* BSP のプランニング、デザイン、実装に関する情報を提供するとともに、デバッグのためのヒントを紹介します。

このページは、OpenCL* ボード・サポート・パッケージ (BSP) の開発プロセス (または OpenCL* カーネル / アルゴリズムの設計 / 移行プロセス) に沿って各フェーズを紹介するように構成されています。「リファレンス・デザインの変更」のセクションには、インテル® リファレンス・プラットフォームを独自のカスタム・プラットフォームに変更する方法、およびタイミングの不具合なしにフラットデザインをコンパイルする方法に関するリソースを用意しています。「フロア・プランニング」のセクションでは、デザイン・パーティションの方法および最大動作周波数を達成する方法に関するガイダンスを提供します。「タイミング・クロージャー」のセクションでは、デザイン上でタイミングを収束させ、タイミング・クロージャーを保証しながら、BSP に対して任意のカーネルをコンパイルする技術について説明します。「ハードウェアのテスト」のセクションでは、ボード上でデザインをテストし、結果を検証する方法について手順を紹介します。

「デバッグ」のセクションでは、起こりうる問題をデバッグするためのツールやリソースを提供します。すべてのセクションに、BSP 開発プロセスにおいて役立つドキュメントやトレーニング・コースを紹介しています。

インテル® FPGA SDK for OpenCL™ は、ソフトウェア開発者が、インテル® CPU と FPGA を使用したヘテロジニアス・プラットフォームをターゲットにすることで、アプリケーションをスピードアップできる環境です。インテル® FPGA SDK for OpenCL™ は、インテル® Quartus® Prime 開発ソフトウェアとは別個にダウンロードすることもできます。

BSP 開発を開始する前に、次の手順を必ず実行しておきます。

  1. インテル® FPGA SDK for OpenCL™ とインテル® Quartus® Prime 開発ソフトウェアがインストールされていることを確認します。
  2. OpenCL* リファレンス BSP と一致するツールバージョンが利用できることを確認します。
  3. インテル® Quartus® Prime 開発ソフトウェアのフルライセンスが利用できることを確認します。

カスタム・プラットフォームに合うリファレンス・デザインの選択

インテルでは、次のプラットフォーム向けの OpenCL* リファレンス BSP デザインをサポートしています。また、個々のプラットフォーム向けの OpenCL* BSP 移植ガイドを参照することもできます。

OpenCL* BSP 移植ガイドの手順に従って、ご使用のプラットフォームに合わせたリファレンス・デザインの変更を開始します。デザインの変更が完了した後、最初のカーネルのコンパイルを試すことをお勧めします。通常、Boardtest と呼ばれるカーネルを使用します。これによって BSP のさまざまなインターフェイスをテストします。Boardtest と一般的な BSP のビルド手順に関する情報は、次のガイドに記載されています。

インテル® FPGA SDK for OpenCL™ カスタム・プラットフォーム・ツールキット・ユーザーガイド (PDF)

BSP のビルドについての推奨手順:

  1. Boardtest を「フラット」フローでコンパイルして、タイミング収束済みの「.aocx」ファイルを生成します。
  2. Boardtest の実行により「.aocx」を検証し、このテストに基づきインターフェイス帯域幅の期待値をクロスチェックします。
  3. 「ベース」ビルド向けのフロア・プランニングの作業を開始して、タイミング収束が保証された OpenCL* BSP を作成します。

OpenCL* では、フラット版とベース版という 2 種類のプロジェクトに対してタイミング作業を行う必要があります。フラット版は、パーティションやロジック・ロック・リージョンのないもので、hardware/flat.qsf ファイルを使用して実装します。一方、ベース版は、パーティションやロジックロックを含むもので、hardware/base.qsf ファイルを使用して実装します。インテルでは、速やかに開発を始められるように、まずはタイミングの問題のないフラット版を作成してから、フロア・プランニングの作業を行って、タイミングの問題のないベース版のデザインを作成することを推奨しています。

コンパイルフローの詳細については、AN 824: Intel® FPGA SDK for OpenCL™ Board Support Package Floorplan Optimization Guide の OpenCL* BSP Compilation Flow (英語) のセクションを参照してください。

フラットコンパイルから始めて、BSP のすべてのコンポーネントが自然に配置される場所を把握します (特に、PCIe*、DDR メモリーなど、I/O 接続のある Intellectual Property (IP) ブロック)。

これに関する詳しいガイドラインについては、AN 824: Intel® FPGA SDK for OpenCL™ Board Support Package Floorplan Optimization Guide の Guidelines for OpenCL* BSP Floorplanning (英語) のセクションを参照してください。

詳細については、Intel® Quartus® Prime Standard Edition Handbook Volume 1 (英語) の153ページにある 4. Design Planning for Partial Reconfiguration (4. パーシャル・リコンフィグレーションのデザイン・プランニング) のセクション (英語) も参照できます。

ベースコンパイルでは、freeze_wrapper_inst|kernel_system_inst を含むカーネル上のロジック・ロック・リージョンから始めます。フラットコンパイルとチッププランナーを使用して、BSP ハードウェアのサイズと場所を特定します。ロジック・ロック・リージョンの活用により、kernel_system により多くのリソースを用意するようにします。

これに関する詳しいガイドラインについては、AN 824:  Intel® FPGA SDK for OpenCL* Board Support Package Floorplan Optimization Guide の Guidelines for OpenCL* BSP Floorplanning (英語) のセクションを参照してください。

デザインのタイミング違反を修正するには、IP コア間にパイプライン・ステージの追加が必要となる場合があります。

詳しいガイドラインについては、次のリンクを参照してください。

出力ディレクトリー内の .failing_paths.rpt と .failing_clocks.rpt は、デザインにおける主な不具合の一覧です。パスの一部に共通する不具合がある場合、そのクリティカル・パスの最小または最大遅延の制約を /hardware/top.sdc ファイル内に設定することもできます。

関連する問題については、ナレッジベースのページに次の回避策を用意しています。— インテル® Arria® 10 FPGA で競合するホールドとセットアップの違反についてタイミングを収束させる方法 (英語)

MMD ソフトウェア・ライブラリーは、ホストとアクセラレーション・ボードとの間の基本入出力 (I/O) を実装し、オープン、読み取り、書き込みなどのインターフェイスを提供します。MMD ライブラリー・ドライバーは、Windows* 64 または Linux* 64 形式で格納され、ソースコードはソースフォルダーに保管されます。

詳細については、インテル® FPGA SDK for OpenCL™ カスタム・プラットフォーム・ツールキット・ユーザーガイドの Creating the MMD Library (MMD ライブラリーの作成) のセクション(英語)を参照してください。

OpenCL* ユーティリティーによって、インテル® FPGA SDK for OpenCL™ を使用したボードアクセスを実行できます。これには、aocl install、aocl uninstall、aocl diagnose、aocl program、aocl flash が含まれています。

詳細については、インテル® FPGA SDK for OpenCL™ カスタム・プラットフォーム・ツールキット・ユーザーガイドの Providing Intel® FPGA SDK for OpenCL™ Utilities Support (インテル® FPGA SDK for OpenCL™ ユーティリティー・サポートの提供) のセクション (英語) を参照してください。

ソフトウェア・ユーティリティーと MMD レイヤーを作成した後、ハードウェア・デザインをテストする必要があります。boardtest カーネルを生成して、ボード上で実行する方法が標準的です。

詳細については、インテル® FPGA SDK for OpenCL™ カスタム・プラットフォーム・ツールキット・ユーザーガイドのTesting the Hardware Design (ハードウェア・デザインのテスト) のセクション (英語) を参照してください。

このセクションでは、インテル® FPGA 開発キットまたは独自のカスタムボードの立ち上げの際に発生する問題のトラブルシューティングを行う方法について解説します。

ボードの立ち上げ時に直面する可能性のある既知の問題を確認するには、アプリケーション・ノート「AN 807: Configuring the Intel® Arria® 10 GX FPGA Development Kit for the Intel® FPGA SDK for OpenCL™ (インテル® FPGA SDK for OpenCL™ 向けのインテル® Arria® 10 GX FPGA 開発キットのコンフィグレーション)」の次のセクションを参照してください。

静的ロジックに使用する領域を最小限にとどめて、OpenCL* カーネルにより多くのスペースを残す方法に関するヒントについては、AN824: Intel® FPGA SDK for OpenCL™ Board Support Package Floorplan Optimization Guide (インテル® FPGA SDK for OpenCL™ ボード・サポート・パッケージ・フロアプラン最適化ガイド) (英語) を参照してください。

環境変数の中には、設定することで、ホスト・アプリケーションの実行中により多くのデバッグ情報を入手できるものがあります。これらはインテル® FPGA SDK for OpenCL™ に特有の環境変数で、カスタム・プラットフォーム・デザインでの問題の診断に役立ちます。

次の表に、こうしたすべての環境変数の一覧とその詳細を示します。

環境変数 説明

ACL_HAL_DEBUG

この変数を 1 ~ 5 の値に設定すると、MMD レイヤーと直接インターフェイスする HAL (Hardware Abstraction Layer) からのデバッグ出力を増やすことができます。

ACL_PCIE_DEBUG

この変数を 1 ~ 10000 の値に設定すると、MMD からのデバッグ出力を増やすことができます。この変数設定は、バージョン ID レジスターを正しく読み取れたこと、および UniPHY IP コアがキャリブレーションされていることを確認する場合に役立ちます。

ACL_PCIE_JTAG_CABLE

この変数を設定すると、ケーブル番号を指定するデフォルトの quartus_pgm 引数が上書きされます。デフォルトはケーブル 1 です。複数のインテル® FPGA ダウンロード・ケーブルが存在する場合、この変数を設定することで特定のケーブルを指定できます。

ACL_PCIE_JTAG_DEVICE_INDEX

この変数を設定すると、FPGA デバイスのインデックスを指定するデフォルトの quartus_pgm 引数が上書きされます。デフォルトでは、この変数の値は 1 です。FPGA が JTAG チェーンの中の最初のデバイスではない場合、この値をカスタマイズできます。

ACL_PCIE_USE_JTAG_PROGRAMMING

この変数を設定すると、パーシャル・リコンフィグレーションではなく、JTAG ケーブルを使用して MMD で強制的に FPGA の再プログラミングを行うことができます。

ACL_PCIE_DMA_USE_MSI

この変数は、Windows* 上でダイレクト・メモリー・アクセス (DMA) 転送に MSI を使用する場合に設定します。

CL_CONTEXT_COMPILER_MODE_INTELFPGA

この変数は設定しない、または値を 3 に設定します。OpenCL* ホストランタイムは、必要に応じて FPGA の再プログラミングを行います。これは少なくとも初期化中に 1 回行われます。ホスト・アプリケーションによる FPGA のプログラミングを行わない場合には、この変数の値を 3 に設定します。

OpenCL* デザインではシミュレーション機能がサポートされていないため、シグナルタップ・ロジック・アナライザーを使用することが、これらのデザインをデバッグする最良の方法となります。

カーネルハング、またはメモリー・インターフェイスや aocl diagnose のエラーに関連する問題のあるデザインをデバッグする場合は、シグナルタップ・ロジック・アナライザーの使用を推奨します。

シグナルタップ・ロジック・アナライザーの詳細については、インテル® Quartus® Prime 開発ソフトウェア・プロ・エディションのハンドブック Volume 3 にある Design Debugging with the Signal Tap Logic Analyzer (シグナルタップ・ロジック・アナライザーによるデザインデバッグ) のセクション (英語) を参照してください。

BSP デザインにシグナルタップ・ファイルを追加するには、次の手順に従います。

  1. シグナルタップの GUI を起動し、分析するすべての信号を開きます。
  2. STP ファイルを、インテル® Quartus® Prime 開発ソフトウェアのプロジェクト・ファイルと同じディレクトリーに保存します。
  3. flat.qsf に次のコマンドラインを追加します。
    • set_global_assignment -name ENABLE_SIGNALTAP ON
    • set_global_assignment -name USE_SIGNALTAP_FILE <ファイル名>.stp
    • set_global_assignment -name SIGNALTAP_FILE <ファイル名>.stp
  4. AOCL コマンドラインからカーネルを再コンパイルします。
タイトル 概要

OpenCL* スタートガイド・パート 1 

このビデオでは、Windows* コンピューターを使用して、OpenCL* HelloWorld と OpenCL* 高速フーリエ変換 (FFT) の 2 つのアプリケーションを Cyclone® V SoC 上で実行するための基本手順を説明します。

OpenCL* スタートガイド・パート 2

このビデオでは、Windows* コンピューターを使用して、OpenCL* HelloWorld と OpenCL* FFT の 2 つのアプリケーションを Cyclone® V SoC 上で実行するための基本手順を説明します。

OpenCL* スタートガイド・パート 3

このビデオでは、Windows* コンピューターを使用して、OpenCL* HelloWorld と OpenCL* FFT の 2 つのアプリケーションを Cyclone® V SoC 上で実行するための基本手順を説明します。

OpenCL* スタートガイド・パート 4

このビデオでは、Windows* コンピューターを使用して、OpenCL* HelloWorld と OpenCL* FFT の 2 つのアプリケーションを Cyclone® V SoC 上で実行するための基本手順を説明します。

OpenCL* スタートガイド・パート 5

このビデオでは、Windows* コンピューターを使用して、OpenCL* HelloWorld と OpenCL* FFT の 2 つのアプリケーションを Cyclone® V SoC 上で実行するための基本手順を説明します。

カスタムの Verilog モジュール / デザイン を OpenCL* ライブラリーとしてパッケージする方法 (英語)

このビデオでは、この機能を使用して、カスタムの処理ブロック (RTL) を OpenCL* カーネルコードに含めることができる理由を説明します。make ファイル、config ファイルなどのデザイン例について説明し、コンパイルフローを説明します。また、このビデオではデザイン例のデモもご覧になれます。

インテル® SoC FPGA 上の OpenCL* (Linux* ホスト) – パート 1: ツールのダウンロードとセットアップ

このビデオでは、インテル® SoC FPGA を対象とする OpenCL* カーネルとホストコードの開発に必要なツールのダウンロード、インストール、および設定の方法について紹介します。

インテル® SoC FPGA 上の OpenCL* (Linux* ホスト) – パート 2: エミュレーターによるベクトル加算のデザイン例の実行

このビデオでは、インテルの OpenCL* に組み込まれているエミュレーターを対象として、サンプルの OpenCL* アプリケーションのダウンロード方法とコンパイル方法を紹介します。

インテル® SoC FPGA 上の OpenCL* (Linux* ホスト) – パート 3: SoC FPGA 向けのカーネルおよびホストコードのコンパイル

このビデオでは、Cyclone® V SoC FPGA の FPGA とプロセッサーを対象として、OpenCL* カーネルおよびホストコードのコンパイル方法について紹介します。

インテル® SoC FPGA 上の OpenCL* (Linux* ホスト) – パート 4: ランタイム環境のセットアップ

このビデオでは、OpenCL* サンプルを動作させるための Cyclone® V SoC ボードのセットアップ方法、およびボード上でホストコードとカーネルを実行する方法について紹介します。

インテル® FPGA ボード用の OpenCL* ボード・サポート・パッケージの開発支援には、以下の認定サービス・プロバイダーをお勧めします。認定プロバイダー各社には、インテル® FPGA ボード用の高品質の OpenCL* ボード・サポート・パッケージ、ドライバー、設計移行に関して豊富な開発実績があります。

Terasic Inc 社

ReFLEX CES 社

その他のテクノロジー

OpenCL および OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用しています。