Recently I’ve been doing a lot of work on my VHDL simulator and I’ve just released the first new major version in over a year and a half.
This release is signed with my PGP key ID
This release contains many improvements and bug fixes detailed below, but the highlights are much improved language support, especially for configurations and some VHDL-2008 features, as well as better debugging support.
- Name resolution and overload resolution has been completely rewritten which should fix a number of long-standing issues.
- The elaboration phase was largely written which fixes a number of long-standing issues and significantly improves elaboration speed.
- VHDL-2008 IEEE standard libraries are now built and installed in addition to the VHDL-1993 libraries.
- The VHDL-1993 standard libraries are now derived from the Apache 2.0 licensed sources from VHDL-2019.
- There is now a project website at https://www.nickg.me.uk/nvc/. Please link to this in preference to the GitHub project page.
- Compiled VHDL code now includes DWARF debug information which is used for runtime stack trace if libdw or libdwarf is installed.
- Added support for VHDL-2008 reduction operators, match operators, and condition conversion.
- Added support for VHDL-2008 element resolution.
- Variable assignment now supports aggregate targets.
--relax=impureoption allows pure functions to call impure functions.
- Added support for VHDL-2008 “all” sensitised processes.
- Added support for ports and generics in block statements.
- Added support for the ’BASE attribute.
- Type name now allowed in element association choice (#407).
- Implement textio READ procedure for REAL.
- LLVM 6.0 or later is now required to build.
- Added support for MINIMUM, MAXIMUM, and TO_STRING predefined operators in VHDL-2008.
- VCD files are now generated from FST data in a similar manner to
fst2vcd(1). This should improve compatibility with other tools.
- Added support for ’LAST_ACTIVE attribute (#423).
- Added support for ’DRIVING and ’DRIVING_VALUE attributes.
- Added a new option
--ieee-warnings=offto disable warning messages from the standard IEEE packages.
- Support for configurations has been significantly improved (#372).
- Added support for VHDL-2008 delimited comments.
- Added support for guard expressions on blocks.
- Added support for guarded signals.
- Added support for HREAD, HWRITE, and other TEXTIO additions in VHDL-2008.
- Code generation now happens in parallel when LLVM is built with multi-threading enabled.
- Link time optimisation (LTO) is now enabled for release builds where supported.
- The default assertion failure message for certain simple scalar comparisons now shows the values of the left and right hand sides.
- Added support for VHDL-2008 conditional variable assignment statements.
- Added support for VHDL-2008 extended bit string literals.
- Non-globally-static actuals allowed in port maps in VHDL-2008 mode.
- Added support for VHDL-2008 sequential conditional signal assignment statements.
- Added basic support for package generics and package instantiation.
- Nested arrays can now be included in the waveform dump but only if the
--dump-arraysoption is passed. This is disabled my default due the significant performance and memory overhead.
- Added support for record types in waveform dump (#216).
- Added support for foreign subprograms using the VHPIDIRECT protocol.
- Library build is now reproducible when running
- Fix a constant folding crash with nested records.
- Fixed a crash when a record aggregate contains an “others” association and the fields have array types with different lengths.
- Fixed a stack overflow when a subprogram with unconstrained array arguments is called repeatedly in a loop (#414).
- Fixed intermittent crash when evaluating nested constant records (#425).
- Fixed missing import libraries on Windows (#424).
- Standard libraries are now installed under
- New configure option
--disable-vitaldisables building the VITAL packages whose license status is unclear.
- Support for the LXT wave output format, which was deprecated in version 1.5, has been removed. Use the default FST format instead.
fetch-ieee.shscript which did nothing since the last release has been removed.
--codegencommand, which has been deprecated since 1.3, was removed.
--profileoption now prints internal simulation statistics instead of the top processes by CPU time.