SystemVerilog-Testbenches protokollieren

8. Juli 2009, 8:26 Uhr |
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 3

...zum besseren Verständnis

Die Struktur und Funktion von so komplexen Testbenches zu verstehen, kann dem einen oder anderen Anwender als abschreckende Aufgabe erscheinen. Debugger haben schon immer die Nase vorne gehabt, wenn es darum ging, HDL-Quellcode zu verstehen. Häufig verwendete Features wie die Untersuchung des Designs mit Hilfe einer Instanz-basierten hierarchischen Repräsentation oder die Rückverfolgung von Lasten und Treibern bauen auf einer Wissensdatenbank auf, die automatisiert aus dem Quellcode extrahiert wird. Zwar können einige dieser Funktionen auch auf Testbench-Code angewendet werden, aber noch weitaus interessanter ist es, Anwendern auf Grundlage der Wissendatenbank ein weitergehendes Verständnis von Testbenches zu ermöglichen. An dieser Stelle sei noch einmal betont, dass viele der hier vorgestellten Ideen Praktiken gewinnbringend nutzen, die sich bereits in der Softwareentwicklung als hilfreich erwiesen haben.

Design-Code wird üblicherweise hierarchisch mit Hilfe von in niedrigeren Abstraktionsebenen beschriebenen Modulen erstellt, die auf einer höheren Abstraktionsebene instanziiert werden. Module lassen sich dabei auch mehrfach erzeugen und in einem Design verwenden; Vergleichbar einer Baumstruktur, mit den Top-Level-Modulen an der Spitze und den Modulen in einer Beschreibung auf einer niedrigeren Abstraktionsebene darunter. Testbench-Code setzt sich dagegen wie C++ und andere objektorientierte Sprachen in erster Line aus Klassendeklarationen, Funktionen und Variablen zusammen. Während des Debugging und der Analyse der Testbench wünschen sich viele Anwender eine Funktion, mit der sie schnell zu einer Klasse, Funktion, Variable – und bei neueren Umgebungen – zu SystemVerilog-Contraint&Coverage-Code springen können. Debug- und Analyse-Werkzeuge müssen in der Lage sein, diese Art von Code zu importieren und aussagekräftig darzustellen. Dabei ist die stark auf Deklarationen aufbauende Natur des Testbench-Codes zu berücksichtigen (siehe Bild 3). Diese hierarchische Repräsentation muss zudem mit dem eigentlichen Quellcode verknüpft sein, so dass bei Auswahl einer Klasse, Funktion oder eines anderen Elements auch der zugehörige Quellcode angezeigt wird.

Bild03_31.jpg
Bild 3: Eine auf Instanzen gründende hierarchische, an UML angelehnte Repräsentation, die die Zusammenhänge (Klassenvererbung und gegenseitige Abhängigkeiten) darstellt, ist entscheidend, soll SystemVerilog-Testbench-Code für den Anwender verständlic

  1. SystemVerilog-Testbenches protokollieren
  2. SystemVerilog-Testbenches protokollieren
  3. SystemVerilog-Testbenches protokollieren
  4. ...zum besseren Verständnis
  5. Autoren:

Jetzt kostenfreie Newsletter bestellen!