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 }}