HOME

TheInfoList



OR:

Esterel is a synchronous programming language for the development of complex reactive systems. The
imperative programming In computer science, imperative programming is a programming paradigm of software that uses Statement (computer science), statements that change a program's state (computer science), state. In much the same way that the imperative mood in natural ...
style of Esterel allows the simple expression of parallelism and preemption. As a consequence, it is well suited for control-dominated model designs. The development of the language started in the early 1980s, and was mainly carried out by a team of Ecole des Mines de Paris and
INRIA The National Institute for Research in Digital Science and Technology (Inria) () is a French national research institution focusing on computer science and applied mathematics. It was created under the name French Institute for Research in Comp ...
led by Gérard Berry in France. Current compilers take Esterel programs and generate C code or hardware (RTL) implementations (
VHDL VHDL (Very High Speed Integrated Circuit Program, VHSIC Hardware Description Language) is a hardware description language that can model the behavior and structure of Digital electronics, digital systems at multiple levels of abstraction, ran ...
or
Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits, with the highest level of abstraction being at the re ...
). The language is still under development, with several compilers out. The commercial development environment of Esterel is Esterel Studio. The company that commercialized it
Synfora
initiated a normalization process with the
IEEE The Institute of Electrical and Electronics Engineers (IEEE) is an American 501(c)(3) organization, 501(c)(3) public charity professional organization for electrical engineering, electronics engineering, and other related disciplines. The IEEE ...
in April 2007 however the working group (P1778) dissolved March 2011. The reference manual is publicly available. A provisional version of Esterel has been implemented in Racket.


The multiform notion of time

The notion of time used in Esterel differs from that of non-synchronous languages in the following way: The notion of physical time is replaced with the notion of order. Only the simultaneity and precedence of events are considered. This means that the physical time does not play any special role. This is called multiform notion of time. An Esterel program describes a totally ordered sequence of logical instants. At each instant, an arbitrary number of events occur (including 0). Event occurrences that happen at the same logical instant are considered simultaneous. Other events are ordered as their instances of occurrences. There are two types of statements: Those that take zero time (execute and terminate in the same instant) and those that delay for a prescribed number of cycles.


Signals

Signals are the only means of communication. There are valued and non-valued signals. They are further categorized as being input, output, or local signals. A signal has the property of being either present or absent in an instant. Valued signals also contain a value. Signals are broadcast across the program, and that means any process can read or write a signal. The value of a valued signal can be determined in any instant, even if the signal is absent. The default status of a signal is absent. Signals remain absent until they are explicitly set to present using the emit statement. Communication is instantaneous, that means that a signal emitted in a cycle is visible immediately. Note that one can communicate back and forth in the same cycle.


Signal coherence rules

* Each signal is only present or absent in a cycle, never both. * All writers run before any readers do. Thus present A else emit A end is an erroneous program, since the writer "emit A" should run before the reader "present A", whereas this program requires "present A" to be performed first.


The language statements


Primitive Esterel statements

Pure Esterel has eleven primitive statements.


Derived Esterel statements

Esterel has several derived constructions:


Other Esterel statements

The full Esterel language also has statements for declaring and instantiating modules, for variables, for calling external procedures, and for valued signals.


Example (ABRO)

The following program emits the output O as soon as both inputs A and B have been received. Reset the behaviour whenever the input R is received. module ABRO: input A, B, R; output O; loop , await B emit O each R end module


Advantages of Esterel

* Model of time gives programmer precise control * Concurrency convenient for specifying control systems * Completely deterministic * Finite-state language ** Execution time predictable ** Much easier to verify formally * Can be implemented in hardware as well as in software


Disadvantages of Esterel

* Finite-state nature of the language limits flexibility (but expressivity is sufficient for the chosen application field) * Semantic challenges ** Avoiding causality violations is often difficult ** Difficult to compile in the general case, but simple correctness criteria exist


See also

* Lustre, a cousin programming language *
SIGNAL A signal is both the process and the result of transmission of data over some media accomplished by embedding some variation. Signals are important in multiple subject fields including signal processing, information theory and biology. In ...
, a dataflow-oriented synchronous language enabling multi-clock specifications * Esterel Technologies, developer of Esterel Studio and other tools *
Parallel programming model In computing, a parallel programming model is an abstraction of parallel computer architecture, with which it is convenient to express algorithms and their composition in programs. The value of a programming model can be judged on its ''generalit ...


References

{{reflist


External links


The Esterel Language
at Inria
The Columbia Esterel Compiler
an open-source compiler Synchronous programming languages Hardware description languages