手順 2: Dynamic Function eXchange (DFX) Controller IP のカスタマイズ - 2022.1 日本語

Vivado Design Suite チュートリアル: Dynamic Function eXchange (UG947)

Document ID
UG947
Release Date
2022-05-31
Version
2022.1 日本語

DFX Controller IP をカスタマイズするには、いくつか詳細設定が必要です。各リコンフィギャラブル パーティション (RP) およびリコンフィギャラブル モジュール (RM) に関する情報をすべて特定すると、ターゲットの FPGA のリコンフィギュレーション ニーズをすべて把握するコントローラーが作成されます。この IP 内で、デザインのリコンフィギャラブル部分は仮想ソケットと呼ばれ、RP だけでなく、それを管理するために使用される関連スタティック ロジック (デカップリングやハンドシェイク ロジックなど) がすべて含まれています。コア パラメーターは操作中にカスタマイズ可能ですが、この手順内で入力できるパラメーターが多いほうがよいです。こうすることで、フロントエンド デザインの記述を最終的にインプリメントされたデザインとさらに正確に一致させることができます。

  1. Vivado® IDE を開き、Tasks セクションで Manage IP タスクをクリックし、New IP Location を選択して Next をクリックします。次の詳細を入力して Finish をクリックします。
    • Part: Boards をクリックして VCU108 を選択
    • IP Location: <Extract_Dir>/Sources/ip
    注記: KCU105 開発ボードのブート フラッシュが QSPI デバイスなので、このボードはサポートされていません。QSPI および同期モードの BPI コンフィギュレーションは、 UltraScale™ デバイスの Dynamic Function eXchange ではサポートされていません。 『Vivado Design Suite ユーザー ガイド: Dynamic Function eXchange』 (UG909)このセクションの表 8-1 を参照してください。
  2. IP カタログで Dynamic Function eXchange カテゴリを展開し、DFX Controller IP をダブルクリックします。
    図 1. IP カタログの Dynamic Function eXchange Controller

    DFX Controller IP の GUI には左側に 4 つのタブがあり、IP の現在のコンフィギュレーションに対するフィードバックが確認できます。Validation タブにコア パラメーターを入力するときに発生する可能性のあるエラーが表示されます。エラーがあると、コアはコンパイルされません。

    GUI の右側には、2 つのタブがあり、ここでカスタマイズがすべて実行されます。入力する情報のほとんどが Virtual Socket Manager Options タブに表示されます。

  3. コンポーネント名は dfx_controller_0 のままにしておきます。最終デザインで使用される DFX Controller のバージョンは自動的に 手順 3: デザインのコンパイル でコンパイルされます。
  4. Global Options タブで次の 3 点を変更します。
    1. Set the Polarity of reset and icap_reset: 1
    2. Specify the CAP arbitration protocol: 1) Latency has not been added to arbiter signals
    3. Set the number of Clock domain crossing stages: 2

    Managed device type UltraScaleThe DFX CONTROLLER will manage Virtual Sockets on an device に設定されていることを確認します。DFX Controller の GUI は次のようになります。

    図 2. コンポーネント名および [Global Options] タブのオプションを設定した状態

    この DFX Controller は、7 シリーズUltraScale、または UltraScale+ デバイスの仮想ソケットを管理できます。含まれている同じデバイスのリコンフィギュレーションを管理するだけではなく、別デバイスの ICAP に接続し、そのデバイスのリコンフィギュレーションを管理することも可能です。次は、DFX Controller を使用したマルチチップ ソリューションの例です。

    図 3. DFX Controller を使用したマルチチップ ソリューションの例

  5. Virtual Socket Manager Options タブをクリックし、仮想ソケットおよびそのリコンフィギャラブル モジュールの情報を定義します。

    DFX Controller IP には、仮想ソケット 1 つ、リコンフィギャラブル モジュール 1 つが既に読み込まれています。

    まず、シフト機能の仮想ソケット マネージャー (VSM) を定義します。

  6. 現在の VSM の名前を VS_0 から vs_shift に変更します。
  7. 現在の 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 キーは押さないでください。

  8. New Reconfigurable Module ボタンをクリックし、この VSM の新しい RM を作成します。Reconfigurable Module Name フィールドで rm_shift_right という名前に設定します。
    ヒント: 1 つの仮想ソケット マネージャーで最大 128 個のリコンフィギャラブル モジュールを管理できます。
  9. 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 用にスペースが予約されている場合のみ可能です。

  10. これらの 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 に割り当てることができるようになっています。リセット期間はクロック サイクルで指定します。
  11. 各 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 であってもコンフィギュレーションが異なると、最終的なサイズが変わる可能性があります。

  12. シフト機能の Trigger Options を定義します。
    • Number of Hardware Triggers: 4
    • Number of Triggers allocated: 4

    この 4 つのトリガーは自動的に割り当てられます。これらは AXI4-Lite を使用してデバイス操作中に変更可能です。AXI4-Lite は、フィールド システム アップグレード中に同じ方法で新規 RM を追加したときに特に便利です。

    IP の GUI は次のようになります (ここでは rm_shift_left を表示)。

    図 4. 完了した vs_shift の [Visual Socket Manager Options] タブの設定

    次に、オプション設定は若干異なりますが、基本的には同じ手順で、カウンター用の仮想ソケットを作成し、値を設定します。

  13. New Virtual Socket Manager ボタンをクリックして、新しい VSM を作成します。
  14. 次の名前およびプロパティで 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]

    この仮想ソケットでは、ビットストリームのアドレスおよびサイズ情報はデフォルトの 0 のままにしますが、ビットストリームは 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 から実行します。

  15. Virtual Socket Manager Options タブで、次の VSM 設定をデフォルト値から変更します。
    • Virtual Socket Name: vs_count
    • Start in Shutdown: オン
    • Shutdown on error: オフ
    • Has PoR RM: オン、rm_count_up
  16. カウンター機能の Trigger Options を定義します。
    • Number of Hardware Triggers: 4
    • Number of Triggers allocated: 4

    これで、このチュートリアルでの DFX Controller IP のカスタマイズは終了です。

  17. OK をクリックしてから、Generate をクリックして、コアのコンパイルおよびアウト オブ コンテキスト合成を開始します。
図 5. 最終的な DFX Controller シンボル