SystemVerilog ist die Erweiterung von Verilog zu einer einheitlichen Hardware-Beschreibungs- und Verifikationssprache (HDVL). Der Standard IEEE 1800 (erste Ausgabe 2005, aktuell 1800-2023) fasst Design, Testbench-Programmierung und formale Assertions in einer Sprache zusammen. SystemVerilog ist rückwärtskompatibel zu Verilog und heute der Standard in der Chip-Verifikation.

Design-Verbesserungen

Für das Synthese-Design bringt SystemVerilog dedizierte Prozess-Klassen mit, die die Absicht klarer ausdrücken als das generische always:

module counter (
  input  logic clk, rst_n,
  output logic [7:0] count
);
  always_ff @(posedge clk or negedge rst_n) begin
    if (!rst_n) count <= 8'h00;
    else        count <= count + 1;
  end
endmodule
  • always_ff für taktflankengesteuerte, always_comb für kombinatorische und always_latch für Latch-Logik
  • logic ersetzt die Unterscheidung von wire und reg in den meisten Fällen
  • typedef, struct, enum und interface für strukturierte Datentypen und Port-Bündel

Verifikation: Klassen, Constraints und Assertions

Der große Zugewinn liegt in der Verifikation: Objektorientierte class-Testbenches, constrained random Stimuli, covergroups für die Funktionsabdeckung und Assertions (SVA) für temporale Eigenschaften. Die Universal Verification Methodology (UVM) von Accellera baut vollständig auf SystemVerilog auf. Über die Direct Programming Interface (DPI) lassen sich C-Funktionen direkt in die Testbench einbinden.

Werkzeuge

Open Source: Verilator unterstützt ein breites synthesizbares Subset und wird per verilator --cc --build --exe --timing in C++ übersetzt. Kommerzielle Simulatoren sind Synopsys VCS, Siemens Questa und Cadence Xcelium.

Verwandte Grundlagen: Verilog-Befehle, VHDL-Befehle, C/C++-Befehle, Python-Befehle.