From fe1686efc1828bdee695d51b697bcba97c6a4ee7 Mon Sep 17 00:00:00 2001 From: Tim Fischer Date: Wed, 4 Sep 2024 17:25:56 +0200 Subject: [PATCH] Revert "REVERT: Disable CI" This reverts commit 686a955491d60c24b95354b9ae556df047fd6ddd. --- .github/workflows/ci.yml | 104 ++++++++++++++++++++ .github/workflows/gitlab-ci.yaml | 28 ++++++ .github/workflows/lint.yml | 157 +++++++++++++++++++++++++++++++ 3 files changed, 289 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/gitlab-ci.yaml create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..b57013070 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,104 @@ +# Copyright 2020 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Run functional regression checks +name: ci +on: + push: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + + ######## + # Docs # + ######## + + docs: + name: Build documentation + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + container: + image: ghcr.io/pulp-platform/snitch_cluster:pyproject + steps: + - uses: actions/checkout@v2 + - name: Build docs + run: make docs + + ##################### + # Python unit tests # + ##################### + + pytest: + name: Python unit tests + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + container: + image: ghcr.io/pulp-platform/snitch_cluster:pyproject + steps: + - uses: actions/checkout@v2 + - name: Run pytest + run: pytest + + ############################################## + # Simulate SW on Snitch Cluster w/ Verilator # + ############################################## + + sw-snitch-cluster-vlt: + name: Simulate SW on Snitch Cluster w/ Verilator + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + container: + image: ghcr.io/pulp-platform/snitch_cluster:pyproject + steps: + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + - name: Install local Python packages + run: pip install . + - name: Build Software + working-directory: target/snitch_cluster + run: | + bender vendor init + make CFG_OVERRIDE=cfg/github-ci.hjson sw + - name: Build Hardware + working-directory: target/snitch_cluster + run: | + make CFG_OVERRIDE=cfg/github-ci.hjson VLT_JOBS=1 bin/snitch_cluster.vlt + - name: Run Tests + working-directory: target/snitch_cluster + run: | + ./util/run.py sw/run.yaml --simulator verilator -j + ./util/run.py sw/fdiv.yaml --simulator verilator -j + - name: Annotate traces + working-directory: target/snitch_cluster + run: | + make SIM_DIR=./runs/simple annotate -j + + ######################################### + # Build SW on Snitch Cluster w/ Banshee # + ######################################### + + sw-snitch-cluster-banshee: + name: Simulate SW on Snitch Cluster w/ Banshee + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + container: + image: ghcr.io/pulp-platform/snitch_cluster:pyproject + steps: + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + - name: Install local Python packages + run: pip install . + - name: Build Software + run: | + bender vendor init + make -C target/snitch_cluster SELECT_RUNTIME=banshee sw + - name: Run Tests + env: + SNITCH_LOG: info + working-directory: target/snitch_cluster + run: | + ./util/run.py sw/run.yaml --simulator banshee -j diff --git a/.github/workflows/gitlab-ci.yaml b/.github/workflows/gitlab-ci.yaml new file mode 100644 index 000000000..5415e8d49 --- /dev/null +++ b/.github/workflows/gitlab-ci.yaml @@ -0,0 +1,28 @@ +# Copyright 2023 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Some CI tests run on our GitLab servers due to licenses and tools +name: gitlab-ci +on: [push, pull_request, workflow_dispatch] +jobs: + gitlab-ci: + name: Internal Gitlab CI + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + steps: + - name: Check Gitlab CI + uses: pulp-platform/pulp-actions/gitlab-ci@v2.1.0 + # Skip on forks or pull requests from forks due to missing secrets. + if: + # yamllint disable rule:line-length + github.repository == 'pulp-platform/snitch_cluster' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + # yamllint enable rule:line-length + with: + domain: iis-git.ee.ethz.ch + repo: github-mirror/snitch_cluster + token: ${{ secrets.GITLAB_TOKEN }} + poll-period: 20 + poll-count: 1000 + retry-count: 100 + retry-period: 50 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..a6c683739 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,157 @@ +# Copyright 2023 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Run all lint checks +name: lint +on: [push, pull_request] + +jobs: + + ################ + # Verible Lint # + ################ + verible-lint: + name: Lint Verilog sources + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - uses: actions/checkout@v3 + - uses: chipsalliance/verible-linter-action@main + with: + paths: | + ./hw + github_token: ${{ secrets.GITHUB_TOKEN }} + fail_on_error: true + reviewdog_reporter: github-check + extra_args: "--waiver_files util/lint/waiver.verible" + verible_version: "v0.0-3318-g8d254167" + + ##################### + # Vendor Up-to-Date # + ##################### + bender-vendor-up-to-date: + name: Check bender vendor up-to-date + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Check bender vendor up-to-date + uses: pulp-platform/pulp-actions/bender-vendor-up-to-date@v2.1.0 + + ###################### + # Sources Up-to-Date # + ###################### + sources-up-to-date: + name: Check Sources Up-to-Date + runs-on: ubuntu-22.04 + if: github.event.pull_request.draft == false + container: + image: ghcr.io/pulp-platform/snitch_cluster:pyproject + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install local Python packages + run: pip install . + - name: Generate opcodes + run: | + ./util/generate-opcodes.sh + - name: Generate RTL sources + working-directory: target/snitch_cluster + run: | + make rtl + # For some reason, the checkout is done by a different user, + # than that running `git diff` (root, possibly due to Docker). + # So we need to set the repository as a safe directory. + - name: Git config safe.directory + run: | + git config --global --add safe.directory $GITHUB_WORKSPACE + - name: Diff porcelain + uses: mmontes11/diff-porcelain@v0.0.1 + with: + message: Found differences, please update all sources + + ################# + # Check License # + ################# + license-lint: + name: Check License headers + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Check License + uses: pulp-platform/pulp-actions/lint-license@v2.1.0 + with: + patches: 0001-Allow-hash-comments-in-assembly.patch + # We cover ETH Zurich and lowRISC licenses and Apache 2.0 + # (mostly for SW) and Solderpad for the hardware. + # yamllint disable rule:line-length + license: | + Copyright (\d{4}(-\d{4})?\s)?(ETH Zurich and University of Bologna|lowRISC contributors). + (Solderpad Hardware License, Version 0.51|Licensed under the Apache License, Version 2.0), see LICENSE for details. + SPDX-License-Identifier: (SHL-0.51|Apache-2.0) + # yamllint enable rule:line-length + match_regex: true + exclude_paths: | + sw/snRuntime/src/omp/interface.h + + ################## + # Lint YML Files # + ################## + yaml-lint: + name: Lint YAML Sources + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - uses: actions/checkout@v3 + - name: yaml-lint + uses: ibiqlik/action-yamllint@v3 + with: + config_file: util/lint/.yamllint.yml + + ######################## + # Check Python Sources # + ######################## + python-lint: + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + name: Lint Python Sources + steps: + - name: Check out source repository + uses: actions/checkout@v3 + - name: Set up Python environment + uses: actions/setup-python@v4 + with: + python-version: "3.11" + - name: flake8 Lint + uses: py-actions/flake8@v2 + with: + flake8-version: "6.0.0" + max-line-length: "100" + + ###################### + # Clang-Format Check # + ###################### + # Check C/C++ files for correct formatting. + clangfmt: + name: Lint C/C++ Sources + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - uses: actions/checkout@v3 + - uses: DoozyX/clang-format-lint-action@v0.16.2 + with: + clangFormatVersion: 10 + + ###################### + # Lint Editor Config # + ###################### + # Detect trailing whitespaces, missing new lines and wrong file encodings. + editorconfig-lint: + name: Lint Editorconfig + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - uses: actions/checkout@v3 + - uses: editorconfig-checker/action-editorconfig-checker@main + - run: editorconfig-checker