SystemVerilog
string データ型は任意長のテキスト文字列を表す。
設計で使われる静的配列に加え、SystemVerilog は動的配列、連想配列、キューを提供する:
動的配列は非詰め込み型の配列のように働くが、上で示したように動的に生成されなければならない。この配列は必要に応じてサイズを変更できる。連想配列はユーザー指定のキーの型とデータ型による二分探索木のようなものである。キーによる暗黙の順序付けがあり、辞書式順序で読み出すことができる。キューは C++ の STL にある deque 型の機能とほぼ同等のものを提供する。要素の追加や削除がキューの両端から可能である。これらのデータ型は大規模設計で必要となる複雑なデータ型の生成を可能とする。
SystemVerilog はオブジェクト指向プログラミングモデルも提供する。
SystemVerilog クラスは、単一インタフェースモデルである。Javaの interface のように複数のインタフェースを使用することはできない。SystemVerilog のクラスは型をパラメータ化でき、C++ のテンプレートのような機能を提供する。しかし、関数テンプレートやテンプレートの特殊化は対応していない。
ポリモーフィズム機能はC++と似ている。virtual 指定で関数を書くことで、派生型がその関数の制御を奪うことができる。
カプセル化とデータ隠蔽は local および protected というキーワードで実現され、任意のアイテムに指定して隠蔽できる。デフォルトでは、全てのクラス属性が public である。
SystemVerilog のクラスのインスタンスは new キーワードで生成する。function new でコンストラクタを定義できる。SystemVerilog はガベージコレクションもサポートしており、インスタンスを明示的に解放・消去する機能はない。
例: