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, in activity and alphabetical orders, along the main activities in the design flow they are involved in.
ForSyDe-Atom
Activities: Modeling, Simulation
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.
ForSyDe-IO
Activities: Modeling, Design Space Exploration, Synthesis
ForSyDe-IO is ForSyDe’s system-level exchangeable model specification and its supporting libraries.
ForSyDe-LaTeX
Activities: Visualization
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.
ForSyDe-Shallow
Activities: Modeling, Simulation
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.
ForSyDe-SystemC
Activities: Modeling, Simulation
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.
IDeSyDe
Activities: Design Space Exploration
IDeSyDe is design space exploration (DSE) framework centered around the design space identification approach.
DeSyDe
Activities: Design Space Exploration
DeSyDe is the previous 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.
f2dot
Activities: Visualization
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.
f2sdf3
Activities: Modeling
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.
f2cc
Activities: Synthesis
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.
ForSyDe-Deep
Activities: Modeling, Simulation, Synthesis
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.
ForSyDe-Eclipse
Activities: Modeling, Visualization, Synthesis
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.
Reactive GPAC
Activities: Modeling, Simulation
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.