Mots clés : conception synchrone,
Signal, contraintes, non-déterminisme, système réactif
.
L'idée assez simple du modèle de conception
synchrone est de considérer qu'un programme plongé dans
un environnement (constitué de procédés, d'opérateurs,
d'autres programmes), interagit significativement avec cet
environnement au travers d'un ensemble fini de supports de
communication à des instants formant un ensemble dénombrable
partiellement ordonné. À chaque instant, plusieurs actions
(messages reÇus, émis, calculs...) peuvent être effectuées ;
elles sont alors simultanées et possèdent un même indice
temporel. L'écoulement du temps résulte des successions de
ces communications, mais aussi de changements explicites
décrits dans l'algorithme que le programme met en oeuvre (par
exemple pour une équation
yt = f
(xt - 1), la sortie y sera simultanée à chaque occurrence
suivante de l'entrée x).
Selon les formalismes, les sorties calculées sont, sauf
changement explicite dans le programme, soit simultanées aux
entrées qui ont provoqué leur calcul comme dans les langages
Esterel, Lustre ou Signal, soit produites à l'instant suivant
comme dans Statemate ou VHDL par exemple.
Le langage Signal [8], conÇu et mis en oeuvre dans le projet, est
de plus, comme Lustre, construit selon une approche flot de
données faisant d'un programme un système d'équations. À la
différence de ce qui se passe en Lustre, le système
d'équations d'un programme Signal décrit par une
relation des contraintes entre les signaux
d'entrée et de sortie du système ; ceci permet d'utiliser
Signal pour donner des spécifications partielles ou décrire
des comportements non déterministes. Cette banalisation
(néanmoins partielle) des entrées et des sorties permet en
outre la spécification et la programmation de systèmes
réactifs [HP85] mais aussi «pro-actifs»
(pouvant par exemple contraindre leurs entrées).