Skip to content

fix(CoupledL2): arbiter ready not masked by PCrdGrant hit #51

fix(CoupledL2): arbiter ready not masked by PCrdGrant hit

fix(CoupledL2): arbiter ready not masked by PCrdGrant hit #51

Workflow file for this run

# This file describes the GitHub Actions workflow for continuous integration of CoupledL2
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ master, chi-coupledl2 ]
pull_request:
branches: [ master, chi-coupledl2 ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
check-submodules:
runs-on: ubuntu-22.04
continue-on-error: false
timeout-minutes: 5
name: Check Submodules
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: '0'
- name: check rocket-chip
run: cd rocket-chip && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master
- name: check utility
run: cd utility && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master
setup-verilator:
strategy:
matrix:
os: [ubuntu-22.04]
compiler:
- { cc: clang-17, cxx: clang++-17 }
runs-on: ${{ matrix.os }}
name: Verilator | ${{ matrix.os }} | ${{ matrix.compiler.cc }}
env:
CI_BUILD_STAGE_NAME: build
CI_RUNS_ON: ${{ matrix.os }}
CC: ${{ matrix.compiler.cc }}
CXX: ${{ matrix.compiler.cxx }}
VERILATOR_ARCHIVE: verilator-${{ matrix.os }}-${{ matrix.compiler.cc }}.tar.gz
steps:
- name: Cache Verilator
id: cache
uses: actions/cache@v4
env:
cache-name: verilator-cache-${{ matrix.os }}-${{ matrix.compiler.cc }}
with:
path: ${{ github.workspace }}/${{ env.VERILATOR_ARCHIVE }}
key: verilator-cache-${{ matrix.os }}-${{ matrix.compiler.cc }}
- name: Setup Clang 17
if: steps.cache.outputs.cache-hit != 'true' && matrix.compiler.cc == 'clang-17'
working-directory: ${{ github.workspace }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 17
- name: Build Verilator
if: steps.cache.outputs.cache-hit != 'true'
working-directory: ${{ github.workspace }}
run: |
sudo apt-get install -y git help2man perl python3 make autoconf g++ flex bison clang
sudo apt-get install -y libfl2 # Ubuntu only (ignore if gives error)
sudo apt-get install -y libfl-dev # Ubuntu only (ignore if gives error)
sudo apt-get install -y zlib1g zlib1g-dev # Ubuntu only (ignore if gives error)
git clone https://github.com/verilator/verilator
unset VERILATOR_ROOT
cd verilator
git checkout v5.020
autoconf
./configure CC=${{ matrix.compiler.cc }} CXX=${{ matrix.compiler.cxx }} LINK=${{ matrix.compiler.cxx }}
make -j4
- name: Tar-up Verilator
if: steps.cache.outputs.cache-hit != 'true'
working-directory: ${{ github.workspace }}
run: tar -zcf ${{ env.VERILATOR_ARCHIVE }} verilator
# This workflow contains a single job called "build"
chi-test_L2:
# The type of runner that the job will run on
runs-on: ubuntu-22.04
# Environments
env:
RUN_ARCHIVE: xscache-chi-test-run-${{ github.sha }}
RUN_ARCHIVE_CHI: xscache-chi-test-run-${{ github.sha }}.tar.gz
VERILATOR_ARCHIVE: verilator-ubuntu-22.04-clang-17.tar.gz
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup Clang 17
run: |
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 17
- name: Fetch cached Verilator
uses: actions/cache/restore@v4
env:
cache-name: verilator-cache-ubuntu-22.04-clang-17
with:
path: ${{ github.workspace }}/${{ env.VERILATOR_ARCHIVE }}
key: verilator-cache-ubuntu-22.04-clang-17
fail-on-cache-miss: true
- name: Install Verilator
working-directory: ${{ github.workspace }}
run: |
tar -zxf ${{ env.VERILATOR_ARCHIVE }}
cd verilator
sudo make install
verilator --version
- name: Setup Scala
uses: olafurpg/setup-scala@v11
with:
java-version: openjdk@1.17
- name: Setup Mill
uses: jodersky/setup-mill@v0.2.3
with:
mill-version: 0.12.3
# - name: Check scalafmt
# run: make checkformat
- name: Compile
run: make compile
- name: Get tl-test-new version
run: |
test -f ".tl-test-new-version" || (echo "Error: .tl-test-new-version file not found" && exit 1)
echo "TL_TEST_NEW_COMMIT=$(cat .tl-test-new-version)" >> $GITHUB_ENV
- name: Check tl-test-new version
run: |
if [ -z "${{ env.TL_TEST_NEW_COMMIT }}" ]; then
echo "Error: TL_TEST_NEW_COMMIT environment variable is not set"
exit 1
fi
rm -rf tl-test-new
git clone https://github.com/OpenXiangShan/tl-test-new
cd ./tl-test-new
if git rev-parse --verify ${{ env.TL_TEST_NEW_COMMIT }} >/dev/null 2>&1; then
echo "Info: tl-test-new version TL_TEST_NEW_COMMIT is valid: ${{ env.TL_TEST_NEW_COMMIT }}"
else
echo "Error: tl-test-new version TL_TEST_NEW_COMMIT is not a valid commit hash in the current repository"
exit 1
fi
# Clean artifacts folder (./tl-test-new/run) after successful run
- name: Unit test for CHI version
run: |
rm -rf tl-test-new
git clone https://github.com/OpenXiangShan/tl-test-new
cd ./tl-test-new
git checkout ${{ env.TL_TEST_NEW_COMMIT }}
sed -i 's/ari.target.*/ari.target = 240/g' ./configs/user.tltest.ini
sed -i 's/cmo.enable .*=.*/cmo.enable = 1/g' ./configs/user.tltest.ini
sed -i 's/cmo.enable.cbo.clean.*=.*/cmo.enable.cbo.clean = 1/g' ./configs/user.tltest.ini
sed -i 's/cmo.enable.cbo.flush.*=.*/cmo.enable.cbo.flush = 1/g' ./configs/user.tltest.ini
sed -i 's/cmo.enable.cbo.inval.*=.*/cmo.enable.cbo.inval = 1/g' ./configs/user.tltest.ini
rm -rf ./dut/XSCache && ln -s ../.. ./dut/XSCache
make openLLC-test-l2l3l2 run THREADS_BUILD=4 CXX_COMPILER=clang++-17
rm -rf run/*.vcd run/*.fst run/*.log run/*.db
- name: Tar up artifacts of Unit Test for CHI version
if: always()
run: |
test -d ./tl-test-new/run || mkdir -p ./tl-test-new/run
tar -zcf ${{ env.RUN_ARCHIVE_CHI }} ./tl-test-new/run
- name: Upload artifacts of Unit Test
if: always()
uses: actions/upload-artifact@v4
with:
path: ${{ github.workspace }}/${{ env.RUN_ARCHIVE }}*
name: ${{ env.RUN_ARCHIVE }}