Zephyrnet-Logo

Generieren von Schnelltestfällen für Versal ACAP Integrated Block für PCI Express IP in Vivado Simulator

Datum:

Der Vivado Simulator bietet einen interaktiven Mechanismus, um ein Signal, eine Verbindung oder ein Register zu einem bestimmten Zeitpunkt oder Zeitraum auf einen bestimmten Wert zu erzwingen. Sie können auch erzwingen, dass sich Werte für Objekte über einen bestimmten Zeitraum ändern. In diesem Blog werden Techniken zum Erstellen von Testfällen in der Simulation mit Vivado Simulator beschrieben, indem bestimmte Datenmuster auf Kernschnittstellen erzwungen werden.

Beim Entwerfen eines Systems mit dem Versal™ ACAP Integrated Block für PCI Express IP können Entwickler auf Probleme stoßen, bei denen das System aufgrund eines bestimmten eingehenden Pakets oder eines falschen Umschaltens von Signalen anhält. Das Debuggen solcher Probleme in der Hardware kann schwierig und zeitaufwändig sein, da dies ein Debugging mit Tools wie ChipScope erfordern würde.

Die einfachste Möglichkeit zum Debuggen besteht darin, das Problem, wenn möglich, in der Simulation zu reproduzieren, indem Sie eine bestimmte Testbench schreiben. Das Problem bei diesem Ansatz besteht darin, dass der Benutzer viel Zeit investieren muss, um einen umfassenden Testbench-Code zu schreiben. Die Befehlsfunktion "force" von Vivado Simulator kann verwendet werden, um Probleme zu reproduzieren, indem Pakete zu einem bestimmten Zeitpunkt eingeschleust und Signale umgeschaltet werden.

Der Versal ACAP Integrated Block für PCI Express IP wird mit einem Beispieldesign geliefert, das durch Rechtsklick auf die Option "Beispieldesign öffnen" der instanziierten IP im Fenster "Quellen" geöffnet werden kann. Der zur Simulation des Beispieldesigns verwendete Standardsimulator ist der Vivado Simulator, wie unten in 'Einstellungen' gezeigt.

1.png

Es gibt zwei Arten von Beispieldesigns, die für den Versal ACAP Integrated Block für PCI Express IP in Vivado generiert werden können – BMD und PIO. Das standardmäßige Beispieldesign ist PIO mit zwei Modi – Adressausrichtungsmodus und Dword-Ausrichtungsmodus. (Siehe PG343)

  • Für den Adressausrichtungsmodus implementiert das PIO-Design einen 8192 Byte großen Zielraum im ACAP-Block-RAM hinter dem Endpunkt für PCIe. Auf diesen 32-Bit-Zielraum kann über einzelne Dword-E/A-Lese-, E/A-Schreib-, Speicher-Lese-64, Speicher-Schreib-64, Speicher-Lese 32 und Speicher-Schreib-32 TLPs zugegriffen werden. Der PIO-Entwurf erzeugt eine Vervollständigung mit einem D-Wort der Nutzlast als Reaktion auf eine gültige Speicherlese-32-TLP-, Speicherlese-64-TLP- oder E/A-Lese-TLP-Anforderung, die ihm vom Kern präsentiert wird. Darüber hinaus gibt das PIO-Design einen Abschluss ohne Daten mit einem erfolgreichen Status für eine E/A-Schreib-TLP-Anforderung zurück.
  • Für den Dword-Ausrichtungsmodus implementiert das PIO-Design einen 2048-Byte-Zielraum im ACAP-Block-RAM. Dieser Zielbereich und die Datenbreite variieren je nach AXI4-Stream-Schnittstelle und entsprechen der Breite der AXI4-Stream-Schnittstelle. Auf diesen Zielraum ist über die TLPs Memory Write 32 und Memory Read 32 zugegriffen. Der PIO erzeugt einen Abschluss mit der Nutzlastgröße als Reaktion auf eine gültige Speicherlese-32-TLP-Anforderung vom Kern.

