Jump to content

SIGNAL (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mabdul (talk | contribs) at 12:10, 26 July 2011 (Added {{wikify}} tag to article (TW)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

SIGNAL is a programming language based on synchronized data-flow (flows + synchronization): a process is a set of equations on elementary flows describing both data and control.[1]

The SIGNAL formal model provides the capability to describe systems with several clocks [2] [3] (polychronous systems) as relational specifications. Relations are useful as partial specifications and as specifications of non-deterministic devices (for instance a non-deterministic bus) or external processes (for instance an unsafe car driver).

Using SIGNAL allows to specify an application, to design an architecture, to refine detailed components downto RTOS or hardware description. The SIGNAL model supports a design methodology which goes from specification to implementation, from abstraction to concretization, from synchrony to asynchrony.

SIGNAL has been mainly developed in INRIAEspresso team since 1980s, at the same time as Esterel and Lustre.

A brief history

The SIGNAL language was first designed for signal procesing applications in the beginning of 1980s. It has been proposed to answer the demand of new domain-specific language for the design of signal processing applications, adopting a dataflow and block-diagram style with array and sliding window operators. Paul Le Guernic, Albert Benveniste, and Thierry Gautier have been in charge of the language definition. The first paper on SIGNAL was published in 1982, while the first complete definition of SIGNAL appeared in the PhD thesis of Thierry Gautier.

The Polychrony Toolsets

Polychrony is an integrated development environment and technology demonstrator. It provides a unified model-driven environment to perform embedded systems design exploration by using top-down and bottom-up design methodologies formally supported by design model transformations from specification to implementation and from synchrony to asynchrony.

The Polychrony toolset, based on SIGNAL, provides a formal framework:

The principle application areas for the SIGNAL language are that of embedded, real-time, critical systems. Typical domains include:

It constitutes a development environment for critical systems, from abstract specification until deployment on distributed systems. It relies on the application of formal methods, allowed by the representation of a system, at the different steps of its development, in the SIGNAL polychronous semantic model.

Based on the same polychronous principles, there is a commercial tool, RT-Builder (Sildex), provided by the Geensys company.

Polychrony is a set of tools composed of:

The SME environment

The SME (SIGNAL Meta under Eclipse) environment is a front-end of Polychrony in the Eclipse environment based on Model-Driven Engineering (MDE) technologies. It consists of a set of Eclipse plug-ins which rely on the Eclipse Modeling Framework (EMF). The environment is built around SME, a metamodel [7]of the SIGNAL language extended with mode automata [8] concepts.


The SME environment is composed of several plug-ins which correspond to:

  • A reflexive editor: a tree view allowing to manipulate models conform to the SME metamodel.
  • A graphical modeler based on the TopCased] modeling facilities (cf. previous picture).
  • A reflexive editor and an Eclipse view to create compilation scenarios.
  • A direct connection to the Polychrony services (compilation, formal verification, etc).
  • A documentation and model examples.

See also

Notes and references

  1. ^ P. Le Guernic, T. Gautier, M. Le Borgne, and C. Le Maire. Programming Real-Time Applications with SIGNAL. Proceedings of the IEEE, 79(9): 1321-1336, September 1991.
  2. ^ P. Le Guernic, J.-P. Talpin, and J.-C. Le Lann. Polychrony for system design. Journal for Circuits, Systems and Computers, Special Issue on Application Specific Hardware Design, World Scientific, April 2003 (also available as INRIA Research Report 4715, 2003).
  3. ^ A. Gamatié and T. Gautier. The SIGNAL Synchronous Multiclock Approach to the Design of Distributed Embedded Systems. IEEE Transactions on Parallel and Distributed Systems, 21(5): 641-657, May 2010.
  4. ^ L. Besnard, T. Gautier, P. Le Guernic, and J.-P. Talpin. Compilation of Polychronous Data Flow Equations. In Synthesis of Embedded Software, S. K. Shukla and J.-P. Talpin, Eds, Springer, 2010, 1-40.
  5. ^ A. Benveniste, P. Bournai, T. Gautier, M. Le Borgne, P. Le Guernic, and H. Marchand. The Signal declarative synchronous language: controller synthesis & systems/architecture design. 40th IEEE Conference on Decision and Control, 2001.
  6. ^ H. Marchand, P. Bournai, M. Le Borgne, P. Le Guernic, Synthesis of Discrete-Event Controllers based on the Signal Environment, Discrete Event Dynamic System: Theory and Applications, 10(4):325-346, October 2000.
  7. ^ C. Brunette, J.-P. Talpin, A. Gamatié, and T. Gautier. A Metamodel for the Design of Polychronous Systems. Journal of Logic and Algebraic Programming, 78(4): 233-259, Elsevier, April 2009.
  8. ^ J.-P. Talpin, C. Brunette, T. Gautier, and A. Gamatié. Polychronous mode automata. Proceedings of the 6th ACM & IEEE International conference on Embedded software (EMSOFT '06), ACM Press, October 2006, 83-92.