12.07.2015 Views

Document - Institut d'Informatique et Mathématiques Appliquées de ...

Document - Institut d'Informatique et Mathématiques Appliquées de ...

Document - Institut d'Informatique et Mathématiques Appliquées de ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

I.2 Les langages <strong>de</strong> <strong>de</strong>scription <strong>de</strong> matériel3 L'intégration <strong>de</strong> métho<strong>de</strong>s <strong>de</strong> vérification formelle au sein d'un environnement<strong>de</strong> CAO <strong>de</strong> circuits, afin <strong>de</strong> proposer la preuve formelle en alternative ou encomplément à la simulation ou au test, nécessite <strong>de</strong> pouvoir raisonner à partir d'une<strong>de</strong>scription faite dans un (sous-ensemble d'un) langage <strong>de</strong> <strong>de</strong>scription <strong>de</strong> matériel(Hardware Description Language, HDL).3 Ces langages ont vu le jour à la fin <strong>de</strong>s années 1960, dans le but <strong>de</strong> décrire <strong>et</strong>simuler <strong>de</strong>s circuits.Entre 1968 <strong>et</strong> 1975, prolifération <strong>de</strong> langages (<strong>et</strong> simulateurs), couvrant diversniveaux d'abstraction. Tentative <strong>de</strong> standardisation à partir <strong>de</strong> 1973, avec le proj<strong>et</strong>CONLAN (CONsensus LANguage).A l'heure actuelle, <strong>de</strong>ux standards IEEE : Verilog <strong>et</strong> VHDL.3 Généralement, les langages <strong>de</strong> <strong>de</strong>scription <strong>de</strong> matériel offrent plusieurs niveaux<strong>de</strong> <strong>de</strong>scription, parmi lesquels :• Algorithmique : modélisation <strong>de</strong> l'algorithme que le circuit doit réaliser.• Comportemental (ou système) : modélisation du comportement du circuit(automate, réseau <strong>de</strong> Pétri,...).• Transfert <strong>de</strong> registres (RTL) : modélisation du circuit par <strong>de</strong>s équations (quiexpriment la mise à jour <strong>de</strong>s registres).Notion <strong>de</strong> temps d'exécution, <strong>de</strong>scriptions synchronisées par une horlogeexplicite.• Portes logiques : modélisation comme une interconnexion <strong>de</strong> porteslogiques.6


Notion <strong>de</strong> temps d'exécution (temps <strong>de</strong> traversée <strong>de</strong>s portes).Dans une <strong>de</strong>scription hiérarchique, on trouve un interconnexion <strong>de</strong>composants, eux-mêmes pouvant être vus au niveau portes.3 Verilog. http://www.verilog.com/• né au début <strong>de</strong>s années 1980 (Gateway Design Automation), avec lesimulateur logique Verilog-XL• mis dans le domaine public en 1990 par Ca<strong>de</strong>nce (acquéreur <strong>de</strong> GatewayDesign Automation)• standardisé par l'IEEE en 1995 (IEEE Std. 1364-1995)• niveaux algorithmique, RTL, portes logiques <strong>et</strong> transistors3 VHDL.• développement entrepris en 1981 par le Département <strong>de</strong> la Défense <strong>de</strong>sUSA (DoD), industriels largement impliqués dans le processus <strong>de</strong>standardisation• premier manuel <strong>de</strong> référence fin 1984, <strong>et</strong> premiers outils en 1986 (vraimentdisponibles en 1988)• standardisé par l'IEEE en 1987, révision en 1993 (groupes <strong>de</strong> travailsynthèse <strong>de</strong> haut niveau, simulation digital/analogique, vérificationformelle,…)• niveaux algorithmique, RTL <strong>et</strong> portes logiques3 Quelques mots sur SystemC. http://www.systemc.org/• version préliminaire (0.9) fin 1999 (Synopsys <strong>et</strong> CoWare).7


Diverses releases <strong>de</strong>puis, actuellement version 2.2.Standard IEEE 1666 en Décembre 2005.• bibliothèque C++ pour la <strong>de</strong>scription <strong>de</strong> systèmes matériels(comportements concurrents, notion <strong>de</strong> temps,...) + noyau <strong>de</strong> simulation• TLM (Transactional Level Mo<strong>de</strong>ling) : cosimulation matérielle/logicielleau niveau transactionnel (communications).Dans la suite <strong>de</strong> ce cours, nous discuterons principalement l'intégration <strong>de</strong>smétho<strong>de</strong>s formelles dans le processus <strong>de</strong> conception, <strong>et</strong> le lien entre représentationsformelles <strong>et</strong> <strong>de</strong>scriptions en langage <strong>de</strong> <strong>de</strong>scription <strong>de</strong> matériel, en nousconcentrant sur VHDL.8


