English | 日本語
概要 | 演習 1: SDSoC 開発環境の概要 | 演習 2: パフォーマンスの見積もり | 演習 3: アプリケーション コードの最適化 | 演習 4: 指示子を使用したアクセラレータの最適化 | |
演習 5: タスク レベルのパイプライン | 演習 6: デバッグ | 演習 7: ハードウェア デバッグ | 演習 8: エミュレーション | 演習 9: GitHub からのサンプルのインストール |
この演習では、プロジェクトを作成し、トレースをオンにし、アプリケーションを実行し、トレース結果を表示して確認する方法を手順を追って説明します。このチュートリアルでは、ホスト PC が直接 Zynq-7000 ボードに接続されており、ボードはザイリンクス ZC702 ボードであると想定しています。このチュートリアルは、ほかのボードおよびコンフィギュレーションにも適用できますが、詳細な手順は少し違う可能性もあります。このチュートリアルでは、既に SDx IDE をインストールして GUI を起動してワークスペースを選択したものと想定して説明します。
📌 注記: このチュートリアルは、ZC702 ボードがなくても終了できます。SDx プロジェクトを作成する際に、推奨されている [Matrix Multiplication] テンプレートが見つからない場合は、ボードと使用可能なテンプレートの 1 つを選択してください。たとえば、より小型の Zynq-7000 デバイスを含む MicroZed ボードなどのボードの場合、使用可能なテンプレートに [Matrix Multiplication (area reduced)] アプリケーションがリストされます。このチュートリアルの学習目標は、どのアプリケーションでも達成できるようになっています。
新規プロジェクトの作成方法、SDSoC トレース機能を有効にするようにプロジェクトを設定する方法、プロジェクトのビルド方法、ボード上でのアプリケーションの実行方法などを学ぶことができます。
手順 1: 新規プロジェクトの作成
-
[File] → [New] → [SDx Project] をクリックします。
-
[Project Type] ページでは、デフォルトで [Application Project] がオンになっています。[Next] をクリックします。
-
Create a New SDx Project ページで、[Project name] に
mmult_trace
と入力し、[Next] をクリックします。 -
[Platform] ページで [zc702] を選択し、[Next] をクリックします。
📌 注記: ZC702 ボード以外を使用している場合は、適切なプラットフォームを選択します。
-
[System Configuration] に [Standalone OS] を選択します。
-
[Available Templates] で [Matrix Multiplication Data Size] を選択し、[Finish] をクリックします。
-
[Project Explorer] ビューで矢印アイコンをクリックしてさまざまなフォルダーを展開表示し、
mmult.cpp
ファイルを開きます。 -
テスト シンボル NUM_TESTS の数値を 256 から 10 に変更し、ファイルを保存して閉じます。
-
[SDx Project Settings] ([mmult_trace] タブ) の [Hardware Functions] セクションで mmult_accel がハードウェアにインプリメントされるようマークされていることを確認します。
手順 2: [Options] セクションでトレース機能をオンにしてプロジェクト設定を変更
[Project Settings] ウィンドウで [Enable event tracing] をオンにします。
手順 3: プロジェクトのビルド
[Build] ボタンをクリックし、プロジェクトをビルドします。これには多少時間がかかります。
Vivado HLS ですべてのハードウェア関数がインプリメントされ、Vivado IP インテグレーター デザインが作成されると、コンソールに Inserted # hardware monitor cores
というメッセージが表示されます。このメッセージは、デザインでトレース機能がイネーブルになったことと、自動挿入されたハードウェア モニター コアの数を示します。
手順 4: ボードでのアプリケーションの実行
-
ビルドが終了したら、[Project Explorer] ビューでプロジェクトを右クリックし、[Run As] → [Trace Application (SDx Application Debugger)] をクリックします。
📌 注記: [Debug As] をオンにするとブレークポイントが有効になるので、オンにしないようにしてください。プログラムの実行がブレークポイントで停止すると、ソフトウェアは停止しますが、ハードウェアとタイムスタンプに使用されるトレース タイマーは実行し続けるので、タイミングが正確なものになりません。
[Trace Application (SDx Application Debugger)] をクリックすると、ボードにビットストリームおよびアプリケーション ELF がダウンロードされ、アプリケーションが開始されて、トレース データの収集が開始されてアプリケーションが終了するまで収集されます。アプリケーションが終了するかトレース データの収集中にエラーが発生すると、収集されたデータが表示されます。
📌 注記: トレース データが正しく収集されるためには、アプリケーションが正常に終了する必要があります。ハードウェアまたはソフトウェアが停止したり、Linux カーネルがクラッシュするなど、アプリケーションが正常に終了しなかった場合、トレース データが正しく収集されない可能性があります。
-
アプリケーションが終了すると、すべてのトレース データが収集され、表示されます。イベントのテキスト リスト (下の図で黄色で囲まれたエリア) とイベント タイムライン (下の図で紫色で囲まれたエリア) の 2 つのエリアがあります。これらのエリアは、同じ情報を示します。テキスト リストには、イベントが時間の降順に表示されます。イベント タイムラインは、デザインの各トレース ポイント (トレースされたモニター コアまたはソフトウェアの領域) が複数の軸で表示されます。
アプリケーションの 10 回の反復が繰り返されたイベント グループとして示されているのがわかります。オレンジのイベントはソフトウェア イベント、緑のイベントはアクセラレータ イベント、青のイベントはデータ転送イベントです。別の色で指定されたトランザクションは、[Show Legend] アイコンをクリックしても確認できます。
次のような [State Transition Visualizer] ダイアログ ボックスが開きます。
-
イベント タイムラインのトレース ポイントの名前に省略記号 (...) が付いている場合、名前が表示されているグレーのエリアとタイムラインが表示されている白のエリアの境界 (適切な位置にカーソルを置くと境界線が赤色に変わる) をクリックして右にドラッグすると、名前のエリアを広げることができます。
-
イベントのいずれかにカーソルを置くと、ツール ヒントに各トレースの詳細情報が表示されます。次の図に、最初のアクセラレータ イベントを示します。このイベントは、Vivado HLS でハードウェアにインプリメントするよう選択した
mmult_accel
関数の開始/停止に対応します。開始時間は 0.002122960 秒 (2,122 ns) で、停止時間は 0.003850640 秒 (3,850 ns) です。イベントの期間 (この場合はアクセラレータの実行時間) は 0.001727680 秒 (1,727 ns) です。
手順 5: Linux プロジェクトのトレース
新規プロジェクトの作成方法、SDx トレース機能を有効にするようにプロジェクトを設定する方法、プロジェクトのビルド方法、ボード上でのアプリケーションの実行方法、トレース データの確認方法などを学ぶことができます。
-
新しいプロジェクトを作成します。
-
[File] → [New] → [SDx Project] をクリックします。
-
[Project Type] ページでは、デフォルトで [Application Project] がオンになっています。[Next] をクリックします。
-
New Project ウィザードで、[Project name] に
mmult_linux_trace
と入力し、[Next] をクリックします。 -
ハードウェア プラットフォームに [zc702] を選択します。[Next] をクリックします。
-
[System Configuration] に [Linux] を選択します。
-
[Next] をクリックします。
-
[Available Templates] で [Matrix Multiplication Data Size] を選択し、[Finish] をクリックします。
-
[Project Explorer] ビューで矢印アイコンをクリックしてさまざまなフォルダーを展開表示し、src フォルダーの下の
mmult.cpp
ファイルを開きます。 -
テスト シンボル NUM_TESTS の数値を 256 から 10 に変更し、ファイルを保存して閉じます。
-
[SDx Project Settings] ([mmult_linux_trace] タブ) の [Hardware Functions] セクションで mmult_accel がハードウェアにインプリメントされるようマークされていることを確認します。
-
-
プロジェクト設定を変更し、SDx IDE でトレース機能をイネーブルにします。
[SDx Project Settings] の [Options] セクションの [Enable event tracing] をオンにします。 -
プロジェクトをビルドします。
[Build] ボタンをクリックし、プロジェクトをビルドします。これには多少時間がかかります。Vivado HLS ですべてのハードウェア関数がインプリメントされ、Vivado IP インテグレーター デザインが作成されると、コンソールに
Inserted # hardware monitor cores
というメッセージが表示されます。このメッセージは、デザインでトレース機能がイネーブルになったことと、自動挿入されたハードウェア モニター コアの数を示します。 -
ボード上でアプリケーションを実行します。
-
Linux を使用したパフォーマンス見積もりの使用 の方法に従って [Project Explorer] ビューで Linux TCF エージェントを設定します。
-
[Project Explorer] ビューでプロジェクトを右クリックし、[Run As] → [Trace Application (SDx Application Debugger)] をクリックします。
📌 注記: [Debug As] をオンにするとブレークポイントが有効になるので、オンにしないようにしてください。プログラムの実行がブレークポイントで停止すると、ソフトウェアは停止しますが、ハードウェアとタイムスタンプに使用されるトレース タイマーは実行し続けるので、タイミングが正確なものになりません。
[Trace Application (SDx Application Debugger)] をクリックすると、イーサネット TCF エージェント接続を介して ELF ファイルがダウンロードされ、アプリケーションが開始して、トレース データの収集が開始されてアプリケーションが終了するまで収集されます。アプリケーションが終了するかトレース データの収集中にエラーが発生すると、収集されたデータが表示されます。
📌 注記: トレース データが正しく収集されるためには、アプリケーションが正常に終了する必要があります。ハードウェアまたはソフトウェアが停止したり、Linux カーネルがクラッシュするなど、アプリケーションが正常に終了しなかった場合、トレース データが正しく収集されない可能性があります。
-
トレース データを確認します。アプリケーションが終了すると、すべてのトレース データが収集され、表示されます。
手順 6: トレースの表示
- アプリケーションを実行してトレース データを収集すると、トレースのアーカイブが作成され、プロジェクトのビルド ディレクトリ
<build_config>/_sds/trace
に保存されます。 - このトレース アーカイブを開くには、右クリックして [Import and Open AXI Trace] をクリックします。
_sds/trace
フォルダーには、metadata
およびsdsoc_trace.tcl
も含まれます。これらのファイルはビルド中に生成され、トレース データを抽出し、トレース可視化アーカイブを作成するために使用されます。これらのファイルを削除または変更すると、トレース データを収集できなくなり、クリーンアップおよびビルドを実行して再生成する必要があります。
Copyright© 2019-2019 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。