The following table lists the SystemVerilog constructs. Constructs that are not supported are shaded in gray.
| Construct | Status |
|---|---|
| Data type | |
| Singular and aggregate types | Supported |
| Nets and variables | Supported |
| Variable declarations | Supported |
| Vector declarations | Supported |
| 2-state (two-value) and 4-state (four-value) data types | Supported |
| Signed and unsigned integer types | Supported |
| User-defined types | Supported |
| Enumerations | Supported |
| Defining new data types as enumerated types | Supported |
| Enumerated type ranges | Supported |
| Type checking | Supported |
| Enumerated types in numerical expressions | Supported |
| Enumerated type methods | Supported |
| Type parameters | Supported |
| Type operator | Supported |
| Cast operator | Supported |
| Bitstream casting | Supported |
| Const constants | Supported |
| $cast dynamic casting | Not Supported |
| Real, shortreal, and realtime data types | Supported |
| Aggregate data types | |
| Structures | Supported |
| Packed/Unpacked structures | Supported |
| Assigning to structures | Supported |
| Packed arrays | Supported |
| Unpacked arrays | Supported |
| Operations on arrays | Supported |
| Multidimensional arrays | Supported |
| Indexing and slicing of arrays | Supported |
| Array assignments | Supported |
| Arrays as arguments to subroutines | Supported |
| Array manipulation methods (those that do not return queue type) | Not Supported |
| Array querying functions | Not Supported |
| Unpacked unions | Supported |
| Tagged unions | Not Supported(1) |
| Packed unions | Supported |
| Processes | |
| Combinational logic always_comb procedure | Supported |
| Implicit always_comb sensitivities | Supported |
| Latched logic always_latch procedure | Supported |
| Sequential blocks | Supported |
| Sequential logic always_ff procedure | Supported |
| Iff event qualifier | Supported |
| Aliases | Supported |
| Conditional event controls | Not Supported |
| Parallel blocks | Not Supported |
| Procedural timing controls | Not Supported |
| Sequence events | Not Supported |
| Assignment statement | |
| The continuous assignment statement | Supported |
| Variable declaration assignment (variable initialization) | Supported |
| Assignment-like contexts | Supported |
| Array assignment patterns | Supported |
| Structure assignment patterns | Supported |
| Unpacked array concatenation | Supported |
| Net aliasing | Not Supported |
| Operators and expressions | |
| $error, $warning, $info | Supported only within initial blocks, and can only be used to evaluate constant expressions; for example, parameters. |
| Aggregate expressions | Supported |
| Arithmetic expressions with unsigned and signed types | Supported |
| Assignment operators | Supported |
| Assignment within an expression | Supported |
| Concatenation operators | Supported |
| Constant expressions | Supported |
| Increment and decrement operators | Supported |
| Operations on logic (4-state) and bit (2-state) types | Supported |
| Wildcard equality operators | Supported |
| Concatenation of stream_expressions | Supported |
| Operators with real operands | Not Supported |
| Re-ordering of the generic stream | Not Supported |
| Set membership operator | Not Supported |
| Streaming concatenation as an assignment target (unpack) | Supported |
| Streaming dynamically sized data | Not Supported |
| Procedural programming statement | |
| Case statement violation reports and multiple processes | Supported |
| Loop statements | Supported |
| Unique-if, unique0-if and priority-if | Supported |
| Assert Statements | Not Supported |
| If statement violation reports and multiple processes | Not Supported |
| Jump statements | Not Recommended |
| Pattern matching conditional statements | Not Supported |
| Set membership case statement | Not Supported |
| unique-case, unique0-case, and priority-case | Supported |
| Violation reports generated by unique-if, unique0-if, and priority-if constructs | Not Supported |
| Tasks | |
| Coverage control functions | Not Supported |
| Static and Automatic task | Supported |
| Tasks memory usage and concurrent activation | Not Supported |
| Functions | |
| Return values and void functions | Supported |
| Static and Automatic function | Supported |
| Constant function | Supported |
| Background process spawned by function call | Not Supported |
| Virtual Functions | Not Supported |
| Subroutine calls and argument passing | |
| Argument binding by name | Supported |
| Default argument value | Supported |
| Pass by reference | Supported |
| Pass by value | Supported |
| Optional argument list | Not Supported |
| Compiler Directives | |
| Supported | |
| Modules and Hierarchy | |
| Default port values | Supported |
| External modules | Supported |
| Module instantiation syntax | Supported |
| Member selects | Supported |
| Overriding module parameters | Supported |
| Top-level modules and $root | Supported |
| Binding auxiliary code to scopes or instances | Not Supported |
| Hierarchical names | Supported |
| Upwards name referencing | Not Supported |
| Interfaces | |
| Interface syntax | Supported |
| Modport expressions | Supported |
| Parameterized interfaces | Supported |
| Ports in interfaces | Supported |
| Array of interface | Supported |
| Clocking blocks and modports | Not Supported |
| Dynamic Arrays | Not Supported |
| Example of exporting tasks and functions | Not Supported |
| Example of multiple task exports | Not Supported |
| Interfaces and specify blocks | Not Supported |
| Nested interface | Not Supported |
| Virtual interfaces | Not Supported |
| Packages | |
| Package declarations | Supported |
| Referencing data in packages | Supported |
| Using packages in module headers | Supported |
| Exporting imported names from packages | Supported |
| The std built-in package | Not Supported |
| Generate constructs | |
| Supported | |
| config statements | |
| Supported | |
| Class | |
| Instances | Supported |
| Member and method access | Supported |
| Constructors | Supported |
| Static class member and methods | Supported |
| Access using 'this' and 'super' | Supported |
| Object assignment | Supported |
| Inheritance | Supported |
| Data hiding and encapsulation | Supported |
| Scope and resolution operator (::) | Supported |
| Nested classes | Supported |
| Objects inside structs | Supported |
| Virtual Classes | Not Supported |
| Abstract classes | Not Supported |
| Assignment with base class object | Not Supported |
| Object comparison with NULL | Not Supported |
|
|