Menu
Coddy logo textTech

What Is A Testbench

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 73 von 90.

Ein testbench ist ein spezielles Verilog-module, das zum Testen eines anderen module verwendet wird. Es stellt deinem Design inputs bereit und prüft, ob die outputs korrekt sind.

Warum brauchen wir ein Testbench?

Wenn du ein Modul erstellst, musst du sicherstellen, dass es korrekt funktioniert. Mit einem Testbench kannst du:

  • Unterschiedliche Eingabewerte auf dein Modul anwenden
  • Die Ausgaben beobachten
  • Überprüfe, ob die Ausgaben deinen Erwartungen entsprechen
  • Führe dies automatisch ohne manuelles Testen durch

Testbench vs. Designmodul

 DesignmodulTestbench
ZweckImplementiert HardwareTestet das Designmodul
Hat ports?Ja (inputs und outputs)Nein (eigenständig)
Synthetisierbar?JaNein (nur simulation)

Einfaches Testbench-Beispiel

module testbench;              // Keine Ports!

  // Die Eingänge und Ausgänge kommen von dem Modul, das wir testen (dem DUT).
  reg a, b;                    // reg für Eingänge
  wire c;                      // wire für Ausgang
  

  // Dies ist eine Modulinstanziierung — sie erstellt eine Kopie des and_gate-Moduls und nennt sie dut
  and_gate dut (               // DUT instanziieren
    .a(a),
    .b(b),
    .c(c)
  );

  // Dies ist ein initial-Block, der Testwerte auf die Eingänge des zu testenden Moduls anwendet.
  initial begin                // Testwerte anwenden
    a = 0; b = 0; #10;
    a = 0; b = 1; #10;
    a = 1; b = 0; #10;
    a = 1; b = 1; #10;
    $finish;
  end
endmodule

Wichtige Punkte

  • Testbench hat keine ports
  • reg wird für signals verwendet, die sich ändern (inputs an DUT)
  • wire wird für signals von DUT (outputs) verwendet
  • Das getestete Modul heißt DUT (Design Under Test).
  • $finish beendet die Simulation.

In den folgenden Lektionen werden wir das Erstellen von Stimuli, das Anzeigen von Ergebnissen und weitere Funktionen von testbench behandeln.

challenge icon

Aufgabe

Du erhältst ein AND-Gattermodul. Deine Aufgabe besteht darin, die fehlenden Teile zu seinem testbench hinzuzufügen.

Was zu tun ist:

Füge die folgenden Teile zum testbench hinzu:

  1. Deklariere reg für die Eingänge a und b
  2. Deklariere wire für den Ausgang c
  3. Instanziiere and_gate mit dem Namen dut und verbinde die ports
REQUIRED OUTPUT FORMAT: [Your translated content here]

Probier es selbst

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

module testbench;
  
  // Aufgabe 1: Deklariere reg für die Eingänge a und b
  
  
  // Aufgabe 2: Deklariere wire für den Ausgang c
  

  // Aufgabe 3: Instanziiere and_gate mit dem Namen dut
  // Verbinde .a(a), .b(b), .c(c)


  initial begin
    a = 0; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 0; b = 1; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 1; #10 $display("%d & %d = %d", a, b, c);
    $finish;
  end
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler