diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml index 4cc24013f1..f5d89e7092 100644 --- a/.github/workflows/containers.yml +++ b/.github/workflows/containers.yml @@ -12,12 +12,12 @@ on: - '**/*README*' - '**.md' - '**.rst' - pull_request: - paths-ignore: # Prevents from running if only docs are updated - - 'doc/**' - - '**/*README*' - - '**.md' - - '**.rst' + # pull_request: + # paths-ignore: # Prevents from running if only docs are updated + # - 'doc/**' + # - '**/*README*' + # - '**.md' + # - '**.rst' workflow_dispatch: schedule: - cron: '0 0 * * 0' # weekly diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 393b3f0d72..678c5fb267 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,95 +34,95 @@ env: MATRIX_EVAL: "CC=gcc-13 && CXX=g++-13" jobs: - Build: - name: 'B: Building VtR' - runs-on: ubuntu-24.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@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - BUILD_TYPE: ${{ matrix.build_type }} - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: | - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - ./.github/scripts/build.sh VERBOSE=${{ matrix.verbose }} - - - Format: - runs-on: ubuntu-24.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: - - # TODO: This should be on the same version of Python as would be found on - # Ubuntu 24.04 (3.12.3); however that version has some linting errors. - - uses: actions/setup-python@v5 - with: - python-version: 3.10.10 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - name: Test - run: ./dev/${{ matrix.script }} - - - UniTests: - name: 'U: C++ Unit Tests' - runs-on: ubuntu-24.04 - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - name: Test - env: - CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on" - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: ./.github/scripts/unittest.sh + # Build: + # name: 'B: Building VtR' + # runs-on: ubuntu-24.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@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - uses: hendrikmuhs/ccache-action@v1.2 + + # - name: Test + # env: + # BUILD_TYPE: ${{ matrix.build_type }} + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: | + # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + # ./.github/scripts/build.sh VERBOSE=${{ matrix.verbose }} + + + # Format: + # runs-on: ubuntu-24.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: + + # # TODO: This should be on the same version of Python as would be found on + # # Ubuntu 24.04 (3.12.3); however that version has some linting errors. + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.10.10 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - name: Test + # run: ./dev/${{ matrix.script }} + + + # UniTests: + # name: 'U: C++ Unit Tests' + # runs-on: ubuntu-24.04 + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - name: Test + # env: + # CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on" + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: ./.github/scripts/unittest.sh Regression: @@ -131,78 +131,78 @@ jobs: fail-fast: false matrix: include: [ - { - name: 'Basic', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic with highest assertion level', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=4 -DWITH_BLIFEXPLORER=on', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic_odin', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', - suite: 'vtr_reg_basic_odin', - extra_pkgs: "" - }, - { - name: 'Basic with NO_GRAPHICS', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=off', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic with NO_SERVER', - params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=on -DVPR_USE_SERVER=off', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic with CAPNPROTO disabled', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_CAPNPROTO=off', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic with serial VPR_EXECUTION_ENGINE', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_EXECUTION_ENGINE=serial -DTATUM_EXECUTION_ENGINE=serial', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic with VTR_ENABLE_DEBUG_LOGGING', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on', - suite: 'vtr_reg_basic', - extra_pkgs: "" - }, - { - name: 'Basic_odin with VTR_ENABLE_DEBUG_LOGGING', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', - suite: 'vtr_reg_basic_odin', - extra_pkgs: "" - }, + # { + # name: 'Basic', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with highest assertion level', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=4 -DWITH_BLIFEXPLORER=on', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic_odin', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', + # suite: 'vtr_reg_basic_odin', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with NO_GRAPHICS', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=off', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with NO_SERVER', + # params: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=on -DVPR_USE_SERVER=off', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with CAPNPROTO disabled', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_CAPNPROTO=off', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with serial VPR_EXECUTION_ENGINE', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_EXECUTION_ENGINE=serial -DTATUM_EXECUTION_ENGINE=serial', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic with VTR_ENABLE_DEBUG_LOGGING', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on', + # suite: 'vtr_reg_basic', + # extra_pkgs: "" + # }, + # { + # name: 'Basic_odin with VTR_ENABLE_DEBUG_LOGGING', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', + # suite: 'vtr_reg_basic_odin', + # extra_pkgs: "" + # }, { name: 'Strong', params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', suite: 'vtr_reg_strong', extra_pkgs: "libeigen3-dev" - }, - { - name: 'Strong_odin', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', - suite: 'vtr_reg_strong_odin', - extra_pkgs: "" - }, - { - name: 'Valgrind Memory', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on', - suite: 'vtr_reg_valgrind_small', - extra_pkgs: "" } + # { + # name: 'Strong_odin', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', + # suite: 'vtr_reg_strong_odin', + # extra_pkgs: "" + # }, + # { + # name: 'Valgrind Memory', + # params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on', + # suite: 'vtr_reg_valgrind_small', + # extra_pkgs: "" + # } ] name: 'R: ${{ matrix.name }}' steps: @@ -258,265 +258,265 @@ jobs: vtr_flow/**/*.log vtr_flow/**/parse_results*.txt - Sanitized: - runs-on: ubuntu-24.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_PARMYS=OFF -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@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - 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 - # In Ubuntu 20240310.1.0, the entropy of ASLR has increased (28 -> 32). LLVM 14 in this - # image is not compatible with this increased ASLR entropy. Apparently, memory sanitizer - # depends on LLVM and all CI tests where VTR_ENABLE_SANITIZE is enabled fail. For a temporary - # fix, we manually reduce the entropy. This quick fix should be removed in the future - # when github deploys a more stable Ubuntu image. - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: | - sudo sysctl -w vm.mmap_rnd_bits=28 - 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 -j${{ steps.cpu-cores.outputs.count }} -skip_qor - - - Parmys: - name: 'Parmys Basic Test' - runs-on: ubuntu-24.04 - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - CMAKE_PARAMS: '-DVTR_IPO_BUILD=off' - BUILD_TYPE: debug - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - 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 -j${{ steps.cpu-cores.outputs.count }} - - - ODINII: - name: 'ODIN-II Basic Test' - runs-on: ubuntu-24.04 - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - 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_PARMYS=OFF -DWITH_ODIN=on' - BUILD_TYPE: debug - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: | - sudo sysctl -w vm.mmap_rnd_bits=28 - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - ./.github/scripts/build.sh - ./run_reg_test.py odin_reg_basic -show_failures -j${{ steps.cpu-cores.outputs.count }} - - - VQM2BLIF: - name: 'VQM2BLIF Basic Tests' - runs-on: ubuntu-24.04 - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - BUILD_TYPE: release - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - 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-24.04 - strategy: - fail-fast: false - matrix: - include: - - { name: 'GCC 11 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-11 && CXX=g++-11', } - - { name: 'GCC 12 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-12 && CXX=g++-12', } - - { name: 'GCC 14 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-14 && CXX=g++-14', } - - { name: 'Clang 16 (Ubuntu Noble - 24.04)', eval: 'CC=clang-16 && CXX=clang++-16', } - - { name: 'Clang 17 (Ubuntu Noble - 24.04)', eval: 'CC=clang-17 && CXX=clang++-17', } - - { name: 'Clang 18 (Ubuntu Noble - 24.04)', eval: 'CC=clang-18 && CXX=clang++-18', } - # Note: We do not include GCC-13 since it is the default and is already tested. - name: 'B: ${{ matrix.name }}' - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - 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 - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: | - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - ./.github/scripts/build.sh - - JammyCompatibility: - name: 'Ubuntu Jammy - 22.04 Compatibility Test' - runs-on: ubuntu-22.04 - steps: - - uses: actions/setup-python@v5 - with: - python-version: 3.10.10 - - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install Dependencies - run: ./.github/scripts/install_jammy_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off" - MATRIX_EVAL: 'CC=gcc-11 && CXX=g++-11' - BUILD_TYPE: release - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - run: | - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - ./.github/scripts/build.sh - - Coverity: - name: 'Coverity Scan' - needs: - - Build - - Format - - UniTests - - Regression - - Sanitized - - Parmys - - ODINII - - VQM2BLIF - - Compatibility - runs-on: ubuntu-24.04 - steps: - - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - - name: Install dependencies - run: ./.github/scripts/install_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - CMAKE_PARAMS: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on' - NUM_PROC: ${{ steps.cpu-cores.outputs.count }} - _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 + # Sanitized: + # runs-on: ubuntu-24.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_PARMYS=OFF -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@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # 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 + # # In Ubuntu 20240310.1.0, the entropy of ASLR has increased (28 -> 32). LLVM 14 in this + # # image is not compatible with this increased ASLR entropy. Apparently, memory sanitizer + # # depends on LLVM and all CI tests where VTR_ENABLE_SANITIZE is enabled fail. For a temporary + # # fix, we manually reduce the entropy. This quick fix should be removed in the future + # # when github deploys a more stable Ubuntu image. + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: | + # sudo sysctl -w vm.mmap_rnd_bits=28 + # 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 -j${{ steps.cpu-cores.outputs.count }} -skip_qor + + + # Parmys: + # name: 'Parmys Basic Test' + # runs-on: ubuntu-24.04 + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - uses: hendrikmuhs/ccache-action@v1.2 + + # - name: Test + # env: + # CMAKE_PARAMS: '-DVTR_IPO_BUILD=off' + # BUILD_TYPE: debug + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # 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 -j${{ steps.cpu-cores.outputs.count }} + + + # ODINII: + # name: 'ODIN-II Basic Test' + # runs-on: ubuntu-24.04 + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # 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_PARMYS=OFF -DWITH_ODIN=on' + # BUILD_TYPE: debug + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: | + # sudo sysctl -w vm.mmap_rnd_bits=28 + # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + # ./.github/scripts/build.sh + # ./run_reg_test.py odin_reg_basic -show_failures -j${{ steps.cpu-cores.outputs.count }} + + + # VQM2BLIF: + # name: 'VQM2BLIF Basic Tests' + # runs-on: ubuntu-24.04 + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - uses: hendrikmuhs/ccache-action@v1.2 + + # - name: Test + # env: + # BUILD_TYPE: release + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # 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-24.04 + # strategy: + # fail-fast: false + # matrix: + # include: + # - { name: 'GCC 11 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-11 && CXX=g++-11', } + # - { name: 'GCC 12 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-12 && CXX=g++-12', } + # - { name: 'GCC 14 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-14 && CXX=g++-14', } + # - { name: 'Clang 16 (Ubuntu Noble - 24.04)', eval: 'CC=clang-16 && CXX=clang++-16', } + # - { name: 'Clang 17 (Ubuntu Noble - 24.04)', eval: 'CC=clang-17 && CXX=clang++-17', } + # - { name: 'Clang 18 (Ubuntu Noble - 24.04)', eval: 'CC=clang-18 && CXX=clang++-18', } + # # Note: We do not include GCC-13 since it is the default and is already tested. + # name: 'B: ${{ matrix.name }}' + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # 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 + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: | + # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + # ./.github/scripts/build.sh + + # JammyCompatibility: + # name: 'Ubuntu Jammy - 22.04 Compatibility Test' + # runs-on: ubuntu-22.04 + # steps: + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.10.10 + + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install Dependencies + # run: ./.github/scripts/install_jammy_dependencies.sh + + # - uses: hendrikmuhs/ccache-action@v1.2 + + # - name: Test + # env: + # CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off" + # MATRIX_EVAL: 'CC=gcc-11 && CXX=g++-11' + # BUILD_TYPE: release + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # run: | + # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + # ./.github/scripts/build.sh + + # Coverity: + # name: 'Coverity Scan' + # needs: + # - Build + # - Format + # - UniTests + # - Regression + # - Sanitized + # - Parmys + # - ODINII + # - VQM2BLIF + # - Compatibility + # runs-on: ubuntu-24.04 + # steps: + + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.12.3 + # - uses: actions/checkout@v4 + # with: + # submodules: 'true' + + # - name: Get number of CPU cores + # uses: SimenB/github-actions-cpu-cores@v2 + # id: cpu-cores + + # - name: Install dependencies + # run: ./.github/scripts/install_dependencies.sh + + # - uses: hendrikmuhs/ccache-action@v1.2 + + # - name: Test + # env: + # CMAKE_PARAMS: '-DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on' + # NUM_PROC: ${{ steps.cpu-cores.outputs.count }} + # _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 diff --git a/trigger-ci-runs.txt b/trigger-ci-runs.txt new file mode 100644 index 0000000000..a3b2d94cb9 --- /dev/null +++ b/trigger-ci-runs.txt @@ -0,0 +1,6 @@ +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15253686635 +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15254423192 +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15255097888 +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15255600569 +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15255989622 +succeed https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/15256444377 diff --git a/vpr/src/route/parallel_connection_router.h b/vpr/src/route/parallel_connection_router.h index 1ec257dc1c..012076b657 100644 --- a/vpr/src/route/parallel_connection_router.h +++ b/vpr/src/route/parallel_connection_router.h @@ -218,13 +218,24 @@ class ParallelConnectionRouter : public ConnectionRoutersub_threads_.resize(multi_queue_num_threads - 1); for (int i = 0; i < multi_queue_num_threads - 1; ++i) { this->sub_threads_[i] = std::thread(&ParallelConnectionRouter::timing_driven_find_single_shortest_path_from_heap_sub_thread_wrapper, this, i + 1 /*0: main thread*/); - this->sub_threads_[i].detach(); } } ~ParallelConnectionRouter() { this->is_router_destroying_ = true; // signal the helper threads to exit this->thread_barrier_.wait(); // wait until all threads reach the barrier + for (auto& sub_thread : this->sub_threads_) { + if (sub_thread.joinable()) { + // Wait for all helper threads to terminate + // IMPORTANT: This must be done before the main thread destructs this class, + // otherwise, the helper threads might have polluted data members (or other + // undefined behaviors). In some cases (due to compiler optimizations, e.g., + // shuffling instructions), the helper thread will remain alive and can access + // invalid address leading to segmentation fault issues (for details refer to + // https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues/3029). + sub_thread.join(); + } + } VTR_LOG("Parallel Connection Router is being destroyed. Time spent on path search: %.3f seconds.\n", std::chrono::duration(this->path_search_cumulative_time).count()); diff --git a/vtr_flow/tasks/regression_tests/vtr_reg_strong/strong_multiclock/config/config.txt b/vtr_flow/tasks/regression_tests/vtr_reg_strong/strong_multiclock/config/config.txt index 6e72a74148..46e014cf1e 100644 --- a/vtr_flow/tasks/regression_tests/vtr_reg_strong/strong_multiclock/config/config.txt +++ b/vtr_flow/tasks/regression_tests/vtr_reg_strong/strong_multiclock/config/config.txt @@ -28,6 +28,6 @@ script_params_common=-starting_stage vpr -sdc_file tasks/regression_tests/vtr_re script_params_list_add = script_params_list_add = --route_chan_width 30 -check_incremental_sta_consistency script_params_list_add = --router_algorithm parallel --num_workers 4 -# script_params_list_add = --enable_parallel_connection_router on --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 -# script_params_list_add = --enable_parallel_connection_router on --multi_queue_num_threads 2 --multi_queue_num_queues 4 --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 -# script_params_list_add = --enable_parallel_connection_router on --multi_queue_num_threads 2 --multi_queue_num_queues 8 --multi_queue_direct_draining on --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 +script_params_list_add = --enable_parallel_connection_router on --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 +script_params_list_add = --enable_parallel_connection_router on --multi_queue_num_threads 2 --multi_queue_num_queues 4 --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 +script_params_list_add = --enable_parallel_connection_router on --multi_queue_num_threads 2 --multi_queue_num_queues 8 --multi_queue_direct_draining on --astar_fac 0.0 --post_target_prune_fac 0.0 --post_target_prune_offset 0.0 diff --git a/vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt b/vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt index 303cdc93c8..4f640372d3 100644 --- a/vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt +++ b/vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt @@ -1,105 +1 @@ -regression_tests/vtr_reg_strong/basic_ap -regression_tests/vtr_reg_strong/strong_ap/mcnc -regression_tests/vtr_reg_strong/strong_ap/vtr_chain -regression_tests/vtr_reg_strong/strong_ap/bipartitioning_partial_legalizer -regression_tests/vtr_reg_strong/strong_ap/flowbased_partial_legalizer -regression_tests/vtr_reg_strong/strong_ap/naive_full_legalizer -regression_tests/vtr_reg_strong/strong_ap/appack_full_legalizer -regression_tests/vtr_reg_strong/strong_ap/annealer_detailed_placer -regression_tests/vtr_reg_strong/strong_ap/none_detailed_placer -regression_tests/vtr_reg_strong/strong_ap/no_fixed_blocks -regression_tests/vtr_reg_strong/strong_ap/unrelated_clustering -regression_tests/vtr_reg_strong/strong_ap/qp_hybrid_analytical_solver -regression_tests/vtr_reg_strong/strong_ap/lp_b2b_analytical_solver -regression_tests/vtr_reg_strong/strong_absorb_buffers -regression_tests/vtr_reg_strong/strong_analysis_only -regression_tests/vtr_reg_strong/strong_bidir -regression_tests/vtr_reg_strong/strong_binary -regression_tests/vtr_reg_strong/strong_binary_heap -regression_tests/vtr_reg_strong/strong_blocks_with_no_inputs -regression_tests/vtr_reg_strong/strong_bounding_box -regression_tests/vtr_reg_strong/strong_check_route_options -regression_tests/vtr_reg_strong/strong_cin_tie_off -regression_tests/vtr_reg_strong/strong_clock_aliases -regression_tests/vtr_reg_strong/strong_clock_aliases_set_delay -regression_tests/vtr_reg_strong/strong_clock_buf -regression_tests/vtr_reg_strong/strong_clock_modeling -regression_tests/vtr_reg_strong/strong_clock_pll -regression_tests/vtr_reg_strong/strong_constant_outputs -regression_tests/vtr_reg_strong/strong_custom_grid -regression_tests/vtr_reg_strong/strong_custom_pin_locs -regression_tests/vtr_reg_strong/strong_custom_switch_block -regression_tests/vtr_reg_strong/strong_custom_sb_loc -regression_tests/vtr_reg_strong/strong_dedicated_clock -regression_tests/vtr_reg_strong/strong_default_fc_pinlocs -regression_tests/vtr_reg_strong/strong_depop -regression_tests/vtr_reg_strong/strong_detailed_timing -regression_tests/vtr_reg_strong/strong_diff_mux_for_inc_dec_wires -regression_tests/vtr_reg_strong/strong_eblif_vpr -regression_tests/vtr_reg_strong/strong_eblif_vpr_write -regression_tests/vtr_reg_strong/strong_echo_files -regression_tests/vtr_reg_strong/strong_equivalent_sites -regression_tests/vtr_reg_strong/strong_fc_abs -regression_tests/vtr_reg_strong/strong_fix_clusters -regression_tests/vtr_reg_strong/strong_fix_pins_random -regression_tests/vtr_reg_strong/strong_flat_placement/read_write -regression_tests/vtr_reg_strong/strong_flyover_wires -regression_tests/vtr_reg_strong/strong_fpu_hard_block_arch -regression_tests/vtr_reg_strong/strong_fracturable_luts -regression_tests/vtr_reg_strong/strong_full_stats -regression_tests/vtr_reg_strong/strong_func_formal_flow -regression_tests/vtr_reg_strong/strong_func_formal_vpr -regression_tests/vtr_reg_strong/strong_global_nonuniform -regression_tests/vtr_reg_strong/strong_global_routing -regression_tests/vtr_reg_strong/strong_graphics_commands -regression_tests/vtr_reg_strong/strong_manual_annealing -regression_tests/vtr_reg_strong/strong_mcnc -regression_tests/vtr_reg_strong/strong_minimax_budgets regression_tests/vtr_reg_strong/strong_multiclock -regression_tests/vtr_reg_strong/strong_no_timing -regression_tests/vtr_reg_strong/strong_pack -regression_tests/vtr_reg_strong/strong_pack_and_place -regression_tests/vtr_reg_strong/strong_pack_disable -regression_tests/vtr_reg_strong/strong_pack_modes -regression_tests/vtr_reg_strong/strong_place -regression_tests/vtr_reg_strong/strong_place_delay_calc_method -regression_tests/vtr_reg_strong/strong_place_delay_model -regression_tests/vtr_reg_strong/strong_place_effort_scaling -regression_tests/vtr_reg_strong/strong_place_quench_slack -regression_tests/vtr_reg_strong/strong_post_routing_sync -regression_tests/vtr_reg_strong/strong_power -regression_tests/vtr_reg_strong/strong_route_only -regression_tests/vtr_reg_strong/strong_route_reconverge -regression_tests/vtr_reg_strong/strong_router_init_timing -regression_tests/vtr_reg_strong/strong_router_lookahead -regression_tests/vtr_reg_strong/strong_router_update_lb_delays -regression_tests/vtr_reg_strong/strong_routing_differing_modes -regression_tests/vtr_reg_strong/strong_routing_modes -regression_tests/vtr_reg_strong/strong_scale_delay_budgets -regression_tests/vtr_reg_strong/strong_sdc -regression_tests/vtr_reg_strong/strong_soft_multipliers -regression_tests/vtr_reg_strong/strong_sub_tiles -regression_tests/vtr_reg_strong/strong_sub_tiles_directs -regression_tests/vtr_reg_strong/strong_sweep_constant_outputs -regression_tests/vtr_reg_strong/strong_target_pin_util -regression_tests/vtr_reg_strong/strong_tight_floorplan -regression_tests/vtr_reg_strong/strong_timing -regression_tests/vtr_reg_strong/strong_timing_report_detail -regression_tests/vtr_reg_strong/strong_timing_update_diff -regression_tests/vtr_reg_strong/strong_timing_update_type -regression_tests/vtr_reg_strong/strong_titan -regression_tests/vtr_reg_strong/strong_titan_s10 -regression_tests/vtr_reg_strong/strong_two_chains -regression_tests/vtr_reg_strong/strong_unroute_analysis -regression_tests/vtr_reg_strong/strong_verify_rr_graph -regression_tests/vtr_reg_strong/strong_verify_rr_graph_bin -regression_tests/vtr_reg_strong/strong_verify_rr_graph_titan -regression_tests/vtr_reg_strong/koios_test -regression_tests/vtr_reg_strong/koios_test_no_hb -regression_tests/vtr_reg_strong/strong_timing_fail -regression_tests/vtr_reg_strong/strong_timing_no_fail -regression_tests/vtr_reg_strong/strong_noc -regression_tests/vtr_reg_strong/strong_flat_router -regression_tests/vtr_reg_strong/strong_routing_constraints -regression_tests/vtr_reg_strong/strong_3d/3d_cb -regression_tests/vtr_reg_strong/strong_3d/3d_sb