FR 3085769 A1 20200313 FR 1857993 A 20180906 B17479 - 18-GR2-0419 DESCRIPTION TITRE : Mémoire à code correcteur d'erreur Domaine technique [0001] La présente description concerne de façon générale les dispositifs électroniques, et plus particulièrement les mémoires à code correcteur d'erreur. Technique antérieure [0002] Dans une mémoire à code correcteur d'erreur, le code correcteur d'erreur permet de détecter et/ou corriger une ou plusieurs erreurs dans les données stockées. Une telle mémoire est généralement comprise dans une puce de circuit intégré. Résumé de l'invention [0003] Un mode de réalisation pallie tout ou partie des inconvénients des mémoires connues à code correcteur d'erreur. [0004] Un mode de réalisation prévoit un procédé comprenant une écriture d'un ou plusieurs mots volontairement invalides dans une mémoire à code correcteur d'erreur. [0005] Selon un mode de réalisation, le procédé comprend, avant ladite écriture, une étape de génération du ou des mots invalides. [0006] Selon un mode de réalisation, le procédé comprend, avant ladite écriture, une étape de sélection d'emplacements consécutifs dans la mémoire pour lesdits mots. [0007] Selon un mode de réalisation, ledit ou l'un desdits mots comprend un seul bit invalide. [0008] Selon un mode de réalisation, ledit ou l'un desdits mots comprend exactement deux bits invalides. [0009] Selon un mode de réalisation, le procédé comprend, après ladite écriture, un verrouillage en lecture seule dudit ou desdits mots. 2 B17479 - 18-GR2-0419 [0010] Un mode de réalisation prévoit une mémoire à code correcteur d'erreur, comportant un ou plusieurs mots volontairement invalides. [0011] Selon un mode de réalisation, lesdits mots sont situés à des emplacements consécutifs. [0012] Selon un mode de réalisation, ledit ou lesdits mots sont accessibles en lecture seule. [0013] Selon un mode de réalisation, ledit ou l'un desdits mots comprend un seul bit invalide. [0014] Selon un mode de réalisation, ledit ou l'un desdits mots comprend exactement deux bits invalides. [0013] Un mode de réalisation prévoit une utilisation d'une mémoire telle que définie ci-dessus pour tester un circuit correcteur d'erreur. [0016] Un mode de réalisation prévoit un circuit électronique configuré pour écrire un ou plusieurs mots volontairement invalides dans une mémoire à code correcteur d'erreur. [0017] Selon un mode de réalisation, le circuit est configure pour que l'écriture du ou des mots volontairement invalides soit effectuée en usine. [0018] Selon un mode de réalisation, le circuit comprend une mémoire telle que définie ci-dessus. Brève description des dessins [0019] Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : [0020] [Fig. 1] la figure 1 représente un mode de réalisation d'un circuit comprenant une mémoire à code correcteur d'erreur. Description des modes de réalisation 3 B17479 - 18-GR2-0419 [0021] De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. [0022] Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les codes correcteurs d'erreur ne sont pas décrits en détail, les modes de réalisation décrits étant compatibles avec les codes correcteurs d'erreur courants. [0023] Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments. [0024] Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. [0025] Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 près. 4 B17479 - 18-GR2-0419 [0026] La figure 1 représente un mode de réalisation d'un circuit électronique 100, par exemple un circuit intégré, comprenant une mémoire 102 à code correcteur d'erreur. [0027] La mémoire 102 comprend des emplacements mémoire 104. Les emplacements 104 ont de préférence tous le même nombre M de bits. De préférence, les emplacements 104 se succèdent dans la mémoire. La mémoire 102 est de préférence reliée à un circuit 106 correcteur d'erreur (ECC). Le circuit 106 relie la mémoire 102 par exemple à un bus 108 de transmission des données. [0028] En fonctionnement, le circuit 106 reçoit une donnée à écrire dans la mémoire 102. La donnée provient par exemple du bus 108. La donnée a un nombre N de bits, par exemple égal à 32 ou 64 bits, de préférence égal à 128 bits. Le circuit 106 code cette donnée en appliquant un code correcteur d'erreur, c'est-à-dire une technique de codage de la donnée basée sur une redondance d'information. Le résultat du codage est un mot ayant un nombre de bits M supérieur à celui de la donnée non codée. [0029] De préférence, le codage consiste à associer une signature (CHK) à la donnée (DATA). La signature comprend un nombre K de bits par donnée. De préférence, le nombre de bits K de la signature est égal à 9 dans le cas de données de 128 bits. Le mot résultant du codage comprend alors l'ensemble de la donnée et de la signature. Le nombre M de bits du mot est égal à la somme N+K, de préférence égale à 137, des nombres de bits de la donnée et de la signature. A titre d'exemple, les bits de la signature sont les bits de poids les plus faibles du mot. En variante, dans le mot résultant du codage, les bits de la signature sont intercalés, consécutivement ou non, entre des bits de la donnée. [0030] Le mot résultant du codage est écrit dans l'un des emplacements 104. Pour cela, l'emplacement 104 a le même B17479 - 18-GR2-0419 nombre de bits M que ce mot. Il arrive qu'une ou plusieurs erreurs se produisent au cours de l'écriture, ou après cette écriture. Une erreur correspond à une différence d'un bit entre le mot contenu dans l'emplacement considéré et le mot résultant du codage de la donnée. [0031] Pour lire la donnée, on lit le mot situé dans l'emplacement 104 correspondant. Le circuit 106 retrouve la donnée en utilisant le code correcteur d'erreur. A titre d'exemple, pour cela, le circuit 106 vérifie la signature et extrait la donnée du mot lu. La donnée ainsi obtenue est par exemple envoyée sur le bus 108. Lorsque le mot lu présente une ou plusieurs erreurs, l'utilisation du code correcteur d'erreur corrige ou détecte la ou les erreurs. De préférence, le code correcteur d'erreur permet de corriger une erreur unique dans un mot (SEC, "Single Error Correction") et de détecter deux erreurs dans le même mot (DED, "Double Error Detection"). On peut utiliser tout code correcteur d'erreur, par exemple permettant de détecter seulement une erreur, ou de corriger et/ou détecter plus de respectivement une et deux erreurs. Cela conditionne entre autres la taille du résultat du codage de la donnée. [0032] Du fait de la redondance d'information qui base le code correcteur d'erreur, seuls certains mots sont valides, c'est-à-dire peuvent résulter de l'application de ce code. Par exemple, la signature est associée de manière univoque à la donnée que l'on code. De ce fait, bien que la donnée puisse prendre n'importe quelle valeur, le résultat du codage de cette donnée ne peut pas être n'importe quel mot. Dans cet exemple, les mots valides sont ceux, et seulement ceux, dans lesquels la signature correspond à la donnée. [0033] L'ensemble des mots valides correspond à tous les résultats des codages de toutes les données, c'est-à-dire des 2AN données correspondant respectivement à toutes les 6 B17479 - 18-GR2-0419 combinaisons de N bits ("'" représente la fonction puissance). Pour chacune des 2^N combinaisons, le résultat du codage de la donnée est un mot valide différent. Il y a donc 2'N mots valides parmi les 2'M mots correspondant respectivement à toutes les combinaisons de M bits. [0034] Dans le mode de réalisation de la figure 1, le contenu d'un des emplacements 104 de la mémoire 102 est un mot volontairement invalide. [0035] Un mot est dit ici invalide lorsqu'il ne fait pas partie de l'ensemble des mots valides, c'est-à-dire lorsque ce mot diffère du résultat de l'application du code correcteur d'erreur à toute donnée. Un mot invalide contient au moins un bit invalide, c'est-à-dire que ce mot diffère de n'importe lequel des mots valides par au moins un bit. Par exemple, un mot invalide comprend une donnée et une signature qui ne se correspondent pas. Selon un autre exemple, un mot invalide comprend un seul bit invalide, c'est-à-dire que ce mot a une différence d'un seul bit avec au moins un des mots valides. Selon encore un autre exemple, un mot invalide comprend exactement deux bits invalides, c'est-à-dire que ce mot diffère de n'importe lequel des mots valides par au moins deux bits et diffère d'au moins un des mots valides par exactement deux bits. [0036] Un mot est dit volontairement invalide lorsqu'il résulte d'une étape de génération d'un mot invalide suivie de l'écriture du mot invalide dans l'un des emplacements 104. On peut utiliser toute étape de génération permettant d'obtenir un mot invalide à chaque mise en oeuvre de cette étape. De préférence, cette étape de génération préalable à l'écriture comprend une étape de calcul, par exemple le codage d'une donnée et l'invalidation d'au moins un bit dans le mot résultant de ce codage. L'invalidation d'un bit dans le mot correspond par exemple à la modification d'un des bits du mot. 7 B17479 - 18-GR2-0419 De préférence, plusieurs des mots situés dans les emplacements 104 sont volontairement invalides. De préférence, le mot situé dans l'un au moins des emplacements (104A) comprend un seul bit invalide. De préférence, le mot situé dans l'un au moins des emplacements (104B) comprend exactement deux bits invalides. [0037] La prévision de mots volontairement invalides stockés dans la mémoire 102 permet de tester le circuit 106, en particulier la correction et/ou la détection d'erreur par le circuit 106. [0038] Pour corriger une ou plusieurs erreurs dans un mot erroné lu dans la mémoire, le circuit 106 détermine de préférence un mot valide considéré comme corrigé. De préférence, ce mot valide corrigé est le mot valide le plus proche du mot erroné, c'est-à-dire celui, parmi tous les mots valides, qui a le moins de bits différents de ceux du mot erroné. Le circuit 106 retrouve la donnée à partir du mot valide corrigé. La donnée retrouvée est ainsi, de préférence, celle pour laquelle le résultat du codage est le plus proche du mot erroné. [0039] Pour tester le fonctionnement de la correction d'erreur par le circuit 106, on vérifie que le circuit 106 fournit une donnée à partir d'un mot invalide, et que cette donnée est celle que l'on attend pour un fonctionnement correct. Le mot invalide correspond à un résultat de codage de la donnée attendue rendu erroné par une ou plusieurs erreurs. Ainsi, cette donnée attendue est de préférence celle pour laquelle le résultat du codage est le plus proche du mot invalide. Cette donnée attendue est de préférence unique. Le mot invalide utilisé pour ce test présente de préférence un seul bit erroné (emplacement 104A). [0040] Ainsi, lorsque le circuit fournit la donnée attendue, on peut en déduire que le circuit a considéré le mot invalide 8 B17479 - 18-GR2-0419 comme un mot erroné et a bien corrigé la ou les erreurs. Le nombre d'erreurs est de préférence égal au nombre de bits invalides. De préférence, la donnée attendue est la donnée utilisée pour générer le mot invalide. Pour un seul bit invalide, la donnée attendue est de préférence l'unique donnée pour laquelle le mot invalide correspond au résultat de codage modifié par une seule erreur. On vérifie ainsi que le circuit 106 corrige cette erreur unique (SEC). [0041] En prenant un exemple particulier dans lequel les données ont quatre bits et la signature a par exemple quatre bits de parité, chaque bit de parité correspond à la somme des trois bits situés dans la donnée aux trois positions autres que celle du bit de parité dans la signature. Ce codage permet de corriger une erreur et de détecter deux erreurs. Le codage de la donnée '1011' a pour résultat le mot valide '10110100' comprenant la donnée et la signature '0100'. En supposant que l'emplacement 104A contient le mot invalide '10110110' obtenu par modification volontaire du deuxième bit du mot valide en partant des poids faibles, le mot valide de plus proche de ce mot invalide est '10110100', et la donnée attendue est '1011'. Ainsi, lorsque le circuit 106 fournit la donnée attendue '1011' à partir du mot invalide situé à l'emplacement 104A, cela signifie que la correction d'erreur a fonctionné correctement. [0042] Pour tester le fonctionnement de la détection d'erreur par le circuit 106, on vérifie que le circuit 106 considère un mot invalide comme un mot erroné. On s'attend à ce que le circuit détecte alors la présence d'une ou plusieurs erreurs. Le mot invalide utilisé pour ce test présente de préférence exactement deux bits invalides (emplacement 104B). Ainsi, le mot invalide correspond à un résultat de codage modifié par deux erreurs. On vérifie ainsi que le circuit 106 détecte la présence de ces deux erreurs (DED). 9 B17479 - 18-GR2-0419 [0043] En reprenant l'exemple numérique ci-dessus, on suppose que l'emplacement 104B contient le mot invalide '10100110' obtenu par modification volontaire des deuxième et cinquième bits du mot valide '10110100' en partant des poids faibles. A part le mot valide '10110100', d'autres mots valides ont eux aussi deux bits de différence avec le mot invalide et sont aussi les plus proches du mot invalide. C'est par exemple le cas du mot valide '10101010' résultant du codage de la donnée '1010'. Lorsque le circuit 106 détecte une erreur dans le mot invalide situé à l'emplacement 104B, de préférence sans la corriger, cela signifie que la détection d'erreur a fonctionné correctement. [0044] On prévoit de préférence d'autres emplacements 104A et/ou 104B contenant des mots ayant respectivement un seul et exactement deux bits invalides. On peut ainsi tester le circuit 106 par exemple pour diverses données et diverses positions auxquelles les erreurs peuvent se produire. De préférence, on prévoit plusieurs, par exemple plus de deux, emplacements contenant des mots présentant un seul bit invalide. De préférence, on prévoit plusieurs, par exemple plus de deux, emplacements contenant des mots présentant deux bits invalides. On peut adapter le nombre de bits invalides dans chaque mot en fonction du code correcteur d'erreur utilisé. On peut adapter le nombre d'emplacements de mot invalide en fonction du nombre de bits des données. [0045] A titre d'exemple, le circuit 106 émet un signal d'erreur, tel qu'un drapeau ("flag") ou une interruption, lorsqu'il corrige et/ou détecte une erreur. On vérifie de préférence la présence de ce signal d'erreur au cours du test du circuit 106. Par ailleurs, un utilisateur peut inclure le circuit 100 dans un dispositif comprenant un circuit de traitement de données tel qu'un microprocesseur (non représenté). L'utilisateur peut prévoir que ce circuit de B17479 - 18-GR2-0419 traitement exécute un programme particulier au cas où une erreur est détectée et/ou corrigée par le circuit 106. Un tel programme est par exemple exécuté par le microprocesseur après réception du signal d'erreur provenant du circuit 106. La prévision d'emplacements contenant des mots volontairement invalides permet alors à l'utilisateur de tester le fonctionnement de ce programme. [0046] A titre d'exemple, le ou les emplacements destinés à être remplis par des mots volontairement invalides sont reliés à un circuit électronique 110 (DW). Le circuit 110 reçoit un mot invalide INV. Le circuit 110 charge directement le mot invalide dans la mémoire, c'est-à-dire sans codage tel que celui effectué par le circuit 106. En variante, un mot volontairement invalide est stocké dans le circuit 110. Dans une autre variante, le circuit 110 est conçu pour générer des mots invalides. Dans cette variante, de préférence, le circuit 110 reçoit un signal de commande d'écriture d'un mot invalide dans la mémoire. De préférence, le circuit 110 génère un mot invalide à chaque fois qu'il reçoit ce signal. [0047] A titre d'exemple, le circuit 110 est situé dans un dispositif extérieur au circuit 100. A titre d'exemple, ce dispositif sert à écrire des mots invalides dans les mémoires 102 de plusieurs circuits 100, de préférence en usine. Les mots invalides sont alors par exemple identiques dans plusieurs mémoires 102 de circuits 100. A titre de variante, le circuit 110 est compris dans le circuit 100, et un utilisateur peut utiliser ce circuit pour écrire des mots invalides dans la mémoire. [0048] De préférence, le circuit 110 sert à écrire diverses informations comprenant par exemple un programme, dans une partie RO de la mémoire 102. De préférence, le ou les mots invalides sont situés parmi ces informations. A titre d'exemple, le programme est un chargeur de démarrage 11 B17479 - 18-GR2-0419 ("bootloader"). Après cette écriture, de préférence, on verrouille la partie RO en lecture seule, c'est-à-dire que l'on interdit d'écrire à nouveau dans la partie RO de la mémoire. Les mots volontairement invalides sont alors seulement lisibles, par exemple par l'intermédiaire du circuit 106. De préférence, une autre partie RW de la mémoire 102 reste accessible en lecture et en écriture par l'intermédiaire du circuit 106. [0049] De préférence, les emplacements sélectionnés pour être remplis avec les mots volontairement invalides sont consécutifs. Ceci permet à l'utilisateur une utilisation facile de ces mots invalides. De préférence, le ou les emplacements 104 dont les mots sont volontairement invalides sont situés dans la partie RO de la mémoire. [0050] Divers modes de réalisation et variantes ont été décrits. L'homme de l'art comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d'autres variantes apparaitront à l'homme de l'art. [0051] Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de l'homme REVENDICATIONS1. Procédé comprenant une écriture d'un ou plusieurs mots volontairement invalides dans une mémoire à code correcteur d'erreur (102). 2. Procédé selon la revendication 1, comprenant, avant ladite écriture, une étape de génération du ou des mots invalides. 3. Procédé selon la revendication 1 ou 2, comprenant, avant ladite écriture, une étape de sélection d'emplacements consécutifs (104A, 104B) dans la mémoire pour lesdits mots. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel ledit ou l'un desdits mots comprend un seul bit invalide. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel ledit ou l'un desdits mots comprend exactement deux bits invalides. 6. Procédé selon l'une quelconque des revendications 1 à 5, comprenant, après ladite écriture, un verrouillage en lecture seule dudit ou desdits mots. 7. Mémoire à code correcteur d'erreur (102), comportant un ou plusieurs mots volontairement invalides. 8. Mémoire selon la revendication 7, dans laquelle lesdits mots sont situés à des emplacements (104A, 104B) consécutifs. 9. Mémoire selon la revendication 7 ou 8, dans laquelle ledit ou lesdits mots sont accessibles en lecture seule. 10. Mémoire selon l'une quelconque des revendications 7 à 9, dans laquelle ledit ou l'un desdits mots comprend un seul bit invalide. 13 B17479 - 18-GR2-0419 11. Mémoire selon l'une quelconque des revendications 7 à 10, dans laquelle ledit ou l'un desdits mots comprend exactement deux bits invalides. 12. Utilisation d'une mémoire selon l'une quelconque des revendications 7 à 11 pour tester un circuit correcteur d'erreur (106). 13. Circuit électronique (110) configuré pour écrire un ou plusieurs mots volontairement invalides dans une mémoire à code correcteur d'erreur (102). 14. Circuit selon la revendication 13, configuré pour que l'écriture du ou des mots volontairement invalides soit effectuée en usine. 15. Circuit selon la revendication 13, comprenant une mémoire selon l'une quelconque des revendications 7 à 11.