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 (2) |
|
|
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 |
Partial support, synthesizable constructs only |
|
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. 2. The processing for hierarchical names is done post elaboration. Because of this,the connections will not be seen in the elaborated view. They will only start appearing in the post synthesis view. |
||