forked from OpenXiangShan/CoupledL2
-
Notifications
You must be signed in to change notification settings - Fork 1
131 lines (113 loc) · 5.05 KB
/
main.yml
File metadata and controls
131 lines (113 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 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 HuanCun
run: cd HuanCun && 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
# This workflow contains a single job called "build"
tl-test_L2:
# The type of runner that the job will run on
runs-on: ubuntu-22.04
# Environments
env:
RUN_ARCHIVE: coupledL2-tl-test-new-run-${{ github.sha }}
RUN_ARCHIVE_TL: coupledL2-tl-test-new-run-${{ github.sha }}-tilelink.tar.gz
RUN_ARCHIVE_CHI: coupledL2-tl-test-new-run-${{ github.sha }}-chi.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: Setup Verilator
run: |
wget https://raw.githubusercontent.com/OpenXiangShan/xs-env/master/install-verilator.sh
chmod u+x install-verilator.sh
sed -i 's/CC=clang/CC=clang-17/g' install-verilator.sh
sed -i 's/CXX=clang++/CXX=clang++-17/g' install-verilator.sh
sed -i 's/LINK=clang++/LINK=clang++-17/g' install-verilator.sh
sed -i 's/make -j8/make -j4/g' install-verilator.sh
sudo bash install-verilator.sh
- name: Setup Scala
uses: olafurpg/setup-scala@v10
- name: Setup Mill
uses: jodersky/setup-mill@v0.2.3
with:
mill-version: 0.11.1
# - name: Check scalafmt
# run: make checkformat
- name: Compile
run: make compile
# 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
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
cd ./dut
git clone https://github.com/OpenXiangShan/OpenLLC
cd OpenLLC && make init
rm -rf ./coupledL2 && ln -s ../../.. ./coupledL2
rm -rf ./utility && ln -s ../../../utility ./utility
cd ../..
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
# Clean artifacts folder (./tl-test-new/run) after successful run
- name: Unit Test for TileLink version
run: |
rm -rf tl-test-new
git clone https://github.com/OpenXiangShan/tl-test-new
cd ./tl-test-new
sed -i 's/ari.target.*/ari.target = 240/g' ./configs/user.tltest.ini
rm -rf ./dut/CoupledL2 && ln -s ../.. ./dut/CoupledL2
make coupledL2-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 TileLink version
if: always()
run: |
test -d ./tl-test-new/run || mkdir -p ./tl-test-new/run
tar -zcf ${{ env.RUN_ARCHIVE_TL }} ./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 }}