Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
56 CHAPITRE 4. NOTATIONSabortloop pause 1 end||pause 2 ; pause 3when S;present T thenpause 4 ;[ pause 5 || pause 6 ]elsepause 7 ; pause 8end;pause 9La construction <strong><strong>de</strong>s</strong> frontières permet <strong>de</strong> diviser le programme en quatre blocs. Le premierconstitue le corps <strong>de</strong> l’instruction abort, le second et le troisième correspon<strong>de</strong>nt à la branche“then” et à la branche “else” du present et le <strong>de</strong>rnier bloc est constitué <strong>de</strong> la <strong>de</strong>rnière pausesituée après l’instruction present.||F 1 F2.114 ||2 3?TF 2.27 856FF2.12.29Fig. 4.1 – Exemple <strong>de</strong> graphe <strong>de</strong> flot <strong>de</strong> contrôle <strong>de</strong> programme <strong>Esterel</strong>. Les frontières F 1 ,F 2.1 et F 2.2 représentées par les lignes discontinues ont été produites par les instructions abortet present.4.2.3 Graphe <strong>de</strong> contrôle et <strong>partitionne</strong>mentDans notre graphe <strong>de</strong> flot <strong>de</strong> contrôle, les arcs <strong>de</strong> type “frontière” permettent <strong>de</strong> diviser leprogramme en <strong>de</strong>ux parties : à l’intérieur <strong>de</strong> la frontière se trouve l’ensemble <strong><strong>de</strong>s</strong> blocs actifsque nous souhaitons explorer. A l’extérieur <strong>de</strong> la frontière se trouve l’ensemble <strong><strong>de</strong>s</strong> blocs quenous ne souhaitons pas explorer et qui doivent <strong>de</strong>meurer inactifs.La traduction <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong> en circuit produit un registre <strong>de</strong> contrôle pour chaqueinstruction pause. Cette traduction nous permet <strong>de</strong> caractériser très précisément l’ensemble <strong><strong>de</strong>s</strong>états du programme situés à l’intérieur <strong>de</strong> la frontière. Si P désigne les blocs <strong>de</strong> <strong>programmes</strong>itués à l’intérieur <strong>de</strong> la frontière et si Q désigne les blocs <strong>de</strong> programme situés à l’extérieur <strong>de</strong>la frontière, alors les états situés à l’intérieur <strong>de</strong> la frontière sont les états dans lesquels aucunregistre <strong>de</strong> Q n’est actif. L’intérieur <strong>de</strong> la frontière n’est donc pas décrit à partir <strong>de</strong> l’ensemble<strong><strong>de</strong>s</strong> registres potentiellement actifs mais à partir <strong><strong>de</strong>s</strong> registres que nous forçons à être inactifs.Codage <strong><strong>de</strong>s</strong> blocs actifs. Etant donné un ensemble <strong>de</strong> variables <strong>de</strong> BDD R = {r 1 , . . . r n },nous introduisons l’opérateur NOr(R) défini <strong>de</strong> la manière suivante :NOr(R) = λX → ¬ r 1 ∧ . . . ∧ ¬ r n (4.13)