Skip to content

Commit

Permalink
docs: Adapt documentation and schemas for new repository
Browse files Browse the repository at this point in the history
* clustergen: Require absolute paths to schemas

* ci: Freeze verible_version for CI checks

* doc: Update directory structure documenation to include README's of the main directories and add mkdocs-include-markdown-plugin as requirement

* doc: Update overall documentation

* docs: Reduce redundancy and organize user guide in a linear way

* ci: Update to new version of `pulp-actions`

*.github: Add CODEOWNERS file

* doc: Add README.md

* doc: Clean up publications, keep only cluster-related works

* doc: Address review feedback

* doc: Build on `main` branch

* doc: Some fixes

---------

Co-authored-by: Luca Colagrande <[email protected]>
Co-authored-by: Paul Scheffler <[email protected]>
  • Loading branch information
3 people committed Jul 11, 2023
1 parent 4622fa6 commit 546c9ae
Show file tree
Hide file tree
Showing 28 changed files with 797 additions and 1,043 deletions.
11 changes: 11 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# These owners will be the default owners for everything in the repo.
# Unless a later match takes precedence, global owners below will be
# requested for review when someone opens a pull request.

* @paulsc96 @colluca

hw/snitch_cluster @paulsc96 @lucabertaccini
hw/snitch_dma @paulsc96 @thommythomaso
hw/snitch_icache @paulsc96 @SamuelRiedel

sw @colluca @fischeti @viv-eth
2 changes: 1 addition & 1 deletion .github/workflows/gitlab-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Check Gitlab CI
uses: pulp-platform/pulp-actions/gitlab-ci@v2
uses: pulp-platform/pulp-actions/gitlab-ci@v2.1.0
# Skip on forks or pull requests from forks due to missing secrets.
if:
# yamllint disable rule:line-length
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ jobs:
# Verible Lint #
################
verible-lint:
name: Lint Verilog sources
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand All @@ -25,15 +26,17 @@ jobs:
fail_on_error: true
reviewdog_reporter: github-check
extra_args: "--waiver_files util/lint/waiver.verible"
verible_version: "v0.0-3318-g8d254167"

#####################
# Vendor Up-to-Date #
#####################
bender-vendor-up-to-date:
name: Check bender vendor up-to-date
runs-on: ubuntu-latest
steps:
- name: Check bender vendor up-to-date
uses: pulp-platform/pulp-actions/bender-vendor-up-to-date@v2
uses: pulp-platform/pulp-actions/bender-vendor-up-to-date@v2.1.0

