Skip to content

Commit

Permalink
sw: Add a README
Browse files Browse the repository at this point in the history
  • Loading branch information
suehtamacv committed Aug 24, 2023
1 parent bf6b09a commit 9342bf3
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions sw/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Spatz Software

This subdirectory contains the various bits and pieces of software for the Spatz ecosystem.

## Contents

### Libraries

- `cmake`: Bits and pieces for integration with the CMake build system.
- `riscvTests`: Contains small RISC-V tests, meant to test the several instructions supported by Snitch and Spatz.
- `snRuntime`: The fundamental, bare-metal runtime for Snitch systems. Exposes a minimal API to manage execution of code across the available cores and clusters, query information about a thread's context, and to coordinate and exchange data with other threads. This is heavily based on Snitch's own [runtime](https://github.com/pulp-platform/snitch/tree/master/sw/snRuntime), with some adaptations for Spatz.

### Tests

- `spatzBenchmarks`: Benchmarking executables that evaluate the performance characteristics of Spatz. Most binaries should work on any Spatz-based configuration, although some are configuration-specific (e.g., the `dp-fft` kernel only works with two cores).

### Third-Party

The `toolchain` directory contains third-party tools that we inline into this repository for ease of use.

- `toolchain/llvm-project`: A patched LLVM 14 installation with support for RISC-V's Vector Extension and Spatz-specific instructions (e.g., SDOTP).
- `toolchain/riscv-gnu-toolchain`: A patched GCC installation with support for RISC-V's Vector Extension. We use this mainly for libstdc++. This repository compiles all binaries with Clang, and does not support a GCC-based compilation flow.
- `toolchain/riscv-isa-sim`: A Spike installation, used for disassembling the core traces.
- `toolchain/riscv-opcodes`: Utilities to manage instruction encodings and generate functions and data structurse for parsing and representation in various languages.
- `toolchain/verilator`: An updated Verilator installation, with which we guarantee the verilation of Spatz-based systems.

0 comments on commit 9342bf3

Please sign in to comment.