HOME

TheInfoList



OR:

Esterel is a
synchronous programming language A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems can be sorted in three main classes: (1) transformational systems that take some inputs, process them, deliver their ...
for the development of complex reactive systems. The
imperative programming In computer science, imperative programming is a programming paradigm of software that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program c ...
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 Mines Paris - PSL, officially École nationale supérieure des mines de Paris (until May 2022 Mines ParisTech, also known as École des mines de Paris, ENSMP, Mines de Paris, les Mines, or Paris School of Mines), is a French grande école and a c ...
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 ''Institut de recherche en informatiq ...
led by
Gérard Berry Gérard Philippe Berry (born 25 December 1948) is a French computer scientist, member of the French Academy of Sciences (Académie des sciences), French Academy of Technologies (Académie des technologies), and Academia Europaea. He was the Chie ...
in France. Current compilers take Esterel programs and generate C code or hardware (RTL) implementations (
VHDL The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gates ...
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 at the register-transfer level of abstraction. It is also ...
). The language is still under development, with several compilers out. The commercial version of Esterel is the development environment
Esterel Studio 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. As a consequence, it is well suited for contr ...
. The company that commercialize it
Synfora
initiated a normalization process with the
IEEE The Institute of Electrical and Electronics Engineers (IEEE) is a 501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operation ...
in April 2007 however the working group (P1778) dissolved March 2011. Th
Esterel v7 Reference Manual Version v7 30 – initial IEEE standardization proposal
is publicly available.


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 In the design of programming languages, an erroneous program is one whose semantics are not well-defined, but where the language implementation is not obligated to signal an error either at compile or at execution time. For example, in Ada: :In ...
: the writer "emit A" must run before the reader "present A", but this program asks the "present A" to be performed first.


The language constructs


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 Lustre or Luster may refer to: Places * Luster, Norway, a municipality in Vestlandet, Norway ** Luster (village), a village in the municipality of Luster * Lustre, Montana, an unincorporated community in the United States Entertainment * '' ...
, a cousin programming language *
SIGNAL In signal processing, a signal is a function that conveys information about a phenomenon. Any quantity that can vary over space or time can be used as a signal to share messages between observers. The ''IEEE Transactions on Signal Processing'' ...
, a dataflow-oriented synchronous language enabling multi-clock specifications *
Esterel Technologies Esterel Technologies is a supplier of model-based design, validation, and code generation tools for safety-critical software and hardware applications. Esterel's tools create formal specifications that produce control designs code in software a ...
, 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 ''generality ...


References

{{reflist


External links


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