SystemVerilog
Die Erweiterung, die Verilog zugleich zu einer Entwurfs- und einer Verifikationssprache machte. In der Praxis zwei verschiedene Sprachen, die sich zufällig eine Dateiendung teilen.
Die Entwurfshälfte ist überschaubar, aber wertvoll: strengere Typen, gepackte Strukturen und Aufzählungen sowie Blöcke wie always_ff und always_comb, in denen man seine Absicht deklariert, damit das Werkzeug widerspricht, wenn der Code nicht dazu passt. Interfaces erlauben es, zusammengehörige Signale zu bündeln, statt sie in jedem Modulkopf einzeln aufzuzählen. Die Verifikationshälfte ist deutlich größer und objektorientiert — Klassen, Vererbung, bedingungsbasierte Zufallsstimulation, funktionale Coverage-Messung und eigenschaftsbasierte Assertions — und darauf baut das gesamte UVM auf. Die Trennung ist so ausgeprägt, dass Design- und Verifikationsingenieure faktisch in getrennten Teilmengen arbeiten und oft Mühe haben, den Code der jeweils anderen Seite zu lesen.