Running SystemVerilog in Standalone or prj Mode - 2022.1 English

Vivado Design Suite User Guide: Logic Simulation (UG900)

Document ID
Release Date
2022.1 English

Standalone Mode

A new -sv flag has been introduced to xvlog, so if you want to read any SystemVerilog file, you can use following command:

    xvlog -sv <Design file list>
    xvlog -sv -work <LibraryName> <Design File List>
    xvlog -sv -f <FileName> [Where FileName contain path of test cases]

prj Mode

If you want to run the Vivado simulator in the prj-based flow, use sv as the file type, as you would verilog or vhdl.

xvlog -prj <prj File>
xelab -prj <prj File> <topModuleName> <other options>

Where the entry in prj file appears as follows:

verilog     library1 <FileName>
sv      library1 <FileName> [File parsed in SystemVerilog mode]
vhdl     library2 <FileName>
sv      library3 <FileName> [File parsed in SystemVerilog mode]

Table 1. Synthesizable Set of SystemVerilog 1800-2012
Primary construct Secondary construct LRM section Status
Data type   6  
  Singular and aggregate types 6.4 Supported
  Nets and variables 6.5 Supported
  Variable declarations 6.8 Supported
  Vector declarations 6.9 Supported
  2-state (two-value) and 4-state (four-value) data types 6.11.2 Supported
  Signed and unsigned integer types 6.11.3 Supported
  Real, shortreal and realtime data types 6.12 Supported
  User-defined types 6.18 Supported
  Enumerations 6.19 Supported
  Defining new data types as enumerated types 6.19.1 Supported
  Enumerated type ranges 6.19.2 Supported
  Type checking 6.19.3 Supported
  Enumerated types in numerical expressions 6.19.4 Supported
  Enumerated type methods 6.19.5 Supported
  Type parameters 6.20.3 Supported
  Const constants 6.20.6 Supported
  Type operator 6.23 Supported
  Cast operator 6.24.1 Supported
  $cast dynamic casting 6.24.2 Supported
  Bitstream casting 6.24.3 Supported
Aggregate data types   7  
  Structures 7.2 Supported
  Packed/Unpacked structures 7.2.1 Supported
  Assigning to structures 7.2.2 Supported
  Unions 7.3 Supported
  Packed/Unpacked unions 7.3.1 Supported
  Tagged unions 7.3.2 Not Supported
  Packed arrays 7.4.1 Supported
  Unpacked arrays 7.4.2 Supported
  Operations on arrays 7.4.3 Supported
  Multidimensional arrays 7.4.5 Supported
  Indexing and slicing of arrays 7.4.6 Supported
  Array assignments 7.6 Supported
  Arrays as arguments to subroutines 7.7 Supported
  Array querying functions 7.11 Supported
  Array manipulation methods 7.12 Supported
Processes   9  
  Combinational logic always_comb procedure 9.2.2 Supported
  Implicit always_comb sensitivities Supported
  Latched logic always_latch procedure Supported
  Sequential logic always_ff procedure Supported
  Sequential blocks 9.3.1 Supported
  Parallel blocks 9.3.2 Supported
  Procedural timing controls 9.4 Supported
  Conditional event controls Supported
  Sequence events Not Supported
Assignment statement   10  
  The continuous assignment statement 10.3.2 Supported
  Variable declaration assignment (variable initialization) 10.5 Supported
  Assignment-like contexts 10.8 Supported
  Array assignment patterns 10.9.1 Supported
  Structure assignment patterns 10.9.2 Supported
  Unpacked array concatenation 10.10 Supported
  Net aliasing 10.11 Not Supported
Operators and expressions   11  
  Constant expressions 11.2.1 Supported
  Aggregate expressions 11.2.2 Supported
  Operators with real operands 11.3.1 Supported
  Operations on logic (4-state) and bit (2-state) types 11.3.4 Supported
  Assignment within an expression 11.3.6 Supported
  Assignment operators 11.4.1 Supported
  Increment and decrement operators 11.4.2 Supported
  Arithmetic expressions with unsigned and signed types Supported
  Wildcard equality operators 11.4.6 Supported
  Concatenation operators 11.4.12 Supported
  Set membership operator 11.4.13 Supported
  Concatenation of stream_expressions Supported
  Re-ordering of the generic stream Supported
  Streaming concatenation as an assignment target (unpack) Supported
  Streaming dynamically sized data Supported
Procedural programming statement   12  
  unique-if, unique0-if and priority-if 12.4.2 Supported
  Violation reports generated by unique-if, unique0-if, and priority-if constructs Supported
  If statement violation reports and multiple processes Supported
  unique-case, unique0-case, and priority-case 12.5.3 Supported
  Violation reports generated by unique-case, unique0-case, and priority-case construct Supported
  Case statement violation reports and multiple processes Supported
  Set membership case statement 12.5.4 Supported
  Pattern matching conditional statements 12.6 Not Supported
  Loop statements 12.7 Supported
  Jump statement 12.8 Supported
Tasks   13.3  
  Static and Automatic task 13.3.1 Supported
  Tasks memory usage and concurrent activation 13.3.2 Supported
Function   13.4  
  Return values and void functions 13.4.1 Supported
  Static and Automatic function 13.4.2 Supported
  Constant function 13.4.3 Supported
  Background process spawned by function call 13.4.4 Supported
Subroutine calls and argument passing   13.5  
  Pass by value 13.5.1 Supported
  Pass by reference 13.5.2 Supported
  Default argument value 13.5.3 Supported
  Argument binding by name 13.5.4 Supported
  Optional argument list 13.5.5 Supported
  Import and Export function 13.6 Supported
  Task and function name 13.7 Supported
Utility system tasks and system functions (only synthesizable set)   20 Supported
I/O system tasks and system functions (only synthesizable set)   21 Supported
Compiler directives   22 Supported
Modules and hierarchy   23  
  Default port values Supported
  Top-level modules and $root 23.3.1 Supported
  Module instantiation syntax 23.3.2 Supported
  Nested modules 23.4 Supported
  Extern modules 23.5 Supported
  Hierarchical names 23.6 Supported
  Member selects and hierarchical names 23.7 Supported
  Upwards name referencing 23.8 Supported
  Overriding module parameters 23.10 Supported
  Binding auxiliary code to scopes or instances 23.11 Not Supported
Interfaces   25  
  Interface syntax 25.3 Supported
  Nested interface 25.3 Supported
  Ports in interfaces 25.4 Supported
  Example of named port bundle 25.5.1 Supported
  Example of connecting port bundle 25.5.2 Supported
  Example of connecting port bundle to generic interface 25.5.3 Supported
  Modport expressions 25.5.4 Supported
  Clocking blocks and modports 25.5.5 Supported
  Interfaces and specify blocks 25.6 Supported
  Example of using tasks in interface 25.7.1 Supported
  Example of using tasks in modports 25.7.2 Supported
  Example of exporting tasks and functions 25.7.3 Supported
  Example of multiple task exports 25.7.4 Supported
  Parameterized interfaces 25.8 Supported
  Virtual interfaces 25.9 Supported
Packages   26  
  Package declarations 26.2 Supported
  Referencing data in packages 26.3 Supported
  Using packages in module headers 26.4 Supported
  Exporting imported names from packages 26.6 Supported
  The std built-in package 26.7 Supported
Generate constructs   27 Supported