Releases: nickg/nvc
1.12.1
This is a minor bug fix release fixing the following issues:
- Fixed a crash when a process contains a
force
orrelease
assignment inside aprocess (all)
statement (#877). - Fixed a crash creating a waveform dump with
--dump-arrays
and the design contains an array-of-array-of-records (#878). - Fixed a spurious error when a type declaration from a package generic is used in a port list (#881).
- Fixed an assertion failure when a procedure declared within a
process (all)
assigns to a signal (#882). - Added a missing check for illegal assignment to external signal name outside a process (#884).
- Fixed a crash while printing diagnostic information when the simulation delta cycle limit is reached (#885).
- Generic actuals no longer need to be globally static, which was never required by the LRM (#886).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, and @ikwzm for sponsoring me!
1.12.0
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!
1.11.3
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 inprocess (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!
1.11.2
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
andvhpiIsDiscreteP
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!
1.11.1
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!
1.11.0
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
andto_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
andpath_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!
1.10.4
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!
1.10.3
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!
1.10.2
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"
whereG
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!
1.10.1
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 standardto_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!