このブログ エントリは、Vitis™ のアクセラレーション プラットフォームを作成するためのシンプルなガイドの一部です。 このエントリでは、Vivado® Design Suite でプラットフォームを有効にして、Vitis でアクセラレーション対応にする方法について説明します。
プラットフォームは、ソフトウェア機能を高速化するための柔軟性を提供するために強化したい、既に確立された Vivado の成熟したデザインである場合があります。 または、プラットフォームは、アクセラレーションに必要なトポロジのみを含む単純な Vivado デザインにすることもできます。 ポイントは、プラットフォームで使用される Vivado デザインが XNUMX 回限りのデザインである必要がないことです。 より有機的で、デザインを変更する必要がある場合は変更する必要があります。
これは、Vitis のアクセラレーション プラットフォームを作成するための簡易ガイドの一部です。 他のパーツは、以下のリンクで見つけることができます。
パート2: PetaLinuxでのAccelerationPlatformのソフトウェアプロジェクトの作成
パート3: VitisでのAcceleratedPlatformのパッケージ化
パート4: Vitisでのカスタムアクセラレーションプラットフォームのテスト
導入:
ソフトウェア コンポーネントを高速化する場合、これを CPU からプログラマブル ロジック内の高速化された IP にオフロードします。 Vitis ツールは、アクセラレーションされた IP と CPU の間のデータ ムーバーの追加を処理します。 ただし、ユーザーからの入力が必要です。 SoC と Accelerated IP からの接続に使用するインターフェイスを認識する必要があります。 また、どのクロック/リセットが使用可能かを知る必要があります。
また、CPU と高速化された IP の間でデータのチャンクを送信するため、割り込みが必要です。 基本的にはこれで終わりです。他にも Vitis ツールに伝えなければならないことがいくつかありますが、これについては後で説明します。
それでは、始めましょう。 Vivado を起動してプロジェクトを作成します。 ZCU104 ボードを使用しています。 ただし、次の手順は、開発ボードかカスタム ボードかに関係なく、すべての Zynq® UltraScale™ ボードに共通です。
ハードウェア デザインの作成:
ブロック デザイン (BD) を作成します。 ここでの名前は、プラットフォームに名前を付けるために使用する名前と同じになります。
IP カタログから Zynq UltraScale Processor Subsystem IP ブロックを追加します。 開発ボードを使用している場合は、ブロック オートメーション機能を利用する必要があります。
デフォルトのインターフェイスを変更して、LPD のみを含めるようにしました。
この単純なプラットフォームでは、XNUMX つのクロックを作成するだけです。 これらは、Vitis で使用されるクロックです。
IP カタログから Clocking Wizard を追加できます。
デフォルトでは、リセットはアクティブ High であり、リセット ソース (Zynq UltraScale デバイス上) はアクティブ Low です。 そのため、クロッキング設定ではこれを念頭に置くことができます。
100 つの出力クロックを追加しました。 150Mhz、300Mhz、および XNUMXMhz:
また、リセット極性をアクティブ LOW に設定します。
各クロックに同期リセットを提供する必要があります。 XNUMX つのクロックがあるため、IP カタログから XNUMX つの Processor System Reset IP コアを追加する必要があります。
次に、割り込みを追加する必要があります。 ここで、IP カタログから AXI 割り込みコントローラーを追加できます。 ユーザーは、AXI 接続を処理するために IP インテグレーターで使用できる Run Connection Automation 機能を利用できます。
100Mhz クロックを使用します。
AXI Interrupt Controller で、Interrupt Output Connection を Single に設定し、これを Zynq UltraScale IP の pl_ps_irq に接続します。
基本的なハードウェア プラットフォームに必要なのはこれだけです。
次に、プラットフォーム (PFM) プロパティを介してハードウェアについて Vitis に伝えるメタデータを設定する必要があります。
PFM プロパティの追加:
メタデータを Vitis に渡すには、PFM プロパティが必要です。
Vitis はこのデータを抽出して、アクセラレーション部分を既存のプラットフォームに追加するために使用できるインターフェイス、クロック、および割り込みを特定します。
プラットフォーム名:
まず、プラットフォームに名前を付ける必要があります。
プラットフォームを強調表示し、以下に示すようにプロパティを設定します。
または、TCL から:
set_property PFM_NAME { : : : } [get_files [current_bd_design].bd] set_property PFM_NAME {xilinx:zcu104:zcu104_base:1.0} [get_files [current_bd_design].bd]
これが完了すると、新しい [プラットフォーム] タブが表示されます。 ここでは、デザイン全体のすべてのクロック、インターフェイス、および割り込みが表示されます。 Vitis で使用できるリソースをフィルターする必要があります。
クロックを有効にする:
時計を右クリックし、有効にするを選択します。
clk_out3 について繰り返します
時計のプロパティ:
[オプション] タブを選択します。
注: クロック ID は 0 から開始してインクリメントする必要があるため、ここでこれを変更します。 デフォルトも指定する必要があります。
ここでのデフォルトは、Vitis で使用されるデフォルト クロックです。
clk_out3 のインデックスを設定します。
インターフェイスを有効にします。
これは、Zynq UltraScale デバイスのインターフェイスや AXI インターコネクトのインターフェイスなど、ブロック デザインで使用可能な任意のインターフェイスです。
この場合、Zynq UltraScale デバイスにインターフェイスを追加するだけです。
割り込みを有効にする:
set_property PFM.IRQ {intr {id 0 範囲 31}} [get_bd_cells /axi_intc_0]
プロジェクトのプロパティ:
Vitis IDE は、データセンター、アクセラレーション、エンベデッドなどのさまざまなフローをサポートする統合ツールです。 このインテントを Vitis ツールに渡す必要があります。
組み込みデザインを作成する場合は、これを指定する必要があります。 この例では、Vitis を使用して高速化する予定です。 これを指定する必要があるのは、Vitis がダウンストリーム ツールにプラットフォームの処理方法を伝える必要があるためです。
これらのプロパティは次の場所で確認できます。
set_property platform.default_output_type "sd_card" [current_project]
set_property platform.design_intent.embedded "true" [現在のプロジェクト]
set_property platform.design_intent.server_managed "false" [現在のプロジェクト]
set_property platform.design_intent.external_host "false" [現在のプロジェクト]
set_property platform.design_intent.datacenter "false" [現在のプロジェクト]
XSA の作成:
XSA を作成するには、次のタスクを完了します。
- ブロックデザインを生成する
- HDLラッパーを作成する
- ビットストリームを生成する
- [ファイル] -> [エクスポート] -> [ハードウェアのエクスポート] を選択します
- Expandable -> Pre Synthesis を選択し、Bitstream を含めます。
ユーザーはここに詳細を入力できます。
以上です。