This project tracks versions of the various dependencies for developing DSP blocks in chisel.
Running ./update.bash
will check out the correct versions of the various git submodules.
Running make libs
will build and publish-local them in a local .ivy2 folder.
Running sbt -Dsbt.ivy.home=path/to/ivy2
in any other scala project will allow you to include the various projects in this repo.
Running make dsptest
will run the dsptools tests.
Running make clean
removes the lib directory and the .ivy2 local directory.
This project will not install verilator for you and will not permanently put firrtl on your path--you should do that yourself. See the firrtl project README for details.
The intended use case is to make this framework a submodule in your scala project. So do something like the following in your DSP block directory.
git submodule add [email protected]:ucb-art/dsp-framework.git
cd dsp-framework
./update.bash
To build the framework and have it included in your project, add the following lines to your Makefile in your DSP block directory.
framework_dir = $(abspath ./dsp-framework)
base_dir = $(abspath .)
ROCKETCHIP_DIR=$(framework_dir)/rocket-chip
TESTCHIPIP_DIR=$(framework_dir)/testchipip
include $(framework_dir)/Makefrag
FIRRTL_JAR ?= $(ROCKETCHIP_DIR)/firrtl/utils/bin/firrtl.jar
FIRRTL ?= java -Xmx2G -Xss8M -cp $(FIRRTL_JAR) firrtl.Driver
This allows you to compile a local copy of the dependencies, and it redefines sbt to point to these versions.
Note, this style is similar to the rocket-chip style of managing dependencies.
At the top level, you can run make libs
to compile the dependencies.
You'll see lib and .ivy2 directories created, housing unmanaged and managed dependencies respectively.
The framework includes the following subrepos.
This gives your project access to rocket-chip's features, such as junctions and the GeneratorApp. It also uses the versions of chisel3 and firrtl that are compatible with this version of rocket-chip, so if you build your project in a rocket-chip context, you will get version matching by default. Note that we currently have a forked version of the ucb-bar rocket-chip, allowing us to independently update chisel3 and firrtl. It also adds Hwacha, our vector accelerator for Rocket. Hwacha's repository is private currently, so you'll need access to it before building the dependencies. If your design will not require Hwacha, do the following while building the libraries to exclude it:
./update.bash no_hwacha
export ROCKETCHIP_ADDONS=
This is the firrtl interpreter.
Want to test your Chisel design? Yeah, thought so. You'll need this.
Included here are useful testing addons to rocket, such as the SCR file and SerialAdapter. We include this so that individual DSP blocks can have access to a local copy of the SCR file.
Custom types, functions, objects, and junctions useful for DSP projects.
Here live more useful DSP utilities, but these have a dependency on rocket-chip and possibly testchipip, hence being separate from dsptools. In particular, code and wrappers for CRAFT's DSP blocks and chains are here.
If your design needs a pattern generator or logic analyzer, you'll want this repo included.