Releases: nickg/nvc
1.9.1
This is a minor maintenance release to resolve several issues found in 1.9:
- Fix build errors and warnings on MSYS2 Clang x64 environment.
- Fix build failure due to missing
SHT_X86_64_UNWIND
on Alpine and Ubuntu 18.04 (#666). - Elaboration now works correctly when the
--with-system-cc=
configure argument is given a non-absolute path (#667). - Fixed a crash when a subprogram declared in a for-generate block is called during elaboration (#668).
- Real to physical or 64-bit integer conversion now produces the correct result when evaluated during elaboration (#669).
- Matching
case?
statements are now handled correctly insideprocess (all)
(#670). - Pass
-no_fixup_chains
to linker on macOS to avoid warning. ;
can now be used as a separator in the--work
and--map
arguments on Windows in addition to:
(#671).
Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!
1.9.0
This is a major new release with the following changes:
- Code generation has been rewritten to enable faster elaboration and "just-in-time" compilation in the future.
- Now compatible with LLVM 16.
- Implemented the VHDL-2019 call path reporting API.
- The
elsif
VHDL-2019 conditional analysis directive now works correctly (#604). - The
'transaction
implicit signal no longer incurs a delta-cycle delay. x'ascending
now reports the correct result ifx
has unconstrained array type and null range.- The predefined
"="
operator on record types now always uses the predefined equality comparison for fields even in the presence of a user-defined"="
operator. - It is no longer necessary on Windows to link VHPI plugins at elaboration time with
NVC_FOREIGN_OBJ
. Use the--load
option to load the plugin at run time as on other operating systems. - The experimental
--jit
elaboration option defers native code generation until run time. This can dramatically reduce total test time for short-running simulations. - Statements like
wait for X
whereX
is negative but not a constant now produce an error at run time (#633). - NVC is now supported by VUnit.
- Implicit signal attributes like
'transaction
are now considered static signal names (#640). - Added support for fine-grained coverage collection via
--coverage-spec
elaboration option (from @Blebowski). - The ABI for passing unconstrained arrays to foreign subprograms changed slightly, see the manual for details.
- Implemented new file I/O operations from VHDL-2019.
- Added analysis option
--define
to set user-defined conditional analysis identifiers (from @Blebowski). - Optional support for using ZSTD to compress library files if
libzstd-dev
is installed. - ISO-8859-1 extended characters are now handled properly in identifiers and when printing to the terminal.
- The new
configure
option--disable-default-paths
disables the default library search paths (#652). - Subtype indications used as case range choices no longer crash during analysis (#655).
- The default standard version was changed to VHDL-2002 and will likely change again to -2008 in a future release. Users are recommended to use the
--std=
option to specify an explicit standard revision to avoid any compatibility issues. - Fixed a crash when elaborating a port map which contains a subtype of a record (#662).
- Implemented VHDL-2019 syntax relaxations for empty records and trailing semicolon in interface lists (from @bpadalino).
- A Bash auto-completion script is now installed by default. Run
configure
with--without-bash-completion
to disable this.
Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!
1.8.2
This is a minor bug fix release for the following issues:
- Fixed "failed to suspend thread" crash on macOS.
- Fix incorrect coverage scope nesting with array case statements (from @Blebowski).
- Expressions like
FOO(X)'DELAYED
now work as expected rather than producing a fatal error (#603). - Fixed a bug where data was not propagated through inout ports under certain conditions (#609).
- The
-gNAME=VALUE
option to set generic values from the command line now works correctly for subtypes of enumeration types (#618). - Fixed a crash when creating an array of record subtypes where the subtype declaration has an element constraint (#615).
Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!
1.8.1
1.8.0
This is a major new release with many improvements and bug fixes, especially for VHDL-2008 features.
- The
--disable-opt
and--native
elaborate options which were deprecated in version 1.3 have been removed. - The JSON dumper which was unmaintained for several years has been removed.
- VHDL-2019 mode can be enabled with
--std=2019
. Please note there is very limited support for this standard at present. - The new
--no-save
elaboration option skips saving the elaborated design and other generated files to the working library. - Added support for
else
andelsif
in generate statements (#510). - Xilinx Vivado vendor libraries can now be compiled with
nvc --install vivado
. - LLVM 8.0 or later is now required due to deprecation of non-opaque pointers.
- Altera/Intel Quartus vendor libraries can now be compiled with
nvc --install quartus
. - The
nvc --version
output now includes the commit hash if built from a Git checkout. - The new
--gtkw
run option writes a.gtkw
save file for GtkWave containing all the signals in the design (suggested by @amb5l). libffi
is now a build-time dependency.- Negation of the smallest negative value of a type such as
-integer'left
now produces an error. - Default OSVVM version updated to 2022.11.
case .. generate
statements are now supported in VHDL-2008.- Coverage implementation was reworked and now collects statement,
branch, expression and toggle metrics (from @Blebowski). - The
--make
command is deprecated and will be repurposed in a later release. Use the new--print-deps
command instead to generate Makefile dependencies.
Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!
1.7.2
This is bug fix release on the 1.7.2 branch and includes an important update for LLVM 15 compatibility.
- Fixed build on FreeBSD/arm (#534).
- Fixed crash with generic package instantiation (#520).
- Now compatible with LLVM 15.0.
- Fixed calculation of longest static prefix with
'RANGE
expression (#542). MOD
andREM
are now defined for physical types in VHDL-2008 (#540).- Signal declarations are now allowed in entity declarative part (#547).
- Protected objects are now allowed in concurrent procedure calls (#547).
- Opening a file with
APPEND_MODE
now actually appends to the file instead of truncating (#551).
Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!
1.7.1
This is a bug fix release on the 1.7 branch with the following changes:
- Added missing textio
WRITE [LINE, REAL, STRING]
in VHDL-2008. - Added support for FreeBSD/powerpc (#503, #504, from @pkubaj).
- Fixed "missing vcode unit" error during elaboration (#502).
- Fixed crash with recursive entity instantiation (#502).
- Fixed error with expressions like
X'ELEMENT'LENGTH
(#508). - Added support for FreeBSD/i386.
- Fixed crash reading resolved value of record signal (#502).
- Improved folding of for-generate expressions (#514).
- Fixed memory leak when forcing signals.
- Fixed crash with type conversion in generic map (#518).
- Fixed crash with expressions like
X'DELAYED'STABLE
(#517). - External names now work with record signals (#520).
- Xilinx Vivado vendor libraries can now be compiled with
nvc --install vivado
. - VITAL libraries are now built by default on Windows.
- Fixed build with old versions of Glibc.
- Resolution functions with nested record types now behave correctly (#516).
- Avoid repeated
stat(2)
calls when accessing library. - Fixed very slow elaboration in some cases with function calls in generic map expressions.
- Fixed intermittent segfault during elaboration (#506).
- Fixed incorrect constant folding of case statements with range choices.
- Fixed crash with constrained array declared in entity.
- Real valued signals can now be dumped in FST files (#524).
- Fixed signal assignment delay with side effects being evaluated twice (#527).
- An error is now reported for duplicate choices in array-type case statements (#528).
Special thank you to @bpadalino, @tmeissner, @Blebowski and @amb5l for sponsoring me!
1.7.0
This is a major new release with significantly improved support for VHDL-2008.
- Breaking change: In-tree builds are no longer supported: use a separate build directory instead.
- Breaking change: The
--force-init
command is deprecated and has no effect. - Added support for VHDL-2008 type generics on packages and entities.
- Diagnostic messages have been enhanced with more contextual information.
- Added support for record element constraints and record fields with unconstrained array types.
- Alias of multidimensional array allowed in VHDL-2008 mode.
- Implemented VHDL-2008 rules for aggregates with slices.
- VHPI is now always enabled at build time and the
--enable-vhpi
configure option has no effect. - Arithmetic operations that overflow the underlying machine type now produce an error (#101).
- Added support for VHDL-2008 force/release assignments.
- Basic support for external names in VHDL-2008.
- Matching case
case?
statements are supported in VHDL-2008 mode. - Fixed several bugs in the implementation of guarded signals.
- Implemented VHDL-2008 rules for generic visibility.
- Shared variable declaration permitted in entity declaration.
- Case expression no longer requires a locally static subtype in VHDL-2008 mode (#460).
- The VHDL heap is now garbage collected as required by VHDL-2019 and the
deallocate
operator has no effect other than setting the access tonull
. - A new global option
-H
specifies the size of the simulation heap and defaults to 16 megabytes. - Concurrent procedure call allowed in entity statement part.
- Added support for
'SUBTYPE
and'ELEMENT
attributes in VHDL-2008. - The new top-level
--init
command creates a new empty library directory. - The
-a
analysis command now reads from the standard input if the file name is-
. - Added support for array element constraints in VHDL-2008.
- The
--prefer-explicit
analysis option which was deprecated before the 1.0 release has been removed. - A new
--relaxed
analysis option enables "relaxed rules" mode. This has the same effect as enabling all the existing--relax=
options. However some constructs will still produce warnings. - The
--relax=
analysis option is deprecated and is now equivalent to passing--relaxed
. The individual options are ignored. - Added support for generic subprograms in VHDL-2008.
- New command
--install
allows easy installation of common third-party packages such as OSVVM and UVVM. - Identifiers in waveform dumps are now in lower case instead of upper case.
- The function
CURRENT_DELTA_CYCLE
inNVC.SIM_PKG
can be used to query the current delta cycle number.
Special thank you to @bpadalino and @tmeissner for sponsoring me!
1.6.2
This is a bug fix release on the 1.6 branch.
- Fix
make -j
with GNU make (#440). - Subtraction from zero could return the wrong result in some circumstances.
- Fix incorrect code generation for access-to-array.
- Fix assertion failure with nested context.
- Generic declarations are now allowed to hide the entity name.
- Fix spurious error about duplicate declarations when using VHDL-2008 context declarations.
- Fix incorrect default generic value when component and entity specify generics in different order (#448).
- Postponed processes with sensitivity lists now work correctly.
- Unit tests no longer fail when built without debug symbols (#445).
- Simulation now correctly terminates when time reaches
TIME'HIGH
. - Assertion failure and report messages were not printed during the initialisation phase of the simulation.
1.6.1
This is a minor bug fix release on the 1.6 branch.
- Fix compatibility with BSD make (#440).
- Fix an out-of-memory condition when initialising processes (#441).
- Fix incorrect generic value in binding specification (#442).
- Fix spurious error in overload resolution if required arguments follow optional arguments (#443).
- Fix intermittent crash generating code for enumerated types (#444).
- Minor elaboration performance optimisation.