Esterel

Esterel is a synchronous imperative programming language whose origin is attributed to the early 80s and the cooperation of several scientists ( among others Gérard Berry ).

Origin

Esterel arose from dissatisfaction of two researchers, Jean -Paul Marmorat and Jean-Paul Rigault in the development of robotic cars. They recognized the need for special statements on the use of time, especially time delays and Preemption (removal of " components " ), and found that the repetition of a signal should count as a separate unit of time. After some important developments 1987-1988 Esterel was v3. Larger programs, however, were so difficult because there has often been an explosion of states. For temporary solution auxiliary programs have been developed to avoid this. In 1992, the Esterel v4 compiler, which eliminated the problem of state explosion in principle. Further developments led to the now current Esterel v5 compiler. Esterel is sold commercially since the 90s, currently with Esterel Studio, developed by the French company Esterel Technologies. Esterel can be implemented as a hardware - software combination or as hardware-only solution either.

Semantics

Since at any time determinable time does not exist or Esterel is based on the multi -form time, the time is determined by events (events ), the lowest unit of time is a tick or instant. Will only respond to sensors or signals. This arbitrary units are used, for example, Minutes, meters, degrees. The frequency of reception of a signal determines the actual value, eg 100 meters. Sensors are used to receive values ​​, signals can be sent and received. Signals are divided into pure ( no value) and value- sensitive ( with value ).

Esterel programs are not even able to run and require a host language from which an import of data types is possible. Esterel has no own complex data types ( only simple integer ) and is in contrast to Lustre for control - intensive systems more suitable than for data intensive. Signals are usually preferable variables because queries a variable value lines of code and thus runtime required signals are not. Another special peculiarity are combined signal. The signal values ​​which are transmitted at the same time can be added by the receiver. This leads to savings of command execution time, which would otherwise increase with each subsequent addition query.

Modules, internal operations ( engl. nested operations) and exception handling (English exceptions ) are also important components of Esterel dar. modules can be placed anywhere. Internal operations can be nested in order of priority, the outermost nesting is given the highest priority. In conjunction with exceptions obtained processes, which can be interrupted at any time. Stepping into several nested program segments Exceptions on, only the outermost exception is executed. Broadcasting is also essential, that is the main communication between the processes. Neither the receiver nor the transmitter must know who sends or receives a signal. This is decided only at runtime and without loss of efficiency. It may also external tasks from the host language are performed.

The next module, similar to AVERAGE demonstrates to the advantage of running processes interrupt constantly:

Modules COUNTER:    input INCREMENT_COUNTER (integer), DONT_COUNT ( integer);    output COUNTER_VALUE;    var COUNTER_VALUE: = 0: integer in       abortion          every immediate INCREMENT_COUNTER do             COUNTER_VALUE: = COUNTER_VALUE 1;                emit COUNTER_VALUE                   end       When one DONT_COUNT    end module COUNTER_VALUE is initialised to 0. Upon each reception of INCREMENT_COUNTER COUNTER_VALUE is incremented by 1 and transmitted with the new counter value is emitted. If the module receives the other hand, at the same time next INCREMENT_COUNTER as a DONT_COUNT signal is executed an exception to abort and ignore the inner section of code.

Optimization

The Esterel compiler is very efficient. The attempt to minimize hand- existing code turns out to be unnecessary. The compiler translates each program into an equivalent sequential (linear) machines, bringing only increases the compilation time.

Verification

Due to the deterministic automata verification is simplified. A used for the verification tool would Verification AUTO.

Compilation

Esterel code can be compiled either as a whole machine or multiple machines communicating part. Both options have advantages. A whole machine needs more space, but saves time. Several molding machines save the form as a module space, the time required shall be increased by more communication overhead. Modifications of a program code by removing a module, this is not or hardly any other modules affects mostly. However, the compile time is shortened. C code can be generated, which is integrated in the host language. Similarly, the translation is possible in the OC format. Commercial programs also generate VHDL, etc.

Simulation

The Esterel v5 compiler starts with the- simul option a simulation. This can be entered via the terminal. Existing graphics-based applications simplify the input and reading output values ​​. Similarly, trace options can be used. Generated C code ( embedded in the host language ) can be performed. It must nevertheless be noted that for operating systems different resolutions of time units are (System V: 1s, BSD 4.3: 1/60s ), thus time-critical simulations are hardly possible.

317317
de