-
Notifications
You must be signed in to change notification settings - Fork 7
192 lines (168 loc) · 6.96 KB
/
Copy pathmain.yml
File metadata and controls
192 lines (168 loc) · 6.96 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# 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 }}