ハードウェア インターフェイスの追加 - 2020.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2020-08-20
Version
2020.1 Japanese

次の表は、使用可能な Vitis 入力とアクセラレーション エンベデッド プラットフォームの最小要件を示しています。

入力 Vitis の使用可能なタイプ AXI MM カーネルの最小要件
制御インターフェイス PS または AXI Interconnect IP や SmartConnect IP からの AXI マスター インターフェイス カーネル制御用の AXI4-Lite マスター 1 つ
メモリ インターフェイス AXI スレーブ インターフェイス データ交換用のメモリ インターフェイス 1 つ
ストリーミング インターフェイス AXI4-Stream インターフェイス 必要なし
クロック 複数のクロック信号 クロック 1 つ
割り込み 複数の割り込み信号 割り込み 1 つ

一般的な要件

  • プラットフォーム デザインで使用される IP で標準の Vivado IP カタログに含まれていないものは、Vivado Design Suite プロジェクトのローカルに配置されている必要があります。プロジェクト外部の IP リポジトリ パスへの参照は、拡張可能 XSA を作成する場合はサポートされません。
  • Vitis プラットフォームへの外部ハードウェア ポート インターフェイスは、AXI4AXI4-LiteAXI4-Stream、クロック、リセット タイプのいずれかにする必要があります。

    カスタム バス タイプまたはハードウェア インターフェイスは、ハードウェア デザインに含めたままにする必要があり、v++ リンカーで使用するように宣言はできません。カスタム バス タイプを指定したデータ バスをカーネルに接続する必要がある場合は、AXI4AXI4-Lite、または AXI4-Stream インターフェイスに変換する必要があります。

制御インターフェイスの要件

どのプラットフォームでも、Processing System IP から少なくとも 1 つの汎用 AXI マスター ポート (M_AXI_GP) を宣言するか、その AXI マスター ポートに接続されたインターコネクト IP を含める必要があります。これらは、アクセラレータ IP のソフトウェア制御に使用されます。
  • AXI マスター ポート (M_AXI_GP) は PFM.AXI_PORT の要素として定義されます。
  • M_AXI_GP ポートの sptags プロパティはサポートされません。

メモリ インターフェイスの要件

どのプラットフォームでも、AXI スレーブ ポート (S_AXI) を使用し、少なくとも 1 つのメモリ インターフェイスを宣言する必要があります。これは、PS の Arm プロセッサと PL のカーネル間のデータ変換に使用されます。ほとんどの場合、PS DDR が使用されます。

  • AXI スレーブ ポート (S_AXI) は PFM.AXI_PORT の要素として定義されます。
  • S_AXI インターフェイスの sptags プロパティは v++ でサポートされます。その sptags 名でリンク段階中に特定のメモリ インターフェイスが検出できます。sptags プロパティがハードウェア デザインで指定されていなくても、v++ はデフォルトのリンキング ストラテジを使用してデザインをリンクします。

次は、制御インターフェイスとメモリ インターフェイスの PFM.AXI_PORT 設定の例です。

set_property PFM.AXI_PORT {
M_AXI_HPM1_FPD {memport "M_AXI_GP"} 
S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "HPC0" memory "zynq_ultra_ps_e_0 HPC0_DDR_LOW"}  
S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "HPC1" memory "zynq_ultra_ps_e_0 HPC1_DDR_LOW"}  
S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "zynq_ultra_ps_e_0 HP0_DDR_LOW"}  
S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "HP1" memory "zynq_ultra_ps_e_0 HP1_DDR_LOW"}  
S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "HP2" memory "zynq_ultra_ps_e_0 HP2_DDR_LOW"}
} [get_bd_cells /ps_e]
注記:
  • zynq_ultra_ps_e_0Zynq UltraScale+ MPSoC モジュールのインターフェイス名です。
  • HPC0_DDR_LOW はアドレス範囲名です。

ストリーミング インターフェイスの要件

  • AXI ストリーミングは Vitis プラットフォームでサポートはされますが、必須ではありません。
  • ストリーミング カーネル インターフェイスは PFM.AXIS_PORT sptag インターフェイス プロパティとそれに合った connectivity.sc リンカーへの v++ コマンド引数を使用して指定します。

クロックの要件

  • 少なくとも 1 つのクロックを PFM.CLOCK プロパティでイネーブルにする必要があります。
  • 少なくとも 1 つのクロックを PFM.CLOCK プロパティでデフォルトとして設定する必要があります。

コード例

set_property PFM.CLOCK {pl_clk0 {id "0" is_default "true" proc_sys_reset "/proc_sys_reset_0" status "fixed"}} [get_bd_cells /zynq_ultra_ps_e_0]
注記: 2020.1 バージョンの Vitis では、プラットフォームに 1 つしかクロックがない場合、XCLBIN の CLOCK プロパティが正しくならないという既知の問題があります。この場合、XCLBIN をプログラムする際、ザイリンクス ランタイム (XRT) でエラーがレポートされます。この問題を回避するには、2 つ以上の PFM クロックをイネーブルにする必要があります。

割り込みの要件

Vitis では、リンク段階中にカーネル出力の IRQ 信号を割り込みコントローラーに自動的に接続できます。この自動プロセスが正しく動作するようにするには、次の規則に従っている必要があります。

  • ブロック図に AXI Interrupt Controller を 1 つ追加します。
    • IRQ 信号をプロセッシング システムの IRQ 入力に接続します。
    • PFM.IRQ プロパティを設定し、割り込みコントローラー名、割り込み入力ピン名、バス範囲などのプラットフォーム情報を指定して、v++ リンク段階で今後カーネルの IRQ が自動的に接続されるようにします。
    # Command Syntax
    set_property PFM.IRQ {pin_name {id id_number}} bd_cell
    set_property PFM.IRQ {pin_name {id id_number range irq_count}} bd_cell
    # Example
    set_property PFM.IRQ {intr {id 0 range 32}} [get_bd_cells /axi_intc_0]

拡張可能 XSA のエクスポート

XSA には、ソフトウェア開発用の固定 XSA とアクセラレーション プロジェクト用の拡張可能 XSA の 2 つのフォーマットがあります。アクセラレーション フロー用に Vitis エンベデッド プラットフォームを作成する場合は、拡張可能 XSA を使用する必要があります。これは、Vitis IDE の Export ウィザードで実行できます。

これには次を実行します。

  1. File > Export > Export Hardware をクリックします。
  2. プラットフォーム タイプには Expandable を選択します。
  3. プラットフォーム ステートには Pre-Synthesis を選択します。
    注記: 前の段階で [Run Implementation] を実行した場合は、Post-implementation をクリックします。
  4. プラットフォーム プロパティを入力します。
  5. XSA ファイル名を入力し、エクスポートするターゲット ディレクトリを指定します。

これは、コマンド ラインに次のコマンドを使用すると実行できます。

# Pre-synthesis
write_hw_platform -unified <output.xsa>  
# Post-implementation, combine bit file into XSA
write_hw_platform -unified -include_bit <output.xsa>

ほとんどの場合、v++ リンクでリンク済み PL デザインが最初からインプリメントされるので、エンベデッド プラットフォームには [Pre-Synthesis] で十分です。プラットフォーム インプリメンテーションが再利用されるのは、DFX プラットフォームの場合のみです。ただし、プラットフォームのインプリメンテーションが終了すると、プラットフォームのリソース使用量情報が生成され、platforminfo ツールでレポートできるようになります。