The ForSyDe Ecosystem

While built to support our publications, the ForSyDe tools create an ecosystem which is aligned to our vision of correct-by-construction system design. These are continuously developed and distributed as open-source projects, and our developer and user base is growing. This page presents some of the highlighted tools, grouped by their main purpose.

Modeling & Simulation


Build statusDevelopment status

ForSyDe-Shallow is a formal framework for modeling and simulating heterogeneous and cyber-physical systems as networks of MoC-bound processes. It is implemented as a shallow-embedded domain specific language (EDSL) in the functional programming language Haskell and is shipped as a set of Haskell libraries and examples.


Build statusDevelopment status

ForSyDe-Atom is a spin-off from ForSyDe-Shallow which further explores the power of functional programming as a system design paradigm. Apart from timing behavior, it enables designers to capture other extra-functional properties (e.g. structured parallelism, control behavior) by enforcing a design methodology of systems as interacting layers. Like its parent project, it is implemented as a shallow-embedded domain specific language (EDSL) in the functional programming language Haskell and is shipped as a set of Haskell libraries and examples.


Development status

ForSyDe-SystemC is another modeling framework for heterogeneous systems based on the theory of MoCs. Apart from using the host language for simulation purpose, it uses the concept of introspection to dump structural data into an intermediate representation which can be fed to DSE and synthesis tools. It is implemented as a shallow-embedded domain specific language (EDSL) in the IEEE standard language SystemC and is shipped as a set of C++ header libraries and demonstrators.

Currently the ForSyDe-SystemC framework and associated tools are developed under the supervision of Seyed-Hosein Attarzadeh-Niaki at Shahid Beheshti University, Iran. Information on the ForSyDe web site may be lagging behind current development, so please check Hosein’s homepage for the latest news.

Reactive GPAC

Development status

Reactive GPAC is the newest addition to the ForSyDe ecosystem. Inspired from functional reactive programming, it approaches system design from a different perspective than the previous frameworks. Focusing mainly on continuous time systems, it describes a General Purpose Analog Computer (GPAC) as a set of basic blocks capable of deriving commonly used analog systems.

Transformation & Design Space Exploration


Development status

DeSyDe is the main design space exploration (DSE) tool in the ForSyDe ecosystem, based on constraint programming techniqes. It takes a set of application models (e.g. SDF3 graphs, periodic tasks), a platform model (e.g. TDMA-bus or TDN-NoC based multiprocessor systems), a set of constraints and optimization criteria (e.g. throughput, area, monetary cost, power consumption), and explores the full design space generated to find an optimal or satisfying mapping. It is implemented as a C++ project using GeCode as the main CP solver, and is shipped as a binary application.


Development status

f2sdf3 is an XSLT script for transforming the intermediate representations dumped by ForSyDe-SystemC into SDF3 graphs representations, to be further fed to DeSyDe. Once the functionality is embedded into DeSyDe, this project will be discontinued.

Synthesis & Compilation


Build statusDevelopment status

ForSyDe-Deep is the deep-embedded counterpart of ForSyDe-Shallow. It uses Haskell’s type system to represent process networks as netlists which can be parsed and either simulated or compiled. It currently synthesizes a subset of the synchronous MoC into VHDL code and deploys it on an FPGA board. It is shipped as a set of Haskell libraries for modeling.


Development status

f2cc is a synthesis tool for GPGPUs. It takes an application model (intermediate representation of a ForSyDe process network dumped by ForSyDe-SystemC), it identifies parallel sections, performs a heuristic mapping based on a platform model, and synthesizes either CUDA or sequential C code. It is implemented as a C++ project and is shipped as a binary application.

Visualization & User Interface


Development status

ForSyDe-LaTeX is a collection of (La)TeX/TikZ/PGF style packages that were developed as an effort to standardize symbols and graphical primitives in documents related to the ForSyDe methodology. It is mainly used to draw visual depictions of the ForSyDe process networks and to plot data dumped by ForSyDe signals.


Development status

f2dot is a visualization tool for plotting DOT graphs from the XML intermediate representation of ForSyDe-SystemC and SDF3. It is implemented as a Python project and is shipped as a binary application.


Development status

ForSyDe-Eclipse uses the model-driven engineering solutions provided by the Eclipse Modeling Framework (EMF) such as graphical modeling, model transformation and code generation to implement and facilitate ForSyDe modeling and design flows.