ゼファーネットのロゴ

Vivado シミュレーターでの PCI Express IP 用 Versal ACAP 統合ブロックのクイック テスト ケースの生成

日付:

Vivado シミュレータは、信号、配線、またはレジスタを指定された時間または期間に指定された値に強制する対話型メカニズムを提供します。 オブジェクトの値を一定期間にわたって強制的に変更することもできます。 このブログでは、コア インターフェイスに特定のデータ パターンを強制することにより、Vivado シミュレーターを使用してシミュレーションでテスト ケースを作成するテクニックについて説明します。

PCI Express IP 用 Versal™ ACAP Integrated Block を備えたシステムを設計する場合、設計者は、特定の受信パケットや信号の誤った切り替えが原因でシステムが停止するという問題に遭遇する可能性があります。 ハードウェアでこのような問題をデバッグするには、ChipScope などのツールを使用してデバッグする必要があるため、困難で時間がかかる場合があります。

デバッグの最も簡単なオプションは、可能であれば特定のテストベンチを作成してシミュレーションで問題を再現してみることです。 このアプローチの問題は、ユーザーが包括的なテストベンチ コードを作成するために多大な時間を投資する必要があることです。 Vivado シミュレータの「force」コマンド機能を使用すると、指定した時間にパケットを挿入し、信号を切り替えることで問題を再現できます。

PCI Express IP 用 Versal ACAP Integrated Block には、「ソース」ウィンドウでインスタンス化された IP の「サンプル デザインを開く」オプションを右クリックして開くことができるサンプル デザインが付属しています。 サンプル デザインのシミュレーションに使用されるデフォルトのシミュレーターは、以下の「設定」に示されている Vivado シミュレーターです。

1.png

Vivado の PCI Express IP 用 Versal ACAP 統合ブロック用に生成できるサンプル デザインには、BMD と PIO の 343 種類があります。 デフォルトのサンプル デザインは PIO で、アドレス アライン モードと Dword アライン モードの XNUMX つのモードがあります。 (PGXNUMXを参照)

  • アドレス アライン モードの場合、PIO デザインは、PCIe のエンドポイントの背後にある ACAP ブロック RAM に 8192 バイトのターゲット空間を実装します。 この 32 ビットのターゲット空間には、単一の Dword I/O 読み取り、I/O 書き込み、メモリ読み取り 64、メモリ書き込み 64、メモリ読み取り 32、およびメモリ書き込み 32 TLP を通じてアクセスできます。 PIO デザインは、コアによって提示された有効な Memory Read 32 TLP、Memory Read 64 TLP、または I/O Read TLP リクエストに応答して、ペイロードの XNUMX Dword による完了を生成します。 さらに、PIO デザインは、I/O Write TLP リクエストの成功ステータスとともにデータなしの完了を返します。
  • Dword Align モードの場合、PIO デザインは ACAP ブロック RAM に 2048 バイトのターゲット空間を実装します。 このターゲット空間とデータ幅は AXI4-Stream インターフェイスに基づいて変化し、AXI4-Stream インターフェイスの幅と等しくなります。 このターゲット空間には、Memory Write 32 および Memory Read 32 TLP を通じてアクセスできます。 PIO は、コアからの有効な Memory Read 32 TLP リクエストに応答して、ペイロード サイズを含む完了を生成します。

以下のスクリーンショットは、Dword Align モード用に生成された PIO サンプル デザインからのシミュレーション波形キャプチャを示しています。

RP の RQ インターフェイスでは、最初のパケットは MWr で、XNUMX 番目のパケットは MRd です。 これらのパケットは、以下に示すようにエンドポイントの CQ インターフェイスに表示されます。

2.png

以下のスクリーン キャプチャは、ルート ポート (RP) RQ インターフェイス上の MWr パケットの拡大キャプチャを示しています。

3.png

以下のスクリーンショットは、RP RQ インターフェイス上の MRd パケットの拡大キャプチャを示しています。

4.png

以下のスクリーンショットは、RP RQ インターフェイス上の MRd パケットの拡大キャプチャを示しています。

5.png

同様に、エンドポイント CQ インターフェイス上の MWr パケットと MRd パケットを拡大表示したものが以下に示されています。

メモリ書き込み (MWr):

6.png

m_axis_cq_tuser:

7.png

8.png

9.png

メモリ読み取り (MRd):

10.png

m_axis_cq_tuser:

11.png

12.png

Vivado シミュレータの「force」コマンドを使用すると、メモリ読み取りパケットの後に XNUMX 番目のメモリ書き込みパケットを送信できます。

これを行うには、Tcl ファイルに次のコマンドを追加します。

add_force {/board/RP/s_axis_rq_tlast} {1 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tdata} -radix hex {00000000000000000000000000000000000000000000000000000000000000000f0e0d0c0b0a090805060708010203040101 00900a08010000000000000010af355.260 0us} {355.264 XNUMXus}
add_force {/board/RP/s_axis_rq_tuser} -radix hex {00000000000000000000000000015540000000f410000f 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tkeep} -radix hex {001f 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tvalid} {1 355.260us} {0 355.264us}

13.png

Tcl ファイルの場所が xsim.simulate.tcl.post* 以下に示すように、シミュレーション設定 GUI のフィールドに入力します。

14.png

以下のスクリーンショットは、追加された強制コマンドの結果としての 355.260 ns の XNUMX 番目の MWr パケットを示しています。

15.png

以下は、RP RQ インターフェイス上で Force コマンドによって生成された MWr パケットを拡大したものです。

16.png

EP CQ インターフェイス上の同じパケットを以下に示します。

17.png

上記は、シミュレーションでカスタム デザインのハードウェアの問題を再現することによって、PCI Express 用 Versal ACAP 統合ブロックの問題をデバッグするための Vivado シミュレーターの「force」コマンドの機能を説明したものです。 「force」コマンドを使用したデバッグに使用できる他のシナリオは次のとおりです。

  • エンドポイントから読み書きするための複数の MWr パケットを生成します。
  • エンドポイントからルートポートまでのアップストリームパケットを生成します。
  • エラーのあるパケットを IP に挿入し、IP の動作を観察してハードウェアの動作を模倣します。
  • テスト目的で「tready」や「tvalid」などの信号のアサートまたはアサート解除を強制する

注意:

  • PCI Express IP 用の Versal ACAP 統合ブロックについて説明しましたが、同様の技術を他の IP コアやカスタム デザインに適用できます。
  • ModelSim での「force」コマンドの使用法については、次を参照してください。 (ザイリンクスアンサー53776)
    Vivado シミュレータの「force」コマンドの詳細は、(UG900) を参照してください。

PlatoAi。 Web3の再考。 増幅されたデータインテリジェンス。
アクセスするには、ここをクリックしてください。

出典: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Generating-Quick-Test-Cases-for-Versal-ACAP-Integrated-Block-for/ba-p/1260248

スポット画像

最新のインテリジェンス

スポット画像