Fix/tree manager performance #717
Workflow file for this run
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: 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=4 | |
- 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=4 | |
- setup: clang-11 | |
script: generic_gcc_regression_simple_bambu.sh | |
args: -c=--compiler=I386_CLANG11 -c=--simulator=VERILATOR -c=--verilator-parallel=4 | |
- setup: clang-13 | |
script: generic_gcc_regression_simple_eg_ext_pipelined.sh | |
args: -c=--compiler=I386_CLANG13 -c=--simulator=VERILATOR -c=--verilator-parallel=4 | |
- 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=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 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=4 | |
- setup: clang-6.0 | |
args: -c=--compiler=I386_CLANG6 -c=--simulator=VERILATOR -c=--verilator-parallel=4 | |
- setup: clang-7 | |
args: -c=--compiler=I386_CLANG7 -c=--simulator=VERILATOR -c=--verilator-parallel=4 | |
- 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=4 | |
- setup: clang-16 | |
args: -c=--compiler=I386_CLANG16 -c=--simulator=VERILATOR -c=--verilator-parallel=4 | |
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 | |
nproc: 4 | |
parallel: 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/ | |
export NPROC=${{env.nproc}} | |
export J=${{env.parallel}} | |
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}} | |
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 |