Brevet FR3159452A1 — publié le 20250822

Procédé mis en œuvre par ordinateur de test d’un circuit logique de cache d’instructions (LcacheA) d’un circuit intégré (IC), comprenant : un stockage dans le circuit logique de cache (LcacheA) d’une séquence d’instructions comportant M instructions ; une lecture d’une valeur de comptage initiale d’un compteur d’accès au cache (HCNT) ; une exécution de la séquence d’instructions et, pour chaque instruction exécutée depuis le circuit logique de cache, une incrémentation de la valeur courante de comptage (ValCurr1) du compteur (HCNT) ; une lecture d’une valeur finale (ValFnl1) de comptage du compteur (HCNT) ; un blocage de l’exécution d’instructions non prévue par le test pendant une période s’étendant depuis la lecture de la valeur initiale de comptage jusqu’à la lecture de la valeur finale de comptage ; une soustraction de la valeur de comptage initiale (ValInit1) de la valeur finale (ValFnl1) de comptage, et une comparaison du résultat de ladite soustraction (D1) avec la valeur M. Figure pour l’abrégé : Fig 3 PROCÉDÉ MIS EN ŒUVRE PAR ORDINATEUR DE TEST DE CIRCUITS LOGIQUES IMPLÉMENTANT LA FONCTIONNALITÉ CACHE Des modes de réalisation et de mise en œuvre concernent les moyens formant mémoire cache, notamment les circuits logiques mettant en œuvre la fonctionnalité cache de circuit intégré, et plus particulièrement les tests de ces circuits logiques. La mémoire cache est un espace de stockage d’un circuit intégré utilisé pour le stockage d’instructions, on parle dans ce cas d’une mémoire cache d’instructions, ou de données, dans le cas d’une mémoire cache de données. Une mémoire cache peut être formée de cellules mémoires telles que des cellules mémoires de type « SRAM » ou « DRAM ». Des circuits logiques (également connus sous le nom de « Cache logic » en anglais) peuvent également mettre en œuvre la fonctionnalité cache, c’est-à-dire reproduire le fonctionnement d’une mémoire cache. Tout au long de la durée de vie du circuit intégré, de tels circuits logiques mettant en œuvre la fonctionnalité cache (que l’on pourra désigner par la suite plus simplement sous le vocable « circuit logique de cache » ou « logique de cache ») peuvent présenter des défaillances matérielles liées à leur usure. Lorsque ces circuits logiques sont utilisés dans le cadre d’applications conformes à des normes de sécurité fonctionnelle ou utilisant des fonctionnalités sécurisées, des tests des circuits logiques sont effectués périodiquement pour détecter ces défaillances matérielles, notamment des défaillances permanentes. En effet, ces défaillances conduisent typiquement à une corruption des données stockées par les circuits logiques et génèrent donc un dysfonctionnement du circuit intégré. A la différence des cellules mémoires dont les défaillances peuvent être détectées et éventuellement corrigées par l’utilisation de bits de parité ou de codes de correction d’erreur par exemple, les circuits logiques de cache peuvent nécessiter d’autres solutions permettant la détection de leurs défaillances. Ces autres solutions peuvent comprendre notamment l’utilisation de systèmes « BISTs » (acronyme anglais de « Built-in self-test » qui signifie « auto-test intégré ») connus pour permettre la détection de défaillances des mémoires caches et des circuits logiques, ou l‘implémentation d’une redondance cache dans ces circuits logiques (« cache redundant implementation » en anglais), ou encore les tests basés sur l’utilisation de logiciels. Les systèmes « BISTs » et l’implémentation d’une redondance cache représentent néanmoins des solutions relativement chères et, par conséquence, le test par logiciel de circuits logiques de cache reste la solution privilégiée. Un test classique de circuits logiques de cache par logiciel est typiquement précédé par une initialisation de ces circuits logiques qui consiste notamment à vider le contenu en mémoire pour permettre d’exécuter le test de façon « déterministique ». En d’autres termes, le test exécuté sur les circuits logiques de cache suite à l’initialisation de ces circuits logiques conduit à un résultat permettant de déterminer si les circuits logiques présentent des défaillances, contrairement à un résultat qui aurait été obtenu par des tests effectués sur des circuits logiques dont le contenu n’a pas été vidé. Ce type de test empêche donc l’utilisateur de bénéficier du stockage par de tels circuits logiques de cache après chaque exécution du test puisque le contenu de ces circuits est vidé avant chaque test et donc il est nécessaire de stocker à nouveau les instructions ou les données à la fin de chaque test. Ainsi, il existe un besoin de proposer des solutions qui permettent de détecter des défaillances de circuits logiques de cache et qui ne présentent pas les inconvénients susmentionnés. Un circuit logique de cache peut être destiné à stocker des instructions. On désigne alors ce circuit logique comme étant un circuit logique de cache d’instructions ou plus simplement une « logique de cache d’instructions ». Un circuit logique de cache peut être destiné à stocker des données. On désigne alors ce circuit logique comme étant un circuit logique de cache de données ou plus simplement une « logique de cache de données ». Selon un mode de mise en œuvre d’un aspect, relatif au test d’une logique de cache d’instructions, il est proposé un procédé mis en œuvre par ordinateur de test d’un circuit logique de cache d’instructions d’un circuit intégré, comprenant : - un stockage dans le circuit logique de cache d’une séquence d’instructions comportant M instructions, - un lecture d’une valeur de comptage initiale d’un compteur d’accès au cache, (« hit counter » en langue anglaise) - une exécution de la séquence d’instructions et, pour chaque instruction exécutée depuis le circuit logique de cache, une incrémentation de la valeur courante de comptage du compteur d’accès au cache, - une lecture de la valeur finale de comptage du compteur d’accès au cache, - un blocage de l’exécution d’instructions non prévue par le test pendant une période s’étendant depuis la lecture de la valeur initiale de comptage jusqu’à la lecture de la valeur finale de comptage, - une soustraction de la valeur de comptage initiale de la valeur finale de comptage, et - une comparaison du résultat de ladite soustraction avec la valeur M. Le blocage mentionné ci-avant est avantageusement réalisé en désactivant les interruptions qui peuvent conduire à une exécution non-prévue par le test de ces instructions. L’exécution non-prévue de ces instructions peut déclencher un comptage supplémentaire par le compteur d’accès au cache et peut modifier ainsi le résultat du test. En désactivant ces interruptions, on empêche ainsi la modification du résultat du test par l’exécution non-prévue d’instructions, ce qui permet ainsi d’augmenter la fiabilité du test. Un tel procédé permet de déterminer lorsque le circuit logique est défaillant à partir des valeurs du compteur d’accès au cache (« hit counter »). En effet, on peut considérer que ce circuit logique n’est pas défaillant si le résultat de la soustraction est égal au nombre M d’instructions. Au contraire la comparaison permet d’indiquer la présence d’une défaillance du circuit logique si ce résultat est différent de M. Un tel procédé permet d’effectuer un test du circuit logique mettant en œuvre la fonctionnalité cache par voie logicielle sans nécessiter un vidage du contenu du circuit logique. Le procédé selon cet aspect permet donc de détecter une défaillance du circuit logique tout en permettant de continuer à utiliser les instructions déjà stockées dans ce circuit logique sans avoir à les stocker à nouveau. Par ailleurs, le procédé selon cet aspect permet d’éviter de recourir à des solutions matérielles pouvant être coûteuse et de conception complexe. Alors que le mode de mise en œuvre de cet aspect qui vient d’être mentionné prévoit une seule exécution de la séquence des M instructions, il serait possible, dans un autre mode de mise en œuvre, de prévoir un traitement en boucle, c’est-à-dire N (N supérieur à un dans ce cas alors que N était égal à 1 dans le mode de mise en œuvre précédent) exécutions de la séquence d’instructions avec à la fin, une comparaison du résultat de la soustraction mentionnée ci-avant avec la valeur du produit NxM, pour déterminer la présence ou l’absence de défaillances du circuit logique de cache d’instructions. Selon un mode de mise en œuvre d’un autre aspect, relatif au test d’une logique de cache de données, il est proposé un procédé mis en œuvre par ordinateur de test d’un circuit logique de cache de données d’un circuit intégré, le circuit intégré comportant une première mémoire et une deuxième mémoire, le procédé comprenant : -un stockage d’au moins une donnée dans au moins un emplacement mémoire de la deuxième mémoire, - un stockage d’une séquence d’instructions dans la première mémoire, la séquence d’instructions comportant au moins une instruction de stockage dans le circuit logique de cache de données, de l’adresse dudit moins un emplacement mémoire et de la donnée correspondante stockée à cet emplacement mémoire et au moins une instruction de lecture des adresses et des données du circuit logique de cache de données, - une lecture d’une première valeur de comptage initiale d’un compteur d’accès au cache (« hit counter »), et/ou d’une deuxième valeur de comptage initiale d’un compteur d’échecs de cache (« miss counter »),(la première valeur de comptage initial et la deuxième valeur de comptage initiale peuvent être identiques ou différentes), - une exécution de la séquence d’instructions et, pour chaque instruction de stockage et chaque instruction de lecture : ○ une incrémentation de la valeur courante de comptage du compteur d’accès au cache (« hit counter ») lorsque l’une des adresses lues dans le circuit logique de cache de données correspond à l‘adresse dudit au moins un emplacement mémoire de la deuxième mémoire, ○ et/ou une incrémentation de la valeur courante de comptage du compteur d’échecs de cache (« miss counter ») lorsqu’aucune des adresses lues dans le circuit logique de cache de données correspond à l‘adresse dudit au moins un emplacement mémoire de la deuxième mémoire, - une lecture d’une première valeur finale de comptage du compteur d’accès au cache et/ou d’une deuxième valeur finale de comptage du compteur d’échec de cache, - un blocage de la lecture de données non prévue par le test pendant une période s’étendant depuis la lecture de la première valeur initiale de comptage et/ou de la deuxième valeur initiale de comptage jusqu’à la lecture de la première valeur finale de comptage et/ou de la deuxième valeur finale de comptage, - une soustraction de la première valeur de comptage initiale de la première valeur de comptage finale pour obtenir un premier résultat et/ou une soustraction de la deuxième valeur de comptage initiale de la deuxième valeur de comptage finale pour obtenir un deuxième résultat, et - une comparaison dudit premier résultat avec une valeur égale au nombre d’instructions de lecture contenues dans la séquence d’instructions et/ou dudit deuxième résultat avec une valeur égale à 0. Par analogie à ce qui a été mentionné pour le circuit logique de cache d’instructions, le blocage mentionné ici est réalisé en désactivant les interruptions qui peuvent conduire à une lecture non-prévue par le test des données stockées dans le circuit logique de cache de données. La lecture non-prévue de ces données peut déclencher un comptage supplémentaire par le compteur d’accès au cache (« hit counter ») ou par le compteur d’échecs au cache (« miss counter ») et peut modifier ainsi le résultat du test. En désactivant ces interruptions, on empêche ainsi la modification du résultat du test par la lecture non-prévue de données, ce qui permet ainsi d’augmenter la fiabilité du test. Par analogie à ce qui a été mentionné ci-avant, le procédé selon cet aspect permet de déterminer lorsque le circuit logique de cache de données est défaillant à partir des valeurs du compteur d’accès au cache et/ou du compteur d’échecs de cache. En effet, on peut considérer que le circuit logique de cache de donnée fonctionne correctement si le premier résultat est égal au nombre d’instructions de lecture présentes dans la séquence d’instruction et si le deuxième résultat est égal à 0. La comparaison permet d’indiquer la présence d’une défaillance du circuit logique de cache de données dans le cas contraire. Les autres avantages mentionnés ci-avant relatifs au procédé de test et à la fiabilité du test d’un circuit logique de cache d’instructions sont également valables dans le cas du procédé de test d’un circuit logique de cache de données. Par ailleurs, alors que le mode de mise en œuvre de cet autre aspect qui vient d’être mentionné prévoit une seule exécution de la séquence d’instructions, il serait possible, dans un autre mode de mise en œuvre, de prévoir un traitement en boucle, c’est-à-dire N (N supérieur à un dans ce cas alors que N était égal à 1 dans le mode de mise en œuvre précédent) exécutions de la séquence d’instructions avec à la fin, une comparaison du résultat de la soustraction mentionnée ci-avant avec la valeur égale à N fois le nombre d’instructions de lecture contenues dans la séquence d’instructions, pour déterminer la présence ou l’absence de défaillances du circuit logique de cache de données. Le procédé selon cet autre aspect peut avantageusement comprendre une interruption de la séquence d’instructions si la donnée lue dans le circuit logique de cache de données à ladite adresse est différente de la donnée stockée dans l’emplacement mémoire de la deuxième mémoire situé à cette adresse. La vérification de la donnée stockée par le circuit logique de cache de donnée lors de l’exécution des instructions permet de détecter une défaillance de ce circuit logique de cache avant de déterminer le résultat du test à partir des valeurs de comptage initiale et finale. Ainsi, il est possible de raccourcir la durée du test du circuit logique de cache de données lorsqu’une défaillance est détectée en comparant la donnée stockée par ce circuit logique et celle stockée dans la deuxième mémoire pour la même adresse. Selon encore un autre aspect, il est proposé un produit programme d’ordinateur configuré pour tester un circuit logique de cache (d’instructions ou de données) d’un circuit intégré, le produit programme d’ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé de test d’un circuit logique de cache d’instructions défini précédemment ou le procédé de test d’un circuit logique de cache de données défini précédemment. Selon encore un autre aspect, il est proposé un système informatique comprenant : - une mémoire comprenant un produit programme d’ordinateur tel que défini précédemment, - une unité de traitement configurée pour exécuter ledit produit programme d’ordinateur. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de mode de réalisation et de mise en œuvre, nullement limitatifs, et des dessins annexés sur lesquels : FIG. 1 ; FIG. 2 ; FIG. 3 ; et FIG. 4 illustrent schématiquement des modes de mise en œuvre et de réalisation de l’invention. Dans la suite, les figures 1 et 3 ont trait au test d’une logique de cache d’instructions et les figures 2 et 4 ont trait au test d’une logique de cache de données, et ce dans le cadre d’un traitement sans boucle (N=1). La FIG. 1 illustre schématiquement un système informatique SYS comprenant un circuit intégré IC selon un mode de réalisation de l’invention. Le circuit intégré IC comprend un circuit logique de cache d’instructions LcacheA. Ce circuit logique LcacheA met en œuvre la fonctionnalité cache. Un tel circuit logique est connu par l’homme du métier sous la désignation « Cache logic » en anglais et permet de stocker des instructions. La structure et le fonctionnement d’un tel circuit logique de cache LcacheA sont classiques ne seront donc pas détaillés dans la présente demande. Par la suite, on utilisera parfois tout simplement le terme « circuit logique LcacheA » pour désigner le circuit logique de cache d’instructions LcacheA mettant en œuvre la fonctionnalité cache, à des fins de simplification. Le circuit intégré IC comprend également une première mémoire MEM1, telle qu’une mémoire RAM (pour « Random access memory » en anglais et connu sous l’appellation « mémoire vive » en français) par exemple et une unité de traitement UT, telle qu’un processeur. La première mémoire MEM1 comporte un espace dédié au stockage d’un produit programme d’ordinateur, par exemple un logiciel de système embarqué, et un espace dédié au stockage d’une séquence d’instructions SW. La séquence d’instructions SW comprend par exemple plusieurs instructions notées InstA à InstB stockées aux emplacements mémoires d’adresses AddA à AddB. Le logiciel de système embarqué est configuré pour tester le circuit logique LcacheA, notamment grâce à l’exécution de la séquence d’instructions SW. L’unité de traitement est configurée pour exécuter le logiciel embarqué de façon à mettre en œuvre le procédé décrit par la suite en relation avec la FIG. 3 . Pour ce faire, l’unité de traitement UT est connectée à la première mémoire MEM1. Le circuit intégré IC comporte également une deuxième mémoire MEM2, qui peut être une mémoire RAM par exemple, configurée pour stocker une séquence d’instructions, différente de la séquence d’instructions SW enregistrée dans la première mémoire MEM1. La séquence d’instructions stockée dans la deuxième mémoire MEM2 comprend par exemple M=3 instructions Inst00, Inst01 et Inst02. En particulier, chaque instruction de la séquence d’instructions est stockée à une adresse d’un emplacement mémoire de la deuxième mémoire MEM2. Par exemple l’adresse Add00 de l’emplacement mémoire comporte l’instruction Inst00. Le circuit logique LcacheA est configuré pour stocker une adresse d’un emplacement mémoire de la deuxième mémoire MEM2 et l’instruction stockée dans la deuxième mémoire MEM2 à cet emplacement mémoire. L’unité de traitement UT est configuré pour exécuter les instructions stockées dans le circuit logique LcacheA, par exemple l’instruction Inst00 associée à l’adresse Add00. En outre, le circuit intégré IC comprend un compteur HCNT. Ce compteur HCNT est connu de l’homme du métier sous les termes anglosaxons « Hit counter » pouvant être traduits par « compteur d’accès au cache » en français. Ce compteur HCNT est configuré pour incrémenter une valeur de comptage ValCurr1 à chaque fois que l’unité de traitement UT exécute une instruction stockée dans le circuit logique LcacheA. L’unité de traitement UT est également configurée pour lire la valeur de comptage ValCurr1 du compteur HCNT. La FIG. 3 illustre schématiquement un exemple de procédé, basé sur l’utilisation du compteur HCNT, mis en œuvre par ordinateur, notamment par un logiciel embarqué, de test du circuit logique LcacheA du circuit intégré IC décrit précédemment en relation avec la FIG. 1 . On suppose que la valeur initiale de comptage du premier compteur HCNT vaut 0 avant la mise en œuvre du procédé, bien que cette valeur initiale de comptage puisse être différente de 0. Le procédé comprend une étape S21 de blocage de l’exécution d’instructions non prévue par le test. Plus particulièrement, des interruptions INTR ( FIG. 1 ), générées par exemple par des périphériques PERIPH ou des ressources internes de l’unité de traitement UT, peuvent conduire à une exécution non-prévue de ces instructions par l’unité de traitement UT. L’exécution non-prévue de ces instructions peut déclencher un comptage supplémentaire par le compteur HCNT et peut modifier ainsi le résultat du test A cet égard, le blocage mentionné ci-avant peut s’effectuer par une désactivation par l’unité de traitement UT des interruptions INTR. Une telle désactivation est une opération classique et connue en soi. Ce blocage, qui permet d’augmenter la fiabilité du test, s’effectue jusqu’à une étape S26 de réactivation des interruptions. Le procédé comprend une étape S22 dans laquelle l’unité de traitement UT exécute la séquence d’instruction stockée dans la deuxième mémoire MEM2. Dans cet exemple la séquence d’instruction comprend M=3 instructions Inst00, Inst01 et Inst02. L’étape S22 comprend également le stockage dans le circuit logique LcacheA de la séquence d’instructions Inst00, Inst01 et Inst02. Le procédé comprend également une étape S23 de lecture d’une valeur de comptage initiale ValInit1 du premier compteur HCNT. La valeur de comptage initiale ValInit1 est lue par l’unité de traitement UT. Le procédé comprend une étape S24 d’exécution de la séquence d’instruction Inst00, Inst01 et Inst02. Lors de cette étape S24, les instructions Inst00, Inst01 et Inst02 sont lues depuis le circuit logique LcacheA et exécutées par l’unité de traitement UT. L’étape S24 comprend, pour chaque instruction exécutée, une incrémentation de la valeur courante de comptage ValCurr1 du compteur HCNT lorsque l’instruction exécutée est une instruction stockée dans le circuit logique LcacheA. Toutefois, il se peut qu’en cas de défaillance du circuit logique LcacheA, l’unité de traitement UT n’exécute pas l’instruction stockée dans le circuit logique LcacheA. Dans ce cas, la valeur courante de comptage ValCurr1 n’est pas incrémentée. Le procédé comprend ensuite une étape S25 de lecture d’une valeur finale de comptage ValFnl1 du premier compteur HCNT. En l’absence de défaillance des circuits logiques LcacheA, la valeur finale de comptage ValFnl1 vaut 3 dans cet exemple. La valeur de comptage finale ValFnl1 est lue par l’unité de traitement UT. Le procédé comprend ensuite l’étape S26 (mentionnée ci-avant) d’activation des interruptions INTR, notamment lorsque ces interruptions INTR ont été désactivées à l’étape S21. Le procédé comprend une étape S27 de soustraction de la valeur de comptage initiale ValInit1 de la valeur de comptage finale ValFnl1. Le résultat D1 de cette soustraction, qui vaut donc 3 dans cet exemple en l’absence de défaillance du circuit logique LcacheA, est stocké dans une troisième variable. L’étape S27 comprend également une comparaison du résultat D1 avec le nombre M d’instructions de la séquence d’instructions. Le résultat de cette comparaison permet de conclure à une absence de défaillance du circuit logique LcacheA si D1 est égal à M ou bien à une défaillance si D1 est différente de M. Un tel procédé permet d’effectuer un test du circuit logique LcacheA par voie logicielle sans nécessiter un vidage du contenu du circuit logique. Il est donc possible de détecter une défaillance du circuit logique tout en permettant de continuer à utiliser les instructions déjà stockées dans ce circuit logique sans avoir à les stocker à nouveau. On évite ainsi de recourir à des solutions matérielles pouvant être coûteuse et de conception complexe. La FIG. 2 illustre schématiquement un système SYS comprenant un circuit intégré IC selon un autre mode de réalisation de l’invention. Le circuit intégré IC comprend un circuit logique de cache de données LcacheB. Ce circuit logique met en œuvre la fonctionnalité cache. Un tel circuit logique est là encore connu par l’homme du métier sous la désignation « Cache logic » en anglais et permet de stocker des données. La structure et le fonctionnement d’un tel circuit logique LcacheB, bien que pouvant être différents de ceux d’un circuit logique de cache LcacheA décrit précédemment en relation avec la FIG. 1 , sont classiques ne seront donc pas détaillés dans la présente demande. Par la suite, on utilisera parfois tout simplement le terme « circuit logique LcacheB» pour désigner le circuit logique de cache de données LcacheB mettant en œuvre la fonctionnalité cache, à des fins de simplification. Le circuit intégré IC comprend également une première mémoire MEM1, et une unité de traitement UT telle qu’un processeur. L’unité de traitement UT et la première mémoire MEM1 peuvent être les mêmes que celles décrites précédemment en relation avec la FIG. 1 . Le logiciel de système embarqué (séquence d’instructions SW) stocké dans la première mémoire MEM1 est cette fois-ci configuré pour tester le circuit logique LcacheB. L’unité de traitement UT est configurée pour exécuter le logiciel embarqué de façon à mettre en œuvre le procédé décrit par la suite en relation avec la FIG. 4 . En outre, le circuit intégré IC comporte une deuxième mémoire MEM2. La deuxième mémoire MEM2 est configurée pour stocker une donnée à une adresse d’un emplacement mémoire de la deuxième mémoire MEM2. Par exemple la donnée Dat00 est stockée à l’emplacement mémoire situé à l’adresse Add03. Le circuit logique LcacheB est configuré pour stocker une adresse d’un emplacement mémoire de la deuxième mémoire MEM2 et la donnée stockée dans la deuxième mémoire MEM2 à cet emplacement mémoire. Ici par exemple, on suppose que le circuit logique LcacheB est défaillant et que la donnée Dat01 stockée dans ce circuit logique LcacheB est différente de la donnée Dat00 stockée dans la deuxième mémoire MEM2 à l’adresse correspondante Add03. L’unité de traitement UT est configuré pour lire les données stockées dans le circuits logique LcacheB, par exemple la donnée Dat01 associée à l’adresse Add03. Le circuit intégré IC comprend également un compteur HCNT et un compteur MCNT. Le compteur HCNT, là encore désigné par les termes « compteur d’accès au cache » (« Hit counter »), est configuré pour incrémenter une valeur de comptage ValCurr1 à chaque fois que l’unité de traitement UT lit une donnée stockée dans le circuit logique LcacheB. Le compteur MCNT, connu de l’homme du métier sous les termes anglosaxons « Miss counter » pouvant être traduits par « compteur d’échec de cache » en français, est configuré pour incrémenter une valeur de comptage ValCurr2 à chaque fois que l’unité de traitement UT lit une donnée stockée dans la deuxième mémoire MEM2 et que cette donnée n’est pas stockée dans le circuit logique LcacheB. L’unité de traitement UT est également configurée pour lire la valeur de comptage ValCurr1 du compteur HCNT et la valeur de comptage ValCurr2 du compteur MCNT. La FIG. 4 illustre schématiquement un exemple de procédé, basé sur l’utilisation du compteur HCNT, mis en œuvre par ordinateur, notamment un logiciel embarqué, de test du circuit logique LcacheB du circuit intégré IC décrit précédemment en relation avec la FIG. 2 . On suppose ici que la valeur initiale de comptage ValCurr1 du compteur HCNT vaut 0, bien que cette valeur initiale de comptage puisse être différente de 0. Le procédé comprend une étape S31 de blocage de la lecture de données non prévue par le test. Plus particulièrement, par analogie avec ce qui a été décrit pour l’étape S21 de la FIG. 3 , des interruptions INTR ( FIG. 2 ), générées par exemple par des périphériques PERIPH ou des ressources internes de l’unité de traitement UT, peuvent conduire à une lecture non-prévue de ces données par l’unité de traitement UT. La lecture non-prévue de ces données peut déclencher un comptage supplémentaire par le compteur HCNT et peut modifier ainsi le résultat du test. A cet égard, le blocage mentionné ci-avant peut s’effectuer par une désactivation par l’unité de traitement UT des interruptions INTR. Une telle désactivation est une opération classique et connue en soi. Ce blocage, qui permet d’augmenter la fiabilité du test, s’effectue jusqu’à une étape S38 de réactivation des interruptions. Le procédé comprend une étape S32 de stockage dans au moins un emplacement mémoire de la deuxième mémoire MEM2 d’au moins une donnée, par exemple la donnée Dat00 à l’emplacement mémoire d’adresse Add03 de la deuxième mémoire MEM2. Le procédé comprend ensuite une étape S33 comportant une lecture de la donnée Dat00 par l’unité de traitement UT depuis l’emplacement mémoire de la deuxième mémoire MEM2 à l’adresse Add03, et un stockage de l’adresse Add03 de l’emplacement mémoire et la donnée Dat00 stockée dans cet emplacement mémoire de la deuxième mémoire MEM2, dans le circuit logique LcacheB. Le procédé comprend une étape S34 de lecture de la valeur de comptage initiale ValInit2 du compteur HCNT du circuit intégré IC. La valeur de comptage initiale ValInit2, qui vaut par exemple 1 à ce stade, est lue par l’unité de traitement UT. Le procédé comprend une étape S35 comprenant une lecture des adresses et des données du circuit logique LcacheB. L’étape S35 comprend une incrémentation de la valeur courante de comptage ValCurr1 du compteur HCNT lorsque l’unité de traitement UT lit une donnée stockée dans le circuit logique LcacheB. Toutefois, il se peut qu’un échec de cache se produise en cas de défaillance du circuit logique LcacheB et que l’unité de traitement UT lise la donnée stockée à l’emplacement mémoire de la mémoire MEM2 alors que celle-ci n’est pas stockée dans le circuit logique LcacheB. Dans ce cas, la valeur courante de comptage ValCurr1 n’est pas incrémentée. Le procédé comprend une étape S36 d’interruption de la séquence d’instruction SW si la donnée lue dans le circuit logique LcacheB à l’adresse de l’emplacement mémoire de la deuxième mémoire MEM2 est différente de la donnée stockée dans l’emplacement mémoire de la deuxième mémoire MEM2 situé à cette adresse. En effet, il est possible qu’une donnée stockée dans le circuit logique LcacheB soit corrompue en cas de défaillance et que cette donnée ne corresponde donc pas à celle stockée dans la deuxième mémoire MEM2 à l’adresse correspondante. Plus précisément, dans l’exemple illustré aux figures 2 et 4, la donnée lue à l’adresse Add03 depuis le circuit logique LcacheB durant l’exécution de la séquence d’instruction est la donnée Dat01 qui est différente de la donnée Dat00 stockée dans l’emplacement mémoire de la deuxième mémoire MEM2 situé à cette adresse Add03. Par conséquent, l’exécution de la séquence d’instruction SW par l’unité de traitement UT est interrompue (étape S36) et permet d’indiquer qu’une défaillance du circuit logique LcacheB a été détectée. Par la suite, on considère qu’aucune exécution de la séquence d’instruction n’a été interrompue. Le procédé comprend ensuite une étape S37 de lecture d’une valeur finale de comptage ValFnl2 du compteur HCNT. La valeur de comptage finale ValFnl2 est lue par l’unité de traitement UT. Dans cet exemple, en l’absence d’échec de cache, la valeur finale de comptage ValFnl2 vaut 2 puisque la valeur initiale a été supposée égale à 1. Le procédé comprend une étape S38 d’activation des interruptions INTR analogue à l’étape S26 décrite précédemment en relation avec la FIG. 3 . Le procédé comprend une étape S39 analogue à l’étape S27 décrite précédemment en relation avec la FIG. 3 . L’étape S39 comprend une soustraction de la valeur de comptage initiale ValInit2 de la valeur de comptage finale ValFnl2 pour obtenir un premier résultat D1 qui vaut ici 2-1=1. L’étape S39 comprend une comparaison du premier résultat D1 avec le nombre d’instructions de lecture contenues dans la séquence d’instructions SW. Le résultat de cette comparaison permet alors de conclure, dans l’hypothèse qu’aucune exécution de la séquence d’instruction n’a été interrompue, à une absence de défaillance du circuit logique LcacheB puisque le premier résultat D1 est égal à la valeur attendue qui est 1. Les avantages du procédé de test du circuit logique LcacheB sont analogues à ceux mentionnés pour le test du circuit logique LcacheA. Alors que pour tester le circuit logique LcacheB, on a utilisé le compteur HCNT, il serait possible d’utiliser aussi le compteur MCNT (« Miss counter »). La valeur du compteur MCNT s’incrémente à chaque fois que l’unité de traitement UT lit la donnée Dat00 dans la deuxième mémoire MEM2 et que cette donnée n’est pas stockée dans le circuit logique LcacheB. Et l’absence ou la présence de défaillance de ce circuits logique serait déterminée en comparant à 0 le résultat de la différence entre la valeur finale de comptage et la valeur initiale de comptage de ce compteur MCNT. Procédé mis en œuvre par ordinateur de test d’un circuit logique de cache d’instructions (LcacheA) d’un circuit intégré (IC), comprenant : - un stockage dans le circuit logique de cache (LcacheA) d’une séquence d’instructions comportant M instructions (Inst00, Inst01, Inst02), - une lecture d’une valeur de comptage initiale (ValInit1) d’un compteur d’accès au cache (HCNT), - N exécutions de la séquence d’instructions, avec N supérieur ou égal à 1, et, pour chaque instruction exécutée depuis le circuit logique de cache (LcacheA), une incrémentation de la valeur courante de comptage (ValCurr) du compteur (HCNT), - une lecture d’une valeur finale (ValFnl) de comptage du compteur (HCNT), - un blocage de l’exécution d’instructions non prévue par le test pendant une période s’étendant depuis la lecture de la valeur initiale de comptage (ValInit1) jusqu’à la lecture de la valeur finale de comptage (ValFnl), - une soustraction de la valeur de comptage initiale (ValInit1) de la valeur finale (ValFnl) de comptage, et - une comparaison du résultat de ladite soustraction (D1) avec une valeur égale au produit NxM. Procédé mis en œuvre par ordinateur de test d’un circuit logique de cache de données (LcacheB) d’un circuit intégré (IC), le circuit intégré comportant une première mémoire (MEM1) et une deuxième mémoire (MEM2), le procédé comprenant : -un stockage dans au moins un emplacement mémoire de la deuxième mémoire d’au moins une donnée (Dat00), - un stockage d’une séquence d’instructions (SW) dans la première mémoire (MEM1), la séquence d’instructions comportant au moins une instruction de stockage dans le circuit logique de cache (LcacheB), de l’adresse (Add03) dudit moins un emplacement mémoire et de la donnée correspondante (Dat00) stockée à cet emplacement mémoire et au moins une instruction de lecture des adresses et des données du circuit logique de cache de données (LcacheB), - une lecture d’une première valeur de comptage initiale d’un compteur d’accès au cache (HCNT) et/ou d’une deuxième valeur de comptage initiale d’un compteur d’échecs de cache (MCNT), - N exécutions de la séquence d’instructions (SW), avec N supérieur ou égal à 1, et, pour chaque instruction de stockage et chaque instruction de lecture : ○ une incrémentation de la valeur courante de comptage (ValCurr1) du compteur d’accès au cache (HCNT) lorsque l’une des adresses lues dans le circuit logique de cache (LcacheB) correspond à l‘adresse dudit au moins un emplacement mémoire de la deuxième mémoire (MEM2), ○ et/ou une incrémentation de la valeur courante de comptage (ValCurr2) du compteur d’échecs de cache (MCNT) lorsqu’aucune des adresses lues dans le circuit logique de cache (LcacheB) correspond à l‘adresse dudit au moins un emplacement mémoire de la deuxième mémoire (MEM2), - une lecture d’une première valeur finale (ValFnl2) de comptage du compteur d’accès au cache (HCNT) et/ou d’une deuxième valeur finale du compteur d’échecs de cache (MCNT), - un blocage de la lecture de données non prévue par le test pendant une période s’étendant depuis la lecture de la première valeur initiale de comptage et/ou de la deuxième valeur initiale de comptage jusqu’à la lecture de la première valeur finale de comptage et/ou de la deuxième valeur finale de comptage, - une soustraction de la première valeur de comptage initiale (ValInit2) de la première valeur de comptage finale (ValFnl2) du compteur d’accès au cache (HCNT) pour obtenir un premier résultat (D1) et/ou une soustraction de la deuxième valeur de comptage initiale de la deuxième valeur de comptage finale du compteur d’échecs de cache (MCNT) pour obtenir un deuxième résultat (D2), et - une comparaison dudit premier résultat (D1) avec une valeur égale à N fois le nombre d’instructions de lecture contenues dans la séquence d’instructions (SW) et/ou dudit deuxième résultat (D2) avec une valeur égale à 0. Procédé selon la revendication 2, comprenant une interruption de la séquence d’instructions (SW) si la donnée lue dans les moyens formant mémoire cache (Dat01) à ladite adresse est différente de la donnée (Dat00) stockée dans l’emplacement mémoire de la deuxième mémoire (MEM2) situé à cette adresse (Add03). Produit programme d’ordinateur configuré pour tester un circuit logique de cache (LcacheA, LcacheB) d’un circuit intégré, le produit programme d’ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé selon la revendication 1 ou le procédé selon l’une des revendications 2 à 3. Système informatique comprenant : - une mémoire (MEM1) comprenant un produit programme d’ordinateur selon la revendication 4, - une unité de traitement (UT) configurée pour exécuter ledit produit programme d’ordinateur.