Dandelion is a library of hardware components to implement parallel dataflow accelerators.
This will walk you through installing Chisel and its dependencies:
-
sbt: which is the preferred Scala build system and what Chisel uses.
-
Verilator:, which compiles Verilog down to C++ for simulation. The included unit testing infrastructure uses this.
Install Java
sudo apt-get install default-jdk
Install sbt, which isn't available by default in the system package manager:
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
sudo apt-get update
sudo apt-get install sbt
Install Verilator. We currently recommend Verilator version 3.922. Follow these instructions to compile it from source.
Install prerequisites (if not installed already):
sudo apt-get install git make autoconf g++ flex bison
Clone the Verilator repository:
git clone http://git.veripool.org/git/verilator
In the Verilator repository directory, check out a known good version:
git pull
git checkout verilator_3_922
In the Verilator repository directory, build and install:
unset VERILATOR_ROOT # For bash, unsetenv for csh
autoconf # Create ./configure script
./configure
make
sudo make install
Dandelion depends on Berkeley Hardware Floating-Point Units for floating nodes implementation. We have forked Berkely's implementation and applied minor changes to make the library compatible with Dandelion's nodes.
dandelion-hardflot
needs to be published locally. For publishing the code locally follow the following commands:
$ sbt -DchiselVersion="latest.release" "publishLocal"
For compiling dandelion is the first step to build the library
sbt "compile"
Dandelion has a set of test cases for testing different dataflow designs. All the dataflow tests are located at:
src/main/scala/generator
Each of these test cases has a specific test bench and they have been located at following location:
src/test/main/scala/generator
User can run each of these test cases to simulate the design. For running a test case the command which is needed to enter is:
sbt "testOnly <PackageName>.<TesterName>"
- PackageName: Is the name of the scala package which the dataflow is been developed within.
- TesterName: Is the specification of test bench in chisel.
To read more about the overall design of test bench please read Wiki section Test Bench.
For each test example, there is a main function which generates verilog file of the design.
sbt runMain <PackageName>.<MainObjectName>
Running following command generates a verilog file in the RTL
folder.
In order to map the generated verilog on a SoC device please read SoC FPGA Interface from our wiki page.
- Amirali Sharifian (Simon Fraser University)
- Steven Margem (Simon Fraser University)
- Navid Rahimi (Simon Fraser University)
- Apala Guha (Simon Fraser University)