Skip to content

Update for 1.14.0 release #3279

Update for 1.14.0 release

Update for 1.14.0 release #3279

Workflow file for this run

name: Build and test
on: [push, pull_request]
jobs:
build-ubuntu:
name: Ubuntu 22.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Get version
id: version
run: |
vers=$(sed -n '1s/AC_INIT(\[.*\], \[\([0-9\.]*\).*\].*/\1/p' configure.ac)
full=$(git log --date=format:%Y%m%d --pretty=$vers~git%cd.%h -1)
echo "VERSION=$full" >> $GITHUB_ENV
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install automake flex llvm-dev check lcov \
libdw-dev libffi-dev libreadline-dev tcl8.6-dev \
libzstd-dev libxml2-utils libjansson-dev
- name: Generate configure script
run: ./autogen.sh
- name: Configure
run: |
mkdir build && cd build
../configure --enable-gcov --enable-asan \
--with-llvm=/usr/bin/llvm-config --enable-debug \
--enable-tcl --enable-gui
- name: Build
run: make -C build -j $(nproc)
- name: Test
run: ASAN_OPTIONS=detect_leaks=0 make -C build check
- name: Test in JIT mode
run: |
export NVC_JIT_ASYNC=0
export NVC_JIT_THRESHOLD=1
export FORCE_JIT=1
export ASAN_OPTIONS=detect_leaks=0
cd build
./bin/run_regr
- name: Test in interpreter mode
run: |
export NVC_JIT_THRESHOLD=0
export FORCE_JIT=1
export ASAN_OPTIONS=detect_leaks=0
cd build
./bin/run_regr
# ieee12 too slow
# - name: Test without intrinsics
# run: |
# export NVC_JIT_INTRINSICS=0
# cd build
# rm -rf logs
# ./bin/run_regr ieee
- name: Test without vector intrinsics
run: |
export NVC_JIT_INTRINSICS=1
export NVC_VECTOR_INTRINSICS=0
cd build
rm -rf logs
ASAN_OPTIONS=detect_leaks=0 ./bin/run_regr ieee
- name: JIT benchmarks
run: |
make -C build bin/jitperf
export ASAN_OPTIONS=detect_leaks=0 # XXX: remove this
./build/bin/jitperf -L build/lib/ test/perf/simple.vhd
- name: Check for orphan tests
run: make -C build orphan-tests
- name: Coverage report
run: make -C build cov-generate
- name: Coveralls
continue-on-error: true
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: ./build/coverage/nvc.info
build-mac:
strategy:
matrix:
include:
- { os: macos-12, arch: x86_64 }
- { os: macos-14, arch: arm64 }
name: Mac OS (${{ matrix.arch }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Fix Python symlinks
run: |
find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print
brew unlink python && brew link --overwrite python
- name: Install dependencies
run: brew install llvm check automake libffi pkg-config zstd
- name: Generate configure script
run: ./autogen.sh
- name: Configure
run: |
mkdir build && cd build
../configure --with-llvm=$(brew --prefix llvm)/bin/llvm-config \
--enable-debug --disable-lto
- name: Build
run: make -C build -j $(nproc)
- name: Test
run: make -C build check
- name: Test in JIT mode
run: |
export NVC_JIT_ASYNC=0
export NVC_JIT_THRESHOLD=1
export FORCE_JIT=1
cd build
rm -rf logs
./bin/run_regr
- name: Dist clean
run: make -C build distclean
- name: Configure for release
run: |
cd build
../configure --with-llvm=$(brew --prefix llvm)/bin/llvm-config \
--disable-debug
- name: Build release
run: make -C build -j $(nproc)
build-windows:
name: Windows MSYS2
runs-on: windows-2022
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: msys2/setup-msys2@v2
with:
update: true
install: >-
base-devel
mingw-w64-x86_64-llvm
mingw-w64-x86_64-check
mingw-w64-x86_64-ncurses
mingw-w64-x86_64-libffi
mingw-w64-x86_64-pkgconf
mingw-w64-x86_64-gcc
mingw-w64-x86_64-tcl
mingw-w64-x86_64-tcllib
mingw-w64-x86_64-zstd
unzip
git
autoconf
automake-wrapper
- name: Generate configure script
run: bash autogen.sh
- name: Configure
run: |
mkdir build
cd build
bash ../configure --enable-debug --disable-lto
- name: Build
run: make -C build -j $(nproc)
- name: Test
run: make -C build check
- name: Test in JIT mode
run: |
export NVC_JIT_ASYNC=0
export NVC_JIT_THRESHOLD=1
export FORCE_JIT=1
cd build
rm -rf logs
./bin/run_regr
- name: Build MSYS2 package
run: |
cd contrib/msys2
makepkg-mingw -sCLf --nocheck
pacman -Qlp *.zst
echo "MSYS2_PKG=$(ls *.zst)" >> $GITHUB_ENV
- name: Install release
run: pacman -U --noconfirm contrib/msys2/*.zst
- name: Install OSVVM
run: nvc --install osvvm
- name: Install UVVM
run: nvc --install uvvm
- name: 'Upload artifact'
uses: actions/upload-artifact@v4
with:
name: 'MSYS2 mingw64 package'
path: contrib/msys2/${{ env.MSYS2_PKG }}
build-package:
name: Build package
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Get version
id: version
run: |
vers=$(sed -n '1s/AC_INIT(\[.*\], \[\([0-9\.]*\).*\].*/\1/p' configure.ac)
full=$(git log --date=format:%Y%m%d --pretty=$vers~git%cd.%h -1)
echo "VERSION=$full" >> $GITHUB_ENV
- name: Build Debian package
run: |
ln -s contrib/debian debian
sed -i 's/nvc (.*)/nvc (${{ env.VERSION }}-1)/' debian/changelog
sudo apt-get update
sudo apt-get build-dep .
export DEB_BUILD_OPTIONS=nocheck
dpkg-buildpackage -uc -us -b
mv ../*.deb .
- name: 'Upload artifact'
uses: actions/upload-artifact@v4
with:
name: 'Ubuntu package'
path: nvc_${{ env.VERSION }}-1_amd64.deb
vests:
name: VESTs
needs: [ build-package ]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/checkout@v4
with:
repository: nickg/vests
path: vests
fetch-depth: 1
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ruby ruby-colorize
- uses: actions/download-artifact@v4
with:
name: 'Ubuntu package'
- name: Install pre-built package
run: >-
sudo apt-get install ./nvc_*.deb
- name: Check --version output
run: nvc --version
- name: Run VESTs
run: >-
cd vests && ../test/run_vests.rb .
projects:
name: External Projects
needs: [ build-package ]
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/checkout@v4
with:
repository: nickg/vhdl-projects
path: vhdl-projects
fetch-depth: 1
- uses: actions/download-artifact@v4
with:
name: 'Ubuntu package'
- name: Install pre-built package
run: >-
sudo apt-get install ./nvc_*.deb tcllib
- name: Check --version output
run: nvc --version
- name: Install OSVVM
run: nvc --install osvvm
- name: Install UVVM
run: nvc --install uvvm
- name: Install FMF packages
run: nvc --install fmf
- name: Test FPHDL
run: ./vhdl-projects/fphdl/test.sh
- name: Test ZPU
run: ./vhdl-projects/zpu/test.sh
- name: Test Flopoco
run: ./vhdl-projects/flopoco/test.sh
- name: Test HardH264
run: ./vhdl-projects/hardh264/test.sh
- name: Test J-Core
run: ./vhdl-projects/jcore/test.sh
- name: Test Dummy_Plug
run: ./vhdl-projects/ikwzm/dummyplug/test.sh
- name: Test OpenRIO
run: ./vhdl-projects/openrio/test.sh
- name: Test SPI-FPGA
run: ./vhdl-projects/spi-fpga/test.sh
- name: Test JSON-for-VHDL
run: ./vhdl-projects/json/test.sh
- name: Test UVVM
run: ./vhdl-projects/uvvm/test.sh
- name: Test vhdl-format
run: ./vhdl-projects/format/test.sh
- name: Test NEORV32
run: ./vhdl-projects/neorv32/test.sh
- name: Test vhdl-extras
run: ./vhdl-projects/extras/test.sh
- name: Test PoC
run: ./vhdl-projects/poc/test.sh
- name: Test FMF dsp6713
run: ./vhdl-projects/fmf/dsp6713/test.sh
- name: Test Grlib
run: ./vhdl-projects/grlib/test.sh
- name: Test MEGA65
run: ./vhdl-projects/mega65/test.sh
- name: Test NetWiz
run: ./vhdl-projects/netwiz/test.sh
- name: Test real_matrix package
run: ./vhdl-projects/realmatrix/test.sh
- name: Test Canola
run: ./vhdl-projects/canola/test.sh
vunit:
name: VUnit
needs: [ build-package ]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
repository: VUnit/vunit
ref: master
path: vunit
submodules: recursive
fetch-depth: 1
- uses: actions/checkout@v4
with:
repository: antonblanchard/microwatt
ref: master
path: microwatt
fetch-depth: 1
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install python3 python3-colorama make
- uses: actions/download-artifact@v4
with:
name: 'Ubuntu package'
- name: Install pre-built package
run: >-
sudo apt-get install ./nvc_*.deb
- name: Check --version output
run: nvc --version
- name: Set environment variables
run: |
echo "VUNIT_SIMULATOR=nvc" >> $GITHUB_ENV
echo "PYTHONPATH=$(pwd)/vunit" >> $GITHUB_ENV
- name: Run uart example
run: |
python3 vunit/examples/vhdl/uart/run.py
- name: Run axi_dma example
run: |
python3 vunit/examples/vhdl/axi_dma/run.py
- name: Run com example
run: |
python3 vunit/examples/vhdl/com/run.py
- name: Run com tests
run: |
python3 vunit/vunit/vhdl/com/run.py
- name: Run data_types tests
run: |
python3 vunit/vunit/vhdl/data_types/run.py
- name: Run verification_components tests
run: |
python3 vunit/vunit/vhdl/verification_components/run.py
- name: Run Microwatt tests
run: |
cd microwatt
make git.vhdl
python3 run.py
osvvm:
name: OSVVM
needs: [ build-package ]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Get OSVVM version
run: |
vers=$(awk '/git_wrapper/ { print $3; }' contrib/install-osvvm.sh)
echo "OSVVM_VERSION=$vers" >> $GITHUB_ENV
- uses: actions/checkout@v4
with:
repository: OSVVM/OsvvmLibraries
path: OsvvmLibraries
# TODO: switch to OSVVM_VERSION after next release
#ref: ${{ env.OSVVM_VERSION }}
ref: dev
submodules: recursive
fetch-depth: 1
- name: Patch OSVVM to reduce verbosity
run: |
find OsvvmLibraries/Scripts -name VendorScripts_NVC.tcl -exec \
sed -i '/puts $SimulateMessage/d' \{} \;
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install tcl tcllib git
- uses: actions/download-artifact@v4
with:
name: 'Ubuntu package'
- name: Install pre-built package
run: >-
sudo apt-get install ./nvc_*.deb
- name: Check --version output
run: nvc --version
- name: Run OSVVM tests
run: |
export OSVVM_DIR=./OsvvmLibraries
export OSVVM_MUST_BUILD=1
tclsh ./test/test-osvvm.tcl
cocotb:
name: Cocotb
needs: [ build-package ]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
repository: cocotb/cocotb
ref: master
path: cocotb
submodules: recursive
fetch-depth: 1
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install python3 python3-nox
- uses: actions/download-artifact@v4
with:
name: 'Ubuntu package'
- name: Install pre-built package
run: >-
sudo apt-get install ./nvc_*.deb
- name: Check --version output
run: nvc --version
- name: Run cocotb regression tests
run: |
cd cocotb
python3 -mnox -k "dev_test_sim and nvc and vhdl"
msi-installer:
name: Windows installer
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Build MSI installer
uses: ./.github/actions/windows-installer
- name: Run ieee1 regression test
shell: powershell
run: |
nvc.exe -a test\regress\ieee1.vhd
nvc.exe -e ieee1
nvc.exe -r ieee1