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]
| 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 |
9.2.2.1 | Supported | |
Latched logic always_latch procedure |
9.2.2.3 | Supported | |
Sequential logic always_ff procedure |
9.2.2.4 | Supported | |
| Sequential blocks | 9.3.1 | Supported | |
| Parallel blocks | 9.3.2 | Supported | |
| Procedural timing controls | 9.4 | Supported | |
| Conditional event controls | 9.4.2.3 | Supported | |
| Sequence events | 9.4.2.4 | 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 | 11.4.3.1 | 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
|
11.4.14.1 | Supported | |
| Re-ordering of the generic stream | 11.4.14.2 | Supported | |
| Streaming concatenation as an assignment target (unpack) | 11.4.14.3 | Supported | |
| Streaming dynamically sized data | 11.4.14.4 | 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 |
12.4.2.1 | Supported | |
| If statement violation reports and multiple processes | 12.4.2.2 | Supported | |
unique-case,
unique0-case, and priority-case
|
12.5.3 | Supported | |
Violation reports generated by unique-case,
unique0-case, and
priority-case construct |
12.5.3.1 | Supported | |
| Case statement violation reports and multiple processes | 12.5.3.2 | 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 | 23.2.2.4 | 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 |