18 CHAPITRE 2. CONTEXTE DE L’ETUDEla traduction d’une instruction pause sous forme <strong>de</strong> circuit.GORESSUSPKILLK1K0SELFig. 2.6 – Circuit d’une instruction pause.Les autres instructions du langage ne produisent que <strong><strong>de</strong>s</strong> portes combinatoires. La figure 2.7illustre par exemple la traduction <strong>de</strong> l’instruction present s then p else q. Les broches <strong>de</strong>l’interface du present sont reliées aux broches <strong>de</strong> l’interface du bloc p par <strong><strong>de</strong>s</strong> portes logiques.EsE’GORESEGORESE’SELK0SELSUSPSUSPK1KILLKILLK2...K0EGOE’SELK1RESK0SUSPKILLK1K2K2...Fig. 2.7 – Circuit d’une instruction present.Au niveau global, la traduction d’un programme <strong>Esterel</strong> produit un registre supplémentaireappelé registre <strong>de</strong> boot. Ce registre est relié à la broche GO et permet <strong>de</strong> lancer l’exécutiondu programme au premier instant.2.1.5 Interprétation <strong><strong>de</strong>s</strong> circuits en machines <strong>de</strong> MealyLes modèles <strong>de</strong> circuit et <strong>de</strong> Mealy FSM permettent <strong>de</strong> représenter les <strong>programmes</strong> <strong>Esterel</strong>à <strong><strong>de</strong>s</strong> niveaux différents :– La représentation circuit permet <strong>de</strong> conserver la causalité en rendant explicite les dépendancesentre les différentes instructions du programme. En revanche, l’espace <strong><strong>de</strong>s</strong> états<strong>atteignables</strong> n’est pas calculé explicitement.
2.2. LA MACHINE SÉQUENTIELLE 19– La construction d’une Mealy FSM rend explicite l’espace <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> mais lacausalité n’est pas préservée.Partant <strong>de</strong> ce constat, nous introduisons la notion <strong>de</strong> machine séquentielle (également appelée“automate symbolique”). Ce modèle est utilisé par <strong><strong>de</strong>s</strong> outils <strong>de</strong> vérification comme SMV [58] ouTiGeR [31]. Le modèle <strong>de</strong> machine séquentielle apporte une vision opérationnelle à la sémantiqued’exécution <strong><strong>de</strong>s</strong> circuits ; les fonctions <strong>de</strong> transition <strong>de</strong> l’automate décrit implicitement sontreprésentées par <strong><strong>de</strong>s</strong> formules booléennes.2.2 La machine séquentielleLe calcul symbolique <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> s’obtient traditionnellement sur le modèle <strong>de</strong> lamachine séquentielle. A chaque réaction, ce modèle consomme un ensemble <strong>de</strong> données I enentrée et produit un ensemble <strong>de</strong> données O en sortie, calculé en fonction <strong>de</strong> I et <strong>de</strong> l’état R <strong>de</strong>la machine. De manière formelle, une machine séquentielle se définit par le triplet :fsm = (ι, Υ, ∆, Γ)où ι désigne l’état initial, ∆ désigne la fonction <strong>de</strong> transition et Γ désigne la fonction <strong>de</strong> sortie<strong>de</strong> la machine. Υ désigne l’ensemble <strong><strong>de</strong>s</strong> entrées vali<strong><strong>de</strong>s</strong> <strong>de</strong> la machine. Il est possible d’abstraireΥ en supposant que cet ensemble désigne l’univers <strong><strong>de</strong>s</strong> entrées tout entier. Ceci revient à neposer aucune restriction sur les entrées.Les fonctions ∆ et Γ calculent respectivement le prochain état et les sorties <strong>de</strong> la machine enfonction <strong><strong>de</strong>s</strong> entrées courantes et <strong>de</strong> l’état courant. Si nous notons I n , O n et R n les entrées, lessorties et l’état <strong>de</strong> la machine à la nème réaction, alors :O n = Γ(I n , R n ) pour tout n ≥ 0 (2.1)R 0 = ιR n = ∆(I n−1 , R n−1 ) si n > 0 (2.2)Dans la traduction <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong> sous forme <strong>de</strong> circuit, les entrées et les sortiesse composent d’un vecteur <strong>de</strong> signaux booléens. L’état du circuit est codé par un ensemble <strong>de</strong>registres booléens. Soit B = {0, 1} l’ensemble <strong><strong>de</strong>s</strong> booléens. Nous avons alors Υ ∈ B m , I ∈ B m ,ι ∈ B p , R ∈ B p et O ∈ B q où m, p et q sont le nombre <strong>de</strong> signaux d’entrée, le nombre <strong>de</strong>registres et le nombre <strong>de</strong> signaux <strong>de</strong> sortie. La fonction <strong>de</strong> transition globale ∆ : B m × B p → B pet la fonction <strong>de</strong> sortie globale Γ : B m ×B p → B q sont naturellement modélisées par un systèmed’équations booléennes, comme le montre la figure 2.8.∆ : (I, R) → R ′ = ∆(I, R) (2.3)Γ : (I, R) → O ′ = Γ(I, R) (2.4)En réalité, chaque registre et chaque signal <strong>de</strong> sortie possè<strong>de</strong> sa propre fonction <strong>de</strong> transition[26]. ∆ et Γ se décomposent ainsi en vecteurs <strong>de</strong> fonctions δ i et γ i qui ne dépen<strong>de</strong>nt chacuneque <strong>de</strong> certains registres et <strong>de</strong> certains signaux d’entrée :δ i : B m i× B p i→ B(I i , R i ) → r ′ i = δ i (I i , R i ) (2.5)