II. GENERALITESII.1 Deux gran<strong>de</strong>s approchesLes métho<strong>de</strong>s <strong>et</strong> techniques utilisées pour garantir la correction sont variées. Onpeut grossièrement i<strong>de</strong>ntifier <strong>de</strong>ux gran<strong>de</strong>s approches.3 Approche vérification à posteriori :Description <strong>de</strong> la réalisation(VHDL, C,…)traductionmodèle formeldémonstrateurs généraux outils spécialisés(equivalence checking, mo<strong>de</strong>l checking)3 Approche conception correcte :Spécification <strong>de</strong> haut niveau(langage formel)transformations préservant la correction(raffinements)réalisation(niveau abstrait)synthèseréalisation correcte par construction(niveau concr<strong>et</strong>)9


Par exemple, la métho<strong>de</strong> B [Ab96] perm<strong>et</strong> <strong>de</strong>s étapes successives <strong>de</strong>raffinements, assorties d'obligations <strong>de</strong> preuve.3 Dans tous les cas (conception correcte ou vérification a posteriori), unemodélisation formelle du problème est indispensable, une phase <strong>de</strong> traductionpourra donc être nécessaire.3 Remarquons que, suivant le contexte, divers niveaux d'abstraction peuvent êtremis en jeu (comportemental, machine d'états, RTL, structurel,...) <strong>et</strong> certainsaspects peuvent être pris en compte sous diverses formes, par ex. au niveautemporel (modélisation <strong>de</strong>s r<strong>et</strong>ards ou pas, horloge <strong>de</strong> synchronisation,....)II.2 Les outils <strong>de</strong> vérification3 Systèmes <strong>de</strong> preuve formelle Æ <strong>de</strong>ux grands axes :• outils dits d' "equivalence checking" ou <strong>de</strong> "mo<strong>de</strong>l checking" (approchealgorithmique)• systèmes <strong>de</strong> démonstration automatisée (approche déductive)Depuis quelques années, diverses tentatives <strong>de</strong> développement d'outils où les<strong>de</strong>ux approches coopèrent.3 Equivalence checkers :• preuve <strong>de</strong> l'équivalence <strong>de</strong> 2 circuits séquentiels Æ preuve d'équivalence<strong>de</strong> 2 machines d'états finis.• pour <strong>de</strong>s machines ayant <strong>de</strong>s espaces d'états i<strong>de</strong>ntiques (correspondanceentre les éléments mémorisants) <strong>et</strong> un même état initial Æpreuve10


d'équivalence entre les parties combinatoires (i.e. équivalence pour lesfonctions <strong>de</strong> sortie <strong>et</strong> les fonctions <strong>de</strong> transition d'état).3 Mo<strong>de</strong>l checkers :• Mo<strong>de</strong>l checking peut se traduire par vérification par évaluation sur unmodèle.On cherche à vérifier si une représentation <strong>de</strong> notre système est un modèled'une formule <strong>de</strong> logique temporelle F• le modèle fait intervenir la notion <strong>de</strong> relation d'ordre temporel. logiques temporelles :• linear time (la relation d'ordre est totale)• ou branching time.Par exemple LTL, CTL, m-calcul,… propriétés dites <strong>de</strong> "sûr<strong>et</strong>é" (saf<strong>et</strong>y) ou <strong>de</strong> "vivacité" (liveness).3 Systèmes <strong>de</strong> démonstration automatisée :• démonstrateurs automatiques• assistants <strong>de</strong> preuves : utilisation <strong>de</strong> "tactiques" pour vali<strong>de</strong>r la preuve <strong>de</strong>l'utilisateurDéveloppement dès les années 1970. A l'heure actuelle, il existe une gran<strong>de</strong>variété <strong>de</strong> systèmes, plus ou moins automatiques. Suivant les cas, ils sontconçus pour :• logique classique du premier ordre• logique du premier ordre + induction (ACL2)• spécialisés pour raisonner sur <strong>de</strong>s théories équationnelles (RRL, OBJ3,…)11


• logiques d'ordre supérieur (HOL, PVS, Coq) ...II.3 ExemplesVoyons <strong>de</strong>ux p<strong>et</strong>its exemples très simples <strong>de</strong> vérification d'équivalence <strong>et</strong> <strong>de</strong>preuve <strong>de</strong> propriétés temporelles.3 On peut vouloir vérifier l'équivalence <strong>de</strong> <strong>de</strong>ux versions d'un circuit séquentiel,reconnaisseur <strong>de</strong> co<strong>de</strong> BCD (Binary Co<strong>de</strong>d Decimal).S 3S 4IS1S2OIS 1S 2OS 3On remarque qu'ici il n'y a pas correspondance <strong>de</strong>s espaces d'état.12


3 Pour le système <strong>de</strong> contrôle <strong>de</strong> feux tricolores ci-<strong>de</strong>ssous (feux sur une routeprincipale <strong>et</strong> sur une route secondaire), on peut vouloir vérifier <strong>de</strong>s propriétéstemporelles, comme par exemple le fait que l'arrivée <strong>de</strong> voitures sur la routesecondaire (un détecteur les repère) fera bien passer au vert le feucorrespondant (<strong>et</strong> au rouge l'autre feu !).De façon générale, si l'on n'utilise pas <strong>de</strong> métho<strong>de</strong>s <strong>de</strong> raffinement dont il estgaranti qu'elles préservent la correction, le problème va se poser <strong>de</strong> déterminerdans quelle mesure le comportement espéré est respecté lorsque l'on <strong>de</strong>scend dansles niveaux d'abstraction décrits dans la section I.2 : fonctionnalité <strong>et</strong>/ou diversespropriétés (temporelles) préservées ? Il peut s'agir également <strong>de</strong> vérifier lacorrection d'une optimisation, au même niveau d'abstraction.13


