Brevet FR2653913A1 — publié le 19910503

L'invention concerne les microprocesseurs réalisés sous forme de puces de circuits intégrés et, plus particulièrement dans de tels microprocesseurs, un système de test qui est réalisé sur la puce du microprocesseur. Un ordinateur comprend principalement, comme le montre la figure 1, une unité centrale ou processeur 10 qui réalise des opérations arithmétiques ou logiques sur des nombres, au moins une mémoire 11 qui contient les nombres sur lesquels et à l'aide desquels s'effectuent lesdites opérations, des organes périphériques 12, tels que clavier, imprimante et mémoire additionnelle, qui permettent d'entrer les informations à traiter et les opérations à effectuer et de recueillir les résultats des opérations effectuées et des dispositifs de transmission 13 et 14, appelés bus, qui permettent aux différents organes 10,11 et 12 de communiquer entre eux. L'unité centrale ou processeur 10 comporte un registre , dit Registre Instruction, qui reçoit du bus 13 les nombres ou codes opératoires indiquant les opérations élémentaires à effectuer, un dispositif opérateur 17 qui effectue les opérations élémentaires et un dispositif 16 de contrôle desdites opérations qui traduit les codes des instructions élémentaires en signaux de commande du dispositif 17. Les dispositifs de transmission ou bus 13 ou 14 sont affectés l'un 13 à la transmission bidirectionnelle des données ou opérandes (bus de données) sur lesquelles s'effectuent les opérations indiquées par les codes opératoires contenus dans le registre 15, l'autre 14 à la transmission unidirectionnelle des codes d'adressage de la mémoire 11 et des organes périphériques 12. Les opérandes sont fournies 'par la mémoire 11 et le dispositif opérateur 17 tandis que les codes d'adressage sont générés par le dispositif opérateur 17. Pour effectuer un traitement d'informations, le processeur exécute une suite d'opérations dont les codes opératoires ou instructions sont contenus dans la mémoire 11, l'ensemble de ces instructions constituant un programme. Dans les ordinateurs actuels, le processeur est réalisé sous la forme de circuits qui sont intégrés sur un substrat de silicium de faibles dimensions appelé puce. En fin de la chaîne de fabrication, les processeurs, appelés aussi microprocesseurs, doivent être vérifiés ou testés de manière à détecter ceux dont le fonctionnement est défectueux et ainsi les écarter. D'une manière générale, la vérification d'un microprocesseur consiste d'abord à générer des signaux d'entrée et à vérifier la conformité des signaux de sortie avec ceux qui sont attendus en fonctionnement normal. Il existe de nombreuses manières d'effectuer une telle vérification. L'une d'entre elles consiste à connecter le microprocesseur à une machine de test qui fournit les signaux d'entrée et qui compare les signaux de sortie à ceux qui correspondent à un fonctionnement normal. Une autre manière consiste à faire effectuer la vérification par le microprocesseur lui-même en incorporant sur le substrat de la puce des organes spécifiques qui ont pour but, d'une part, de générer des signaux d'entrée et, d'autre part, de vérifier les signaux de sortie. Les signaux d'entrée sont obtenus par une mémoire morte également appelée mémoire à lecture uniquement (ROM). Les signaux de sortie sont vérifiés par un compteur ou diviseur polymonial qui fournit à la fin de l'exécution du programme de test un code qui est comparé à celui qui aurait dû être obtenu en cas de fonctionnement sans faute, ce code de référence étant enregistré dans la mémoire morte. Ce type de vérification, dit de test intégré, présente les inconvénients suivants. D'abord, la réalisation d'un test complet entraîne la mise en oeuvre d'une mémoire morte de capacité relativement élevée, mémoire qui est uniquement utilisée par le test. Cette mémoire utilise une partie non négligeable soit de la superficie de la puce lorsque cette mémoire est unique, soit de la mémoire de programme lorsque celle-ci est intégrée sur la puce. Ensuite, ce type de test suppose que le processeur est capable de lire les codes opératoires et les opérandes dans la mémoire et que cette dernière n'a pas de défaut, ce qui, dans le cas d'une défaillance à ce niveau, conduit à une divergence de la séquence de test dès le début, divergence qui n'est pas due au mauvais fonctionnement du processeur. Enfin, un grand nombre de codes opératoires n'entraînent pas de modification des états des bus de données et d'adresses mais modifient le contenu des registres internes du dispositif opérateur 17 ou des bits dits de "status". Pour une vérification sérieuse, le programme associé à ces codes opératoires doit être prévu pour vérifier, par des instructions de comparaison et de branchement, que l'instruction s'est déroulée correctement à l'intérieur du dispositif opérateur 17. Ceci entraîne une augmentation corrélative de la mémoire morte. Un but de la présente invention est donc de réaliser un système de test d'un microprocesseur qui ne présente pas les inconvénients précités. Ce système effectue donc une vérification du microprocesseur, y compris des registres internes et des bits de status, sans utiliser de mémoire morte. L'invention se rapporte à un système de test d'un microprocesseur réalisé sur une puce de circuit intégré, ledit microprocesseur comprenant au moins un registre d'instruction pour recevoir les codes opératoires des opérations élémentaires, un dispositif opérateur pour exécuter les opérations élémentaires, un dispositif de contrôle desdites opérations élémentaires qui traduit les codes opératoires en signaux de commande du dispositif opérateur, un compteur polynomial, un bus d'adresses qui connecte le dispositif opérateur aux entrées du compteur polynomial et un bus de données qui connecte entre eux le registre d'instruction, le dispositif opérateur et le compteur polynomial, caractérisé en ce que ledit système de test comprend: - des premiers moyens pour transformer ledit registre d'instruction en un compteur et pour déconnecter ce dernier du bus de données, - des deuxièmes moyens pour enregistrer dans ledit compteur, au début de la séquence de test, un code opératoire correspondant à une instruction de rechargement du contexte de manière à initialiser les états de divers éléments du microprocesseur à une valeur déterminée, - des troisièmes moyens pour, à la fin de l'exécution d'une instruction dont le code est contenu dans ledit compteur, élaborer une instruction de sauvegarde de contexte et incrémenter d'une unité le contenu du compteur. - des quatrièmes moyens pour déterminer la fin de la séquence de test et, - des cinquièmes moyens pour décoder le code contenu dans le compteur polynomial à la fin de la séquence de test. Dans le cas o le microprocesseur est associé à une mémoire et est connecté à cette dernière par des bus d'adresses et de données, le système de test comprend en outre des sixièmes moyens pour déconnecter, pendant la séquence de test, les entrées/sorties de ladite mémoire des bus d'adresses et de données. Le système de test selon l'invention est également caractérisé en ce que les bornes de sortie du compteur polynomial sont connectées aux bus de données par l'intermédiaire de portes électroniques, ces dernières étant commandées de manière que lesdites bornes de sortie du compteur polynomial soient connectées au bus de données pendant la séquence de test et fournissent ainsi les opérandes nécessaires à l'exécution de certaines instructions. D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description suivante d'un exemple particulier de réalisation, ladite description étant faite en relation avec les dessins joints dans lesquels: - la figure 1 est un schéma de principe d'un microprocesseur, et - la figure 2 est un schéma d'un microprocesseur comportant un système de test intégré selon la présente invention. La figure 1, décrite dans le préambule, montre les différents organes d'un microprocesseur. Le système de test selon l'invention concerne la vérification du fonctionnement de l'unité centrale ou processeur 10 et comprend les éléments additionnels suivants qui seront décrits en relation avec la figure 2. Ces éléments additionnels comprennent essentiellement un compteur polynomial 20 associé à un premier circuit de décodage ou décodeur 21, un dispositif de modification 19 des connexions du registre d'instruction 15 pour le transformer en compteur, un premier circuit bistable 28, un premier registre 31 contenant un premier code d'instruction particulier, un deuxième registre 38 contenant un deuxième code d'instruction particulier un circuit d'aiguillage 22 des codes contenus dans le registre d'instruction 15 et le registre 31, un deuxième circuit de décodage ou décodeur 23 connecté aux bornes de sortie du d'instruction 15, un deuxième circuit bistable 24 connecté à la sortie du deuxième décodeur 23 par l'intermédiaire d'une porte électrique 37. A ces éléments additionnels, il faut ajouter des portes électroniques 32 et 33 disposées respectivement sur les bus 13 et 14 de manière à pouvoir déconnecter la mémoire ll du système de test et du processeur pendant les opérations de test. Il est également prévu des portes électroniques 39 pour connecter les sorties du compteur polynomial 20 au bus de données pendant les opérations de test et les déconnecter en fonctionnement normal du microprocesseur, ce qui permet d'utiliser le compteur polynomial en tant qu'émetteur d'opérandes. Enfin, des portes électroniques 40 sont disposées sur le bus 13 à l'entrée du registre/compteur 15 pour le déconnecter du bus lors des opérations de test. Pour que ces différents éléments 19 à 24 deviennent actifs, le système comprend, en outre, un conducteur 25 sur lequel est appliqué un signal T de début de test qui est appliqué à différents éléments du processeur 10 et du système de test pour les mettre dans des états déterminés. Ces éléments sont le compteur polynomial 20, le dispositif opérateur 17, le dispositif de contrôle 16, les circuits bistables 24 et 28, le registre d'instruction/compteur 25 et son dispositif de modifications 19 et les portes électroniques 32, 33, 39 et 40. Le compteur polynomial 20 est d'un type classique et ne sera pas décrit de manière plus détaillée. Les bornes d'entrée de ce compteur polynomial sont connectées, d'une part, au bus de données 13 par l'intermédiaire des portes électroniques 39 et, d'autre part, au bus d'adresses 14. Dans le cas habituel o les codes d'adresses comportent plus de digits que les codes de données, par exemple 16 et 8 respectivement, seuls les conducteurs du bus d'adresses correspondant aux poids faibles des codes d'adresses sont connectés aux bornes d'entrées du compteur polynomial. Les bornes de sortie du compteur polynomial sont connectées, d'une part, au bus de données 13 par l'intermémdiaire des portes électroniques 39 et, d'autre part, au décodeur 21. Le décodeur 21 fournit un signal sur un conducteur de sortie 26 lorsque le code contenu dans le compteur polynomial correspond à un code déterminé. Ce code est déterminé par une simulation informatique du fonctionnement sans faute du processeur en supposant que ce dernier est connecté au compteur polynomial 20 comme décrit ci-dessus. Le code contenu dans le compteur polynomial à la fin de la simulation informatique sans faute constitue le code auquel doit aboutir une séquence de test selon l'invention en l'absence de faute du processeur. La présence de ce code indique donc que le processeur fonctionne correctement et, sur décodage par le circuit 21, fournit un signal sur le conducteur 26. Dans un processeur, le registre d'instruction reçoit les codes opératoires ou d'instruction fournis par le bus de données et a donc un fonctionnement statique. Selon l'invention, le registre 15 a un fonctionnement dynamique par modification des connexions entre les différents étages pour qu'il devienne un compteur. Il suffit pour cela d'ajouter des portes électroniques (circuit 19) au registre d'instruction, portes qui sont commandées par le signal T sur le conducteur 25. Par ailleurs, il est nécessaire que le registre 15 ne fonctionne qu'en compteur, auquel cas il doit être déconnecté du bus de données 13, déconnexion qui est obtenue par les portes électroniques 40 commandées par le signal T. En outre, la séquence de test doit commencer avec un code d'instruction particulier qui est celui de rechargement du contexte, ce qui est obtenu par un registre ou mémoire 38 qui contient ce code, qui est connecté aux bornes d'entrée parallèle du registre/compteur 15 et qui est activé par le signal T. Le registre/compteur 15 passe d'un code opératoire ou d'instruction au suivant sous la commande d'un signal A appliqué sur une entrée de comptage 27. Le signal A est fourni par une borne de sortie 18 du circuit bistable 28 dont la borne d'entrée est connectée à une borne de sortie 29 du dispositif de contrôle 16. Ce dernier fournit un signal F lorsque l'instruction contenue dans le registre/compteur 15 a été exécutée, ce qui permet de passer à l'instruction suivante. L'autre borne de sortie 30 du circuit bistable 28 est connectée au circuit d'aiguillage 22 qui est disposé entre, d'une part, le registre/compteur 15 et le registre 31 et, d'autre part, le dispositif de contrôle 16. Ce circuit d'aiguillage 22 a pour but de transmettre au dispositif de contrôle, soit le code contenu dans le compteur 15, soit le code contenu dans le registre 31. Selon l'invention, le code contenu dans le registre 31 est celui de l'instruction de sauvegarde du contexte. Cette instruction a pour but de sauvegarder le contenu d'un certain nombre de registres du dispositif opérateur 17 et du dispositif de contrôle 16 lorsqu'une instruction a été complètement exécutée. Ainsi, lorsque le dispositif de contrôle 16 fournit un signal F de fin d'instruction sur le conducteur 29, le circuit bistable 28 change d'état et fournit sur le conducteur 30 un signal au circuit d'aiguillage 22 qui transmet alors le code d'instruction de sauvegarde du contexte au dispositif de contrôle 16. Les états des registres à sauvegarder sont alors transmis au compteur polynomial par le bus de données 13. Le signal A qui est fourni sur le conducteur 18 de sortie du circuit bistable 28 provoque le changement d'état du registre/compteur 15 de manière à faire apparaître le code de l'instruction suivante dans l'ordre normal du comptage prévu par la simulation informatique. Le fonctionnement du système de test selon l'invention est alors le suivant. Le démarrage du test est effectué par le signal T qui est appliqué sur le conducteur 25. Ce signal est appliqué à plusieurs éléments de la configuration de la figure 2. D'abord aux portes électronique 40 de manière à déconnecter le registre d'instruction 15 du bus de données 13, au circuit 19 de manière à configurer le registre 15 en compteur et à la mémoire 38 de manière à lui imposer un code d'instruction initial. Selon l'invention, ce code initial correspond à une instruction de rechargement du contexte, ladite instruction ayant pour but d'initialiser tous les registres à des états déterminés. Le signal T est également appliqué à d'autres éléments de la figure 2 comme indiqué ci-dessus pour les mettre dans des états également déterminés. Par ailleurs, il est appliqué aux portes électroniques 32 et 33 pour déconnecter la mémoire 11 du système de test et aux portes électroniques 39 pour connecter le compteur polynomial 20 au bus 13. Lorsque cette première instruction a été exécutée, le conducteur 29 fournit un signal F qui, par l'intermédiaire du circuit bistable 28, autorise la transmission de l'instruction de sauvegarde du contexte (registre 31) et provoque ensuite le passage du compteur à l'état de comptage suivant correspondant au code de l'instruction suivante à exécuter. Comme indiqué ci-dessus, l'instruction de sauvegarde du contexte provoque l'enregistrement des états sauvegardés des registres dans le compteur polynomial. L'instruction qui est ensuite exécutée est celle contenue dans le compteur 15 après son changement d'état et elle s'effectue sur la base des états des registres à la fin de l'instruction précédente, celle de sauvegarde du contexte. Il est à noter que, selon une caractéristique de l'invention, certaines des opérandes qui sont nécessaires à l'exécution de certaines instructions sont fournies par les bornes de sortie du compteur polynomial 20 via les portes électroniques 39, le compteur polynomial étant sollicité en lecture à la place des mémoires et périphériques. A la fin de l'exécution de chaque instruction nouvelle, le compteur 15 s'incrémente d'une unité de sorte qu'après un certain nombre d'incrémentations successives il affiche le code de la dernière instruction à tester. C'est cette dernière instruction décodée par le décodeur 23, qui fournit alors sur le conducteur de sortie 36 un signal D. Ce signal D est appliqué au circuit bistable ll 24 par l'intermédiaire d'un circuit ET 37 commandé par le signal F du conducteur 29. Le signal D n'est alors pris en compte que lorsque cette dernière instruction a été exécutée. Le signal fourni par le circuit bistable 24 sur le conducteur 34 indique la fin de la procédure de test et est utilisé, d'une part, pour avertir la machine de test de la fin de ladite procédure et, d'autre part, pour transmettre (circuit ET 35) à ladite machine le signal de sortie du décodeur 21 présent sur le conducteur 26. Si le processeur a fonctionné correctement, le code affiché par le compteur polynomial correspondra à celui déterminé par la simulation informatique et son décodage par le circuit 21 donnera l'information de bon fonctionnement à la machine de test. Si le processeur n'a pas fonctionné correctement, le décodage du contenu du compteur polynomial donnera l'information de mauvais fonctionnement à la machine de test. L'invention a été décrite en faisant ressortir les moyens à ajouter au microprocesseur de type classique pour qu'il puisse effectuer lui-même la séquence de test. Cependant, certains de ces moyens, notamment les portes électroniques, existent et il suffit de leur fournir des signaux à l'aide de connexions électriques complémentaires. REVENDICATIONS 1. Système de test d'un microprocesseur réalisé sur une puce de circuit intégré, ledit microprocesseur comprenant au moins un registre d'instruction (15) pour recevoir les codes opératoires des opérations élémentaires, un dispositif opérateur (17) pour exécuter les opérations élémentaires, un dispositif de contrôle (16) desdites opérations élémentaires qui traduit les codes opératoires en signaux de commande du dispositif opérateur (17), un compteur polynomial (20), un bus d'adresses (14) qui connecte le dispositif opérateur (17) aux entrées du compteur polynomial et un bus de données (13) qui connecte entre eux le registre d'instruction (15), le dispositif opérateur (17) et le compteur polynomial (20), caractérisé en ce que ledit système de test comprend: - des premiers moyens (19,40) pour transformer ledit registre d'instruction (15) en un compteur et pour déconnecter ce dernier du bus de données (13), - des deuxièmes moyens (38) pour enregistrer dans ledit compteur (15) au début de la séquence de test un code opératoire correspondant à une instruction de rechargement du contexte de manière à initialiser les états de divers éléments du microprocesseur à une valeur déterminée, - des troisièmes moyens (22,28,31) pour, à la fin de l'exécution d'une instruction dont le code est contenu dans ledit compteur (15), élaborer une instruction de sauvegarde de contexte et incrémenter d'une unité le contenu du compteur (15), - des quatrièmes moyens (23,24,37) pour déterminer la fin de la séquence de test et, - des cinquièmes moyens (21, 35) pour décoder le code contenu dans le compteur polynomial (20) à la fin de la séquence de test. 2. Système de test d'un microprocesseur selon la revendication 1 dans le cas o le microprocesseur est associé à une mémoire (11) et est connecté à cette dernière par des bus d'adresses (14) et de données (13), caractérisé en ce qu'il comporte en outre des sixièmes moyens (32,33) pour déconnecter, pendant la séquence de test, les entrées/sorties de ladite mémoire des bus d'adresses et de données. 3. Système de test d'un microprocesseur selon la revendication 1 ou 2, caractérisé en ce que les bornes de sortie du compteur polynomial (20) sont connectées au bus de données (13) par l'intermédiaire de portes électroniques (39), lesdites portes électroniques étant commandées de manière que lesdites bornes de sortie du compteur plynomial soient connectées au bus de données (13) pendant la séquence de test et fournissent les opérandes nécessaires à l'exécution de certaines instructions. 4. Système de test selon la revendication 1, 2, ou 3, caractérisé en ce que les premiers moyens comprennent des premières portes électroniques (19) qui connectent entre eux les différents éléments du registre d'instructions, lesdites portes électroniques n'étant activées que pendant la séquence de test et des deuxièmes portes électroniques (40), disposées sur le bus de données (13), qui permettent de déconnecter ce dernier du registre d'instruction (15) pendant la séquence de test. 5. Système de test selon l'une quelconque des revendications précédentes 1 à 4, caractérisé en ce que les deuxièmes moyens (38) comprennent une mémoire contenant le code de l'instruction de rechargement du contexte, le contenu de ladite mémoire étant transféré dans le compteur (15) au début de la séquence de test. 6. Système de test selon l'une quelconque des revendications précédentes 1 à 5, caractérisé en ce que les troisièmes moyens comprennent un circuit bistable (28) qui change d'état à la fin de l'exécution de chaque instruction de manière que ledit circuit bistable (28) fournisse un signal de transfert de l'instruction de sauvegarde de contexte à la fin de l'exécution d'une instruction dont le code est contenu dans le compteur (15) et fournisse un signal d'incrémentation du compteur (15) à la fin de l'exécution de l'instruction de sauvegarde du contexte. 7. Système de test selon l'une quelconque des revendications précédentes 1 à 6, caractérisé en ce que les quatrièmes moyens comprennent un décodeur (23) pour détecter la dernière instruction de la séquence de test qui est affichée par le compteur (15) et un circuit bistable (24) pour garder en mémoire la présence de la dernière instruction à tester de la séquence. 8. Système de test selon l'une quelconque des revendications précédentes 1 à 7, caractérisé en ce que les cinquièmes moyens comprennent un décodeur (21) pour détecter le code contenu dans le compteur polynomial (20) et une porte électronique (35) pour transmettre le signal de décodage à la machine de test à la fin de la séquence de test.