Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SEAL5 CI/CD Flow: Build ETISS #152

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
133 changes: 133 additions & 0 deletions .github/workflows/build_etiss.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: Build ETISS
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow name and filename should be a bit more precise:

  • We do not only build etiss. The workflow runs m2isar, patches etiss and then builds it
  • This workflow is currently S4EMac specific. This should probably be indicated somewhere
  • Ideally we could extend this to support other archs than RV32IMCXS4EMAC. This should be feasible by moving the env: contents into a CI matrix and adding conditionals tto the steps below. I think we should discuss this after the PR is merged as it would require more testing...


on:
repository_dispatch:
types: [s4e-cdl-event, seal5-event]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cdl -> cdsl?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed

#push:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove comment

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or comment it in, if we want the workflow to be executed when etiss has new commits (which might be a good idea...)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commented this in.

# branches: [ "master" ]
# pull_request:
# branches: [ "master" ]

env:
BUILD_TYPE: Release
SEAL5_PREBUILT_DIR: /home/runner/work/etiss/etiss/seal5_prebuilt/release
RISCV_GCC_NAME: riscv32-unknown-elf
ARCH: rv32imc_xs4emac
ETISS_ARCH: RV32IMCXS4EMAC
PROG: s4emac
ABI: ilp32

jobs:
setup-run-M2ISAR:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

setup-run-M2ISAR -> setup-run-m2isar

runs-on: ubuntu-22.04

steps:
- name: Install dependencies
run: |
sudo apt-get update
pip install virtualenv

- name: Setup M2-ISA-R
run: |
git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."https://".insteadOf git://
git clone https://github.com/PhilippvK/riscv-coredsl-extensions.git --branch etiss --recursive
git clone https://github.com/tum-ei-eda/etiss_arch_riscv.git --recursive --branch coredsl_exceptions
git clone https://github.com/tum-ei-eda/M2-ISA-R.git --branch coredsl2
cd M2-ISA-R
virtualenv -p python3.10 venv #Alternative (requires `apt install python3-venv`): python3 -m venv venv
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove alternative comment

source venv/bin/activate
pip install -e .

- name: Run M2-ISA-R
run: |
cd M2-ISA-R
source venv/bin/activate
python -m m2isar.frontends.coredsl2.parser ../riscv-coredsl-extensions/etiss-s4e-mac.core_desc
python -m m2isar.backends.etiss.writer ../riscv-coredsl-extensions/gen_model/etiss-s4e-mac.m2isarmodel --separate --static-scalars

- name: Upload M2ISAR Model artifacts
uses: actions/upload-artifact@v4
with:
name: m2isar-model-files
path: |
riscv-coredsl-extensions/gen_output

patch-etiss-arch:
runs-on: ubuntu-22.04
needs: [setup-run-M2ISAR]
steps:
- name: Download Patched Etiss
uses: actions/download-artifact@v4
with:
name: m2isar-model-files
github-token: ${{ secrets.REPO_ACCESS_TOKEN }}

# - uses: actions/checkout@v4
# with:
# path: etiss_source
# ref: coverage

- run: |
git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."https://".insteadOf git://
git clone [email protected]:wysiwyng/etiss.git etiss_source --branch coverage
Copy link
Member

@PhilippvK PhilippvK Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should ideally just clone the etiss repository using the actions/checkout action.

(@kebi-be Oops, I just saw you comment)

To get rid of this, @wysiwyng would need to merge the coverage related commits to upstream etiss.

cp -r etiss-s4e-mac/* etiss_source/ArchImpl/
cd etiss_source
cp ArchImpl/RV32IMACFD/RV32IMACFDArchSpecificImp.cpp ArchImpl/RV32IMCXS4EMAC/RV32IMCXS4EMACArchSpecificImp.cpp
sed -i "s/RV32IMACFD/RV32IMCXS4EMAC/g" ArchImpl/RV32IMCXS4EMAC/RV32IMCXS4EMACArchSpecificImp.cpp
git config --global user.email "[email protected]"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe use this to be more generic?



git config --global user.name "${GITHUB_ACTOR}"
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"

git config --global user.name "Bewoayia Kebianyor"
git add --all
git commit -m 'update etiss architectures'

- name: Upload M2ISAR Model artifacts
uses: actions/upload-artifact@v4
with:
name: patched_etiss
path: |
etiss_source

build-etiss:
runs-on: ubuntu-22.04
needs: [patch-etiss-arch]
steps:
- name: Install Build Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libboost-filesystem-dev libboost-program-options-dev \
llvm-11-dev libclang-11-dev clang-11

- name: Download Patched Etiss
uses: actions/download-artifact@v4
with:
name: patched_etiss
github-token: ${{ secrets.REPO_ACCESS_TOKEN }}
path: etiss_source

- name: CMake config
run: |
cmake -B etiss_build -S etiss_source -DCMAKE_INSTALL_PREFIX=/home/runner/work/etiss_prebuilt -DCMAKE_BUILD_TYPE=$BUILD_TYPE

- name: CMake build
run: |
cmake --build etiss_build -j$(nproc)

- name: CMake install
run: |
cmake --build etiss_build --target install

- name: Upload compiled ETISS
uses: actions/upload-artifact@v4
with:
name: etiss_prebuilt
path: /home/runner/work/etiss_prebuilt

- name: Send ETISS RUN-ID to Seal5
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.REPO_ACCESS_TOKEN }}
Copy link
Member

@PhilippvK PhilippvK Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide the secrets we need to add to the etiss repo settings

(@kebi-be Oops, I just saw you comment)

repository: ${{ 'kebi-be/seal5' }}
event-type: etiss-event
client-payload: '{"parent_repo_run-id": "${{ github.event.client_payload.run_id }}", "etiss_run_id": "${{ github.run_id }}"}'