ゼファーネットのロゴ

Vitis用アクセラレーションプラットフォームの作成パートXNUMX:Vivadoでのアクセラレーションプラットフォーム用ハードウェアプロジェクトの作成

日付:

このブログ エントリは、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) を作成します。 ここでの名前は、プラットフォームに名前を付けるために使用する名前と同じになります。

stephenm_0-1597226289172.png

IP カタログから Zynq UltraScale Processor Subsystem IP ブロックを追加します。 開発ボードを使用している場合は、ブロック オートメーション機能を利用する必要があります。

stephenm_1-1597157023766.png

デフォルトのインターフェイスを変更して、LPD のみを含めるようにしました。

stephenm_5-1597157692482.png

この単純なプラットフォームでは、XNUMX つのクロックを作成するだけです。 これらは、Vitis で使用されるクロックです。

IP カタログから Clocking Wizard を追加できます。

stephenm_6-1597157734670.png

デフォルトでは、リセットはアクティブ High であり、リセット ソース (Zynq UltraScale デバイス上) はアクティブ Low です。 そのため、クロッキング設定ではこれを念頭に置くことができます。

100 つの出力クロックを追加しました。 150Mhz、300Mhz、および XNUMXMhz:

stephenm_8-1597158401526.png

また、リセット極性をアクティブ LOW に設定します。

stephenm_4-1597157488686.png

各クロックに同期リセットを提供する必要があります。 XNUMX つのクロックがあるため、IP カタログから XNUMX つの Processor System Reset IP コアを追加する必要があります。

stephenm_10-1597158764315.png

次に、割り込みを追加する必要があります。 ここで、IP カタログから AXI 割り込みコントローラーを追加できます。 ユーザーは、AXI 接続を処理するために IP インテグレーターで使用できる Run Connection Automation 機能を利用できます。

100Mhz クロックを使用します。

stephenm_11-1597158830387.png

AXI Interrupt Controller で、Interrupt Output Connection を Single に設定し、これを Zynq UltraScale IP の pl_ps_irq に接続します。

stephenm_12-1597158905002.png

基本的なハードウェア プラットフォームに必要なのはこれだけです。

次に、プラットフォーム (PFM) プロパティを介してハードウェアについて Vitis に伝えるメタデータを設定する必要があります。

PFM プロパティの追加:

メタデータを Vitis に渡すには、PFM プロパティが必要です。

Vitis はこのデータを抽出して、アクセラレーション部分を既存のプラットフォームに追加するために使用できるインターフェイス、クロック、および割り込みを特定します。

プラットフォーム名:

まず、プラットフォームに名前を付ける必要があります。

plat_interface.PNG

イネーブルプラット.PNG

プラットフォームを強調表示し、以下に示すようにプロパティを設定します。

plat_properties.PNG

または、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 で使用できるリソースをフィルターする必要があります。

クロックを有効にする:

時計を右クリックし、有効にするを選択します。

stephenm_0-1597159599898.png

clk_out3 について繰り返します

時計のプロパティ:

[オプション] タブを選択します。

stephenm_1-1597159801228.png

注: クロック ID は 0 から開始してインクリメントする必要があるため、ここでこれを変更します。 デフォルトも指定する必要があります。

ここでのデフォルトは、Vitis で使用されるデフォルト クロックです。

stephenm_2-1597159949819.png

clk_out3 のインデックスを設定します。

stephenm_0-1597160065760.png

インターフェイスを有効にします。

これは、Zynq UltraScale デバイスのインターフェイスや AXI インターコネクトのインターフェイスなど、ブロック デザインで使用可能な任意のインターフェイスです。

この場合、Zynq UltraScale デバイスにインターフェイスを追加するだけです。 

stephenm_2-1597160340667.png

割り込みを有効にする:
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 を含めます。

ユーザーはここに詳細を入力できます。

stephenm_0-1597228398976.png

以上です。

ソース: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Creating-an-Acceleration-Platform-for-Vitis-Part-One-Creating/ba-p/1138208

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?