Der Screenshot unten zeigt die Simulationswellenformerfassung aus dem PIO-Beispieldesign, das für den Dword-Ausrichtungsmodus generiert wurde.

Auf der RQ-Schnittstelle von RP ist das erste Paket MWr und das zweite Paket ist MRd. Diese Pakete erscheinen auf der CQ-Schnittstelle des Endpunkts, wie unten gezeigt.

2.png

Die folgende Bildschirmaufnahme zeigt eine vergrößerte Aufnahme eines MWr-Pakets auf der RQ-Schnittstelle des Root-Ports (RP):

3.png

Der Screenshot unten zeigt eine vergrößerte Aufnahme eines MRd-Pakets auf der RP RQ-Schnittstelle:

4.png

Der Screenshot unten zeigt eine vergrößerte Aufnahme eines MRd-Pakets auf der RP RQ-Schnittstelle:

5.png

In ähnlicher Weise werden die vergrößerten Ansichten MWr- und MRd-Pakete auf der Endpoint-CQ-Schnittstelle unten gezeigt.

Speicher schreiben (MWr):

6.png

m_axis_cq_tuser:

7.png

8.png

9.png

Speicher lesen (MRd):

10.png

m_axis_cq_tuser:

11.png

12.png

Der 'force'-Befehl von Vivado Simulator kann verwendet werden, um das zweite Memory Write-Paket nach dem Memory Read-Paket zu senden.

Dies kann durch Hinzufügen des folgenden Befehls in einer Tcl-Datei erfolgen:

add_force {/board/RP/s_axis_rq_tlast} {1 355.260us} {0 355.264us}
add_force {/board/RP/s_axis_rq_tdata} -radix hex {00000000000000000000000000000000000000000000000000000000000000000f0e0d0c0b0a090805060708010203040101a00900af08010000000000000010 355.260us} {0 355.264us}
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

Der Speicherort der Tcl-Datei wird im hinzugefügt xsim.simulate.tcl.post* Feld in der Simulationseinstellungen GUI wie unten gezeigt:

14.png

Der Screenshot unten zeigt das zweite MWr-Paket bei 355.260 ns als Ergebnis der hinzugefügten Force-Befehle.

15.png

Unten sehen Sie eine vergrößerte Ansicht des vom Kraftbefehl generierten MWr-Pakets auf der RP RQ-Schnittstelle:

16.png

Das gleiche Paket auf der EP CQ-Schnittstelle wird unten gezeigt:

17.png

Das Obige ist nur eine Veranschaulichung der Fähigkeit des Vivado Simulator-Befehls 'force' zum Debuggen von Versal ACAP Integrated Block für PCI Express-Probleme durch Reproduzieren von benutzerdefinierten Hardwareproblemen in der Simulation. Einige der anderen Szenarien, die zum Debuggen mit 'force'-Befehlen verwendet werden können, sind:

  • Generieren Sie mehrere MWr-Pakete zum Lesen und Schreiben vom Endpunkt.
  • Generieren Sie Pakete stromaufwärts vom Endpunkt zum Root-Port.
  • Injizieren Sie ein fehlerhaftes Paket in die IP und beobachten Sie das IP-Verhalten, um das Hardwareverhalten nachzuahmen
  • Erzwingen oder deaktivieren von Signalen wie "tready" und "tvalid" für Testzwecke'

Anmerkungen:

  • Obwohl oben auf den Versal ACAP Integrated Block für PCI Express IP Bezug genommen wurde, können ähnliche Techniken auf beliebige andere IP-Kerne und kundenspezifische Designs angewendet werden.
  • Um mehr über die Verwendung von 'force'-Befehlen in ModelSim zu erfahren, siehe (Xilinx Antwort 53776)
    Weitere Informationen zu den „force“-Befehlen des Vivado Simulators finden Sie unter (UG900).

PlatonAi. Web3 neu erfunden. Datenintelligenz verstärkt.
Klicken Sie hier, um darauf zuzugreifen.

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

spot_img

Neueste Intelligenz

spot_img

Chat mit uns

Hallo! Wie kann ich dir helfen?