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
wireundregin 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.