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 | Not 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 |
|