SIGNAL (programming language)
Encyclopedia
SIGNAL is a programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

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

The SIGNAL formal model
Model of computation
In computability theory and computational complexity theory, a model of computation is the definition of the set of allowable operations used in computation and their respective costs...

 provides the capability to describe systems with several clocks
Multi-rate digital signal processing
Multi-rate signal processing studies digital signal processing systems which include sample rate conversion. Multirate signal processing techniques are necessary for systems with different input and output sample rates, but may also be used to implement systems with equal input and output rates.-...

  (polychronous systems) as relational specifications. Relations are useful as partial specifications and as specifications of non-deterministic
Nondeterministic programming
A nondeterministic programming language is a language which can specify, at certain points in the program , various alternatives for program flow...

 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
Architecture
Architecture is both the process and product of planning, designing and construction. Architectural works, in the material form of buildings, are often perceived as cultural and political symbols and as works of art...

, to refine detailed components down to RTOS or hardware
Hardware
Hardware is a general term for equipment such as keys, locks, hinges, latches, handles, wire, chains, plumbing supplies, tools, utensils, cutlery and machine parts. Household hardware is typically sold in hardware stores....

 description. The SIGNAL model supports a design methodology which goes from specification to implementation
Implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.-Computer Science:...

, from abstraction
Abstraction
Abstraction is a process by which higher concepts are derived from the usage and classification of literal concepts, first principles, or other methods....

 to concretization, from synchrony to asynchrony
Asynchrony
Asynchrony, in the general meaning, is the state of not being synchronized.* Asynchronous learning* Collaborative editing systemsIn specific terms of digital logic and physical layer of communication, an asynchronous process does not require a clock signal, in contrast with synchronous and...

.

SIGNAL has been mainly developed in INRIAEspresso team since 1980s, at the same time as Esterel
Esterel
Esterel is a synchronous programming language for the development of complex reactive systems. The imperative programming style of Esterel allows the simple expression of parallelism and preemption...

 and Lustre.

A brief history

The SIGNAL language was first designed for signal procesing applications
Digital signal processing
Digital signal processing is concerned with the representation of discrete time signals by a sequence of numbers or symbols and the processing of these signals. Digital signal processing and analog signal processing are subfields of signal processing...

 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
Digital signal processing
Digital signal processing is concerned with the representation of discrete time signals by a sequence of numbers or symbols and the processing of these signals. Digital signal processing and analog signal processing are subfields of signal processing...

, adopting a dataflow and block-diagram
Block diagram
Block diagram is a diagram of a system, in which the principal parts or functions are represented by blocks connected by lines, that show the relationships of the blocks....

 style with array
Array data type
In computer science, an array type is a data type that is meant to describe a collection of elements , each selected by one or more indices that can be computed at run time by the program. Such a collection is usually called an array variable, array value, or simply array...

 and sliding 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 Toolsets

The Polychrony toolset is an Open Source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 development environment for critical/embedded systems based on SIGNAL, a real-time
Real-time computing
In computer science, real-time computing , or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints...

 polychronous data-flow language. It provides a unified model-driven environment
Model-driven engineering
Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...

 to perform design exploration by using top-down and bottom-up
Top-down and bottom-up design
Top–down and bottom–up are strategies of information processing and knowledge ordering, mostly involving software, but also other humanistic and scientific theories . In practice, they can be seen as a style of thinking and teaching...

 design methodologies formally supported by design model transformations from specification to implementation
Implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.-Computer Science:...

 and from synchrony to asynchrony
Asynchrony
Asynchrony, in the general meaning, is the state of not being synchronized.* Asynchronous learning* Collaborative editing systemsIn specific terms of digital logic and physical layer of communication, an asynchronous process does not require a clock signal, in contrast with synchronous and...

. It can be included in heterogeneous design systems with various input formalisms and output languages.
Polychrony is a set of tools composed of:
  • A SIGNAL batch compiler
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

  • A Graphical User Interface
    Gui
    Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

     (editor + interactive access to compiling functionalities)
  • The Sigali tool, an associated formal system for formal verification
    Formal verification
    In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics .- Usage :Formal verification can be...

     and controller synthesis
    Supervisory control
    Supervisory control is a general term for control of many individual controllers or control loops, whether by a human or an automatic control system, although almost every real system is a combination of both...

    . Sigali is developed together with the |INRIA Vertecs project.

The SME environment

The SME (SIGNAL Meta under Eclipse) environment is a front-end of Polychrony in the Eclipse
Eclipse
An eclipse is an astronomical event that occurs when an astronomical object is temporarily obscured, either by passing into the shadow of another body or by having another body pass between it and the viewer...

 environment based on Model-Driven Engineering
Model-driven engineering
Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...

 (MDE) technologies. It consists of a set of Eclipse
Eclipse
An eclipse is an astronomical event that occurs when an astronomical object is temporarily obscured, either by passing into the shadow of another body or by having another body pass between it and the viewer...

 plug-ins which rely on the Eclipse Modeling Framework
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 (EMF). The environment is built around SME, a metamodel
Metamodeling
Metamodeling, or meta-modeling in software engineering and systems engineering among other disciplines, is the analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems...

 of the SIGNAL language extended with mode automata  concepts.
The SME environment is composed of several plug-ins which correspond to:
  • A reflexive editor: a tree
    Tree
    A tree is a perennial woody plant. It is most often defined as a woody plant that has many secondary branches supported clear of the ground on a single main stem or trunk with clear apical dominance. A minimum height specification at maturity is cited by some authors, varying from 3 m to...

     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
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

    , formal verification
    Formal verification
    In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics .- Usage :Formal verification can be...

    , etc).
  • A documentation
    Documentation
    Documentation is a term used in several different ways. Generally, documentation refers to the process of providing evidence.Modules of Documentation are Helpful...

     and model examples.

See also

  • Esterel
    Esterel
    Esterel is a synchronous programming language for the development of complex reactive systems. The imperative programming style of Esterel allows the simple expression of parallelism and preemption...

  • Lustre (programming language)
  • Synchronous programming language
    Synchronous programming language
    A synchronous programming language is a computer programming language optimized for programming reactive systems, systems that are often interrupted and must respond quickly. Many such systems are also called realtime systems, and are found often in embedded uses. The term 'reactive' is chosen to...

  • Dataflow programming
  • Programming Language
    Programming language
    A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

  • Globally asynchronous locally synchronous
    Globally asynchronous locally synchronous
    Globally asynchronous locally synchronous is a circuit that consists of a set of locally synchronous modules communicating with each other via asynchronous wrappers. Advantages include lower power consumption and electromagnetic interference...

  • Formal verification
    Formal verification
    In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics .- Usage :Formal verification can be...

  • Model checking
    Model checking
    In computer science, model checking refers to the following problem:Given a model of a system, test automatically whether this model meets a given specification....

  • Formal semantics of programming languages
    Formal semantics of programming languages
    In programming language theory, semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation...

  • AADL
  • Simulink
    Simulink
    Simulink, developed by MathWorks, is a commercial tool for modeling, simulating and analyzing multidomain dynamic systems. Its primary interface is a graphical block diagramming tool and a customizable set of block libraries. It offers tight integration with the rest of the MATLAB environment and...

  • Avionics
    Avionics
    Avionics are electronic systems used on aircraft, artificial satellites and spacecraft.Avionic systems include communications, navigation, the display and management of multiple systems and the hundreds of systems that are fitted to aircraft to meet individual roles...

  • System design
  • Asynchrony
    Asynchrony
    Asynchrony, in the general meaning, is the state of not being synchronized.* Asynchronous learning* Collaborative editing systemsIn specific terms of digital logic and physical layer of communication, an asynchronous process does not require a clock signal, in contrast with synchronous and...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK