Files
chipyard/.github/workflows/chipyard-gpu-flow.yml
2023-10-23 11:05:25 -07:00

120 lines
3.5 KiB
YAML

name: chipyard-ci-full-flow-gpu
# on:
# push:
# branches:
# - graphics
defaults:
run:
shell: bash -leo pipefail {0}
env:
REMOTE_WORK_DIR: ${{ secrets.BUILDDIR }}/cy-ci-shared/cy-${{ github.sha }}
JAVA_TMP_DIR: /tmp/cy-${{ github.sha }}-full
SSH_AUTH_SOCK: /tmp/ssh_agent_github.sock
MAKEFLAGS: "-j32"
jobs:
cancel-prior-workflows:
name: cancel-prior-workflows
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}
# Set up a set of boolean conditions to control which branches of the CI
# workflow will execute This is based off the conditional job execution
# example here: https://github.com/dorny/paths-filter#examples
change-filters:
name: filter-jobs-on-changes
runs-on: ubuntu-latest
# Queried by downstream jobs to determine if they should run.
outputs:
needs-rtl: ${{ steps.filter.outputs.all_count != steps.filter.outputs.skip-rtl_count }}
steps:
- uses: actions/checkout@v3
- name: Git workaround
uses: ./.github/actions/git-workaround
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
all:
- '**'
# If any of the files changed match, do a doc build
docs: &docs-filter
- 'docs/**'
- '.readthedocs.yml'
# If all files match to this filter, skip the main ci pipeline
skip-rtl:
- *docs-filter
- '**/*.md'
- '**/.gitignore'
- '.github/ISSUE_TEMPLATE/**'
setup-repo:
name: setup-repo
needs: [change-filters, cancel-prior-workflows]
if: needs.change-filters.outputs.needs-rtl == 'true'
runs-on: self-hosted
steps:
- name: Delete old checkout
run: |
ls -alh .
rm -rf ${{ github.workspace }}/* || true
rm -rf ${{ github.workspace }}/.* || true
ls -alh .
# note: the agent spun up here will be made available throughout the
# workflow via env.SSH_AUTH_SOCK.
- name: Run ssh-agent
run: |
eval `ssh-agent -a $SSH_AUTH_SOCK -s`
echo "${{ secrets.PRIVATE_SSH_KEY }}" | ssh-add -
- uses: actions/checkout@v3
- name: Setup repo copy
run: |
git clone $GITHUB_WORKSPACE ${{ env.REMOTE_WORK_DIR }}
- name: Setup repo
run: |
cd ${{ env.REMOTE_WORK_DIR }}
mkdir ${{ env.JAVA_TMP_DIR }}
./build-setup.sh -f -v
run-coalescer:
name: run-coalescer
needs: [setup-repo]
runs-on: self-hosted
steps:
- name: Build RTL
run: |
cd ${{ env.REMOTE_WORK_DIR }}
eval "$(conda shell.bash hook)"
source env.sh
cd sims/verilator
make verilog CONFIG=MemtraceCoreConfig
- name: Run RTL sim
run: |
cd ${{ env.REMOTE_WORK_DIR }}
eval "$(conda shell.bash hook)"
source env.sh
cd sims/verilator
make run-binary run_binary CONFIG=MemtraceCoreConfig BINARY=none EXTRA_SIM_FLAGS="+memtracefile=$LOCAL_CHIPYARD_DIR/generators/rocket-gpu/tracefiles/vecadd.core1.thread4.trace"
cleanup:
name: cleanup
needs: [run-coalescer]
runs-on: self-hosted
if: ${{ always() }}
steps:
- name: Delete repo copy and conda env
run: |
rm -rf ${{ env.REMOTE_WORK_DIR }}
rm -rf ${{ env.JAVA_TMP_DIR }}