Vitis 統合ソフトウェア プラットフォームのハードウェア デザインは、次の規則に従っている必要があります。
-
すべてのハードウェア プラットフォームに IP カタログからの Processing System IP ブロックを含める必要があります。
注記:- Zynq® UltraScale+™ MPSoC および Zynq-7000 SoC デバイスがサポートされます。
- MicroBlaze プロセッサはアクセラレーション カーネルにはサポートされませんが、ベース ハードウェアに含めることができます。
- プラットフォーム デザインで使用される IP で標準の
Vivado®
IP カタログに含まれていないものは、Vivado Design Suite プロジェクトのローカルに配置されている必要があります。プロジェクト外部の IP リポジトリ パスへの参照は、
write_hw_platform
コマンドではサポートされません。 -
Vitis プラットフォームへの外部ハードウェア ポート インターフェイスは、AXI4、AXI4-Lite、AXI4-Stream、クロック、リセット タイプのインターフェイスにする必要があります。
- カスタム バス タイプまたはハードウェア インターフェイスは、ハードウェア デザインに含めたままにする必要があり、
v++
リンカーで使用するように宣言はできません。
- カスタム バス タイプまたはハードウェア インターフェイスは、ハードウェア デザインに含めたままにする必要があり、
-
各プラットフォームで、Processing System IP からの少なくとも 1 つの汎用 AXI マスター ポート、または AXI マスター ポートに接続されているインターコネクト IP を宣言する必要があります。これらは、アクセラレータ IP のソフトウェア制御に使用されます。
- sptags はメモリをマップする
S_AXI
インターフェイス用にサポートされます。M_AXI_GP
ポートの sptags はサポートされません。
- sptags はメモリをマップする
- MIG コントローラーを介したメモリ アクセスには、次の例のように
PFM.AXI_PORT
プロパティを使用して、memport、sptag、およびメモリ インスタンス名とアドレス範囲を含むメモリ フィールドを指定する必要があります。set_property PFM.AXI_PORT { M_AXI_HPM1_FPD {memport "M_AXI_GP"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "HPC0" memory "ps_e HPC0_DDR_LOW"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "HPC1" memory "ps_e HPC1_DDR_LOW"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "ps_e HP0_DDR_LOW"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "HP1" memory "ps_e HP1_DDR_LOW"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "HP2" memory "ps_e HP2_DDR_LOW"} } [get_bd_cells /ps_e]
- Kernel-to-Kernel、Host-to-Kernel、および複数の PL メモリ コントローラーがサポートされます。
-
HLS カーネルは、デフォルトで隣接メモリを使用する必要のある AXI4-MM インターフェイスになります。XRT メモリ アロケーターからは、隣接バッファーが提供されます。
注記: XRT カーネル添付の明示的接続ポイントは、PFM.AXI_PORT
sptag インターフェイス プロパティとそれに合ったv++
リンカーへのconnectivity.sp
コマンド引数を使用して指定します。 - ストリーミング カーネル インターフェイスは
PFM.AXIS_PORT
sptag インターフェイス プロパティとそれに合ったv++
リンカーへのconnectivity.sc
コマンド引数を使用して指定します。 -
S_AXI_HP0
ポートなどの AXI ポートを Vitis コンパイラとその他のプラットフォーム ロジック間で共有するには、AXI インターコネクト IP または AXI SmartConnect IP ブロックをその AXI ポートに接続します。- 内部プラットフォーム ロジックは、インターコネクト IP の最下位インデックスを使用し、残りのインデックスをイネーブルのままにしておき、アクセラレータ IP を接続する際に
v++
リンカーで使用できるようにます。
- 内部プラットフォーム ロジックは、インターコネクト IP の最下位インデックスを使用し、残りのインデックスをイネーブルのままにしておき、アクセラレータ IP を接続する際に
- すべてのプラットフォームがプラットフォーム内からの 1 つまたは複数のネットを提供および宣言する必要があります。必要に応じて追加の内部クロックをイネーブルにして、プラットフォーム ロジックがサポートされるように、複数クロックがサポートされています。オプションですが、これらの内部クロックを宣言しておくと、アクセラレータ IP を接続する際に
v++
リンカーで使用できるようになります。- 宣言されたプラットフォーム クロックには、それぞれ Vivado IP カタログに含まれる Processing System Reset IP ブロックを付ける必要があります。
-
PFM.CLOCK
プロパティを使用して、クロッキングおよび関連するリセット情報を設定します。 -
id=0
およびstatus=fixed
を使用して、1 つのクロックがデフォルト クロックとして認識されるようにします。 - 使用可能な場合は、
id=1
およびstatus=fixed
のクロックがv++
リンカーで使用され、アクセラレーション カーネルのap_clk2
ポートに接続されます。 - どちらのクロックの周波数も指定されていません。デバイスおよびタイミング制約を指定するかどうかは設計者の責任です。
- プラットフォームの割り込み入力には、Processing System に接続された AXI 割り込みコントローラー (
axi_intc
) IP ブロックを使用できます。エンベデッド プロセッサ プラットフォームに含まれる IP ブロックは、最大 32 個のファブリック割り込みを使用できます。注記: 2019.2 リリースでは、プラットフォーム開発者がアクセラレータ割り込みを Processing Subsystem IP に接続し、カーネル割り込みサポートの追加 に示すように、dynamic_postlink.tcl スクリプトを使用して XRT で使用できるようにする必要があります。PFM.IRQ
プロパティは宣言しないでください。