Esterel
Encyclopedia
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 very 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 led by Gérard Berry
. Current compilers take Esterel programs and generate C code
or hardware (RTL) implementations (VHDL or Verilog
).
The language is still under development, with several compilers out. The commercial version of Esterel is the development environment Esterel Studio
. The company that commercialize it (Synfora) has initiated a normalization process with the IEEE. The Esterel v7 Reference Manual Version v7 30 – initial IEEE standardization proposal is publicly available.
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.
Thus
present A else
emit A
end
is an erroneous program.
module ABRO:
input A, B, R;
output O;
loop
[ await A || await B ];
emit O
each R
end module
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...
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....
for the development of complex reactive systems. The imperative programming
Imperative programming
In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state...
style of Esterel allows the simple expression of parallelism
Parallel computing
Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently . There are several different forms of parallel computing: bit-level,...
and preemption
Preemption (computing)
In computing, preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task at a later time. Such a change is known as a context switch...
. As a consequence, it is very 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 led by Gérard Berry
Gérard Berry
Gérard Philippe Berry is a French computer scientist, member of French Academy of Sciences , French Academy of Technologies , and Academia Europaea. He was the Chief Scientist Officer of Esterel Technologies from 2000 to 2009...
. Current compilers take Esterel programs and generate C code
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
or hardware (RTL) implementations (VHDL or Verilog
Verilog
In the semiconductor and electronic design industry, Verilog is a hardware description language used to model electronic systems. Verilog HDL, not to be confused with VHDL , is most commonly used in the design, verification, and implementation of digital logic chips at the register-transfer level...
).
The language is still under development, with several compilers out. The commercial version of Esterel is the development environment Esterel Studio
Esterel Studio
Esterel Studio is a design environment based on the Esterel language. It is optimized for hardware IPs dedicated at capturing formal design specifications, enabling formal verification of properties early in the design phase, and automating the production of synthesizable RTL , both for...
. The company that commercialize it (Synfora) has initiated a normalization process with the IEEE. The 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 presence 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.
Primitive Esterel statements
Pure Esterel has eleven primitive statements. nothing |
Terminates immediately with no other effect. |
pause |
Blocks control flow in the current cycle for resumption in the next cycle. |
p ; q |
Runs p until it terminates and then, in the same reaction, start q. |
p q |
Runs p and q in parallel |
loop p end |
Restart the body p as soon as it terminates. Every path through the loop body must contain at least one pause statement to avoid unbounded looping within a single reaction. |
signal S in p end |
Declares a local signal. |
emit S |
Make signal S present in the current instant. A signal is absent unless it is emitted. |
present S then p else q end |
If signal S is present in the current instant, immediately run p, otherwise run q. |
suspend p when S |
Suspends the execution of the body in instants where S is present. |
trap T in p end |
Declare a labeled escape block. |
exit T |
Jump to the end of the innermost T-labeled escape block. |
Derived Esterel statements
Esterel has several derived constructions:Derived statement | Expansion |
---|---|
halt |
loop pause end |
sustain s |
loop emit s; pause end |
present s then p end |
present s then p else nothing end |
await s |
trap T in loop pause; present s then exit T end end loop end |
await immediate s |
trap T in loop present s then exit T end; pause end loop end |
suspend p when immediate s |
suspend present s then pause end; p when s |
abort p when (immediate) s |
trap T in suspend p when s; exit T s; exit T; end |
weak abort p when (immediate) s |
trap T in p; exit T s; exit T; end |
loop s |
loop abort s end loop |
every (immediate) s do p end every |
await (immediate) s; loop p each s |
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 A || 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
- Esterel StudioEsterel StudioEsterel Studio is a design environment based on the Esterel language. It is optimized for hardware IPs dedicated at capturing formal design specifications, enabling formal verification of properties early in the design phase, and automating the production of synthesizable RTL , both for...
, an esterel IDE - the lustre programming languageLustre programming languageLustre is a formally defined, declarative, and synchronous dataflow programming language for programming reactive systems. It began as a research project in the early 1980s. In 1993 it progressed to practical, industrial use in a commercial product as the core language of the industrial environment...
, a cousin language. - SCADE
- Esterel TechnologiesEsterel TechnologiesEsterel 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 and/or hardware....
, the company behind Esterel Studio and SCADE. - SIGNAL (a dataflow-oriented synchronous language enabling multi-clock specifications)
- Hardware description languages
- Parallel programming modelParallel programming modelA parallel programming model is a concept that enables the expression of parallel programs which can be compiled and executed. The value of a programming model is usually judged on its generality: how well a range of different problems can be expressed and how well they execute on a range of...