Tool suite for Application-Level Synthesis (ALS).
Sylva is the ALS layer of the SiLago framework. It
takes an application modelled as a Homogeneous Synchronous Dataflow (HSDF)
graph, together with a library of pre-characterised algorithm implementations
(AlImps, produced by the Vesyla HLS tool), and maps it onto a layout-aware
network of hardware blocks. The generated system — a host processor plus a network
of AlImps connected by output buffers, transporters and input buffers — is built
from the RTL in sylva-components
(included here as a git submodule).
The flow has two phases, each implemented as a binary:
- Design Space Exploration (
sv-dse) — binding, placement, routing, NoC wire synthesis and GLIC synthesis, optionally verified by the GLIC simulator (sv-sim). Produces an intermediate representation (db.bin). - Assembly (
sv-asm) — memory synthesis, re-routing, NoC resynthesis, TLB code generation, transporter code generation and control synthesis. Turns the abstract result into a hardware-realisable design (db_asm.bin).
The four worked examples are minimum, copy, sobel and lenet5.
| Path | Contents |
|---|---|
modules/ |
Rust workspace: sv-lib (shared model), sv-dse, sv-asm, sv-sim, and the config example generator. |
config/ |
Input configuration files for the current run. |
examples/ |
Compiled example application binaries (created by setup.sh). |
bin/ |
Built tool binaries (sv-dse, sv-asm, sv-sim, config). |
sylva-components/ |
RTL components submodule used by Assembly's control synthesis. |
git clone --recurse-submodules https://github.com/silagokth/sylva-suite.git
# or, if already cloned:
git submodule update --init --recursiveapt install -y \
build-essential \
pkg-config \
libfontconfig1-dev-
Build Sylva
./setup.sh
-
Create test example (minimum, copy, sobel, and lenet5)
./bin/config --name {example} --output ./config/
To run Sylva Design-Space-Exploration
./run_dse.shTo run Sylva assembly
./run_asm.shThis project is developed and tested on Linux (Ubuntu). It relies on standard Unix utilities and may not work on non-Unix systems without modification.
- Ubuntu 22.04 / 24.04 (or compatible Linux distribution)
bashcoreutils(providescp,mv,rm, etc.)make- rustc
- minizinc
- riscv-gnu-toolchain
- bender
- vsim
Arguments to get the configuration files and output directory
Usage: sv-dse [OPTIONS] --graph <GRAPH> --constraint <CONSTRAINT_FILE> --library <ALIMP_LIB> --parameter <HYPER_PARAMETER> --technology <TECHNOLOGY_CONSTRAINT> --output <OUTPUT>
Options:
--cpu <CPU_LIMIT> Set CPU limit
--memory <MEMORY_LIMIT> Set memory limit in GB
-g, --graph <GRAPH> SDF graph file
-c, --constraint <CONSTRAINT_FILE> global constraint file
-l, --library <ALIMP_LIB> alimp library file
-p, --parameter <HYPER_PARAMETER> hyper parameter file
-t, --technology <TECHNOLOGY_CONSTRAINT> technology constraint file
-o, --output <OUTPUT> output directory
-h, --help Print help
-V, --version Print versionArguments to locate JSON files
Usage: sv-sim --dir <DIR>
Options:
--dir <DIR> Directory containing the files
-h, --help Print help
-V, --version Print versionArguments to get the configuration files and output directory
Usage: sv-asm [OPTIONS] --intermediate-representation <IR_OBJECT> --sylva-components <SYLVA_COMPONENTS> --binary <OUTPUT>
Options:
--cpu <CPU_LIMIT> Set CPU limit
--memory <MEMORY_LIMIT> Set memory limit in GB
-i, --intermediate-representation <IR_OBJECT> Input Intermediate Representation Object
--sylva-components <SYLVA_COMPONENTS> Path to the Sylva components
-o, --binary <OUTPUT> output directory
-h, --help Print help
-V, --version Print versionUsage: config --name <NAME> --output <DIR>
Options:
-n, --name <NAME> name of the generating example
-o, --output <DIR> output directory
-h, --help Print help
-V, --version Print versionNote:
sv-asmadditionally needs--sylva-components <PATH>pointing at thesylva-componentssubmodule, which it uses during control synthesis. The providedrun_asm.shpasses./sylva-components/.
Conceptual documentation of each synthesis step, the input file formats and the hardware architecture lives in the SiLago documentation under ToolChain → Sylva ALS (https://silago.eecs.kth.se/docs).