Skip to content

Releases: nickg/nvc

1.6.0

25 Jan 10:17
Compare
Choose a tag to compare

This is a major new release containing a large number of new features and improvements.

  • 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.
  • The --relax=impure option 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=off to 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-arrays option 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 make -j.
  • 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 $prefix/lib/nvc/ instead of $prefix/share/nvc.
  • New configure option --disable-vital disables 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.
  • The fetch-ieee.sh script which did nothing since the last release has been removed.
  • The --codegen command, which has been deprecated since 1.3, was removed.
  • The --profile option now prints internal simulation statistics instead of the top processes by CPU time.

1.5.3

13 Nov 14:35
Compare
Choose a tag to compare

This is the final bug fix release on the 1.5 branch containing the following changes back-ported from the development branch:

  • Handle access(2) returning EPERM in macOS sandbox (#421).
  • Fix race when multiple processes concurrently update a library.
  • Fix --syntax command when file contains multiple design units.
  • Allow constant folding of nand/nor/xor/xnor.
  • Fix potential out of memory condition when evaluating complex assert expressions.
  • Fix incorrect result of mod operator with negative operands.
  • Fixed intermittent crash when evaluating nested constant records (#425).
  • Buffer too small for printing TIME'HIGH (#98).

This release is signed with GPG key fingerprint 0784 505A DB5D 7D86 D2BD E6DA BCDB 295F 7431 9F1A. Download both the .sig and .tar.gz files and verify with:

gpg --keyserver pgp.mit.edu --recv-keys BCDB295F74319F1A
gpg --verify nvc-1.5.3.tar.gz

1.5.2

28 Jul 13:48
Compare
Choose a tag to compare

This is the second bug fix release on the 1.5 branch containing the following changes back-ported from the development branch:

  • Link libexecinfo on FreeBSD.
  • Implement textio READ procedure for BIT and TIME (#408).
  • Fixed a crash when a long running procedure suspends in a loop (#412).
  • Fix static linking with LLVM 12.0.
  • Fix crash when assigning to a signal declared in a package.
  • Fix incorrect recording of dependencies which caused a failure to load
    generated DLLs on Windows.
  • Fix file locking error when a library is located on NFS (#417).
  • Optimise loading large library index from disk.
  • Fix a crash when using 'VALUE with enumeration subtypes (#419).
  • Fix a crash when a signal with more than 256 elements is declared in a
    package (#420).

This release is signed with GPG key fingerprint 0784 505A DB5D 7D86 D2BD E6DA BCDB 295F 7431 9F1A. Download both the .sig and .tar.gz files and verify with:

gpg --keyserver pgp.mit.edu --recv-keys BCDB295F74319F1A
gpg --verify nvc-1.5.2.tar.gz

1.5.1

09 Apr 04:57
Compare
Choose a tag to compare

This is a bug-fix release with the following changes cherry-picked from the development branch:

  • Fix a compiler warning in vcode.c.
  • Disable VHDL backtrace on non-Linux systems as the symbol names cannot
    be parsed reliably (#385).
  • Update to latest pc_from_uncontext.m4 for Apple M1 support.
  • Fix incorrect application of LRM rules for building an equivalent wait
    statement for concurrent statements.
  • Library build is now reproducible when running make -j (#409).
  • Fix assertion failure with nested record type (#404).
  • Use Pandoc to generate the manual page.

This release is GPG signed with key fingerprint 74319F1A. Verify the signature with:

$ gpg --recv-keys 74319F1A
$ gpg --verify nvc-1.5.1.tar.gz.sig nvc-1.5.1.tar.gz

1.5.0

19 Jul 09:20
Compare
Choose a tag to compare
  • IEEE library sources are now distributed
  • Updated FST library to match GtkWave 3.3.79
  • The LXT wave output format is deprecated, use FST instead
  • Fix incorrect file name in assertion message
  • Fix crash while recovering from parse error
  • Add --dump-json command to print AST as JSON (from Sebastien Van
    Cauwenberghe)
  • Fix crash when using LLVM 7 and later
  • Fix spurious assertion failure in std.textio.readline
  • Reals are now rounded to the nearest integer as specified by the LRM
  • Fix crash when constant folding uses too much memory
  • Improved memory management in evaluator (thanks to Frank Mori Hess)
  • Various other minor fixes and improvements

1.4.0

16 Jul 04:59
Compare
Choose a tag to compare
  • Windows with MSYS2 is now fully supported
  • Continuous integration for OS X and Windows using Travis and AppVeyor
  • Record resolution functions are now supported
  • The --relax=prefer-explicit option now works correctly

1.3.1

01 Jan 19:46
Compare
Choose a tag to compare
  • Build fixes for OS X

1.3.0

31 Dec 18:59
Compare
Choose a tag to compare
  • Native code is always generated on platforms that support it
  • Initial support for VHDL-2017 conditional compilation blocks
  • The TCL shell has been removed
  • Various code generation and constant folding fixes
  • Fix crash when build IEEE library from non-clean tree
  • ORC is used for JIT if LLVM version is 3.9 or later
  • LLVM 3.8 or later is now required
  • Added -O0 to -O3 options to control LLVM optimisation level
  • The --disable-opt option is deprecated, use -O0 instead
  • The elaborate --native option is now a global option and should
    be placed before the -e command
  • The --codegen command is deprecated, use --native when analysing
    to generate native shared libraries for packages

1.2.0

04 May 18:02
Compare
Choose a tag to compare
  • Compile time evaluation now uses vcode
  • Record aggregates can now be constant folded (#305)
  • The TCL shell is deprecated and will be removed in the next release
  • Compatible with LLVM 4.0
  • Functions returning records can now be constant folded (#315)
  • LLVM 3.4 or later is now required

1.1.0

05 Nov 19:44
Compare
Choose a tag to compare
  • Improvements to based literal parsing
  • Improved stack traces on Linux when libdw-dev installed
  • Fixed elaboration of subprograms in entity declarations
  • Improved elaboration performance when design contains many signals
  • Fixed various bugs involving record signals
  • Fixed sensitivity list generation for concurrent procedure calls
  • Improvements to simulation performance
  • Implemented vhpi_get_phys
  • Added command --list to print all units in a library
  • Rewrote the run_regr program in C so make check no longer requires Ruby
  • The --relax=generic-static option is now renamed to --relax=locally-static and
    applies in wider range of contexts