Title: Chapitre 5 Approches synchrones Langage Esterel
1Chapitre 5Approches synchronesLangage Esterel
Ingénieur Civil des Mines 2ème
année Architecture des Systèmes Sûrs Module
SI144
- Documents complémentaires
- Synchronous Programming of Reactive Systems,
Nicolas Halbwachs, Kluwer Academic Pub.,
Amsterdam, 1993. - The Esterel v5 Language Primer, Gérard Berry
http//www.inria.fr/meije/esterel
- 2008 2009
- Françoise Simonot-Lion (simonot_at_loria.fr)
2Documents complémentaires
- Synchronous Programming of Reactive Systems,
Nicolas Halbwachs, Kluwer Academic Pub.,
Amsterdam, 1993. - The Esterel v5 Language Primer, Gérard Berry
- Quelques sites
- http//www-sop.inria.fr/esterel.org/home.htm
- http//www.i3s.unice.fr/sports/SyncCharts/
3Problématique (1/3)
- Systèmes transformationnels
- Systèmes interactifs
- Systèmes réactifs
while (true)
Systèmes interactifs toujours prêts à traiter
de nouvelles entrées
4Problématique (2/3)Une solution les machines
détats finis
- Déterminisme
- les sorties du système sont déterminées
formellement par - les valeurs et les instants doccurrence des
entrées - létat du système
- - Difficulté de conception, de réutilisation et
de modification - Pas dexpression directe du parallélisme
- Technique monolithique
- Pas de modularité, pas de hiérarchie
5Problèmatique (3/3)Autre solution modèle à
base de tâches ou de processus communicants
Exemple (Ada) une tâche A signale l événement
MINUTE à une tâche B au bout de 60 secondes à
partir de son début.
facile à programmer / modifier - au bon
vouloir de l ordonnanceur au moins 60
secondes - B doit être prêt à accepter le
rendez-vous - pas de diffusion ( MINUTE
signalé à une tâche C ?) Indéterminisme /
Surcoût pour la gestion des tâches ( overhead )
6Une solution les langages synchrones
Objectif fournir des primitives de
programmation permettant de décrire lautomate de
réaction du système.
- Il existe un opérateur de parallélisme
- La communication se fait par événements diffusés
- Le langage permet de spécifier le contrôle de
manière non ambiguë - La compilation dun programme synchrone fournit
lautomate et vérifie des propriétés sur le
contrôle
7Les langages synchrones - principes (1/5)
- Instants dexécution, réaction, temps discret
- Le comportement du système est une suite d
instants dexécution non entrelacés
- La réaction est de durée nulle (hypothèse de
synchronisme)
- La même suite dentrées produit la même suite de
sortie (déterminisme)
- Pas de création dynamique (preuves et validation
formelle)
8Les langages synchrones - principes (2/5)
Le train doit sarrêter en moins de 10 secondes
Evénements arrêt, seconde Loccurrence de
lévénement arrêt doit précéder la 10ème
occurrence de lévénement seconde Le train doit
sarrêter en moins de 100 mètres
Evénements arrêt, mètre Loccurrence de
lévénement arrêt doit précéder la 100ème
occurrence de lévénement mètre
9Les langages synchrones - principes (3/5)Un
exemple
- Un système dacquittement
- Entre deux tops (signal TOP) à la réception de
la première demande (signal REQ), le système
acquitte la demande (signal ACQ) à la réception
des demandes suivantes, il signale que cest
occupé (signal OQP) - Si entre deux tops, il ny a pas de demande, le
système considère que cest une situation non
souhaitée (signal ALARME) - Si une demande arrive en même temps quun top, le
système considère que cest une situation non
souhaitée (signal ALARME) - Linitialisation du système est considérée comme
le premier top
10Les langages synchrones - principes (4/5)Un
exemple / suite
11Les langages synchrones - principes (5/5)
- Instant logique occurrence de 1 ou plusieurs
événements (tick) - Histoire dun système succession totalement
ordonnée dinstants logiques - Entre 2 instants logiques, rien ne se passe dans
le système ou dans lenvironnement - État
- Toute composante du système (module,
processus ) a la même perception des
occurrences dévénements - Diffusion
- Hypothèse de synchronisme on suppose que le
système réagit assez vite entre deux instants
logiques successifs (instant dexécution)
12Les langages synchrones disponibles
Outils ? XES simulateur ? XEVE vérifieur
LUSTRE (P. Caspi, N. Halbwachs) SIGNAL (A.
Benveniste, P. Le Guernic) ESTEREL (G.
Berry) STATECHARTS (D. Harel, A. Pnueli) / ARGOS
(F. Maraninchini) SYNCCHARTS (C.
André) syntaxe graphique
Flots de données Langages déclaratifs
Langages impératifs
13Langage Esterel - syntaxe et sémantiqueIntroducti
on (1/4)
communication avec l environnement signaux
dentrée (valués ou non) signaux de sortie
(valués ou non) capteurs (valués)
Exemple système embarqué dans un train et
chargé de la surveillance du déplacement du
train
Sorties des signaux de commande vers
les moteurs des signaux de commande vers les
freins des signaux vers les postes de contrôle
Entrées un signal tous les mètres un signal
tous les tours de roue des signaux (informations)
issus de la voie des signaux (informations) issus
du poste daiguillage des signaux (informations)
issus du poste de pilotage des valeurs issues de
capteurs de température
Signaux locaux
Chaque signal est vu comme une horloge
14Langage Esterel - syntaxe et sémantiqueIntroducti
on (2/4)
- Loccurrence dun signal d entrée est la seule
cause de réaction dun programme (éventuellement
émission de signaux de sortie) - Un signal peut être valué
- Diffusion dun signal (toutes les composantes
incluses dans la portée syntaxique) - Le contrôle ne prend aucun temps loccurrence
de signaux dentrée peut provoquer
instantanément des signaux de sortie
15Langage Esterel - syntaxe et sémantiqueIntroducti
on (3/4)
Exemple de programme Esterel module
progreact1 input seconde output
minute every 60 seconde do emit
minute end every end module
Un programme Esterel est compilé dans un langage
hôte (par exemple le langage C)
16Langage Esterel - syntaxe et sémantique Introducti
on (4/4)
Evénement ensemble doccurrences simultanées
de signaux Histoire suite dévénements Exempl
e un compteur de vitesse signaux dentrée non
valués seconde, metre signal de sortie valué
vitesse (vitesse en m/s) - émis à chaque
seconde Exemple dhistoire (metre)
(metre) (metre) (seconde,
vitesse(3)) (metre) (metre, seconde ,
vitesse(2)) (seconde , vitesse(0))
17Langage Esterel syntaxe et sémantiqueStructure
dun programme
- Programme suite de modules
- Structure dun module (mots clés en rouge)
module nom_du_module partie déclaration
(objets dinterface) . . . corps du programme
(instructions) . . . end module
18Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (1/10)
- séquence
- instruction1instruction2
- Le début de linstruction est simultané au début
de instruction1 - Le début de instruction2 est simultané à la fin
de instruction1 - La fin de linstruction est simultanée à la fin
de instruction2 - parallélisme
- instruction1instruction2
- Le début de instruction2 est simultané au début
de instruction1 (début de linstruction
parallèle) - La fin de linstruction parallèle est simultanée
à la fin la plus tardive de instruction1 ou
instruction2
19Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (2/10)
- nothing ne fait rien en temps nul
- pause un instant
- Suspend lexécution jusquau prochain instant
- loop end boucle infinie
- loop instruction end
- Répète instruction en séquence un nombre infini
de fois - repeat times end boucle finie
- repeat 5 times instruction end
- Répète instruction en séquence 5 fois
20Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (3/10)
Portée syntaxique du signal
- module unmodule end module déclaration dun
module de nom unmodule - input déclaration dun signal dentrée local
au module - output déclaration dun signal de sortie
local au module - signal in instruction end déclaration de
signal local à instruction
21Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (4/10)
Instructions portant sur un signal
- await attend loccurrence dun signal dentrée
- await S
- Linstruction sarrête à la 1ère occurrence du
signal dentrée S - emit émet un signal de sortie
- emit S
- Linstruction émet le signal S instantanément
- present then else end instruction
conditionnée à la présence dun signal - present S then instruction1 else instruction2 end
- Si au début de linstruction, le signal S est
présent, alors exécution de instruction1 sinon
exécution de instruction2
22Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (5/10)
Délai immédiat / non immédiat
- await S
- emit T
- await immediate S
- emit T
S
T
S
S
T
23Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (6/10)
Délai dépendant de plusieurs signaux
- await
- case S1 do intruction1
- case immediate S2 do intruction2
- case S3 do intruction3
- end await
- Si S2 est présent au début de l instruction,
elle termine à la fin de instruction2. - Sinon, linstruction se termine à la fin de
instruction1 (respectivement instruction2,
instruction3) si le signal S1 arrive en premier
(respectivement S2, S3 ). - Si Si et Sj arrivent en même temps, seul le
premier de la liste est pris en compte.
24Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (7/10)
Préemption forte
- abort when do end préemption forte
- abort instruction1 when S do instruction2 end
- Linstruction instruction1 est préemptée à
loccurrence du signal S (linstruction
instruction2 est alors exécutée)
Partie optionnelle
abort loop emit S pause end loop when T do
emit U end
S
T
U
S
25Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (8/10)
Préemption faible
- abort when do end préemption faible
- weak abort instruction1 when S do instruction2
end - Linstruction instruction1 est préemptée à la fin
de son exécution à loccurrence du signal S
(linstruction instruction2 est alors exécutée)
Partie optionnelle
weak abort loop emit S pause end loop when T do
emit U end
U S
S
T
S
26Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (9/10)
Immédiate / non immédiate préemption forte
- abort when do end
- abort when immediate do end
abort loop emit Spause end loop when T do emit
Uend
T
U
T
S
abort loop emit Spause end loop when immediate
T do emit Uend
T
U
27Langage Esterel syntaxe et sémantiqueInstructio
ns réactives primitives (10/10)
Immédiate / non immédiate préemption faible
- weak abort when do end
- weak abort when immediate do end
S U
weak abort loop emit Spause end loop when T do
emit Uend
T
T
S
S U
weak abort loop emit Spause end loop when
immediate T do emit Uend
T
28Langage Esterel syntaxe et sémantiqueInstructio
ns dérivées (1/5)
- halt instruction vide de durée infinie
- équivalente à
- loop
- pause
- end
- sustain S maintien dun signal jusquau prochain
instant - équivalente à
- loop
- emit S
- pause
- end
29Langage Esterel syntaxe et sémantiqueInstructio
ns dérivées (2/5)
- every S do end répétition
- équivalente à
- await S
- loop
- abort
-
- when S
- end
- do upto S
- équivalente à
- abort
- halt
- when S
30Langage Esterel syntaxe et sémantiqueInstructio
ns dérivées (3/5)
- trap T in handle T do end trap gestion
dexception - exit T
- trap T in
- instruction1
- end trap
- Début de instruction1 simultané au début de
linstruction trap. - Fin de linstruction trap
- si instruction1 termine, alors linstruction trap
termine, - si une instruction exit T est exécutée avant la
fin de instruction1, alors linstruction trap
termine (préemption faible de instruction1)
Partie optionnelle
31Langage Esterel syntaxe et sémantiqueInstructio
ns dérivées (4/5)
- trap T in
- instruction1 exit T
-
- await S exit T
- end trap
- équivalente à
- abort
- instruction1
- when S
32Langage Esterel syntaxe et sémantiqueInstructio
ns dérivées (5/5)
Imbrication de gestion dexceptions
- trap U in
- trap T in
- instruction1
- end trap
- instruction2
- end trap
- instruction3
- Si instruction1 termine T (exit T), alors
instruction2 démarre immédiatement. - Si instruction1 termine U (exit U), alors
instruction3 démarre immédiatement. - Si instruction1 termine simultanément T et U,
alors seulement instruction3 démarre
immédiatement.
33Langage Esterel syntaxe et sémantiqueEsterel /
langage hôte
- Compilation dun programme Esterel
- Génération de programme dans un langage hôte
- langage C
- VHDL
- Ada)
- Deux points de vue
- Le contrôle pur (sémantique Esterel voir
transparents précédents) - Les données (types et opérateurs disponibles dans
le langage hôte) et les fonctions daccès à ces
données
34Langage Esterel syntaxe et sémantiqueObjets
dinterface (1/12)
- Interface objets importés ou exportés
Signaux et capteurs
Données
35Langage Esterel syntaxe et sémantiqueObjets
dinterface (2/12)
Types de données
- Types prédéfinis
- boolean integer float double string
- false 123 5.76 hello
- true 12.8E-4
- Opérateurs habituels du langage C
36Langage Esterel syntaxe et sémantiqueObjets
dinterface (3/12)
Types de données
- Types définis dans le langage hôte (langage C,
VHDL, Ada) - type T
- Le type T doit être défini dans le langage hôte
- typedef struct T
- Laffectation () et les opérateurs de
comparaison ( et ltgt), utilisés dans les modules
Esterel, doivent être définis dans les modules
écrits dans le langage hôte -
37Langage Esterel syntaxe et sémantiqueObjets
dinterface (4/12)
Données
- Constantes
- De type prédéfini
- constant L123 integer
- Dun type défini dans le langage hôte
- type T
- constant valeur_constante T
-
- valeur_constante doit être définie et valuée
dans le langage hôte - valeur_constante
38Langage Esterel syntaxe et sémantiqueObjets
dinterface (5/12)
Données
- Variables
- Définition de la portée dune variable
- var Ltype in
- instruction
- end var
- var L valeur_initiale type in
- instruction
- end var
39Langage Esterel syntaxe et sémantiqueObjets
dinterface (6/12)
Fonctions et procédures
- Fonctions
- Déclaration dune fonction en Esterel
- function pgcd(integer,integer) integer
- Appel dune fonction en Esterel
- var plusgranddiviseur integer in
-
- plusgranddiviseur pgcd(a,b)
-
- end var
- Définition de la fonction dans le langage hôte
- int pgcd(int x, int y)
Type du résultat
Liste des types de données
40Langage Esterel syntaxe et sémantiqueObjets
dinterface (7/12)
Fonctions et procédures
- Procédures
- Déclaration dune procédure en Esterel
- procedure inc_heure(heure)(integer)
- Appel dune procedure en Esterel
- var h midi heure in
-
- inc_heure(h)(1)
-
- end var
- Définition de la fonction dans le langage hôte
- void inc_heure(heure x, int y)
Liste des types de résultats
Liste des types de données
41Langage Esterel syntaxe et sémantiqueObjets
dinterface (8/12)
Signaux et capteurs
- Signaux
- input A,B, C A, B et C sont 3 signaux
dentrée - input Xinteger X signal dentrée valué par
un entier - output heure midi time heure signal de
sortie - valué par la valeur midi
- Capteurs
- sensor tinteger t est un capteur à valeur
entière
42Langage Esterel syntaxe et sémantiqueObjets
dinterface (9/12)
Signaux et capteurs
- Relations sur les signaux dentrée
- Supposées être garanties par lenvironnement
- Évitent la spécification de comportements non
pertinents - Optimisent la génération de code (minimisation de
lautomate) - relation ABC A, B et C jamais ensemble
- relation AgtX si A est présent, alors X est
présent
43Langage Esterel syntaxe et sémantiqueObjets
dinterface (10/12)
Signaux et capteurs
- Occurrence dun signal dentrée versus valeur
- input Ainteger
-
- await A attend loccurrence de A
- var x ?A integer in
-
- end var
-
- Valeur dun capteur
- ?S valeur du capteur S
44Langage Esterel syntaxe et sémantiqueObjets
dinterface (11/12)
Signaux et capteurs
- Émission dun signal de sortie valué
- output Sinteger
-
- var x 5 integer in
-
- emit S(x)
-
- end var
-
45Langage Esterel syntaxe et sémantiqueObjets
dinterface (12/12)
Expressions sur les signaux
- Expressions booléennes sur les signaux dentrée
- A and not B
- B and C or not (A and X)
- Expressions délai sur les signaux dentrée
- A
- A and not B
- immediate A and not B
- 3 time
46Langage Esterel syntaxe et sémantiqueInstructio
n conditionnelle
- Instruction if
- if expression then instruction1
- else instruction2
- end if
- if expression1 then instruction1
- elsif expression2 then instruction2
- else instruction3
- end if
47Langage Esterel syntaxe et sémantiqueInstanciat
ion de modules (1/4)
- Instruction run
- module B module A
-
- run A1/A end module
-
- end module
-
- Insère le contenu du module A (fils) à
lintérieur du module B (père) instanciation de
A sous le nom A1 - Pas de récursivité
- Les déclarations de données de A sont exportées
dans B - Les déclarations de signaux dinterface (et les
déclarations de relations) du module fils sont
supprimées ? ces signaux doivent être déclarés
dans le module père
48Langage Esterel syntaxe et sémantiqueInstanciat
ion de modules (2/4)
- Renommage
- signal nom_dans_module_père /
nom_dans_module_fils, -
- constant nom_dans_module_père /
nom_dans_module_fils, -
- function nom_dans_module_père /
nom_dans_module_fils, -
-
- Uniquement pour
- Constantes explicites, types
- Fonctions, procédures
- Signaux dinterface
- Tâches
- nom_dans_module_père et nom_dans_module_fils
doivent être déclarés de la même manière dans les
deux modules
49Langage Esterel syntaxe et sémantiqueInstanciat
ion de modules (3/4)
- Exemple
- Définition du module A
- module A
- input I
- type T
- constant initialT
- function somme(T,T)T
-
- end module
50Langage Esterel syntaxe et sémantiqueInstanciat
ion de modules (4/4)
- Exemple
- Instanciation du module A
- module B
- input E1,E2
- type time
- constant midi
- function ajouter_heure(time,time)time
- instanciation sur des entiers et le signal
E1 - run A1 / Asignal E1/I instanciation sur
integer - type integer/T et le signal E1
- constant 1/initial
- function /somme
-
- run A2 / Asignal E2/I instanciation sur un
type time type time/T et le signal E2 - constant midi/initial
- function ajouter_heure/somme
-
- end module
51Langage Esterel syntaxe et sémantiqueTâches
(1/5)
- Tâche entité dont lexécution est externe au
module réactif et qui prend du temps - Instant de début de la tâche instant
dexécution de linstruction exec (activation) - Fin de la tâche instant démission dun signal
dédié par linstruction return - Lancement et signalisation de fin de tâches
relèvent du système dexploitation sous-jacent - Contrôle de la tâche (abort ou weak abort)
52Langage Esterel syntaxe et sémantiqueTâches
(2/5)
- Déclaration de tâches
- task unetache (type_de_variable,)(type_d_express
ion,) -
- Signal de retour dune tâche
- return nomsignal
- Permet de déclarer le signal retourné en fin
dexécution de la tâche - Exemple
- module M
- task T(float)(integer,integer)
- return R
-
- end module
cf. déclaration de procédures
53Langage Esterel syntaxe et sémantiqueTâches
(3/5)
- Lancement dexécution de tâches
- exec unetache (nom_de_variable,)(expression,)
- Exemple
- module M
- task T(float)(integer,integer)
- return R
-
- var x float in
- exec T(x)(0,1) return R
- end var
-
- end module
cf. appel de procédures
54Langage Esterel syntaxe et sémantiqueTâches
(4/5)
- Variantes
- exec T ()() return R do instruction end exec
- exec
- case T1 ()() return R1 do instr1
- case T2 ()() return R2 do instr2
-
- case Tn ()() return Rn do instrn
- end exec
55Langage Esterel syntaxe et sémantiqueTâches
(5/5)
- Contrôle de la tâche
- input E
- task T (float)()
- return R
- var x 0.5 float in
- weak abort
- exec T (x)() return R
- when E
- end var
- R avant E, x est mis à jour
- E avant R, x vaut toujours O.5
56Langage Esterel syntaxe et sémantiqueQuelques
problèmes (1/4)
- Réincarnation de signaux
- output S1,S2
- loop
- signal I in
- present I then emit S1 else emit S2 end
- pause
- emit I
- end signal
- end loop
57Langage Esterel syntaxe et sémantiqueQuelques
problèmes (2/4)
- Absence de solution
- var x integer in
- loop x 1 end loop
- end var
-
- output S integer
- emit S(?S1)
58Langage Esterel syntaxe et sémantiqueQuelques
problèmes (3/4)
- Absence de solution
- module M
- output S
- present S else emit S end
- end module
- ou plusieurs solutions
- module M
- output S
- present S then emit S end
- end module
59Langage Esterel syntaxe et sémantiqueQuelques
problèmes (4/4)
- Plusieurs solutions
- module M
- output S1S2
- present S1 then emit S2 end
-
- present S2 else emit S1 end
- end module
-
- output S
- emit S(?S)
60Langage Esterel syntaxe et sémantiqueInterface
avec lenvironnement (1/3)
- Règles à observer
- Soit R le nom du module réactif
- module R end module
- La compilation Esterel génère, dans le langage
hôte, la définition dune fonction de nom R - void R()
- qui détermine les événements présents et absents
à un instant dexécution
61Langage Esterel syntaxe et sémantiqueInterface
avec lenvironnement (2/3)
- Règles à observer
- Pour tout signal dentrée E défini dans le module
réactif R - input E
- la compilation Esterel génère, dans le langage
hôte, la définition dune fonction de nom R_I_E - void R_I_E()
- qui marque présent le signal E
- Pour tout signal de sortie S
- output S
- la compilation Esterel traduit linstruction
Esterel emit S par un appel dune fonction de nom
R_O_S dans le langage hôte - R_O_S()
62Langage Esterel syntaxe et sémantiqueInterface
avec lenvironnement (3/3)
void SSP_IT() // récupération // du signal de //
lenvironnement R_I_E() R()
void R_I_E() . . .
input E
output S
environnement
void R_O_S() // traitement // correspondant //
à lémission // du signal S