SystemVerilog
# SystemVerilog

SystemVerilog ist eine Hardware-Beschreibungs- und Verifikationssprache (englisch Hardware Description and Verification Language, kurz HDVL genannt). Sie bietet Möglichkeiten zum Design und zur Verifikation von digitalen Schaltungen. SystemVerilog wurde von Accellera entwickelt und ist eine Erweiterung des IEEE 1364–2001 Verilog HDL. Dabei arbeitet SystemVerilog aber auf einer höheren Abstraktionsebene als Verilog-2001.

## Geschichte

Verilog-1995 ist schon seit vielen Jahren am Markt und stellt neben VHDL die meistgenutzte Hardwarebeschreibungssprache dar. Die IEEE hat die Eigenschaften von Verilog-1995 erweitert, diese wurden in Verilog-2001 klassifiziert. Dieser Sprachumfang ist aber immer noch ungenügend für eine leistungsfähige Verifikation der in Register Transfer Level (RTL) beschriebenen digitalen Hardware. Daher haben die Entwickler oft andere Sprachen wie „e“, Vera oder Testbuilder verwendet. Da SystemVerilog sowohl eine Hardwarebeschreibungssprache als auch eine Verifikationssprache ist, müssen beide Teile der Sprache gesondert betrachtet werden. Der Hardwarebeschreibungsaspekt von SystemVerilog ist eine konsistente Weiterentwicklung des Verilog-2001-Standards. Anders sieht es beim Verifikationsaspekt von SystemVerilog aus. Dieser Sprachteil wurde maßgeblich durch Synopsys Vera beeinflusst, entsprechend hebt sich dessen objektorientierte Syntax deutlich von Verilog-2001 ab.
Die Standardisierung von SystemVerilog erfolgte in mehreren Stufen. Im Juni 2002 erschien SystemVerilog 3.0, im Mai 2003 die Version 3.1 und schließlich im April 2004 die Version 3.1a. Mit der Entwicklung von SystemVerilog 3.1 sollten die wichtigsten Verifikationstechniken in SystemVerilog integriert werden. Seit 2005 wird SystemVerilog als IEEE Standard 1800 gepflegt. 2009 wurde der Standard erweitert und derjenige von IEEE 1364 darin absorbiert. 2013 wurde die nächste, eher geringfügige Überarbeitung unter der Bezeichnung IEEE 1800-2012 veröffentlicht.

## Allgemeines zu SystemVerilog

Einige der Eigenschaften von SystemVerilog:
* Datentypen analog zu 'C': int, typedef, struct, union, enum
* Dynamische Datentypen: struct, classes, „dynamic queues“, „dynamic arrays“
* Neue Operatoren und „built-in methods“
* Erweiterte Programmsteuerung: foreach, return, break, continue
* Semaphoren, Mailboxen und „events“
* Klassen für objektorientiertes Programmieren
* „assertions“
* Code-Überdeckungs-Analyse
* VPI-Erweiterungen (Verilog Procedural Interface)
Die IEEE hat SystemVerilog als IEEE-Standard 1800 genormt. Jeder mit C++-Erfahrung wird sich mit SystemVerilog schnell vertraut fühlen. Da SystemVerilog aber sehr viele Anleihen an C++ besitzt, wird es jemandem, der sich noch nie mit der objektorientierten Programmierung beschäftigt hat, schwerfallen, SystemVerilog im vollen Umfang zu nutzen.
SystemVerilog besteht aus drei Teilen: dem schon seit längerem bekannten und standardisierten Verilog, einem zweiten Teil, der das Schreiben von Assertions in SystemVerilog definiert, sowie dem objektorientierten Teil, der ausschließlich für die Verifikation verwendet wird.

## Funktionsweise

Beispiel die Verwendung von Zeichenketten und Bildschirmausgabe