Skip to content

Releases: nickg/nvc

1.18.2

19 Nov 22:11
r1.18.2

Choose a tag to compare

This is a minor bug fix release with the following changes:

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!

1.18.1

18 Oct 09:31
r1.18.1

Choose a tag to compare

This is a minor bug fix release with the following changes:

  • Fixed a crash when compiling with AVX2 enabled (#1311).
  • Calling vhpi_get(vhpiBaseType, ..) on a subtype with additional constraints such as natural range 0 to 1 now correctly returns the vhpiIntTypeDeclK base type instead of another vhpiSubtypeDeclK.
  • Fixed a crash when release is used with a record signal (#1313).
  • Several other minor bugs were resolved (#1308, #1317, #1318, #1323).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, @augustofg, and @ikwzm for sponsoring me!

1.18.0

28 Sep 21:11
r1.18.0

Choose a tag to compare

The main focus of this release has been improving support for Verilog and mixed-language simulation and some non-trivial designs can now be simulated, for example axis2mm from ZipCPU. NVC now passes around one third of the Icarus Verilog test suite. Additionally:

  • Scheduling of blocking and non-blocking assignments in mixed-language simulation now more accurately reflects Verilog semantics (#1227).
  • Aliases of component declarations are now allowed (#1276).
  • Added missing check that partial associations appear in a contiguous sequence (#1254).
  • The new -I analysis option adds search directories for the Verilog include directive.
  • Fixed compatibility with LLVM 21.
  • Fixed a crash when --cover-file is specified with a non-existent directory (#1287).
  • The -f analysis option can now interpolate environment variables in the file list using $var.
  • Constraints for variables and signals declared with partially constrained subtypes are now correctly propagated from the initial value (#1274).
  • VHDL-2002 changes for buffer port connections are now implemented correctly (#1290).
  • The --precompile elaboration option is deprecated and will be removed in the next release. Please get in touch if you are still using this.
  • Passing array out arguments using the non-standard VHPIDIRECT calling convention now works correctly (#1301).
  • Several other minor bugs were resolved (#1253, #1269, #1277, #1279, #1280, #1281).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!

1.17.2

22 Aug 20:21
r1.17.2

Choose a tag to compare

This is a minor bug fix release with the following changes:

  • Fixed an issue where sub-elements of a port with 'converse record mode view would have the wrong direction when the port was partially associated.
  • Package instantiation declarations are now allowed in the entity declarative part (#1266).
  • Fixed a crash when 'subtype is applied to an array object with static bounds declared in another design unit (#1271).
  • Several other minor bugs were resolved (#1257, #1260, #1262, #1267, #1270, #1272, #1273).

Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!

1.17.1

26 Jul 08:59
r1.17.1

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

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

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

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

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

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!