Skip to content

Releases: nickg/nvc

1.17.1

26 Jul 08:59
r1.17.1
Compare
Choose a tag to compare

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

12 Jul 10:20
r1.17.0
Compare
Choose a tag to compare

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 from nvc.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 supports off-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

11 Jun 09:50
r1.16.2
Compare
Choose a tag to compare

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

12 May 17:46
r1.16.1
Compare
Choose a tag to compare

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

21 Apr 10:25
r1.16.0
Compare
Choose a tag to compare

This is a major new release with the following changes:

  • Added support for PSL prev(), stable(), rose() and fell() 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 just U.
  • 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 to nickg/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

01 Mar 13:03
r1.15.2
Compare
Choose a tag to compare

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

22 Jan 10:49
r1.15.1
Compare
Choose a tag to compare

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

11 Jan 10:59
r1.15.0
Compare
Choose a tag to compare

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 VHDL assert 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

23 Nov 10:19
r1.14.2
Compare
Choose a tag to compare

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 and STD_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

26 Oct 11:43
r1.14.1
Compare
Choose a tag to compare

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!