Skip to content

Merge branch 'master' into S10_architecture_file #6851

Merge branch 'master' into S10_architecture_file

Merge branch 'master' into S10_architecture_file #6851

Workflow file for this run

name: Test
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # daily
env:
# default compiler for all non-compatibility tests
MATRIX_EVAL: "CC=gcc-11 && CXX=g++-11"
jobs:
Run-tests:
# Prevents from running on forks where no custom runners are available
if: ${{ github.repository_owner == 'verilog-to-routing' }}
container: ubuntu:jammy
runs-on: [self-hosted, Linux, X64]
strategy:
fail-fast: false
matrix:
include:
- {test: "vtr_reg_nightly_test1", cores: "16", options: "", cmake: "", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test1_odin", cores: "16", options: "", cmake: "-DWITH_ODIN=ON", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test2", cores: "16", options: "", cmake: "", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test2_odin", cores: "16", options: "", cmake: "-DWITH_ODIN=ON", extra_pkgs: "" }
- {test: "vtr_reg_nightly_test3", cores: "16", options: "", cmake: "", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test3_odin", cores: "16", options: "", cmake: "-DWITH_ODIN=ON", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test4", cores: "16", options: "", cmake: "", extra_pkgs: "" }
- {test: "vtr_reg_nightly_test4_odin", cores: "16", options: "", cmake: "-DWITH_ODIN=ON", extra_pkgs: "" }
- {test: "vtr_reg_nightly_test5", cores: "16", options: "", cmake: "", extra_pkgs: ""}
- {test: "vtr_reg_nightly_test6", cores: "16", options: "", cmake: "", extra_pkgs: ""}
- {test: "vtr_reg_parmys", cores: "16", options: "", cmake: "", extra_pkgs: "" }
- {test: "vtr_reg_strong", cores: "16", options: "", cmake: "-DVTR_ASSERT_LEVEL=3", extra_pkgs: "libeigen3-dev"}
- {test: "vtr_reg_strong_odin", cores: "16", options: "", cmake: "-DVTR_ASSERT_LEVEL=3 -DWITH_ODIN=ON", extra_pkgs: "libeigen3-dev"}
- {test: "vtr_reg_strong_odin", cores: "16", options: "-skip_qor", cmake: "-DVTR_ASSERT_LEVEL=3 -DVTR_ENABLE_SANITIZE=ON -DWITH_ODIN=ON", extra_pkgs: "libeigen3-dev"}
- {test: "vtr_reg_system_verilog", cores: "16", options: "", cmake: "-DYOSYS_F4PGA_PLUGINS=ON", extra_pkgs: ""}
- {test: "odin_reg_strong", cores: "16", options: "", cmake: "-DWITH_ODIN=ON", extra_pkgs: ""}
env:
DEBIAN_FRONTEND: "noninteractive"
steps:
- uses: actions/checkout@v3
- name: Setup
run: stdbuf -i0 -i0 -e0 ./.github/scripts/hostsetup.sh
- name: Install external libraries
run: apt install -y ${{ matrix.extra_pkgs }}
if: ${{ matrix.extra_pkgs }}
- name: Execute test script
run: stdbuf -i0 -o0 -e0 ./.github/scripts/run-vtr.sh
env:
VPR_NUM_WORKERS: 4
VTR_TEST: ${{ matrix.test }}
VTR_TEST_OPTIONS: ${{ matrix.options }}
VTR_CMAKE_PARAMS: ${{ matrix.cmake }}
NUM_CORES: ${{ matrix.cores }}
- uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
path: |
**/results*.gz
**/plot_*.svg
**/qor_results*.tar.gz
Build:
name: 'B: Building VtR'
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- { build_type: 'release', verbose: '0' }
- { build_type: 'debug', verbose: '0' }
- { build_type: 'debug', verbose: '1' }
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
BUILD_TYPE: ${{ matrix.build_type }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh VERBOSE=${{ matrix.verbose }}
Format:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- { name: 'C/C++', script: 'check-format.sh' }
- { name: 'Python', script: 'check-format-py.sh' }
- { name: 'Python Lint', script: 'pylint_check.py' }
name: 'F: ${{ matrix.name }}'
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- name: Test
run: ./dev/${{ matrix.script }}
UniTests:
name: 'U: C++ Unit Tests'
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- name: Test
env:
CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on"
run: ./.github/scripts/unittest.sh
Warnings:
name: 'W: Check Compilation Warnings'
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
#In order to get compilation warnings produced per source file, we must do a non-IPO build
#We also turn warnings into errors for this target by doing a strict compile
CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_STRICT_COMPILE=on -DVTR_IPO_BUILD=off"
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
Regression:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include: [
{
name: 'Basic',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on',
suite: 'vtr_reg_basic'
},
{
name: 'Basic_odin',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on',
suite: 'vtr_reg_basic_odin'
},
{
name: 'Basic with NO_GRAPHICS',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=off',
suite: 'vtr_reg_basic'
},
{
name: 'Basic with VTR_ENABLE_DEBUG_LOGGING',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on',
suite: 'vtr_reg_basic'
},
{
name: 'Basic_odin with VTR_ENABLE_DEBUG_LOGGING',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on -DWITH_ODIN=on',
suite: 'vtr_reg_basic_odin'
},
{
name: 'Strong',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on',
suite: 'vtr_reg_strong'
},
{
name: 'Strong_odin',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on',
suite: 'vtr_reg_strong_odin'
},
{
name: 'Valgrind Memory',
params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on',
suite: 'vtr_reg_valgrind_small'
}
]
name: 'R: ${{ matrix.name }}'
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: ${{ matrix.params }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
./run_reg_test.py ${{ matrix.suite }} -show_failures -j2
- name: Upload regression run files
uses: actions/upload-artifact@v3
with:
name: ${{matrix.name}}_run_files
path: |
vtr_flow/**/*.out
vtr_flow/**/*.blif
vtr_flow/**/*.p
vtr_flow/**/*.net
vtr_flow/**/*.r
- name: Upload regression results
uses: actions/upload-artifact@v3
with:
name: ${{matrix.name}}_results
path: |
vtr_flow/**/*.log
vtr_flow/**/parse_results*.txt
Sanitized:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include: [
{
name: 'Basic',
params: '-DVTR_ASSERT_LEVEL=3 -DVTR_ENABLE_SANITIZE=on -DVTR_IPO_BUILD=off -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on',
suite: 'vtr_reg_basic_odin'
}
#- { name: 'Strong', suite: 'vtr_reg_strong' } # SKIP Too long to run on GitHub Actions (max 6h)
]
name: 'S: ${{ matrix.name }}'
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: ${{ matrix.params }}
BUILD_TYPE: debug
LSAN_OPTIONS: 'exitcode=42' #Use a non-standard exit code to ensure LSAN errors are detected
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
# We skip QoR since we are only checking for errors in sanitizer runs
./run_reg_test.py ${{ matrix.suite }} -show_failures -j2 -skip_qor
Parmys:
name: 'Parmys Basic Test'
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: '-DVTR_IPO_BUILD=off'
BUILD_TYPE: debug
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
./run_reg_test.py parmys_reg_basic -show_failures -j2
ODINII:
name: 'ODIN-II Basic Test'
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: '-DVTR_ASSERT_LEVEL=3 -DVTR_ENABLE_SANITIZE=on -DVTR_IPO_BUILD=off -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on'
BUILD_TYPE: debug
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
./run_reg_test.py odin_reg_basic -show_failures -j2
VQM2BLIF:
name: 'VQM2BLIF Basic Tests'
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
BUILD_TYPE: release
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
./utils/vqm2blif/test/scripts/test_vqm2blif.sh
Compatibility:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- { name: 'GCC 9 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-9 && CXX=g++-9', }
- { name: 'GCC 10 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-10 && CXX=g++-10', }
- { name: 'GCC 11 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-11 && CXX=g++-11', }
- { name: 'GCC 12 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-12 && CXX=g++-12', }
- { name: 'Clang 11 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-11 && CXX=clang++-11', }
- { name: 'Clang 12 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-12 && CXX=clang++-12', }
- { name: 'Clang 13 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-13 && CXX=clang++-13', }
- { name: 'Clang 14 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-14 && CXX=clang++-14', }
name: 'B: ${{ matrix.name }}'
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on"
MATRIX_EVAL: ${{ matrix.eval }}
BUILD_TYPE: release
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh
Coverity:
name: 'Coverity Scan'
needs:
- Build
- Format
- UniTests
- Warnings
- Regression
- Sanitized
- Parmys
- ODINII
- VQM2BLIF
- Compatibility
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.10.10
- uses: actions/checkout@v3
- run: ./.github/scripts/install_dependencies.sh
- uses: hendrikmuhs/ccache-action@v1.2
- name: Test
env:
CMAKE_PARAMS: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on'
_COVERITY_URL: 'https://scan.coverity.com/download/linux64'
_COVERITY_MD5: 'd0d7d7df9d6609e578f85096a755fb8f'
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
./.github/scripts/build.sh