Synchronous Programming Techniques: from Research to Industry
Chief Scientist, Esterel Technologies
Synchronous programming languages were born in the 80's
to deal with reactive systems. They describe cycle-base computations,
where the cycle can be of various kinds: sampling cycle for
signal and continuous control applications, interaction cycle for
state machines, clock cycle for hardware circuits. Within a cycle,
computation is assumed zero-delay. Cycle-base synchrony is
mathematically simple and compositional by nature. It
makes it possible to build concurrent systems whose behavior
remains fully deterministic, unlike for more classical
asynchronous techniques.
Synchronous languages originally came in two flavors: data-flow based
(Lustre, Signal) and control-flow based (Esterel, SyncCharts, Reactive C).
These two flavors are now unified in two industrial products, SCADE
and Esterel Studio. SCADE is devoted to certified safety-critical
applications in avionics and automotive. It is extensively used
by companies such as Airbus and Eurocopter for flight control and
numerous other functions. Esterel Studio is devoted to hardware
circuit design. It is used by companies such as Texas Instruments
and Philips.
In the talk, we concentrate on the interaction between the scientific
aspects of synchronous languages and their industrial usage.
Synchronous languages and tools are strongly based on the mathematical
semantics of synchrony and are linked to formal verification engines,
which makes them very rigorous. However, for industrial applications,
rigor is not enough.Tools must fit into complex verification or
certification flows. In particular, we discuss cosimulation and generated
code traceability, which are key practical issues. We also briefly discuss
current extensions of the synchronous models to distributed systems
and multiclock circuits, which become the rule.