Releases: nickg/nvc
1.14.1
This is a minor bug fix release with the following changes:
- Fixed an error when using the
work
library alias and the working library has the same name as design unit being analysed (#991). - Added a check for illegal references to signal or variable external names inside pure functions (#1010).
- Added a check that the parameter of
'stable
and other implicit signal attributes is a static expression (#1018). - Fixed an elaboration crash when an external name is passed to a procedure (#1029).
- Record subtype constraints can now be accessed over VHPI (#1035).
- Several other minor bugs were resolved (#1017, #1020, #1030, #1040).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.14.0
This is a major new release with the following changes:
- Waiting on implicit
'stable
and'quiet
signals now works correctly. - Updated to OSVVM 2024.07 and UVVM 2024.07.03b for
nvc --install
. - Added a warning when an inner declaration hides an outer declaration in a way that is likely to be unintentional (#905).
- The
-c
sub-command for coverage is deprecated and replaced with separate--cover-report
and--cover-merge
commands. See the manual for details. - The argument to the
--cover-export
command is now the path to a coverage database file instead of a top-level unit name. - The
--force-init
command which was deprecated in the 1.7 release has been removed. - Coverage exclude files now support
fold
command to merge coverage data from independent sub-hierarchies (from @Blebowski). - FSM state coverage bin renamed from
STATE
toBIN_STATE
. - A signature is now allowed in the formal part of generic map associations in VHDL-2019 mode.
use lib.pack.all
no longer makes the bare package namepack
potentially visible.- Very limited initial Verilog support has been added, including the ability to instantiate vendor-supplied UDPs from VHDL.
- Fixed a regression which caused parse errors for some concurrent assertion statements (#956).
- Arrays-of-arrays with
downto
direction are now dumped in the correct order (#957). - Fixed incorrect result of
'event
and'active
where the prefix is an array of records. - Fixed a crash when the
'stable
attribute is used with a record type (#960). - Conversion functions applied to individual record elements in a port map now work correctly (#963).
- External name elaboration order checks were overly strict (#964).
- Associating a signal with an
out
orinout
parameter in a procedure that is not within a process now produces an analysis error rather than crashing at runtime (#965). - The
--dump-arrays
option now takes an optional argument to specify an upper limit on the length of nested arrays to dump (#959). - Matching
case?
statements are now checked for duplicate and missing choices at analysis time (#966). - Limited maximum instantiation depth to prevent crashes due to stack overflow when elaborating a design that has unbounded recursive entity instantiation (#969).
- Physical subtype ranges and 64-bit integer types are now handled correctly by VHPI (#978).
- Added support for generic map on subprogram call in VHDL-2019 and improved support for array type generics.
- Optimised emission of FST initial signal values which also fixes a potential crash (#979).
- Added checks for duplicate attribute specification (#977).
- Several other minor bugs were resolved (#961, #962, #971, #975, #985).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.13.3
This release fixes a number of bugs that were discovered in the 1.13 branch:
- Type checking was not performed correctly for conversion function actuals in port maps (#945).
- Fixed a crash with signal aliases inside an instantiated generic package (#946).
- Fixed random crashes when the simulation heap size is eight gigabytes or larger (#949).
- Fixed a crash when a constant array with unconstrained element type is initialised with an aggregate (#954).
- External names in concurrent assertion statements and PSL assertions are now parsed correctly (#952).
- Several other minor bugs were resolved (#942, #943, #950, #951, #953).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, @ikwzm, and @augustofg for sponsoring me!
1.13.2
This release fixes a number of bugs that were discovered in the 1.13 branch:
- Fixed an incorrect bounds check error when a constant declaration has a partially constrained type (#932).
- Elaboration of large designs on Windows no longer fail with linker errors due to excessive command line length.
- Fixed a bug which prevented VCD files from being generated on Windows systems using the UCRT runtime library (#637).
- Fixed a crash when the type of a qualified expression is an unconstrained array-of-array (#934).
- Fixed random segmentation fault when the simulation heap size is larger than four gigabytes (#935).
- Fixed an incorrect ambiguous subprogram error when using the 1993 standard and calling a subprogram via a selected name such as
ieee.numeric_std."="
.
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @ikwzm for sponsoring me!
1.13.1
This release fixes a number of bugs that were discovered in 1.13.0:
- Windows installer was missing some standard library files.
- Fixed a regression where generics and ports could not be referenced in external names (#921).
- Fixed a crash when an unconstrained port with a default value is associated with
open
. - Fixed a duplicate symbol linker error with some uses of the
'delayed
attribute. - Fixed a crash when an aliased subprogram is matched by a generic subprogram
<>
(#924) - Fixed a crash when a generic package containing a subprogram is passed to an entity package generic (#925).
- Fixed an intermittent "failed to suspend thread" fatal error on macOS (#922).
- Fixed a crash when a shared variable is declared inside a instantiated generic package in 2019 mode (#923).
- Fixed a crash when a port with unconstrained array-of-record type is associated with a signal that has a static subtype.
- Fixed incorrect longest static prefix calculation for array slices containing
'length
,'left
,'right
and similar attributes (#930). - Fixed wrong result when slicing a generic that has an unconstrained array type (#931).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, and @johonkanen for sponsoring me!
1.13.0
This is a major new release with a large number of improvements and bug fixes:
- Type and package generics now work correctly with components and configurations (#883).
- Fixed a crash when a matching
case?
alternative contains multiple choices (#890). - Implemented VHPI support for package declarations and
vhpiPackInsts
iterators (#891). - Signatures in attribute names are now parsed correctly (#892).
- Attribute specifications for
all
are now parsed correctly (#889). - Predefined
"="
and"/="
operators are no longer declared for file types. - Alias of packages now work correctly (#893).
- Stricter checking of identifiers to reject those with multiple consecutive underscores or trailing underscores (from @typingArtist).
- Stricter checking for subprograms, deferred constants, and protected types referenced before their corresponding body or full declaration.
- Decimal physical literals like
8.2 ms
are now correctly rounded (to8200 us
in this case) when they are converted to the base unit (#899). - External names can now be passed as
signal
actuals to subprograms (#900). - Fixed a crash when branch coverage is enabled and an if-statement contains a
return
(#903). - The
NVC_CONCURRENT_JOBS
environment variable can be used to scale the number of worker threads NVC creates based on the number of concurrently executing simulations. - Fixed a crash when certain attributes such as
'val
are used in the target of a signal assignment statement (#908). - Signals in packages are now dumped to the FST file (#901).
- Function interface declarations can now be
pure
orimpure
(#917).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, and @albydnc for sponsoring me!
1.12.2
This is a minor release with an important compatibility fix for the latest LLVM version.
- Fixed a crash when
'transaction
is used with a record type. - Fixed a compatibility issue with LLVM 18 that could cause an illegal instruction exception when the
--jit
elaboration option is used (#887).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, and @ikwzm for sponsoring me!
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!