Skip to content

Commit 80cacdc

Browse files
committed
Use SBT-driven source discovery instead of symlinks
1 parent 8f8600d commit 80cacdc

File tree

9 files changed

+37
-28
lines changed

9 files changed

+37
-28
lines changed

build.sbt

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -154,37 +154,49 @@ lazy val testchipip = (project in file("generators/testchipip"))
154154
.settings(commonSettings)
155155

156156
lazy val chipyard = {
157-
var chipyard = (project in file("generators/chipyard"))
158-
.dependsOn(testchipip, rocketchip, boom, rocketchip_blocks, rocketchip_inclusive_cache,
157+
// Base chipyard project with always-on dependencies
158+
// Use explicit Project(...) so the project id remains 'chipyard'
159+
var cy = Project(id = "chipyard", base = file("generators/chipyard"))
160+
.dependsOn(
161+
testchipip, rocketchip, boom, rocketchip_blocks, rocketchip_inclusive_cache,
159162
dsptools, rocket_dsp_utils,
160163
radiance, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
161164
constellation, barf, shuttle, rerocc,
162-
saturn, firrtl2_bridge, vexiiriscv, tacit)
165+
firrtl2_bridge, vexiiriscv, tacit
166+
)
163167
.settings(libraryDependencies ++= rocketLibDeps.value)
164168
.settings(
165-
libraryDependencies ++= Seq(
166-
"org.reflections" % "reflections" % "0.10.2"
169+
libraryDependencies ++= Seq(
170+
"org.reflections" % "reflections" % "0.10.2"
171+
)
167172
)
173+
.settings(commonSettings)
174+
.settings(Compile / unmanagedSourceDirectories += file("tools/stage/src/main/scala"))
175+
176+
// Optional modules discovered via initialized submodules (no env or manifest)
177+
val optionalModules: Seq[(String, ProjectReference)] = Seq(
178+
"ara" -> ara,
179+
"saturn" -> saturn,
180+
"caliptra-aes-acc" -> caliptra_aes,
181+
"compress-acc" -> compressacc,
182+
"mempress" -> mempress
168183
)
169-
.settings(commonSettings)
170-
.settings(Compile / unmanagedSourceDirectories += file("tools/stage/src/main/scala"))
171-
172-
val includeAra = file("generators/ara/.git").exists()
173-
if (includeAra) chipyard = chipyard.dependsOn(ara)
174184

175-
val includeCaliptraAes = file("generators/caliptra-aes-acc/.git").exists()
176-
if (includeCaliptraAes) chipyard = chipyard.dependsOn(caliptra_aes)
185+
val discovered = optionalModules.filter { case (dir, _) => (file(s"generators/$dir/.git")).exists }
177186

178-
val includeCompressAcc = file("generators/compress-acc/.git").exists()
179-
if (includeCompressAcc) chipyard = chipyard.dependsOn(compressacc)
180-
181-
val includeMempress = file("generators/mempress/.git").exists()
182-
if (includeMempress) chipyard = chipyard.dependsOn(mempress)
187+
// Wire in project dependencies only for discovered modules
188+
if (discovered.nonEmpty) {
189+
// dependsOn requires ClasspathDep[ProjectReference]; wrap explicitly
190+
cy = cy.dependsOn(discovered.map { case (_, pr) => sbt.ClasspathDependency(pr, None) }: _*)
191+
}
183192

184-
val includeSaturn = file("generators/saturn/.git").exists()
185-
if (includeSaturn) chipyard = chipyard.dependsOn(saturn)
193+
// Also add their Chipyard-facing sources without symlinks
194+
cy.settings(
195+
Compile / unmanagedSourceDirectories ++=
196+
discovered.map { case (dir, _) => baseDirectory.value / s"generators/$dir/chipyard" }.filter(_.exists)
197+
)
186198

187-
chipyard
199+
cy
188200
}
189201

190202
lazy val compressacc = (project in file("generators/compress-acc"))

common.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,14 @@ HELP_COMMANDS += \
6767
#########################################################################################
6868
include $(base_dir)/generators/tracegen/tracegen.mk
6969
include $(base_dir)/tools/torture.mk
70+
# Optional generator make fragments should not fail build if absent
7071
-include $(base_dir)/generators/cva6/cva6.mk
7172
-include $(base_dir)/generators/ibex/ibex.mk
7273
-include $(base_dir)/generators/ara/ara.mk
7374
-include $(base_dir)/generators/nvdla/nvdla.mk
7475
-include $(base_dir)/generators/radiance/radiance.mk
76+
# Wildcard include for standardized per-generator make fragments
77+
-include $(wildcard $(base_dir)/generators/*/chipyard.mk)
7578

7679

7780
#########################################################################################

docs/Generators/Ara.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Ara
33

44
`Ara <https://github.com/pulp-platform/ara>`__ is a RISC-V vector unit developed by the PULP project.
55
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``.
6+
Example Ara configurations are provided by the Ara repository and compiled directly from ``generators/ara/chipyard/`` when the Ara submodule is initialized.
77

88
.. Warning:: Ara only supports a partial subset of the full V-extension. Notably, we do not support virtual memory or precise traps with Ara.
99

docs/Generators/Saturn.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +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``.
8+
A partial listing of supported Saturn configurations is maintained in the Saturn repository and compiled directly from ``generators/saturn/chipyard/`` when the Saturn submodule is initialized.
99

1010
For now, the recommended Saturn configuration is ``GENV256D128ShuttleConfig``, which builds a dual-issue core with 256-bit VLEN, 128-bit wide SIMD datapath, and separate floating-point and integer vector issue units.
1111

@@ -20,4 +20,3 @@ For now, the recommended Saturn configuration is ``GENV256D128ShuttleConfig``, w
2020
* ``Zve64d`` support for vector FP32 and FP64
2121
* Configurable vector length, from ``Zvl64b`` up (tested to ``Zvl4096b``)
2222
* Configurable datapath width, from 64b up (tested to 512b)
23-

generators/chipyard/src/main/scala/config/AraConfigs.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

generators/chipyard/src/main/scala/config/CaliptraAESConfigs.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

generators/chipyard/src/main/scala/config/CompressAccConfigs.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

generators/chipyard/src/main/scala/config/MempressConfigs.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

generators/chipyard/src/main/scala/config/SaturnConfigs.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)