Programmation Réactive Synchrone et Esterel



Participants : Robert de Simone, Loïc Henry-Gréard, Fabrice Peix, Dumitru Potop, Annie Ressouche, Olivier Tardieu, Eric Vecchié.

Cette activité est un thème de collaboration avec l'équipe SPORTS de l'I3S (CNRS/UNSA), dirigée par Charles André.

Mots clés : Esterel, programmation réactive synchrone, sémantique, causalité, temps réel, compilation, optimisation, circuit digital, conception conjointe .

Résumé :

Le langage Esterel permet la programmation structurée de systèmes réactifs synchrones. La syntaxe impérative du langage est adaptée aux systèmes dominés par le contrôle. Elle repose sur des primitives spécifiques de parallélisme et de préemption hiérarchisée. La sémantique formelle permet la définition exacte des comportements de programmes, la traduction vers des formats adaptés à la synthèse de logiciel ou de matériel, l'optimisation de cette synthèse et la vérification de propriétés de programmes.

On désigne comme réactifs les systèmes dont la caractéristique principale est d'interagir avec leur environnement extérieur au rythme de cet environnement. Les systèmes réactifs synchrones s'appuient sur les notions d'horloge globale, de diffusion instantanée d'informations, de parallélisme déterministe et de préemption pour fournir un modèle de programmation cohérent et adapté. Esterel propose les primitives syntaxiques correspondantes, en complément d'un langage impératif traditionnel. Les opérations de manipulations de données sont reportées vers un langage hôte, par exemple C.

Les applications d'Esterel sont les contrôleurs temps-réel, les systèmes embarqués, les protocoles de communication, les interfaces homme-machine, les parties contrôle de circuits digitaux et, plus généralement, les systèmes réactifs dominés par le contrôle.

Le comportement d'un programme Esterel est défini par une sémantique mathématique formelle [1]. Un programme peut être compilé en un système d'équations booléennes avec mémoires, c'est-à-dire en un circuit synchrone. Cette traduction permet la synthèse directe de circuits électroniques ou la synthèse de programmes par tri des équations et traduction directe en C. Elle permet également d'établir une interface avec de nombreux systèmes de vérification formelle comme ceux développés dans le projet.

Le langage Esterel est désormais commercialisé par la société Esterel Technologies, avec laquelle nous entretenons des relations suivies de coopération.

Les recherches nouvelles autour du langage et de son modèle comportemental concernent :

Ces recherches sont de plus en plus fondées sur la définition d'une approche d'analyse par sémantique statique dédiée à la programmation synchrone.

Les développements théoriques conduisent à des algorithmes implantés dans des prototypes, pouvant aboutir à des extensions du compilateur Esterel v5. Des retours d'utilisateurs industriels ou universitaires viennent fréquemment susciter de nouvelles questions théoriques et pratiques concernant les méthodologies de conception et leurs besoins algorithmiques.