Releases: nickg/nvc
1.18.2
This is a minor bug fix release with the following changes:
- Fixed a mis-optimisation which would cause the result of
x * xto be zero (#1338, from @Blebowski). - Several other minor bugs were resolved (#1239, #1332, #1334, #1335, #1347, #1348).
Special thank you to @bpadalino, @tmeissner, @Blebowski, @amb5l, @m42uko, @a-panella, @cmarqu, @albydnc, @johonkanen, and @augustofg for sponsoring me!
1.18.1
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 asnatural range 0 to 1now correctly returns thevhpiIntTypeDeclKbase type instead of anothervhpiSubtypeDeclK. - Fixed a crash when
releaseis 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
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
-Ianalysis option adds search directories for the Verilogincludedirective. - Fixed compatibility with LLVM 21.
- Fixed a crash when
--cover-fileis specified with a non-existent directory (#1287). - The
-fanalysis 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
--precompileelaboration option is deprecated and will be removed in the next release. Please get in touch if you are still using this. - Passing array
outarguments using the non-standardVHPIDIRECTcalling 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
This is a minor bug fix release with the following changes:
- Fixed an issue where sub-elements of a port with
'converserecord 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
'subtypeis 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
This is a minor bug fix release with the following changes:
- Fixed a build failure on Linux Arm64 (#1246).
- An
otherschoice is now allowed in an unconstrained array aggregate if the--relaxedoption 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_handlesto compare handles rather than comparing the value of the handles directly. - Type marks like
arr(index)'subtypeare 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-modeoption 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
--jitelaboration option has no effect. Use--precompileto restore the previous behaviour. - Fixed a crash when
set_cover_scope_namefromnvc.cover_pkgwas called with coverage disabled (#1218). - Code coverage reports now contain the source files instead of referencing them (from @Blebowski).
- The
--ieee-warningsoption now supportsoff-at-0to 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
returnexpression 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
generatestatements 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
Xare counted with--count-from-undefinedinstead of justU. - Added an experimental
--preserve-caseanalysis option to retain the original spelling of VHDL identifiers (#723). --ieee-warningsis now a global option and should be placed before the-rcommand. Passing it to the-rcommand 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
--helpoutput. - The GitHub Action has been renamed from
nickg/setup-nvc-citonickg/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.randomrandom number generation package and--seedargument for deterministic results. - Added support for PSL
unionoperator (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_pathwhen the source file was analysed using a relative path (#1162). - Fixed a crash when
'last_eventor'last_activeis 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!