Vivado では、MicroBlaze などの PL マネージャーは、CIPS/PS ウィザードと DDR デスティネーションにアクセスできます。PL マネージャーの SMID を使用して、デスティネーションへのアクセスを制御できます。
主なケースは、2 つあります。
- PL マネージャーは、NoC を使用せずに CIPS/PS AFI ポートに配線します。
- PL マネージャーは、NoC を介して配線します。
PL マネージャーが NoC を使用しないケース
この場合、PL を使用して SMID 値を設定する必要があります。たとえば、配線パスに axi_sideband_util IP を追加し、SMID 値を追加するように設定します。BD で axi_sideband_util IP を使用している場合、XSA を入力として ISS を作成または既存の ISS を更新すると、ace ユーティリティが IP 情報を自動的に推論できます。または、AXI ユーザー ビットをほかのロジックで駆動することもできます。
ツールで IP 情報が自動推論されない場合は、SMID エントリを手動で追加できます。これには SMID ページの [+] を使用します。追加した SMID がハードウェア デザインのものと一致することを確認するのは、ユーザーの責任となります。ユーザーが追加した SMID は、編集および削除が可能です。
ACE で追加された SMID 値は、ほかの SMID と同様に、ベース保護やサブシステムでデスティネーションへのアクセスを制御するために使用できます。
PL マネージャーが NoC を使用するケース
NoC を介して配線する場合、配線パス上の NoC PL NMU を ace ユーティリティで設定し、SMID 値とマスクを設定できます。PL NMU は、NoC NTS ファイルまたは XSA ファイルを読み取ることで、Vivado デザインから ACE に追加されます。これらの SMID は編集できますが、削除することはできません。
SMID のマスクは、どのビットが入力される AXI トランザクションから変更されずに渡され、どのビットが NMU によってセットされるかを制御します。したがって、NMU は一部のビットをセットし、その他の SMID ビットを変更せずに渡すことができます。デフォルトでは、mask_n は 0 です。つまり、すべてのビットは NMU によってセットされ、変更されずに渡されるビットはありません。複数の PL マネージャーが同じ NMU を配線に使用し、mask_n が 0 の場合、すべての PL マネージャーは NMU から同じ SMID 値を受け取ります。
複数の PL マネージャーが配線に同じ PL NMU を使用する場合、各マネージャーは、たとえば、SMID 値の下位ビットをセットでき、PL NMU はマスクを使用して上位ビットをセットし、下位ビットを変更せずに渡すように構成できます。
例
- PL マネージャーは
axi_sideband_utilに接続し、SMID 値を 0x1 に設定します。 - このパスは、SMID 値 = 0x10、mask_n = 0xf の NMU を通過します。これにより、下位 4 ビットは変更されずに渡されます。
- 結果として得られる SMID は 0x11 であり、上位ビットは NMU から、下位ビットは
axi_sideband_utilから得られます。 - このデザインに一致するように、アイソレーション仕様に SMID 値 0x11 を追加する必要があります。