Releases: nickg/nvc
1.17.1
This is a minor bug fix release with the following changes:
- Fixed a build failure on Linux Arm64 (#1246).
- An
others
choice is now allowed in an unconstrained array aggregate if the--relaxed
option is passed and the aggregate appears in one of the contexts where the VHDL-2019 "function knows vector size" feature applies (#641, #1175). - VHPI handles have been made more robust. A user-visible effect of this change is that handles with distinct pointer values may refer to the same object. Always use
vhpi_compare_handles
to compare handles rather than comparing the value of the handles directly. - Type marks like
arr(index)'subtype
are now parsed correctly (#1245). - Several other minor bugs were resolved (#1249).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.17.0
This release contains significant improvements to the experimental Verilog and mixed-language simulation, although it's still a very long way from being production ready. Additionally:
- Updated to OSVVM 2025.02 and UVVM 2025.04.18 for
nvc --install
. - Added
--merge-mode
option to control behaviour when merging non-equal coverage databases (from @Blebowski). - Fixed "unit is too big to compile" error with very large number of signals (#1200).
- Just-in-time compilation is now the default and the
--jit
elaboration option has no effect. Use--precompile
to restore the previous behaviour. - Fixed a crash when
set_cover_scope_name
fromnvc.cover_pkg
was called with coverage disabled (#1218). - Code coverage reports now contain the source files instead of referencing them (from @Blebowski).
- The
--ieee-warnings
option now supportsoff-at-0
to suppress warnings only in the first time step (from @supleed2). - Top-level generics can now be set to hexadecimal values from the command line using
-g name='X"12"'
. The value must be escaped or quoted to avoid the double quotes being interpreted by the shell. - Fixed a crash when ports with view mode indications are partially associated in a port map (#1208).
- Files declared in impure functions are now closed after the
return
expression has been evaluated rather than before (#1229). - Added missing slice direction check at runtime (#1231).
- Several other minor bugs were resolved (#1220, #1233, #1234, #1239, #1240).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.16.2
This is a minor bug fix release:
- Fixed a crash when an entity uses VHDL-2019 enhanced type generics and sub-elements of a port with a generic array type are associated individually (#1201).
- Fixed an issue where some
generate
statements were inaccessible from VHPI (#1213). - Several other minor bugs were resolved (#1202, #1204, #1212).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.16.1
This is a minor bug fix release:
- Fixed an elaboration failure where generic names differ in case between entity and component and the files were analysed with
--preserve-case
(#1195). - Fixed a crash when expression coverage is enabled and a port is associated with a non-static expression (#1194).
- Fixed a debug assertion failure when initialising an array with more than 2**32 elements (#1196).
- Fixed a crash when concatenating unconstrained arrays of arrays (#1199).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.16.0
This is a major new release with the following changes:
- Added support for PSL
prev()
,stable()
,rose()
andfell()
built-in functions (#1135). - Signals can now be read and passed to subprograms during elaboration and the effective value is the default value associated with the signal. This behaviour is not defined by the LRM but matches all other simulators (#1144).
- MSYS2 binary packages are no longer provided with releases as these become out-of-date too quickly. Windows users should instead download the self-contained MSI package.
- The Ubuntu binary packages for releases now have predictable names without the git commit hash (#1131).
- Improved error messages when design units have circular dependencies or depend on obsolete design units (#1152).
- Toggle coverage count is displayed correctly for unreachable constant driven toggle bins and transitions from
X
are counted with--count-from-undefined
instead of justU
. - Added an experimental
--preserve-case
analysis option to retain the original spelling of VHDL identifiers (#723). --ieee-warnings
is now a global option and should be placed before the-r
command. Passing it to the-r
command is still supported but deprecated and may not take effect in some situations (#1151).- Fixed a crash when a partial association in a port map has a conversion function (#1161).
- Improved the formatting of the
--help
output. - The GitHub Action has been renamed from
nickg/setup-nvc-ci
tonickg/setup-nvc
, although the old name should redirect to the new. - A Docker image was added at
ghcr.io/nickg/nvc
(#1165). - Unconstrained input ports can now be constrained by the result subtype of a conversion function (#1171).
- Type marks are now allowed in the prefix of selected names in relaxed mode (#1173).
- Added the
nvc.random
random number generation package and--seed
argument for deterministic results. - Added support for PSL
union
operator (from @Blebowski). - The implementation of concatenations has been reworked fixing several bugs (#1178).
- Added support for conditional force assignment (#1185).
- Access and file types are now supported in VHPI (#1192).
- Fixed a crash when open actual was used for formal parameter without default.
- Several other minor bugs were resolved (#1174, #1159, #1177, #1191, #1188).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.15.2
This is a minor maintenance release fixing the following issues:
- Fixed invalid LLVM IR generation which could cause a crash with LLVM 14 (#1145).
- Functional coverage is now reported correctly when summing from nested hierarchies (#1154).
- External names can now be the target of concurrent signal assignment statements (#1156).
- Fixed a crash when packages are passed through multiple layers of generics.
- Fixed a crash when a record subtype has a partially constrained element (#1155).
- Fixed wrong result of VHDL-2019
std.env.file_path
when the source file was analysed using a relative path (#1162). - Fixed a crash when
'last_event
or'last_active
is used with a record type (#1164).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.15.1
This is a minor maintenance release fixing the following issues:
- Fixed a crash when a subprogram is called with too many named arguments (from @NikLeberg) (#1091).
- Fixed a crash when a constant record aggregate has a null array element (#1137).
- Fixed a regression that caused some array aggregates to be incorrectly reported as ambiguous (#1138).
- The Windows installer now bundles the Tcllib library (#1136).
- Fixed a bug where PSL directives in comments were parsed incorrectly when split over multiple lines (#1135).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.15.0
This is a major new release with the following changes:
--load
is now a global option and should be placed before the-r
command. This allows VHPI foreign subprograms to be called during elaboration (#988).- The
--per-file
coverage report option outputs code coverage reports for each source file instead of each instance (#823). - The new
--check-synthesis
analysis option warns when signals are missing from process sensitivity lists. - Fixed a crash when a generic subprogram is associated with
open
(#1025). - Added a functional coverage API in
nvc.cover_pkg
that can be used by external frameworks such as OSVVM to define cover points. - Added
threshold-<value>
option for coverage to set minimal count a coverage bin must reach to be reported as covered. - Added a warning for potential infinite loops in processes without sensitivity and lacking any wait statements (from @NikLeberg).
- Selected names can now be used to register value change callbacks with
vhpi_register_cb
(#1045). - Removed the limit on the maximum number of parameters that can be passed to a VHDL subprogram (#1036).
- The new
--no-save
analysis option parses and checks the input files but does not save the working library to disk. This is a replacement for the--syntax
top-level command which is now deprecated. - The coverage database file name has changed to
<toplevel>.ncdb
in the current working directory and this can now be customised with the new--cover-file=
elaboration option. Attempts to access the old file name inside the library directory will be redirected to the new location, with a warning. - Partial association of ports with interface views now works correctly (#1074).
- Added support for PSL suffix implication, SERE repetition, and SERE fusion.
- Nested arrays more than two levels deep can now be dumped in FST format (#1071).
- Added support for package external names (#1072).
- Fixed parser hang for bit string literals (from @NikLeberg).
- Fixed a crash on an illegal package definition inside an interface.
- Comping the Vivado vendor libraries with
nvc --install vivado
is now around 2x faster and analysing files with many dependencies is up to an order of magnitude faster (#1098). - The
--jit
elaboration mode now works on Windows-on-Arm systems. vhpi_assert
now behaves the same as VHDLassert
for the purposes of determining the simulation exit code and early termination (#1060).- The
'driving_value
attribute now works correctly with record types. - Added basic support for
'instance_name
,'path_name
and'simple_name
attributes of generate block labels (from @NikLeberg) (#1125). - Comments are now parsed correctly inside PSL directives (#1129).
- Updated to OSVVM 2024.11 and UVVM 2024.10.08 for
nvc --install
. - Several other minor bugs were resolved (#1038, #1057, #1067. #1124).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.14.2
This is a minor bug fix release with the following changes:
- Fixed a crash when
'last_value
is used with record types (#1043). - Fixed a crash when a process sensitivity list contains an external name and the process is elaborated before the object referenced by the name (#1062).
- Fixed parser hang for integers in scientific notation (from @NikLeberg).
- Fixed a platform detection issue that caused JIT code loading to fail on Apple silicon macOS (#1069).
- The
STD_INPUT
andSTD_OUTPUT
files can now be opened and closed multiple times (#1079). - Fixed a crash when a subtype is used for an aggregate element association range choice which associates an array slice (#1080).
- Several other minor bugs were resolved (#1038, #1055).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
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!