A mini, modular version of Chipyard.
Individual packages can be easily compiled, tested, and used in other projects without setting up a complex development environment.
To include a package in a new project, add the dependency. If you are using Mill 1.1.2, for example,
add the following to your build.mill to use the diplomacy package:
def mvnDeps = Seq(
mvn"io.github.ucb-substrate::diplomacy:0.1.1",
)The equivalent for sbt:
libraryDependencies += "io.github.ucb-substrate" %% "diplomacy" % "0.1.1"Alternatively, you can build against unreleased changes by publishing to your local Ivy repository:
git clone https://github.com/ucb-substrate/chippy.git
cd chippy
git submodule update --init --recursive
./mill __.publishLocal
Usage examples can be found in the examples/ folder.
Eleven artifacts are published, listed here roughly bottom-up. API documentation is rendered from the published Scaladoc jars by javadoc.io; the first request for a given version takes a moment while it unpacks the jar. The Maven Central namespace page is the canonical listing.
| Package | Description | API docs |
|---|---|---|
cde |
A Scala library for Context-Dependent Environments. | docs |
diplomacy |
A parameter negotiation framework for Chisel. | docs |
hardfloat |
Hardware floating-point units written in Chisel. | docs |
rocketchip-macros |
Scala macros used by the Rocket Chip generator. | docs |
rocketchip |
The Rocket Chip generator. | docs |
rocketchip-blocks |
RTL blocks compatible with the Rocket Chip generator. | docs |
rocketchip-inclusive-cache |
An RTL generator for a last-level shared inclusive TileLink cache controller. | docs |
testchipip |
Useful IP components for chips. | docs |
constellation |
A Chisel NoC RTL generator framework designed to provide the core interconnect fabric for heterogeneous many-core, many-accelerator SoCs. | docs |
chippy |
An SoC design framework for integrating cores, accelerators, and other peripherals. | docs |
chipyard |
Prebuilt config fragments and full chip configs for Chippy. | docs |
Versions are managed by release-please. Every
package shares one version, held in version.txt.