Section: New Results
Automatic distribution of synchronous programs
Modular distribution of higher-order dataflow synchronous programs
Synchronous programming languages describe functionally centralized systems, where every value, input, output, or function are always directly available for every operation. However, most embedded systems are nowadays composed of several computing resources. The aim of this work is to provide a language-oriented solution to describe functionally distributed reactive systems. This is the topic of the PhD of Gwenaël Delaval, co-advised by Alain Girault and Marc Pouzet (University of Orsay, LRI).
In order to address this problem, we have extended a synchronous dataflow language with primitives for program distribution. These primitives allow the programmer, on one hand to describe the architecture of the system in terms of symbolic locations representing physical locations and links between them, and on the other hand to express where streams and expressions are located in this architecture.
First, a distributed semantics has been proposed in order to formalize the distributed execution of a program. Then, a type and effects system  , where types of values are their localizations, has been proposed in order to infer the localization of non-annotated values by means of type inference and to ensure, at compilation time, the consistency of the distribution. Finally, a projection operation allows us to obtain automatically, from a centralized typed program, the local program to be executed by each computing resource. The semantical equivalence of the centralized program and its distributed version through this projection operation has been proven.
This type system, as well as the projection operation, has been implemented within the Lucid Synchrone  compiler. This higher-order synchronous language allows the expression of stream of stream functions. The distribution method proposed is performed in a modular way, and thus fits with the compilation of such higher-order features. The aim is, by combining this distribution method together with higher-order features of this languages, to allow the expression of dynamic reconfiguration of a hardware resource by another by sending code through communication channels: such channels being then streams of stream functions.
Model-based development of fault-tolerant embedded systems, code generation for distributed heterogeneous platforms
In the domain of safety-critical embedded systems, tools like Matlab/Simulink (trademarks of The Mathworks Inc.) are available for the automatic generation of application code. However, system aspects like process management, communication, or fault-tolerance mechanisms are not covered by these tools, even though such aspects constitute an essential part of the whole code. We wish to extend the model-based design approach of Matlab/Simulink in order to generate automatically executable fault-tolerant code corresponding to a specific platform, possibly distributed and heterogeneous. The main idea of our work involves the translation of Simulink/Stateflow into the synchronous programming language Lustre, allowing its associated compilers, model-checkers, and abstract interpretation tools to be applied to Simulink/Stateflow designs.
A translating tool has been already developed in previous study  ,  . Our objective is to go ahead with this development and to improve it from the point of view of fault-tolerance and automatic code distribution algorithms. This will be achieved by adding new constructs to the synchronous language Lustre and by adding new features to the embedded code generation tool itself. This is the topic of the PhD of Mouaiad Alras, co-advised by Alain Girault and Pascal Raymond (CNRS, Verimag).