Skip to content

Latest commit

 

History

140 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sylva   Rustc Version 1.88+ MiniZinc Version 2.9.0+ riscv-gnu-toolchain 2026.03.13+ bender Version 0.30.0+ Questa Version 2023.4+

Tool suite for Application-Level Synthesis (ALS).

Overview

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:

  1. 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).
  2. 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.

Repository layout

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.

Getting the sources

git clone --recurse-submodules https://github.com/silagokth/sylva-suite.git
# or, if already cloned:
git submodule update --init --recursive

Dependencies

apt install -y \
 build-essential \
 pkg-config \
 libfontconfig1-dev

Compile and Install

  1. Build Sylva

    ./setup.sh
  2. Create test example (minimum, copy, sobel, and lenet5)

    ./bin/config --name {example} --output ./config/

Quick Run

To run Sylva Design-Space-Exploration

./run_dse.sh

To run Sylva assembly

./run_asm.sh

Usage

This project is developed and tested on Linux (Ubuntu). It relies on standard Unix utilities and may not work on non-Unix systems without modification.

Operating System

  • Ubuntu 22.04 / 24.04 (or compatible Linux distribution)

Requirements

Commands

sv-dse

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 version

sv-sim

Arguments to locate JSON files

Usage: sv-sim --dir <DIR>

Options:
      --dir <DIR>  Directory containing the files
  -h, --help       Print help
  -V, --version    Print version

sv-asm

Arguments 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 version

config

Usage: 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 version

Note: sv-asm additionally needs --sylva-components <PATH> pointing at the sylva-components submodule, which it uses during control synthesis. The provided run_asm.sh passes ./sylva-components/.

Documentation

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).

About

ALS for Silago

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages