Directory Structure
The project is organized as a monolithic repository. Both hardware and software are co-located. The top-level ist structured as follows:
docs
: Documentation of the generator and software. Contains additional user guides.hw
: All hardware IP components.sw
: Hardware independent software, libraries, runtimes etc.target
: Contains the testbench setup, cluster configuration specific hardware and software, libraries, runtimes etc.util
: Utility and helper scripts.
Hardware hw
Directory
The hw
directory contains various HW IPs which are instantiated in the Snitch Cluster design e.g., they are not stand-alone.
Some of the IPs have stand-alone test benches. All IPs inside the hw
directory are structured as follows:
<ip_name>
: each directory contains one IP that is instantiated in the cluster design, e.g., they are not stand-alone.doc
: documentation if existingsrc
: RTL sourcestest
: Standalone testbenches if existingutil
: Helper scripts to run standalone test benches if existing
Software sw
Directory
This subdirectory contains the various bits and pieces of software for the Snitch ecosystem.
Libraries
applications
: Contains applications and kernels, mostly NN-related with SW testbenches for performance profiling.cmake
: Bits and pieces for integration with the CMake build system.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. Hardware configuration dependent implementations of thesnRuntime
can be found, e.g., undertarget/snitch_cluster/sw/snRuntime
.snBLAS
: A minimal reference implementation of the basic linear algebra subprograms that demonstrates the use of Snitch and its extensions.
Tests
benchmark
: Benchmarking executables that evaluate the performance characteristics of a system.test
: Unit tests for various aspects of a system, including the instruction set extensions. These complement the library-specific unit tests that live within the library directories proper.
Third-Party
The deps
directory contains third-party tools that we inline into this repository for ease of use.
deps/riscv-opcodes
: Utilities to manage instruction encodings and generate functions and data structurse for parsing and representation in various languages.deps/printf
: A printf / sprintf implementation for embedded systems.
Target target
Directory
This subdirectory contains the supported systems and their simulation environment including testbenches and bootrom.
shared
: contains the shared fesvr related testbench components.snitch_cluster
cfg
: containing the configuration files*.hsjon
.generated
: contains the generatedbootdata.cc
and RTL wrapper for the snitch clustersnitch_cluster_wrapper.sv
.src
: contains the Banshee configuration for the snitch cluster.sw
: contains all sharedapps
: contains applications for the snitch cluster.runtime
: contains the HW specific runtime implementation for the snitch cluster.rtl
: RTL-related startup implmentations.banshee
: Banshee-related startup SW implmentations.
tests
: lists of tests that can run on the snitch cluster.test
: contains testharness and bootrom of the snitch cluster