III. VERIFICATIONS TEMPORELLES (APERÇU)III.1 Mo<strong>de</strong>l-checking - CTL3 Un mo<strong>de</strong>l checker est utilisé dès qu'on cherche à vérifier si notre système estun modèle d'une formule <strong>de</strong> logique temporelle F [CE81], [Mc93]. Il faut quele modèle soit fini (<strong>et</strong> <strong>de</strong> taille raisonnable), le circuit peut donc être considéréà tout niveau <strong>de</strong> représentation garantissant la finitu<strong>de</strong> (une représentationalgorithmique au niveau arithmétique, par exemple, est a priori exclue).3 Les modèles sont généralement <strong>de</strong>s systèmes <strong>de</strong> transitions étiqu<strong>et</strong>és(exécutions d'un automate, d'une spécification écrite dans une algèbre <strong>de</strong>processus,…).Quel que soit le modèle, il fait intervenir une relation d'ordre temporel (lastructure sous-jacente est une structure <strong>de</strong> Kripke).Structure <strong>de</strong> Kripke : (S,


Remarque : définition <strong>de</strong>s autres opérateursf ⁄ g = ÿ (ÿ f Ÿ ÿ g)AF f = A(true U f), EF f = E(true U f) eventuallyAG f = ÿ E(true U ÿ f), EG f = ÿ A(true U ÿ f)globallyIII.2 Quelques outils3 Il existe à l'heure actuelle divers outils commerciaux pour la preuve <strong>de</strong>propriétés, parmi eux RuleBase (IBM) [IB], ou Solidify (Averant) [Av].Voir [Sur] pour une comparaison d'outils commerciaux <strong>de</strong> mo<strong>de</strong>l checking <strong>et</strong>d'equivalence checking (datant <strong>de</strong> Nov. 2001).3 Parmi les outils domaine public, SPIN (G.Holzmann, Bell Labs) [Spi], perm<strong>et</strong>la simulation <strong>et</strong> la vérification d'algorithmes répartis, <strong>et</strong> notamment lavérification <strong>de</strong> propriétés exprimées en logique temporelle linéaire LTL.En cas d'échec, une trace d'exécution peut être "rejouée" par simulation.Les <strong>de</strong>scriptions sont faites en Promela : <strong>de</strong>scription <strong>de</strong> chaque processus <strong>et</strong> <strong>de</strong>sinteractions entre les processus (communication par FIFOs, par ren<strong>de</strong>z-vous,ou par variables partagées).3 L'outil Evaluator <strong>de</strong> CADP, Construction and Analysis of DistributedProcesses (INRIA Rhône-Alpes <strong>et</strong> Verimag) [Cad], perm<strong>et</strong> la vérification <strong>de</strong>propriétés temporelles écrites en m-calcul modal, sur <strong>de</strong>s <strong>de</strong>scriptions faites enLOTOS.3 Le système VIS ("Verification Interacting with Synthesis", Berkeley) [Vis]propose un environnement pour la simulation <strong>et</strong> la synthèse logique <strong>de</strong> FSMs.Il offre la possibilité <strong>de</strong> faire <strong>de</strong>s vérifications <strong>de</strong> propriétés exprimées en CTL.16


Il propose un front-end pour un sous-ensemble du langage Verilog (transformédans le format BLIF-MV utilisé par VIS).3 Le système SMV (Ken McMillan, Carnegie-Mellon puis Ca<strong>de</strong>nce) [Smv] estun outil basé sur les BDDs, qui perm<strong>et</strong> le mo<strong>de</strong>l checking symbolique <strong>de</strong>formules CTL sur <strong>de</strong>s <strong>de</strong>scriptions d'automates (ou même <strong>de</strong> réseauxd'automates avec variables partagées).Les <strong>de</strong>scriptions sont faites dans un langage maison, très déclaratif, qui perm<strong>et</strong>d'exprimer l'évolution <strong>de</strong> l'état global du système par la mise à jour <strong>de</strong>svariables (relation "next"). De telles <strong>de</strong>scriptions sont très proches, dansl'esprit, <strong>de</strong> <strong>de</strong>scriptions VHDL comportementales ou RTL synchrones. Laconstruction d'un réseau synchrone d'automates se fait comme l'interconnexion<strong>de</strong> circuits logiques ("modules" interconnectés par leurs ports d'E/S).SMV exhibe un contre-exemple en cas d'échec.III.3 Exemple3 Considérons l'exemple d'un ascenseur dans un immeuble à 3 niveaux. Cesystème a 6 entrées : les 3 boutons intérieurs (e1, e2, e3) <strong>et</strong> les 3 boutonsd'appels à chaque niveau (req1, req2, req3).Trois signaux r1, r2, <strong>et</strong> r3, servent à mémoriser les requêtes. Suivant lesrequêtes, la partie contrôle positionne les signaux go1, go2, <strong>et</strong> go3, <strong>et</strong> lesignal up qui indique la direction du mouvement. Elle comprend 8 états :• chaque état ATi correspond à un arrêt au niveau i, <strong>et</strong> chaque état ATiacorrespond à un départ du niveau i17


