Projet :
EP-ATR

Précédent : Logiciels Remonter : Logiciels
Suivant : Sigali
Sous-sections
Environnement de programmation Signal
Mots clés : Signal, programmation
synchrone, format commun, DC+, transformation de programme,
Sildex .
Contact : P. 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.
La version commerciale de Signal est vendue par
TNI sous la forme de l'environnement Sildex. La
version Inria de Signal peut être obtenue dans le cadre d'une
convention de mise à disposition gratuite signée pour un an
renouvelable.
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, University of Victoria -- Canada, University
of Reading -- Grande-Bretagne, University of Michigan -- USA), et
chez certains industriels pour des études ou évaluations
particulières (Alcatel, Steria, EDF, Renault).
Des mises à disposition communes Signal-SynDEx peuvent
également être effectuées (Y. Sorel, projet Sosso à
Rocquencourt).

Précédent : Logiciels Remonter : Logiciels
Suivant : Sigali