Skip to content

Commit dccedae

Browse files
authored
Merge pull request #1973 from ucb-bar/ara-integrate
Integrate Ara vector unit
2 parents 7eb2cc1 + 7a833f2 commit dccedae

File tree

13 files changed

+78
-4
lines changed

13 files changed

+78
-4
lines changed

.github/scripts/check-commit.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ search () {
4646
}
4747

4848

49-
submodules=("cva6" "boom" "ibex" "gemmini" "icenet" "nvdla" "rocket-chip" "rocket-chip-blocks" "rocket-chip-inclusive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils" "diplomacy" "rerocc" "compress-acc" "saturn")
49+
submodules=("cva6" "boom" "ibex" "gemmini" "icenet" "nvdla" "rocket-chip" "rocket-chip-blocks" "rocket-chip-inclusive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils" "diplomacy" "rerocc" "compress-acc" "saturn" "ara")
5050
dir="generators"
5151
branches=("master" "main" "dev")
5252
search

.github/scripts/defaults.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache
2727
declare -A grouping
2828
grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boomv3 chipyard-boomv4 chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle"
2929
grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboomv3 chipyard-dmiboomv4 chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered chipyard-symmetric chipyard-llcchiplet"
30-
grouping["group-accels"]="chipyard-compressacc chipyard-mempress chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb chipyard-rerocc chipyard-rocketvector chipyard-shuttlevector"
30+
grouping["group-accels"]="chipyard-compressacc chipyard-mempress chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb chipyard-rerocc chipyard-rocketvector chipyard-shuttlevector chipyard-shuttleara"
3131
grouping["group-constellation"]="chipyard-constellation"
3232
grouping["group-tracegen"]="tracegen tracegen-boomv3 tracegen-boomv4"
3333
grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar chipyard-clusters"
@@ -75,6 +75,7 @@ mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig"
7575
mapping["chipyard-rerocc"]=" CONFIG=ReRoCCTestConfig"
7676
mapping["chipyard-rocketvector"]=" CONFIG=MINV128D64RocketConfig"
7777
mapping["chipyard-shuttlevector"]=" CONFIG=GENV256D128ShuttleConfig"
78+
mapping["chipyard-shuttleara"]=" CONFIG=V4096Ara2LaneShuttleConfig USE_ARA=1 verilog"
7879

7980
mapping["constellation"]=" SUB_PROJECT=constellation"
8081
mapping["firesim"]="TARGET_CONFIG=WithNIC_DDR3FRFCFSLLC4MB_FireSimRocketConfig"

.github/scripts/run-tests.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,14 @@ case $1 in
144144
run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-daxpy.riscv LOADMEM=1
145145
run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-memcpy.riscv LOADMEM=1
146146
;;
147+
chipyard-shuttleara)
148+
# Ara does not work with verilator
149+
# run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-sgemm.riscv LOADMEM=1
150+
# Ara cannot run strcmp
151+
# run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-strcmp.riscv LOADMEM=1
152+
# run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-daxpy.riscv LOADMEM=1
153+
# run_binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/vec-memcpy.riscv LOADMEM=1
154+
;;
147155
tracegen)
148156
run_tracegen
149157
;;

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,6 @@
154154
[submodule "software/firesim-paper-workloads"]
155155
path = software/firesim-paper-workloads
156156
url = https://github.com/firesim/firesim-paper-workloads.git
157+
[submodule "generators/ara"]
158+
path = generators/ara
159+
url = https://github.com/ucb-bar/ara-wrapper.git

build.sbt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ lazy val chipyard = (project in file("generators/chipyard"))
176176
dsptools, rocket_dsp_utils,
177177
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
178178
constellation, mempress, barf, shuttle, caliptra_aes, rerocc,
179-
compressacc, saturn)
179+
compressacc, saturn, ara)
180180
.settings(libraryDependencies ++= rocketLibDeps.value)
181181
.settings(
182182
libraryDependencies ++= Seq(
@@ -241,6 +241,11 @@ lazy val cva6 = (project in file("generators/cva6"))
241241
.settings(libraryDependencies ++= rocketLibDeps.value)
242242
.settings(commonSettings)
243243

244+
lazy val ara = (project in file("generators/ara"))
245+
.dependsOn(rocketchip, shuttle)
246+
.settings(libraryDependencies ++= rocketLibDeps.value)
247+
.settings(commonSettings)
248+
244249
lazy val ibex = (project in file("generators/ibex"))
245250
.dependsOn(rocketchip)
246251
.settings(libraryDependencies ++= rocketLibDeps.value)

common.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ HELP_COMMANDS += \
6464
#########################################################################################
6565
include $(base_dir)/generators/cva6/cva6.mk
6666
include $(base_dir)/generators/ibex/ibex.mk
67+
include $(base_dir)/generators/ara/ara.mk
6768
include $(base_dir)/generators/tracegen/tracegen.mk
6869
include $(base_dir)/generators/nvdla/nvdla.mk
6970
include $(base_dir)/tools/torture.mk

docs/Generators/Ara.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Ara
2+
===
3+
4+
`Ara <https://github.com/pulp-platform/ara>`__ is a RISC-V vector unit developed by the PULP project.
5+
The Ara vector unit supports integration with either the Rocket or Shuttle in-order cores, following a similar methodology as used in the original Ara+CVA6 system.
6+
Example Ara configurations are listed in ``generators/chipyard/src/main/scala/config/AraConfigs.scala``.
7+
8+
.. Warning:: Ara only supports a partial subset of the full V-extension. Notably, we do not support virtual memory or precise traps with Ara.
9+
10+
To compile simulators using Ara, you must pass an additional ``USE_ARA`` flag to the makefile.
11+
12+
.. Note:: Ara only supports VCS for simulation
13+
14+
.. code-block:: shell
15+
16+
make CONFIG=V4096Ara2LaneRocketConfig USE_ARA=1

docs/Generators/Saturn.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Saturn is a parameterized RISC-V Vector Unit generator currently supporting inte
55
Saturn implements a compact short-vector-length vector microarchitecture suitable for deployment in a DSP-optimized core or area-efficient general-purpose core.
66

77
More documentation on Saturn will be released in the future.
8+
A partial listing of supported Saturn configurations is in ``generators/chipyard/src/main/scala/config/SaturnConfigs.scala``.
89

910
* Full support for `V` application-profile RVV 1.0
1011
* Precise traps with virtual memory

docs/Generators/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,4 @@ so changes to the generators themselves will automatically be used when building
3636
Mempress
3737
CompressAcc
3838
Prefetchers
39+
Ara

generators/ara

Submodule ara added at ae77c79

0 commit comments

Comments
 (0)