Chapitre 1 Approches synchrones Langage Esterel
description
Transcript of Chapitre 1 Approches synchrones Langage Esterel
Chapitre 1Approches synchrones
Langage Esterel
Ingénieur Civil des Mines
3ème année – S5
Conception Sûre des Systèmes Embarqués et Ambiants Modélisation du comportement des systèmes
SI353b
2006-2007
Françoise Simonot-Lion ([email protected])
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
2 CSSEA - SI353b Langages synchrones
Ecole des Mines de Nancy
Documents 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/
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
3
Problématique (1/3)
Systèmes transformationnels
Systèmes interactifs
Systèmes réactifs
environnement
environnement
Lire données Traiter Ecrire résultat
t
Recevoir donnéesTraiter
Emettre résultatenvironnement
t
Réponse au rythme du système
= Systèmes interactifs + toujours prêts à traiter de nouvelles entrées
activation
while (true)
TraiterLire données
Ecrire résultat
activationt
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
4
Problé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 d’occurrence des entrées l’état du système
- Difficulté de conception, de réutilisation et de modification Pas d’expression directe du parallélisme Technique monolithique Pas de modularité, pas de hiérarchie
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
5
Exemple (Ada):Exemple (Ada): une tâche A signale l ’événement « MINUTE » à une tâche A signale l ’événement « MINUTE » à une tâche B au bout de 60 secondes à partir de son débutune tâche B au bout de 60 secondes à partir de son début..
Tâche ATâche A
delay 60;delay 60;B.MINUTE;B.MINUTE;......
Tâche BTâche B
......accept MINUTE;accept MINUTE;......
+ facile à programmer / modifier+ facile à programmer / modifier
- au bon vouloir de l ’ordonnanceur : « au moins 60 secondes »- au bon vouloir de l ’ordonnanceur : « au moins 60 secondes »- B doit être « prêt » à accepter le rendez-vous- B doit être « prêt » à accepter le rendez-vous- pas de diffusion ( « MINUTE » signalé à une tâche C ?)- pas de diffusion ( « MINUTE » signalé à une tâche C ?)
Indéterminisme / Surcoût pour la gestion des tâches (« overhead »)Indéterminisme / Surcoût pour la gestion des tâches (« overhead »)
Problèmatique (3/3)Autre solution : modèle à base de tâches ou de
processus communicants
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
6
Objectif : fournir des primitives de programmation permettant de décrire l’automate de réaction du système.
- Il existe un opérateur de Il existe un opérateur de parallélismeparallélisme
- La communication se fait par La communication se fait par événements diffusésévénements diffusés
- Le langage permet de spécifier le Le langage permet de spécifier le contrôlecontrôle de manière non de manière non
ambiguëambiguë
- La La compilationcompilation d’un programme synchrone fournit d’un programme synchrone fournit
l’automate et vérifie des propriétés sur le contrôlel’automate et vérifie des propriétés sur le contrôle
Une solution : les langages synchrones
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
7
Les langages synchrones - principes (1/5)
Instants d’exécution, réaction, temps discret Le comportement du système est une suite d’ « instants
d’exécution » non entrelacés
entrée sortie entrée sortie entrée sortie
activation activation activation
La réaction est de durée nulle (hypothèse de synchronisme)
La même suite d’entrées produit la même suite de sortie (déterminisme)
Pas de création dynamique (preuves et validation formelle)
instant d’exécution
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
8
Le train doit s’arrêter en moins de 10 secondes Le train doit s’arrêter en moins de 10 secondes Evénements : arrêt, secondeEvénements : arrêt, seconde
L’occurrence de l’événementL’occurrence de l’événement arrêt arrêt doit précéder la 10ème occurrence de doit précéder la 10ème occurrence de l’événementl’événement seconde seconde
Le train doit s’arrêter en moins de 100 mètres Le train doit s’arrêter en moins de 100 mètres Evénements : arrêt, mètreEvénements : arrêt, mètre
L’occurrence de l’événement L’occurrence de l’événement arrêtarrêt doit précéder la 100ème occurrence de doit précéder la 100ème occurrence de l’événement l’événement mètremètre
TEMPS PHYSIQUE (horloge)TEMPS PHYSIQUE (horloge)
TEMPS MULTIFORME DISCRETTEMPS MULTIFORME DISCRET
Les langages synchrones - principes (2/5)
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
9
Les langages synchrones - principes (3/5)Un exemple
Un système d’acquittement 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 c’est occupé (signal OQP)
Si entre deux tops, il n’y a pas de demande, le système considère que c’est une situation non souhaitée (signal ALARME)
Si une demande arrive en même temps qu’un top, le système considère que c’est une situation non souhaitée (signal ALARME)
L’initialisation du système est considérée comme le premier top
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
10
Les langages synchrones - principes (4/5)Un exemple / suite
TOPTOP REQREQ ACQACQ TOPTOPREQREQ OQPOQP TOPTOP ALARMEALARME
1 2
0REQ / ACQ
REQ / OQP
TOP / ..TOP et REQ / ALARME
TOP / ALARME
TOP et REQ / ALARME
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
11
Instant logique : occurrence de 1 ou plusieurs événements (tick)
Histoire d’un système : succession totalement ordonnée d’instants logiques
Entre 2 instants logiques, rien ne se passe dans le système ou dans l’environnement
É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 d’exécution)
Les langages synchrones - principes (5/5)
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
12
LUSTRE (P. Caspi, N. Halbwachs)LUSTRE (P. Caspi, N. Halbwachs)
SIGNAL (A. Benveniste, P. Le Guernic)SIGNAL (A. Benveniste, P. Le Guernic)
ESTEREL (G. Berry)ESTEREL (G. Berry)
STATECHARTS (D. Harel, A. Pnueli) / ARGOS (F. Maraninchini)STATECHARTS (D. Harel, A. Pnueli) / ARGOS (F. Maraninchini)
SYNCCHARTS (C. André)SYNCCHARTS (C. André)syntaxe graphiquesyntaxe graphique
Flots de Flots de donnéesdonnéesLangages Langages déclaratifsdéclaratifs
Langages Langages impératifsimpératifs
Outils : XES simulateur
XEVE vérifieur
Les langages synchrones disponibles
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
13
communication avec l ’environnement* signaux d’entré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
+ Signaux locaux+ Signaux locaux
Entréesun signal tous les mètresun signal tous les tours de rouedes signaux (informations) issus de la voiedes signaux (informations) issus du poste d’aiguillagedes signaux (informations) issus du poste de pilotagedes valeurs issues de capteurs de température
Sorties des signaux de commande vers les moteursdes signaux de commande vers les freinsdes signaux vers les postes de contrôle
Langage Esterel - syntaxe et sémantiqueIntroduction (1/4)
Chaque signal est vu comme une « horloge »Chaque signal est vu comme une « horloge »
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
14
Langage Esterel - syntaxe et sémantiqueIntroduction (2/4)
L’occurrence d’un signal d ’entrée est la seule cause de réaction d’un programme (éventuellement émission de signaux de sortie)
Un signal peut être valué
Diffusion d’un signal (toutes les composantes incluses dans la portée syntaxique)
Le contrôle ne prend aucun temps : l’occurrence de signaux d’entrée peut provoquer instantanément des signaux de sortie
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
15
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 langage hôte(par exemple le langage C) langage C)
Langage Esterel - syntaxe et sémantiqueIntroduction (3/4)
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
16
Evénement :Evénement : ensemble d’occurrences simultanées de signaux ensemble d’occurrences simultanées de signaux Histoire :Histoire : suite d’événements suite d’événements
Exemple : un compteur de vitesseExemple : un compteur de vitesse
signaux d’entrée non valués :signaux d’entrée non valués : secondeseconde, , metremetresignal de sortie valué :signal de sortie valué : vitessevitesse (vitesse en m/s) - (vitesse en m/s) - émis à chaqueémis à chaque secondeseconde
Exemple d’histoireExemple d’histoire ((metremetre))
((metremetre))
((metremetre))
((secondeseconde, , vitesse(3)vitesse(3)))
((metremetre))
((metremetre, , seconde seconde , , vitesse(2)vitesse(2)))
((seconde seconde , , vitesse(0)vitesse(0)))
Langage Esterel - syntaxe et sémantiqueIntroduction (4/4)
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
17
module nom_du_module :% partie déclaration (objets d’interface). . .% corps du programme (instructions). . . end module
Langage Esterel – syntaxe et sémantiqueStructure d’un programme
Programme = suite de modules
Structure d’un module (mots clés en rouge) :
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
18
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (1/10)
; séquenceinstruction1;instruction2Le début de l’instruction est simultané au début de instruction1 Le début de instruction2 est simultané à la fin de instruction1La fin de l’instruction est simultanée à la fin de instruction2
|| parallélismeinstruction1||instruction2Le début de instruction2 est simultané au début de instruction1 (début de l’instruction parallèle)La fin de l’instruction parallèle est simultanée à la fin la plus tardive de instruction1 ou instruction2
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
19
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (2/10)
nothing ne fait rien en temps nul
pause un instantSuspend l’exécution jusqu’au prochain instant
loop … end boucle infinieloop instruction endRépète instruction en séquence un nombre infini de fois
repeat … times … end boucle finierepeat 5 times instruction endRépète instruction en séquence 5 fois
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
20
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (3/10)
module unmodule : … end module déclaration d’un module de nom unmodule
input …; déclaration d’un signal d’entrée local au module
output …; déclaration d’un signal de sortie local au module
signal … in instruction end déclaration de signal local à instruction
Portée syntaxique du signal
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
21
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (4/10)
await attend l’occurrence d’un signal d’entréeawait S L’instruction s’arrête à la 1ère occurrence du signal d’entrée S
emit émet un signal de sortieemit S L’instruction émet le signal S instantanément
present … then … else … end instruction conditionnée à la présence d’un signal
present S then instruction1 else instruction2 endSi au début de l’instruction, le signal S est présent, alors exécution de instruction1 sinon exécution de instruction2
Instructions portant sur un signal
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
22
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (5/10)
await S; emit T
await immediate S;emit T
Délai immédiat / non immédiat
SS
SS TT
TTSS
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
23
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (6/10)
awaitcase S1 do intruction1case immediate S2 do intruction2case S3 do intruction3 end await
Si S2 est présent au début de l ’instruction, elle termine instantanément. Sinon, l’instruction 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.
Délai dépendant de plusieurs signaux
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
24
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (7/10)
abort … when … do … end préemption forteabort instruction1 when S do instruction2 end
L’instruction instruction1 est préemptée à l’occurrence du signal S (l’instruction instruction2 est alors exécutée)
Préemption forte
Partie optionnelle
abort loop
emit S;pause
end loopwhen Tdo
emit U;end
SS TT UUSS
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
25
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (8/10)
abort … when … do … end préemption faibleweak abort instruction1 when S do instruction2 end
L’instruction instruction1 est préemptée à la fin de son exécution à l’occurrence du signal S (l’instruction instruction2 est alors exécutée)
Préemption faible
Partie optionnelle
weak abort loop
emit S;pause
end loopwhen Tdo
emit U;end
SS TTUUSSSS
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
26
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (9/10)
abort … when … do … end
abort … when immediate … do … end
Immédiate / non immédiate préemption forte
TTabort
loopemit S;pause
end loopwhen Tdo emit U;end
TT UUabort
loopemit S;pause
end loopwhen immediate Tdo emit U;end
UUTTSS
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
27
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (10/10)
weak abort … when … do … end
weak abort … when immediate … do … end
Immédiate / non immédiate préemption faible
TTweak abort
loopemit S;pause
end loopwhen Tdo emit U;end
TTSSUU
weak abort loop
emit S;pauseend loop
when immediate Tdo emit U;end
SSUUTTSS
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
28
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (1/5)
halt instruction vide de durée infinieéquivalente à
looppause
end
sustain S maintien d’un signal jusqu’au prochain instant
équivalente à loop
emit S; pause
end
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
29
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (2/5)
every S do … end répétition équivalente à
await S;loop
abort …
when Send
do … upto Séquivalente à
abort… ; halt
when S
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
30
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (3/5)
trap T in … handle T do … end trap gestion d’exception
exit Ttrap T ininstruction1;end trap
Début de instruction1 simultané au début de l’instruction trap. Fin de l’instruction trap : - si instruction1 termine, alors l’instruction trap termine,- si une instruction exit T est exécutée avant la fin de instruction1, alors l’instruction trap termine (préemption faible de instruction1)
Partie optionnelle
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
31
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (4/5)
trap T in[instruction1; exit T]||[await S; exit T]end trap
équivalente à abort
instruction1when S
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
32
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (5/5)
trap U intrap T in
instruction1end 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.
Imbrication de gestion d’exceptions
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
33
Langage Esterel – syntaxe et sémantiqueEsterel / langage hôte
Compilation d’un 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 d’accès à ces données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
34
Langage Esterel – syntaxe et sémantiqueObjets d’interface (1/12)
Interface : objets importés ou exportés
Signaux et capteurs Données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
35
Langage Esterel – syntaxe et sémantiqueObjets d’interface (2/12)
Types prédéfinis
boolean integer float double string
false 123 5.76 « hello »true 12.8E-4
Opérateurs habituels du langage C
Types de données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
36
Langage Esterel – syntaxe et sémantiqueObjets d’interface (3/12)
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;
L’affectation (:=) et les opérateurs de comparaison (= et <>), utilisés dans les modules Esterel, doivent être définis dans les modules écrits dans le langage hôte :
Types de données
Opérateurs Esterel À définir en langage C Sous la forme de …
:= #define _T(x,y) (*(x)=y Macro
== int _eq_T(x,y) fonction à valeur 0 ou 1
<> int _ne_T(x,y) fonction à valeur 0 ou 1
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
37
Langage Esterel – syntaxe et sémantiqueObjets d’interface (4/12)
Constantes De type prédéfini
constant L=123 : integer;
D’un 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 = {…};
Données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
38
Langage Esterel – syntaxe et sémantiqueObjets d’interface (5/12)
Variables Définition de la portée d’une variable
var L:type in instruction
end var
var L := valeur_initiale : type in instruction
end var
Données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
39
Langage Esterel – syntaxe et sémantiqueObjets d’interface (6/12)
Fonctions Déclaration d’une fonction en Esterel :
function pgcd(integer,integer) : integer;
Appel d’une fonction en Esterelvar plusgranddiviseur : integer in…plusgranddiviseur := pgcd(a,b);…
end var
Définition de la fonction dans le langage hôteint pgcd(int x, int y) { …}
Fonctions et procédures
Liste des types de données
Type du résultat
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
40
Langage Esterel – syntaxe et sémantiqueObjets d’interface (7/12)
Procédures Déclaration d’une procédure en Esterel :
procedure inc_heure(heure)(integer);
Appel d’une procedure en Esterelvar 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) { …}
Fonctions et procédures
Liste des types de résultats
Liste des types de données
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
41
Langage Esterel – syntaxe et sémantiqueObjets d’interface (8/12)
Signauxinputinput A A,,BB, , CC; ; %% A, B et C sont 3 signaux d’entrée A, B et C sont 3 signaux d’entréeinputinput X X:integer; %:integer; % X :signal d’entrée valué par un X :signal d’entrée valué par un entierentieroutputoutput heure heure:= := midimidi: : timetime; ; %% heure : signal de sortie heure : signal de sortie%% valué par la valeur midi valué par la valeur midi
Capteurssensorsensor t t:integer; % :integer; % t est un capteur à valeur entièret est un capteur à valeur entière
Signaux et capteurs
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
42
Langage Esterel – syntaxe et sémantiqueObjets d’interface (9/12)
Relations sur les signaux d’entrée Supposées être garanties par l’environnement
Évitent la spécification de comportements non pertinents Optimisent la génération de code (minimisation de l’automate)
relationrelation A A##BB##CC; %; % A, B et C jamais ensemble A, B et C jamais ensemble
relationrelation A A=>=>XX; %; % si A est présent, alors X est présent si A est présent, alors X est présent
Signaux et capteurs
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
43
Langage Esterel – syntaxe et sémantiqueObjets d’interface (10/12)
Occurrence d’un signal d’entrée versus valeur
input input AA:integer;:integer;
……
await await AA;; % attend l’occurrence de A% attend l’occurrence de A
var var x x := ?:= ?AA : integer in : integer in
……
end varend var
…… Valeur d’un capteur
??S % valeur du capteur SS % valeur du capteur S
Signaux et capteurs
désigne la valeur de Adésigne la valeur de A
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
44
Langage Esterel – syntaxe et sémantiqueObjets d’interface (11/12)
Émission d’un signal de sortie valué
output output SS:integer;:integer;
……
var var x x := := 55 : integer in : integer in
……
emitemit S S((xx););
……
end varend var
……
Signaux et capteurs
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
45
Langage Esterel – syntaxe et sémantiqueObjets d’interface (12/12)
Expressions booléennes sur les signaux d’entrée
A A and notand not B B
B B andand C C or not (or not (A A andand X X))
Expressions « délai » sur les signaux d’entrée
AA A A and notand not B B
immediate [immediate [A A and notand not B B]]
3 3 timetime
Expressions sur les signaux
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
46
Langage Esterel – syntaxe et sémantiqueInstruction conditionnelle
Instruction « if »
ifif expression expression thenthen instruction1 instruction1
else else instruction2 instruction2
end ifend if
if if expression1 expression1 then then instruction1 instruction1
elsif elsif expression2expression2 then then instruction2instruction2
else else instruction3instruction3
end ifend if
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
47
Langage Esterel – syntaxe et sémantiqueInstanciation 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) à l’inté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 d’interface (et les déclarations de relations) du module fils sont supprimées ces signaux doivent être déclarés dans le module père
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
48
Langage Esterel – syntaxe et sémantiqueInstanciation 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 d’interface 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
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
49
Langage Esterel – syntaxe et sémantiqueInstanciation de modules (3/4)
Exemple Définition du module A
module A:input I;type T;constant initial:T;function somme(T,T):T;
…end module
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
50
Langage Esterel – syntaxe et sémantiqueInstanciation de modules (4/4)
Exemple Instanciation du module Amodule B:input E1,E2;type time;constant midi;function ajouter_heure(time,time):time;% instanciation sur des entiers et le signal E1run A1 / A[signal E1/I; % instanciation sur integer type integer/T; % et le signal E1 constant 1/initial; function +/somme]…run A2 / A[signal E2/I; % instanciation sur un type time type time/T; % et le signal E2 constant midi/initial; function ajouter_heure/somme]…end module
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
51
Langage Esterel – syntaxe et sémantiqueTâches (1/5)
Tâche : entité dont l’exécution est externe au module réactif et qui « prend du temps »
Instant de début de la tâche : instant d’exécution de l’instruction exec (activation)
Fin de la tâche : instant d’émission d’un signal dédié par l’instruction return
Lancement et signalisation de fin de tâches relèvent du système d’exploitation sous-jacent
Contrôle de la tâche (abort ou weak abort)
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
52
Langage Esterel – syntaxe et sémantiqueTâches (2/5)
Déclaration de tâches task unetache (type_de_variable,…)(type_d_expression,…)
Signal de retour d’une tâchereturn nomsignal
Permet de déclarer le signal retourné en fin d’exécution de la tâche
Exemple module M :
task T(float)(integer,integer);return R;… …
end module
cf. déclaration de procédures
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
53
Langage Esterel – syntaxe et sémantiqueTâches (3/5)
Lancement d’exécution de tâchesexec 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
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
54
Langage Esterel – syntaxe et sémantiqueTâches (4/5)
Variantes
exec T (…)(…) return R do instruction end exec
execcase T1 (…)(…) return R1 do instr1case T2 (…)(…) return R2 do instr2…case Tn (…)(…) return Rn do instrn
end exec
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
55
Langage Esterel – syntaxe et sémantiqueTâches (5/5)
Contrôle de la tâcheinput 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 à jourE avant R, x vaut toujours O.5
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
56
Langage Esterel – syntaxe et sémantiqueQuelques problèmes (1/4)
« Réincarnation » de signaux
outputoutput S1 S1,,S2S2;;
looploop
signalsignal I I in in
present present II then emit then emit S1S1 else emit else emit S2S2 end; end;
pause;pause;
emitemit I I;;
end signalend signal
end loopend loop
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
57
Langage Esterel – syntaxe et sémantiqueQuelques problèmes (2/4)
Absence de solution
var var xx : integer in : integer in
looploop x x := := 1 1 end loopend loop
end varend var
output output S S : integer;: integer;
emit emit SS(?(?SS+1);+1);
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
58
Langage Esterel – syntaxe et sémantiqueQuelques problèmes (3/4)
Absence de solution
module module MM::
outputoutput S S;;
present present S S else emit else emit S S endend
end moduleend module
… ou plusieurs solutions
module module MM::
outputoutput S S;;
present present S S then emit then emit S S endend
end moduleend module
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
59
Langage Esterel – syntaxe et sémantiqueQuelques problèmes (4/4)
Plusieurs solutions
module module MM::
outputoutput S1 S1;;S2S2;;
present present S1 S1 then emit then emit S2 S2 endend
||||
present present S2 S2 else emit else emit S1 S1 endend
end moduleend module
output output SS;;
emit emit SS(?(?SS););
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
60
Langage Esterel – syntaxe et sémantiqueInterface avec l’environnement (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 d’une fonction de nom R
void R() {…}
qui détermine les événements présents et absents à un instant d’exécution
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
61
Langage Esterel – syntaxe et sémantiqueInterface avec l’environnement (2/3)
Règles à observer Pour tout signal d’entré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 d’une 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 l’instruction Esterel emit S par un appel d’une fonction de nom R_O_S dans le langage hôteR_O_S();
Ecole des Mines de Nancy CSSEA - SI353b Langages synchrones
62
Généré automatiquement
Langage Esterel – syntaxe et sémantiqueInterface avec l’environnement (3/3)
void R_I_E(){. . .}
module R:
end module void R_O_S(){// traitement // correspondant // à l’émission // du signal S…}
void SSP_IT(){// récupération// du signal de// l’environnement…R_I_E();…R();…}
environnement
void R(){
}
emit S;
R_O_S();
output S;input E;