Chapitre 1 Approches synchrones Langage Esterel

62
Chapitre 1 Approches 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

description

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. Chapitre 1 Approches synchrones Langage Esterel. 2006-2007 Françoise Simonot-Lion ([email protected]). Documents complémentaires - PowerPoint PPT Presentation

Transcript of Chapitre 1 Approches synchrones Langage Esterel

Page 1: 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

Page 2: Chapitre 1 Approches synchrones Langage 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/

Page 3: Chapitre 1 Approches synchrones Langage Esterel

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

Page 4: Chapitre 1 Approches synchrones Langage Esterel

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

Page 5: Chapitre 1 Approches synchrones Langage Esterel

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

Page 6: Chapitre 1 Approches synchrones Langage Esterel

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

Page 7: Chapitre 1 Approches synchrones Langage Esterel

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

Page 8: Chapitre 1 Approches synchrones Langage Esterel

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)

Page 9: Chapitre 1 Approches synchrones Langage Esterel

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

Page 10: Chapitre 1 Approches synchrones Langage Esterel

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

Page 11: Chapitre 1 Approches synchrones Langage Esterel

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)

Page 12: Chapitre 1 Approches synchrones Langage Esterel

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

Page 13: Chapitre 1 Approches synchrones Langage Esterel

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 »

Page 14: Chapitre 1 Approches synchrones Langage Esterel

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

Page 15: Chapitre 1 Approches synchrones Langage Esterel

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)

Page 16: Chapitre 1 Approches synchrones Langage Esterel

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)

Page 17: Chapitre 1 Approches synchrones Langage Esterel

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) :

Page 18: Chapitre 1 Approches synchrones Langage Esterel

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

Page 19: Chapitre 1 Approches synchrones Langage Esterel

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

Page 20: Chapitre 1 Approches synchrones Langage Esterel

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

Page 21: Chapitre 1 Approches synchrones Langage Esterel

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

Page 22: Chapitre 1 Approches synchrones Langage Esterel

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

Page 23: Chapitre 1 Approches synchrones Langage Esterel

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

Page 24: Chapitre 1 Approches synchrones Langage Esterel

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

Page 25: Chapitre 1 Approches synchrones Langage Esterel

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

Page 26: Chapitre 1 Approches synchrones Langage Esterel

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

Page 27: Chapitre 1 Approches synchrones Langage Esterel

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

Page 28: Chapitre 1 Approches synchrones Langage Esterel

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

Page 29: Chapitre 1 Approches synchrones Langage Esterel

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

Page 30: Chapitre 1 Approches synchrones Langage Esterel

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

Page 31: Chapitre 1 Approches synchrones Langage Esterel

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

Page 32: Chapitre 1 Approches synchrones Langage Esterel

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

Page 33: Chapitre 1 Approches synchrones Langage Esterel

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

Page 34: Chapitre 1 Approches synchrones Langage Esterel

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

Page 35: Chapitre 1 Approches synchrones Langage Esterel

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

Page 36: Chapitre 1 Approches synchrones Langage Esterel

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

Page 37: Chapitre 1 Approches synchrones Langage Esterel

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

Page 38: Chapitre 1 Approches synchrones Langage Esterel

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

Page 39: Chapitre 1 Approches synchrones Langage Esterel

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

Page 40: Chapitre 1 Approches synchrones Langage Esterel

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

Page 41: Chapitre 1 Approches synchrones Langage Esterel

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

Page 42: Chapitre 1 Approches synchrones Langage Esterel

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

Page 43: Chapitre 1 Approches synchrones Langage Esterel

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

Page 44: Chapitre 1 Approches synchrones Langage Esterel

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

Page 45: Chapitre 1 Approches synchrones Langage Esterel

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

Page 46: Chapitre 1 Approches synchrones Langage Esterel

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

Page 47: Chapitre 1 Approches synchrones Langage Esterel

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

Page 48: Chapitre 1 Approches synchrones Langage Esterel

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

Page 49: Chapitre 1 Approches synchrones Langage Esterel

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

Page 50: Chapitre 1 Approches synchrones Langage Esterel

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

Page 51: Chapitre 1 Approches synchrones Langage Esterel

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)

Page 52: Chapitre 1 Approches synchrones Langage Esterel

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

Page 53: Chapitre 1 Approches synchrones Langage Esterel

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

Page 54: Chapitre 1 Approches synchrones Langage Esterel

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

Page 55: Chapitre 1 Approches synchrones Langage Esterel

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

Page 56: Chapitre 1 Approches synchrones Langage Esterel

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

Page 57: Chapitre 1 Approches synchrones Langage Esterel

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);

Page 58: Chapitre 1 Approches synchrones Langage Esterel

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

Page 59: Chapitre 1 Approches synchrones Langage Esterel

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););

Page 60: Chapitre 1 Approches synchrones Langage Esterel

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

Page 61: Chapitre 1 Approches synchrones Langage Esterel

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();

Page 62: Chapitre 1 Approches synchrones Langage Esterel

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;