Skip to content

Added check to caches to avoid invalid configurations #762

Added check to caches to avoid invalid configurations

Added check to caches to avoid invalid configurations #762

Workflow file for this run

name: Fast Regressions
on:
pull_request:
branches-ignore:
- main
paths-ignore:
- "documentation/**"
workflow_dispatch:
concurrency:
group: minimal-${{ github.head_ref }}
cancel-in-progress: true
env:
report-dir: test-reports
storage-url: "${{secrets.CI_STORAGE_URL}}"
storage-user: "${{secrets.CI_STORAGE_USER}}"
storage-token: "${{secrets.CI_STORAGE_TOKEN}}"
host_jobs: $J
jobs:
build:
uses: ./.github/workflows/build-appimage.yml
with:
package-name: bambu-minimal
compilers: gcc-4.9,gcc-5,gcc-6,gcc-7,clang-4,clang-6,clang-7,clang-11,clang-13,clang-16
secrets: inherit
changes:
runs-on: [self-hosted]
permissions:
pull-requests: read
outputs:
softfloat: ${{ steps.filter.outputs.softfloat }}
libm: ${{ steps.filter.outputs.libm }}
ac_types: ${{ steps.filter.outputs.ac_types }}
steps:
- name: Detect changes
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
softfloat:
- 'etc/libbambu/bambu_macros.h'
- 'etc/libbambu/mul64.c'
- 'etc/libbambu/softfloat/**'
libm:
- 'etc/libbambu/bambu_macros.h'
- 'etc/libbambu/mul64.c'
- 'etc/libbambu/libm/**'
- 'etc/libbambu/softfloat/**'
ac_types:
- 'etc/libbambu/ac_math/**'
- 'etc/libbambu/ac_types/**'
ACMath-tests:
needs: [changes]
if: ${{needs.changes.outputs.ac_types == 'true'}}
runs-on: [self-hosted]
container:
image: bambuhls/dev:focal-23.10
env:
J: ${{env.host_jobs}}
strategy:
matrix:
include:
- compiler: g++
- compiler: g++
flags: -std=c++17
- compiler: clang++
- compiler: clang++
flags: -std=c++17
- compiler: clang++-16
flags: -std=c++17
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Clang
if: ${{ matrix.compiler == 'clang++' }}
shell: bash
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends clang
- name: Install Clang 16
if: ${{ matrix.compiler == 'clang++-16' }}
shell: bash
run: |
bash .devcontainer/library-scripts/compiler-download.sh / clang-16
bash .devcontainer/library-scripts/compiler-setup.sh
- name: Launch ACMath tests for ${{matrix.compiler}} ${{matrix.flags}}
working-directory: ./etc/libbambu/ac_math
shell: bash
run: ./ac_math_test.sh $(mktemp -d /tmp/ac_math_XXX) CXX=${{matrix.compiler}} CXXUSERFLAGS="${{matrix.flags}}"
specific-test:
needs: [build]
runs-on: [self-hosted]
strategy:
fail-fast: false
matrix:
id: ["", "2", "3", "4", "5", "6"]
env:
args: -c=--simulator=VERILATOR -c=--verilator-parallel=4
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch Bambu specific test ${{matrix.id}}
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
./panda_regressions/hls/bambu_specific_test${{matrix.id}}.sh --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: bambu_specific_test${{matrix.id}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: bambu_specific_test${{matrix.id}}
path: ${{env.report-dir}}
interface-test:
needs: [build, ACMath-tests]
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: [self-hosted,mentor]
strategy:
fail-fast: false
matrix:
simulator: [MODELSIM, VERILATOR]
env:
script: ./panda_regressions/hls/bambu_interface_test.sh
args: -c=--simulator=${{matrix.simulator}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch Bambu interface test ${{matrix.simulator}}
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: bambu_interface_test${{matrix.simulator}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: bambu_interface_test${{matrix.simulator}}
path: ${{env.report-dir}}
AXI4-verification:
needs: [build]
runs-on: [self-hosted,mentor]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch AXI test
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
./panda_regressions/hls/bambu_axi_verification.sh
gcc_regression_simple:
needs: [build, specific-test]
runs-on: [self-hosted, mentor, xilinx]
env:
outname: ${{matrix.setup}}_regression_simple
strategy:
fail-fast: false
matrix:
include:
- setup: gcc-4.9
script: generic_gcc_regression_simple_eg_ext_pipelined.sh
args: -c=--compiler=I386_GCC49 -c=--reset-type=sync -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-4.0
script: generic_gcc_regression_simple_eg.sh
args: -c=--compiler=I386_CLANG4 -c=--simulator=MODELSIM
- setup: clang-6.0
script: generic_gcc_regression_simple_bambu.sh
args: -c=--compiler=I386_CLANG6 -c=--simulator=XSIM
- setup: clang-7
script: generic_gcc_regression_simple_bambu.sh
args: -c=--compiler=I386_CLANG7 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-11
script: generic_gcc_regression_simple_bambu.sh
args: -c=--compiler=I386_CLANG11 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-13
script: generic_gcc_regression_simple_eg_ext_pipelined.sh
args: -c=--compiler=I386_CLANG13 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-16
script: generic_gcc_regression_simple_eg_ext_pipelined.sh
args: -c=--compiler=I386_CLANG16 -c=--simulator=VERILATOR -c=-Wno-int-conversion -c=--verilator-parallel=2
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch GCC regression test suite
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{matrix.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{matrix.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
gcc_regression_simple-pretty_print:
needs: [build, specific-test]
runs-on: [self-hosted]
env:
setup: gcc-4.9
script: generic_gcc_regression_simple_bambu_pretty_print.sh
args: -c=--compiler=I386_GCC49 -c=--simulator=VERILATOR -c=--verilator-parallel=4
outname: gcc-4.9_regression_simple-pretty_print
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch GCC regression test suite with pretty-print
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
gcc_regression_simple-vhdl:
needs: [build, specific-test]
runs-on: [self-hosted, mentor]
env:
setup: gcc-7
script: generic_gcc_regression_simple_bambu_vhdl.sh
args: -c=--compiler=I386_GCC7 -c=--simulator=MODELSIM
outname: gcc-7_regression_simple-vhdl
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch GCC regression test suite with VHDL target
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
discrepancy-test:
needs: [build, specific-test]
runs-on: [self-hosted]
env:
setup: gcc-7
script: generic_discrepancy_eg_bambu.sh
args: -c=--compiler=I386_GCC7
outname: gcc-7_discrepancy
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch Bambu discrepancy tests
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
softfloat-preliminary:
needs: [changes]
if: ${{needs.changes.outputs.softfloat == 'true'}}
runs-on: [self-hosted]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Env setup
id: host
shell: bash
run: |
echo "Current host supports ${{env.host_jobs}} parallel jobs"
echo "jobs=${{env.host_jobs}}" >> $GITHUB_OUTPUT
- name: Verify SoftFloat implementation
uses: ./.github/actions/docker-runner
with:
script: ./panda_regressions/hls/test_softfloat.sh
jobs: ${{steps.host.outputs.jobs}}
softfloat-tests:
needs: [build, softfloat-preliminary]
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: [self-hosted, mentor]
env:
script: multi_softfloat-tests.sh
args: -c=--simulator=VERILATOR -c=--verilator-parallel=4
outname: multi_softfloat-tests
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch SoftFloat test suite
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
libm-preliminary:
needs: [changes]
if: ${{needs.changes.outputs.libm == 'true'}}
runs-on: [self-hosted]
strategy:
matrix:
func: [expf, logf, powf, sinecosine, sqrt, sqrtf]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Env setup
id: host
shell: bash
run: |
echo "Current host supports ${{env.host_jobs}} parallel jobs"
echo "jobs=${{env.host_jobs}}" >> $GITHUB_OUTPUT
- name: Verify ${{matrix.func}} implementation
uses: ./.github/actions/docker-runner
with:
script: ./panda_regressions/hls/test_libm_${{matrix.func}}.sh
jobs: ${{steps.host.outputs.jobs}}
libm-tests:
needs: [build, libm-preliminary, softfloat-tests]
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: [self-hosted, mentor]
strategy:
fail-fast: false
matrix:
include:
- setup: gcc-4.9
args: -c=--compiler=I386_GCC49 -c=--simulator=MODELSIM
- setup: clang-4.0
args: -c=--compiler=I386_CLANG4 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-6.0
args: -c=--compiler=I386_CLANG6 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-7
args: -c=--compiler=I386_CLANG7 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-11
args: -c=--compiler=I386_CLANG11 -c=--simulator=MODELSIM
- setup: clang-13
args: -c=--compiler=I386_CLANG13 -c=--simulator=VERILATOR -c=--verilator-parallel=2
- setup: clang-16
args: -c=--compiler=I386_CLANG16 -c=--simulator=VERILATOR -c=--verilator-parallel=2
env:
script: generic_libm-tests.sh
args: -c=--speculative-sdc-scheduling
outname: ${{matrix.setup}}_libm
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch LibM test suite
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{matrix.args}} ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
CHStone-multi:
needs: [build]
runs-on: [self-hosted, mentor]
env:
script: multi_CHStone-frontend.sh
args: -c=--simulator=MODELSIM
outname: multi_CHStone-frontend
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch CHStone test suite
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
Panda-bench-yosys:
needs: [build]
runs-on: [self-hosted]
env:
outname: panda_bench_yosys
script: ./examples/panda_bench_yosys.sh
OMP_NUM_THREADS: 4
J: 5
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup exec script
id: setup
shell: bash
run: |
cat > docker_exec.sh << EOF
mkdir bin
./*.AppImage --appimage-extract > /dev/null
rm ./*.AppImage
ln -s \$PWD/squashfs-root/usr/bin/bambu bin/bambu
ln -s \$PWD/squashfs-root/usr/bin/spider bin/spider
echo "local-bin=\$PWD/bin" >> \$GITHUB_OUTPUT
echo "appdir=\$PWD/squashfs-root" >> \$GITHUB_OUTPUT
export PATH=\$PWD/bin:\$PATH
export APPDIR=\$PWD/squashfs-root
export LD_LIBRARY_PATH=\$APPDIR/usr/lib/:\$APPDIR/lib/x86_64-linux-gnu/
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> \$GITHUB_OUTPUT
${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
EOF
chmod +x docker_exec.sh
- name: Launch test suite
id: suite
uses: ./.github/actions/yosys-runner
with:
script: ./docker_exec.sh
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
memarch-tests:
needs: [build, CHStone-multi]
runs-on: [self-hosted, mentor]
strategy:
fail-fast: false
matrix:
include:
- compiler: I386_GCC7
script: generic_CHStone-memarch1.sh
args: ""
- compiler: I386_GCC7
script: generic_CHStone-memarch1.sh
args: -c=-wH -c=--simulator=MODELSIM
- compiler: I386_CLANG13
script: generic_CHStone-memarch2.sh
args: ""
- compiler: I386_CLANG13
script: generic_CHStone-memarch2.sh
args: -c=-wH -c=--simulator=XSIM
- compiler: I386_CLANG11
script: generic_gcc-memarch3.sh
args: ""
- compiler: I386_CLANG11
script: generic_gcc-memarch3.sh
args: -c=-wH -c=--simulator=XSIM
env:
args: -c=--compiler=${{matrix.compiler}} ${{matrix.args}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch CHStone test suite
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./panda_regressions/hls/${{matrix.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Generate out name
if: ${{ !cancelled() }}
id: get
shell: bash
run: |
OUTNAME="$(echo '${{matrix.compiler}}' | sed 's/I386_//g' | tr '[:upper:]' '[:lower:]')_memarch-tests_"
if [[ "${{env.args}}" = *-c=-wH* ]]; then
OUTNAME+="vhdl"
else
OUTNAME+="verilog"
fi
echo "outname=$OUTNAME" >> $GITHUB_OUTPUT
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{steps.get.outputs.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
omp-simd:
needs: [build]
runs-on: [self-hosted, mentor]
strategy:
fail-fast: false
matrix:
device: [5SGXEA7N2F45C1, xc7vx690t-3ffg1930-VVD]
env:
outname: omp_simd_${{matrix.device}}
script: ./examples/omp_simd/generic_omp_simd.sh
args: -c=--simulator=MODELSIM -c=--compiler=I386_GCC49 -c=--clock-period=10 -c=--device-name=${{matrix.device}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch omp simd evaluation on ${{matrix.device}}
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
${{env.script}} --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{env.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{env.report-dir}}
Panda-bench:
needs: [build]
runs-on: [self-hosted, altera, intelFPGA, lattice, mentor, xilinx]
strategy:
fail-fast: false
matrix:
include:
- test: altera
datapoints: CYCLES,PERIOD,AREA,REGISTERS,DSPS,BRAMS
- test: hw
args: -c=--evaluation=PERIOD,AREA,FREQUENCY,CLOCK_SLACK,REGISTERS,DSPS,BRAMS
datapoints: PERIOD,AREA,REGISTERS,DSPS,BRAMS
- test: lattice
datapoints: CYCLES
- test: nanoxplore
datapoints: CYCLES,PERIOD,AREA,REGISTERS,DSPS,BRAMS
- test: sim
datapoints: CYCLES
- test: xilinx_ise
datapoints: CYCLES,PERIOD,AREA,REGISTERS,DSPS,BRAMS
- test: xilinx_vvd
datapoints: CYCLES,PERIOD,AREA,REGISTERS,DSPS,BRAMS
env:
outname: panda_bench_${{matrix.test}}
OMP_NUM_THREADS: 4
J: 5
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch Panda bench ${{matrix.test}}
id: suite
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
mkdir ${{env.report-dir}}
echo "test-reports-dir=$PWD/${{env.report-dir}}" >> $GITHUB_OUTPUT
./examples/panda_bench_${{matrix.test}}.sh --returnfail --junitdir="${{env.report-dir}}" --csv="${{env.report-dir}}/perf.csv" ${{matrix.args}}
- name: Compare results
id: perf-check
uses: ./.github/actions/perf-check
with:
test-id: ${{env.outname}}
new-results: ${{env.report-dir}}/perf.csv
datapoints: ${{matrix.datapoints}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Add performance results
if: ${{ steps.perf-check.outputs.compare-csv != '' }}
shell: bash
run: |
mv ${{ steps.perf-check.outputs.compare-csv }} ${{env.report-dir}}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: ${{env.outname}}
path: ${{steps.suite.outputs.test-reports-dir}}
Make-checks:
needs: [build]
runs-on: [self-hosted, lattice, mentor, xilinx]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Bambu AppImage
uses: ./.github/actions/storage-download
with:
name: ${{needs.build.outputs.package-name}}
storage-url: "${{env.storage-url}}"
username: "${{env.storage-user}}"
password: "${{env.storage-token}}"
- name: Setup binaries
id: setup
shell: bash
run: |
mkdir bin
ln -s $PWD/*.AppImage bin/bambu
ln -s $PWD/*.AppImage bin/spider
ln -s $PWD/*.AppImage bin/tree-panda-gcc
echo "local-bin=$PWD/bin" >> $GITHUB_OUTPUT
- name: Launch script
shell: bash
run: |
export PATH=${{steps.setup.outputs.local-bin}}:$PATH
./examples/cpp_examples/fir_filter/bambu.sh
./examples/cpp_examples/gcd_example/bambu.sh
./examples/crypto_designs/multi.sh
success:
if: ${{ !cancelled() }}
needs:
[
gcc_regression_simple,
gcc_regression_simple-vhdl,
gcc_regression_simple-pretty_print,
interface-test,
libm-tests,
discrepancy-test,
omp-simd,
Make-checks,
memarch-tests,
Panda-bench,
Panda-bench-yosys,
]
runs-on: [self-hosted]
steps:
- name: Check GCC Regression Simple Multi status
if: ${{ needs.gcc_regression_simple.result != 'success' }}
run: exit 1
- name: Check GCC Regression Simple VHDL status
if: ${{ needs.gcc_regression_simple-vhdl.result != 'success' }}
run: exit 1
- name: Check GCC Regression Simple pretty print status
if: ${{ needs.gcc_regression_simple-pretty_print.result != 'success' }}
run: exit 1
- name: Check Interface Test status
if: ${{ needs.interface-test.result != 'success' }}
run: exit 1
- name: Check LibM Multi status
if: ${{ needs.libm-tests.result != 'success' }}
run: exit 1
- name: Check GCC Regression Discrepancy status
if: ${{ needs.discrepancy-test.result != 'success' }}
run: exit 1
- name: Check OMP simd status
if: ${{ needs.omp-simd.result != 'success' }}
run: exit 1
- name: Check Make Checks status
if: ${{ needs.Make-checks.result != 'success' }}
run: exit 1
- name: Check CHStone memory architecture 1 status
if: ${{ needs.memarch-tests.result != 'success' }}
run: exit 1
- name: Check PandA benchmarks status
if: ${{ needs.Panda-bench.result != 'success' }}
run: exit 1
- name: Check PandA benchmarks for Yosys status
if: ${{ needs.Panda-bench-yosys.result != 'success' }}
run: exit 1