• les états B12 <strong>et</strong> B23 correspon<strong>de</strong>nt respectivement à <strong>de</strong>s déplacementsentre les niveaux 1 <strong>et</strong> 2, <strong>et</strong> 2 <strong>et</strong> 3.Les transitions d'états peuvent être représentés par la figure ci-<strong>de</strong>ssousAT1a1---B12AT2a10-0 -011-011-1--10-0B23AT3a01--0-1-1-0--10---1-1--0 -1-1-1-0 --11AT1AT2AT3Arrow labelling : go1 go2 go3 up3 La <strong>de</strong>scription <strong>de</strong> ce système, transitions d'états <strong>et</strong> mises à jour <strong>de</strong>s signaux, estla suivante, dans le format d'entrée <strong>de</strong> SMV :MODULE main(e1, e2, e3, req1, req2, req3){/* E/S */input e1, e2, e3, req1, req2, req3: boolean;/* Etat d'automate */state : { at1a, at1, b12, at2, at2a, b23, at3, at3a };/* Signaux */go1, go2, go3, r1, r2, r3, up: boolean;next(state) :=switch(state){at1a: go1 ? at1: (go2 | go3 ? b12: at1a);at1: at1a;b12: go1 & ~up ? at1 :(go2 & up ? at2 : (go3 & up ? b23 : b12));at2a: go2 ? at2 :(go1 & ~up ? b12 : (go3 & up ? b23 : at2a));at2: at2a;b23: go2 & ~up ? at2 :(go1 & ~up ? b12 : (go3 & up ? at3 : b23));at3a: go3 ? at3 : (go1 | go2 ? b23 : at3a);at3: at3a;};18


}next(r1) := ((state ~= at1) & (req1 | e1)) ? 1 :(state=at1 ? 0 : r1);next(r2) := ((state ~= at2) & (req2 | e2)) ? 1 :(state=at2 ? 0 : r2);next(r3) := ((state ~= at3) & (req3 | e3)) ? 1 :(state=at3 ? 0 : r3);switch(state){at1: next(go1):=0;at1a: { next(up):=1;if (r1) next(go1) := 1;if (r2) next(go2) := 1;if (r3) next(go3) := 1;}at2: next(go2):=0;at2a: { next(up):= go3 ? 1 : (go1 ? 0 : up);if (r1) next(go1) := 1;if (r2) next(go2) := 1;if (r3) next(go3) := 1;}at3: next(go3):=0;at3a: { next(up):=0;if (r1) next(go1) := 1;if (r2) next(go2) := 1;if (r3) next(go3) := 1;}}REACH1 : SPEC (state=at1 -> AG(r1 -> AF(state=at1)));REACH2 : SPEC (state=at1 -> AG(r2 -> AF(state=at2)));REACH3 : SPEC (state=at1 -> AG(r3 -> AF(state=at3)));Les trois <strong>de</strong>rnières lignes sont trois propriétés que satisfait ce système : lesystème étant à l'origine dans l'état AT1, si une requête se produit pour leniveau i, c<strong>et</strong>te requête sera inévitablement satisfaite (i.e. l'ascenseur se rendrainévitablement au niveau i).III.4 Systèmes infinis3 Les algorithmes <strong>de</strong> mo<strong>de</strong>l-checking ne peuvent traiter que <strong>de</strong>s systèmes finis.Des métho<strong>de</strong>s ont été proposées pour construire <strong>de</strong>s modèles finis à partir <strong>de</strong>systèmes infinis, afin <strong>de</strong> pouvoir leur appliquer ces algorithmes. Il s'agit19


notamment <strong>de</strong> métho<strong>de</strong>s d'abstraction pour raisonner sur <strong>de</strong>s systèmes avecdonnées non bornées.L'interprétation abstraite [CC96] perm<strong>et</strong> <strong>de</strong> construire une approximation <strong>de</strong> lasémantique d'un programme, qui ne contient qu'une partie <strong>de</strong>s informations <strong>de</strong>la sémantique concrète (par exemple : on ne gar<strong>de</strong> que le signe <strong>de</strong>s variables,on abstrait les entiers par <strong>de</strong>s intervalles,…). Elle utilise les connexions <strong>de</strong>Galois : domaine concr<strong>et</strong>, domaine abstrait, fonction d'abstraction a <strong>et</strong> fonction<strong>de</strong> concrétisation g. Elle est non constructive (on peut prouver l'abstraction,mais rien ne peut être utilisé pour la trouver automatiquement). Diversesapplications au mo<strong>de</strong>l checking ont été réalisées ([CC99], [DG00],…).Les métho<strong>de</strong>s basées sur le concept <strong>de</strong> predicate abstraction réalisent unpartitionnement <strong>de</strong> l'espace d'état concr<strong>et</strong> en sous-ensembles disjoints, suivantun ensemble <strong>de</strong> prédicats (voir par exemple [BL98b], [BB00], [NK00]).3 Ces métho<strong>de</strong>s présentent cependant <strong>de</strong>s inconvénients :• il est souvent difficile <strong>de</strong> calculer l'abstraction (métho<strong>de</strong>s heuristiques),• le système abstrait ne préserve pas forcément toutes les propriétés dusystème concr<strong>et</strong>, <strong>et</strong> en cas d'échec <strong>de</strong> la procédure <strong>de</strong> mo<strong>de</strong>l-checking la"reconstruction" d'un contre-exemple au niveau concr<strong>et</strong> à partir d'un contreexempleau niveau abstrait peut être laborieuse ([BG02] par exemple),• il n'est pas possible <strong>de</strong> vérifier <strong>de</strong>s propriétés m<strong>et</strong>tant en jeu <strong>de</strong>s variablessur lesquelles on a réalisé l'abstraction, …3 Exemple dans [BB00] : Bakery protocolIl s'agit du fameux algorithme d'exclusion mutuelle "Bakery", dans sa version à<strong>de</strong>ux processus. Chaque processus a un numéro <strong>de</strong> tick<strong>et</strong> (y 1 <strong>et</strong> y 2 ci-<strong>de</strong>ssous),20


