summaryrefslogtreecommitdiff
path: root/docs/src/developers/sbt-subproject.md
diff options
context:
space:
mode:
authorMegan Wachs2021-03-18 16:47:58 -0700
committerGitHub2021-03-18 16:47:58 -0700
commitf1ad5b58e8a749d558758288d03ce75bf6b8ff9c (patch)
tree2150d6f41a55f81c9f4cf3b037b715cb75ea617f /docs/src/developers/sbt-subproject.md
parent2a56c6540e914611ac12647e157aec4c5c595758 (diff)
Reorganize website docs (#1806)
Updates to chisel3 documentation for website: * guard code examples with mdoc and fix errors encountered along the way * move some website content here vs splitting the content across two repos * Bring in the interval-types and loading memories content so that it will be visible from the website * remove all references to the wiki (deprecated) * Remove reference to Wiki from the README * fix tabbing and compile of chisel3-vs-chisel2 section * Appendix: faqs now guarded and compile * FAQs: move to resources section
Diffstat (limited to 'docs/src/developers/sbt-subproject.md')
-rw-r--r--docs/src/developers/sbt-subproject.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/src/developers/sbt-subproject.md b/docs/src/developers/sbt-subproject.md
new file mode 100644
index 00000000..44d2916b
--- /dev/null
+++ b/docs/src/developers/sbt-subproject.md
@@ -0,0 +1,36 @@
+---
+layout: docs
+title: "Developers"
+section: "chisel3"
+---
+
+# Chisel as an sbt subproject
+
+In order to use the constructs defined in the Chisel3 library, those definitions must be made available to the Scala
+compiler at the time a project dependent on them is compiled.
+For sbt-based builds there are fundamentally two ways to do this:
+* provide a library dependency on the published Chisel3 jars via sbt's `libraryDependencies` setting,
+* clone the Chisel3 git repository and include the source code as a subproject of a dependent project.
+
+The former of these two approaches is used by the chisel-tutorial project.
+It is the simplest approach and assumes you do not require tight control over Chisel3 source code and are content with the
+published release versions of Chisel3.
+
+The latter approach should be used by Chisel3 projects that require finer control over Chisel3 source code.
+
+It's hard to predict in advance the future requirements of a project, and it would be advantageous to be able to
+switch between the two approaches relatively easily.
+In order to accomplish this, we provide the `sbt-chisel-dep` plugin that allows the developer to concisely specify
+Chisel3 subproject dependencies and switch between subproject and library dependency support based on the presence of
+a directory (or symbolic link) in the root of the dependent project.
+
+The chisel-template project uses this plugin to support switching between either dependency (subproject or library).
+By default, the chisel-template project does not contain a chisel3 subproject directory, and hence, uses a library dependency
+on chisel3 (and related Chisel3 projects).
+However, if you clone the chisel3 GitHub project from the root directory of the chisel-template project, creating a chisel3
+subdirectory, the `sbt-chisel-dep` plugin will take note of the chisel3 project subdirectory,
+and provide an sbt subproject dependency in place of the library dependency.
+
+Checkout the [README for the `sbt-chisel-dep`](https://github.com/ucb-bar/sbt-chisel-dep) project for instructions on its usage.
+
+Example versions of the build.sbt and specification of the sbt-chisel-dep plugin are available from the [skeleton branch of the chisel-template repository](https://github.com/ucb-bar/chisel-template/tree/skeleton).