• Aucun résultat trouvé

CHAPITRE 1 TEST ET VÉRIFICATION

1.2 Notions de base de la vérification

1.2.2 Vérification dynamique

La vérification dynamique est l’approche la plus utilisée en vérification (Lam, 2005). Elle est basée sur la simulation du design. En effet, le DUV est soumis à un flux de vecteurs de vérification appelés stimuli, qui sont émis par un banc d’essai ou testbench, alors que la sortie du design est comparée à une sortie de référence afin de détecter les erreurs. Dans le cas où la sortie observée ne correspond pas à la sortie de référence, une erreur est détectée et le débogage est déclenché. La simulation prend fin lorsque la couverture atteinte est jugée suffisante. En utilisant une métrique de couverture, on peut voir les parties du design non simulées et créer des stimuli pour les couvrir. La Figure 1.2 décrit le processus de la vérification dynamique, le composant à l’intérieur du carré en pointillés étant optionnel. En effet, les sorties de référence peuvent être générées avant ou durant la simulation. Afin de les générer durant la simulation, le modèle de référence est simulé en parallèle avec le DUV.

Figure 1.2 La vérification dynamique. Tirée de (Lam, 2005)

Génération des stimuli

Les stimuli peuvent être générés préalablement à la simulation et lus à partir d’une base de données, ou encore être générés au cours de la simulation. La qualité de la simulation dépend de la couverture atteinte lors de leur application. Les techniques de génération de ces vecteurs de vérification diffèrent selon le type de ces derniers. On distingue :

• les vecteurs de vérification aléatoires: ces vecteurs de vérification sont générés à partir d’un algorithme de génération de valeurs aléatoires. Cet aspect aléatoire permet de couvrir les coins du design et les scénarios auxquels les concepteurs n’auraient peut-être pas pensé. Ces vecteurs permettent typiquement de détecter des erreurs dans ces espaces, ce qui élargit la couverture de la vérification. L’effort requis par cette méthode est minime dans la mesure où la génération aléatoire de vecteurs peut se faire automatiquement. La vérification basée sur ce type de stimuli est appelée vérification aléatoire (« random verification »);

• les vecteurs de vérification directs : ces vecteurs de vérification sont très spécifiques et visent des espaces déterminés du design, où les concepteurs sont conscients de la présence de certaines erreurs potentielles. Le concepteur établit une liste de scénarios spécifiques, où chaque scénario cible une erreur ou une partie de l’espace de design. Ceci demande un effort substantiel, le concepteur devant implémenter chacun des scénarios manuellement.

La vérification basée sur ce type de vecteurs est appelée vérification dirigée (« directed verification »);

• les vecteurs de vérification aléatoires basés sur les contraintes : ces vecteurs de vérification sont générés aléatoirement mais en respectant des contraintes spécifiques modélisant la fonctionnalité du DUV. Ce type de vérification conserve l’aspect aléatoire pour couvrir les détails manquants d’un scénario donné et sont plus productifs car ils sont dirigés par des contraintes représentant le design. Chaque slave de vérification décrit plusieurs scénarios. La vérification basée sur ce type de vecteurs est appelée vérification basée sur les contraintes (« Constrained-based verification »).

La génération de vecteurs de vérification reste une des étapes les plus exigeantes de la vérification, le but étant de produire avec un minimum d’effort un ensemble efficace de vecteurs permettant une bonne couverture et une simulation rapide.

Avantages et limitations de la vérification dynamique

La vérification dynamique est la plus utilisée grâce à ses nombreux points forts (Lam, 2005) : • l’aspect « input driven ». La vérification dynamique est basée sur des vecteurs d’entrée.

Dans un premier temps, on génère ces vecteurs et dans un second temps on génère les sorties de référence correspondantes. Ceci est un avantage par rapport à la vérification formelle, dans laquelle le processus est inversé : le concepteur pense aux sorties désirables et laisse le vérificateur le prouver, d’où sa qualification de « output driven ». Il est beaucoup plus facile de penser « input driven » que « output driven »;

• l’aspect pseudo-aléatoire. En effet, les bugs ou les erreurs ont lieu souvent dans des régions que le concepteur ignore, et ce genre de vérification permet d’explorer ces régions en question. Les simulations pseudo-aléatoires peuvent utiliser des vecteurs au voisinage des vecteurs directs. En effet, si les vecteurs de vérification directs sont des points dans l’espace, les vecteurs aléatoires couvrent les régions entourant ces points. Donc pour décentrer la vérification et explorer toutes les régions possibles du design, les vecteurs pseudo-aléatoires sont utilisés en conjonction avec les vecteurs directs. Cette

approche permet une amélioration considérable de la couverture et du temps de simulation;

• la possibilité de vérification au niveau système. L’un des grands défis de la vérification est d’être exploitée au niveau système, ceci à cause de la complexité croissante des designs. La simulation ou la vérification dynamique permet de vérifier le design au niveau système sans se soucier de la taille et de la complexité de ce dernier.

La vérification dynamique présente aussi plusieurs limitations. Les défis auxquels elle fait face sont de plus en plus nombreux avec la croissance de la complexité des circuits (Lam, 2005):

• le temps de conception des bancs d’essai est énorme; • la qualité des bancs d’essai est souvent médiocre;

• la couverture atteinte est habituellement insuffisante lorsque le temps alloué pour la vérification est limité;

• l’ingénieur n’est jamais sûr si le design est bien vérifié ou non;

• il y a souvent échec dans la détection des erreurs difficiles à vérifier, appelées « corner case errors » ou aussi les coins sombres.

Plusieurs méthodologies ont été développées pour améliorer la qualité de la vérification dynamique et surpasser ses limitations. Certains travaux seront présentés dans le chapitre 2 de revue de littérature.