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.
30 CHAPITRE 2. CONTEXTE DE L’ETUDESubstitution dans le calcul <strong>de</strong> l’image. Le calcul <strong>de</strong> l’image nécessite un renommage <strong><strong>de</strong>s</strong>variables afin d’exprimer l’ensemble <strong><strong>de</strong>s</strong> nouveaux états découverts à partir <strong><strong>de</strong>s</strong> variables <strong>de</strong>registres (voir section 2.4.1). L’opérateur <strong>de</strong> substitution permet <strong>de</strong> réaliser cette opération.2.5.3.5 Cofacteur et BDDsLes opérateurs <strong>de</strong> cofacteur peuvent s’appliquer aux BDDs. Le cofacteur d’un BDD U parun BDD V noté U ↓V permet <strong>de</strong> supprimer <strong><strong>de</strong>s</strong> noeuds dans U en restreignant le domaine <strong>de</strong> Uà l’ensemble V (voir section 2.4.2). Un algorithme pour cet opérateur a été proposé par OlivierCou<strong>de</strong>rt et al. dans [27]. Cet algorithme permet <strong>de</strong> supprimer <strong><strong>de</strong>s</strong> noeuds dans trois cas. Si ledomaine est vi<strong>de</strong>, c’est à dire représenté par le BDD 0, alors le résultat est un BDD constant(0 ou bien 1, nous avons choisi 0) :(v ? t, e) ↓0 = 0Les <strong>de</strong>ux autres simplifications s’appliquent si les variables à la racine <strong><strong>de</strong>s</strong> BDDs sont i<strong>de</strong>ntiqueset si l’une <strong><strong>de</strong>s</strong> <strong>de</strong>ux branches <strong>de</strong> V est 0. Supposons par exemple que la branche “then” <strong>de</strong> V soit0. Dans ce cas, la branche “then” <strong>de</strong> U peut être remplacée par n’importe quel BDD. Le choixle plus efficace consiste à lui attribuer le même BDD que sa branche “else” et donc à supprimerla racine <strong>de</strong> U (voir les règles <strong>de</strong> simplification <strong><strong>de</strong>s</strong> BDDs à la section 2.5.1). Ces simplificationssont formellement données par les relations suivantes :(v ? t, e) ↓(v ? t ′ ,0) = t ↓t ′(v ? t, e) ↓(v ? 0,e ′ ) = e ↓e ′Dans le cas général, l’opérateur <strong>de</strong> cofacteur s’applique comme n’importe quel opérateur booléenbinaire. Ainsi, si U = (v ? t, e) et V = (v ? t ′ , e ′ ) désignent <strong>de</strong>ux noeuds <strong>de</strong> BDD portant sur lamême variable v alors :U ↓V = (v ? t ↓t ′, e ↓e ′)Le coût théorique en temps <strong>de</strong> cet opérateur est proportionnel au produit du nombre <strong>de</strong> noeudsdans U et dans V. Le BDD résultant <strong>de</strong> cette opération est souvent plus simple que U. Dans lepire <strong><strong>de</strong>s</strong> cas, l’algorithme proposé par Olivier Cou<strong>de</strong>rt peut toutefois produire un BDD plus largeque U. Des métho<strong><strong>de</strong>s</strong> permettent d’améliorer cet opérateur et <strong>de</strong> garantir <strong>de</strong> ne pas augmenterla taille <strong>de</strong> U [44].