-
Notifications
You must be signed in to change notification settings - Fork 1
116 lines (107 loc) · 3.76 KB
/
test.yml
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
name: Continuous Integration
on:
pull_request:
push:
jobs:
test:
name: sbt test on ubuntu
runs-on: ubuntu-20.04
strategy:
matrix:
scala: [2.12.15, 2.13.6]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Verilator
run: |
sudo apt-get install -y verilator
verilator --version
- name: Test Coverage
run: |
cd coverage
sbt ++${{ matrix.scala }} test
- name: Test FireSim Coverage
run: |
cd firesim-coverage
sbt ++${{ matrix.scala }} test
- name: Test Fuzzing
run: |
cd fuzzing
sbt ++${{ matrix.scala }} test
benchmarks:
name: benchmarks
runs-on: ubuntu-20.04
strategy:
matrix:
# 4.028: Ubuntu 20.04, Fedora 32
# 4.032: Fedora 33
# 4.034: Chipyard
# 4.038: Ubuntu 20.10
# 4.106: Verilator version that we used in the original benchmarking
# 4.108: Fedora 34
# 4.200: currently the latest version on brew (MacOS)
# 4.202: added "forcePerInstance" to support our coverage flow
version: ["4.034"] #, "4.202"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Verilator Build Dependencies
run: sudo apt-get install -y git make autoconf g++ flex bison libfl2 libfl-dev
- name: Install hyperfine # https://github.com/sharkdp/hyperfine#on-ubuntu
run: |
wget https://github.com/sharkdp/hyperfine/releases/download/v1.15.0/hyperfine_1.15.0_amd64.deb
sudo dpkg -i hyperfine_1.15.0_amd64.deb
- name: Cache Verilator ${{ matrix.version }}
uses: actions/cache@v3
id: cache-verilator
with:
path: verilator-${{ matrix.version }}
key: ${{ runner.os }}-verilator-${{ matrix.version }}
- name: Compile Verilator ${{ matrix.version }}
if: steps.cache-verilator.outputs.cache-hit != 'true'
run: |
wget https://github.com/verilator/verilator/archive/refs/tags/v${{ matrix.version }}.zip
unzip v${{ matrix.version }}.zip
cd verilator-${{ matrix.version }}
autoconf
./configure
make
- name: Install Verilator ${{ matrix.version }}
run: |
cd verilator-${{ matrix.version }}
sudo make install
verilator --version
- name: Kick the Tires on figure8
run: cd benchmarks && make HYPERFINE_OPTS="--warmup=0 --runs=1" figure8
- name: Kick the Tires on table2
run: cd benchmarks && make HYPERFINE_OPTS="--warmup=0 --runs=1" table2
# - name: Compile Scala
# run: cd coverage && sbt assembly
# - name: Neuromorphic Processor - compile and run once
# run: cd benchmarks && make NeuromorphicProcessor_run_once
# - name: TL-RAM - compile and run once
# run: cd benchmarks && make TLRAM_run_once
# - name: serv - compile and run once
# run: cd benchmarks && make serv_run_once
# - name: RISCV-Mini - compile and run once
# run: cd benchmarks && make riscv_mini_run_once
fuzzing:
name: fuzzing
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: install matplotlib and scipy
run: sudo apt-get install -y python3-matplotlib python3-scipy
- name: Kick the Tires on Fuzzing
run: cd fuzzing && make figure11 TIME_MIN=1 REPS=1
# Sentinel job to simplify how we specify which checks need to pass in branch
# protection and in Mergify
#
# When adding new jobs, please add them to `needs` below
all_tests_passed:
name: "all tests passed"
needs: [test, benchmarks, fuzzing]
runs-on: ubuntu-latest
steps:
- run: echo Success!