Projet Ep-Atr

Précédent : Grands domaines d'application
Remonter : Projet EP-ATR, Environnement de programmation
Suivant : Résultats nouveaux
Contact : Patricia Bournai
Résumé : Le développement d'un environnement de
programmation Signal, construit à l'Irisa selon des techniques
de conception modulaires, répond à trois objectifs :
- a)
- il nous permet d'étudier des extensions sémantiques ou
algorithmiques du modèle synchrone;
- b)
- il nous permet de mieux comprendre les applications et de
dégager ainsi des problématiques nouvelles;
- c)
- il est diffusé à des fins d'expérimentation et
d'enseignement dans des laboratoires pour lesquels la version
commerciale Sildex ne convient pas.
L'environnement de programmation Signal se compose d'un
compilateur et d'un éditeur graphique orienté
blocs-diagrammes. L'éditeur de Signal permet à
l'utilisateur de construire ses programmes sous forme à la fois
textuelle et graphique. L'existence de cet éditeur est un
vecteur majeur pour la diffusion.
Le compilateur et l'éditeur graphique sont écrits en C Ansi
et sont disponibles sous les systèmes SunOS 4.1 et Solaris 2.5.
La même version du compilateur est également disponible sous
Windows 95 et Windows NT.
Un programme Signal est représenté de façon interne par un
graphe hiérarchisé qui constitue donc la structure principale de
l'environnement. On peut distinguer :
- un ensemble de traitements frontaux qui produisent
un graphe hiérarchisé à partir d'un source Signal (ou
DC+),
- un ensemble de transformations qui restituent un
graphe hiérarchisé; ceci constitue le coeur du
compilateur,
- un ensemble de traitements «dorsaux» qui
produisent les sources d'autres outils.
L'ensemble de traitements pour la production du
graphe hiérarchisé est constitué :
- de l'analyse syntaxique et contextuelle, qui fournit
la représentation interne d'un programme source, Signal ou
DC+, sous forme d'un arbre de
syntaxe abstraite;
- de la production de graphe, qui associe à tout
programme un graphe caractérisé par un système d'équations
d'horloges. À ce stade, aucune vérification sur le système
d'équations ni sur le graphe (cycles...) n'est effectuée.
L'ensemble de traitements qui transforment le
graphe hiérarchisé est constitué :
- de la compilation, dont le rôle principal est de
triangulariser le système d'équations d'horloges et de détecter
la présence de cycles de dépendances de données. Cette
transformation permet la vérification partielle de la
correction du programme vis-à-vis de ses synchronisations. La
synthèse partielle d'expressions explicites du contrôle se
traduit en une forêt d'arbres d'horloges, dont les racines sont
éventuellement arguments de contraintes non résolues et les
noeuds internes des expressions explicites. Pour ce calcul
d'horloges, nous avons développé une structure
hiérarchique de BDD qui s'avère
très performante; nous utilisons actuellement le package
BDD de Berkeley.
-
des opérations de partitionnement de graphe, qui
produisent un graphe constitué de noeuds représentant
eux-mêmes des graphes. On peut citer :
- la séparation du contrôle et des calculs, qui consiste
à séparer la partie contrôle de l'application de la partie
calcul.
- le calcul de lignées sur entrées, qui consiste à
partitionner un graphe selon le critère qualitatif
suivant : deux noeuds sont éléments de la même lignée
sur entrée si et seulement s'ils sont précédés du même
sous-ensemble d'entrées. Ce partitionnement est à la base
d'un nouveau schéma de génération de code séquentiel :
une lignée peut être exécutée de manière atomique dès que
ses entrées sont disponibles.
- la répartition de programmes, qui se base sur
l'utilisation de pragmas pour l'affectation des
noeuds à des unités de calcul.
-
des calculs systèmes suivants :
- la synthèse d'interface, dont le but est l'extraction
d'éléments de la représentation interne en vue de la
compilation séparée de programmes Signal. Cette opération
consiste en le calcul de la fermeture transitive du graphe
réduite aux entrées/sorties du processus compilé.
- le retiming, qui consiste en la réécriture de
toute fonction synchrone construite sur les expressions de
retard afin d'une part, de faire apparaître des variables
d'état booléennes et d'autre part, de réduire le nombre des
variables d'état.
L'ensemble de traitements dorsaux est constitué :
- de la génération de code séquentiel, qui passe par
un tri topologique du graphe et qui produit du code C;
- de la restitution de source, qui fournit à
l'utilisateur le graphe hiérarchisé sous la forme d'un nouveau
programme Signal faisant apparaître la hiérarchie obtenue et
les synchronisations calculées. La restitution du source peut
également être effectuée en partant d'une représentation sous
forme d'arbre de syntaxe abstraite.
- de l'interfaçage avec des systèmes de preuves;
actuellement la connexion avec l'outil Sigali est réalisée dans
le but d'étudier les propriétés dynamiques des programmes.
- les calculs d'architectures; actuellement la
connexion avec l'outil SynDEx est réalisée. L'outil SynDEx
permet d'effectuer une implantation optimisée sous contraintes
temps réel sur une architecture multi-processeur.
Un travail important de restructuration du logiciel est
actuellement entrepris en vue de la connexion à la machine
virtuelle développée autour du format
DC+.
La version Inria de Signal n'est pas diffusée par ftp
anonyme mais peut, lorsque des raisons spécifiques justifient son
emploi plutôt que celui de la version commerciale vendue par
TNI (Sildex), être obtenue dans le
cadre d'une convention de mise à disposition signée pour un an
renouvelable. Au terme de cette mise à disposition, un rapport
d'utilisation est demandé par l'Inria.
Signal est actuellement mis à disposition dans des écoles ou
universités (UBO,
IUP de Lorient, université de Nantes
Irin, Supelec, Oil & Gas University of Ploiesti -- Pologne),
et chez certains industriels pour des études ou évaluations
particulières (Alcatel, Steria,
EDF).
Des mises à disposition communes Signal-SynDEx peuvent
également être effectuées (Y. Sorel, projet Sosso à
Rocquencourt). Cela a été le cas cette année pour les Ensam de
Paris, Aix-en-Provence et Cluny, et le Spiiras de
St-Petersbourg.
Contact : Michel Le Borgne
Résumé : Sigali est un système de calcul formel
permettant la vérification de propriétés de programmes Signal.
Sigali est un système de calcul formel interactif spécialisé dans
les calculs algébriques sur l'anneau
.Il est destiné à la vérification
des propriétés statiques et dynamiques de programmes Signal et
plus généralement de tout système dynamique polynomial dans
.Il permet
également la synthèse de contrôleurs de systèmes à événements
discrets. L'adjonction de primitives de création et de
manipulation de fonctions à valeurs entières autorise les calculs
de commande optimale.
Sigali est un logiciel déposé à
l'APP. Comme pour l'environnement
Signal, Sigali peut être obtenu après signature d'une convention
de mise à disposition.
Précédent : Grands domaines d'application
Remonter : Projet EP-ATR, Environnement de programmation
Suivant : Résultats nouveaux