Brevet FR2962809A1 — publié le 20120120

PROCEDE ET DISPOSITIF POUR LE TEST AUTOMATIQUE EMBARQUE D'UN CIRCUIT INTEGRE La présente invention concerne un mécanisme de test automatique et embarqué pour circuit intégré qui permet une automatisation de la vérification fonctionnelle d'un tel circuit. Elle s'applique notamment dans les domaines où les exigences de fiabilité sont une nécessité tels que l'aéronautique, l'automobile, les domaines du médical ou encore de la sécurité de l'information. Elle s'inscrit, de façon plus globale, dans le cadre de la problématique de conception pour le test de composants électroniques complexes, également connue sous l'appellation anglo-saxonne « Design For Test ». II s'agit ici de prendre en compte, lors du développement de tels composants, la possibilité de faciliter la détection d'un mauvais fonctionnement ainsi que le tri entre composants défectueux et opérationnels. L'invention vise également à réduire le temps nécessaire au test des fonctionnalités de chaque composant à son démarrage. Pour garantir l'exécution correcte, l'intégrité ainsi que la conformité aux spécifications du traitement numérique mis en oeuvre par un circuit électronique, ce dernier doit être exempt d'anomalies pendant toute sa durée de vie. Il convient donc de s'assurer de l'absence de défaut du circuit aussi bien avant, pendant ou après l'exécution du traitement. Le concepteur, confronté à ce problème, doit proposer une solution permettant de détecter l'ensemble des pannes, quelles qu'en soient les causes et les instants ou un défaut peut apparaître du par exemple à l'usure du temps, et qui n'impacte pas l'exécution nominale du traitement implémenté par le circuit. De plus, le test doit pouvoir s'exécuter de façon automatique. Les moyens de test mis en oeuvre par la présente invention sont embarqués. Ils se différencient notamment des solutions de l'art antérieur en ce qu'ils visent à tester la fiabilité d'un composant non pas en sortie de fonderie mais après sa fabrication et à n'importe quel moment de son utilisation tout au long de son cycle de vie. Les solutions techniques connues permettant de répondre au 5 problème précité sont plurales. Une première solution consiste à implémenter en plusieurs exemplaires le même traitement numérique afin d'assurer une redondance des fonctions critiques du circuit. Les résultats obtenus par chaque implémentation sont comparés afin de détecter un écart de comportement. 10 Une telle solution pose des problèmes de faisabilité des comparateurs de traitements redondés, en particulier au niveau de l'asynchronisme des résultats et de l'échantillonnage d'entrées analogiques. De plus, elle entraine une augmentation significative de la surface du composant et donc, indirectement, de son coût ainsi que du coût du boîtier du composant. En 15 effet les solutions basées sur la redondance présentent un inconvénient majeur d'encombrement. Enfin, la consommation du composant est également augmentée ce qui entraîne une nécessité de moyens de refroidissement plus adaptés et de boîtiers plus dissipants donc également plus coûteux. 20 Une deuxième solution connue concerne la méthode dite du « test structurel » qui consiste à tester le circuit sur tout ou partie de son architecture, jusqu'au niveau des bascules logiques. Pour cela, deux approches principales existent. L'approche dite « full scan » est traditionnellement utilisée pour des 25 besoins de test de conformité en sortie de fonderie. Elle repose sur une instrumentation de test externe qui permet d'injecter des vecteurs de test précalculés dans le circuit à tester, de commander la propagation de ces vecteurs à l'intérieur du circuit et de collecter les résultats. Ce type de solution est utilisé uniquement en sortie de fonderie des composants. Seul le 30 chaînage des bascules nécessaire à la création des chemins de test est ajouté dans le composant lui-même. L'approche dite « LBIST » pour « Logic Built-In Self Test » repose sur la génération automatique de vecteurs de test pseudo-aléatoires à l'intérieur du circuit, ce qui la différencie en partie de l'approche « full scan ». Cette deuxième solution présente l'inconvénient d'engendrer un taux de couverture de test moindre qu'avec une solution redondée, de plus la détection des pannes est différée et non temps réel comme cela est le cas avec la première solution. Par ailleurs, l'exploitation de cette solution nécessite d'interrompre la mission du composant. De plus l'approche « full scan » nécessite une instrumentation externe conséquente pour l'injection des vecteurs de test et la récupération des résultats correspondants. Elle n'est mise en oeuvre habituellement que dans la phase de production pour détecter les défauts de fabrication et elle n'est pas prévue pour une mise en oeuvre en phase opérationnelle. L'approche « LBIST » présente l'inconvénient d'avoir un taux de couverture de test plus limité du fait d'une génération non optimale en quantité des vecteurs de test. Afin de pallier aux limitations précitées des solutions de l'art antérieur, la présente invention propose une solution permettant de tester le composant de façon automatique pendant sa phase opérationnelle et en offrant un taux de couverture des pannes détectables très large. L'invention a comme principaux avantages un taux de couverture optimal par rapport aux solutions existantes et un niveau de test ajustable en fonction des contraintes. L'invention a pour objet un procédé pour le test automatique et embarqué d'au moins une partie fonctionnelle d'un circuit intégré comportant un ensemble d'éléments de logique combinatoire qui exécutent un traitement numérique et un dispositif de test caractérisé en ce que les étapes suivantes sont au moins exécutées par ledit dispositif de test: o une étape de lecture d'un ensemble de vecteurs de test binaires précalculés et stockés dans une mémoire externe audit circuit intégré, o une étape d'injection desdits vecteurs de test dans une chaine de registres reliés aux entrées desdits éléments de logique combinatoire, o une étape d'exécution fonctionnelle desdits éléments de logique combinatoire sur lesdits vecteurs de test appliqués à leur entrée, o une étape d'extraction des vecteurs résultats obtenus en sortie desdits éléments de logique combinatoire, o une étape de calcul d'un condensé desdits vecteurs résultats, o une étape de comparaison dudit condensé avec un condensé de référence caractéristique du fonctionnement nominal correct de ladite partie fonctionnelle dudit circuit intégré, o une étape de détection de défauts si ledit condensé est différent dudit condensé de référence. Dans une variante de réalisation de l'invention, le condensé est obtenu par un contrôle de redondance cyclique (CRC) appliqué auxdits vecteurs résultats. Dans une variante de réalisation de l'invention, le condensé de référence est programmé dynamiquement. Dans une variante de réalisation de l'invention, les vecteurs de test binaires sont précalculés de façon à minimiser le nombre de vecteurs de test nécessaires et maximiser le nombre de défauts détectés. L'invention a également pour objet un circuit intégré comportant une partie fonctionnelle à tester caractérisé en ce qu'il est connecté à une mémoire et qu'il comporte en plus un dispositif de test embarqué adapté à exécuter les étapes du procédé selon l'invention. D'autres caractéristiques apparaîtront à la lecture de la description détaillée donnée à titre d'exemple et non limitative qui suit faite en regard de dessins annexés qui représentent : La figure 1, un synoptique d'un dispositif mettant en oeuvre le procédé 5 d'autotest selon l'invention. La figure 1 représente un circuit intégré 14 adapté à mettre en oeuvre le procédé de test automatique selon l'invention. Un tel circuit intégré peut être un circuit intégré spécialisé de type ASIC, un processeur générique ou 10 encore un processeur de traitement de signal ou même un composant à logique programmable de type FPGA dans le cas où les moyens de test sont accessibles avant chargement de la configuration dudit composant FPGA De façon générale, l'invention s'applique au test automatique de tout composant implémentant au moins une fonction de traitement numérique. 15 Une mémoire non volatile externe 13, par exemple une mémoire flash ou tout autre dispositif de stockage d'information, est utilisée pour stocker un ensemble de vecteurs de test. Ces derniers sont des stimuli prêts à être injectés dans le circuit intégré, en entrée de chaque chaîne de bascules, aux fins de tester le comportement logique dudit circuit. Un dispositif de test 12 20 selon l'invention est implémenté sur le circuit intégré 14 afin de permettre le test automatique de tout ou partie 11 du composant. Dans une première étape 121 exécutée par le dispositif de test 12, les vecteurs de tests sont lus. Un vecteur de test comporte une pluralité de valeurs de test binaires. Le nombre de valeurs d'un vecteur de test 25 correspond au nombre de bascules ou d'éléments de logique combinatoire à tester lors d'une exécution du test. Le vecteur de test lu depuis la mémoire externe 13 est injecté 21 dans la partie 11 du composant à tester. Plus précisément, chaque valeur binaire est injectée dans un registre situé en entrée de l'élément logique à tester qui est un des éléments unitaire de la 30 fonction de traitement implémentée sur ledit composant 11. Les registres de test sont chainés afin de constituer une chaine de test. Avantageusement, plusieurs vecteurs de test peuvent être injectés 21 en parallèle dans le composant afin d'augmenter la couverture du test. Le dispositif de test 12 possède un cycle d'horloge propre, qu'on appellera cycle d'horloge de test, qui définit la vitesse d'exécution du test. A chaque nouveau cycle d'horloge de test, une valeur de test est déplacée d'un registre vers le registre suivant. Cette procédure continue jusqu'à ce que tous les registres de tests soient remplis. Ainsi le nombre de cycles d'horloge de test est au moins égal au nombre de registres associés à un vecteur de test. Une fois tous les registres de test remplis, un ou plusieurs cycles d'horloge fonctionnel sont appliqués afin d'exécuter la logique combinatoire du composant 11 sur les valeurs de test injectés dans ledit composant 11. Après exécution de la logique associée aux bascules testées à l'aide du ou des vecteurs de test, un vecteur résultat 22 est obtenu pour chaque vecteur de test injecté et de même taille que celui-ci. Le vecteur résultat est récupéré par le dispositif de test 12 puis un condensé 122 est calculé à partir du ou des vecteurs résultat 22 agrégés ensemble. Le condensé 122 peut être obtenu par toute opération effectuée sur le ou les vecteurs résultat 22 ou encore sur une partie seulement d'un ou de plusieurs de ces vecteurs 22. Le calcul d'un condensé a pour objectif de fournir une information caractéristique desdits vecteurs résultat 22, mais présentant une taille réduite par rapport à ces derniers. Par exemple le calcul du condensé peut consister en un calcul de contrôle de redondance cyclique (CRC). Le condensé 122 obtenu est ensuite comparé à un condensé de référence 123 préalablement déterminé en fonction des vecteurs de test et de la connaissance de la logique exécutée sur le composant 11 à tester. Le condensé 122 généré par le dispositif de test 12 selon l'invention doit être de taille égale au condensé de référence 123. Cette taille doit être suffisante pour éviter les problèmes de fausse alarme, c'est-à-dire une détection de panne alors que le composant fonctionne correctement. Après comparaison, un résultat de test 20 est produit indiquant si une anomalie a été détectée. Le dispositif de test 12 est embarqué sur le circuit intégré 14 de façon à pouvoir réaliser le test de façon automatique. Seuls les vecteurs de test et éventuellement le condensé de référence 123 sont stockés sur une mémoire externe audit circuit intégré. Ces vecteurs de test sont précalculés de façon à permettre une couverture et un temps d'exécution du test optimaux. Ainsi le minimum de vecteurs est utilisé pour couvrir tous les changements d'états possibles des bascules du circuit. L'invention se différencie notamment de la solution de l'art antérieur dite « LBIST » par l'utilisation d'un sous-ensemble optimal de vecteurs de tests qui ne sont pas générés pseudo-aléatoirement mais déterminés de façon à détecter le maximum de défauts du circuit avec un minimum de tests. Un des inconvénients de la génération pseudoaléatoire réside dans le fait que deux vecteurs aléatoirement choisis peuvent entrainer la détection du même défaut car le traitement numérique implémenté sur le composant 11 n'a pas forcément un comportement bijectif. Ainsi, deux vecteurs de test différents peuvent aboutir à la détection d'un défaut identique, ce qui entraine une redondance dans l'exécution des tests et un surcout en temps d'exécution non nécessaire. Un des objectifs visé par l'invention est de réduire le temps d'exécution d'un test en utilisant un ensemble restreint de vecteurs de test précalculés. Les vecteurs de test peuvent, par exemple, être générés à l'aide de générateurs de vecteurs de test automatiques de type ATPG (« Automatic Test Pattern Generation »). Dans une variante de réalisation de l'invention, le condensé de référence 123 est programmé dynamiquement de façon à prendre en compte un changement de la suite de vecteurs de test pour adapter la couverture de test ou en cas de reprogrammation du traitement numérique implémenté sur le composant. Dans une variante de réalisation de l'invention non représentée sur la figure 1, la mémoire 13 est interne au circuit intégré 14.30 REVENDICATIONS1. Procédé pour le test automatique et embarqué d'au moins une partie (11) fonctionnelle d'un circuit intégré (14) comportant un ensemble d'éléments de logique combinatoire qui exécutent un traitement numérique et un dispositif de test (12) caractérisé en ce que les étapes suivantes sont au moins exécutées par ledit dispositif de test (12): o une étape de lecture (121) d'un ensemble de vecteurs de test binaires précalculés et stockés dans une mémoire externe (13) audit circuit intégré (14), o une étape d'injection (21) desdits vecteurs de test dans une chaine de registres reliés aux entrées desdits éléments de logique combinatoire, o une étape d'exécution fonctionnelle desdits éléments de logique combinatoire sur lesdits vecteurs de test appliqués à leur entrée, o une étape d'extraction (22) des vecteurs résultats obtenus en sortie desdits éléments de logique combinatoire, o une étape de calcul d'un condensé (122) desdits vecteurs résultats, o une étape de comparaison (123) dudit condensé (122) avec un condensé de référence caractéristique du fonctionnement nominal correct de ladite partie (11) fonctionnelle dudit circuit intégré, o une étape de détection de défauts (20) si ledit condensé (122) est différent dudit condensé de référence. 2. Procédé selon la revendication 1 caractérisé en ce que ledit condensé (122) est obtenu par un contrôle de redondance cyclique (CRC) appliqué auxdits vecteurs résultats.30 3. Procédé selon l'une des revendications précédentes caractérisé en ce que ledit condensé de référence est programmé dynamiquement. 4. Procédé selon l'une des revendications précédentes caractérisé en ce que lesdits vecteurs de test binaires sont précalculés de façon à minimiser le nombre de vecteurs de test nécessaires et maximiser le nombre de défauts détectés. 5. Circuit intégré (14) comportant une partie fonctionnelle (11) à tester ~o caractérisé en ce qu'il est connecté à une mémoire (13) et qu'il comporte en plus un dispositif de test (12) embarqué adapté à exécuter les étapes du procédé selon l'une des revendications 1 à 4.