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 |
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 |
Not 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 |
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 |
Notes: 1.If used, tagged will be ignored and the tool will produce a warning message. |