SystemVerilog Constructs - 2022.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
UG901
Release Date
2022-06-06
Version
2022.1 English

The following table lists the SystemVerilog constructs. Constructs that are not supported are shaded in gray.

Table 8-1:      SystemVerilog Constructs

 

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.