Précédent : Logiciels Remonter : Projet EP-ATR, Environnement de
programmation Suivant : Actions industrielles
Nos thèmes de recherche introduits en ont donné lieu aux résultats
décrits dans les sections suivantes :
Participants : Patricia Bournai , Thierry Gautier , Paul
Le Guernic , David Nowak , Jean-Pierre Talpin
Résumé : La version nouvelle de Signal, Signal V4, est définie en coopération avec la société TNI (François Dupont), qui développe et commercialise l'environnement Sildex issu des travaux sur Signal. Une définition préliminaire avait été publiée en 1994, sans qu'un certain nombre de points soient stabilisés.
Le principe de base adopté pour la définition d'opérateurs sur tableaux a été de se conformer strictement à la forme implicite du contrôle qui constitue une caractéristique fondamentale de Signal : il n'y a donc pas de construction explicite de boucle en Signal. De plus, le caractère «flot de données» et compositionnel du langage est préservé par les opérateurs utilisés dans des équations sur signaux de type tableau.
Deux opérateurs importants sont alors l'accès aux éléments d'un tableau :
En l'état actuel, tous les éléments d'un tableau ont la même horloge, cependant, un tableau peut être défini partiellement, ce qui pourrait à terme amener à considérer des horloges vectorielles. Un travail important reste à faire sur la compilation des tableaux en Signal.
Nous avons ajouté à la définition de Signal V4 la possibilité de spécifier des assertions utilisables comme hypothèses de compilation. Il peut être en effet nécessaire pour compiler un programme, de supposer des propriétés sur l'environnement ou sur la sémantique de certaines opérations. Les assertions devront pouvoir être prises en compte par le calcul d'horloges.
Par ailleurs, pour représenter de manière plus pratique les états d'un système de transition (traduction des Statecharts, par exemple), nous avons ajouté une notion de types énumérés dans Signal V4. Là encore, le calcul d'horloges devra pouvoir prendre en compte les relations induites par leur utilisation.
Partant des travaux sur l'abstraction de comportement d'un processus, nous avons formalisé ces abstractions en un calcul de types qui a abouti à la définition d'un système de modules pour Signal [26,34]. Un prototype a été réalisé.
Le travail de compilation de Signal V4 a permis d'intégrer d'une part les nouveaux opérateurs sur horloges, d'autre part les types externes (ce qui permet d'écrire des programmes manipulant des signaux dont les types ne sont pas définis en Signal : fenêtres graphiques, etc.). L'éditeur graphique de Signal a été adapté à Signal V4, dans une version intermédiaire dite H2-V4 permettant d'assurer une compatibilité avec les programmes existants. La mise en place d'outils nouveaux dans l'environnement Signal s'effectue désormais sur cette version.
Participants : David Nowak , Jean-Pierre Talpin
Résumé : Nous avons élaboré une sémantique des processus d'ordre supérieur qui autorise le transport de processus au moyen de signaux. Nous avons défini un cadre de la théorie des types permettant d'en vérifier les propriétés temporelles et causales.
Afin de généraliser l'approche et la démarche de programmation synchrone mise en oeuvre dans le langage Signal, nous avons élaboré une sémantique des processus d'ordre supérieur pour Signal. Cette sémantique autorise le transport de processus au moyen de signaux. Nous retrouvons dans cette proposition tous les traits de la méthodologie de programmation propre au langage Signal, un opérateur de composition qui permet une spécification progressive des systèmes. Ces travaux, tout d'abord envisagés dans le cadre de Signal, peuvent être généralisés à des calculs plus expressifs (le lambda-calcul, le join-calcul). Ces réflexions nous amènent à considérer la programmation synchrone comme une méthodologie de programmation au même titre que le typage dans les langages de programmation conventionnels.
Participants : Albert Benveniste , Paul Le Guernic ,
Jean-Pierre Talpin
Résumé : Le langage de spécification BDL caractérise les causalités et le contrôle des composants d'une application distribuée au moyen de familles d'ordres partiels. Étant donnée une topologie de ces composants, BDL met en évidence leur confinement, leur distribution, sous la forme d'un réseau asynchrone de capsules synchrones. Les propriétés du réseau peuvent être vérifiées. Les capsules peuvent être compilées séparément. La conformité du système par rapport à sa spécification initiale peut être validée. BDL intervient dans cette démarche comme interface à l'intégration d'outils de vérification, de compilation et de test.
Le langage de spécification BDL a pour principe la caractérisation d'un modèle des causalités et du contrôle entre les composants logiciels d'une application. Ce modèle est basé sur une notion mathématique très simple : les familles d'ordres partiels. Ces ordres partiels permettent non seulement de représenter les causalités entre les actions réalisées dans l'application, mais également un modèle de l'état et du contrôle dans l'application. Étant donnée une configuration logicielle, ils peuvent être transformés afin de mettre en évidence le confinement ou la distribution des composants du système. L'ordre partiel correspondant à chaque confinement peut être compilé séparément, en faisant appel à des techniques d'optimisation de la programmation synchrone, afin de générer un talon de programme mettant en oeuvre le séquencement des interactions du composant avec son environnement. Il résulte de cette optimisation la génération d'un code cible constitué de talons de programmes, où le parallélisme et les communications exprimés dans la spécification initiale sont compilés d'une manière sécurisée et optimale. La tâche revenant au programmeur se réduit ensuite à coder les calculs élémentaires devant être effectués par les composants du système. La conformité du codage final par rapport à la spécification initiale du système peut enfin être testée dans la phase ultime de validation du logiciel. BDL intervient dans cette méthodologie de développement comme support au raffinement des spécifications successives, et comme interface à l'intégration d'outils de vérification, de compilation et de test. Il est tout autant, pour son utilisateur, un langage de spécification expressif et structuré, qu'un support de représentation intermédiaire simple permettant d'utiliser des logiciels d'analyse, de test, de vérification et d'optimisation existants.
Ce travail s'effectue en étroite collaboration avec le projet Pampa.
Participants : Jean-René Beauvais , Albert Benveniste ,
Loïc Besnard , Thierry Gautier , Roland Houdebine , Paul Le
Guernic , Sylvain Machard , Éric Rutten , Yan-Mei Talpin-Tang
Résumé : Le format DC+, issu des travaux des projets européens Synchron et Sacres, permet de représenter, par delà un langage particulier, la paradigme «flots de données synchronisés». Il constitue aussi un format concret, servant de vecteur commun de représentation, pour des programmes ou des propriétés sur lesquels on souhaite appliquer des transformations définies dans le cadre du modèle synchrone. C'est le cas notamment pour le projet Sacres (voir section
), où DC+ est utilisé pour représenter des programmes Signal et Statecharts, sur lesquels peuvent être appliqués des outils de vérification et de génération de code. L'interopérabilité entre Statecharts et Signal soulève des problèmes de composition de comportements différents, de non déterminisme, de communication entre entités, que nous traitons dans le cadre sémantique unifié fourni par DC+.
Une sémantique formelle de DC+ a été
définie [45] dans le
formalisme FSTS («Fair Synchronous
Transition Systems») introduit par Amir Pnueli. La contribution
de chaque équation de DC+ à la relation de
transition entre un état s et son successeur possible
s', s'exprime par une assertion faisant intervenir les
variables de l'équation sous les formes v et v',
représentant respectivement les valeurs de la variable dans
s et s', et l'assertion
qui signifie que v' a une valeur (
).
Toujours en utilisant le formalisme FSTS, nous avons défini une sémantique dite don't
care du sous-format STS de DC+ (voir section ). Chaque signal u, en
STS, a une horloge booléenne qui lui est
associée; cette horloge est un signal, soit
,
lui-même défini à l'horloge maîtresse, tick. Le prédicat
est alors équivalent à
. La sémantique don't care est définie,
sans utilisation du prédicat
, en
considérant que chaque fois que
, u peut avoir une valeur quelconque, don't
care. Cette sémantique est utilisée dans le projet Sacres
pour définir la traduction de programmes DC+, issus de Signal ou de Statecharts, vers le
format FSM, point d'entrée du model
checker de Siemens.
L'interopérabilité entre Statecharts et Signal est étudiée dans le cadre du projet Sacres sous l'angle d'une traduction des formalismes de Statemate en équations Signal ou DC+. Combiner les conceptions différentes des langages constitue le sujet de réflexion de ce travail. Par exemple, un module Statecharts au comportement réactif doit être capable d'accepter toute configuration de présence/absence de ses entrées; or si on rend possible de spécifier une partie de son comportement par un sous-module Signal, celui-ci peut introduire des contraintes sur la prise en considération ou non de la présence d'une de ces entrées. Par ailleurs, les variables de Statemate ont une valeur au départ de la réaction, qui est celle prise en compte dans toutes leurs apparitions dans des calculs; leur nouvelle valeur, le cas échéant, ne sera prise en compte qu'à la réaction suivante. Par contraste, les signaux de Signal (en particulier les événements et booléens) prennent à un instant donné une valeur qui est la solution du système des diverses équations qui s'appliquent à lui.
Des schémas de traduction des Statecharts vers DC+ ont été définis pour la version commerciale des Statecharts développée par la société i-Logix et nommée Magnum. Ces schémas couvrent l'essentiel des fonctionnalités offertes par l'outil : concurrence et hiérarchie d'automates, gestion de l'historique des sous-automates suspendus, actions complexes, static reactions, mini-spec. Ces schémas ont ensuite été utilisés pour implémenter un traducteur automatique dans le cadre du projet Sacres. Ce traducteur est interfacé avec l'outil commercial et produit du code DC+, qui peut alors être utilisé comme point d'entrée des outils construits autour de DC+ : générateur de code séquentiel ou distribué, preuves, évaluation de performances. L'accent se porte maintenant sur l'évaluation des bénéfices apportés par cette traduction. Des exemples industriels fournis par British Aerospace serviront de base à cette étude. Le code généré par les outils DC+ sera par exemple comparé à celui produit par l'outil commercial Magnum.
Participants : Michel Le Borgne , Hervé Marchand
Résumé : Nous nous sommes intéressés à deux problèmes de contrôle, le premier concernant la commande optimale avec des objectifs de contrôle de nature logique et arithmétique, et le second la commande en présence de pertes d'informations. Dans les deux cas, des solutions ont été apportées.
Deux problèmes de contrôle soulevés par les études sur la sécurité des postes de transformation électriques ont été résolus :
Nous avons scindé ces problèmes d'observabilité en deux types :
Le système de calcul formel Sigali a été enrichi par
l'implémentation des fonctions de manipulation des ADD ainsi que des passages fonction de coût relations algébriques. Le package TDD utilisé par Sigali s'est vu doter d'algorithmes
de réordonnancement automatique des variables, qui ont
considérablement augmenté ses performances. Quelques problèmes
demeurent au niveau de la compatibilité entre ces
réordonnancements de variables et certains algorithmes sur les
ADD [33].
Participants : Olga Kouchnarenko , Michel Le Borgne , Paul
Le Guernic , Hervé Marchand , Sophie Pinchinat
Résumé : Nous avons défini une équivalence comportementale appelée la bisimulation symbolique pour les systèmes dynamiques polynomiaux et les automates associés. Un algorithme pour le calcul de la bisimulation symbolique utilisant les techniques de vérification de l'outil Sigali est proposé. La construction de l'automate quotient modulo cette bisimulation est élaborée.
Une méthode pour la génération d'un automate fini, à partir du système d'équations polynomial produit automatiquement à la compilation des programmes Signal, a été étudiée l'année dernière. Le format d'automate nous a donné accès à de nombreux outils du package CADP (et plus précisement Open-Caesar). Un petit logiciel, qui relie le compilateur Signal à CADP, a été mis au point.
Cette année, le travail autour de cette problématique
s'attache essentiellement à l'étude de la minimisation de
l'automate généré. La méthode de minimisation s'inspire
de [BFH92].
Nous sommes en train d'implanter dans l'environnement Signal, et à l'aide de la bibliothèque Open-Caesar, des méthodes de réduction par quotient et de comparaison pour des équivalences de type bisimulation. La relation de bisimulation choisie est celle de la bisimulation symbolique qui est exprimée sous forme de polynômes. Cette définition nous promet une grande souplesse par rapport aux méthodes de représentation d'états, tant au niveau de leur syntaxe que de la définition des fonctions d'équivalence d'automates et de réduction d'automates par cette bisimulation. En plus, elle permet d'appliquer ces fonctions dans le cadre de la technologie symbolique TDD et BDD.
Les développements logiciels sont basés sur des formats communs de représentation de systèmes, permettant la conception et l'ajout rapide de nouveaux modules de vérification.
Ces travaux sont conduits notamment dans le cadre du projet
européen Syrf (voir section ).
Participants : Sophie Pinchinat , Éric Rutten
Résumé : Cette étude, menée avec R.K. Shyamasundar, du TIFR à Bombay (Inde), poursuit nos travaux sur un cadre unifié pour la spécification de la sémantique des primitives de préemption dans les langages réactifs.
Ce travail a commencé par l'étude de la préemption dans les langages Signal et Esterel, ce qui a mené à la définition de l'algèbre de processus PAL (Process Algebra Language). La définition de PAL est telle qu'elle contient Signal et Esterel. Des traductions des noyaux de chacun des langages dans PAL sont proposées, et la preuve de leur correction est en cours, vis-à-vis d'un critère d'équivalence fondé sur la bisimulation. On s'attend à pouvoir intégrer à ce cadre des langages comme Lustre (d'une façon proche de Signal) et Argos (d'une façon proche d'Esterel).
Le cadre de l'algèbre PAL conduit naturellement à étudier les propriétés de minimalité du jeu d'opérateurs qui y sont introduits, autrement dit les propriétés d'expressivité de ces opérateurs les uns par rapport aux autres.
Nous avons proposé un cadre formel basé sur les systèmes de sémantiques opérationnelles structurelles pour caractériser les opérateurs de préemption, et identifier les sous-classes d'opérateurs d'interruption et de suspension pour lesquelles nous avons établi des résultats d'expressivité comparée (par transformation des systèmes). À notre connaissance, des travaux de nature aussi générale sur les primitives de préemption n'ont encore jamais été abordés.
Participants : Thierry Gautier , Paul Le Guernic , Irina
Smarandache , Sanjay Rajopadhye (projet Api)
Résumé : Dans le cadre de l'action Cairn (voir section
), et afin de permettre un meilleur interfaçage entre structures régulières (Alpha) et irrégulières (Signal), nous avons défini en Signal des transformations affines, qui introduisent des relations nouvelles sur les variables d'horloges d'un programme. Les propriétés des relations affines peuvent être exploitées pour la vérification de contraintes de synchronisation entre horloges qui ne pouvaient pas être vérifiées par le calcul d'horloges existant (calcul booléen).
Une transformation affine de paramètres entiers
strictement positifs
appliquée à l'horloge
va induire une horloge
en insérant
instants
fictifs entre deux instants successifs de
, puis en
prenant chaque
instant à partir de l'instant
. Le positionnement relatif des instants
appartenant aux horloges
et
définit
une relation affine
que l'on notera
.De manière plus générale, dans la
relation affine
,
peut être un entier arbitraire.
En Signal, la vérification de contraintes de synchronisation
entre deux horloges et
est
équivalente à la vérification de leur synchronisabilité :
les horloges
et
sont
synchronisables dans un processus P s'il existe un
flot dans P dans lequel les instants de
et
coïncident. Afin d'accroître la puissance du calcul
d'horloges, nous avons mis en évidence de nouvelles règles de
synchronisabilité basées sur les propriétés des relations
affines. Ces propriétés sont déduites d'un calcul sur les valeurs
des triplets
associés aux relations affines. Nous avons ainsi pu
obtenir des conditions nécessaires et suffisantes sur les valeurs
des triplets
et
pour que les horloges
et
soient synchronisables. Ce résultat est basé sur
l'existence d'une forme canonique d'une relation affine
entre deux horloges [28,35].
Nous avons mis en oeuvre une représentation des horloges en
relation affine compatible avec la représentation actuelle des
horloges. Nous avons implémenté un premier ensemble de règles de
synchronisabilité pour des horloges sous-échantillonnages affines
sur une horloge h ( avec n=1 et
) et des horloges définies
comme union ou intersection de telles horloges. Cela constitue un
point de départ vers l'utilisation de techniques de manipulation
de polyèdres.
Cette mise en oeuvre nous a d'ores et déjà permis d'expérimenter, sur une application de codage d'images (34 Mbits/s), un interfaçage de niveau fin entre Signal et Alpha.
Participants : Albert Benveniste , Paul Le Guernic ,
Sylvain Machard , Éric Rutten
Résumé : La génération de code distribué pour les programmes synchrones pose deux grands types de difficultés. 1/ La compilation directe de code C (ou, plus généralement, de code séquentiel) n'est pas compatible avec une recomposition ultérieure avec d'autres modules. En d'autres termes, on ne peut pas compiler séparément (du moins de façon brutale) des programmes synchrones. 2/ Une architecture distribuée ne s'accomode pas, en général, de l'hypothèse de synchronisme parfait qui correspond au modèle de la programmation synchrone. Pour le premier problème, nous avons proposé une notion de «tâche atomique» qui constitue le grain maximal autorisant une compilation séparée avec réutilisation possible dans tout contexte. Pour le second problème, nous avons proposé la propriété d'endochronie pour un programme synchrone, qui garantit que ce composant peut être distribué en s'appuyant uniquement sur les services d'une communication de type ``send/receive'' fiable.
Sur ces bases, une méthodologie est en cours de développement pour la génération de code distribué [12], qui implique : 1/ la spécification par l'utilisateur, au niveau du programme source, de la répartition du programme, 2/ l'application de transformations automatisées du code intermédiaire, qui contrôle la correction du partitionnement, 3/ la génération du code distribué correspondant aux différents processus et à leurs communications.
La particularité du modèle synchrone (qui fait aussi sa souplesse) est la possibilité pour le contrôle, lors d'une réaction, de prendre des décisions sur la base de l'absence de tel ou tel événement. Ceci est évidemment impossible en univers distribué de nature asynchrone, où la notion de réaction n'existe pas (à moins de distribuer une horloge globale). Nous avons mis en évidence une classe de programmes, dits endochrones, dont aucune décision de contrôle ne nécessite de tester l'absence de signaux dans l'environnement. Ces programmes peuvent être aisément utilisés en tant que modules dans une exécution répartie. De plus, le compilateur Signal sait trouver des conditions suffisantes fines garantissant cette propriété.
Lorsqu'un module n'est pas endochrone, on sait le rendre endochrone en lui rajoutant un petit moniteur, spécifié en Signal. Ceci revient à attacher au module le protocole dont il a besoin, préalablement à toute répartition. Encore une fois, dans les cas standards (il y a des cas qui ne le sont pas), ceci est pris en charge par le compilateur.
Les programmes qui sont mono-horloge et dont toutes les sorties dépendent de toutes les entrées s'exécutent naturellement selon le schéma 1/ lire les entrées, 2/ calculer la réaction, 3/ produire les sorties. Et il n'y a pas d'autre schéma envisageable. Ces programmes peuvent être compilés séparément : une fois les entrées lues, on est armé pour calculer la réaction, on peut le faire en toute tranquillité et dans n'importe quel ordre. On peut donc compiler de tels modules en code séquentiel et les conserver tels quels. Cette remarque se généralise au cas multi-horloge, et aboutit à la notion de tâche atomique. Ainsi, on augmente en général considérablement le grain des actions qu'un scheduler doit gérer à l'éxécution, contribuant à la simplification du scheduler.
Ce modèle abstrait se présente donc sous la forme d'un ensemble de tâches atomiques, ordonnancées par un scheduler. Les tâches atomiques sont endochrones par construction, il reste à s'assurer que le scheduler l'est aussi, ainsi que les modules résultant de son partitionnement. on suppose, pour simplifier, que les tâches atomiques ne sont pas partitionnées. Dans le cas contraire, on synthétise les petits moniteurs additionnels. On dispose ainsi d'un modèle abstrait de programme réparti, équivalent au source, et dont les communications sont conformes au modèle asynchrone de communication send/receive. Dans ce modèle abstrait, on notera que, grâce aux propriétés de la composition synchrone de programmes, on peut répliquer certains calculs sur des processeurs différents, afin de minimiser les communications ou de faciliter l'obtention de l'endochronie.
Il reste alors à :
Cette approche est développée au sein des projets Esprit Sacres et Syrf, et est présentée dans [21,31].
Participants : Michel Allemand , Patricia Bournai ,
Apostolos Kountouris , Paul Le Guernic , Jean-Christophe Le Lann
, Christophe Wolinski , François Bodin (projet Caps)
Résumé : Les performances finales d'un système temps réel dépendent fortement d'optimisations et de choix d'implémentation à bas niveau Il est donc indispensable de ne pas négliger cet aspect de la problématique, et de chercher à préserver les qualités de la spécification initiale. Nous présentons ici deux axes de recherche : la synthèse de circuits et la conception conjointe matériel/logiciel.
L'exploration du modèle synchrone pour le prototypage rapide et sûr d'architectures s'est poursuivie cette année dans différentes directions.
Ceci a été rendu possible par l'élaboration d'une méthode de
traduction directe de programmes Signal en netlist
VHDL, où chaque processus de base trouve
son équivalent dans une bibliothèque de macro-cellules [25]. Quelques expériences de synthèse
menées autour d'un générateur automatique ont été présentées à
notre partenaire industriel (Motorola, Austin), et se sont
révélées particulièrement non prohibitives en termes de coût
matériel [30]. Un autre
prototype génère un code VHDL
comportemental qui optimise le travail ultérieur des outils de
synthèse logique (utilisation de don't care en cas
d'absence d'une horloge) [23]. Ces études trouvent aussi
leur application dans le cadre du projet Cairn (voir
section ).
Ceci permet de donner à Signal un vrai statut de langage de description comportemental de haut niveau. Ses avantages sont multiples. Le premier de ces avantages réside dans la sémantique bien définie du langage, qui permet d'envisager la synthèse comme un ensemble de transformations prouvées formellement. Cette tâche est désormais incontournable à plusieurs titres : elle permet de gérer sans encombre une complexité sans cesse croissante, inhérente aux classes de circuits ou systèmes étudiés (Asics, DSP, FPGA...) et d'éviter des retours en arrière laborieux lors du cycle de conception du produit; elle possède également l'avantage de réduire le temps de certification d'un produit.
La synthèse comportementale connaît également de nouvelles tendances et exigences auxquelles Signal et l'approche synchrone semblent répondre. Il en est ainsi par exemple de la reconnaissance à haut niveau de caractéristiques d'activités temporelles de partitions de circuits : reconnaissance d'exclusivité d'utilisation d'opérateurs aussi bien pour le partage de ressources que pour la prédictabilité ou la minimisation de puissance des circuits. Le calcul d'horloges de Signal correspond bien à de telles exigences. Une approche au niveau transistor a d'ores et déjà été esquissée.
Nous parions donc sur ces travaux engagés pour exhiber plus clairement le rôle que Signal peut tenir concernant la modélisation de composants disponibles sur le marché et leur intégration dans des descriptions concrètes. Ceci sous-tend une exploration des niveaux sub-RTL : modélisation des délais et contraintes de synchronisation (set-up, hold) notamment.
La conception conjointe de systèmes matériels/logiciels est, dans le cas général, très complexe. Elle est composée de plusieurs activités qui, dans la phase finale, devraient nous permettre de construire un système sûr, satisfaisant les fonctionnalités demandées et les contraintes imposées comme le temps de réponse, le débit, le coût, la consommation d'énergie, la taille de la mémoire, etc. Dans le contexte de construction de tels systèmes, plusieurs axes ont été particulièrement étudiés :
Dans le cadre du premier thème, nous avons poursuivi notre étude concernant la conception et le développement d'outils assurant la partitionnement et l'ordonnancement des tâches sur le système hétérogène imposé. Nous avons développé un nouvel algorithme qui est une extension du DLS (Dynamic Level Scheduling) pour le cas d'un graphe dynamique. Il permet d'intégrer, entre autres, la connaissance des exclusivités des tâches et ainsi améliore l'ordonnancement. Un logiciel spécifique a été développé en Java; il comprend un module de manipulation et de visualisation d'un graphe dynamique ordonnancé.
Dans le deuxième thème, nous avons étudié différents types d'optimisation (que l'on peut réaliser, soit directement par la transformation du graphe, soit par la manipulation de la représentation des données) et leur influence sur la taille et la performance du code généré. Les optimisations que nous avons étudiées sont les suivantes :
Une maquette logicielle a été développée en Java pour générer le code C et le code VHDL. Les résultats obtenus prouvent la nécessité de tels types d'optimisation.
Dans le troisième thème, les travaux sur la génération de simulateurs modélisant les aspects temporels d'exécution des applications écrites en Signal, sur une architecture choisie, ont été poursuivis. Ces travaux ont donné lieu au développement de méthodes et outils automatiques pour l'évaluation de performances en fonction des choix architecturaux d'implémentation (i.e. répartition, communications, ordonnancement, implémentation matérielle ou logicielle, etc.).
Participants : Albert Benveniste , Claude Jard (projet
Pampa), Stéphane Gaubert (projet Meta2, Rocquencourt)
évaluation de performance: technique permettant
l'analyse du comportement temporel (au sens du temps réel) d'un
programme sur une architecture.
automate temporisé: modèle consistant à affecter des
spécifications de comportement temporel aux actions situées sur
les transitions d'un automate.
algèbre MaxPlus: algèbre linéaire construite sur le
semi-anneau (Z,max,+), elle est adaptée à la manipulation
formelle pour les modèles d'évaluation de performance.
Résumé : Grâce au travail conduit au sein du projet EP-ATR par A. Kountouris et P. Le Guernic, nous disposons d'une technique permettant d'associer, à tout couple constitué d'un programme Signal et d'une architecture support (également spécifiée en Signal), un autre programme Signal modélisant la consommation de temps par ce programme s'exécutant sur l'architecture considérée. Restait à développer une technique symbolique permettant le raisonnement sur ce type de modèle. Nous avons développé une extension des techniques d'algèbre MaxPlus, promues et étudiées au sein du groupe du même nom (G. Cohen, J-P. Quadrat, F. Baccelli, S. Gaubert), permettant de couvrir le cas qui nous intéressait. Dans cette algèbre, la manipulation symbolique de modèles d'évaluation de performance de programmes Signal se présente comme un problème d'algèbre linéaire, avec toutefois des spécificités dues aux particularités du semi-anneau ``MaxPlus''. Outre l'objectif visé, cette algèbre permet de modéliser les Réseaux de Petri temporisés généraux.
Le point de départ est le modèle de calcul de la figure .
Figure: Calcul: , modélisé par un automate de graphes. Le premier
diagramme montre une abstraction du calcul
sous la forme d'une chaîne infinie de graphes de
dépendance. Dans le second diagramme, les petites pastilles
représentent des «épingles», qui permettent de recoller chaque
tranche de graphe aux tranches précédente et suivante, ce qui
donne une notion de concaténation. Cette notion est utilisée dans
le troisième diagramme pour construire le «langage»
, où a est le symbole constitué du graphe figurant sur
l'unique transition de cet automate.
Les programmes Signal permettent en fait de décrire des calculs
qui changent dynamiquement en fonction de l'état logique du
programme. Le modèle prototype est donc celui du troisième
diagramme de la figure , mais avec un automate fini et un
alphabet de graphes permettant d'étiqueter les transitions. Le
modèle en question est équivalent à celui des graphes de
dépendance étiquetés par des horloges. La figure
en montre un exemple, avec le
graphe infini obtenu par dépliage.
Figure: Un automate de graphes. Le diagramme en
haut à gauche montre l'automate. Ses transitions sont étiquetées
par les graphes A,B,C, et la concaténation se fait comme à la
figure précédente. On vérifie que le dépliage de cet automate
donne bien le graphe infini en bas à gauche -- le symbole
est l'opérateur «étoile» des langages
réguliers.
Le diagramme de la figure montre la représentation
graphique, dans notre algèbre MaxPlus, du modèle de la figure
.
Figure: Représentation graphique des
équations de point fixe satisfaites par le modèle MaxPlus
correspondant à l'automate de graphe de la figure . Chaque rond code, à l'aide
d'une série formelle dans une algèbre adaptée (résultat de nos
travaux), les dates au plus tôt d'occurrences successives de
X et Ydans les états
et
de l'automate. La confluence de flèches vers un
rond indique que les dates sont des ``max'' des dates des ronds
origines des flèches correspondantes, augmentées de
(resp.
)
lorsque l'action A,B ou C est effectuée. L'utilisation du temps
multiforme
,
permet de différentier le coût d'une même action selon qu'il
s'agit de X ou de Y. On code
ainsi une équation de point fixe dont la solution fournit une
représentation des dates d'occurrence. La technique consiste
alors à effectuer tous les raisonnements sur ce type de
diagramme.
Il existe d'autres représentations, plus compactes, sous la forme
d'expressions régulières -- tandis que la figure est une représentation avec états
explicites.
Participants : Patricia Bournai , Michel Le Borgne , Paul
Le Guernic , Hervé Marchand
Résumé : Un prototype pour le développement d'automatismes a été réalisé. Cet environnement permet de décrire en Signal les processus à contrôler et les objectifs de commande. Un simulateur permet ensuite de visualiser l'exécution du programme.
Dans le cadre de notre collaboration avec EDF (voir section ), nous avons réalisé un prototype
d'environnement de développement assisté d'automatismes
discrets/continus [13,32,36]. Cet environnement permet la
spécification en Signal des processus à contrôler, des objectifs
de commande et/ou des propriétés à vérifier. Dans ce but,
l'intégration dans Signal de fonctions externes «Sigali»
permettant d'exprimer des objectifs de vérification au niveau
source a maintenant été étendue aux objectifs de contrôle
classiques tels que l'invariance, l'accessibilité et
l'attractivité. Il est également possible de simuler le système
contrôlé, le simulateur étant généré automatiquement. Les
contrôleurs calculés par le module de calcul formel Sigali étant
sous forme équationnelle, le simulateur comporte un résolveur
d'équations proposant des choix de commandes cohérents avec les
objectifs. L'utilisateur peut alors exprimer ses choix à travers
une interface graphique, soit en désignant les commandes, soit de
façon aléatoire; il existe d'autre part deux modes de
fonctionnement : mode pas à pas et mode continu.
Participants : Jean-René Beauvais , Fernando
Jimenez-Fraustro , Hervé Marchand , Éric Rutten , François
Chaumette (projet Temis), Stéphane Donikian (projet Siames), Éric
Marchand (projet Temis)
intégration: caractère d'un environnement dans lequel
différents outils, mettant en oeuvre différentes fonctionnalités,
sont connectés de telle façon que le passage de l'un à l'autre au
cours du développement d'une application ne nécessite pas
l'intervention de l'utilisateur. Une façon de faire est
d'utiliser un format de modélisation, commun à tous les outils,
qui soit le support de l'échange entre eux de modèles de
l'application à différents stades d'avancement.
Résumé : Les expérimentations auxquelles nous nous livrons, dans le cadre de collaborations tant à l'intérieur qu'à l'extérieur de l'Institut, visent à valider les concepts et le fonctionnement de nos outils. Les domaines d'application des travaux du projet comprennent le traitement du signal (continu échantillonné) comme le contrôle discret au sens de commutation entre modes continus. Nous étudions particulièrement dans nos expérimentations le caractère intégré de notre environnement. Cette intégration est importante, tant au niveau de la spécification de systèmes hybrides (mêlant plusieurs types de langages), qu'à celui du développement (faisant intervenir une variété d'outils de vérification et de mise en oeuvre).
Cette expérimentation est préparatoire à l'utilisation des
résultats du projet Esprit Sacres (voir section ), dans lequel nous
travaillons à l'intégration à l'environnement de
programmation des langages de Statemate sous la forme d'une
traduction vers le format DC+ (voir
section
). On pourra alors
bénéficier de toute la chaîne de compilation et de
vérification.
Cette expérimentation illustre, à partir de résultats concernant la spécification et la mise en oeuvre séquentielle [16], le caractère intégré de l'environnement, par l'extension de notre travail à la vérification de propriétés du comportement du système. Elle s'inscrit dans une réflexion plus générale sur l'adéquation d'un environnement comme Signal en tant qu'environnement intégré de conception pour le contrôle d'applications robotiques. Ce dernier aspect est un écho des travaux effectués dans le cadre de Sacres et autour du format commun DC+. Des perspectives se trouvent dans l'expérimentation d'autres fonctionnalités intégrées, et notamment le fait que ces systèmes robotiques sont parfois mis en oeuvre sur des architectures spécifiques, comprenant des processeurs spécialisés de traitement du signal, et présentant du parallélisme.
Ici aussi, cette intégration donne accès aux fonctionnalités de l'environnement. Cette expérimentation illustre la possibilité offerte par cette intégration de laisser aux utilisateurs leurs langages métier, facilitant ainsi leur acceptation de nouveaux outils, et la réutilisation des spécifications, parfois volumineuses, historiquement héritées (legacy code).