Fix some errors from Clang ubsan #3422
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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-13, 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 $(sysctl -n hw.logicalcpu) | |
- 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 |