This articlemay contain confusing or ambiguousabbreviations. Please review theManual of Style, helpimprove this article, and discuss this issue on thetalk page.(November 2011) (Learn how and when to remove this message) |
| SIGNAL | |
|---|---|
| Paradigm | Dataflow,Declarative,Synchronous |
| Developer | Inria (Espresso team) |
| First appeared | 1980s |
SIGNAL is aprogramming language based on synchronizeddataflow (flows + synchronization): a process is a set of equations on elementary flows describing both data and control.[1]
The SIGNALformal model provides the capability to describe systems withseveral clocks[2][3] (polychronous systems) asrelational specifications. Relations are useful as partial specifications and as specifications ofnon-deterministic devices (for instance a non-deterministicbus) or external processes (for instance an unsafe car driver).
Using SIGNAL allows one tospecify[4] an application, to design anarchitecture, to refine detailed components down toRTOS[clarification needed] or hardware description. The SIGNAL model supports adesign methodology which goes fromspecification toimplementation, fromabstraction toconcretization, fromsynchrony toasynchrony.
SIGNAL has been mainly developed in INRIA Espresso team since the 1980s, at the same time as similar programming languages,Esterel andLustre.
The SIGNAL language was first designed forsignal processing applications in the beginning of the 1980s. It has been proposed to answer the demand of newdomain-specific language for the design ofsignal processing applications, adopting adataflow andblock-diagram style witharray andsliding window operators. P. Le Guernic, A. Benveniste, and T. Gautier have been in charge of the language definition. The first paper on SIGNAL was published in 1982, while the first complete description of SIGNAL appeared in the PhD thesis of T. Gautier. The symbolic representation of SIGNAL via z/3z (over [-1,0,1]) has been introduced in 1986. A full compiler of SIGNAL based on the clock calculus on hierarchy of Boolean clocks, was described by L. Besnard in his PhD thesis in 1992. The clock calculus has been improved later by T. Amagbegnon with the proposition of arborescent canonical forms.
During the 1990s, the application domain of the SIGNAL language has been extended into general embedded and real-time systems. The relation-oriented specification style enabled the increasing construction of the systems, and also led to the design considering multi-clocked systems, compared to the original single-clock-based implementation of Esterel and Lustre. Moreover, the design and implementation of distributed embedded systems were also taken into account in SIGNAL. The corresponding research includes the optimization methods proposed by B. Chéron, the clustering models defined by B. Le Goff, the abstraction and separate compilation formalized by O. Maffeïs, and the implementation of distributed programs developed by P. Aubry.
The Polychrony toolset is anopen-source development environment for critical/embedded systems based on SIGNAL, areal-time polychronousdataflow language. It provides a unifiedmodel-driven environment to perform design exploration by using top-down andbottom-updesign methodologies formally supported by design model transformations fromspecification toimplementation and fromsynchrony to asynchrony. It can be included inheterogeneous design systems with various input formalisms and output languages.
Polychrony is a set of tools composed of:
The SME (SIGNAL Meta under Eclipse) environment is afront-end of Polychrony in theEclipse environment based onModel-Driven Engineering (MDE) technologies. It consists of a set of Eclipse plug-ins which rely on theEclipse Modeling Framework (EMF). The environment is built around SME, ametamodel[7] of the SIGNAL language extended withmode automata[8] concepts.
The SME environment is composed of several plug-ins which correspond to: