Brevet FR2945393A1 — publié le 20101112

Procédé de protection de circuits électroniques, dispositif et système mettant en oeuvre le procédé L'invention concerne un procédé de protection de circuits électroniques, un dispositif et un système mettant en oeuvre le procédé. Elle s'applique notamment aux domaines de l'électronique numérique et des technologies nanométriques. L'invention peut être utilisée, par exemple, dans des systèmes de mémorisation ou de transmission de données. Dans un système numérique, les données, appelées également informations, sont habituellement transportées et enregistrées sous forme de valeurs binaires appelées bits. Dans de tels circuits, les erreurs apparaissant sur les données peuvent être transitoires, permanentes ou intermittentes. Les erreurs transitoires sont produites par des interférences avec l'environnement ou sont générées par la radioactivité de certaines impuretés dans le matériau composant ledit circuit. Dans les systèmes numériques réalisés à l'aide, par exemple, de circuits à base de technologies nanométriques, les erreurs permanentes et intermittentes résultant de défauts matériels représentent un problème important. En effet, si ces erreurs ne sont pas corrigées ou masquées, elles peuvent produire des erreurs de fonctionnement et finalement la défaillance du système. Une densité élevée de défauts matériels dans un circuit se traduit par un nombre important d'erreurs permanentes. En effet, les erreurs permanentes sont habituellement liées à des défauts de la structure physique du circuit survenus lors de la production ou suite au vieillissement. Ces problèmes doivent être pris en compte lors de la conception de tels systèmes et sont soulignés notamment dans la publication de S. Borkar intitulée Designing Reliable Systems from Unreliable Components: The Challenges of Transistor Variability and Degradation, IEEE Micro 25, No. 6, 2005, pages 10 à 16. Pour garantir un certain niveau d'intégrité des données mémorisées ou pour augmenter le rendement de production, certains systèmes électroniques utilisent des codes correcteurs d'erreurs, désignés par l'acronyme ECC venant de l'expression anglo-saxonne � Error Correcting Code �. Des exemples de codes ECC sont donnés dans la publication de C.L. Chen et M.Y. Hsiao intitulée Error-correcting codes for semiconductor memory applications: a state of the art review, Reliable Computer Systems - Design and Evaluation, Digital Press, 2eme édition, 1992, pages 771-786, ainsi que dans la publication de P.K. Lala intitulée Self-Checking and Fault-Tolerant Design, San-Francisco, CA: Morgan Kaufmann, 2001. 1 o Dans des systèmes numériques mettant en oeuvre des codes ECC, les données sont encodées, par exemple lors de l'écriture desdites données dans une mémoire ou avant leur émission pour transmission. L'opération d'encodage, appelée aussi opération de codage, mène à des mots de code contenant lesdites données auxquelles sont ajoutées des bits de vérification 15 obtenus selon les règles de calculs représentées dans une matrice construite pour ce codage. Cette matrice est appelée habituellement matrice de parité. Dans un second temps, par exemple lors de la lecture d'une partie du contenu mémorisé ou lors de la réception de données numériques après transmission, les mots de code sont décodés afin de reproduire les données 20 originelles. Pour cela un vecteur de vérification appelé syndrome est calculé. Ce dernier est utilisé pour détecter et corriger des erreurs potentielles apparaissant sur les mots de code. Si aucune erreur n'est détectée, le mot codé est considéré correct. Si une erreur pouvant être corrigée est détectée, le mot de code est corrigé. Enfin, si une erreur incorrigible est détectée, 25 celle-ci est signalée. Différents types de codes ECC peuvent être mis en oeuvre. A titre d'exemple, le codage de Hamming permet de corriger une erreur unique. Cette capacité de correction est qualifiée de SEC acronyme venant de l'expression anglo-saxonne � Single Error Correction �. 30 Le codage de Hamming étendu est un code de Hamming auquel est ajouté un bit de parité sur l'ensemble des bits afin de permettre la détection d'erreurs doubles DED. Ce code est un exemple de code ayant une capacité SEC-DED. Les codes de cette famille sont capables de corriger une erreur et de détecter une erreur multiple impactant deux bits d'un mot de code. Une 35 erreur multiple désigne, dans la suite de la description, une erreur sur plusieurs bits d'un même mot de code. Un autre exemple de code ayant une capacité SEC-DED est le code d'Hsiao. Il existe également des codes DEC-TED, ces codes permettant la correction d'erreurs doubles ainsi que la détection d'erreurs triples. Les codes permettant la correction d'erreurs multiples sont très coûteux en terme de calcul, et donc en terme de performance, de surface et de consommation. Il est donc difficile en pratique de mettre en oeuvre un tel code de manière systématique pour protéger l'ensemble d'une mémoire électronique. Il est par contre possible d'utiliser un code de capacité SEC ayant la capacité de corriger certaines erreurs multiples. En effet, la capacité du codage est rarement utilisée à son maximum. Le nombre N de bits de données dans un mot de code stocké dans une mémoire est habituellement une puissance de 2, c'est-à-dire N=2" avec n entier. Dans le cas d'un code SEC, le nombre c de bits de vérification doit remplir la condition : 2c-1 >_2"+c. Si les mots de données à protéger sont de N=32 bits, alors c=6 bits de vérification sont requis. La différence 0=2c-2"-c-1=25 correspond aux combinaisons binaires non utilisées par les syndromes permettant la détection d'erreurs simples. Par conséquent, jusqu'à A erreurs multiples différentes peuvent être détectées et corrigées. Pour ce qui est des erreurs doubles, pour N+c=38 bits, un total de 37x38/2 erreurs doubles différentes peut apparaître. Pour corriger toutes les erreurs doubles possibles dans un mot de code avec N=32 bits de données, il faut au moins 10 bits de vérification. Cependant, si le nombre de groupes d'erreurs multiples à supporter est inférieur ou égal à A, il est possible de les corriger avec seulement dc=6 bits de vérification. Des codes ECC permettant la correction d'erreurs uniques ainsi que la correction d'un nombre restreint de paires d'erreurs ont fait notamment l'objet du brevet américain US3328759 intitulé Simplified partial double error correction using single error correcting code. Un autre type de code ECC permet la correction d'une sélection d'erreurs doubles tout en ayant la capacité de détecter d'autres erreurs doubles, comme décrit dans le brevet américain US3755779 intitulé Error correction system for single-error correction, related-double-error correction and unrelated-double-error-detection. Ces paires d'erreurs sont choisies de telles manières qu'elles permettent la correction d'erreurs doubles sur des bits adjacents. Les codes ECC offrent une solution de correction dynamique. Le code ECC peut ainsi traiter des fautes permanentes et/ou transitoires à la fois. Mais, habituellement, lorsque cette solution est utilisée pour résoudre une faute permanente, elle perd souvent sa capacité à corriger des fautes transitoires et/ou permanentes apparaissant par la suite. Une autre technique consiste à utiliser des ressources de secours, appelées aussi � spare ressources � en langue anglaise. Les ressources physiques défectueuses identifiées sont alors remplacées par lesdites ressources de secours. Le terme masquage est aussi utilisé dans la suite de la description et désigne la même technique. Les ressources défectueuses sont masquées au profit de ressources de secours non défectueuses. Au contraire des codes ECC, cette solution est statique et ne permet de corriger que des erreurs permanentes. Des approches mixtes combinant l'utilisation des techniques à base de codes ECC avec des techniques à base de ressources de secours existent dans l'état de la technique et permettent de tolérer une grande densité de fautes permanentes, comme décrit notamment dans l'article de C. H. Stapper et Hsing-San Lee intitulé Synergistic Fault-Tolerance for Memory Chips, IEEE Trans. Computers 41(9), 1992, pages 1078-1087. Cette approche est utilisée lors de la production de mémoires numériques, par exemple. Il est alors possible de connaître la distribution et la fréquence des erreurs permanentes résultant de défauts matériels d'un circuit et de se fixer un objectif en terme de capacité de correction pour le traitement des erreurs transitoires. Ces données permettent alors de déterminer la quantité de ressources de secours nécessaire ainsi que le type de code ECC adaptés à ladite implémentation physique. Ainsi, des ressources physiques complémentaires sont nécessaires pour les bits de vérification d'un code ECC et les ressources de secours. Ces ressources complémentaires sont intégrées dans un système et ont par conséquent un coût en surface et ne sont pas toujours bien adaptés aux erreurs rencontrées. Il y a donc un compromis difficile à trouver entre la surface que l'on est prêt à consacrer à la correction et le gain en rendement qu'apporte cette correction. De plus, l'approche mixte est limitée quant à sa flexibilité. En effet, le choix de la quantité et de la répartition des ressources physiques complémentaires correspondant aux ressources de secours et aux bits de vérification du ou des codes ECC est effectué lors de la conception du circuit et ne tient pas compte de l'évolution dudit circuit due notamment au vieillissement. En effet, de nouveaux défauts et donc de nouvelles erreurs permanentes peuvent apparaître avec le temps, et la stratégie de protection choisie lors de la conception peut devenir inadaptée au bout d'un certain temps. Un but de l'invention est notamment de pallier les inconvénients précités. A cet effet l'invention a pour objet un procédé de protection d'au moins un circuit électronique traitant des données numériques. Une configuration de protection contre les erreurs introduites sur lesdites données est déduite d'une cartographie représentative des défauts dudit circuit, ladite configuration de protection correspondant à la configuration d'au moins un codeur et un décodeur, le codeur générant des mots de code composés de bits de données auxquels sont ajoutés des bits de redondance, ces bits de redondance étant générés de manière à ce que les erreurs résultant des défauts indiqués par ladite cartographie soient corrigés lors du décodage desdits mots de code. Une étape détermine, par exemple, si une protection de type ECC des données numériques est mise en oeuvre, le code ECC étant choisi tel que sa capacité de correction soit suffisante pour corriger au moins les erreurs permanentes et intermittentes résultant des défauts indiqués par la cartographie. Selon un mode de réalisation, le code ECC peut être choisi parmi les codes de type SEC, SEC-DED, DEC-TED, et ayant la capacité de corriger un choix ciblé d'erreurs simples et/ou multiples. Selon un autre mode de réalisation, le procédé comprend une étape de détermination des valeurs que prennent les éléments composant une matrice de parité programmable H représentative de la configuration de protection, ladite matrice étant utilisée pour générer des bits de redondance à partir de mots de données numériques, les éléments de ladite matrice étant choisis de manière à atteindre une capacité de correction permettant de corriger au moins les erreurs permanentes et intermittentes résultant des défauts du circuit électronique indiqués par la cartographie. Une partie des éléments de la matrice de parité H n'est, par exemple, pas programmable. Selon un aspect de l'invention, une étape de détermination d'une matrice HS de syndromes d'erreurs multiples, les colonnes de ladite matrice correspondant aux syndromes des erreurs multiples résultant des défauts identifiés dans le circuit électronique. Selon un autre aspect de l'invention, le procédé comporte une étape de détermination d'une matrice MapME faisant correspondre à chaque syndrome de correction d'erreurs multiples contenu dans la matrice de syndromes d'erreurs multiples HS la localisation des erreurs à corriger. Le procédé comporte, par exemple, une étape de mise à jour de la configuration de protection mémorisée. Les mots de données sont, par exemple, encodés de manière à former des mots des code en ajoutant des bits de vérification et des bits de secours aux bits de données en respectant la configuration de protection mémorisée. Les mots de code peuvent être décodés en détectant puis en corrigeant les erreurs en tenant compte de la configuration de protection ayant été utilisée lors de l'encodage desdits mot de données. Selon un aspect de l'invention, le procédé comporte une étape de détection des défauts du circuit à protéger et de détermination d'une cartographie des défauts, la détection étant effectuée en utilisant l'une des méthodes suivantes : tests et observation du circuit protégé, calculs de statistiques. L'invention a aussi pour objet un dispositif électronique de configuration et de protection de zones de mémoire, une zone de mémoire étant représentée par une matrice de cellules mémoires, un mot de données pouvant être mémorisé par ligne de ladite matrice, ladite zone de mémoire étant composée d'au moins une zone principale et une zone de ressources complémentaires, la zone principale étant destinée à mémoriser les mots de données et la zone de ressources complémentaires étant destinée à mémoriser des bits de redondance associés aux mots de données. Le dispositif comporte, par exemple, des moyens pour déterminer une configuration de protection des mots de données en utilisant le procédé tel que décrit précédemment à partir d'une cartographie des défauts de la zone de mémoire, une portion de la zone de ressources complémentaires étant allouée pour mémoriser des bits de vérification d'un code de type ECC et une autre portion de la zone de ressources complémentaires étant allouée en tant que ressources de secours. La zone mémoire est, par exemple, comprise dans le dispositif. L'invention a aussi pour objet un système d'interconnexion numérique composé d'au moins un module source comprenant des moyens d'encodage de manière à générer des mots de code à partir de données utiles, d'au moins un module de destination comprenant des moyens pour décoder lesdits mots de code, d'au moins un réseau d'interconnexion composé de liens électroniques et de noeuds, une portion desdits liens et desdits noeuds étant appelée ressources de transmission complémentaires et étant utilisées afin de transmettre les bits de redondance des mots de code, les mots de code étant transmis des modules sources vers les modules de destination à l'aide dudit réseau en utilisant des chemins de transmission. Les moyens d'encodage, de décodage et l'utilisation des ressources de transmission complémentaires du réseau d'interconnexion sont, par exemple, configurés selon un mode de codage donné, un mode de codage correspondant à l'utilisation d'un code ECC et/ou de lignes électroniques de secours, ledit mode de codage utilisant le procédé tel que décrit précédemment. L'invention a notamment comme avantage de permettre la configuration ou/et reconfiguration des ressources utilisées pour la protection des informations mémorisées ou transmises en tenant compte de la distribution spécifique des défauts dans un circuit au moment de sa production, de son test, ou durant son exploitation. D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit, donnée à titre illustratif et non limitatif, faite en regard des dessins annexés parmi lesquels : - la figure 1 donne un exemple de mot de code comprenant un ensemble de bits de données et un ensemble de bits de 8 redondance qui lui est associé afin de renforcer la fiabilité de l'information représentée par lesdits bits de données ; - la figure 2 présente un exemple de zone de mémoire comprenant des ressources complémentaires destinées à ajouter de la redondance aux mots de données stockés ; la figure 3 illustre le principe du procédé selon l'invention ; la figure 4 présente un exemple d'algorithme d'allocation des ressources complémentaires ; la figure 5 donne un exemple de dispositif électronique de mémorisation mettant en oeuvre le procédé selon l'invention ; la figure 6 présente un exemple de structure d'encodeur pouvant être utilisé afin de générer les bits de redondance associés aux mots de données à mémoriser ; la figure 7 donne un exemple de configuration d'une matrice de parité H permettant de combiner à la fois un codage de type SEC-DED et le remplacement de colonnes de données par des colonnes de secours ; la figure 8 présente un exemple de décodeur pouvant être utilisé pour la lecture de données mémorisées et protégées ; les figures 9 à 12 présentent un exemple pratique de mise en oeuvre de l'invention pour une cartographie de défauts donnée ; la figure 13 donne un exemple de système d'interconnexion de données numériques. 25 La figure 1 donne un exemple de mot de code comprenant un ensemble de bits de données et un ensemble de bits de redondance lui étant associé. Un mot de code 100 comprend une partie correspondant aux bits de données 101 et une partie correspondant aux bits de redondance 102. Le 30 mot de code de la figure 1 peut correspondre, par exemples, à un mot de code stocké dans une mémoire ou transmis sur un système d'interconnexion. Un circuit de mémoire numérique permet de mémoriser des données binaires dans une zone de mémoire pouvant être représentée, par exemple, 35 par une matrice de cellules mémoires comportant L mots et C colonnes. A 10 15 20 l'intersection de chaque mot avec chaque colonne se trouve une cellule mémoire permettant de stocker un bit. En d'autres termes, un espace mémoire de dimension LxC va permettre de stocker L mots de C bits. Lorsque le but est de mémoriser des mots comportant C bits utiles, il peut être intéressant de rajouter des bits de redondance correspondant à des ressources de secours ou à des bits de vérification si un code ECC est mis en oeuvre ou encore aux deux si une approche mixte est choisie. Dans ce cas, chaque mot stocké comporte C bits de données DI, D2, ..., Dc et k bits de redondances RI, R2, ..., Rk. Dans la matrice représentant la zone de mémoire totale, c'est-à-dire dans laquelle sont mémorisées les données et la redondance, C colonnes sont allouées aux données et k colonnes sont allouées pour la redondance. Il est aussi possible d'utiliser des mots en tant que mots de redondance. La convention utilisée dans cette description est d'utiliser une matrice dans laquelle une ligne correspond à un mot de données et/ou à un mot de code. Néanmoins, une autre convention peut s'appuyer sur une représentation matricielle alternative qui considère qu'un mot de données et/ou à un mot de code est mémorisé par colonne et non par ligne. Ce second exemple de convention n'est pas utilisé dans la suite de la description. Dans le cadre de l'invention, et comme explicité précédemment, les colonnes de redondance correspondent soit à des ressources de secours, soit à des bits de vérification. Les colonnes des ressources de secours et les colonnes des bits de vérifications sont regroupées sans distinction. Ce regroupement permet, lors de l'allocation des ressources, de privilégier l'une de ces solutions par rapport à l'autre en fonction du besoin. En effet les colonnes de vérification seront plus adaptées pour une correction dynamique, c'est-à-dire pour corriger des erreurs transitoires. Les colonnes de secours sont, quant à elles, mieux adaptées pour une correction statique. Il peut également être choisi de ne pas utiliser une des colonnes de redondance. La figure 2 présente un exemple de zone de mémoire comprenant des ressources complémentaires destinées à ajouter de la redondance aux mots de données stockés. Comme explicité précédemment, ladite zone de mémoire peut être représentée sous la forme d'une matrice. La convention utilisée dans cette description est d'utiliser une matrice dans laquelle une ligne correspond à un mot de données et/ou à un mot de code. Une zone de mémoire principale 200 est destinée à mémoriser les données et correspond, dans cet exemple, à une matrice comprenant L lignes (mots) 202 et 8 colonnes 201. Par conséquent, jusqu'à 8 bits de données par mots peuvent être stockés. Certaines parties de la zone de mémoire principale comprennent des défauts symbolisés par des X 205 et induisant soit une incapacité à stocker, soit une erreur de stockage pour le bit concerné. Sur l'exemple de la figure, 6 défauts sont représentés. Dans le cadre de l'invention, l'architecture physique de la mémoire comprend des ressources mémoires complémentaires à celles de la zone de mémoire principale. Ces ressources complémentaires sont des colonnes supplémentaires 203 ainsi que des mots supplémentaires 204 s'ajoutant à la zone de mémoire principale. La quantité de ressources complémentaires est, par exemple, fixe et est choisie au moment de la conception du circuit numérique. Le procédé selon l'invention permet, au moment de la configuration de la mémoire numérique, d'allouer au mieux l'utilisation de ces ressources complémentaires en tenant compte de la répartition des défauts connus. Un avantage de l'invention est que cette configuration de protection peut être effectuée à différents moments de la vie de la mémoire numérique et ainsi tenir compte du vieillissement matériel et de l'augmentation du nombre des défauts. Une partie des ressources complémentaires peut être utilisée comme bits de vérification afin de mettre en oeuvre un code ECC et une autre partie peut être utilisée comme ressources de secours. Les colonnes des ressources de secours et les colonnes des bits de vérifications sont regroupées sans distinction. Ce regroupement permet, lors de l'allocation des ressources, de privilégier l'une de ces solutions par rapport à l'autre en fonction du besoin. En effet les colonnes de vérification seront mieux adaptées pour une correction dynamique, c'est-à-dire pour corriger des erreurs transitoires. Les colonnes de secours sont, quant à elles, mieux adaptées pour une correction statique. II peut également être choisi de ne pas utiliser un ou plusieurs colonnes de redondance. Le procédé selon l'invention permet d'établir une stratégie de 35 protection en répartissant les ressources complémentaires tout en tenant compte de la répartition des défauts du circuit électronique dont est composée la mémoire. D'autre part, le procédé permet de reconfigurer, automatiquement ou non, la manière dont sont utilisées les zones mémoires complémentaires. Ainsi, si la répartition des défauts change, la stratégie de protection sera mise à jour en en tenant compte. A titre d'exemple, lorsqu'il n'y a pas plus d'une erreur par mot, un simple code avec une capacité SEC peut être sélectionné pour les corrections. Des colonnes configurées comme colonnes de secours peuvent être utilisées pour remplacer les colonnes qui contiennent un ou plusieurs défauts et des mots de secours peuvent être configurés pour remplacer les mots qui contiennent un ou plusieurs défauts. Toujours à titre d'exemple, lorsqu'il y a plus d'un défaut par mot un code ECC de capacité SEC-DED ne peut plus corriger. Cependant les erreurs multiples par mot peuvent faire l'objet d'une correction particulière. Ainsi 2 paires d'erreurs localisées peuvent être par exemple corrigées à l'aide d'un code ECC adapté. Le procédé selon l'invention permet d'adapter et de configurer le code ECC en fonction des erreurs à corriger et peut choisir de configurer en plus des colonnes de secours ou/et des mots de secours parmi les ressources complémentaires. La figure 3 illustre le principe du procédé selon l'invention. Le procédé selon l'invention a pour but de déterminer la manière dont sont allouées les ressources complémentaires d'une mémoire électronique en tenant compte de l'état des circuits composant ladite mémoire, le but étant de mettre en oeuvre une stratégie de protection adaptée. L'état des circuits peut être représenté, par exemple, à l'aide d'une cartographie 302 indiquant la localisation des cellules mémoires défectueuses ainsi que la localisation des cellules mémoires affectées. Cette cartographie peut être déterminée par une observation, à l'aide de tests, de statistiques ou d'autres moyens. Le procédé selon l'invention utilise également des données de configuration 301 décrivant la structure de la zone de mémoire à configurer, comme par exemples la taille de la zone de mémoire et le nombre de mots et de colonnes disponibles pour la redondance, ainsi que les résultats de tests de la zone qui contiendra ladite configuration, car celle-ci peut aussi avoir des défauts qui forceront, c'est-à-dire figeront, une partie de la configuration. Ces données d'entrées 301, 302 sont utilisées par une succession d'étapes 300 visant à configurer ou à reconfigurer l'allocation des ressources complémentaires et la capacité de correction du code ECC le cas échéant. Une configuration de protection est ainsi obtenue. Les ressources complémentaires peuvent être utilisées comme des ressources de secours ou bien comme des bits de vérification ajoutés aux mots de données de manière à mettre en oeuvre une stratégie de protection adaptée. La configuration de protection ainsi obtenue correspond à un ensemble de paramètres définissant le code ECC 303, l'allocation des ressources de secours ainsi que la manière dont celles-ci sont utilisées 304. La figure 4 présente un exemple d'algorithme d'allocation des ressources complémentaires. Le résultat de l'algorithme correspond à un ensemble de paramètres permettant de sélectionner les bits de secours et les bits de vérification parmi l'ensemble des bits de redondance. La valeur des éléments programmables d'une matrice de parité H est obtenue. La cartographie des défauts de la zone de mémoire ou/et d'autres défauts est une des entrées de l'algorithme. Elle peut être obtenue par une observation, des tests, des statistiques ou d'autres moyens. L'approche peut être différente en fonction de la stratégie de configuration choisie. Une stratégie de configuration peut être, par exemple, de corriger les erreurs transitoires en plus des erreurs permanentes et intermittentes. Cette stratégie a été choisie afin d'illustrer le principe de la configuration des ressources complémentaires à l'aide de l'exemple de la figure 4. Afin d'avoir la capacité de corriger les erreurs transitoires, il est possible de réserver nV bits de redondance 400 pour qu'ils servent de bits de vérification pour une protection de type SEC ou SEC-DED, par exemples. Les mots de secours sont, quant à eux, affectés pour corriger des erreurs permanentes. Dans un premier temps il est préférable de vérifier 401 si une solution simple comme l'utilisation de mots de secours est suffisante pour traiter les erreurs permanentes. Sinon, les mots de secours sont utilisés pour remplacer les mots de mémoires ayant le plus d'erreurs. Il est ensuite vérifié 402 si la capacité de correction des erreurs transitoires a été activée, c'est-à-dire si nV est différent de zéro. Si la capacité de correction des erreurs transitoires est activée, des bits de vérification ont déjà été réservés pour la correction des erreurs transitoires. Les éléments programmables de la matrice de parité H qui définissant le code correcteur d'erreurs sont alors déterminés 403 de manière à ce que le code ECC en résultant permette de corriger lesdites erreurs transitoires. Une étape 404 permet ensuite de vérifier si les corrections apportées sont suffisantes. Si la configuration trouvée est satisfaisante, la recherche se termine 412, en d'autres termes, la configuration de protection adaptée est 1 o trouvée. De plus, si la correction des erreurs transitoires n'est pas souhaitée, c'est-à-dire si nV=O, la correction ECC peut être désactivée. Cette désactivation induit alors un gain en vitesse notamment lors de la lecture des données. Si les corrections apportées ne sont pas suffisantes, les bits des 15 colonnes de redondance qui ne sont pas utilisés en tant que bits de vérification et qui ne sont pas non plus isolés, peuvent être utilisés comme bits de secours. Un mot ou une colonne de redondance sont isolés lorsqu'ils ont des défauts et sont mis de côté. Il est possible d'affecter 405 jusqu'à nS = nR-nl-nV colonnes de secours pour remplacer les bits de données utile 20 défectueux où nR correspond au nombre total de bits de redondance, nV correspond au nombre de bits de vérification présents dans un mot de mémoire, et nl correspond aux nombres de colonnes de redondance isolées. Une étape permet ensuite de vérifier si les corrections apportées sont suffisantes 406. 25 Si la configuration trouvée est satisfaisante, la recherche se termine 412. Dans le cas où la configuration trouvée n'est pas satisfaisante, une étape réalloue une des colonnes de secours 407 afin que celle-ci soit utilisée comme bit de vérification dans le but de mettre en place ou bien d'augmenter 30 la capacité de correction du codage ECC (nS = nS-1 et nV = nR-nl-nS). Suite à l'étape de réallocation 407, une étape 408 recherche une matrice de parité H utilisant nV bits de vérification afin de pouvoir corriger les erreurs permanentes restantes et, si besoin, des erreurs transitoires. Il est ensuite vérifié 409 que la configuration trouvée permette une correction satisfaisante. Si c'est le cas, la recherche de la configuration est terminée 412 avec succès. Dans le cas où la capacité de correction que peut apporter la dernière configuration trouvée n'est pas suffisante, la répartition des bits de redondance est modifiée en réduisant de manière récursive 413 le nombre de bits de secours. Cette réduction est faite au profit des bits de vérification jusqu'à ce qu'une configuration satisfaisante de la matrice H soit trouvée 412 ou bien jusqu'à ce qu'il ne soit plus possible de réduire le nombre de colonnes de secours 410 et donc d'augmenter le nombre de bits de vérification, ce qui signifie alors que la recherche d'une configuration satisfaisante se termine 411 sur un échec. La figure 5 donne un exemple de dispositif électronique de mémorisation mettant en oeuvre le procédé selon l'invention. Le procédé décrit précédemment permet la mise en oeuvre de dispositifs électroniques de mémorisation reconfigurables. La reconfiguration permet d'adapter la stratégie de protection des données mémorisée en tenant compte l'état et de la qualité des circuits composant le dispositif. Cette reconfiguration peut être réalisée pendant la conception du dispositif ou plus tard. Le dispositif 500 est composé, par exemple, d'une zone de mémoire 501 comprenant une zone de mémoire principale destinée à stocker des mots de données ainsi que des ressources complémentaires destinées à protéger lesdites données contre d'éventuelles erreurs. Les données mémorisées peuvent être lues, et les éventuels erreurs corrigées à l'aide d'un circuit de décodage 502. De nouvelles données peuvent être également écrites dans la zone de mémoire 501 et protégées par l'ajout de bits de redondance grâce à un circuit d'encodage 503. La manière dont sont configurés le décodeur 502 et l'encodeur 503 dépend de la stratégie de protection telle que déterminée par le procédé selon l'invention. Ces deux éléments sont donc configurés 508 à l'aide de paramètres de configuration 506 mémorisés, par exemple, au sein du dispositif. Lesdits paramètres de configuration peuvent être mis à jour de manière à tenir compte de l'évolution physique de la zone de mémoire et notamment des effets du vieillissement sur les circuits. Pour cela, un module 504 contrôle la mise à jour du dispositif. Celui-ci peut, par exemple, réaliser des tests 509 de la zone de mémoire 501 ou bien prendre en entrée 510 des données lui permettant de générer une cartographie 513 des défauts de ladite zone de mémoire 501. Il est également possible de consulter le module contenant les paramètres de configuration pour vérifier qu'il n'y a pas d'erreur et s'il y a une ou des erreurs le module de contrôle 504 pourra prendre ces informations en considération pour déterminer la configuration appropriée. Cette cartographie peut être ensuite utilisée par un module de configuration 505 afin de déterminer notamment la matrice de parité H et des paramètres de masquage 512, des exemples de la matrice de parité H et ces paramètres étant donnés plus loin dans la description. La matrice H et le reste des paramètres de configuration sont ensuite stockés 506 dans un module de mémorisation. Un ou plusieurs des modules de contrôle 504 et de configuration 505 peuvent être implémentés à l'intérieur ou bien à l'extérieur 511 du dispositif électronique de mémorisation 500. La figure 6 présente un exemple de structure d'encodeur pouvant être utilisée afin de générer les bits de redondance associés aux mots de données à mémoriser. nR bits de redondance sont associés à un mot de nD bits de données. Le nombre nD de bits de données est habituellement une puissance de 2. Un module de génération de redondance 600 détermine la valeur des bits de redondance en fonction de la valeur des bits de données. Cette opération est réalisée en utilisant une matrice de parité programmable H mémorisée 601 dont les éléments programmables ont été déterminés lors de la procédure de configuration ou de reconfiguration de la mémoire. La valeur des nR bits de redondance peut être déterminée, par exemple, en utilisant l'expression suivante : nDù1 R. = (H ADJ), i=O,nR-1 I=o dans laquelle : O+ représente l'opération de OU exclusif ; A représente l'opération de ET logique ; 35 R; représente le ieme bit de redondance avec 0 5 i Le module 601 de mémorisation de la matrice de parité programmable H comporte, par exemple, des registres où sont mémorisés les éléments Hii de la matrice H. Ces registres peuvent être accessibles depuis l'extérieur du contrôleur mémoire contenant l'encodeur. II est possible d'implémenter ces registres dans une mémoire volatile de type RAM ou bien dans une mémoire non-volatile de types EPROM, EEPROM ou Flash, par exemples. Les éléments de la matrice H et les autres éléments de configuration peuvent également être programmés à l'aide d'autres méthodes, comme par exemple à l'aide de faisceaux laser si on veut corriger seulement les erreurs permanents dues aux défauts apparus lors de la production d'un circuit de mémorisation ou de transmission. La matrice de parité H est utilisée pour l'implémentation d'un code ECC. Pour minimiser la quantité d'information nécessaire à la programmation de la matrice H, certains éléments H1 peuvent ne pas être librement programmables. A titre d'exemple, il est possible de fixer les éléments Hii pour 0 Un multiplexeur optionnel 603 peut être utilisé pour choisir le flux binaire présenté en sortie de l'encodeur parmi deux entrées. Ladite sortie peut être la première entrée 604 du multiplexeur correspondant à la sortie du module de génération de la redondance 600. Dans le cas ou la densité de défauts constatée est nulle, le flux de la seconde entrée 605 correspondant aux bits de données sans ajout de redondance est présenté en sortie. La largeur de la deuxième entrée du multiplexeur 605 est, par exemple, ajustée à la largeur de la première entrée 604 et de la sortie 606 en ajoutant nR bits figés à une valeur quelconque. Les paramètres de configuration peuvent être transférés au module 601 à travers la voie utilisée pour l'accès des bits de données 607 ou une voie distincte 608. La figure 7 donne un exemple de configuration d'une matrice de parité H permettant de combiner à la fois un codage de type SEC-DED et le remplacement des colonnes de données correspondant aux bits D13, D14 et D15 par des colonnes de secours. Dans cet exemple, la matrice H est de dimension nRx(nD+nR) = 9x25. Dans cet exemple, 6 bits de vérification notés RO à R5 correspondent aux bits de vérification d'un code SEC-DED et trois bits R6, R7 et R8 sont utilisés comme ressources de secours. Les trois bits R6, R7 et R8 sont aussi protégés par le code SEC-DED. Lors du décodage, le calcul du syndrome d'erreur n'utilise que les bits de vérification RO à R5. Lors de la configuration de la zone de mémoire et donc de la construction du code, la matrice H doit être déterminée, par exemple, telle que les syndromes d'erreurs simples et multiples corrigeables soient tous différents entre eux. De plus, ces syndromes doivent être différents des syndromes d'erreurs détectables pour être identifiés de façon unique. La figure 8 présente un exemple de décodeur pouvant être utilisé pour la lecture de données mémorisées et protégées. Ce décodeur prend en entrée les bits de données D _in mémorisés dans la zone de mémoire principale et les bits de redondance R_in leurs étant associés et étant mémorisés dans la zone de mémoire complémentaire. Le décodeur fournit en sortie les données utiles décodées. Un module 804 du décodeur mémorise la matrice de parité programmable H. Ce module peut inclure le module 601 de l'encodeur présenté précédemment ayant aussi pour rôle la mémorisation de la matrice de parité. Ainsi, les deux modules peuvent partager des ressources de stockage communes ou partiellement communes ou bien avoir des ressources de stockage indépendantes. Afin de pouvoir assurer le décodage, ce module doit aussi avoir la capacité de mémoriser des informations de masquage. En effet, une colonne peut être masquée, c'est-à-dire isolée, si celle-ci est défectueuse. Ces informations de masquage sont par exemple des bits de masquage MaskColi (0 j Un module 802 de contrôle des colonnes de secours prend en entrée les bits des mots à lire, c'est-à-dire, pour chaque mot, D_in bits de données et R_in bits de redondance. Comme explicité précédemment dans la description, les colonnes allouées pour mémoriser les bits de données peuvent être remplacées par des colonnes appartenant aux ressources complémentaires. Ce module présente en sortie les bits de données D_out et peut mettre en oeuvre n'importe quelle méthode d'utilisation des colonnes de secours, comme par exemple celle présentée dans l'article de M. Horiguchi intitulé Redundancy Techniques for High-Density DRAMs, IEEE Int. Conf. Innovative Systems Silicon, 1997, pages 22 à 29. Une autre méthode possible est d'utiliser l'information mémorisée 803 15 de la matrice programmable H et de calculer chaque bit de donnée à l'aide, par exemple, de l'expression suivante : D _ out (D _ in. n MaskCol. ) v nRù1 v (MaskLine; n R _ in; n =ou)];j=0,nD-1 (2) 20 dans laquelle : / représente l'opération de OU logique ; D_ini et R_in; indiquent respectivement le jème bit de donnée, et le ième de redondance, à l'entrée du module de contrôle des colonnes de secours (0 j Le module 800 de stockage des mots de secours est le même que module 602 de stockage des mots de secours présenté à l'aide de la figure 6. Son but est de stocker lesdits mots de secours. L'intégration et l'utilisation de ce module est optionnelle et dépend de la densité des défauts et de la capacité mémoire des systèmes de stockage protégés. Ce module peut être déconnecté, par exemple après un test de production, si on a besoin de tolérer les erreurs transitoires et si la densité de défauts est faible ou nulle. Ce module n'est pas nécessaire pour la protection d'un système d'interconnexion. Un module 806 du décodeur met en oeuvre la correction d'erreur. En fonction de la configuration de protection choisie et donc de la matrice H mémorisée, une correction des erreurs simples ou/et d'erreurs multiples peut être effectuée. La détection d'erreurs multiples non-corrigées peut également être réalisée par ce module. Un code ECC classique associe à chaque erreur E corrigeable et/ou détectable un syndrome SE défini par nR bits. Si E est une erreur simple correspondant au jème bit de donnée, son syndrome est identique à la jème colonne de la matrice H. Si E est une erreur multiple affectant plusieurs bits de données et/ou bits de vérification, le syndrome SE est obtenu à l'aide de l'opération logique OU exclusif entre les colonnes de la matrice de parité H correspondant aux bits affectés par ladite erreur multiple. Le principe selon l'invention de ressources programmables dédiées à la protection mémoire nécessite que les syndromes soient mémorisés. Les syndromes correspondant aux erreurs simples n'ont pas besoin de cellules additionnelles de mémoire. Du fait que les syndromes des erreurs simples correspondent aux colonnes de la matrice de parité H, seuls les syndromes SE des erreurs multiples nécessitent des registres additionnels. Le contenu de ces registres forme une matrice distincte HS qui est appelée matrice de syndromes d'erreurs multiples. La matrice HS est de dimension nRxnHS, nR étant le nombre total de bits de redondance et nHS étant un paramètre dépendant du nombre d'erreurs multiples à corriger. Le paramètre nHS est choisi, par exemple, lors de la conception de la mémoire numérique. Par construction, la limite maximale de nHS est nHS Dans le module 806 de correction d'erreurs, un syndrome S est calculé à partir des bits de données Dinh (0 nR-1 r BitFlipk = i ô LMaskLinet v (HS;, (Si l ; k = 0, nHS -1 15 dans lesquelles : représente l'opération de OU exclusif inversé ; BitFlipk est un signal qui prend la valeur 1 seulement si le syndrome S correspond à la ième colonne de H ; BitFlipk est un signal qui prend la valeur 1 seulement si le syndrome S 20 correspond à la kième colonne de HSk. Pour optimiser les performances de calcul il faut, par exemple, que les expressions (4) et (5) soient implémentées par des sous-modules dédiés à chacun des signaux BitFlipk et BitFlipk. 25 Les bits de données D out (0 A titre d'exemple, plusieurs règles peuvent être suivies pour remplir les matrices H et HS : 10 - si une colonne k de la matrice HS n'est pas utilisée pour le stockage d'un syndrome correspondant à une erreur multiple, alors tous les bits MapMEik avec 0 j 25 Les bits MapMEik (0 j Un second module de multiplexage 807 permet de sélectionner les bits transmis en sortie du décodeur parmi les bits disponibles en sortie des modules de contrôle des colonnes de secours 802, de l'espace de stockage des mots de secours 800 et les bits d'entrée du décodeur 801. Les figures 9 à 12 présentent un exemple pratique de mise en oeuvre de l'invention pour une cartographie de défauts donnée. La figure 9 présente un exemple de répartition de défauts dans une 10 zone de mémoire dont les mots ont une largeur de 9+16 bits. Les lignes représentent les mots mémorisés. Les mots mémorisés comportent 16 bits de données DO à D15 auxquels sont associés 9 bits de redondance RO à R8, cette redondance pouvant correspondre à des bits de secours ou bien à des bits de vérification. Seul des mots affectés de défauts ont été représentés. 15 Les localisations des défauts du circuit sont indiquées par des 'X'. Il apparait que deux colonnes 900, 901 sont défectueuses, la première étant la colonne de données D11 900 et la seconde la colonne de redondance R8 901. Il peut être décidé par exemple, d'utiliser la colonne R7 904 comme ressource de secours afin de remplacer la colonne D11. 20 En plus des défauts sur les colonnes R8 et D11, 5 mots 902 contiennent 2 défauts supplémentaires impliquant des erreurs doubles, et de nombreux autres mots 903 en contiennent une. Les cinq erreurs doubles 902 mènent à cinq syndromes SO, SI, S2, S3 et S4 lors du décodage. Lors du choix de la stratégie de protection permettant de corriger les 25 erreurs induites par les défauts du circuit, il est important de tenir compte du fait qu'une correction de type SEC n'est pas suffisante pour corriger plus d'une erreur par mot. Concernant la mise en oeuvre d'une correction des erreurs doubles, celle-ci nécessite un nombre de bits de vérifications supérieur aux 9 bits de vérification à disposition. De plus, ce type de 30 correction n'est pas suffisant pour traiter les mots mémorisés comprenant plus de 2 erreurs. La correction par remplacement des colonnes n'est pas non plus envisageable, car les défauts affectent un grand nombre de colonnes différentes.5 Pour ce qui est de la correction par remplacement de mots, celle-ci nécessiterait le remplacement de tous les mots affectés de défauts par des mots de secours. Cette solution n'est donc pas non plus envisageable de manière systématique. Une approche mixte mettant en oeuvre plusieurs des techniques cités ci-dessus permet d'optimiser l'efficacité de correction des erreurs. II apparaît que l'utilisation d'un code SEC-DED avec en plus la capacité de corriger un nombre restreint de d'erreurs multiples est une solution adaptée à la répartition des défauts donnée dans l'exemple de la figure 9. Le choix de ce type de protection peut être fait en utilisant un algorithme du type de celui présenté figure 4. Un exemple de matrice de parité associée à un tel type de code tout en permettant l'utilisation de ressources de secours est exposé en s'appuyant sur la figure 10. La figure 10 présente un exemple de matrice de parité. Sur la même figure sont représentées également les paramètres de masquage MaskCol et MaskLine. Ceux-ci sont déterminés afin de permettre de corriger les cinq erreurs multiples résultant des défauts tels que présentés avec l'exemple de la figure 9. MaskLine prend la valeur 0 sur les 7 premières lignes indiquant que les bits RO à R6 sont utilisés pour une correction de type ECC. MaskCol prend la valeur 0 au niveau de la douzième colonne. II apparaît par conséquent que D11 est remplacé. La 8ème ligne de la matrice, c'est-à-dire son avant dernière ligne, montre que le bit de redondance R7 remplace le bit de donnée D11, c'est-à-dire que la colonne de la zone mémoire complémentaire correspondant au bit de redondance R7 est utilisée comme ressource de secours. Sur la 9ème ligne de la matrice, c'est-à-dire sa dernière ligne, il apparaît que le bit de redondance défectueux R8 n'a aucune dépendance avec les autres bits du mot de code, il est donc isolé. Il est supposé dans cet exemple qu'aucune ligne de secours n'est disponible. Afin de pouvoir corriger des erreurs multiples, une matrice HS est choisie. Ses colonnes correspondent aux syndromes des erreurs multiples à corriger. Cette matrice est présentée en s'appuyant sur la figure 11.35 La figure 11 donne un exemple de matrice de syndromes d'erreurs multiples HS. Afin de pouvoir corriger les cinq erreurs multiples résultant des défauts tels que présentés avec l'exemple de la figure 9, une matrice HS comportant au minimum cinq colonnes est nécessaire. Pour l'exemple, une matrice HS comportant huit colonnes est définie. L'exemple de la figure 11 est déterminé en fonction de la matrice de parité de la figure 10. Dans cet exemple, les deux dernières lignes de la matrice HS ne sont pas utilisées et sont remplies de zéros puisque seuls les sept premiers bits de redondance sont utilisés en tant que bits de vérification selon la configuration de la figure 10. Ainsi, les cinq premiers bits de chaque colonne de la matrice HS peuvent mémoriser un syndrome d'erreurs multiples que l'on désire reconnaître afin de corriger les bits erronés associés à ce syndrome d'erreurs multiples. Le syndrome d'erreurs multiples SO correspond au XOR entre le 15 syndrome d'erreur de D3 et le syndrome d'erreur de D12. Le syndrome d'erreurs multiples S1 correspond au XOR entre le syndrome d'erreur de D6 et le syndrome d'erreur de R4. Le syndrome d'erreurs multiples S2 correspond au XOR entre le syndrome d'erreur de R2 et le syndrome d'erreur de R6. 20 Le syndrome d'erreurs multiples S3 correspond au XOR entre le syndrome d'erreur de D3 et le syndrome d'erreur de D9. Le syndrome d'erreurs multiples S4 correspond au XOR entre le syndrome d'erreur de Dl 1 et le syndrome d'erreur de D13. Les colonnes S5 à S7 ne sont pas utilisées. 25 Dans le but de pouvoir corriger les erreurs doubles associées aux syndromes SO, S1, S2, S3 et S4 précédemment explicités, les cinq premières colonnes 1100 de la matrice HS correspondent à ces cinq syndromes et les colonnes restantes 1101 qui sont non utilisées sont remplies de zéros. 30 La figure 12 présente un exemple de matrice programmable de correction des erreurs multiples MapME. Pour chaque syndrome de correction d'erreurs multiples contenu dans la matrice de syndromes d'erreurs multiples HS, il faut ensuite configurer une matrice de correction 35 MapME des bits associés. Certains éléments peuvent être figés dans l'implémentation de manière à trouver le meilleur compromis entre flexibilité et complexité d'implémentation. Ces éléments, notés Z, sont figés en dur, par exemple à 0, et ne sont pas programmables. Le reste est programmable à 1 ou O. Dans cette matrice, nous voyons par exemple qu'au syndrome d'erreurs multiples SO seront associées les corrections de D3 et D12. Les bits de redondance ne sont pas corrigés dans cet exemple, mais ceci peut être réalisé de la même manière que pour les bits de données. De plus, tous les éléments du vecteur de bits MapSE sont mis au niveau 1 logique pour supporter la correction de toutes les erreurs simples. La stratégie de protection à laquelle sont associées les matrices H, HS et MapME et le vecteur de bits MapSE remplit donc son rôle d'amélioration du rendement et offre une capacité SEC-DED sur tous les mots. Elle participe donc à l'amélioration de la fiabilité du système électronique. Il peut exister de multiples configurations possibles pour répondre à de multiples cas d'erreurs. Le choix du nombre de bits de données et de redondance est réalisé lors de la conception du dispositif programmable et peut être quelconque. Il est intéressant de noter que des erreurs peuvent être masquées. II faut donc dans ce cas traiter les syndromes correspondant à toutes les combinaisons d'erreur de chaque groupe d'erreurs multiples. Par exemple, une erreur triple touchant 3 bits de donnée Dl ,D2,D3 peut se présenter sous la forme de 3 erreurs simples ou de 3 erreurs doubles D1,D2 ; Dl, D3 ; D2,D3 ou d'une erreur triple Dl ,D2,D3. Le nombre de syndromes d'erreurs multiples augmente alors rapidement. La programmation peut également être simplifiée. Plusieurs éléments de configuration peuvent être programmés par un seul ou quelques bits mémorisés. Ceci permet ainsi de compresser les données de configuration et ainsi de réduire la surface de mémoire correspondante nécessaire. La figure 13 donne un exemple de système d'interconnexion de données numériques. Dans cet exemple, deux modules source 1300, 1301 génèrent des mots de code de 8 bits. Ces modules source correspondent, par exemple, à des modules compris dans une ou plusieurs puces électroniques, lesdites sources comprenant notamment des moyens d'encodage de manière à pouvoir générer des mots de code à partir des mots de données utiles en y ajoutant de la redondance. Les mots de codes peuvent être transmis à différents modules de destination 1302, 1303 comprenant des moyens de décodage, c'est-à-dire des moyens pour détecter et corriger des erreurs en s'appuyant sur les informations de redondance associées aux données utiles. Ces modules peuvent être positionnés au sein de la même puce que celle comportant l'une des sources ou bien dans une puce différente. Lorsque les modules source et destination sont implémentés dans une même puce, les mots de code sont transmis, par exemple, à l'aide d'un réseau d'interconnexion interne à ladite puce, ce réseau étant habituellement désigné par l'expression anglo-saxonne � Network on Chip �. Lorsque les modules source et destination sont positionnés dans différentes puces, les mots de code empruntent alors un réseau d'interconnexion externe habituellement désigné par l'expression anglo-saxonne � Off-Chip Network�. L'exemple de la figure montre un cas ou deux modules source 1300, 1301 peuvent transmettre des mots de code à deux modules de destination 1302, 1303 à l'aide d'un réseau d'interconnexion pouvant être interne ou externe. Ce réseau d'interconnexion est composé de différents ensembles de liens électroniques 1317, 1318, 1319, 1320, 1321 et de nceuds 1304, 1305 permettant de configurer le chemin qu'empruntent les mots de code de l'un ou l'autre module source 1300, 1301 pour atteindre l'un ou l'autre module de destination 1302, 1303. Un système d'interconnexion est donc un système composé d'au moins un module source de données comprenant des moyens d'encodage, d'au moins un module de destination comprenant des moyens de décodage, et d'au moins un réseau d'interconnexion composé notamment de liens électroniques et d'au moins un noeud, ledit système d'interconnexion permettant de transmettre des mots de code générés par un ou plusieurs modules sources vers un ou plusieurs modules de destination. Les liens électroniques sont par exemple composés d'une ou plusieurs lignes électroniques, certaines permettant de transmettre les bits de données et d'autres les bits de redondance, ces dernières étant qualifiées dans la suite de la description de ressources de transmission complémentaires. Les lignes électroniques composant les ressources de transmission complémentaires peuvent être, selon le mode de codage choisi, soit des lignes électroniques associées aux bits de vérifications d'un code ECC, soit des lignes électroniques de secours remplaçant des lignes électroniques défectueuses. Les noeuds réalisent un routage des bits de manières à acheminer les mots de codes vers le ou les modules de destination ciblés. Les bits de redondance sont transmis en utilisant des ressources de transmission complémentaires mises en oeuvre au sein du réseau d'interconnexion. L'utilisation de ces ressources complémentaires est choisie en tenant compte des erreurs introduites par les différents liens de transmission et/ou les noeuds. Ainsi le choix d'un mode de codage, c'est-à-dire le choix d'utiliser un code ECC donné et/ou des lignes électroniques de secours, est effectué en fonction des défauts détectés dans le système d'interconnexion. La mise en oeuvre du mode de codage choisi permet de corriger les erreurs survenant sur le mot codé transporté notamment à cause des liens 15 électroniques ou des noeuds pouvant comporter des défauts. De plus, la traversée d'un chemin comportant plusieurs liens ou/et noeuds implique que les erreurs se cumulent de lien en lien (ou/et de noeuds en noeuds). Par exemple, un mot de code émis par le premier module source 1300 peut emprunter un premier chemin 1314 pour atteindre le premier module de 20 destination 1302. Pour cela, le mot de code est, par exemple, transmis dans un premier ensemble de liens 1317 introduisant une erreur sur le huitième bit 1306, puis un second ensemble de liens 1320 introduisant une erreur sur le septième bit 1309, les deux ensembles étant reliés par un noeud 1305. Le mot de code reçu 1311 par le module de destination peut donc cumuler deux 25 erreurs sur les septième et/ou le huitième bits. Le mode de codage mis en oeuvre pour ce chemin devra par conséquent être configuré de manière à au moins corriger les deux erreurs simples et l'erreur double dont elles font partie. Pour atteindre le deuxième module de destination 1303 en partant du 30 premier module source 1300, un autre chemin 1315 est utilisé par les mots de code. Ce chemin est composé de trois ensembles de liens, le premier 1317 introduisant une erreur sur le huitième bit 1306, le second 1319 n'introduisant pas d'erreur 1308 et le troisième 1321 introduisant une erreur sur le troisième bit 1310. Le mot de code reçu 1312 par le second module de 35 destination 1303 peut être affecté par une des erreurs simples ou l'erreur double correspondant aux deux erreurs simples. Le mode de codage mis en oeuvre pour ce chemin devra par conséquent être configuré de manière à au moins corriger les trois combinaisons d'erreurs. Un autre exemple de transmission d'un mot de données est illustré. Pour atteindre le deuxième module de destination 1303 en partant du deuxième module source 1301, un chemin 1316 composé d'au moins deux ensembles de liens est utilisé par les mots de code, le premier ensemble 1318 pouvant introduire deux erreurs sur les premier et sixième bits du mot 1307, le second ensemble 1321 pouvant introduire une erreur 1310 sur le troisième bit. Le mot de code reçu 1313 par le second module de destination 1303 peut avoir une des trois erreurs simples, une erreur double correspondant à une paire des erreurs simples ou une erreur triple formée par les trois erreurs simples. Le mode de codage mis en oeuvre devra par conséquent en tenir compte. En connaissant les chemins, c'est-à-dire les liens empruntés par un mot pour aller d'un module source à un module de destination, et leurs défauts il est possible de déduire quelles sont les erreurs simples et multiples pouvant se produire et donc de choisir le mode de codage le plus approprié et les configurations des encodeurs et décodeurs compris dans les modules source et de destination. Un module source ou un module de destination peut être une mémoire telle que décrite précédemment dans la description. Il peut être mise en oeuvre, par conséquent, une double protection, à la fois au niveau du stockage des mots données, mais aussi au niveau de leur transmission. REVENDICATIONS1- Procédé de protection d'au moins un circuit électronique traitant des données numériques caractérisé en ce qu'une configuration de protection (303, 304) contre les erreurs introduites sur lesdites données est déduite (300) d'une cartographie (302) représentative des défauts dudit circuit, ladite configuration de protection correspondant à la configuration d'au moins un codeur et un décodeur, le codeur générant des mots de code composés de bits de données auxquels sont ajoutés des bits de redondance, ces bits de redondance étant générés de manière à ce que les erreurs résultant des défauts indiqués par ladite cartographie (302) soient corrigés lors du décodage desdits mots de code. 2- Procédé selon la revendication 1 caractérisé en ce qu'une étape détermine si une protection de type ECC des données numériques est mise en oeuvre, le code ECC étant choisi tel que sa capacité de correction soit suffisante pour corriger au moins les erreurs permanentes et intermittentes résultant des défauts indiqués par la cartographie. 3- Procédé selon la revendication 2 caractérisé en ce que le code ECC est choisi parmi les codes de type SEC, SEC-DED, DEC- TED, et ayant la capacité de corriger un choix ciblé d'erreurs simples et/ou multiples. 4- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce qu'il comprend une étape de détermination des valeurs que prennent les éléments composant une matrice de parité programmable H représentative de la configuration de protection, ladite matrice étant utilisée pour générer des bits de redondance à partir de mots de données numériques, les éléments de ladite matrice étant choisis de manière à atteindre une capacité de correction permettant de corriger au moins les erreurspermanentes et intermittentes résultant des défauts du circuit électronique indiqués par la cartographie. 5- Procédé selon la revendication 4 caractérisé en ce qu'une partie des éléments de la matrice de parité H n'est pas programmable. 6- Procédé selon l'une quelconque des revendications 4 ou 5 caractérisé en ce qu'il comporte une étape de détermination d'une matrice HS de syndromes d'erreurs multiples, les colonnes de ladite matrice correspondant aux syndromes des erreurs multiples résultant des défauts identifiés dans le circuit électronique. 7- Procédé selon la revendication 6 caractérisé en ce qu'il comporte une étape de détermination d'une matrice MapME faisant correspondre à chaque syndrome de correction d'erreurs multiples contenu dans la matrice de syndromes d'erreurs multiples HS la localisation des erreurs à corriger. 8- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce qu'il comporte une étape de mise à jour de la configuration de protection mémorisée. 9- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que les mots de données sont encodés de manière à former des mots des code en ajoutant des bits de vérification et des bits de secours aux bits de données en respectant la configuration de protection mémorisée. 10- Procédé selon la revendication 9 caractérisé en ce que les mots de code sont décodés en détectant puis en corrigeant les erreurs en tenant compte de la configuration de protection ayant été utilisée lors de l'encodage desdits mot de données. 11- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce qu'il comporte une étape de détection desdéfauts du circuit à protéger et de détermination d'une cartographie des défauts, la détection étant effectuée en utilisant l'une des méthodes suivantes : tests et observation du circuit protégé, calculs de statistiques. 12- Dispositif électronique de configuration et de protection de zones de mémoire, une zone de mémoire (501) étant représentée par une matrice de cellules mémoires, un mot de données pouvant être mémorisé par ligne de ladite matrice, ladite zone de mémoire étant composée d'au moins une zone principale et une zone de ressources complémentaires, la zone principale étant destinée à mémoriser les mots de données et la zone de ressources complémentaires étant destinée à mémoriser des bits de redondance associés aux mots de données, ledit dispositif étant caractérisé en ce qu'il comporte des moyens pour déterminer une configuration de protection des mots de données (505) en utilisant le procédé selon l'une quelconque des revendications 1 à 11 à partir d'une cartographie des défauts de la zone de mémoire (513), une portion de la zone de ressources complémentaires étant allouée pour mémoriser des bits de vérification d'un code de type ECC (303) et une autre portion de la zone de ressources complémentaires étant allouée en tant que ressources de secours (304). 13-Dispositif selon la revendication 12 caractérisé en ce que la zone mémoire (501) est comprise dans le dispositif. 14- Système d'interconnexion numérique composé d'au moins un module source (1300, 1301) comprenant des moyens d'encodage de manière à générer des mots de code à partir de données utiles, d'au moins un module de destination (1302, 1303) comprenant des moyens pour décoder lesdits mots de code, d'au moins un réseau d'interconnexion composé de liens électroniques (1317, 1318, 1319, 1320, 1321) et de noeuds (1304, 1305), une portion desdits liens et desdits noeuds étant appelée ressources de transmissioncomplémentaires et étant utilisées afin de transmettre les bits de redondance des mots de code, les mots de code étant transmis des modules sources vers les modules de destination à l'aide dudit réseau en utilisant des chemins de transmission, ledit système d'interconnexion étant caractérisé en ce que les moyens d'encodage, de décodage et l'utilisation des ressources de transmission complémentaires du réseau d'interconnexion sont configurés selon un mode de codage donné, un mode de codage correspondant à l'utilisation d'un code ECC et/ou de lignes ~o électroniques de secours, ledit mode de codage utilisant le procédé selon l'une quelconque des revendications 1 à 11.