Reactive Programming Language Applied to Automotive Functional Specification and Model-Based Design
Langage de Programmation Réactif Appliqué à la Spécification Fonctionnelle Automobile et la Conception par Modélisation
Résumé
The rapid growth of software-driven features, such as autonomous driving and advanced connectivity, is pushing traditional, distributed vehicle architectures to their limits. In response, the industry is moving to the Software-Defined Vehicle (SDV), a centralized architecture that reduces physical complexity and enables continuous software updates. This transition, however, introduces new software challenges. As observed at Ampère, the software division of the Renault Group, legacy toolchains based on periodic execution are ill-suited for the dynamic, data-intensive nature of SDV systems. To meet these new performance demands while mitigating the safety risks of large C codebases, Ampère is implementing new software in asynchronous Rust, leveraging its strong compile-time guarantees. However, this strategic shift to a low-level, asynchronous paradigm creates a critical abstraction gap for control engineers accustomed to model-based design. This thesis, the result of a CIFRE PhD in partnership with Ampère, addresses this challenge by introducing GRust, a Domain-Specific Language (DSL) for modelling automotive systems. GRust synthesizes two powerful programming paradigms, combining the deterministic, step-based structure of synchronous languages with the expressive capabilities of Functional Reactive Programming (FRP).This allows engineers to design systems that are both predictable and responsive, making temporal and data dependencies explicit within the model. We present the design of the GRust language and a compiler that generates safe and efficient asynchronous Rust code from these high-level models. Benchmarks demonstrate that this compilation strategy significantly reduces unnecessary computation and bus saturation compared to conventional periodic approaches. To satisfy stringent safety demands, we also introduce GReusot, a toolchain that enables the formal verification of GRust models, aligning with the requirements of the ISO 26262 standard. The language design is underpinned by a rigorous formal foundation. We define both operational and denotational semantics and establish key theorems of productivity, determinism, and their equivalence. This formalization guarantees the soundness of the language and the correct interoperability of its synchronous and asynchronous parts. By integrating high-level modelling, performance-oriented compilation, and formal verification, GRust provides a comprehensive solution for developing the next generation of automotive software. This work offers a pathway for the industry to harness the full potential of SDV architectures while maintaining the safety and reliability expected of critical systems.
La croissance rapide des fonctionnalités logicielles, telles que la conduite autonome et la connectivité avancée, pousse les architectures de véhicules traditionnelles et distribuées à leurs limites. En réponse, l'industrie s'oriente vers le véhicule défini par le logiciel (SDV), une architecture centralisée qui réduit la complexité physique et permet des mises à jour logicielles continues. Cette transition introduit cependant de nouveaux défis logiciels. Comme observé chez Ampère, la division logicielle du Groupe Renault, les chaînes d'outils traditionnelles basées sur une exécution périodique sont mal adaptées à la nature dynamique et gourmande en données des systèmes SDV. Pour répondre à ces nouvelles exigences de performance tout en atténuant les risques de sécurité des grandes bases de code C, Ampère implémente de nouveaux logiciels en Rust asynchrone, tirant parti de ses solides garanties à la compilation. Cependant, ce changement stratégique vers un paradigme asynchrone de bas niveau crée un fossé d'abstraction critique pour les ingénieurs de contrôle habitués à la conception basée sur des modèles. Cette thèse, fruit d'un doctorat CIFRE en partenariat avec Ampère, relève ce défi en introduisant GRust, un langage dédié (DSL) pour la modélisation des systèmes automobiles. GRust synthétise deux paradigmes de programmation puissants, combinant la structure déterministe et pas-à-pas des langages synchrones avec les capacités expressives de la programmation réactive fonctionnelle (FRP). Cela permet aux ingénieurs de concevoir des systèmes à la fois prévisibles et réactifs, en rendant les dépendances temporelles et de données explicites au sein du modèle. Nous présentons la conception du langage GRust et d'un compilateur qui génère du code Rust asynchrone sûr et efficace à partir de ces modèles de haut niveau. Les benchmarks démontrent que cette stratégie de compilation réduit considérablement les calculs inutiles et la saturation du bus par rapport aux approches périodiques conventionnelles. Pour satisfaire les exigences de sécurité strictes, nous introduisons également GReusot, une chaîne d'outils qui permet la vérification formelle des modèles GRust, en accord avec les exigences de la norme ISO 26262.La conception du langage s'appuie sur une base formelle rigoureuse. Nous définissons des sémantiques opérationnelles et dénotationnelles et établissons des théorèmes clés de productivité, de déterminisme et de leur équivalence. Cette formalisation garantit la solidité du langage et l'interopérabilité correcte de ses parties synchrones et asynchrones. En intégrant la modélisation de haut niveau, la compilation axée sur la performance et la vérification formelle, GRust fournit une solution complète pour le développement de la prochaine génération de logiciels automobiles. Ce travail offre une voie à l'industrie pour exploiter tout le potentiel des architectures SDV tout en maintenant la sécurité et la fiabilité attendues des systèmes critiques.
| Origine | Version validée par le jury (STAR) |
|---|---|
| licence |
