Ces méthodes suffisent pour résoudre une grande partie des problèmes;
—puis associer ces méthodes de simplificationà une représentation compacte des
données afin de retarder l’explosion combinatoire;
—enfin, utiliser des méthodes complexes non automatiques.
Dans la suite de cet article, nous montrerons qu’une telle approche a permis de vé-
rifier efficacement et avec un minimum d’interventionhumaine, un ensemble d’exem-
ples significatifs. En particulier nous avons mis en évidence des erreurs dans la spéci-
fication d’un processeur réel.
De plus, nous avons traité le cas des instructions implémentées par des boucles de
micro-instructions, ce qui n’avait pas été faitauparavant dans le cadre d’un outil dédié
à la preuve des processeurs.
1.3. État de l’art
La vérification formelle de circuits (voir [GUP 92] pour une présentation géné-
rale sur ce sujet) est maintenant utilisée en milieu industriel en ce qui concerne la
preuve à bas niveau. Dans ce cadre, les outils utilisés sont basés sur des représenta-
tions efficaces des formules booléennes [BRY 86], et les preuves sont entièrement au-
tomatiques. Pour les niveaux plusabstraits, l’approche adoptée est d’utiliser des outils
généraux de démonstration automatique tels que Nqthm [BOY 88], HOL [GOR 92]
ou PVS [OWR 92].
En ce qui concerne le cas spécifique des processeurs, les premiers résultats ont
été obtenus par Gordon [GOR 83], qui a vérifié un processeur simple avec le sys-
tème LCF-LSM. Cette expérience a été suivie de deux cas d’études significatifs: le
processeur VIPER a été en partie vérifié avec HOL [COH 87], et le FM8501 avec
le démonstrateur Nqthm [Hun 89]. Dans les deux cas, les processeurs ont été décrits
dans le langage formel associé au démonstrateur, et la spécification aussi bien que la
preuve ont nécessité un grand savoir-faire.
L’étude de ces cas particuliers a mis en évidence la nécessité d’une méthodologie
applicable à une classe générale de processeurs. Un modèle fonctionnel a d’abord
été proposé dans [BOR 88] pour décrire les processeurs aux niveaux abstraits. Plus
récemment, une méthodologie basée sur la notion d’interprète [ANC 86] générique
a été proposée [JOY 90, WIN 90] pour la vérification des processeurs à tout niveau
d’abstraction. Ce concept générique a été implémenté en HOL qui est, à notre avis,
trop général pour être efficace et nécessite trop d’intervention humaine. Nous avons
cependant adapté et étendu ce concept dans notre système de preuve (voir section 2).
Des résultats intéressants ont aussi été obtenus avec des méthodes plus spéciali-
sées et plus automatiques [COU 89, BEA 94, BUR 94] ainsi qu’avec des approches
hybrides [ZHU 93]. Toutefois, ces méthodes portaient sur des descriptions de bas ni-
veaux et n’offraient pas d’interface de spécification.
La suite de cet article est organisée ainsi: nous détaillonsl’environnement de des-
cription des processeurs dans la section 2, puis la méthodologie de preuve dans la