Brevet FR2553540A1 — publié le 19850419

A 5 - 2553540 La présente invention concerne un dispositif de test aléatoire pour circuits logiques, notamment microprocesseurs. Pour effectuer un contrôle de circuits logiques tels 5 que des microprocesseurs, on compare le fonctionnement de deux de ces microprocesseurs à savoir un microprocesseur de référence et le microprocesseur soumis au test A cet effet on envoie en parallèle aux deux microprocesseurs une séquence d'instructions et de commandes et on effectue une compa10 raison bit è bit des sorties des deux microprocesseurs. Toute discordance apparaissant lors de cette comparaison permet de détecter un défaut du microprocesseur soumis au test. La présente invention a pour but de procurer un 15 dispositif de test aléatoire permettant d'affecter des probabilités à chaque vecteur (ensemble de bits juxtaposés) et d'appliquer en parallèle, aux deux microprocesseurs, des séquences de vecteurs à probabilités données. A cet effet ce dispositif de test aléatoire pour 20 circuits logiques, notamment microprocesseurs, comportant une unité centrale, un générateur de séquences aléatoires d'instructions et de commandes appliquées en parallèle è un microprocesseur de référence et au microprocesseur sous test, un comparateur aux entrées duquel sont connectées les sorties données, adresses et contrôle de chaque microprocesseur et dont la sortie est connectée à l'unité centrale, est caractérisé en ce que le générateur de séquences aléatoires comporte un registre à décalage bouclé en générateur de séquences de période maximale par un circuit OU exclusif, 30 les cellules du registre correspondant à des bits de rangs définis par une relation mathématique connue étant connect-ées aux entrées du circuit OU exclusif, si bien que le registre à décalage permet une génération pseudo-aléatoire de vecteurs équiprobables, qui sont appliqués à un généra35 teur de séquences de vecteurs à probabilités données lequel comporte, en ce qui concerne les instructions, trois mémoires à savoir une première mémoire pour stocker les données, une deuxième mémoire pour stocker les codes opérations et une troisième mémoire pour stocker les nombres de cycles correspondant aux divers codes opérations, d'une part, et une quatrième mémoire pour stocker les types de commande et une cinquième mémoire pour stocker les nombres de cycles 5 correspondant aux diverses commandes respectives, d'autre part, les sorties des première et deuxième mémoire étant connectées, respectivement par des bus, à un premier aiguillage dont la sortie est reliée en parallèle, par un bus données, au microprocesseur de référence et au microproces10 seur sous test, la sortie de la troisième mémoire étant reliée en parallèle, par l'intermédiaire d'un bus, à un premier compteur commandant, par une liaison, le premier aiguillage, la sortie de la quatrième mémoire étant connectée, à travers un second aiguillage, à un bus commandes 15 relié en parallèle aux deux microprocesseurs, la cinquième mémoire étant connectée par S sortie d'une part au premier compteur et d'autre part à un second compteur commandant le second aiguillage, et en ce qu'initialement on charge les diverses mémoires en subdivisant le champ total de chaque 20 mémoire en un certain nombre de zones d'étendues différentes, suivant les probabilités que l'on veut obtenir en sortie. Le dispositif de test aléatoire suivant l'invention offre l'avantage qu'il permet d'affecter des probabilités à 25 chaque vecteur et non plus à chaque bit d'un vecteur comme il était connu antérieurement Par ailleurs il permet de fournir une séquence de vecteurs qui est constituée de vecteurs qui sont tirés dans des champs de mémoires différents (avec des probabilités différentes) en respectant certaines 30 contraintes (le nombre d'octets quelconques suivant un code opération dépendant de ce code opération) En outre, une séquence de vecteurs de commande élaborée en parallèle avec la première réagit sur l'élaboration de la première séquence de vecteurs. On décrira ci-après,à titre d'exemple non limitatif, une forme d'exécution de la présente invention, en référence au dessin annexé qui est un schéma synoptique d'un dispositif de test aléatoire pour microprocesseurs. Le dispositif de test aléatoire suivant l'invention comporte une unité centrale 1 constituée, par exemple, par une carte 80-10 INTEL, reliée à une console de visualisation 2 afin de permettre un dialogue avec l'opérateur Cette 5 unité centrale 1 est connectée à un générateur 3 produisant à sa sortie, pendant le test, une séquence aléatoire d'instructions sur des données aléatoires, sur un bus données A, et parallèlement des commandes envoyées, également d'une manière aléatoire, sur un bus B Les deux bus A et B sont 10 respectivement connectés à un microprocesseur de référence MR et à un microprocesseur que l'on soumet au test HT Les sorties données, adresses et contrôle de ces microprocesseurs sont transmises, respectivement par des bus d, a et c, aux entrées correspondantes d'un comparateur 4 qui effectue 15 ainsi une comparaison bit à bit des sorties des deux microprocesseurs MR et MT La sortie du comparateur 4 est reliée à l'unité de commande 1 qui permet, outre le dialogue avec l'opérateur par l'intermédiaire de la console de visualisation 2, l'initialisation et la production de certains 20 paramètres du générateur 3 et l'exploitation des résultats du test. Le générateur 3 comprend un registre à décalage 5 bouclé en générateur de séquence de période maximale par un circuit OU exclusif 6 Ce registre permet une génération 25 pseudoaléatoire de vecteurs équiprobables Par vecteur on entend la combinaison d'un ensemble de bits juxtaposés dans le registre 5 Ce registre à décalage peut comporter, par exemple, 31 cellules correspondant aux bits blp b 2 b 3 l. Pour obtenir, dans la cellule correspondant au bit b 31, une 30 succession de bits constituent une séquence pseudo-aléatoire,les cellules correspondant aux bits de rangs b 1 et b 4 sont connectées aux entrées du circuit OU exclusif 6. Le circuit ainsi défini réalise, à chaque top d'horloge, un décalage qui donne les valeurs des 31 bits au temps 35 t + 1 en fonction des 31 bits au temps t Parmi les bits bl, b 2 o b 31 l un ertain nombre, par exemple 28, à asavoir les bitss b 4 ' b 31 sont utilisés pour constituer les vecteurs équiprobables. Pour permettre l'indépendance de deux vecteurs consécutifs, l'équivalence de vingt-huit décalages est réalisée à chaque top d'horloge en effectuant vingt-huit rebouclages au lieu d'un Le circuit réalisé n'est donc pas exac5 tement celui indiqué mais un circuit qui s'en déduit facilement de façon qu'un top d'horloge donne les valeurs qui auraient été obtenues au temps t + 28, en fonction des 31 bits au temps t. Le nombre de vecteurs indépendants consécutifs que 10 l'on peut obtenir est égal à 2 N 1, N étant le nombre de cellules du registre à décalage 5 (n = 31 dans le cas particulier considéré) Pour avoir le nombre de vecteurs maximal il faut que le nombre N de bits des vecteurs, 28 dans l'exemple considéré, et 2 N 1 soient des nombres premiers 15 entre eux. Les vecteurs équiprobables de 28 bits issus du registre à décalage 5 sont appliqués à un générateur 7 de séquences de vecteurs à probabilités données Le but de ce générateur est de produire, à partir de la séquence aléa20 toire de vecteurs équiprobables fournis par le registre à décalage 5, une séquence aléatoire d'instructions suivies de données ainsi que de commandes Dans le cas particulier o le microprocesseur soumis au test est du type M 6800, le champ des instructions peut être limité aux 197 codes d'opé25 rations de ce microprocesseur alors que le champ des données peut couvrir les 256 configurations possibles des mots à 8 bits Les probabilités des différents vecteurs (données ou instructions) peuvent être variables, ainsi que celles des commandes. Le générateur 7 de séquences de vecteurs à-probabilités données comporte, en ce qui concerne les instructions, trois mémoires (du type mémoire vive RAM ou morte ROM) à savoir une mémoire 8 pour stocker les données, une mémoire 9 pour stocker les codes opérations et une mémoire 55 10 pour stocker les nombres de cycles correspondant aux divers codes opérations De la même façon le générateur 7 comporte, en ce qui concerne les commandes, une mémoire 11 pour stocker les types de commande et une autre mémoire 12 pour stocker les nombres de cycles correspondant aux diverses commandes respectives. Initialement on charge les diverses mémoires 8, 9, 5 10, 11, 12 en subdivisant le champ total de chaque mémoire en un certain nombre de zones d'étendues différentes, suivant les probabilités que l'on veut obtenir en sortie Par exemple, si on considère la mémoire 8 affectée aux données et si cette mémoire a une capacité totale de 2 048 octets, 10 on peut charger huit fois dans cette mémoire les 256 configurations possibles pour les données et on retrouve alors en sortie une équiprobabilité d'apparition de chaque donnée. Par contre, on peut aussi charger dans cette mémoire 1 793 fois 00 et une fois chacune des 255 autres données On aura 15 alors à la sortie de la mémoire 8 une probabilité d'apparition de 1 793/2 048 = 7/8 pour G O et 1/2 048 pour chaque autre valeur. Le processus est identique pour la mémoire 9 contenant les codes opérations et la mémoire 11 contenant les 20 commandes. Du vecteur b 4 b 31 sont extraits deux vecteurs correspondants à des bits différents, par exemple un premier vecteur correspondant aux bits b 4 b 14, et un second vecteur V 1 correspondant aux bits b 15 b 25, le nombre 25 total des bits des deux vecteurs V 1 et V 2 n'excédant pas 28 dans l'exemple considéré Les deux vecteurs V 1 et V 2 ainsi constitués sont indépendants Ils sont envoyés, le premier V 1 sur un bus 13 a, et le second V 2 sur un bus 13 b. Pendant le test les vecteurs équiprobables V 1, V 2 30 issus du registre à décalage 5 sont envoyés respectivement sur le bus adresses 13 a reliés aux trois mémoires 8, 9, 10 associées aux données et aux codes opérations, et sur le bus 13 b relié aux deux mémoires 11, 12 associées aux commandes. Chacune de ces mémoires est donc adressée de façon équipro35 bable et la probabilité d'apparition d'une donnée, d'un code opération ou d'une commande à la sortie de la mémoire correspondante, ne dépend, en fait, que du nombre de fois o cette valeur aura été chargée dans la mémoire. Ce dispositif permet aussi de masquer certaines données en leur affectant une probabilité nulle, c'est-àdire en ne les chargeant pas du tout dans la mémoire 8. La souplesse de ce dispositif, au point de vue des 5 choix de probabilité, est naturellement proportionnelle à la taille de la mémoire utilisée. La séquence de test est construite de la façon suivante: un code opération correspondant à une instruction à p cycles est suivi de (p 1) données Le code opération doit 10 être tiré de façon aléatoire dans le champ des codes opérations contenus dans la mémoire 9 et de la même façon les données doivent être tirées également de manière aléatoire dans le champ des données de la mémoire 8 Au cours du remplissage de la mémoire 9 correspondant aux codes opérations 15 on charge parallèlement, à la même adresse dans la mémoire , le nombre de cycles correspondant à ce code opération. Les sorties de la mémoire 8 contenant les données et de la mémoire 9 contenant les codes opérations sont reliées, par des bus 14 et 15, à un aiguillage 16 dont la sortie est 20 connectée au bus A transmettant les données appliquées aux deux microprocesseurs MR et MT. La mémoire 10 est, de son côté, connectée, par un bus 26, à un compteur 17 Ce compteur 17 est relié à l'aiguillage 16 par une liaison 18 Ainsi, pendant un test, les 25 deux mémoires 8, 9 sont adressées simultanément et en même temps que le code opération sélectionné est extrait de la mémoire 9 et est transmis, par le bus 15, l'aiguillage 16 et le bus A, aux deux microprocesseurs MR et MT, on charge simultanément dans le compteur 17 le nombre de cycles stocké 30 dans la mémoire 10, à l'adresse correspondant à celle du code opération sélectionné dans la mémoire 9 Le compteur 17 est décrémenté d'une unité à chaque cycle et tant qu'il n'est pas remis à zéro, il maintient l'aiguillage 16 ouvert, ce qui permet l'envoi des données aux deux microprocesseurs 35 sur le bus A Quand le compteur 17 est remis à zéro, les deux microprocesseurs ont fini d'exécuter l'instruction et on peut alors envoyer un nouveau code opération. Le fonctionnement est tout à fait similaire en ce qui concerne les commandes En effet, la sortie de la mémoire 11 contenant les diverses commandes est reliée au bus B des commandes appliquées aux deux microprocesseurs tandis 5 que la mémoire 12, contenant les nombres de cycles correspondant aux commandes respectives, est également reliée au compteur 17, par l'intermédiaire d'un bus 19 Ce bus 19 est également relié à un compteur additionnel 20 agissant sur un aiguillage 21 interposé sur le bus B des commandes Le comp10 teur 20 a pour rôle de maintenir une commande pendant un temps suffissant à son exécution correcte La liaison au compteur 17 permet d'envoyer un code opération au moment o le microprocessseur l'attend, après l'exécution de la commande. Le générateur de séquences aléatoires 3 comporte également une mémoire additionnelle 22 dans laquelle est stockée une séquence d'initialisation permettant de mettre, avant le test, les deux microprocesseurs MR et MT dans le même état Cette mémoire 22 est reliée à l'aiguillage 16 par 20 un bus données 23 et elle est adressée par un compteur 24 connecté également à l'aiguillage 16 par une liaison 25. D'après la description qui précède on voit que le dispositif de test aléatoire suivant l'invention permet d'affecter à priori des probabilités è chaque vecteur et ce 25 grâce à une répartition choisie à volonté des données, des codes opérations et des commandes dans les champs des mémoires associées. Le dispositif suivant l'invention peut admettre des variantes, notamment pour la comparaison entre les sorties 30 produites par le circuit testé et par un circuit sans panne. Une variante intéressante est la suivante: les variables transmises par les bus c, a et d sortant du microprocesseur MT sont traitées par un circuit qui réalise une fonction compacte, appelée signature, de l'ensemble des bits qu'il 35 reçoit A la fin de la séquence de test cette signature est comparée à la signature d'un circuit bon, signature qui est préalablement mémorisée Cette signature d'un circuit bon peut être obtenue soit par simulation, soit par l'utilisation d'un circuit de référence. REVENDICATIONS 1. Dispositif de test aléatoire pour circuits logiques, notamment microprocesseurs, comportant une unité centrale, un générateur de séquences aléatoires d'instruc5 tions et de commandes appliquées en parallèle à un microprocesseur de référence et au microprocesseur sous test, un comparateur aux entrées duquel sont connectées les sorties données, adresses et contrôle de chaque microprocesseur et dont la sortie est connectée à l'unité centrale, caractérisé 10 en ce que le générateur de séquences aléatoires ( 3) comporte un registre à décalage ( 5) bouclé en générateur de séquences de période maximale par un circuit OU exclusif ( 6), les cellules du registre correspondant à certains bits définis par une propriété mathématique connue étant connectées aux 15 entrées du circuit OU exclusif ( 6), si bien que le registre à décalage ( 5) permet une génération pseudo-aléatoire de vecteurs équiprobables, qui sont appliqués à un générateur ( 7) de séquences de vecteurs à probabilités données lequel comporte, en ce qui concerne les instructions, trois mémoi20 res à savoir une première mémoire ( 8) pour stocker les données, une deuxième mémoire ( 9) pour stocker les codes opérations et une troisième mémoire ( 10) pour stocker les nombres de cycles correspondant aux divers codes opérations, d'une part, et une quatrième mémoire ( 11) pour stocker les types 25 de commande et une cinquième mémoire ( 12) pour stocker les nombres de cycles correspondant aux diverses commandés respectives, d'autre part, les sorties des première et deuxième mémoire ( 8, 9) étant connectées, respectivement par des bus ( 14, 15), à un premier aiguillage ( 16) dont la sortie est 30 reliée en parallèle, par un bus données( A), au microprocesseur de référence( MR) et au microprocesseur sous test (MT), la sortie de la troisième mémoire ( 10) étant reliée en parallèle, par l'intermédiaire d'un bus ( 26), à un premier compteur ( 17) commandant, par une liaison ( 18), le premier 35 aiguillage ( 16), la sortie de la quatrième mémoire ( 11) étant connectée, à travers un second aiguillage ( 21), à un bus commandes ( 8) relié en parallèle aux deux microprocesseurs (MR), (Ml), la cinquième mémoire ( 12) étant connectée par sa sortie d'une part au premier compteur ( 17) et d'autre part à un second compteur ( 20) commandant le second aiguillage ( 21), et en ce qu'initialement on charge les diverses mémoires ( 8, 9, 10, 1 I, 12) en subdivisant le champ total de 5 chaque mémoire en un certain nombre de zones d'étendues différentes, suivant les-probabilités que l'on veut obtenir en sortie. 2. Dispositif suivant la revendication 1 caractérisé en ce que le générateur de séquences aléatoires ( 3) 10 comporte une mémoire additionnelle ( 22) dans laquelle est stockée une séquence d'initialisation destinée à mettre, avant le test, les deux microprocesseurs (MR) et (MT) dans le même état, et cette mémoire est reliée au première aiguillage ( 16) par un bus données ( 23) et elle est adressée 15 par un troisième compteur ( 24) connecté également à l'aiguillage ( 16) par une liaison ( 25).