• Aucun résultat trouvé

CHAPITRE 1 TEST ET VÉRIFICATION

1.2 Notions de base de la vérification

1.2.3 Vérification statique

La vérification statique (Lam, 2005) diffère de celle basée sur la simulation par le seul fait qu’elle ne requiert pas de stimuli. Elle est basée essentiellement sur des techniques et des modèles mathématiques pour vérifier le design. Elle peut être classifiée en 2 grandes catégories : la vérification de propriété (« property checking ») (Baumgartner, 2002) et la vérification d’équivalence (« equivalence checking ») (Huang, 1998).

La vérification de propriété

Un certain nombre de propriétés doivent être satisfaites lors du développement d’un design. Une approche classique de vérification, la vérification de propriété, consiste à : 1) construire un modèle complet S du comportement du système étudié (par exemple un graphe de flux de données, les différents modèles sont présentés en détails dans l’annexe I), 2) formaliser la propriété de correction attendue par une formule Φ, et 3) utiliser un algorithme de vérification de modèle (« Model-Checking ») (Saidi, 2000) pour vérifier que S satisfait ou non Φ. Une propriété est une description dupliquée du design et permet la vérification du design à travers la redondance. L’idée est d’explorer l’espace dans le but de trouver un point qui contredit la propriété. Si ce point existe alors la propriété échoue et ce point servira de contre-exemple, sinon la propriété est satisfaite.

La limitation majeure rencontrée dans ce genre de vérification est le temps mis pour déterminer les bonnes contraintes et pour débugger le système en cas d’échec de propriétés. Une alternative à l’exploration de l’espace existe et permet ainsi la vérification de propriétés. Il s’agit d’une approche basée sur les preuves de théorèmes. Dans une telle approche, la propriété est modélisée sous forme d’une proposition mathématique et le design sous forme d’entités mathématiques (i.e. un ensemble d’axiomes). L’objectif est de déterminer si les propositions (propriétés) peuvent être déduites des axiomes (système). Si c’est le cas, la propriété est vérifiée sinon elle échoue. Cette approche fait également face à plusieurs limitations, l’usager devant être familier avec les opérations internes des outils ainsi qu’avec les processus mathématiques formels de démonstration.

La vérification d’équivalence

Lors de la conception d’un système, le concepteur manipule plusieurs modèles dédiés pour modéliser le même système de base, chacun pouvant correspondre à un niveau d’abstraction différent. Donc, outre la vérification des propriétés et de la fonctionnalité, une autre forme de vérification est essentielle : la vérification de l’équivalence des modèles entre eux. Il s’agit de vérifier que les descriptions d’un système à deux niveaux d’abstraction différents ont une

fonctionnalité équivalente et correspondent donc au même système. Deux méthodologies sont utilisées pour accomplir ce genre de vérification.

• la première crée des représentations canoniques des deux systèmes et les compare. Une représentation canonique est telle que deux fonctions logiques sont équivalentes si et seulement si leurs représentations sont isomorphes. Une des représentations les plus utilisées est le diagramme de décision binaire BDD (« Binary Decision Diagram ») (Prasad P., 2004). Une description des modèles BDD est présentée dans l’annexe I;

• la deuxième cherche d’une façon systématique dans l’espace des entrées, un ou plusieurs vecteurs d’entrée permettant de distinguer les deux modèles, i.e. créer des comportements différents. Cette approche est appelée l’approche SAT (« satisfiability ») (Parthasarathy, 2004).

Si la vérification d’équivalence échoue, l’outil génère une séquence de vecteurs de vérification qui, une fois simulés, montre la différence entre les deux modèles. Cette séquence représente un contre-exemple pour la démonstration de l’équivalence des deux circuits.

Avantages et limitations de la vérification statique

Les techniques de vérification statiques offrent des avantages non négligeables (Lam, 2005) : • bonne performance dans la détection des coins sombres, les « corner case errors ». En

effet, la vérification statique ne peut négliger aucun point dans l’espace d’entrée du système, un problème auquel la vérification dynamique fait habituellement face. Pour une propriété donnée, la vérification statique explore tous les points de l’espace d’entrée et toutes les transitions possibles pour aboutir à une couverture complète de cette propriété; • possibilité de vérification simultanée de plusieurs points de l’espace. La vérification

statique opère par propriété et non par point de l’espace, de ce fait la vérification d’une propriété implique la vérification de plusieurs points de l’espace simultanément;

• possibilité de vérification de l’équivalence de deux systèmes (« Equivalence Checking ») à travers l’équivalence de leurs modèles formels respectifs. Avec la vérification par simulation, c’est quasiment impossible de vérifier l’équivalence de deux systèmes car ceci requiert un nombre quasi infini de vecteurs en entrée à vérifier.

La vérification statique offre une garantie dans la vérification des propriétés, toutefois plusieurs facteurs remettent en question cette forme de vérification (Lam, 2005):

• la limitation dans l’espace et dans le temps empêche la vérification complète d’un système. On vérifie seulement une partie du système, ce qui fait qu’un grand nombre d’erreurs peuvent rester non couverts;

• la complexité liée à la recherche de l’erreur qui a causé l’échec de la propriété rend cette approche très consommatrice en temps et en effort;

• la vérification au niveau système est quasiment impossible dans ce genre de vérification surtout pour les conceptions complexes qui présentent des modèles de graphes de grande envergure.

La vérification statique est une manière systématique pour traverser l’espace d’états dans le but de réaliser une vérification complète vis-à-vis la propriété à vérifier. Donc la vérification statique ne peut pas prouver que toutes les propriétés dans un design ont été énumérées mais peut garantir pour une propriété donnée si elle est satisfaite ou non.