Nvc Versions Save

VHDL compiler and simulator

r1.12.0

1 month ago

This is a major new release with the following features and bug fixes:

  • The --jit elaboration option no longer requires --no-save.
  • Fixed a crash when subtype bounds depend on a package instance generic (#815).
  • Fixed various issues in the implementation of guarded blocks and disconnection specifications (#829).
  • The --std option now controls which VHDL standard the --install command uses to compile third-party libraries (#836).
  • The prefix of an indexed or slice name now must be another name or function call, as required by the LRM (#835).
  • The implementation of conversions in port maps has been reworked and fixes a number of long-standing issues (#843).
  • Added support for inertial keyword in port maps (#843).
  • Fixed a bug where 'last_value could give the wrong result if the signal has multiple sources.
  • Updated to OSVVM 2023.09a and UVVM 2023.09.16 for nvc --install.
  • The --exit-severity= option now also controls which severity level results in a non-zero exit code (#850).
  • Improvements to waveform dumping for signals with record types or types with non-locally-static bounds (#851, #852).
  • The parameter for attributes with dimensions such as 'length(N) may be any integer type when --relaxed is passed (#862).
  • The default standard version was changed to VHDL-2008.
  • The --vhpi-trace option now implies --vhpi-debug.
  • The bounds of array aggregates are now calculated correctly in several corner cases (#873).
  • Added supported for VHPI foreign subprograms.
  • Resolved several other minor issues (#654, #854, #855, #859, #863).

For Windows users there is a new standalone MSI installer which does not depend on any MSYS2 installation.

As always thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, and @cmarqu for sponsoring me!

r1.11.3

3 months ago

This is a minor bug fix release fixing the following issues:

  • Fixed incorrect effective value when a signal has multiple sources due to port-collapsing optimisation (#824).
  • Signals that appear in aggregate choice expressions like (S downto 0 => '0') are now included in the sensitivity list for concurrent statement equivalent processes, and in process (all) (#825).
  • The direction of aggregates with range choices is now calculated correctly in VHDL-2008 mode (#826).
  • Fixed a memory corruption bug when evaluating certain aggregates that contain a range association (#827).
  • Resolved several other minor issues (#837, #839, #840).

As always thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, and @ikwzm for sponsoring me!

r1.11.2

4 months ago

This is a minor bug fix release fixing the following issues:

  • Fixed an incorrect length check in the equivalent process for non-static port map actuals (#817).
  • Library file names for design units that contain extended identifiers such as /Foo/ are now encoded in a way that avoids illegal characters and case sensitivity issues on Windows and macOS (#816).
  • Implemented vhpiIsNullP and vhpiIsDiscreteP for ranges.
  • Fixed a crash when an aliased enumeration literal appears in a case choice expression (#819).
  • Fixed calculation of longest static prefix with indexes and slices of a constant array (#820).
  • Fixed a crash during elaboration when simplifying an if-statement that depends on a generate parameter (#821).
  • Increased the limit on the number of subprogram arguments to allow compiling some Lattice IPs (from @sean-anderson-seco).

As always thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, and @cmarqu for sponsoring me!

r1.11.1

5 months ago

This is a minor bug fix release fixing the following issues:

  • Fix crash during elaboration when an if-statement branch is always taken (#812).
  • VHPI plugins can now access types in instantiated packages (from @sean-anderson-seco).
  • The --version output now includes the bare Git commit SHA if the program is built from a shallow clone with no tags (#813).

As always thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, and @a-panella for sponsoring me!

r1.11.0

5 months ago

This is a major new release with much improved support for VHDL-2019. Consult the features page for the current status of each LCS. This release also brings full support for cocotb!

  • New command --cover-export exports coverage data in the Cobertura XML format which is supported by most CI environments such as GitLab.
  • Generics on internal instances can now be overridden with the -g elaboration option. For example -g uut.value=42.
  • Implemented the 'reflect attribute and associated protected types from VHDL-2019.
  • Added support for VHDL-2019 sequential block statements.
  • Implemented the VHDL-2019 directory I/O functions in std.env.
  • Added VHDL-2019 assert API (with @Blebowski).
  • Implemented 'image, 'value and to_string for composite types in VHDL-2019.
  • Implemented the "closely related record types" feature from VHDL-2019.
  • Implemented the "composition with protected types" feature from VHDL-2019.
  • The new --shuffle option runs processes in a random order which can help to identify code that depends on a particular execution order.
  • Updated to OSVVM 2023.07 for nvc --install.
  • Various enhancements and fixes to the VHPI implementation.
  • Implemented the VHDL-2019 changes to instance_name and path_name for protected type variables.
  • VHPI error messages are no longer reported as diagnostic messages on the console. The new --vhpi-debug option restores the old behaviour.
  • Support for type conversions between arrays with closely related element types.
  • Added support for FSM state coverage collection (from @Blebowski).
  • An alias of a type now correctly creates implicit aliases for each predefined operator of that type (#776).
  • Improve overload resolution where a partial named association implies the formal parameter must be an array (#793).
  • Handling of implicit conversion for universal types has been reworked to better comply with the LRM.
  • Fixed a crash when string literal characters have a type which is an alias to another type (#801).
  • Added a warning when calling the predefined "=" and "/=" operators on arrays and the left and right hand sides have different lengths.
  • Expressions like abs(x)**2.0 are now parsed correctly (#805).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @nv-h for sponsoring me!

r1.10.4

7 months ago

This is a minor maintenance release fixing the following issues:

  • Fixed compatibility with LLVM 17.
  • Fixed an intermittent crash when using the --jit elaboration option.
  • Improved overload resolution when subprogram argument is known to have character type.
  • Improved bounds checking for port map actuals.
  • Fixed a crash with aggregates for record types that contain an unconstrained field (#768).
  • Fix spurious "checksum 00000000" error when analysing multiple design units and one contains use work.all (#769).
  • Fix crash when using the --relaxed analysis option and multiple warnings are printed (#770).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, and @a-panella for sponsoring me!

r1.10.3

8 months ago

This is a minor maintenance release fixing the following issues:

  • Fixed memory corruption in rare circumstances with functions declared in process declarative regions (#751).
  • Fixed a race condition when creating library directories that occasionally led to build failures with make -j (#746).
  • Aliases of protected type methods are now allowed.
  • Fixed a crash when a pragma appears outside of a design unit (#752).
  • Fixed a crash analysing an alias of an alias of a subprogram (#755).
  • Fixed an elaboration failure when an allocator expression has an array type with an unconstrained element (#756).
  • Fixed a memory leak in the --print-deps command.
  • Fixed a crash when evaluating globally static expressions during elaboration with coverage enabled (#759).
  • Fixed an analysis crash where a predefined function for a type declared in a package is overridden in the package body only (#760).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, and @ikwzm for sponsoring me!

r1.10.2

8 months ago

This is a minor maintenance release fixing the following issues:

  • Fixed a crash due to an array bounds check being incorrectly optimised out (#747).
  • The type of string literals and aggregates in generic map associations such as G => X"00" where G has a generic type can now be determined correctly (#750).
  • Fixed a spurious "duplicate declaration" error if a use clause for an instantiated package appears in the same declarative region that instantiated the package (#750).
  • Improved checking for configuration specifications.
  • Empty bit string literals are now parsed correctly.
  • Fixed stack corruption when a function returns an alias of one of its array arguments.

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, and @a-panella for sponsoring me!

r1.10.1

9 months ago

This is a minor maintenance release fixing the following issues:

  • Fixed incorrect sensitivity list generation with concurrent statements such as x <= C(y) where C is a constant array.
  • Fixed an incorrect optimisation which caused 'event to return the wrong value in rare circumstances.
  • Decimal bit string literals more than 64 bits wide are now supported (#731).
  • The format of fractional time values returned by the standard to_string function was changed to match other simulators.
  • Fixed a crash when constant folding a locally static expression in a package body (#742).
  • Added support for reading command line arguments in VHPI (from @Forty-Bot).
  • Fixed a compilation error when using the predefined minimum/maximum functions with arrays of physical types.
  • Overloaded protected procedure calls could read the wrong value of variables declared in the protected type in rare circumstances.

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, and @ikwzm for sponsoring me!

r1.10.0

10 months ago

The main focus of this release was VHDL-2019 support. Consult the features page for the current status of each LCS. If there is a VHDL-2019 feature you find particularly useful please raise an issue so it can be prioritised.

  • The Zstandard compression library is now a build dependency. Install libzstd-dev or similar.
  • The integer type is now 64-bit in VHDL-2019 mode.
  • The VUnit VHDL libraries can now be installed with nvc --install vunit but please note this does not install the Python infrastructure.
  • Updated to OSVVM 2023.05 and UVVM 2023.03.21 for nvc --install.
  • Conditional expressions are now allowed in constant, signal, and variable declarations in VHDL-2019 mode.
  • Conditional return statements are now supported in VHDL-2019.
  • Added support for the "function knows vector size" feature in VHDL-2019.
  • Entity ports with variable class and protected type are now supported in VHDL-2019 mode.
  • The xpm_vhdl project which provides VHDL models of the Xilinx XPM macros can now be installed with nvc --install xpm_vhdl.
  • Many improvements to the VHPI implementation (from @Forty-Bot).
  • vhpi_put_value with vhpiDepositPropagate mode is now supported.
  • The Synopsys std_logic_misc package is now compiled for 2008 (#696).
  • Fixed an issue where leading NUL characters in a report message would prevent the entire message being printed (#700).
  • Added support for interfaces in VHDL-2019 including mode view declarations, mode view indications, and the 'converse attribute.
  • Added support for VHDL-2008 matching select? statements (#705).
  • Added support for the new 'designated_subtype and 'index attributes in VHDL-2019.
  • Implemented the date/time functions from std.env in VHDL-2019.
  • The default exit severity was changed from error to failure. This means a failing assertion no longer immediately terminates the simulation. The old behaviour can be restored with --exit-severity=error.
  • Comparison operators as well as minimum/maximum functions are now defined for all scalar array types in VHDL-2019.
  • Added support for selected signal and variable sequential assignment statements.
  • The -a analysis command now accepts an -f list option where list is a text file containing a list of files to analyse. Alternatively this may be written @list.
  • Accesses to protected types and files are now allowed in VHDL-2019.
  • Fixed a crash when indexing a null array (#734).
  • Named and range choices are now supported in aggregate targets of variable and signal assignments (#712).
  • The synopsys.attributes package is no longer distributed or built as part of the standard libraries.

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, and @ikwzm for sponsoring me!