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.

Chapitre 6Mise en ŒuvrePour implémenter notre technique <strong>de</strong> <strong>partitionne</strong>ment, nous <strong>de</strong>vons prendre en comptequelques contraintes techniques. Tout d’abord, le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> est réalisé àpartir du format circuit <strong><strong>de</strong>s</strong> <strong>programmes</strong> qui permet aisément <strong>de</strong> reconstruire selon ses besoins<strong><strong>de</strong>s</strong> fragments <strong>de</strong> la fonction <strong>de</strong> transition, basés sur les registres correspondants aux points<strong>de</strong> contrôle actifs. Les fonctions <strong>de</strong> transition manipulées lors <strong>de</strong> ce calcul reposent donc surun ensemble fini <strong>de</strong> variables booléennes : l’ensemble <strong><strong>de</strong>s</strong> registres et l’ensemble <strong><strong>de</strong>s</strong> signauxd’entrée du circuit.D’un autre côté, notre technique <strong>de</strong> <strong>partitionne</strong>ment utilise un graphe <strong>de</strong> flot <strong>de</strong> contrôle,construit à partir d’un arbre syntaxique, pour piloter l’extraction <strong><strong>de</strong>s</strong> parties utiles <strong><strong>de</strong>s</strong> fonctions<strong>de</strong> transition à chaque étape <strong>de</strong> l’algorithme. L’arbre syntaxique est censé représenter fidèlementle programme <strong>Esterel</strong> source et chaque instruction pause qui le constitue est censée êtrei<strong>de</strong>ntifiée <strong>de</strong> manière unique par le nom du registre qu’elle génère. De cette association entreles instructions pause du programme source et les noms <strong><strong>de</strong>s</strong> registres dans le format circuitdépend notre <strong>partitionne</strong>ment. La solution la plus simple consistant à réécrire intégralement uncompilateur <strong>Esterel</strong> afin <strong>de</strong> créer et conserver l’information nécessaire à chaque étape <strong>de</strong> lacompilation n’a pas été retenue.Dans ce chapitre, nous présentons la manière dont a été implémentée notre technique <strong>de</strong> <strong>partitionne</strong>ment,<strong>de</strong> la construction <strong>de</strong> l’arbre syntaxique et du graphe <strong>de</strong> flot contrôle jusqu’à sonintégration dans un outil <strong>de</strong> vérification existant. Avant cela, nous faisons un bref rappel <strong>de</strong> lachaîne <strong>de</strong> compilation <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong>.6.1 Chaîne <strong>de</strong> compilation <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong>La figure 6.1 illustre les étapes <strong>de</strong> la compilation d’un programme <strong>Esterel</strong> vers diversformat. La version du compilateur utilisée est la v5 9x. Les fichiers sources <strong>Esterel</strong> sontd’abord compilés dans un format intermédiaire [36, 65] à l’ai<strong>de</strong> <strong>de</strong> l’outil strlic. Le but duformat intermédiaire est à la fois <strong>de</strong> préparer la traduction <strong><strong>de</strong>s</strong> <strong>programmes</strong> vers le formatcircuit en minimisant le nombre <strong>de</strong> primitives et en introduisant <strong><strong>de</strong>s</strong> continuations dans le flot <strong>de</strong>contrôle. Ce format permet également <strong>de</strong> faciliter l’édition <strong>de</strong> liens entre les différents modules.Le format intermédiaire enco<strong>de</strong> donc chaque module <strong>Esterel</strong> sous forme <strong>de</strong> graphe contenantplusieurs sortes <strong>de</strong> noeuds et d’arcs. La structure du programme original est en partie conservée.Ce format contient également une table <strong>de</strong> signaux et une table <strong>de</strong> registres : strlic alloueun registre booléen pour chaque instruction pause. L’édition <strong>de</strong> liens est réalisée par l’outil75

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

Saved successfully!

Ooh no, something went wrong!