SystemVerilog Support

The Efinity® software supports the following SystemVerilog constructs:

Table 1. Support SystemVerilog Constructs
Data Type Status
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
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 querying functions Supported
Unpacked unions Supported
Tagged unions Not Supported
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
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 Supported
Operators and Expressions
$error, $warning, $info Supported only within initial blocks, and can only be used to evaluate constant expressions such as parameters. Can be called from a generate block in SystemVerilog 2009.
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 Supported
Set membership operator Supported
Procedural Programming Statement
Loop statements Supported
unique-if, unique0-if, and priority-if Supported
Assert Statements Supported
Jump statements Supported
Pattern matching conditional statements Supported
unique-case, unique0-case, and priority-case Supported
Tasks
Static and automatic tasks Supported
Functions
Return values and void functions Supported
Static and Automatic function Supported
Constant function Supported
Virtual functions 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 Supported
Compiler Directives
Compiler directives Supported
Modules and Hierarchy
Module instantiation syntax Supported
Member selects Supported
Overriding module parameters Supported
Top-level modules and $root Supported
Binding auxiliary code to scopes or instances Supported
Hierarchical names Partially Supported. See Hierarchical Names Support for details.
Interfaces
Interface syntax Supported
Modport expressions Supported
Parameterized interfaces Supported
Ports in interfaces Supported
Array of interfaces Supported
Clocking blocks and modports Supported
Dynamic arrays Not Supported
Example of exporting tasks and functions Not Supported
Example of multiple task exports Not Supported
Nested interface Supported
Virtual interfaces Supported
Packages
Package declarations Supported
Referencing data in packages Supported
Generate Constructs
Generate constructs Supported
Config Statements
config statements Supported
Classes
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
Virtual classes Supported
Abstract classes Supported
Assignment with base class object Not Supported
Object comparison with NULL Not Supported