FPGA-Simulation – VHDL-Testbench

Ich habe ein FPGA-Board entworfen, das zu einem einzelnen Knoten von vielen in einem Rechencluster wird, den ich für einige wissenschaftliche Berechnungen baue. Die Hoffnung ist, es skalierbar zu machen und es mir zu ermöglichen, es zu aktualisieren, um es auf weitere Formen der Berechnung (Sicherheit, Simulationen usw.) auszudehnen.

Im Wesentlichen habe ich Entwicklungsboards verwendet, um GPIO und USB, Ethernet und dergleichen zu simulieren und zu testen. Meine Implementierung verwendet jedoch derzeit 4 FPGAs, und ich beabsichtige, diese Zahl zu erhöhen, und mein Budget unterstützt einfach nicht den Kauf mehrerer Entwicklungsboards, um das Verschieben von Auftragsdaten zwischen den FPGAs zu testen.

Ich muss im Wesentlichen meine Umgebung simulieren, und obwohl ich über reichlich Rechenfähigkeiten verfüge (mir steht ein ganzes Labor zur Verfügung), versuche ich derzeit, eine Testbench zum Verschieben von Daten zwischen den FPGAs sowie einen DDR3-Speichercontroller zu entwickeln die ich für große Datenbewegungen und -manipulationen implementieren möchte.

Da ich bei meiner Arbeit mit FPGAs größtenteils auf die Verwendung eines Prüfstands verzichten konnte, muss ich noch einen entwickeln, um meine simulierten Ergebnisse zu verifizieren. All dies wurde bisher auf Xilinx erledigt.

Irgendwelche Ideen, wo ich mit der Entwicklung einer VHDL-Testbench beginnen kann?

Antworten (2)

Es hängt alles davon ab, was Sie simulieren möchten.

Es ist ziemlich einfach, eine Testbench zu erstellen, um eine Uhr zu erstellen, ein paar IOs einzurichten usw., aber es wird viel komplizierter, wenn Sie USB oder andere Protokolle simulieren möchten.

Diese Webseite vermittelt Ihnen ein ziemlich gutes allgemeines Verständnis dafür, wie dies zu tun ist:

FPGA-Programmierung Schritt für Schritt

Es gibt einige kommerzielle Tools, die Ihnen bei der Erstellung von TBs helfen, aber es gibt auch kostenlose Tools wie „ The VHDL Test Bench “, mit denen Sie die TBs schneller und einfacher erstellen können.

Für ein großes Projekt wie Ihres (ich nehme an, es ist groß, da Sie 4 FPGAs in Ihrem Design und viele IPs haben), würde ich vorschlagen, dass Sie sich hinsetzen und entscheiden, WAS Sie testen möchten, was Ihr Ziel mit der Simulation ist und wie viel Zeit, die Sie dafür aufwenden möchten. Erstellen Sie dann eine Liste der Blöcke, die Sie testen möchten, und finden Sie entweder Stimuli-Dateien für sie oder schreiben Sie sie selbst.

Ich simuliere die Weitergabe von Daten zwischen den FPGAs. Ich weiß, was ich testen möchte, ich hatte nur immer Hardware zum Überprüfen, anstatt die gesamte Umgebung zu simulieren. Ich werde versuchen, den von Ihnen bereitgestellten Link zu verwenden, um damit zu beginnen. Da ich bei großen Datensätzen, die berechnet werden müssen, eine Parallelität zwischen den FPGAs herstelle. Ich werde auch Tests einrichten, um das Schreiben in den DRAM zu überprüfen. Danke!
Wenn Sie 4 FPGA inklusive DRAM-Zugriff testen möchten, sehen Sie sich eine SEHR große und langsame Simulation an, ist es die RTL-Simulation, die Sie interessiert (reine Funktionalität) oder das Timing?

Prüfstände sind nicht so schwierig. Ein Ausgangspunkt für die Lektüre könnte die Website von Doulos sein . Dort finden Sie eine kurze Einführung in Testbenches.

Kurz gesagt, Sie schreiben sie in einer HDL-Sprache (VHDL, Verilog, ...). Der Prüfstand spielt die Rolle der Welt außerhalb Ihres Designs/FPGAs. Es könnte also einige Eingangstakte oder andere Eingangssignale erzeugen. Und könnte überprüfen, ob die Ausgabe Ihres Designs Ihren Erwartungen entspricht. Ihr Design selbst ist dann ein instanziierter Block (normalerweise als DUT, Device Under Test bezeichnet) in Ihrer Testbench.

Sie kompilieren die Testbench und entwerfen mit einem Compiler und simulieren beispielsweise mit Modelsim (Mentor) oder Isim (Xilinx).