NVC - VHDL Compiler and Simulator

Language Support

NVC supports almost all of IEEE 1076-1993 and 1076-2002. Please report any missing or incorrectly implemented features.


IEEE 1076-2008 was a major update to the VHDL standard. NVC supports many of the new features, please consult the table below.

Package generics 1.6
Subprogram generics 1.7
Generic types 1.7
PSL integrated into VHDL
New fixed and floating point arithmetic packages 1.7
/* */ block comments 1.6
New standard functions minimum, maximum, to_string, etc. 1.6
Function rising_edge is defined for boolean 1.7
Arrays and records may contain unconstrained elements 1.7
New boolean_vector, integer_vector, etc. types 1.6
"Matching" case statement case? 1.7
force and release for signals 1.7
'INSTANCE_NAME etc. extended for package and subprogram instantiation
New standard environment package 1.4
New 'SUBTYPE and 'ELEMENT attributes 1.7
New condition operator ?? 1.6
Enhanced bit string literals 1.6
External names 1.7
Array slices in aggregates 1.7
Conditional and selected sequential statements 1.10
Extensions to generate statement 1.8
all in sensitivity list 1.6
Context declarations 1.4
New and enhanced IEEE standard packages 1.6


IEEE 1076-2019 was another major update to the VHDL standard. NVC has experimental support for some of the new features, please consult the table below.

LCS2016-001 Partially connected vectors on port map master
LCS2016-002 Allow access to protected type parameters on function interfaces master
LCS2016-004 Allow PT methods with AT and FT parameters master
LCS2016-006a File IO / TextIO updates 1.9
LCS2016-006c Directory API master
LCS2016-006e Environment API 1.10
LCS2016-006f Expose standard conditional analysis identifiers 1.9
LCS2016-007 Sequential declaration regions master
LCS2016-011 Date/time functions 1.10
LCS2016-012 'IMAGE and TO_STRING for composite types master
LCS2016-014 Composites of protected types
LCS2016-014a Pointers to composites of protected types 1.10
LCS2016_015 Standard functions to report calling path 1.9
LCS2016_015a Standard functions to report current file name 1.9
LCS2016-016 Anonymous types
LCS2016-018 Attributes for enumerated types master
LCS2016-018a New attributes - 'INDEX 1.10
LCS2016-018d New attributes - 'DESIGNATED_TYPE 1.10
LCS2016-019 Inferring constraints from initial values for signals and variables 1.10
LCS2016-023 Relax library requirement on configurations master
LCS2016-026c Long integers 1.10
LCS2016_030 Garbage collection 1.7
LCS2016-032 PATH_NAME and shared variables and subprograms
LCS2016-033 Composition with protected types master
LCS2016-034 Protected types with generic clause
LCS2016-036a Allow for conditional expressions in a declaration (baseline) 1.10
LCS2016-041 Record introspection/type reflection master
LCS2016-043 Attributes for PSL
LCS2016-045a Interface - defines new mode view construct for composite interface objects 1.10
LCS2016-045c Interface - 'CONVERSE for a mode view 1.10
LCS2016-047 Protected type: shared variables on entity interface 1.10
LCS2016-049 Map generics on subprogram call
LCS2016-050 API for assert master
LCS2016-055a Syntax regularisation - component declarations 1.9
LCS2016-059 Array type generics master
LCS2016-059a Allow ordering on any scalar array 1.10
LCS2016_061 Conditional compilation 1.4
LCS2016_071a Optional trailing semicolon 1.9
LCS2016_072b Function knows vector size 1.10
LCS2016_075 Closely related record types master
LCS2016_082 Empty record 1.9
LCS2016_086 All interface lists can be ordered 1.9
LCS2016_094a Conditional return statement 1.10
LCS2016_099 Extended ranges