perf(bop): train on l1 prefetch request #52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 }} |