MIME-Version: 1.0
Server: CERN/3.0
Date: Monday, 06-Jan-97 21:38:05 GMT
Content-Type: text/html
Content-Length: 2881
Last-Modified: Monday, 11-Mar-96 06:47:52 GMT
Esterel and its Compiler
The Esterel language
Esterel is a synchronous programming language for reactive
systems. Esterel has a precisely defined mathematical semantics
intended for programming the class of deterministic reactive systems
that wait for a set of possibly simultaneous inputs, react to the
inputs by computing and producing outputs, and then quiesce, waiting
for new inputs. Esterel is based on the ``synchrony hypothesis,''
which stipulates that every reaction to a set of inputs is considered
to be instantaneous. The programming model in Esterel is the
specification of components, or modules, that run in parallel.
Modules communicate with each other and the outside world through
signals, which are broadcast and may carry values of arbitrary types.
Consistent with the synchrony hypothesis, the emission and reception
of signals is considered to be instantaneous.
Esterel allows only deterministic behaviors to be specified: the
inputs to every reaction (and the current values of variables) fully
determine the outputs emitted in that reaction as well as the
input-output behavior of the rest of the program. Along with the
synchrony hypothesis, both communication and pre-emption preserve
determinism. Furthermore, all internal communication is compiled
away, and a single deterministic finite state machine is generated by
the compiler. Thus, the parallelism in Esterel is a structuring tool
for programming convenience, and does not incur any run-time overhead
--- the compiler automatically performs the complex interleaving
between parallel modules. Furthermore, since this implementation is
a finite state machine, the maximum amount of time taken by any
reaction can be accurately bounded if the execution times of the
transitions are known.
The compilers
Esterel has efficient compiler implementations based on
well-defined mathematical semantics. These are two implementations:
- The CMA Esterel compiler is provided by the Ecole des Mines de Paris (CMA)
and INRIA, and written by
Jean-Paul Rigault, Jean-Marc Tanzi, Frederic Mignard and
Jean-Pierre Paris. It can be obtained by contacting <esterel-request@cma.cma.fr>.
This is the Esterel home compiler.
- Stephen
Edwards has written a non-commercial Esterel compiler,
available through ftp
(~27Kb). (Note however some of the tools in TempEst will most
likely not work with this compiler.)