C<strong>et</strong>te procédure d'abstraction guarantit la préservation faible <strong>de</strong>s propriétésLTL (si une propriété est vraie pour le système abstrait, alors la propriétécorrespondante est vraie pour le système concr<strong>et</strong>).22


IV. VERIFICATIONS FONCTIONNELLESIV.1 Circuits combinatoires3 Dans le cas <strong>de</strong> l'équivalence fonctionnelle <strong>de</strong> circuits purement combinatoiresconsidérés au niveau portes logiques, il suffit <strong>de</strong> vérifier, pour les sorties <strong>de</strong>uxà <strong>de</strong>ux, l'équivalence <strong>de</strong>s fonctions booléennes.L'outil utilisé est généralement appelé un tautology checker, il peut faire usaged'une technologie à base <strong>de</strong> BDDs (Binary Decision Diagrams) pour lareprésentation <strong>et</strong> la manipulation <strong>de</strong>s fonctions booléennes.Rappel : le calcul propositionnel est décidable (il existe un algorithmeperm<strong>et</strong>tant <strong>de</strong> déci<strong>de</strong>r en un nombre fini <strong>de</strong> pas si une formule donnée est vraieou fausse).3 Exemple : prenons l'exemple très simple <strong>de</strong> l'équivalence <strong>de</strong> <strong>de</strong>ux full-ad<strong>de</strong>rs• Version 1 (http://jingwei.eng.hmc.edu/~rwang/e85/lectures/digital_logic/no<strong>de</strong>7.html) :Fonction <strong>de</strong> sortieSumOut = A xor B xor CarryInFonction <strong>de</strong> r<strong>et</strong>enueCarryOut = A.B + A.CarryIn + B.CarryIn23


• Version 2 (http://www.tpub.com/content/ne<strong>et</strong>s/14185/css/14185_125.htm) :Fonction <strong>de</strong> sortieSumOut = A xor B xor CarryInFonction <strong>de</strong> r<strong>et</strong>enueCarryOut = A.B + CarryIn.(A xor B)On vérifie l'équivalence <strong>de</strong>s fonctions <strong>de</strong>ux à <strong>de</strong>ux (il faut évi<strong>de</strong>mment lemême nommage <strong>de</strong>s entrées) :A xor B xor CarryIn A xor B xor CarryInA.B + A.CarryIn + B.CarryIn A.B + CarryIn.(A xor B)IV.2 Circuits séquentiels, bas niveaux d'abstraction3 Dans le cas <strong>de</strong> l'équivalence fonctionnelle <strong>de</strong> circuits séquentiels considérés auniveau RTL, on vérifie l'équivalence <strong>de</strong>s fonctions au niveau <strong>de</strong>s sortiesprimaires.Le codage <strong>de</strong>s états peut avoir été réalisé (registres synthétisés) ou pas (étatsymbolique <strong>de</strong> l'automate).24


L'outil utilisé peut être un equivalence checker, qui réalise la preuved'équivalence <strong>de</strong> 2 machines d'états finis (Formality [Syn], FormalPro[Men],...). On peut également avoir recours à un outil <strong>de</strong> démonstrationautomatique.3 Exemple : reprenons l'exemple du reconnaisseur <strong>de</strong> co<strong>de</strong> BCD, c<strong>et</strong>te fois nouscomparons une réalisation à la spécification sous forme d'automate [Di78].On lit une séquence <strong>de</strong> 4 bits I 0 I 1 I 2 I 3 sur l'entrée, c'est un co<strong>de</strong> DCB vali<strong>de</strong> siI 3 vaut 0, ou I 1 <strong>et</strong> I 2 valent tous les <strong>de</strong>ux 0.L'automate qui spécifie un tel comportement est le suivant :STATE0/10/1STATE11/10/1/1STATE20/1STATE31/1STATE4/1STATE50/1 1/0Reprenons la réalisation vue section II :S 3S 4IS1S2O25


Le système a une entrée booléenne I <strong>et</strong> une sortie booléenne O. La réalisationproposée contient 4 registres, dont les fonctions <strong>de</strong> mise à jour sont :S1


architecture Automaton of BCD istype States is (STATE0,STATE1,STATE2,STATE3,STATE4,STATE5);signal state:States := STATE0;beginprocessbeginwait until clk'event and clk='1';case state iswhen STATE0 => state if I='0' then state


* version automate */next(<strong>et</strong>at) :=switch(<strong>et</strong>at){st0 : st1;st1 : i ? st4: st2;st2 : i ? st5: st3;st3 : st0;st4 : st5;st5 : st0;};if (<strong>et</strong>at=st5 & i) o1:=0; else o1:=1;/* version circuit */next(s1) := i;next(s2) := s1;next(s3) := ~s3;next(s4) := (s4 & ~s3) | (~s4 & s3);o2 := ~(i & (s1 | s2)) | ~(s3 & s4);o := o2;}EQUIV : SPEC (<strong>et</strong>at=st0 & s1=0 & s2=0 & s3=0 & s4=0) ->AG(o1 = o2) ;IV.3 Spécifications algorithmiques3 Que les circuits considérés soient combinatoires ou séquentiels, l'équivalencefonctionnelle entre la réalisation <strong>et</strong> une spécification algorithmique au niveauarithmétique ne peut pas être traitée avec les equivalence checkers classiques.Un outil <strong>de</strong> démonstration automatique est plus approprié pour résoudre ceproblème.3 Faisons un bref historique <strong>et</strong> tour d'horizon <strong>de</strong> ces outils :• parmi les précurseurs : LCF [Go84] <strong>et</strong> HOL [Go87].Preuve du micro-processeur VIPER avec HOL [Co89],...• à la même époque, Robert Boyer <strong>et</strong> J Moore : démonstrateur <strong>de</strong> Boyer-Moore, Nqthm [BM79][BM88].28


Preuve du microprocesseur FM8501 [Hu86],... Nqthm donnera ensuitenaissance à ACL2 (voir plus loin)• RRL (Rewrite Rule Laboratory) [KZ95] : démonstrateur pour la logique dupremier ordre utilisant essentiellement <strong>de</strong>s techniques <strong>de</strong> réécriture pourraisonner sur <strong>de</strong>s spécifications équationnelles.Travaux orientés vers la vérification d'architectures paramétrées, dont unevariété <strong>de</strong> multiplieurs à structure régulière [KS96]• COQ [CO98] : assistant <strong>de</strong> preuve en logique d'ordre supérieur basé sur lecalcul <strong>de</strong>s constructions.Utilisé pour diverses preuves <strong>de</strong> systèmes logiciels <strong>et</strong> matériels (preuve <strong>de</strong>protocoles au CNET,...)• PVS [OR92] : système interactif basé sur une logique d'ordre supérieurtypée.Preuve d'un diviseur [RS96], intégration dans PVS d'une procédure <strong>de</strong>décision pour le mo<strong>de</strong>l-checking [Sh96], intégration <strong>de</strong> PVS <strong>et</strong> d'un mo<strong>de</strong>lchecker (SMV) dans un système <strong>de</strong> vérification <strong>de</strong> programmes avectechniques d'abstraction [BL98a],...3 Exemples combinatoires : <strong>de</strong>s systèmes combinatoires, notamment àarchitecture régulière, peuvent avoir <strong>de</strong>s spécifications arithmétiques, c'est lecas par exemple <strong>de</strong>s additionneurs ou <strong>de</strong>s multiplieurs.• Voyons tout d'abord le cas d'un additionneur à r<strong>et</strong>enue propagée :La cellule <strong>de</strong> base <strong>de</strong> c<strong>et</strong> additionneur peut se décrire comme suit :entity fulladd isport(a,b,carry: in Bit;s,c: out Bit);end fulladd;29


architecture dataflow of fulladd issignal I : Bit;beginI


Chaque cellule est un full-ad<strong>de</strong>r, les <strong>de</strong>ux vecteurs à additionner A <strong>et</strong> B sontfournis en parallèle, la r<strong>et</strong>enue entrante est positionnée à 0. Le vecteur <strong>de</strong> sortieS contient la somme <strong>de</strong>s vecteurs d'entrée A <strong>et</strong> B.La somme étant l'opération arithmétique +, on abstrait la réalisation au niveau<strong>de</strong>s entiers naturels, <strong>et</strong> on prouve que :BitvectorToNatural(Ad<strong>de</strong>r(A, B, 0)) =BitvectorToNatural(A) + BitvectorToNatural(B)Cela suppose une modélisation fonctionnelle ou équationnelle <strong>de</strong> Ad<strong>de</strong>r. Unegénéralisation <strong>de</strong> l'énoncé ci-<strong>de</strong>ssus peut être nécessaire.On remarque que c<strong>et</strong>te preuve est indépendante <strong>de</strong> la taille <strong>de</strong>s vecteurs <strong>de</strong> bits.• Le même type <strong>de</strong> raisonnement peut s'étendre à <strong>de</strong>s circuits à <strong>de</strong>uxdimensions, comme les multiplieurs :Dans le multiplieur ci-<strong>de</strong>ssous, chaque rangée est constituée <strong>de</strong> full-ad<strong>de</strong>rs <strong>et</strong><strong>de</strong> portes and.y3 y2 y1 y0x0x1FAFAFAFAx2FAFAFAFAx3FAFAFAFAz7 z6 z5 z4 z3 z2 z1 z031


Les <strong>de</strong>ux vecteurs à multiplier X <strong>et</strong> Y sont fournis en parallèle, la r<strong>et</strong>enueentrante <strong>de</strong> chaque rangée <strong>de</strong> full-ad<strong>de</strong>rs est positionnée à 0.Le vecteur <strong>de</strong> sortie Z contient le produit <strong>de</strong>s vecteurs d'entrée X <strong>et</strong> Y.La multiplication étant l'opération arithmétique *, comme précé<strong>de</strong>mment onabstrait la réalisation au niveau <strong>de</strong>s entiers naturels, <strong>et</strong> on prouve que :BitvectorToNatural(Multiplier(X, Y, 0)) =BitvectorToNatural(X) * BitvectorToNatural(Y)Tout comme ci-<strong>de</strong>ssus, on sera amenés à généraliser c<strong>et</strong> énoncé, <strong>et</strong> à prouver<strong>de</strong>s propriétés intermédiaires sur les rangées <strong>de</strong> ce circuit.IV.4 Le theorem prover ACL2En TP, nous allons donner un aperçu <strong>de</strong> l'utilisation possible <strong>de</strong> l'outil <strong>de</strong>démonstration automatique ACL2 dans le cas où une réalisation d'un circuit doitêtre prouvée équivalente à sa spécification algorithmique au niveau arithmétique.3 Avant <strong>de</strong> présenter brièvement ACL2 [KM00], faisons tout d'abord quelquesrappels sur le raisonnement par induction.La forme générale du raisonnement par récurrence est la suivante :De(1) P(0)(2) " n, n Œ N Ÿ P(n) fi P(n+1)on déduit " n, n Œ N fi P(n)Ce qui <strong>de</strong>viendra par exemple sur les listes :De(1) P(nil)(2) " l, l liste non vi<strong>de</strong> Ÿ P(tail(l)) fi P(l)on déduit " l, l est une liste fi P(l)32


REFERENCES[Ab96] Jean-Raymond ABRIAL : "The B-Book". Cambridge University Press. 1996.[Av] http://www.averant.com/products-solidify.html[BB00] N.BJORNER, A.BROWNE, M.COLON, B.FINKBEINER, Z.MANNA, H.SIPMA,T.URIBE : "Verifying temporal properties of reactive systems : a STeP tutorial". FormalM<strong>et</strong>hods in System Design, Vol. 16, n°3, June 2000.[BG02] S.BARNER, D.GEIST, A.GRINGAUZE : "Symbolic localization reduction withreconstruction layering and backtracking". Proc. CAV'2002, LNCS 2404, Springer-Verlag,2002.[BL98a] S.BENSALEM, Y.LAKHNECH, S.OWRE : "InVeSt: A Tool for the Verification ofInvariance Properties". Proc. 10th Intern. Conf. on Computer Ai<strong>de</strong>d Verification (CAV'98),June 1998.[BL98b] S.BENSALEM, Y.LAKHNECH, S.OWRE : "Computing abstractions of infinite statesystems compositionally and automatically". Proc. 10th Intern. Conf. on Computer Ai<strong>de</strong>dVerification (CAV'98), June 1998.[BM79] R.S. BOYER, J S. MOORE : "A Computational Logic". ACM Monograph Series.Aca<strong>de</strong>mic Press, Inc. 1979.[BM88] R.S.BOYER, J S.MOORE : "A Computational Logic Handbook". Perspectives inComputing, Vol. 23. Aca<strong>de</strong>mic Press, Inc. 1988.[Cad] http://www.inrialpes.fr/vasy/cadp[CC96] P.COUSOT, R.COUSOT : "Abstract Interpr<strong>et</strong>ation". In ACM Computing Surveys,28(2), June 1996.[CC99] P.COUSOT, R.COUSOT : "Refining mo<strong>de</strong>l checking by abstract interpr<strong>et</strong>ation". InJournal of Automated Software Engineering, 6, 1999.[CE81] E.CLARKE, E.EMERSON : "Synthesis of synchronization skel<strong>et</strong>ons for branching tim<strong>et</strong>emporal logic". In Logic of Programs: workshop. LNCS 131, Springer-Verlag, 1981.[Co89] A.COHN : "The Notion of Proof in Hardware Verification", Journal of AutomatedReasoning, vol. 5, 1989.[CO98] "The Coq Proof Assistant Reference Manual", May 1998. Voir http://pauillac.inria.fr/coq/doc/main.html[CY00] H.CHOI, B.YUN, Y.LEE : "Simulation Strategy after Mo<strong>de</strong>l Checking: Experience inIndustrial SOC Design". Proc. IEEE Int. High Level Design Validation and Test WorkshopHLDVT'00, 2000.[DG00] D.DAMS, R.GERTH, O.GRUMBERG : "Fair mo<strong>de</strong>l checking of abstractions".Workshop on Verification and Computational Logic, 2000.[Di78] D.DIETMEYER : "Logic Design of Digital Systems". Allyn and Bacon. 1978.[Go84] M.GORDON : "LCF-LSM". Technical Report n°41. Univ. of Cambridge (UK). 1984.34


[Go87] M.GORDON : "HOL: A Proof Generating System for Higher-Or<strong>de</strong>r Logic", in "VLSISpecification, Verification and Synthesis", G.Birtwistle and P.A. Subrahmanyam editors,Kluwer 1987.[Go00] R.GOERING : "Real World creeps into Verification Conference". EE Times, 14 Nov.2000.[Hu86] W.A.HUNT : "FM8501 : A verified microprocessor". <strong>Institut</strong>e for Computing Science,University of Texas, Austin (USA). Technical Report n°47. February 1986.[IB] http://www.haifa.il.ibm.com/projects/verification/RB_Homepage[KM00] M.KAUFMANN, P.MANOLIOS, J MOORE : "Computer-Ai<strong>de</strong>d Reasoning: AnApproach", Kluwer Aca<strong>de</strong>mic Publishers, June 2000.[KM01] M.KAUFMANN, J MOORE : "Structured Theory Development for a MechanizedLogic", Journal of Automated Reasoning, 26(2), 2001.[KS96] D.KAPUR, M.SUBRAMANIAM : "Mechanically verifying a family of multipliercircuits". Proc. CAV'96, LNCS 1102, Springer-Verlag, 1996.[KZ95] D.KAPUR, H.ZHANG : "An overview of Rewrite-Rule Laboratory (RRL)". Journal ofComputer and Mathematics with Applications, vol.29(2), 1995.[Mc93] K.McMILLAN : "Symbolic Mo<strong>de</strong>l Checking". Kluwer Aca<strong>de</strong>mic Pub, 1993.[Men] http://www.mentor.com/formalpro/formalpro.html[Mo98] J MOORE : "Symbolic Simulation: An ACL2 Approach", Proc. FMCAD'98, LNCS1522, Springer-Verlag, 1998.[NK00] K.NAMJOSHI, R.KURSHAN : "Syntactic program transformations for automaticabstraction". Proc. CAV'2000, LNCS 1855, Springer-Verlag, 2000.[OR92] S.OWRE, J.RUSHBY, N.SHANKAR : "PVS : a Prototype Verification System". InD.Kapur ed. 11th Int. Conf. on Automated Deduction, LNAI n°607, Springer-Verlag, 1992.[RS96] H.RUESS, N.SHANKAR, M.SRIVAS : "Modular Verification of SRT Division". Proc.CAV '96, LNCS n°1102, Springer-Verlag, 1996.[Sc99] P.SCHNOEBELEN <strong>et</strong> al : "Vérification <strong>de</strong> logiciels (techniques <strong>et</strong> outils du mo<strong>de</strong>lchecking). Vuibert, 1999.[Sh96] N.SHANKAR : "PVS: Combining Specification, Proof Checking and Mo<strong>de</strong>l Checking",Proc. FMCAD'96, Lecture Notes in Computer Science n°1166, Springer Verlag pp. 257-264, 1996.[Smv] http://www.cs.cmu.edu/~mo<strong>de</strong>lcheck/smv.html[Spi] http://spinroot.com[Sur] http://www.us.<strong>de</strong>sign-reuse.com/articles/article2287.html[Syn] http://www.synopsys.com/products/verification/formality_ds.html[Vis] http://embed<strong>de</strong>d.eecs.berkeley.edu/research/vis[VV92] D.VERKEST, J.VANDENBERGH, L.CLAESEN, H.DE MAN : "A <strong>de</strong>scription m<strong>et</strong>hodologyfor param<strong>et</strong>erized modules in the Boyer-Moore logic". In "Theorem Provers inCircuit Design", North Holland, 1992.35

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!