Merge pull request #125 from ucb-bar/chipyard-rename
Rename to chipyard
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
REBAR CI
|
Chipyard CI
|
||||||
========
|
===========
|
||||||
|
|
||||||
Website: https://circleci.com/gh/ucb-bar/project-template
|
Website: https://circleci.com/gh/ucb-bar/project-template
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ Here the key is built from a string where the `checksum` portion converts the fi
|
|||||||
.circleci directory
|
.circleci directory
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
This directory contains all the collateral for the REBAR CI to work.
|
This directory contains all the collateral for the Chipyard CI to work.
|
||||||
The following is included:
|
The following is included:
|
||||||
|
|
||||||
build-toolchains.sh # build either riscv-tools or esp-tools
|
build-toolchains.sh # build either riscv-tools or esp-tools
|
||||||
@@ -41,8 +41,8 @@ The following is included:
|
|||||||
do-rtl-build.sh # use verilator to build a sim executable
|
do-rtl-build.sh # use verilator to build a sim executable
|
||||||
config.yml # main circleci config script to enumerate jobs/workflows
|
config.yml # main circleci config script to enumerate jobs/workflows
|
||||||
|
|
||||||
How things are setup for REBAR
|
How things are setup for Chipyard
|
||||||
------------------------------
|
---------------------------------
|
||||||
|
|
||||||
The steps for CI to run are as follows.
|
The steps for CI to run are as follows.
|
||||||
1st, build the toolchains in parallel (note: `esp-tools` is currently not used in the run).
|
1st, build the toolchains in parallel (note: `esp-tools` is currently not used in the run).
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ if [ ! -d "$HOME/$1-install" ]; then
|
|||||||
cd $HOME/
|
cd $HOME/
|
||||||
|
|
||||||
# init all submodules including the tools
|
# init all submodules including the tools
|
||||||
REBAR_DIR=$HOME/project ./project/scripts/build-toolchains.sh $1
|
CHIPYARD_DIR=$HOME/project ./project/scripts/build-toolchains.sh $1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -484,7 +484,7 @@ jobs:
|
|||||||
# Order and dependencies of jobs to run
|
# Order and dependencies of jobs to run
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
build-and-test-rebar-integration:
|
build-and-test-chipyard-integration:
|
||||||
jobs:
|
jobs:
|
||||||
# check to make sure commits are on master
|
# check to make sure commits are on master
|
||||||
- commit-on-master-check
|
- commit-on-master-check
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -1,20 +1,20 @@
|
|||||||
# REBAR Framework [](https://circleci.com/gh/ucb-bar/project-template/tree/master)
|
# Chipyard Framework [](https://circleci.com/gh/ucb-bar/project-template/tree/master)
|
||||||
|
|
||||||
## Using REBAR
|
## Using Chipyard
|
||||||
|
|
||||||
To get started using REBAR, see the documentation on the REBAR documentation site: https://bar-project-template.readthedocs.io/en/latest/
|
To get started using Chipyard, see the documentation on the Chipyard documentation site: https://bar-project-template.readthedocs.io/en/latest/
|
||||||
|
|
||||||
## What is REBAR
|
## What is Chipyard
|
||||||
|
|
||||||
REBAR is an open source starter template for your custom Chisel project.
|
Chipyard is an open source starter template for your custom Chisel project.
|
||||||
It will allow you to leverage the Chisel HDL, Rocket Chip SoC generator, and other [Berkeley][berkeley] projects to produce a [RISC-V][riscv] SoC with everything from MMIO-mapped peripherals to custom accelerators.
|
It will allow you to leverage the Chisel HDL, Rocket Chip SoC generator, and other [Berkeley][berkeley] projects to produce a [RISC-V][riscv] SoC with everything from MMIO-mapped peripherals to custom accelerators.
|
||||||
It contains processor cores ([Rocket][rocket-chip], [BOOM][boom]), accelerators ([Hwacha][hwacha]), FPGA simulation tools ([FireSim][firesim]), ASIC tools ([HAMMER][hammer]) and other tooling to help create a full featured SoC.
|
It contains processor cores ([Rocket][rocket-chip], [BOOM][boom]), accelerators ([Hwacha][hwacha]), FPGA simulation tools ([FireSim][firesim]), ASIC tools ([HAMMER][hammer]) and other tooling to help create a full featured SoC.
|
||||||
REBAR is actively developed in the [Berkeley Architecture Research Group][ucb-bar] in the [Electrical Engineering and Computer Sciences Department][eecs] at the [University of California, Berkeley][berkeley].
|
Chipyard is actively developed in the [Berkeley Architecture Research Group][ucb-bar] in the [Electrical Engineering and Computer Sciences Department][eecs] at the [University of California, Berkeley][berkeley].
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
* REBAR Website: ...TBD at a later date...
|
* Chipyard Website: ...TBD at a later date...
|
||||||
* REBAR Documentation: https://bar-project-template.readthedocs.io/
|
* Chipyard Documentation: https://bar-project-template.readthedocs.io/
|
||||||
|
|
||||||
[hwacha]:http://hwacha.org
|
[hwacha]:http://hwacha.org
|
||||||
[hammer]:https://github.com/ucb-bar/hammer
|
[hammer]:https://github.com/ucb-bar/hammer
|
||||||
|
|||||||
16
build.sbt
16
build.sbt
@@ -19,17 +19,17 @@ lazy val commonSettings = Seq(
|
|||||||
Resolver.sonatypeRepo("releases"),
|
Resolver.sonatypeRepo("releases"),
|
||||||
Resolver.mavenLocal))
|
Resolver.mavenLocal))
|
||||||
|
|
||||||
lazy val rebarFirrtl = (project in file("tools/firrtl"))
|
lazy val chipyardFirrtl = (project in file("tools/firrtl"))
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val rocketchip = RootProject(file("generators/rocket-chip"))
|
lazy val rocketchip = RootProject(file("generators/rocket-chip"))
|
||||||
|
|
||||||
lazy val rebarrocketchip = project
|
lazy val chipyardrocketchip = project
|
||||||
.dependsOn(rocketchip)
|
.dependsOn(rocketchip)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val testchipip = (project in file("generators/testchipip"))
|
lazy val testchipip = (project in file("generators/testchipip"))
|
||||||
.dependsOn(rebarrocketchip)
|
.dependsOn(chipyardrocketchip)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
// Checks for -DROCKET_USE_MAVEN.
|
// Checks for -DROCKET_USE_MAVEN.
|
||||||
@@ -53,25 +53,25 @@ lazy val utilities = conditionalDependsOn(project in file("generators/utilities"
|
|||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val hwacha = (project in file ("generators/hwacha"))
|
lazy val hwacha = (project in file ("generators/hwacha"))
|
||||||
.dependsOn(rebarrocketchip)
|
.dependsOn(chipyardrocketchip)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val boom = (project in file("generators/boom"))
|
lazy val boom = (project in file("generators/boom"))
|
||||||
.dependsOn(rebarrocketchip)
|
.dependsOn(chipyardrocketchip)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val tapeout = conditionalDependsOn(project in file("./tools/barstools/tapeout/"))
|
lazy val tapeout = conditionalDependsOn(project in file("./tools/barstools/tapeout/"))
|
||||||
.dependsOn(rebarFirrtl)
|
.dependsOn(chipyardFirrtl)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val mdf = (project in file("./tools/barstools/mdf/scalalib/"))
|
lazy val mdf = (project in file("./tools/barstools/mdf/scalalib/"))
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val `barstools-macros` = (project in file("./tools/barstools/macros/"))
|
lazy val `barstools-macros` = (project in file("./tools/barstools/macros/"))
|
||||||
.dependsOn(mdf, rebarrocketchip, rebarFirrtl)
|
.dependsOn(mdf, chipyardrocketchip, chipyardFirrtl)
|
||||||
.enablePlugins(sbtassembly.AssemblyPlugin)
|
.enablePlugins(sbtassembly.AssemblyPlugin)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val sifive_blocks = (project in file("generators/sifive-blocks"))
|
lazy val sifive_blocks = (project in file("generators/sifive-blocks"))
|
||||||
.dependsOn(rebarrocketchip)
|
.dependsOn(chipyardrocketchip)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ TESTCHIPIP_CLASSES ?= "$(TESTCHIP_DIR)/target/scala-$(SCALA_VERSION_MAJOR)/class
|
|||||||
#########################################################################################
|
#########################################################################################
|
||||||
FIRRTL_JAR ?= $(ROCKETCHIP_DIR)/lib/firrtl.jar
|
FIRRTL_JAR ?= $(ROCKETCHIP_DIR)/lib/firrtl.jar
|
||||||
|
|
||||||
$(FIRRTL_JAR): $(call lookup_scala_srcs, $(REBAR_FIRRTL_DIR)/src/main/scala)
|
$(FIRRTL_JAR): $(call lookup_scala_srcs, $(CHIPYARD_FIRRTL_DIR)/src/main/scala)
|
||||||
$(MAKE) -C $(REBAR_FIRRTL_DIR) SBT="$(SBT)" root_dir=$(REBAR_FIRRTL_DIR) build-scala
|
$(MAKE) -C $(CHIPYARD_FIRRTL_DIR) SBT="$(SBT)" root_dir=$(CHIPYARD_FIRRTL_DIR) build-scala
|
||||||
mkdir -p $(dir $@)
|
mkdir -p $(dir $@)
|
||||||
cp -p $(REBAR_FIRRTL_DIR)/utils/bin/firrtl.jar $@
|
cp -p $(CHIPYARD_FIRRTL_DIR)/utils/bin/firrtl.jar $@
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Generator can be thought of as a generalized RTL design, written using a mix of
|
|||||||
This type of meta-programming is enabled by the Chisel hardware description language (see :ref:`Chisel`).
|
This type of meta-programming is enabled by the Chisel hardware description language (see :ref:`Chisel`).
|
||||||
A standard RTL design is essentially just a single instance of a design coming from a generator.
|
A standard RTL design is essentially just a single instance of a design coming from a generator.
|
||||||
However, by using meta-programming and parameter systems, generators can allow for integration of complex hardware designs in automated ways.
|
However, by using meta-programming and parameter systems, generators can allow for integration of complex hardware designs in automated ways.
|
||||||
The following pages introduce the generators integrated with the REBAR framework.
|
The following pages introduce the generators integrated with the Chipyard framework.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Integrating into the Generator Build System
|
|||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
While developing, you want to include Chisel code in a submodule so that it can be shared by different projects.
|
While developing, you want to include Chisel code in a submodule so that it can be shared by different projects.
|
||||||
To add a submodule to the REBAR framework, make sure that your project is organized as follows.
|
To add a submodule to the Chipyard framework, make sure that your project is organized as follows.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ Then add it as a submodule to under the following directory hierarchy: ``generat
|
|||||||
cd generators/
|
cd generators/
|
||||||
git submodule add https://git-repository.com/yourproject.git
|
git submodule add https://git-repository.com/yourproject.git
|
||||||
|
|
||||||
Then add ``yourproject`` to the REBAR top-level build.sbt file.
|
Then add ``yourproject`` to the Chipyard top-level build.sbt file.
|
||||||
|
|
||||||
.. code-block:: scala
|
.. code-block:: scala
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ the ``example`` project, change the final line in build.sbt to the following.
|
|||||||
|
|
||||||
lazy val example = (project in file(".")).settings(commonSettings).dependsOn(testchipip, yourproject)
|
lazy val example = (project in file(".")).settings(commonSettings).dependsOn(testchipip, yourproject)
|
||||||
|
|
||||||
Finally, add ``yourproject`` to the ``PACKAGES`` variable in the ``common.mk`` file in the REBAR top level.
|
Finally, add ``yourproject`` to the ``PACKAGES`` variable in the ``common.mk`` file in the Chipyard top level.
|
||||||
This will allow make to detect that your source files have changed when building the Verilog/FIRRTL files.
|
This will allow make to detect that your source files have changed when building the Verilog/FIRRTL files.
|
||||||
|
|
||||||
MMIO Peripheral
|
MMIO Peripheral
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
REBAR Basics
|
Chipyard Basics
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
Generators
|
Generators
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
The REBAR Framework currently consists of the following RTL generators:
|
The Chipyard Framework currently consists of the following RTL generators:
|
||||||
|
|
||||||
Processor Cores
|
Processor Cores
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
@@ -72,7 +72,7 @@ Toolchains
|
|||||||
A collection of software toolchains used to develop and execute software on the RISC-V ISA.
|
A collection of software toolchains used to develop and execute software on the RISC-V ISA.
|
||||||
The include compiler and assembler toolchains, functional ISA simulator (spike), the Berkeley Boot Loader (BBL) and proxy kernel.
|
The include compiler and assembler toolchains, functional ISA simulator (spike), the Berkeley Boot Loader (BBL) and proxy kernel.
|
||||||
The riscv-tools repository was previously required to run any RISC-V software, however, many of the riscv-tools components have since been upstreamed to their respective open-source projects (Linux, GNU, etc.).
|
The riscv-tools repository was previously required to run any RISC-V software, however, many of the riscv-tools components have since been upstreamed to their respective open-source projects (Linux, GNU, etc.).
|
||||||
Nevertheless, for consistent versioning, as well as software design flexibility for custom hardware, we include the riscv-tools repository and installation in the REBAR framework.
|
Nevertheless, for consistent versioning, as well as software design flexibility for custom hardware, we include the riscv-tools repository and installation in the Chipyard framework.
|
||||||
|
|
||||||
**esp-tools**
|
**esp-tools**
|
||||||
A fork of riscv-tools, designed to work with the Hwacha non-standard RISC-V extension.
|
A fork of riscv-tools, designed to work with the Hwacha non-standard RISC-V extension.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
Configs, Parameters, Mix-ins, and Everything In Between
|
Configs, Parameters, Mix-ins, and Everything In Between
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
A significant portion of generators in the REBAR framework use the Rocket Chip parameter system.
|
A significant portion of generators in the Chipyard framework use the Rocket Chip parameter system.
|
||||||
This parameter system enables for the flexible configuration of the SoC without invasive RTL changes.
|
This parameter system enables for the flexible configuration of the SoC without invasive RTL changes.
|
||||||
In order to use the parameter system correctly, we will use several terms and conventions:
|
In order to use the parameter system correctly, we will use several terms and conventions:
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ Cake Pattern
|
|||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
A cake pattern is a Scala programming pattern, which enable "mixing" of multiple traits or interface definitions (sometimes referred to as dependency injection).
|
A cake pattern is a Scala programming pattern, which enable "mixing" of multiple traits or interface definitions (sometimes referred to as dependency injection).
|
||||||
It is used in the Rocket Chip SoC library and REBAR framework in merging multiple system components and IO interfaces into a large system component.
|
It is used in the Rocket Chip SoC library and Chipyard framework in merging multiple system components and IO interfaces into a large system component.
|
||||||
|
|
||||||
:numref:`cake-example` shows a Rocket Chip based SoC that merges multiple system components (BootROM, UART, etc) into a single top-level design.
|
:numref:`cake-example` shows a Rocket Chip based SoC that merges multiple system components (BootROM, UART, etc) into a single top-level design.
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
Development Ecosystem
|
Development Ecosystem
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
REBAR Approach
|
Chipyard Approach
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
The trend towards agile hardware design and evaluation provides an ecosystem of debugging and implementation tools, that make it easier for computer architecture researchers to develop novel concepts.
|
The trend towards agile hardware design and evaluation provides an ecosystem of debugging and implementation tools, that make it easier for computer architecture researchers to develop novel concepts.
|
||||||
REBAR hopes to build on this prior work in order to create a singular location to which multiple projects within the `Berkeley Architecture Research <https://bar.eecs.berkeley.edu/index.html>`__ can coexist and be used together.
|
Chipyard hopes to build on this prior work in order to create a singular location to which multiple projects within the `Berkeley Architecture Research <https://bar.eecs.berkeley.edu/index.html>`__ can coexist and be used together.
|
||||||
REBAR aims to be the "one-stop shop" for creating and testing your own unique System on a Chip (SoC).
|
Chipyard aims to be the "one-stop shop" for creating and testing your own unique System on a Chip (SoC).
|
||||||
|
|
||||||
Chisel/FIRRTL
|
Chisel/FIRRTL
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
Running A Simulation
|
Running A Simulation
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
REBAR provides support and integration for multiple simulation flows, for various user levels and requirements.
|
Chipyard provides support and integration for multiple simulation flows, for various user levels and requirements.
|
||||||
In the majority of cases during a digital design development process, simple software RTL simulation is needed.
|
In the majority of cases during a digital design development process, simple software RTL simulation is needed.
|
||||||
When more advanced full-system evaluation is required, with long running workloads, FPGA-accelerated simulation will then become a preferable solution.
|
When more advanced full-system evaluation is required, with long running workloads, FPGA-accelerated simulation will then become a preferable solution.
|
||||||
|
|
||||||
Software RTL Simulation
|
Software RTL Simulation
|
||||||
------------------------
|
------------------------
|
||||||
The REBAR framework provides wrappers for two common software RTL simulators:
|
The Chipyard framework provides wrappers for two common software RTL simulators:
|
||||||
the open-source Verilator simulator and the proprietary VCS simulator.
|
the open-source Verilator simulator and the proprietary VCS simulator.
|
||||||
For more information on either of these simulators, please refer to :ref:`Verilator` or :ref:`VCS`.
|
For more information on either of these simulators, please refer to :ref:`Verilator` or :ref:`VCS`.
|
||||||
The following instructions assume at least one of these simulators is installed.
|
The following instructions assume at least one of these simulators is installed.
|
||||||
@@ -97,7 +97,7 @@ FireSim enables simulations at 1000x-100000x the speed of standard software simu
|
|||||||
This is enabled using FPGA-acceleration on F1 instances of the AWS (Amazon Web Services) public cloud.
|
This is enabled using FPGA-acceleration on F1 instances of the AWS (Amazon Web Services) public cloud.
|
||||||
Therefore FireSim simulation requires to be set-up on the AWS public cloud rather than on our local development machine.
|
Therefore FireSim simulation requires to be set-up on the AWS public cloud rather than on our local development machine.
|
||||||
|
|
||||||
To run an FPGA-accelerated simulation using FireSim, a we need to clone the REBAR repository (or our fork of the REBAR repository) to an AWS EC2, and follow the setup instructions specified in the FireSim Initial Setup documentation page.
|
To run an FPGA-accelerated simulation using FireSim, a we need to clone the Chipyard repository (or our fork of the Chipyard repository) to an AWS EC2, and follow the setup instructions specified in the FireSim Initial Setup documentation page.
|
||||||
|
|
||||||
After setting up the FireSim environment, we now need to generate a FireSim simulation around our selected digital design.
|
After setting up the FireSim environment, we now need to generate a FireSim simulation around our selected digital design.
|
||||||
We will work from within the ``sims/firesim`` directory.
|
We will work from within the ``sims/firesim`` directory.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Getting Started
|
Getting Started
|
||||||
================================
|
================================
|
||||||
|
|
||||||
These guides will walk you through the basics of the REBAR framework:
|
These guides will walk you through the basics of the Chipyard framework:
|
||||||
|
|
||||||
- First, we will go over the different configurations available.
|
- First, we will go over the different configurations available.
|
||||||
|
|
||||||
@@ -13,9 +13,9 @@ Hit next to get started!
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Getting Started:
|
:caption: Getting Started:
|
||||||
|
|
||||||
REBAR-Basics
|
Chipyard-Basics
|
||||||
Configs-Parameters-Mixins
|
Configs-Parameters-Mixins
|
||||||
Adding-An-Accelerator-Tutorial
|
Adding-An-Accelerator-Tutorial
|
||||||
Initial-Repo-Setup
|
Initial-Repo-Setup
|
||||||
Running-A-Simulation
|
Running-A-Simulation
|
||||||
rebar-generator-mixins
|
Chipyard-Generator-Mixins
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# You can set these variables from the command line.
|
# You can set these variables from the command line.
|
||||||
SPHINXOPTS =
|
SPHINXOPTS =
|
||||||
SPHINXBUILD = python -msphinx
|
SPHINXBUILD = python -msphinx
|
||||||
SPHINXPROJ = REBAR
|
SPHINXPROJ = Chipyard
|
||||||
SOURCEDIR = .
|
SOURCEDIR = .
|
||||||
BUILDDIR = _build
|
BUILDDIR = _build
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ VCS
|
|||||||
|
|
||||||
`VCS <https://www.synopsys.com/verification/simulation/vcs.html>`__ is a commercial RTL simulator developed by Synopsys.
|
`VCS <https://www.synopsys.com/verification/simulation/vcs.html>`__ is a commercial RTL simulator developed by Synopsys.
|
||||||
It requires commercial licenses.
|
It requires commercial licenses.
|
||||||
The REBAR framework can compile and execute simulations using VCS.
|
The Chipyard framework can compile and execute simulations using VCS.
|
||||||
VCS simulation will generally compile faster than Verilator simulations.
|
VCS simulation will generally compile faster than Verilator simulations.
|
||||||
|
|
||||||
To run a simulation using VCS, perform the following steps:
|
To run a simulation using VCS, perform the following steps:
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ FireSim allows RTL-level simulation at orders-of-magnitude faster speeds than so
|
|||||||
FireSim also provides additional device models to allow full-system simulation, including memory models and network models.
|
FireSim also provides additional device models to allow full-system simulation, including memory models and network models.
|
||||||
|
|
||||||
FireSim currently supports running only on Amazon EC2 F1 FPGA-enabled virtual instances on the public cloud.
|
FireSim currently supports running only on Amazon EC2 F1 FPGA-enabled virtual instances on the public cloud.
|
||||||
In order to simulate your REBAR design using FireSim, you should follow the following steps:
|
In order to simulate your Chipyard design using FireSim, you should follow the following steps:
|
||||||
|
|
||||||
Follow the initial EC2 setup instructions as detailed in the `FireSim documentation <http://docs.fires.im/en/latest/Initial-Setup/index.html>`__.
|
Follow the initial EC2 setup instructions as detailed in the `FireSim documentation <http://docs.fires.im/en/latest/Initial-Setup/index.html>`__.
|
||||||
Then clone your full REBAR repository onto your Amazon EC2 FireSim manager instance.
|
Then clone your full Chipyard repository onto your Amazon EC2 FireSim manager instance.
|
||||||
|
|
||||||
Enter the ``sims/FireSim`` directory, and follow the FireSim instructions for `running a simulation <http://docs.fires.im/en/latest/Running-Simulations-Tutorial/index.html>`__.
|
Enter the ``sims/FireSim`` directory, and follow the FireSim instructions for `running a simulation <http://docs.fires.im/en/latest/Running-Simulations-Tutorial/index.html>`__.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Verilator
|
|||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
`Verilator <https://www.veripool.org/wiki/verilator>`__ is an open-source LGPL-Licensed simulator maintained by `Veripool <https://www.veripool.org/>`__.
|
`Verilator <https://www.veripool.org/wiki/verilator>`__ is an open-source LGPL-Licensed simulator maintained by `Veripool <https://www.veripool.org/>`__.
|
||||||
The REBAR framework can download, build, and execute simulations using Verilator.
|
The Chipyard framework can download, build, and execute simulations using Verilator.
|
||||||
|
|
||||||
To run a simulation using Verilator, perform the following steps:
|
To run a simulation using Verilator, perform the following steps:
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
Simulators
|
Simulators
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
REBAR provides support and integration for multiple simulation flows, for various user levels and requirements.
|
Chipyard provides support and integration for multiple simulation flows, for various user levels and requirements.
|
||||||
In the majority of cases during a digital design development process, a simple software RTL simulation will do.
|
In the majority of cases during a digital design development process, a simple software RTL simulation will do.
|
||||||
When more advanced full-system evaluation is required, with long running workloads, FPGA-accelerated simulation will then become a preferable solution.
|
When more advanced full-system evaluation is required, with long running workloads, FPGA-accelerated simulation will then become a preferable solution.
|
||||||
The following pages provide detailed information about the simulation possibilities within the REBAR framework.
|
The following pages provide detailed information about the simulation possibilities within the Chipyard framework.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Tools
|
Tools
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
The REBAR framework relays heavily on a set of Scala-based tools.
|
The Chipyard framework relays heavily on a set of Scala-based tools.
|
||||||
The following pages will introduce them, and how we can use them in order to generate flexible designs.
|
The following pages will introduce them, and how we can use them in order to generate flexible designs.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
VLSI Production
|
VLSI Production
|
||||||
================================
|
================================
|
||||||
|
|
||||||
The REBAR framework aim to provide wrappers to a general VLSI flow.
|
The Chipyard framework aim to provide wrappers to a general VLSI flow.
|
||||||
In particular, we aim to support the HAMMER flow.
|
In particular, we aim to support the HAMMER flow.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|||||||
14
docs/conf.py
14
docs/conf.py
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# REBAR documentation build configuration file, created by
|
# Chipyard documentation build configuration file, created by
|
||||||
# sphinx-quickstart on Fri Mar 8 11:46:38 2019.
|
# sphinx-quickstart on Fri Mar 8 11:46:38 2019.
|
||||||
#
|
#
|
||||||
# This file is execfile()d with the current directory set to its
|
# This file is execfile()d with the current directory set to its
|
||||||
@@ -52,7 +52,7 @@ source_suffix = '.rst'
|
|||||||
master_doc = 'index'
|
master_doc = 'index'
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'REBAR'
|
project = u'Chipyard'
|
||||||
copyright = u'2019, Berkeley Architecture Research'
|
copyright = u'2019, Berkeley Architecture Research'
|
||||||
author = u'Berkeley Architecture Research'
|
author = u'Berkeley Architecture Research'
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ html_sidebars = {
|
|||||||
# -- Options for HTMLHelp output ------------------------------------------
|
# -- Options for HTMLHelp output ------------------------------------------
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = 'REBARdoc'
|
htmlhelp_basename = 'Chipyarddoc'
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output ---------------------------------------------
|
# -- Options for LaTeX output ---------------------------------------------
|
||||||
@@ -152,7 +152,7 @@ latex_elements = {
|
|||||||
# (source start file, target name, title,
|
# (source start file, target name, title,
|
||||||
# author, documentclass [howto, manual, or own class]).
|
# author, documentclass [howto, manual, or own class]).
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
(master_doc, 'REBAR.tex', u'REBAR Documentation',
|
(master_doc, 'Chipyard.tex', u'Chipyard Documentation',
|
||||||
u'Berkeley Architecture Research', 'manual'),
|
u'Berkeley Architecture Research', 'manual'),
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ latex_documents = [
|
|||||||
# One entry per manual page. List of tuples
|
# One entry per manual page. List of tuples
|
||||||
# (source start file, name, description, authors, manual section).
|
# (source start file, name, description, authors, manual section).
|
||||||
man_pages = [
|
man_pages = [
|
||||||
(master_doc, 'rebar', u'REBAR Documentation',
|
(master_doc, 'chipyard', u'Chipyard Documentation',
|
||||||
[author], 1)
|
[author], 1)
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -173,8 +173,8 @@ man_pages = [
|
|||||||
# (source start file, target name, title, author,
|
# (source start file, target name, title, author,
|
||||||
# dir menu entry, description, category)
|
# dir menu entry, description, category)
|
||||||
texinfo_documents = [
|
texinfo_documents = [
|
||||||
(master_doc, 'REBAR', u'REBAR Documentation',
|
(master_doc, 'Chipyard', u'Chipyard Documentation',
|
||||||
author, 'REBAR', 'One line description of project.',
|
author, 'Chipyard', 'One line description of project.',
|
||||||
'Miscellaneous'),
|
'Miscellaneous'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
.. REBAR documentation master file, created by
|
.. Chipyard documentation master file, created by
|
||||||
sphinx-quickstart on Fri Mar 8 11:46:38 2019.
|
sphinx-quickstart on Fri Mar 8 11:46:38 2019.
|
||||||
You can adapt this file completely to your liking, but it should at least
|
You can adapt this file completely to your liking, but it should at least
|
||||||
contain the root `toctree` directive.
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
Welcome to REBAR's documentation!
|
Welcome to Chipyard's documentation!
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
REBAR is a a framework for designing and evaluating full-system hardware using agile teams.
|
Chipyard is a a framework for designing and evaluating full-system hardware using agile teams.
|
||||||
It is composed of a collection of tools and libraries designed to provide an intergration between open-source and commercial tools for the development of systems-on-chip.
|
It is composed of a collection of tools and libraries designed to provide an intergration between open-source and commercial tools for the development of systems-on-chip.
|
||||||
New to REBAR? Jump to the :ref:`Getting Started` page for more info.
|
New to Chipyard? Jump to the :ref:`Getting Started` page for more info.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 3
|
:maxdepth: 3
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ set -o pipefail
|
|||||||
|
|
||||||
unamestr=$(uname)
|
unamestr=$(uname)
|
||||||
RDIR=$(pwd)
|
RDIR=$(pwd)
|
||||||
: ${REBAR_DIR:=$(pwd)} #default value is the PWD unless overridden
|
: ${CHIPYARD_DIR:=$(pwd)} #default value is the PWD unless overridden
|
||||||
|
|
||||||
if [ $# -ne 0 ]; then
|
if [ $# -ne 0 ]; then
|
||||||
TOOLCHAIN=$1
|
TOOLCHAIN=$1
|
||||||
@@ -26,8 +26,8 @@ RISCV="$(pwd)/$INSTALL_DIR"
|
|||||||
|
|
||||||
# install risc-v tools
|
# install risc-v tools
|
||||||
export RISCV="$RISCV"
|
export RISCV="$RISCV"
|
||||||
git -C $REBAR_DIR submodule update --init --recursive toolchains/$TOOLCHAIN #--jobs 8
|
git -C $CHIPYARD_DIR submodule update --init --recursive toolchains/$TOOLCHAIN #--jobs 8
|
||||||
cd "$REBAR_DIR/toolchains/$TOOLCHAIN"
|
cd "$CHIPYARD_DIR/toolchains/$TOOLCHAIN"
|
||||||
export MAKEFLAGS="-j16"
|
export MAKEFLAGS="-j16"
|
||||||
./build.sh
|
./build.sh
|
||||||
cd $RDIR
|
cd $RDIR
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# run this script in the main rebar directory to generate ctags for all relevant repos
|
# run this script in the main Chipyard directory to generate ctags for all relevant repos
|
||||||
# note: this requires exuberant-ctags
|
# note: this requires exuberant-ctags
|
||||||
# tested with: Exuberant Ctags 5.8
|
# tested with: Exuberant Ctags 5.8
|
||||||
# instructions:
|
# instructions:
|
||||||
# cd /path/to/rebar/
|
# cd /path/to/chipyard/
|
||||||
# ./scripts/gen-tags.sh
|
# ./scripts/gen-tags.sh
|
||||||
#
|
#
|
||||||
# input:
|
# input:
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ ifeq ($(SUB_PROJECT),boom)
|
|||||||
endif
|
endif
|
||||||
# for Rocket-chip developers
|
# for Rocket-chip developers
|
||||||
ifeq ($(SUB_PROJECT),rocketchip)
|
ifeq ($(SUB_PROJECT),rocketchip)
|
||||||
SBT_PROJECT ?= rebarrocketchip
|
SBT_PROJECT ?= chipyardrocketchip
|
||||||
MODEL ?= TestHarness
|
MODEL ?= TestHarness
|
||||||
VLOG_MODEL ?= TestHarness
|
VLOG_MODEL ?= TestHarness
|
||||||
MODEL_PACKAGE ?= freechips.rocketchip.system
|
MODEL_PACKAGE ?= freechips.rocketchip.system
|
||||||
@@ -78,9 +78,9 @@ endif
|
|||||||
#########################################################################################
|
#########################################################################################
|
||||||
# path to rocket-chip and testchipip
|
# path to rocket-chip and testchipip
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
ROCKETCHIP_DIR = $(base_dir)/generators/rocket-chip
|
ROCKETCHIP_DIR = $(base_dir)/generators/rocket-chip
|
||||||
TESTCHIP_DIR = $(base_dir)/generators/testchipip
|
TESTCHIP_DIR = $(base_dir)/generators/testchipip
|
||||||
REBAR_FIRRTL_DIR = $(base_dir)/tools/firrtl
|
CHIPYARD_FIRRTL_DIR = $(base_dir)/tools/firrtl
|
||||||
|
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
# names of various files needed to compile and run things
|
# names of various files needed to compile and run things
|
||||||
|
|||||||
Reference in New Issue
Block a user