This is a template repository for those who want to develop RTL based on rocket-chip and even chipyard, being able to edit all sources from chisel environments without publish them to local ivy.
You can add your own submodule in build.sc
.
For more information please visit Mill documentation
after adding your own code, you can add your library to playground dependency, and re-index Intellij to add your own library.
To use this repo as your Chisel development environment, simply follow the steps.
git clone git@github.com:chipsalliance/playground.git
Install dependencies and setup environments:
pacman -Syu --noconfirm make parallel wget cmake ninja mill dtc verilator git llvm clang lld protobuf antlr4 numactl
nix-shell
[Optional] Remove unused dependences to accelerate bsp compile in build.sc
playground.moduleDeps
;
cd playground # entry your project directory
vim build.sc
// build.sc
// Original
object playground extends CommonModule {
override def moduleDeps = super.moduleDeps ++ Seq(myrocketchip, inclusivecache, blocks, rocketdsputils, shells, firesim, boom, chipyard, chipyard.fpga, chipyard.utilities, mychiseltest)
...
}
// Remove unused dependences, e.g.,
object playground extends CommonModule {
override def moduleDeps = super.moduleDeps ++ Seq(mychiseltest)
...
}
cd playground # entry your project directory
make init # init the submodules
make patch # using the correct patches for some repos
make bsp
idea . # open IDEA at current directory
For mill use
mill mill.bsp.BSP/install
then open by your favorite IDE, which supports BSP
Philosophy of this repository is fast break and fast fix.
This repository always tracks remote developing branches, it may need some patches to work, make patch
will append below in sequence:
rocket-chip-inclusive-cache https://github.com/chipsalliance/rocket-chip-inclusive-cache/pull/22.diff
So generally, this repo is the fast and cleanest way to start your Chisel project codebase.
You can use this template and start your own job by appending commits on it. GitHub Action will automatically bump all dependencies, you can merge or rebase chipsalliance/master
to your branch.
cd playground # entry your project directory
git rebase origin/master
Currently, only support Arch Linux, if you are using other distros please install nix.
This package is the standalone tests to check is bumping correct or not, served as the unittest, this also can be a great example to illustrate usages.
NOTICE: SanityTests also contains additional system dependencies:
This package is a replacement to RocketChip Makefile based generator, it directly generate a simple RocketChip emulator with verilator and linked to spike.
mill sanitytests.rocketchip
This package uses rocketchip and fpga-shells to elaborate FPGA bitstream generator and debug script with board VCU118
mill sanitytests.vcu118
If you wanna alter this to your own board, you can choose implmenting your own Shell to replace VCU118Shell
in this test.