670 likes | 923 Views
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 (simonot@loria.fr). Documents complémentaires
E N D
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 1Approches synchronesLangage Esterel 2006-2007 Françoise Simonot-Lion (simonot@loria.fr) 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
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/ CSSEA - SI353b Langages synchrones
activation environnement Lire données Traiter Ecrire résultat Réponse au rythme du système t activation t Lire données Ecrire résultat environnement Traiter t environnement Recevoir données Traiter Emettre résultat Problé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 CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
Tâche A delay 60; B.MINUTE; ... Tâche B ... accept MINUTE; ... Problè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 ») CSSEA - SI353b Langages synchrones
Une solution : les langages synchrones Objectif : fournir des primitives de programmation permettant de décrire l’automate 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 d’un programme synchrone fournit l’automate et vérifie des propriétés sur le contrôle CSSEA - SI353b Langages synchrones
entrée sortie entrée sortie entrée sortie instant d’exécution activation activation activation Les langages synchrones - principes (1/5) • Le comportement du système est une suite d’ « instants d’exécution » non entrelacés • Instants d’exécution, réaction, temps discret • 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) CSSEA - SI353b Langages synchrones
TEMPS PHYSIQUE (horloge) TEMPS MULTIFORME DISCRET Les langages synchrones - principes (2/5) Le train doit s’arrêter en moins de 10 secondes Evénements : arrêt, seconde L’occurrence de l’événement arrêt doit précéder la 10ème occurrence de l’événement seconde Le train doit s’arrêter en moins de 100 mètres Evénements : arrêt, mètre L’occurrence de l’événement arrêt doit précéder la 100ème occurrence de l’événement mètre CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
TOP REQ ACQ REQ OQP TOP TOP ALARME 0 REQ / ACQ REQ / OQP 1 2 TOP / ALARME TOP / . TOP et REQ / ALARME TOP et REQ / ALARME Les langages synchrones - principes (4/5)Un exemple / suite CSSEA - SI353b Langages synchrones
Les langages synchrones - principes (5/5) • 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) CSSEA - SI353b Langages synchrones
Les 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 CSSEA - SI353b Langages synchrones
Langage Esterel - syntaxe et sémantiqueIntroduction (1/4) 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 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 d’aiguillage 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 » CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
Langage Esterel - syntaxe et sémantiqueIntroduction (3/4) Exemple de programme Esterel moduleprogreact1: input seconde; output minute; every60 seconde do emit minute; end every end module Un programme Esterel est compilé dans un langage hôte (par exemple le langage C) CSSEA - SI353b Langages synchrones
Langage Esterel - syntaxe et sémantique Introduction (4/4) Evénement : ensemble d’occurrences simultanées de signaux Histoire : suite d’événements Exemple : un compteur de vitesse signaux d’entrée non valués :seconde, metre signal de sortie valué :vitesse(vitesse en m/s) - émis à chaqueseconde Exemple d’histoire (metre) (metre) (metre) (seconde, vitesse(3)) (metre) (metre, seconde , vitesse(2)) (seconde , vitesse(0)) CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueStructure d’un programme • Programme = suite de modules • Structure d’un module (mots clés en rouge) : module nom_du_module : % partie déclaration (objets d’interface) . . . % corps du programme (instructions) . . . end module CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (1/10) • ; séquence instruction1;instruction2 Le début de l’instruction est simultané au début de instruction1 Le début de instruction2 est simultané à la fin de instruction1 La fin de l’instruction est simultanée à la fin de instruction2 • ||parallélisme instruction1||instruction2 Le 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (2/10) • nothing ne fait rien en temps nul • pause un instant Suspend l’exécution jusqu’au prochain instant • loop … endboucle infinie loop instruction end Répète instruction en séquence un nombre infini de fois • repeat … times … endboucle finie repeat 5 times instructionend Répète instruction en séquence 5 fois CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (3/10) Portée syntaxique du signal • 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (4/10) Instructions portant sur un signal • await attend l’occurrence d’un signal d’entrée await S L’instruction s’arrête à la 1ère occurrence du signal d’entrée S • emit émet un signal de sortie emit 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 end Si au début de l’instruction, le signal S est présent, alors exécution de instruction1 sinon exécution de instruction2 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions 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 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. CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (7/10) Préemption forte • abort … when … do … end préemption forte abort 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) Partie optionnelle • abort • loop • emit S; • pause • end loop • when T • do • emit U; • end S T U S CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions réactives primitives (8/10) Préemption faible • abort … when … do … end préemption faible weak 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) Partie optionnelle • weak abort • loop • emit S; • pause • end loop • when T • do • emit U; • end U S S T S CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions 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 S;pause • end loop • when T • do emit U;end S T U T • abort • loop • emit S;pause • end loop • when immediate T • do emit U;end U T CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions 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 S;pause • end loop • when T • do emit U;end S T T S U • weak abort • loop • emit S;pause • end loop • when immediate T • do emit U;end T CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (1/5) • halt instruction vide de durée infinie équivalente à loop pause end • sustain Smaintien d’un signal jusqu’au prochain instant équivalente à loop emit S; pause end CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (3/5) Partie optionnelle • trap T in … handle T do … end trapgestion d’exception • exit T trap T in instruction1; end trap Début de instruction1 simultané au début de l’instructiontrap. 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) CSSEA - SI353b Langages synchrones
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 instruction1 when S CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstructions dérivées (5/5) Imbrication de gestion d’exceptions 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. CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (1/12) • Interface : objets importés ou exportés Signaux et capteurs Données CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (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; 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 : CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (4/12) Données • 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 = {…}; CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (5/12) Données • 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (6/12) Fonctions et procédures • Fonctions • Déclaration d’une fonction en Esterel : function pgcd(integer,integer) : integer; • Appel d’une 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (7/12) Fonctions et procédures • Procédures • Déclaration d’une procédure en Esterel : procedure inc_heure(heure)(integer); • Appel d’une 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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (8/12) Signaux et capteurs • Signaux input A,B, C; % A, B et C sont 3 signaux d’entrée input X:integer; % X :signal d’entrée valué par un entier output heure:= midi: time; % heure : signal de sortie % valué par la valeur midi • Capteurs sensor t:integer; % t est un capteur à valeur entière CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (9/12) Signaux et capteurs • 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) relation A#B#C; % A, B et C jamais ensemble relation A=>X; % si A est présent, alors X est présent CSSEA - SI353b Langages synchrones
désigne la valeur de A Langage Esterel – syntaxe et sémantiqueObjets d’interface (10/12) Signaux et capteurs • Occurrence d’un signal d’entrée versus valeur input A:integer; … await A; % attend l’occurrence de A var x := ?A : integer in … end var … • Valeur d’un capteur ?S % valeur du capteur S CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (11/12) Signaux et capteurs • Émission d’un signal de sortie valué output S:integer; … var x := 5 : integer in … emit S(x); … end var … CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueObjets d’interface (12/12) Expressions sur les signaux • Expressions booléennes sur les signaux d’entrée A and not B B and C or not (A and X) • Expressions « délai » sur les signaux d’entrée A A and not B immediate [A and not B] 3 time CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstruction conditionnelle • Instruction « if » if expression then instruction1 else instruction2 end if if expression1 then instruction1 elsif expression2 then instruction2 else instruction3 end if CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstanciation de modules (2/4) • Renommage [signalnom_dans_module_père / nom_dans_module_fils, …; constantnom_dans_module_père / nom_dans_module_fils, …; functionnom_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 CSSEA - SI353b Langages synchrones
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 CSSEA - SI353b Langages synchrones
Langage Esterel – syntaxe et sémantiqueInstanciation 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 / 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 CSSEA - SI353b Langages synchrones