Skip to content

Commit

Permalink
Merge pull request #1424 from ucb-bar/new-cfg-finder
Browse files Browse the repository at this point in the history
New Scala-based Config Finder
  • Loading branch information
abejgonzalez authored Apr 5, 2023
2 parents 4c085eb + ee9ee10 commit 8a7c98c
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 86 deletions.
7 changes: 6 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,12 @@ lazy val chipyard = (project in file("generators/chipyard"))
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
constellation, mempress)
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(commonSettings)
.settings(
libraryDependencies ++= Seq(
"org.reflections" % "reflections" % "0.10.2"
)
)
.settings(commonSettings)

lazy val mempress = (project in file("generators/mempress"))
.dependsOn(rocketchip, midasTargetUtils)
Expand Down
10 changes: 3 additions & 7 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ HELP_COMMANDS += \
" run-tests = run all assembly and benchmark tests" \
" launch-sbt = start sbt terminal" \
" {shutdown,start}-sbt-server = shutdown or start sbt server if using ENABLE_SBT_THIN_CLIENT" \
" find-config-fragments = list all config. fragments and their locations (recursive up to CONFIG_FRAG_LEVELS=$(CONFIG_FRAG_LEVELS))"
" find-config-fragments = list all config. fragments"

#########################################################################################
# include additional subproject make fragments
Expand Down Expand Up @@ -406,13 +406,9 @@ define \n

endef

CONFIG_FRAG_LEVELS ?= 3
.PHONY: find-config-fragments
find-config-fragments: private IN_F := $(shell mktemp -d -t cy-XXXXXXXX)/scala_files.f
find-config-fragments: $(SCALA_SOURCES)
@$(foreach file,$(SCALA_SOURCES),echo $(file) >> $(IN_F)${\n})
$(base_dir)/scripts/config-finder.py -l $(CONFIG_FRAG_LEVELS) $(IN_F)
@rm -rf $(dir $(IN_F))
find-config-fragments:
$(call run_scala_main,chipyard,chipyard.ConfigFinder,)

.PHONY: help
help:
Expand Down
3 changes: 1 addition & 2 deletions docs/Customization/Keys-Traits-Configs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,4 @@ We can use this config fragment when composing our configs.
Chipyard Config Fragments
-------------------------

For discoverability, users can run ``make find-config-fragments`` to see a list of config. fragments
(config. fragments that match "class NAME extends CONFIG\n" on a single line and a subset of their children) and their file path in a fully initialized Chipyard repository.
For discoverability, users can run ``make find-config-fragments`` to see a list of config. fragments.
19 changes: 19 additions & 0 deletions generators/chipyard/src/main/scala/ConfigFinder.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package chipyard

import org.reflections.Reflections
import org.reflections.scanners.Scanners.SubTypes
import scala.jdk.CollectionConverters._
import scala.collection.{SortedSet}

import freechips.rocketchip.config.{Config}

object ConfigFinder {
def main(args: Array[String]) = {
val reflections = new Reflections()
val classes = reflections.get(SubTypes.of(classOf[Config]).asClass()).asScala
val sortedClasses = SortedSet[String]() ++ classes.map(_.getName)
for (cls <- sortedClasses) {
println(cls)
}
}
}
76 changes: 0 additions & 76 deletions scripts/config-finder.py

This file was deleted.

0 comments on commit 8a7c98c

Please sign in to comment.