FR 2767956 A1 19990305 FR 9809473 A 19980724 Etat de la technique La présente invention concerne un procédé pour détecter des cellules de mémoire à erreur de programme dans une mémoire et notamment pour reconnaître des cellules de mé-5 moire surprogrammées dans une mémoire flash, semi- conductrice, - la mémoire ayant un grand nombre de cellules de mémoire ré- parties en un nombre de blocs, effaçables de façon uni- taire, et subdivisables en un groupe de sous-blocs, programmables de manière unitaire, une erreur de programme d'une cellule de mémoire dans un sous-bloc faisant que cha- que sous-bloc d'un sous-groupe de programme d'erreur du groupe du nombre de sous-blocs susceptibles d'être repré- sentés, présente une cellule de mémoire à erreur de pro- gramme. Les cellules de mémoire sont subdivisées en un certain nombre d'unités de blocs effaçables. Les blocs sont répartis en un groupe de sous-blocs programmables globalement (Pages). Bien qu'en principe la présente invention puisse s'appliquer à des erreurs de programme qui se développent de manière collective dans une mémoire quelconque, la présente invention et le problème à la base de cette invention seront décrits ci-après en relation avec des cellules de mémoire surprogrammées dans une mémoire flash semi-conductrice. L'expression " erreur de programme " s'applique de manière générale dans le sens d'une erreur de programme d'une cellule de mémoire d'un sous-bloc, qui produit une er- reur de programme des cellules de mémoire correspondantes d'un sous-groupe de sous-blocs. Les mémoires à semi-conducteurs se répartissent de manière générale en mémoires de tableau et mémoires de fonction. La présente invention concerne tout particulière- ment une mémoire de tableau comportant un grand nombre de cellules de mémoire dont chacune possède une adresse détermi- née. Pour des mémoires de tableau on distingue entre les mé- moires vives RAM et les mémoires mortes ROM. Des mémoires particulièrement intéressantes sont les mémoires EPROM et EEPROM que l'utilisateur peut non seu- lement programmer mais qu'il peut également effacer; la mé- moire EPROM peut être effacée, pour les blocs de cellules de5 mémoire, par de la lumière ultraviolette; la cellule EEPROM peut être effacée, pour des cellules de mémoire choisies de manière appropriée (par exemple par octets), par une impul- sion de tension. Les mémoires flash (encore appelées mémoires flash EEPROM ou mémoires flash RAM) représentent une solution moyenne entre les mémoires EPROM et les mémoire EEPROM. Il s'agit certes de mémoires à effacement électrique, mais pas par octets comme la mémoire EEPROM, mais par blocs comme la mémoire EPROM. Toutefois, les plus récents développements15 permettent une réduction constante de ces blocs effaçables dans les mémoires flash EEPROM. Les mémoires flash peuvent se fabriquer d'une ma- nière avantageuse sous la forme de mémoires EEPROM; elles présentent une forte densité de données. C'est pourquoi, el- les sont particulièrement utilisées dans les applications dans lesquelles on dispose de peu de place, comme par exemple les butées de verrouillage " Laptops ", les blocs-notes ou les puces à microcontrôleur à caractéristiques élevées. Le réseau de mémoires flash est subdivisé en blocs et sous-blocs appelés pages pour mieux utiliser la sur- face de la puce. Le problème à la base de la présente invention est, de manière générale, le fait qu'en effaçant et en pro- grammant une partie de la mémoire flash on peut rencontrer des erreurs qui provoquent des pertes de données ou des er- reurs de programme dans d'autres parties de la mémoire flash (développement collectif d'erreurs). Pour certaines erreurs comme par exemple les surprogrammations, il est souvent dif- ficile de déceler l'erreur et, ce qui est également coûteux, de l'éliminer. La surprogrammation sera décrite à l'aide d'un exemple pratique d'un microcontrôleur. Dans ce microcontrôleur, il y a une puce de mé- moire non volatile sous la forme d'un réseau de mémoires flash. Ce réseau flash est subdivisé en blocs effaçables de 32 kB, et ces blocs sont eux-mêmes subdivisés chaque fois en 8 mots (1 mot = 32 bits) de pages correspondantes. L'effacement de données mises en mémoire est ain- si possible seulement dans les blocs d'une taille de 32 kB alors que la programmation des données est possible dans des pages d'une taille de 8 mots.10 Lorsqu'on fait passer une cellule de mémoire (1 bit) d'une page, d'un état non programmé (état effacé) à un état programmé, il peut arriver, du fait des propriétés de la cellule de mémoire ou plus précisément des propriétés du transistor à effet de champ correspondant, que cette cellule15 passe dans un état que l'on appelle surprogrammé. Cet état surprogrammé se caractérise en ce que la cellule fournit en permanence vers l'extérieur l'information qu'elle contient, et cela même sans que cette cellule soit à l'état activé, lorsqu'on lit la page concernée. La structure particulière du réseau de mémoire flash est perturbée par la cellule de mémoire surprogrammée, même lorsqu'on effectue la lecture des autres pages. De ce fait, les données contenues dans les autres pages sont dété- riorées et peuvent le cas échéant être émises de manière er- ronée. Une cellule de mémoire surprogrammée peut être transférée de nouveau dans ce réseau de mémoires flash à l'état effacé si l'ensemble du bloc de 32 kB contenant cette cellule de mémoire surprogrammée est effacé. Les pages perturbées par une cellule de mémoire surprogrammée dépendent de la structure du réseau de mémoi- res. Fréquemment, toutes les autres pages ne sont pas dété- riorées mais seules sont détériorées les cellules de mémoire des pages qui se trouvent dans une colonne commune du réseau de mémoires. L'erreur se produit alors à l'intervalle pério- dique de la page avec la cellule surprogrammée, dans le ré- seau de mémoires flash. Sans connaître l'historique du réseau de mémoires flash, on ne peut détecter de telles erreurs surprogrammées. Avantages de l'invention La présente invention concerne un procédé du type défini ci-dessus, caractérisé en ce qu' a) on fixe un premier sous groupe d'erreur de programme d'un bloc, b) on fixe un sous-bloc de référence (Pnl) et un ou plusieurs sous-blocs utilitaires (Pll-P(n- 1)l), dans un premier sous-groupe d'erreur de programme (Pll- Pnl), c) on préprogramme les cellules de mémoire du sous-bloc de référence (Pnl), d) on programme les cellules de mémoire d'un premier sous- bloc utilitaire (Pli), e) on lit les cellules de mémoire préprogrammées du sous-bloc de référence (Pnl), et f) on détermine si les cellules de mémoire programmées du premier sous-bloc utilitaire (PlF) présentent une ou plu- sieurs cellules de mémoire à erreur de programme, en fonc- tion du résultat de la lecture. Le procédé selon l'invention pour la détection de cellules de mémoire à erreur de programme d'une mémoire semi- conductrice offre en particulier l'avantage de permettre, de manière simple et sûre, de reconnaître les cellules à erreur de programme, qui utilisent la nature systématique du déve- loppement de l'erreur. En outre, le procédé selon l'invention permet, en cas de constatation de ce que les cellules de mé- moire programmées d'un sous-bloc utilitaire ou d'un sous-bloc de référence programmé présentent au moins une cellule de mé- moire d'erreur de programme, de réaliser une réparation anti- cipée. En effet, on peut avoir immédiatement une opération d'effacement sans avoir à programmer inutilement d'autres sous-blocs ou pages. L'idée à la base de la présente invention con- siste à définir un sous-bloc de référence ou page de réfé- rence pour un ou plusieurs sous-blocs utilitaires ou pages utilitaires dans chaque premier sous-programme. En prépro- grammant les cellules de mémoire du sous-bloc de référence avant de programmer les cellules de mémoire d'un sous-bloc utilitaire respectif, et en lisant les cellules de mémoire préprogrammées du sous-bloc de référence après la programma- tion, on peut constater si les cellules de mémoire program-5 mées du sous-bloc utilitaire respectif présentent une ou plusieurs cellules de mémoire à erreur de programme. En d'autres termes, on a une erreur de programme si, en même temps, pour la cellule de mémoire dans le sous-programme uti- litaire, la cellule de mémoire correspondante du sous-bloc de10 référence est également modifiée pour être effacée (par exem- ple état logique 0) pour passer à l'état programmé (par exem- ple l'état logique 1). Selon un développement avantageux, on répète les étapes de programmation des cellules de mémoire d'un premier sous-bloc utilitaire, pour la lecture des cellules de mémoire préprogrammées du sous-bloc de référence et de la constata- tion de ce que les cellules de mémoire programmées du premier sous-bloc utilitaire comportent une ou plusieurs cellules de mémoire à erreur de programme, en fonction du résultat de la lecture pour tous les autres sous-blocs utilitaires du pre- mier sous-bloc d'erreur de programme fixé. Selon un autre développement avantageux, en cas de constatation, les cellules de mémoire programmées compor- tent au moins un sous-bloc utilitaire avec au moins une cel- lule de mémoire d'erreur de programme, on efface le programme et on recommence. Selon un autre développement préférentiel, on dé- termine si, dans les sous-blocs utilitaires programmés, il n'y a pas de cellules de mémoire non programmées qui corres- pondent à une cellule de mémoire respective du sous-programme de référence; en cas de réponse affirmative, on fixe chaque fois une cellule de mémoire non programmée pour chaque cel- lule de mémoire concernée du sous-bloc de référence. Cette procédure permet avantageusement une programmation contrôlée de la page de référence avec des données utilitaires. Selon un autre développement préférentiel, on programme les cellules de mémoire du sous-programme de réfé- rence; on lit les cellules de mémoire non programmées, fixées, et, en fonction du résultat de la lecture, on déter- mine si les cellules de mémoire programmées du sous-programme de référence comportent une ou plusieurs cellules de mémoire à erreur de programme. Selon un autre développement avantageux, dans le cas o l'on constate que les cellules de mémoire programmées du sous-bloc de référence comportent au moins une cellule de mémoire à erreur de programme, on efface le bloc et on le re- programme. Selon un autre développement préférentiel, tous les autres sous-groupes à erreur de programme du bloc et les sous-blocs de référence correspondants, ainsi que les sous- blocs utilitaires, sont déterminés jusqu'à ce que chaque sous-bloc soit détecté par un sous-groupe d'erreur de pro- grammation; puis on programme de façon correspondante les sous-blocs des autres sous-groupes d'erreur de programme. Cette procédure garantit que, du fait de la connaissance de la construction de la mémoire, on détecte dans tous les cas les cellules de mémoire à erreur de programme. Selon un autre développement préférentiel, on as- socie une matrice au groupe et on associe les lignes et les colonnes de la matrice de façon que le sous-groupe apparte- nant à un sous-bloc respectif soit une colonne de la matrice. Cette procédure facilite le traitement des données en cas de saisie de programme d'erreur. Selon un autre développement avantageux, dans la dernière ligne de la matrice, on enregistre tous les sous- blocs de référence nécessaires. Selon un autre développement de l'invention, on protège le contenu actuel d'un sous-bloc utilitaire avant sa programmation dans une mémoire auxiliaire ou dans un autre sous-bloc non utilisé ou dans un autre bloc. Cela permet une programmation pas à pas des pages. Selon un autre développement préférentiel, on mo- difie au moins un paramètre de programmation, notamment le nombre d'impulsions de programmation ou l'amplitude des im- pulsions de programmation, dans le cas o l'on constate que les cellules de mémoire programmées d'un sous-bloc utilitaire ou d'un sous-bloc de référence, programmé, comportent au moins une cellule de mémoire à erreur de programme. Cette procédure permet d'optimiser le paramètre de programmation. Selon un autre développement préférentiel, on préprogramme les cellules de mémoire du sous-bloc de réfé- rence respectif pour les faire passer toutes dans leur état d'effacement. Dessins Un exemple de réalisation de l'invention est re- présenté dans les dessins et sera décrit ci-après dans l'unique figure annexée dans laquelle: - cette figure 1 montre une mémoire flash avec quatre blocs et n x k pages, (n) et (k) étant des nombres naturels, pour l'application du procédé selon l'invention.15 Description des exemples de réalisation A la figure 1, la référence 10 désigne de manière générale la mémoire flash, les références 20a-20d désignent un premier-quatrième bloc et les références Pll-Pnk désignent les pages comprises entre une première page et la page n x k20 (sous bloc); dans cette formule (n) et (k) sont des nombres naturels et (n) est compris par exemple entre 1 et 128; (k) est compris entre 1 et 8. Les différentes pages Pll...Pnk contiennent chaque fois 8 mots formés chacun de 4 octets, c'est-à-dire 32 octets ou 256 bits. En d'autres termes, les25 pages Pll-Pnk forment une matrice de 128 lignes et 8 colon- nes, c'est-à-dire que 1024 pages sont contenues globalement dans chaque bloc 20a-20d de la mémoire flash 10. Les blocs 20a-20d forment chaque fois la plus pe- tite unité effaçable de la mémoire flash 10; les pages P11- Pnk forment chaque fois la plus petite unité programmable. Dans cet exemple de mémoire flash 10, une cellule de mémoire surprogrammée à la page Pl1 conduirait à ce que chaque page Pli, P21, P31, P41,..., P(n-3)l, P(n-2)l, P(n- 1)1, Pnl, présente une cellule de mémoire surprogrammée cor- respondante. C'est-à-dire que dans toutes les pages Pl-Pnl ou dans la première colonne de la matrice, le bit concerné apparaît comme programmé bien qu'il ne l'ait été en réalité que dans la page Pli. On peut éliminer cette erreur en effa- çant l'ensemble du bloc 20b. Néanmoins, il faut appliquer le procédé selon l'invention permettant de déceler rapidement et en sécurité l'arrivée d'un défaut. Le procédé utilise le fait que des cellules sur- programmées sont représentées par un sous-groupe de programme d'erreur de page à savoir par les colonnes ou les vecteurs de colonne respectifs de la matrice, ce qui est prédéterminé par la structure particulière de la mémoire flash 10. Pour l'exécution du procédé, on fixe pour chaque colonne, c'est-à- dire pour chaque groupe de programme d'erreur de la matrice, une page de référence, et cela, dans le présent exemple de réalisation, chaque fois pour la der- nière page Pnl, Pn2, Pn3, Pn4,..., Pn(k-2), Pn(k-l), Pnk. Les autres pages de chaque colonne de la matrice sont des pa- ges utiles, c'est-à-dire des pages utilisées pour la mémori- sation proprement dite des données. Puis on efface les cellules de mémoire des pages de référence Pnl, Pn2, Pn3, Pn4,..., Pn(k-2), Pn(k-l), Pnk, et des pages utilitaires, globalement, par une opération d'effacement en bloc appliquée au bloc 20b. Ensuite, on programme les cellules de mémoire d'une première page utilitaire, c'est-à-dire par exemple la page Pll. Puis on extrait les cellules de mémoire préprogram- mées (c'est-à-dire effacées) de la page de référence de la première colonne, c'est-à-dire de la page Pnl. A l'aide du résultat de cette lecture, on peut déterminer si les cellules de mémoire programmées de la pre- mière page utilitaire Pll comportent une ou plusieurs cellu- les de mémoire surprogrammées. Cela est précisément le cas si une ou plusieurs cellules de mémoire de la page de référence Pnl ne sont plus effacées (état logique " O ") mais program- mées (état logique " 1 "). Dans un tel cas, on a un efface- ment immédiat et une nouvelle programmation de l'ensemble du bloc 20b. Puis on exécute les étapes précédentes pour tou- tes les autres pages utilitaires, c'est-à-dire Pll-Plk, P21- P2k,... P(n-l)l-P(nl)k. Les pages de référence sont réser- vées dans cet exemple de réalisation, c'est-à-dire qu'elles ne sont pas utilisées pour l'enregistrement proprement dit de données. Selon un autre exemple de réalisation du procédé de l'invention, on utilise également les pages de référence pour la mise en mémoire de données proprement dite; toute- fois, cela nécessite des moyens supplémentaires. On suppose que toutes les pages utilitaires Pll- Plk, P21-P2k,... et P(n-1)l-P(n-l)k ont été programmées cor- rectement. Avant la programmation de la première page de ré- férence Pnl, on définit si, dans les pages utilitaires pro- I, grammées Pll-P(n-1)l, il n'y a pas de cellules de mémoire non programmées qui correspondent à une cellule de mémoire res- pective de la première page de référence Pnl. Dans le cas affirmatif, on fixe chaque fois une telle cellule de mémoire non programmée pour chaque cellule de mémoire correspondante de la première page de référence Pnl. Si pour une quelconque cellule de mémoire de la première page de référence à programmer Pnl, on ne trouve pas de cellules de mémoire non programmées dans une page program- mée Pll-P(n-l)l, cela n'est pas gênant car même une surpro- grammation ne provoquerait ni erreur ni perte de données. Ensuite, on programme les cellules de mémoire de la première page de référence Pnl puis, à la lecture des cel- lules de mémoire non programmées, fixées, les pages utilitai- res programmées Pli-P(n-1)l. Pour constater si des cellules de mémoire pro- grammées de la page de référence comportent une ou plusieurs cellules à programmation erronée, on fait comme pour la pro- grammation des pages utilitaires. Dans ce second mode de réalisation, on efface et on programme de nouveau le bloc 20b dans le cas o l'on cons- tate que les cellules de mémoire programmées de la première page de référence Pnl présentent au moins une cellule à er- reur de programme. La programmation des autres pages de réfé- rence Pn2-Pnk se fait de la même manière. Dans la description ci-dessus du premier et du second mode de réalisation a supposé que les données du bloc b à programmer était disponibles en totalité pour la pro- grammation par page. Si cela n'est pas le cas, il faut proté- ger le contenu actuel d'une page utilitaire contre sa programmation dans une mémoire auxiliaire, par exemple une mémoire RAM, ou dans un autre sous-bloc non utilisé du même bloc 20b ou d'un autre bloc 20a, 20c-20d. La cause de cellules de mémoire surprogrammées réside dans un excès d'impulsions de programmation. C'est pourquoi un autre mode de réalisation du procédé selon l'invention prévoit de modifier au moins un tel paramètre de programmation et notamment le nombre d'impulsions de program- mation indiqué, ou encore l'amplitude des impulsions de pro-15 grammation, dans le cas o l'on constate que les cellules de mémoire programmées d'une page utilitaire ou d'une page de référence programmée, présentent au moins une cellule de mé- moire surprogrammée. Bien que la présente invention ait été décrite ci-dessus dans le cas d'un exemple de réalisation préféren- tiel, elle n'est pas limitée à celui-ci mais peut être modi- fiée de multiples manières. En particulier, les sous-blocs et les sous- groupes de programmation d'erreur ne sont pas nécessairement présents sous une forme matricielle ou vectorielle; d'autres représentations comme par exemple des représentations tenso- rielles ou analytiques sont également possibles. Bien que, dans le premier et le second mode de réalisation décrit, toutes les pages de référence nécessaires soient fixées dans la dernière ligne de la matrice, cela n'est pas indispensable; on peut fixer un nombre quelconque de pages et, de manière générale, il faut veiller à ce que pour chaque cellule utilitaire il existe au moins une cellule de référence. La présente invention n'est pas limitée à un quelconque type de mémoire ou d'erreur de programme mais peut s'appliquer à des erreurs de programme quelconques, qui se Il développent de manière collective dans n'importe quelle mé- moire. LISTE DES REFERENCES Mémoire Flash a - 20d blocs Pll - Pnk Pages n = 1,... ., 128 Indice de courant des lignes k = 1...., 8 Indice de courant des colonnes R E V E N D I C A T IONS 1 ) Procédé pour détecter des cellules de mémoire à erreur de programme dans une mémoire (10) et notamment pour reconnaître des cellules de mémoire surprogrammées dans une mémoire5 flash, semi- conductrice, - la mémoire (10) ayant un grand nombre de cellules de mé- moire réparties en un nombre de blocs (20a-20d), effaçables de façon unitaire, et subdivisables en un groupe de sous- blocs (Pll-Pnk), programmables de manière unitaire, une er- reur de programme d'une cellule de mémoire dans un sous- bloc faisant que chaque sous-bloc d'un sous-groupe de pro- gramme d'erreur du groupe du nombre de sous-blocs suscepti- bles d'être représentés, présente une cellule de mémoire à erreur de programme, caractérisé en ce qu' a) on fixe un premier sous groupe d'erreur de programme (Pll- Pnl) d'un bloc (20b), b) on fixe un sous-bloc de référence (Pnl) et un ou plusieurs sous-blocs utilitaires (Pll-P(n-l)l), dans un premier sous-groupe d'erreur de programme (Pll-Pnl), c) on préprogramme les cellules de mémoire du sous-bloc de référence (Pnl), d) on programme les cellules de mémoire d'un premier sous- bloc utilitaire (Pll), e) on lit les cellules de mémoire préprogrammées du sous-bloc de référence (Pnl), et f) on détermine si les cellules de mémoire programmées du premier sous-bloc utilitaire (Pll) présentent une ou plu- sieurs cellules de mémoire à erreur de programme, en fonc- tion du résultat de la lecture. 2 ) Procédé selon la revendication 1, caractérisé en ce qu' on répète les étapes d), e) et f) pour tous les autres sous- blocs utilitaires (P21-P(n-1)l) du premier sous-groupe de programmation d'erreur constaté (Pll-Pnl). 3 ) Procédé selon l'une quelconque des revendications 1 ou 2, caractérisé par les étapes suivantes: - on efface et on reprogramme le bloc (20b) si l'on constate que les cellules de mémoire programmées d'un quelconque sous-programme utilitaire présentent au moins une cellule de mémoire à erreur de programme. 4 ) Procédé selon la revendication 3, caractérisé par les étapes suivantes: - on détermine si, dans les sousblocs utilitaires programmés (Pll-P(n-1)l), il y a des cellules de mémoire non program- mées correspondant à une cellule de mémoire respective du sous-bloc de référence (Pnl), et - en cas de réponse affirmative, on détermine chaque fois une cellule de mémoire non programmée pour chaque cellule de mémoire concernée du sous-bloc de référence (Pnl). ) Procédé selon la revendication 4, caractérisé par les étapes suivantes - on programme les cellules de mémoire du sous-bloc de réfé- rence (Pnl), - on lit les cellules de mémoire non programmées, fixées, et - on détermine si les cellules de mémoire programmées du sous-bloc de référence (Pnl) comportent une ou plusieurs cellules de mémoire à erreur de programme, en fonction du résultat de la lecture. 6 ) Procédé selon la revendication 5, caractérisé par les étapes suivantes: - on efface et on reprogramme le bloc (20b) au cas o l'on constate que les cellules de mémoire programmées du sous- bloc de référence (Pnl) présentent au moins une cellule de mémoire à erreur de programme. 7 ) Procédé selon l'une quelconque des revendications précé- dentes, caractérisé par les étapes suivantes: - on fixe tous les autres sous-groupes d'erreur de programme (P12-Pn2,..., Plk-Pnk) du bloc (20b) et les sous-blocs de référence correspondants (Pn2,..., Pnk), et les sous-blocs utilitaires (P12-P(n-1)2,..., Plk-P(n-1)k), jusqu'à ce qu'au moins un sous-bloc d'un sous-groupe de programme d'erreur soit détecté, et - en fonction de la programmation on procède sur les sous- blocs des autres sous-groupes d'erreur de programmation (P12-Pn2,..., Plk-Pnk). 8 ) Procédé selon l'une quelconque des revendications précé- dentes, caractérisé en ce qu' au groupe on associe une matrice (Pll-Pnk), les lignes et les colonnes de la matrice (P11-Pnk) étant associées pour que les sous-groupes correspondant à un sous-bloc respectif soient attribués à une colonne de la matrice (P11-Pnk). 9 ) Procédé selon la revendication 8, caractérisé en ce que dans la dernière ligne de la matrice (Pll-Pnk), on fixe tous les sous-blocs de référence (Pnl-Pnk) nécessaires. ) Procédé selon l'une quelconque des revendications précé- dentes, caractérisé en ce qu' on protège le contenu actuel d'un sous-bloc de référence con- tre sa programmation dans une mémoire auxiliaire ou dans un ou plusieurs sous-blocs non utilisés dans un même bloc ou dans un autre bloc. 11 ) Procédé selon l'une quelconque des revendications précé- dentes, caractérisé par l'étape suivante: - on modifie au moins un paramètre de programmation, notam- ment le nombre d'impulsions de programmation ou l'amplitude des impulsions de programmation, au cas o l'on constate que les cellules de mémoire programmées d'un sous-bloc utilitaire ou d'un sous-bloc de référence, programmé, comportent au moins une cellule de mémoire ayant une erreur de programme. 12 ) Procédé selon l'une quelconque des revendications précé- dentes, caractérisé en ce que les cellules de la mémoire du sous-bloc de référence respec- tif sont préprogrammées dans leur état d'effacement.