Vrification de systmes matriels avec les DDD Systmes





![La plate-forme de vérification Pro. Me. La-SPIN [G. Holzmann 97] • Langage Pro. Me. La plate-forme de vérification Pro. Me. La-SPIN [G. Holzmann 97] • Langage Pro. Me.](https://slidetodoc.com/presentation_image_h/2878ba9ffdda44cf2b104039c6d154df/image-6.jpg)





























![Résultats sur exemples classiques (DDD plats) [BET – Majestic 04] • Calcul d’accessibilité + Résultats sur exemples classiques (DDD plats) [BET – Majestic 04] • Calcul d’accessibilité +](https://slidetodoc.com/presentation_image_h/2878ba9ffdda44cf2b104039c6d154df/image-36.jpg)










- Slides: 46
Vérification de systèmes matériels avec les DDD Systèmes spécifiés à un haut niveau d’abstraction DDD : Structure de données exploitant le partage et la hiérarchie Emmanuelle Encrenaz-Tiphène Maître de Conférences à l’Université Paris VI – LIP 6 En délégation CNRS au Laboratoire Spécification et Vérification (LSV) ENS-Cachan En collaboration avec Vincent Beaudenon E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 1
Préambule – Hardware / Software Codesign • Application : réseau de tâches communicantes – liens privés avec bufferisation (réseaux de Khan) – particularisation : données entières – buffers bornés – sélection • Exploration architecturale (différentes possibilités d’implantation des tâches) • Implantation matérielle (synthèse de haut niveau / synthèse des communications) • Chaîne de conception Disydent [Pétrot Augé et al, 03] E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 2
Vérification fonctionnelle de systèmes matériels • Simulations presque uniquement • Equivalence-Checking • Symbolic Model-Checking • Méthodes « semi-formelles » pour des blocs combinatoires / RTL pour des petits blocs (10 KG) prennent le pas sur SMC – LTL sur séquences bornées moniteurs incorporés dans la simulation – CTL à profondeur bornée déroulement explicite de l’arbre d’exécution • Démonstrations assistées (architectures spécifiques : cœurs de processeurs / traitement du signal) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 3
Notre objectif • Construire un Model-Checker Symbolique pour des systèmes décrits sous forme de graphe de tâches. • Représentation symbolique d’ensembles d’états du système + opérations ensemblistes ( , , ) – Données entières / structurées – Canaux de taille variable • Opérateurs Post et Pré sur la représentation symbolique de l’ensemble des états, associés à la sémantique des actions du graphe de tâches. E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 4
Plan de l’exposé • Modélisation de systèmes dans un sous-ensemble de Pro. Me. La • Représentation symbolique : Structure de donnée DDD – – – Représentation des ensembles d’états Opérations ensemblistes Homomorphismes pour instructions Pro. Me. La Introduction de la hiérarchie • Application à la vérification de propriétés CTL – Exemples classiques – Réseau VCI-SPIN • Conclusion E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 5
La plate-forme de vérification Pro. Me. La-SPIN [G. Holzmann 97] • Langage Pro. Me. La : description d’applications concurrentes, dynamiques, asynchrones, communication par buffers bornés et variables partagées • Vérification de propriétés de sûreté et de vivacité par exploration du graphe des états accessibles – Représentation explicite des états – Réduction de l’espace à analyser (techniques d’ordre partiel / compactage) • Applicable pour des systèmes "séquentiels" comportant 106 à 107 états E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 6
Un sous-ensemble de Pro. Me. La • Variables globales – Types scalaires (basés sur entier) / Type produit – Tableaux – Canaux (bornés) • Processus concurrents – – Variables locales Instructions gardées (affectations, lecture / écriture) Choix indéterministe Répétition indéterministe • Pas d’instanciation dynamique de processus (run est exclu) • Les processus n’ont pas de paramètres E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 7
Exemple de description proctype proc_port_in 0_0() { MOT mess; bit reserve; bit current_clock=0; mtype sortie_down; bit jeton = 1; variables locales do : : (clock == current_clock) -> current_clock = !current_clock; lecture dans un canal x 0_d 0_spin_data_in? mess-> if : : (((mess. addest >> level_num 0_0) & 3) == level_id 0_0) -> /* Traitement des ports DOWN. */ sortie_down = (mess. addest >> (level_num 0_0 -1)) & 1; affectation if garde : : (sortie_down == 0) -> poss_out 0_0? jeton; do : : écriture dans un canal x 0_d 0_spin_data_out!mess; if : : mess. tag == FIN -> atomic{poss_out 0_0!jeton; goto SUITE_DOWN; } : : else -> x 0_d 0_spin_data_in? mess; fi; … } 8 E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA
Représentation symbolique d’états Diagrammes de Décision de Données (DDD) Structure de donnée pour représenter les ensembles d’états. (LIP 6 / La. BRI ): arbres partagés. • projet Clovis [DGA 01] • Application aux réseaux de Petri étendus [ATPN 02] [FORTE 04] [FORTE 05] • Variables décisionnelles de type fini • Représentation des chemins menant à 1 ou T • Exploitation du partage des sous-arbres isomorphes • Opérations ensemblistes : parcours attelé des 2 DDD (polynômial) • Modification « la plus locale possible » : homomorphisme E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 9
DDD : Structure • Nœuds : variables • Arcs : valeur dans les entiers • Contrainte: un seul arc d’une étiquette donnée en sortie d’un nœud a 1 1 1 b 2 1 c 2 partage 1 1 c a b 1 2 2 c 1 1 Interprétation : ensemble de mots (affectations) menant au nœud 1 Efficacité : partage E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 10
DDD : Normalisation • Les chemins invalides ne sont pas représentés • Conséquence : domaine des variables inconnu a priori • Représentation de l’ensemble vide nœud terminal 0 a 1 1 b 1 normalisation c 2 1 2 c 0 1 a 0 1 partage b 1 2 2 c 1 1 Représentation canonique des DDD (classe d’équivalence) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 11
DDD : Opérations ensemblistes (1) Un DDD est un ensemble de mots : Opérations ensemblistes + * Exemple : a a a 2, 3 4 1, 3 2, 4 b b b 1 c 2, 6 3, 4 1 A 4 2 6 c 1 3 B E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA A * B 3 4 b 1 c b c 4 3 6 1 A*B 12
DDD : Opérations ensemblistes (2) Un DDD est un ensemble de mots : Opération de concaténation. Exemple : v 0 A . . . 1 v 1 B . . . A. B v 1 . . . 1 1 E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 13
DDD : Homomorphisme • Définition : d, d’ deux DDD bien définis Un homomorphisme est une fonction telle que : (0) = 0 (d) + (d’) = (d + d’) d d’ d’ d réunion 1 E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 1 14
Homomorphismes inductifs Homomorphisme défini localement (0) = 0 (1) = constante (d) = définition locale à la racine de d et ses valuations Exemple : affectation d’une valeur constante var=val e e x …. val Si e == var E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA var=val e …. var=val …. Sinon 15
Homomorphismes inductifs Affectation v 1 = Constante Set. Cst(var, val) (1) = T (une erreur) val e — Id Set. Cst(var, val) (e, x) = x e — Set. Cst(var, val) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA si e == var sinon 16
Autres homomorphismes inductifs • • • Set. Var (v 1, v 2) Set. Var. Expr (var, expr) Sel. Var. Cst (var, const) Sel. Exp (expr) … E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 17
DDD pour les programmes Pro. Me. La Un état du programme : • variables globales • chaque processus en cours d’exécution • son compteur ordinal • ses variables locales Etat initial = concaténation de toutes les variables dans un ordre figé Instruction Pro. Me. La = construction de deux homomorphismes Post: calcule les successeurs par l’application d’une instruction Pré : calcule les prédécesseurs potentiels résultants de l’exécution d’une instruction E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 18
Homomorphismes inductifs Promela-DDD • Affectation gardée 1. exp_g -> x : = 5; 2. … Set. Cst(pc, 2) o Set. Cst(x, 5) o Sel. Exp(pc==1 exp_g) • Indéterminisme 1. if : : exp_g 1 -> (2. ) … : : exp_g 2 -> (3. ) … fi; Set. Cst(pc, 2) o Sel. Exp(pc==1 exp_g 1) + 4. … Set. Cst(pc, 3) o Sel. Exp(pc==1 exp_g 2) • Ecriture dans un canal 1. c!x 2. … E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA Set. Cst(pc, 2) o Set. Var. Fifo(c, x) o Sel. Cst(pc==1) 19
Calcul de l’ensemble des états accessibles New = Init; Reached = ; While New loop tmp = New Forall process p loop Forall instruction i loop To = Postp, i(tmp); tmp = To + tmp; Endloop New = tmp reached Reached = tmp + reached Endloop Return Reached E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 20
Evaluation de formules CTL Opérateur Pré : Pb : Toutes les opérations ne sont pas inversibles : x = 4; Approche classique (2 à 3 passes) : • élargissement à toutes les valeurs possibles, puis • restriction aux états accessibles Opérateur ad-hoc en 1 passe Evaluation de "EF p" E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 21
Comparaison avec les BDD • Opérateurs Postp, i et Prép, i implantés sur la bibliothèque Bu. DDy [Lind-Nielsen, Reif Andersen CAV 99] – Représentation des opérations arithmétiques sur des vecteurs de bits – Domaine des variables déterminé a priori (type déclaré) • Traitements pour réaliser Postp, i(E) si i décrit x = y – – Un seul jeu de variable Abstraction de x dans E : E|x Construction de G = (x y) ( x y) Contrainte de E|x par G : E|x G E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 22
Résultats sur exemples classiques (DDD plats) • Dichotomie méthode énumérative / méthode symbolique – Systèmes fortement séquentiels jusqu’à 106 ou 107 états : SPIN donne de meilleurs résultats. (sliding window, Peterson, Bakery) – Systèmes fortement concurrents jusqu’à 1010 états (au delà si très réguliers) : BDD et DDD donnent de meilleurs résultats. (Philosophes, élection sur anneau) • BDD vs DDD – BDD avec réordonnancement dynamique et DDD statique sont comparables. – Lorsqu’un « bon ordre » peut être exploité, les DDD statiques présentent de meilleures performances que BDD ou DDD ordre qcq. – Limitations des DDD : ordre / gestion des expressions / longueur des chemins E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 23
Introduction de la hiérarchie dans les DDD (1) HDD : Les valuations des arcs sont des DDD i 2 a a 2 1 b 1 1 b b 3 2 3 c c 5 4 4 d 2 d c 4 5 1 1 DDD E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA c 1 d d 2 5 1 1 HDD 24
Introduction de la hiérarchie dans les DDD (2) • Les HDD sont des DDD qui bénéficient : – Augmentation du partage, – Réduction de la longueur des chemins de la racine vers 1. • Ajustement des homomorphismes – Propagation de l’homomorphisme au nœud suivant au même niveau de la hiérarchie, au nœud racine du DDD de niveau de hiérarchie inférieur – Occasionnellement, nécessité d’aplanir localement la hiérarchie E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 25
HDD pour Programme Pro. Me. La variable scalaire variables globales canal variable produit processus compteur ordinal … … variables locales Saturation Hiérarchisation de l’état E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA Lors du calcul de l’ensemble des états accessibles, réordonner le franchissement des instructions pour saturer les couches basses du HDD 26
Résultats sur exemples classiques (HDD) • Confirment la tendance observée avec les DDD plats : – SPIN reste meilleur sur les systèmes très séquentiels (Sliding window, Peterson, Bakery) – HDD + saturation sont bien meilleurs que les BDD ou les DDD plats sur des systèmes très parallèles (jusqu’à 1000 philosophes, jusqu’à 100 électeurs sur l’anneau) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 27
Réseau VCI-SPIN (1) Apparition d’un interblocage SPIN network VCI-SPIN wrappers E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA I 3 I 4 T 3 T 4 28
Réseau VCI-SPIN (2) Evitement de l’interblocage : séparer les requêtes et réponses sur les liens descendants SPIN network VCI-SPIN wrappers E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA I 3 I 4 T 3 T 4 29
Vérification avec SPIN et HDD • Modèle Pro. Me. La – Pour chaque routeur : • 1 processus par port d’entrée (4) • 1 mécanisme d’exclusivité d’accès par port de sortie (4) – Pour chaque initiateur : • 2 processus (1 émetteur requête / 1 récepteur réponse) – Pour chaque cible : • 1 processus – Messages bufferisés en entrées de chaque port (buffers de taille 1) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 30
Vérification avec SPIN • Propriété de vivacité «émetteur 0 pourra toujours émettre un nouveau message » • Configuration à 2 routeurs, initiateurs et cibles fixés • Synchronisation des processus • Taille des messages fixée (1 à 7 paquets) Vivacité, n=6 : propriété vérifiée en 36000 s et 100 MB Accessibilité, n = 6 : construit en 512 s et 9 MB E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 31
Vérification avec HDD • Propriété de sûreté : Absence d’état puits • Configurations à 2 et 4 routeurs, initiateurs et cibles variables • Taille des messages variable (de 1 à 7 paquets) Pour la configuration restreinte : Accessibilité, n=6, synchrone, 2 routeurs : 33 s, 139 MB Pour les configurations plus libres : Accessibilité, n=1 à 7, asynchrone, 4 routeurs, config libre : 7881 s et 492 MB ou : 519 s et 1, 5 GB E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 32
Conclusion • Construction d’un model-checker pour des systèmes statiques décrits en Pro. Me. La • DDD : Représentation intéressante pour les systèmes présentant un fort parallélisme – Hiérarchie – Saturation • Analyse complémentaire à l’outil SPIN – Certains systèmes sont analysés très rapidement par SPIN et pas de résultats avec HDD, et réciproquement – Propriétés de vivacité / de sûreté E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 33
Perspectives • Amélioration de l’algorithmique sur les HDD Éviter les applatissements locaux • Augmenter la prise en compte de la hiérarchie Découpage dichotomique du système • Extension à des systèmes dynamiques E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 34
E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 35
Résultats sur exemples classiques (DDD plats) [BET – Majestic 04] • Calcul d’accessibilité + une propriété " AG AF but atteint « Temps de calcul (en s) / Mémoire nécessaire (en MB) • Philosophes SPIN 15 : 2251/1067 50: -/- BDD 380+1200/96 -/- DDD 18 K+-/397 -/- DDD-O 54+5/30 8006/996 DDD 34+5/11 4533+-/663 DDD-O 37+3/11 716+-/77 • Election sur anneau SPIN 6 : 262/144 10: -/- BDD 5056+5394/144 -/- E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 36
Résultats sur exemples classiques (DDD plats) • Sliding window SPIN 2 : 0/8 3 : 29/450 4 : -/- BDD 552+221/102 65 K +63 K /332 -/- DDD 486+142/18 480 K + - /565 -/- BDD 17+39 /93 470 K + - /900 DDD 7+4/6 -/- BDD 50+0/94 1231+0/93 -/- DDD 17+0/9 379+5/46 61901+47/455 DDD-O 662+206/17 480 K + -/475 -/- • Exclusion Peterson SPIN 3 : 0/6 5 : -/- • Bakery SPIN 4 : 0/5 5 : 1385/6 6 : -/- E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 37
Résultats sur exemples classiques (HDD) Calcul d’accessibilité uniquement • Philosophes DDD 15 : 18 K+-/397 50: -/1000: -/- DDD-O 54+5/30 8006/996 -/- HDD 25/16 3308/532 -/- HDD-sat 0/2 1/9 258/1343 DDD-O 37+3/11 716+-/77 -/-/- HDD 6/4 333/61 9891/771 -/- HDD-sat 0/4 2/14 14/65 443/1866 • Election sur anneau DDD 6 : 34+5/11 10: 4533+-/663 20: -/100 : -/- • Systèmes séquentiels : Amélioration par rapport aux DDD plats mais moins bons que SPIN E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 38
DDD : Approximation • Contrainte : un seul arc d’une étiquette donnée en sortie d’un nœud • Conséquence : des opérations peuvent conduire à des résultats indéterminés • Représentation de l’approximation nœud terminal T a 1 1 1 a 2 T 2 b 1 • DDD bien défini : absence de nœud terminal T • Relation « mieux-défini » : relation d’ordre sur les DDD 1 • Bonnes propriétés algébriques des opérations E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 39
DDD : Opérations (2) Exemple d’opération faisant apparaître une approximation a 1 a 2 1 1 c 2 c 0 a + a 3 1 E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 2 1 1 a 2 c 0 1 3 a = a T 2 1 2 c 0 1 40
DDD : Homomorphismes • Définition : d, d’ deux DDD bien définis Un homomorphisme est une fonction telle que : (0) = 0 (d) + (d’) = (d + d’) • Exemples d * Id Id d Id. d 1 + 2 1 o 2 • Cas général : d, d’ deux DDD (0) = 0 (d) + (d’) (d + d’) d d’ (d) (d’) E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 41
DDD : Homomorphismes inductifs (1) • Famille d’homomorphismes i définis localement i (0) = 0 i (T) = T i (1) = ci (une constante) i (d) = définition locale à la racine de d et à ses valuations • Exemple Set. Cst(var, val)(1) = T Set. Cst(var, val)(e, x) = E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA val e — Id si e = var x e — Set. Cst(var, val) sinon 42
DDD : Homomorphismes inductifs (2) 1 Set. Cst(b, 2) a 2 b c 0 1 1 0 = Set. Cst(b, 2) (a — b — 1 ) + 2 1 Set. Cst(b, 2) (a — c — 1 ) 1 1 1 0 0 Set. Cst(b, 2) (a — b — 1 ) = a — Set. Cst(b, 2)(b — 1 ) 1 2 = a — b — Id(1) 1 2 = a — b — 1 2 2 1 1 Set. Cst(b, 2) (a — c — 1 ) = a — Set. Cst(b, 2)(c — 1 ) 2 1 = a — c — Set. Cst(b, 2)(1) 2 1 = a — c — T E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 43
DDD : Homomorphismes inductifs (3) Exemple : var 1 = var 2 Set. Var(var 1, var 2)(1) = 1 Set. Var(var 1, var 2)(e, x) = Down(var 1, var 2) si e = var 1 x e — Set. Cst(var 1, x) si e = var 2 x e — Set. Var(var 1, var 2) sinon Down(var 1, var 2)(1) = T x x var 1 — e — Id si e = var 2 Down(var 1, var 2)(e, x) = Up(e, x) o Down(var 1, var 2) sinon Up Up(var, val)(1) = T x val Up(var, val)(e, x) = e — var — Id E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 44
DDD : Homomorphismes inductifs (4) Exemple d’exécution de Set. Var : b = d 1 2 3 4 Set. Var(b, d) (a — b — c — d — 1) 1 2 3 4 a — Set. Var(b, d) (b — c — d — 1) 3 4 1 a — Down(b, d) (c — d — 1) 1 4 a — Up(c, 3) o Down(b, d) (d — 1) 1 4 4 a — Up(c, 3) (b — d — Id(1)) 1 4 4 a — Up(c, 3) (b — d — 1) 1 3 4 4 a — b — c — d — 1 E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA 45
Homomorphismes inductifs Affectation V 1 = V 2 Set. Var(v 1, v 2) (1) = T (une erreur) Set. Var(v 1, v 2) (e, x) = Down(v 1, v 2) e — Set. Cst(v 1, x) e — Set. Var(v 1, v 2) si e == v 1 si e == v 2 sinon Down(v 1, v 2 ) (1) = T Down (v 1, v 2) (e, x) = v 1 — e — Id Up(e, x) o Down(v 1, v 2) Up(var, val)(1) = T Up(var, val)(e, x) = e — var — Id E. Encrenaz-Tiphène, 04/11/05, séminaire TIMA si e == v 2 sinon 46