######################
# Opcodes Up-to-Date #
Expand Down Expand Up @@ -61,7 +64,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check License
uses: pulp-platform/pulp-actions/lint-license@patch/license-checker
uses: pulp-platform/pulp-actions/lint-license@v2.1.0
with:
patches: 0001-Allow-hash-comments-in-assembly.patch
# We cover ETH Zurich and lowRISC licenses and Apache 2.0
Expand Down
143 changes: 143 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
![CI](https://github.com/pulp-platform/snitch_cluster/actions/workflows/ci.yml/badge.svg)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

# Snitch Cluster

This repository hosts the hardware and software for the Snitch cluster and its generator. Snitch is a high-efficiency compute cluster platform focused on floating-point workloads. It is developed as part of the PULP project, a joint effort between ETH Zurich and the University of Bologna.

## Getting Started

To get started, check out the [getting started guide](https://pulp-platform.github.io/snitch_cluster/ug/getting_started.html).

## Content

What can you expect to find in this repository?

- The RISC-V [Snitch integer core](https://pulp-platform.github.io/snitch_cluster/rm/snitch/). This can be useful stand-alone if you are just interested in re-using the core for your project, e.g., as a tiny control core or you want to make a peripheral smart. The sky is the limit.
- The [Snitch cluster](https://pulp-platform.github.io/snitch_cluster/ug/snitch_cluster/). A highly configurable cluster containing one to many integer cores with optional floating-point capabilities as well as our custom ISA extensions `Xssr`, `Xfrep`, and `Xdma`.
- A runtime and example applications for the Snitch cluster.
- RTL simulation environments for Verilator, Questa Advanced Simulator, and VCS, as well as configurations for our [Banshee system simulator](https://github.com/pulp-platform/banshee)

This code was previously hosted in the [Snitch monorepo](https://github.com/pulp-platform/snitch) and was spun off into its own repository to simplify maintenance and dependency handling. Note that our Snitch-based manycore system [Occamy](https://github.com/pulp-platform/occamy) has also moved.

## Tool Requirements

* `verilator >= v4.1`
* `bender >= v0.27.0`

## License

Snitch is being made available under permissive open source licenses.

The following files are released under Apache License 2.0 (`Apache-2.0`) see `LICENSE`:

- `sw/`
- `util/`

The following files are released under Solderpad v0.51 (`SHL-0.51`) see `hw/LICENSE`:

- `hw/`

The `sw/deps` directory references submodules that come with their own
licenses. See the respective folder for the licenses used.

- `sw/deps/`

## Publications


If you use the Snitch cluster or its extensions in your work, you can cite us:

<details>
<summary><b>Snitch: A tiny Pseudo Dual-Issue Processor for Area and Energy Efficient Execution of Floating-Point Intensive Workloads</b></summary>
<p>

```
@article{zaruba2020snitch,
title={Snitch: A tiny Pseudo Dual-Issue Processor for Area and Energy Efficient Execution of Floating-Point Intensive Workloads},
author={Zaruba, Florian and Schuiki, Fabian and Hoefler, Torsten and Benini, Luca},
journal={IEEE Transactions on Computers},
year={2020},
publisher={IEEE}
}
```

</p>
</details>

<details>
<summary><b>Stream semantic registers: A lightweight risc-v isa extension achieving full compute utilization in single-issue cores</b></summary>
<p>

```
@article{schuiki2020stream,
title={Stream semantic registers: A lightweight risc-v isa extension achieving full compute utilization in single-issue cores},
author={Schuiki, Fabian and Zaruba, Florian and Hoefler, Torsten and Benini, Luca},
journal={IEEE Transactions on Computers},
volume={70},
number={2},
pages={212--227},
year={2020},
publisher={IEEE}
}
```

</p>
</details>

<details>
<summary><b>Indirection Stream Semantic Register Architecture for Efficient Sparse-Dense Linear Algebra</b></summary>
<p>

```
@inproceedings{scheffler2021indirect,
author={Scheffler, Paul and Zaruba, Florian and Schuiki, Fabian and Hoefler, Torsten and Benini, Luca},
booktitle={2021 Design, Automation & Test in Europe Conference & Exhibition (DATE)},
title={Indirection Stream Semantic Register Architecture for Efficient Sparse-Dense Linear Algebra},
year={2021},
volume={},
number={},
pages={1787-1792}
}
```

</p>
</details>

<details>
<summary><b>MiniFloat-NN and ExSdotp: An ISA Extension and a Modular Open Hardware Unit for Low-Precision Training on RISC-V Cores</b></summary>
<p>

```
@inproceedings{bertaccini2022minifloat,
author={Bertaccini, Luca and Paulin, Gianna and Fischer, Tim and Mach, Stefan and Benini, Luca},
booktitle={2022 IEEE 29th Symposium on Computer Arithmetic (ARITH)},
title={MiniFloat-NN and ExSdotp: An ISA Extension and a Modular Open Hardware Unit for Low-Precision Training on RISC-V Cores},
year={2022},
volume={},
number={},
pages={1-8}
}
```

</p>
</details>

<details>
<summary><b>Soft Tiles: Capturing Physical Implementation Flexibility for Tightly-Coupled Parallel Processing Clusters</b></summary>
<p>

```
@inproceedings{paulin2022softtiles,
author={Paulin, Gianna and Cavalcante, Matheus and Scheffler, Paul and Bertaccini, Luca and Zhang, Yichao and Gürkaynak, Frank and Benini, Luca},
booktitle={2022 IEEE Computer Society Annual Symposium on VLSI (ISVLSI)},
title={Soft Tiles: Capturing Physical Implementation Flexibility for Tightly-Coupled Parallel Processing Clusters},
year={2022},
volume={},
number={},
pages={44-49},
doi={10.1109/ISVLSI54635.2022.00021}
}
```

</p>
2 changes: 1 addition & 1 deletion docs/doxybook2.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"baseUrl": "/snitch/runtime/",
"baseUrl": "/snitch_cluster/runtime/",
"indexInFolders": true,
"linkSuffix": "/",
"indexClassesName": "index",
Expand Down
8 changes: 5 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Snitch System Generator
# Snitch

The Snitch project is an open-source RISC-V hardware research project of ETH Zurich and University of Bologna targeting highest possible energy-efficiency. The system is designed around a versatile and small integer core, which we call Snitch. The system is ought to be highly parameterizable and suitable for many use-cases, ranging from small, control-only cores, to large many-core system made for pure number crunching in the HPC domain.

Expand All @@ -8,11 +8,13 @@ See our dedicated [getting started guide](ug/getting_started.md).

## Documentation

The documentation is built from the latest master and hosted at github pages: [https://pulp-platform.github.io/snitch](https://pulp-platform.github.io/snitch).
The documentation is built from the latest master and hosted at github pages: [https://pulp-platform.github.io/snitch_cluster](https://pulp-platform.github.io/snitch_cluster).

## About this Repository

This repository is developed as a monorepo, external dependencies are "vendored-in" and checked in. Keeping it a monolithic repository helps to keep the hardware dependencies under control and enables precise snapshotting (invaluable when you are taping-out chips).
The original repository [https://github.com/pulp-platform/snitch](https://github.com/pulp-platform/snitch) was developed as a monorepo where external dependencies are "vendored-in" and checked in. For easier integration into heterogeneous systems with other PULP Platform IPs, the original repo was archived. This new repository [https://github.com/pulp-platform/snitch_cluster](https://github.com/pulp-platform/snitch_cluster) handles depenencies with [Bender](https://github.com/pulp-platform/bender) and has a couple of repositories as submodules.
The Occamy System part of the original repository is being moved to its own repository [https://github.com/pulp-platform/occamy](https://github.com/pulp-platform/occamy).


## Licensing

Expand Down
96 changes: 89 additions & 7 deletions docs/publications.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,97 @@
# Publications

The Snitch architecture is built on research that is described in the following publications.
If you use the Snitch cluster or its extensions in your work, you can cite us:

## 2021
<details>
<summary><b>Snitch: A tiny Pseudo Dual-Issue Processor for Area and Energy Efficient Execution of Floating-Point Intensive Workloads</b></summary>
<p>

F. Zaruba, F. Schuiki, T. Hoefler and L. Benini, "Snitch: A Tiny Pseudo Dual-Issue Processor for Area and Energy Efficient Execution of Floating-Point Intensive Workloads," in IEEE Transactions on Computers, vol. 70, no. 11, pp. 1845-1860, 1 Nov. 2021, [doi: 10.1109/TC.2020.3027900](http://www.doi.org/10.1109/TC.2020.3027900).
```
@article{zaruba2020snitch,
title={Snitch: A tiny Pseudo Dual-Issue Processor for Area and Energy Efficient Execution of Floating-Point Intensive Workloads},
author={Zaruba, Florian and Schuiki, Fabian and Hoefler, Torsten and Benini, Luca},
journal={IEEE Transactions on Computers},
year={2020},
publisher={IEEE}
}
```

F. Schuiki, F. Zaruba, T. Hoefler and L. Benini, "Stream Semantic Registers: A Lightweight RISC-V ISA Extension Achieving Full Compute Utilization in Single-Issue Cores," in IEEE Transactions on Computers, vol. 70, no. 2, pp. 212-227, 1 Feb. 2021, [doi: 10.1109/TC.2020.2987314](http://www.doi.org/10.1109/TC.2020.2987314).
</p>
</details>

S. Riedel, F. Schuiki, P. Scheffler, F. Zaruba and L. Benini, "Banshee: A Fast LLVM-Based RISC-V Binary Translator," 2021 IEEE/ACM International Conference On Computer Aided Design (ICCAD), 2021, pp. 1-9, [doi: 10.1109/ICCAD51958.2021.9643546](http://www.doi.org/10.1109/ICCAD51958.2021.9643546).
<details>
<summary><b>Stream semantic registers: A lightweight risc-v isa extension achieving full compute utilization in single-issue cores</b></summary>
<p>

F. Zaruba, F. Schuiki and L. Benini, "Manticore: A 4096-Core RISC-V Chiplet Architecture for Ultraefficient Floating-Point Computing," in IEEE Micro, vol. 41, no. 2, pp. 36-42, 1 March-April 2021, [doi: 10.1109/MM.2020.3045564](http://www.doi.org/10.1109/MM.2020.3045564).
```
@article{schuiki2020stream,
title={Stream semantic registers: A lightweight risc-v isa extension achieving full compute utilization in single-issue cores},
author={Schuiki, Fabian and Zaruba, Florian and Hoefler, Torsten and Benini, Luca},
journal={IEEE Transactions on Computers},
volume={70},
number={2},
pages={212--227},
year={2020},
publisher={IEEE}
}
```

P. Scheffler, F. Zaruba, F. Schuiki, T. Hoefler and L. Benini, "Indirection Stream Semantic Register Architecture for Efficient Sparse-Dense Linear Algebra," 2021 Design, Automation & Test in Europe Conference & Exhibition (DATE), 2021, pp. 1787-1792, [doi: 10.23919/DATE51398.2021.9474230](http://www.doi.org/10.23919/DATE51398.2021.9474230).
</p>
</details>

<details>
<summary><b>Indirection Stream Semantic Register Architecture for Efficient Sparse-Dense Linear Algebra</b></summary>
<p>

```
@inproceedings{scheffler2021indirect,
author={Scheffler, Paul and Zaruba, Florian and Schuiki, Fabian and Hoefler, Torsten and Benini, Luca},
booktitle={2021 Design, Automation & Test in Europe Conference & Exhibition (DATE)},
title={Indirection Stream Semantic Register Architecture for Efficient Sparse-Dense Linear Algebra},
year={2021},
volume={},
number={},
pages={1787-1792}
}
```

</p>
</details>

<details>
<summary><b>MiniFloat-NN and ExSdotp: An ISA Extension and a Modular Open Hardware Unit for Low-Precision Training on RISC-V Cores</b></summary>
<p>

```
@inproceedings{bertaccini2022minifloat,
author={Bertaccini, Luca and Paulin, Gianna and Fischer, Tim and Mach, Stefan and Benini, Luca},
booktitle={2022 IEEE 29th Symposium on Computer Arithmetic (ARITH)},
title={MiniFloat-NN and ExSdotp: An ISA Extension and a Modular Open Hardware Unit for Low-Precision Training on RISC-V Cores},
year={2022},
volume={},
number={},
pages={1-8}
}
```

</p>
</details>

<details>
<summary><b>Soft Tiles: Capturing Physical Implementation Flexibility for Tightly-Coupled Parallel Processing Clusters</b></summary>
<p>

```
@inproceedings{paulin2022softtiles,
author={Paulin, Gianna and Cavalcante, Matheus and Scheffler, Paul and Bertaccini, Luca and Zhang, Yichao and Gürkaynak, Frank and Benini, Luca},
booktitle={2022 IEEE Computer Society Annual Symposium on VLSI (ISVLSI)},
title={Soft Tiles: Capturing Physical Implementation Flexibility for Tightly-Coupled Parallel Processing Clusters},
year={2022},
volume={},
number={},
pages={44-49},
doi={10.1109/ISVLSI54635.2022.00021}
}
```

</p>
2 changes: 2 additions & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@
mkdocs
# Last version compatible with python-3.6 (default on Ubuntu 18.04)
mkdocs-material <= 8.2.11
mkdocs-include-markdown-plugin
mkdocs-macros-plugin
1 change: 1 addition & 0 deletions docs/rm/reqrsp_interface.md
1 change: 1 addition & 0 deletions docs/rm/snitch.md
1 change: 1 addition & 0 deletions docs/rm/snitch_cluster.md
2 changes: 1 addition & 1 deletion docs/schema/snitch_cluster.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://pulp-platform.org/snitch/snitch_cluster.schema.json",
"$id": "http://pulp-platform.org/snitch_cluster/snitch_cluster.schema.json",
"title": "Snitch Cluster Schema",
"description": "Base description of a Snitch cluster and its internal structure and configuration.",
"type": "object",
Expand Down
4 changes: 2 additions & 2 deletions docs/schema/snitch_cluster_tb.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://pulp-platform.org/snitch/snitch_cluster_tb.schema.json",
"$id": "http://pulp-platform.org/snitch_cluster/snitch_cluster_tb.schema.json",
"title": "Snitch Cluster TB Schema",
"description": "Description for a very simple single-cluster testbench. That is the most minimal system available. Most of the hardware is emulated by the testbench.",
"type": "object",
Expand All @@ -9,7 +9,7 @@
],
"properties": {
"cluster": {
"$ref": "http://pulp-platform.org/snitch/snitch_cluster.schema.json"
"$ref": "http://pulp-platform.org/snitch_cluster/snitch_cluster.schema.json"
},
"dram": {
"title": "DRAM",
Expand Down
Loading

0 comments on commit 546c9ae

Please sign in to comment.