Skip to content

Merge master into 4th-cuckoo branch (#97) #506

Merge master into 4th-cuckoo branch (#97)

Merge master into 4th-cuckoo branch (#97) #506

Workflow file for this run

# Copyright (C) 2023-2024, Advanced Micro Devices, Inc. All rights reserved.
#
# Author: Eddie Hung, AMD
#
# SPDX-License-Identifier: MIT
#
name: make
on:
push:
pull_request:
jobs:
make:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
router:
- cuckoo
lutpinswapping:
- false
- true
lutroutethru:
- false
- true
benchmark:
- logicnets_jscl
- boom_med_pb
- vtr_mcml
- rosetta_fd
- corundum_25g
- finn_radioml
- vtr_lu64peeng
- corescore_500
- corescore_500_pb
- mlcad_d181_lefttwo3rds
- koios_dla_like_large
- boom_soc
- ispd16_example2
exclude:
# Cuckoo does not support LUT pin swapping
- router: cuckoo
lutpinswapping: true
# Cuckoo does not support LUT routethrus
- router: cuckoo
lutroutethru: true
# NXRoute does not support LUT pin swapping
- router: nxroute-poc
lutpinswapping: true
# NXRoute does not support LUT routethrus
- router: nxroute-poc
lutroutethru: true
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- if: matrix.router == 'nxroute-poc'
uses: actions/setup-python@v5
with:
python-version: '3.12'
check-latest: true
cache: 'pip'
- name: Download xcvu3p.device
if: matrix.router == 'nxroute-poc' || matrix.router == 'cuckoo'
run:
wget -q https://github.com/Xilinx/fpga24_routing_contest/releases/latest/download/xcvu3p.device
- name: Build capnp-0.10.2
run: |
curl -O https://capnproto.org/capnproto-c++-0.10.2.tar.gz
tar zxf capnproto-c++-0.10.2.tar.gz
cd capnproto-c++-0.10.2
./configure
make
sudo make install
- name: Build OpenPARF/fpga24contest
run: |
sudo apt-get -y install cmake libopenblas-dev libboost-filesystem-dev libboost-program-options-dev
cd OpenPARF/fpga24contest
mkdir build
cd build
cmake ../src -DCMAKE_BUILD_TYPE=Release
make
- env:
REPORT_ROUTE_STATUS_URL: ${{ secrets.REPORT_ROUTE_STATUS_URL }}
REPORT_ROUTE_STATUS_AUTH: ${{ secrets.REPORT_ROUTE_STATUS_AUTH }}
RWROUTE_FORCE_LUT_PINSWAPPING: ${{ matrix.router == 'rwroute' && matrix.lutpinswapping }}
RWROUTE_FORCE_LUT_ROUTETHRU: ${{ matrix.router == 'rwroute' && matrix.lutroutethru }}
run: |
make ROUTER="${{ matrix.router }}" BENCHMARKS="${{ matrix.benchmark }}" VERBOSE=1
- name: Score summary
run:
make ROUTER="${{ matrix.router }}" BENCHMARKS="${{ matrix.benchmark }}" VERBOSE=1
- name: Verify pass (non nxroute-poc)
if: matrix.router != 'nxroute-poc'
run: |
set -x
# Allow CheckPhysNetlist to fail if no remote access to Vivado
grep -H PASS *.check || (grep -H FAIL *.check && ${{ secrets.REPORT_ROUTE_STATUS_URL == '' }})
grep -H -e "# of nets with routing errors[. :]\+0" *.check.log || ${{ secrets.REPORT_ROUTE_STATUS_URL == '' }}
# But CheckPhysNetlist must have no differences
grep "INFO: No differences found between routed and unrouted netlists" *.check.log
# Check no multiple sources, no stubs
grep "UserWarning: Found [0-9]\+ sources" *.wirelength && exit 1
grep "UserWarning: Found [0-9]\+ stubs" *.wirelength && exit 1
# Check wirelength was computed
grep "^Wirelength: [1-9][0-9]*" *.wirelength
- name: Verify fail (nxroute-poc)
if: matrix.router == 'nxroute-poc'
run: |
set -x
grep -H FAIL *.check
# Only expect report_route_status output if URL given
grep -H -e "# of nets with routing errors[. :]\+[1-9]" -e "# of unrouted nets[. :]\+[1-9]" *.check.log || ${{ secrets.REPORT_ROUTE_STATUS_URL == '' }}
# But CheckPhysNetlist must have no differences (except koios because out-of-memory)
grep "INFO: No differences found between routed and unrouted netlists" *.check.log || ${{ matrix.benchmark == 'koios_dla_like_large' }}
# Check no multiple sources, but expect possibility of stubs since nxroute is unlikely to fully route the design
grep "UserWarning: Found [0-9]\+ sources" *.wirelength && exit 1
grep "UserWarning: Found [0-9]\+ stubs" *.wirelength || true
# Allow wirelength computation to fail since nxroute may not have routed anything or wirelength_analyzer was not run
grep "^Wirelength: [1-9][0-9]*" *.wirelength || true
- uses: actions/upload-artifact@v4
if: always()
with:
name: logs-${{ matrix.router }}${{ matrix.router == 'rwroute' && matrix.lutpinswapping && '-lutpinswapping' || ''}}${{ matrix.router == 'rwroute' && matrix.lutroutethru && '-lutroutethru' || ''}}-${{ matrix.benchmark }}
path: |
*.log
*.check
*.wirelength
- uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ matrix.router }}${{ matrix.router == 'rwroute' && matrix.lutpinswapping && '-lutpinswapping' || ''}}${{ matrix.router == 'rwroute' && matrix.lutroutethru && '-lutroutethru' || ''}}-${{ matrix.benchmark }}
compression-level: 0
path: |
*.dcp
*.phys
${{ matrix.benchmark }}.netlist.edn/*
*_load.tcl
!*_unrouted.phys
merge-logs:
runs-on: ubuntu-latest
needs: make
steps:
- uses: actions/upload-artifact/merge@v4
with:
name: logs
pattern: logs-*
delete-merged: true