12.07.2015 Views

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.2.REPRÉSENTATION DES PROGRAMMES ESTEREL 77iclc. Le format généré est i<strong>de</strong>ntique au format intermédiaire à la différence que le programme<strong>Esterel</strong> est constitué d’un module unique avec une unique table <strong>de</strong> registres. A partir <strong>de</strong> cetteétape, le programme peut être traduit en format circuit [11] par l’outil lcsc. La transformationdu format intermédiaire vers le format circuit présente l’avantage (pour nous) <strong>de</strong> conserver lestables <strong>de</strong> variables et en particulier la table <strong><strong>de</strong>s</strong> registres c’est à dire la correspondance entre lespauses et les registres.Le format circuit peut se traduire en divers formats exécutables (sous forme d’automate ou bien<strong>de</strong> programme C compilable). Il peut également être traduit en circuit BLIF [78], optimisé parblifopt [34, 72, 71] et vérifié à l’ai<strong>de</strong> <strong>de</strong> l’outil Xeve [14].Un autre outil <strong>de</strong> vérification appelé evcl a été développé par Yannis Bres [17]. Cet outilreconnaît aussi bien le format BLIF que le format circuit sc propre à <strong>Esterel</strong>. Ces <strong>de</strong>ux outilsutilisent la librairie TiGeR pour la manipulation <strong><strong>de</strong>s</strong> BDDs.6.2 Représentation <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong>La construction du graphe <strong>de</strong> flot <strong>de</strong> contrôle a été réalisée selon <strong>de</strong>ux approches différentes.La première consiste à construire l’arbre syntaxique <strong><strong>de</strong>s</strong> <strong>programmes</strong> lors <strong>de</strong> la transformationdu co<strong>de</strong> source vers le format intermédiaire ic. La secon<strong>de</strong> approche consiste à construiredirectement le graphe <strong>de</strong> contrôle à partir du format intermédiaire après l’édition <strong>de</strong> liens.Chacune <strong>de</strong> ces approches présente ses avantages et ses inconvénients, comme nous allons levoir dans la suite <strong>de</strong> cette section.6.2.1 Construction <strong>de</strong> l’arbre syntaxique dans strlicConstruire l’arbre syntaxique lors <strong>de</strong> la transformation du programme <strong>Esterel</strong> vers leformat intermédiaire nous permet d’obtenir un arbre strictement fidèle au co<strong>de</strong> source. Cettetraduction génère une variable <strong>de</strong> registre pour chaque instruction pause et nous permet <strong>de</strong>construire un arbre dans lequel chaque instruction pause est associée au nom <strong>de</strong> son registre <strong>de</strong>contrôle.L’inconvénient <strong>de</strong> cette approche rési<strong>de</strong> dans le fait que les <strong>programmes</strong> <strong>Esterel</strong> sont très souventconstitués <strong>de</strong> plusieurs modules. Cette approche ne produit donc pas un arbre syntaxiquemais une forêt d’arbres syntaxiques que nous <strong>de</strong>vons lier entre eux. La phase d’édition <strong>de</strong> lienconsiste à combiner l’ensemble <strong><strong>de</strong>s</strong> modules d’un programme <strong>Esterel</strong> au sein d’un moduleunique. Cette phase s’accompagne également du renommage <strong><strong>de</strong>s</strong> variables en général et <strong><strong>de</strong>s</strong>registres en particulier. Pour être viable, l’édition <strong>de</strong> lien dans les arbres syntaxiques doit êtreréalisée <strong>de</strong> la même manière que dans les modules <strong>Esterel</strong>, avec les mêmes renommages afin<strong>de</strong> conserver l’information nécessaire à l’i<strong>de</strong>ntification <strong><strong>de</strong>s</strong> registres <strong>de</strong> contrôle.Si le programme <strong>Esterel</strong> source ne contient qu’un seul module, alors la phase d’édition <strong>de</strong> liensréalisée par l’outil iclc ne modifie pas la table <strong><strong>de</strong>s</strong> registres. Nous avons choisi <strong>de</strong> n’accepterque les <strong>programmes</strong> <strong>Esterel</strong> ne contenant qu’un unique module.Pour construire l’arbre syntaxique <strong>de</strong> <strong>programmes</strong> réels, nous avons donc besoin d’un outilcapable d’effectuer l’édition <strong>de</strong> lien <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong> au niveau du co<strong>de</strong> source. Un teloutil a été développé par Olivier Tardieu au cours <strong>de</strong> ses travaux sur le compilateur <strong>Esterel</strong>[76]. Cet outil prototype n’accepte pas aujourd’hui l’intégralité <strong>de</strong> la syntaxe du langage. Parconséquent, notre approche visant à construire notre graphe <strong>de</strong> flot <strong>de</strong> contrôle à partir dulangage source est encore aujourd’hui incomplète par manque pratique <strong>de</strong> réalisation logicielle.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!