FR 2600810 A1 19871231 FR 8609355 A 19860627 PROCEDE DE PROGRAMMATION DE DONNEES DANS UNE MEMOIRE MORTE PROGRAMMABLE ELECTRIQUEMENT La présente invention concerne la programmation de données dans une mémoire morte programmable électriquement faisant partie d'un circuit intégré. L'application plus particulièrement envisagée est celle des 5 "cartes à mémoire", c'est-à-dire des cartes comportant un circuit intégré avec une mémoire morte électriquement programmable. Par mémoire morte programmable électriquement on entendra une mémoire dans laquelle on peut inscrire des données par application de signaux électriques appropriés sur les entrées du circuit 10 intégré comportant la mémoire, ces données restant alors inscrites en mémoire même en l'absence d'alimentation électrique pendant une longue durée, appelée durée de rétention; cette durée peut atteindre plusieurs années. Dans beaucoup d'applications envisagées pour les cartes à 15 mémoire, les cartes doivent être produites à un très grand nombre d'exemplaires, et les données à inscrire sur chaque carte peuvent comprendre un grand nombre de bits, par exemple 8 kilobits. Or la programmation de chaque bit, ou de chaque octet si la programmation se fait octet par octet, dure un temps qui, même s'il 20 est court, n'est pas négligeable. A titre indicatif, on a considéré d'abord que la programmation d'un octet devait se faire par application d'une tension de programmation Vpp pendant une durée de 50 millisecondes qui est en fait très supérieure à ce qui est nécessaire mais qui inclut une marge de 25 sécurité permettant d'être sûr qu'on obtienne une durée de rétention de 10 ans. Pour réduire la durée de programmation, on a proposé de vérifier immédiatement après l'écriture que les transistors constituant la mémoire ont reçu une charge électrique suffisante pour assurer la durée de rétention. Cette vérification permet de se dispenser d'appliquer une tension de programmation avec une marge de sécurité très importante comme on -le faisait avant. Pratiquement, on peut programmer pendant 2 millisecondes, lire le résultat (quelques microsecondes), recommencer si le résultat est mauvais, et programmer à nouveau par sécurité pendant 4 millisecondes si le résultat est bon. Toutefois, ce cycle de programmation est encore trop long lorsqu'on doit programmer des millions de cartes: pour le fabricant 10 qui programme les cartes, la durée est prohibitive. C'est pourquoi, on a pensé que l'on pouvait rejeter vers l'utilisateur (au lieu du fabricant) les taches de programmation. Chaque utilisateur ayant un nombre plus restreint de cartes à programmer, le problème de la durée est moins critique. Toutefois cette solution n'est pas envisageable dans certains cas o les informations à inscrire sont de nature confidentielle et doivent impérativement être inscrites par le fabricant: par exemple l'information concerne l'identification de l'utilisateur et ne doit pas être inscrite par l'utilisateur lui-même. Pour résoudre le problème de la durée de programmation l'invention propose une solution simple qui consiste à programmer en deux temps: dans une première phase le fabricant programme les données pendant une durée faible mais suffisante pour conserver une rétention des informations jusqu'au moment de la deuxième phase de 25 la programmation; lors de la deuxième phase, qui a lieu chez l'utilisateur plut6t que chez le fabricant, on reprogramme la me:.ire, non pas à partir de données appliquées à nouveau à l'entrée du circuit intégré incorporant la mémoire, mais à partir des données déjà présentes dans la mémoire et sans rendre ces données 30 accessibles en lecture de l'extérieur du circuit intégré et sans permettre leur modification par l'extérieur. Cette deuxième phase est exécutée avec une durée de programmation aussi longue qu'il est nécessaire pour obtenir la rétention finale désirée (par exemple 10 ans). Plus précisément, l'invention propose un procédé de programmation d'une mémoire morte électriquement programmable faisant partie d'un circuit intégré, ce procédé étant caractérisé en ce qu'il comprend les deux étapes principales suivantes: 1) dans une première étapeon applique sur des entrées du circuit intégré des données à écrire dans la mémoire et on effectue la programmation de chaque donnée en appliquant une tension de programmation pendant une durée beaucoup plus courte que celle qu'il faudrait prévoir pour assurer la durée de rétention finale 10 désirée pour ces données, mais qui est quand même suffisante pour assurer une rétention des données jusqu'à la deuxième étape, 2) dans une deuxième étape, on reprogramme systèmatiquement chacune des données en appliquant une tension de programmation pendant une durée suffisante pour obtenir la durée 15 de rétention finale désirée, cette reprogrammation étant effectuée par un moyen de programmation interne au circuit intégré, qui lit les données dans la mémoire et les réinscrit, sans que les données soient à nouveau appliquées aux entrées du circuit intégré, ni à partir de l'extérieur du circuit ni à partir de l'intérieur. Le procédé selon l'invention n'est pas spécifique d'un type de mémoire particulier ou d'un type de circuit intégré particulier; simplement, il concerne les mémoires non volatiles dont la durée de rétention d'informations peut être augmentée (au moins dans une certaine plage) par un accroissement de la durée d'application d'une 25 tension de programmation Vpp. C'est le cas de la plupart des mémoires non volatiles dans lesquelles l'information est stockée sous forme de charges électriques piégées localement, par exemple piégées dans une grille flottante ou à un interface entre deux couches isolantes. Dans un exemple de réalisation, le circuit intégré est constitué essentiellement par une mémoire morte programmable associée à un petit nombre de circuits spécifiques (comparateurs, compteurs, additionneurs etc...) de traitement de données. Dans ce cas, pour la mise en oeuvre de l'invention, on prévoit dans le circuit intégré un automate d'écriture dont la fonction est de réaliser la deuxième partie de la programmation. Cet automate lit successivement chaque donnée de la mémoire, bit par bit ou mot par mot, et réinscrit au même emplacement la donnée lue, sans en changer la valeur. L'activation de cet automate d'écriture est déclenchée par exemple par l'extérieur du circuit intégé, mais le couplage entre l'automate de lecture et la mémoire pendant la lecture et la réécriture se fait sans que les données lues et réécrites 10 se présentent sur les bornes extérieures du circuit. Dans un autre exemple de réalisation, le circuit intégré comprend un microprocesseur, c'est-à-dire un circuit capable d'exécuter de nombreuses fonctions différentes définies par des instructions reçues sous forme de signaux logiques. Les séquences 15 d'instructions reçues définissent une succession de tâches exécutées successivement par le microprocesseur. Ces séquences sont par exemple stockées dans une mémoire morte de programmes (programmée par masque le plus souvent). Parmi les instructions possibles, les microprocesseurs possèdent toujours des instructions de lecture ou d'écriture dans des mémoires. Dans ce cas on prévoit que sont stockées dans la mémoire morte de programmes une séquence d'instructions de lecture et de réécriture, donnée par donnée, dans la mémoire morte programmable électriquement, cette séquence étant déclenchée par une 25 instruction appropriée fournie au microprocesseur à partir des bornes extérieures du circuit intégré. Là encore, durant l'exécution de cette séquence, les données lues puis réinscrites en mémoire par le microprocesseur restent à l'intérieur du cricuit intégré et ne se présentent pas sur les bornes extérieures; un bus interne de données 30 isolé des bornes extérieures pendant l'exécution de cette séquence, est donc prévu entre le microprocesseur et la mémoire programmable électriquement. Que le circuit intégré comprenne ou non un microprocesseur, on peut prévoir soit des moyens de déclenchement automatique de 26008 1 0 la deuxième phase de programmation, soit un déclenchement commandé par un signal appliqué à une borne extérieure du circuit intégré (ou plusieurs signaux constituant une instruction pour le microprocesseur). Par exemple, si le circuit intégré est incorporé à une carte de transactions monétaires, le lecteur de carte peut fournir les signaux de déclenchement appropriés lors d'une revalorisation de la carte par une banque. Ou encore, si la mémoire comporte un bit témoin conçu pour 10 avoir une durée de rétention d'information plus faible que celle des autres bits de la mémoire, la disparition de la programmation de ce bit témoin peut servir à déclencher la deuxième étape de programmation. REVENDICATION Procédé de programmation d'une -mémoire morte électriquement programmable faisant partie d'un circuit intégré, caractérisé en ce qu'il comprend les deux étapes principales suivantes: 1) dans une première étape on applique sur des entrées de circuit intégré des données à inscrire dans la mémoire, et on effectue la programmation de chaque donnée en appliquant une tension de programmaton pendant une durée beaucoup plus courte que celle qui est théoriquement nécessaire pour assurer la durée de rétention finale désirée pour ces données mais qui est suffisante pour assurer une rétention des données jusqu'à la deuxième étape, 2) dans une seconde étape, on reprogramme systématiquement chacune des données en appliquant une tension de programmation pendant une durée suffisante pour obtenir la durée de rétention finale désirée, cette deuxième programmation étant effectuée par 15 un moyen de programmation interne au circuit intégré qui lit les données dans la mémoire et les réinscrit sans que les données soient appliquée aux entrées du circuit intégré ni à partir de l'extérieur du circuit ni à partir de l'intérieur.