DFX Controller IP をカスタマイズするには、いくつか詳細設定が必要です。各リコンフィギャラブル パーティション (RP) およびリコンフィギャラブル モジュール (RM) に関する情報をすべて特定すると、ターゲットの FPGA のリコンフィギュレーション ニーズをすべて把握するコントローラーが作成されます。この IP 内で、デザインのリコンフィギャラブル部分は仮想ソケットと呼ばれ、RP だけでなく、それを管理するために使用される関連スタティック ロジック (デカップリングやハンドシェイク ロジックなど) がすべて含まれています。コア パラメーターは操作中にカスタマイズ可能ですが、この手順内で入力できるパラメーターが多いほうがよいです。こうすることで、フロントエンド デザインの記述を最終的にインプリメントされたデザインとさらに正確に一致させることができます。
-
AMD Vivado™
IDE を開き、Tasks セクションで Manage IP タスクをクリックし、New IP Location を選択して Next をクリックします。次の詳細を入力して Finish をクリックします。
- Part: Boards をクリックして VCU108 を選択
- IP Location: <Extract_Dir>/Sources/ip
- IP カタログで Dynamic
Function eXchange カテゴリを展開し、DFX Controller IP をダブルクリックします。
DFX Controller IP の GUI には左側に 4 つのタブがあり、IP の現在のコンフィギュレーションに対するフィードバックが確認できます。Validation タブにコア パラメーターを入力するときに発生する可能性のあるエラーが表示されます。エラーがあると、コアはコンパイルされません。
GUI の右側には、2 つのタブがあり、ここでカスタマイズがすべて実行されます。入力する情報のほとんどが Virtual Socket Manager Options タブに表示されます。
- コンポーネント名は dfx_controller_0 のままにしておきます。最終デザインで使用される DFX Controller のバージョンは自動的に 手順 3: デザインのコンパイル でコンパイルされます。
-
Global
Options タブで次の 3 点を変更します。
- Set the Polarity of reset and icap_reset: 1
- Specify the CAP arbitration protocol: 1) Latency has not been added to arbiter signals
- Set the number of Clock domain crossing stages: 2
Managed device type が The DFX CONTROLLER will manage Virtual Sockets on an UltraScale device に設定されていることを確認します。DFX Controller の GUI は次のようになります。
注記: この DFX Controller は、7 シリーズ、UltraScale、または UltraScale+ デバイスの仮想ソケットを管理できます。含まれている同じデバイスのリコンフィギュレーションを管理するだけではなく、別デバイスの ICAP に接続し、そのデバイスのリコンフィギュレーションを管理することも可能です。次は、DFX Controller を使用したマルチチップ ソリューションの例です。
-
Virtual Socket Manager
Options タブをクリックし、仮想ソケットおよびそのリコンフィギャラブル モジュールの情報を定義します。
DFX Controller IP には、仮想ソケット 1 つ、リコンフィギャラブル モジュール 1 つが既に読み込まれています。
まず、シフト機能の仮想ソケット マネージャー (VSM) を定義します。
- 現在の VSM の名前を VS_0 から vs_shift に変更します。
- 現在の RM の名前を RM_0 から rm_shift_left に変更します。注意:
- Virtual Socket Manager to configure および Reconfigurable Module to configure プルダウン メニューには、アンダースコアは表示されません。プルダウン メニューの下の Virtual Socket Name および Reconfigurable Module Name フィールドのほうがより正確です。
GUI の任意のフィールドに新しい値を入力し、それを確定するには、GUI のほかのフィールドをクリックするか、Tab キーを押します。Enter キーを押すと IP のコンパイルが始まってしまうので、Enter キーは押さないでください。
-
New Reconfigurable
Module ボタンをクリックし、この VSM の新しい RM を作成します。Reconfigurable Module Name フィールドで rm_shift_right という名前に設定します。ヒント: 1 つの仮想ソケット マネージャーで最大 128 個のリコンフィギャラブル モジュールを管理できます。
- vs_shift VSM を次のように設定します。
- Has Status Channel: オン
- Has PoR RM: オン、値は rm_shift_right に設定
- Number of RMs allocated: 4
PoR RM は、初期フル デザインのコンフィギュレーション ファイル内に含まれているもので、FPGA のスタートアップ時に、どのトリガーおよびイベントが適切なのかが VSM で認識されます。この VSM により、ソケット内の現在のアクティブなリコンフィギャラブル モジュールが確認されます。
この仮想ソケットに対し定義した RM は 2 つだけですが、スペース的には 4 つ分の RM が定義できるので、後で拡張が可能です。追加の RM は AXI4-Lite インターフェイスを使用して特定できますが、RM 用にスペースが予約されている場合のみ可能です。
- これらの RM のそれぞれに対し、次の値を入力します。Reconfigurable Module to configure プルダウンは、2 つの RM を切り替えるときに使用します。
- rm_shift_left の場合:
- Reset type: Active High
- Duration of Reset: 3
- rm_shift_right の場合:
- Reset type: Active High
- Duration of Reset: 10
注記: RM ごとに要件が異なる可能性があるので、要件に合わせてリセット期間をそれぞれの RM に割り当てることができるようになっています。リセット期間はクロック サイクルで指定します。 - rm_shift_left の場合:
- 各 RM に対し、ビットストリーム サイズと、BPI フラッシュ デバイス内のビットストリームの格納場所を指定します。
- rm_shift_left の場合:
- Bitstream 0 address: 0x00B00000
- Bitstream 0 size (bytes): 375996
- Bitstream 0 is a clearing bitstream: オフ
- Bitstream 1 address: 0x00B5C000
- Bitstream 1 size (bytes): 26036
- Bitstream 1 is a clearing bitstream: オン
- rm_shift_right の場合:
- Bitstream 0 address: 0x00B62800
- Bitstream 0 size (bytes): 375996
- Bitstream 0 is a clearing bitstream: オフ
- Bitstream 1 address: 0x00BBE800
- Bitstream 1 size (bytes): 26036
- Bitstream 1 is a clearing bitstream: オン
ビットストリームのサイズは RP の Pblock の構成に基づいており、ビットストリームのアドレスはストレージの詳細に基づいているので、この情報は、デザイン サイクルの初期段階ではわからないのが普通です。デザインをシリコン上でテストする段階に至るまでは、これらの値を 0 に設定しておくことができます。デザインが確立され、DFX Controller を使用したハードウェア テストが開始できる段階になれば、この情報を追加できます。ビットストリーム アドレスの情報は、PROM ファイル生成中に渡される情報と一致する必要があります。一部のビットストリーム生成オプション、特にビットストリームの圧縮オプションは、同じ RP であってもコンフィギュレーションが異なると、最終的なサイズが変わる可能性があります。
- rm_shift_left の場合:
- シフト機能の Trigger
Options を定義します。
- Number of Hardware Triggers: 4
- Number of Triggers allocated: 4
この 4 つのトリガーは自動的に割り当てられます。これらは AXI4-Lite を使用してデバイス操作中に変更可能です。AXI4-Lite は、フィールド システム アップグレード中に同じ方法で新規 RM を追加したときに特に便利です。
IP の GUI は次のようになります (ここでは rm_shift_left を表示)。
次に、オプション設定は若干異なりますが、基本的には同じ手順で、カウンター用の仮想ソケットを作成し、値を設定します。
- New Virtual Socket Manager ボタンをクリックして、新しい VSM を作成します。
- 次の名前およびプロパティで RM を 2 つ追加します。
-
Reconfigurable
Module Name: rm_count_up
- Reset type: Active High
- Duration of Reset: 12
-
Reconfigurable
Module Name: rm_count_down
- Reset type: Active-High
- Duration of Reset: 16
この仮想ソケットの場合は、ビットストリームのアドレスおよびサイズをデフォルトの 1 のままにしておきますが、ビットストリーム 1 はクリア ビットストリームに設定します。ここで定義されたものだけでなく、ビットストリームのサイズ情報は、DFX Controller の Tcl API を介して配線済みコンフィギュレーション チェックポイントに追加するか、または、AXI4-Lite インターフェイスを使用してアクティブ デザインに追加できます。カウンター用の仮想ソケットの場合は、ビットストリームのアドレスおよびサイズ情報は、配置配線後、ビットストリーム生成前に、Tcl コマンドを使用して追加されます。
ヒント: DFX Controller の Tcl API の使用方法は、 『Dynamic Function eXchange Controller IP LogiCORE IP 製品ガイド』 (PG374) の「インプリメンテーション後のコア カスタマイズ」を参照してください。<Extract_Dir>/Sources/scripts ディレクトリにある Tcl スクリプトを確認します。update_dfxc_vcu108.tcl では、dfx_info_vcu108.tcl に格納されているビットストリームのアドレスおよびサイズをアップデートするのに DFX Controller の Tcl API が使用されます。このファイルは、演習の後半で <Extract_Dir>/design.tcl から実行します。
-
Reconfigurable
Module Name: rm_count_up
-
Virtual Socket Manager
Options タブで、次の VSM 設定をデフォルト値から変更します。
- Virtual Socket Name: vs_count
- Start in Shutdown: オン
- Shutdown on error: オフ
- Has PoR RM: オン、値は rm_count_up に設定
- カウンター機能の Trigger Options を定義します。
- Number of Hardware Triggers = 4
- Number of Triggers allocated = 4
これで、このチュートリアルでの DFX Controller IP のカスタマイズは終了です。
-
OK をクリックしてから、Generate をクリックして、コアのコンパイルおよびアウト オブ コンテキスト合成を開始します。