次の表は、使用可能な 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 プラットフォームへの外部ハードウェア ポート インターフェイスは、AXI4、AXI4-Lite、AXI4-Stream、クロック、リセット タイプのいずれかにする必要があります。
カスタム バス タイプまたはハードウェア インターフェイスは、ハードウェア デザインに含めたままにする必要があり、
v++
リンカーで使用するように宣言はできません。カスタム バス タイプを指定したデータ バスをカーネルに接続する必要がある場合は、AXI4、AXI4-Lite、または AXI4-Stream インターフェイスに変換する必要があります。
制御インターフェイスの要件
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_0
は Zynq 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]
割り込みの要件
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]
- ソフトウェアでこれらの割り込みが使用できるようにするには、ソフトウェア コンポーネントのアップデート に示すように、zocl ノードを含めてデバイス ツリーをアップデートする必要があります。
拡張可能 XSA のエクスポート
XSA には、ソフトウェア開発用の固定 XSA とアクセラレーション プロジェクト用の拡張可能 XSA の 2 つのフォーマットがあります。アクセラレーション フロー用に Vitis エンベデッド プラットフォームを作成する場合は、拡張可能 XSA を使用する必要があります。これは、Vitis IDE の Export ウィザードで実行できます。
これには次を実行します。
- をクリックします。
- プラットフォーム タイプには Expandable を選択します。
- プラットフォーム ステートには Pre-Synthesis を選択します。 注記: 前の段階で [Run Implementation] を実行した場合は、Post-implementation をクリックします。
- プラットフォーム プロパティを入力します。
- 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
ツールでレポートできるようになります。