FR 3083362 A1 20200103 FR 1855927 A 20180629 Procédé de programmation d'un dispositif de mémoire non volatile et dispositif de mémoire non volatile correspondant Des modes de mise en oeuvre et de réalisation de l'invention concernent les mémoires non volatiles, notamment celles programmables par électrons chauds, par exemple des mémoires comprenant des cellules mémoire dites à « grille divisée » ("split gate") comportant chacune un transistor de sélection et un transistor d'état à grille flottante ou bien des mémoires FLASH, en particulier des mémoires embarquées au sein d'un circuit intégré incorporant par exemple un microcontrôleur, et plus particulièrement leur programmation. La valeur logique d'un bit stocké dans une cellule mémoire non volatile est représentée par la valeur de la tension de seuil du transistor à grille flottante de cette cellule-mémoire. Lorsque la cellule-mémoire est dans un état « effacé », la valeur logique du bit stocké dans cette cellule-mémoire a une première valeur, par exemple la valeur « I ». La programmation d'une cellule-mémoire effacée vise à faire passer cette cellule dans un état « programmé » ou « écrit » dans lequel la valeur logique du bit stocké dans cette cellule-mémoire a une deuxième valeur, par exemple la valeur « 0 ». De telles cellules mémoire, en particulier à grille divisée, peuvent être programmées par injection d'électrons chauds (ou "injection de porteurs chauds"). La programmation par électrons chauds présente, par rapport à la programmation par effet tunnel, l'avantage d'être de courte durée, généralement 100 fois plus courte qu'une programmation par effet tunnel. Plus précisément, le temps de programmation d'une cellule mémoire par injection d'électrons chauds est typiquement de l'ordre de quelques microsecondes contre quelques millisecondes pour une programmation par effet tunnel. Lors de la programmation par électrons chauds, les deux transistors de la cellule mémoire coopèrent en vue de l'injection de 2 charges électriques dans la grille flottante. Le transistor de sélection présente un canal conducteur dans lequel se forme un courant comprenant des électrons à haute énergie cinétique, dits "électrons chauds". Lorsque ce courant atteint le canal conducteur du transistor 5 d'état, une zone d'injection se forme où les électrons à haute énergie sont injectés dans la grille flottante de ce transistor sous l'effet d'un champ électrique vertical créé par la tension appliquée à la grille de commande (« control gate ») du transistor d'état. Pour obtenir un bon rendement d'injection, il est souhaitable 10 que le transistor de sélection fonctionne en mode saturé (tension drain-source très supérieure à la tension grille-source) afin que son canal conducteur présente une zone de pincement au voisinage de la zone d'injection. La concentration du courant dans la zone de pincement favorise l'apparition d'électrons à haute énergie cinétique, 15 le rendement d'injection étant alors élevé. Ce mode de fonctionnement saturé du transistor de sélection est également appelé "weakinversion" (régime de faible inversion) ou "subthreshold" (mode de fonctionnement sous la tension de seuil). Le mode de fonctionnement saturé du transistor de sélection 20 est classiquement obtenu en imposant un faible courant de programmation dans la cellule mémoire, au moyen d'une source de courant, tandis que la tension source-grille de ce transistor de sélection s'ajuste automatiquement au courant imposé, par effet cascode. 25 Pour programmer une cellule-mémoire, on applique typiquement pendant une durée de programmation (impulsion de programmation) une haute tension sur la grille de commande du transistor d'état, typiquement une tension de l'ordre de 10 volts, 30 une tension de l'ordre de 1 volt sur la grille du transistor de sélection, et une tension de l'ordre de 4 à 5 volts sur le drain du transistor d' état Lors de l'impulsion de programmation, un profil de courant apparaît. Ce courant résulte de la génération des électrons chauds. 5 Cette génération de courant a la forme d'un pic au début de l'impulsion qui décroît ensuite tout au long de la programmation. Par ailleurs, les différentes tensions appliquées sur la cellule-mémoire en programmation, et notamment la tension appliquée sur la ligne de bits reliée au drain du transistor d'état, sont fournies par un 10 circuit de pompe de charge. Or, lorsque l'on programme de nombreuses cellules simultanément, par exemple 64 cellules-mémoire, les différents pics de courant apparaissant sur les lignes de bits correspondantes, imposent de surdimensionner le circuit de pompe de charge et donc 15 d'augmenter sa taille sur silicium. En effet si la pompe de charge n'est pas capable de délivrer ce courant pic, il peut se produire une baisse de la tension induite à la sortie de la pompe de charge. Et dans ce cas la programmation ne peut être garantie. A cela s'ajoute la variation lors de la fabrication des 20 points mémoire sur le silicium. Aussi le surdimensionnement du circuit de pompe de charge est-il augmenté. La réduction du pic de programmation est donc un enjeu pour le dimensionnement du circuit de pompe de charge mais aussi pour la 25 robustesse de la programmation. Ce pic de courant apparaît également lors de la programmation des cellules-mémoires d'une mémoire FLASH avec les mêmes inconvénients de surdimensionnement du circuit de pompe de charge. Ce pic de courant a également été mis en évidence pour une 30 cellule-mémoire non volatile présentant une fenêtre tunnel asymétrique (ATW : Asymmetrical Tunnel Window) et programmable également par injection de porteurs chauds et décrite dans l'article de 4 J. Bartoli et autres, intitulé « optimization of the ATW non-volatile memory for connected smart objects », IEEE 2015. Une solution pour réduire la taille du circuit de pompe de charge prévoit de programmer les cellules-mémoire en plusieurs 5 impulsions de programmation. C'est le parallélisme de programmation. Ainsi une programmation de 64 cellules-mémoire pourra s'effectuer par exemple sur une fenêtre de programmation dont la durée correspond à deux durées de programmation, en utilisant deux impulsions de programmation consécutives, ce qui permet de 10 programmer 32 cellules par impulsion. Même si une telle solution permet de diviser mécaniquement le courant maximum de programmation au cours de la fenêtre de programmation, il subsiste un profil de courant de programmation avec un pic dans les mêmes proportions. Cette situation ne permet pas de 15 tirer le meilleur parti de la pompe de charge et de sa capacité maximale de génération de courant. Il existe par conséquent un besoin de réduire le courant maximum de programmation nécessaire tout en offrant une meilleure utilisation de la pompe de charge. 20 Selon un mode de mise en oeuvre il est proposé, non pas de diviser la valeur du courant mais de changer la forme du profil de courant de programmation en aplatissant autant que possible le pic de courant, ce qui permettra au courant maximum délivré par la pompe de charge d'être utile tout au long de la fenêtre de programmation et non 25 plus sur un court instant au début. A cet égard, selon un mode de mise en oeuvre, il est proposé de programmer le groupe de cellules-mémoire en avalanche sur ladite fenêtre de programmation en utilisant un profil de programmation établi par simulation et comportant séquentiellement un contrôle du 30 courant maximum de programmation avant d'autoriser le déclenchement de la programmation d'une ou de cellules-mémoire additionnelles du groupe au sein d'un intervalle au cours duquel une 5 ou des cellules-mémoire du groupe ont été considérées comme ayant une programmation pouvant être déclenchée. Ainsi, selon un aspect, il est proposé un procédé de programmation d'un groupe de N cellules-mémoire d'un dispositif de mémoire non volatile sur une fenêtre de 5 programmation ayant une durée supérieure à la durée de programmation d'une cellule-mémoire, comprenant une subdivision de la fenêtre de programmation en M intervalles temporels, M étant supérieur à deux, une détermination par simulation, en tenant compte d'un 10 critère de référence, d'un profil de programmation comportant pour chaque intervalle temporel, un nombre maximum de cellules-mémoires dont la programmation peut être déclenchée au sein de cet intervalle temporel, (ce nombre maximum peut être éventuellement nul pour certains de ces intervalles temporels) 15 un stockage du profil de programmation dans le dispositif de mémoire, et une programmation du dispositif de mémoire sur ladite fenêtre de programmation, par intervalle, en utilisant ledit profil de programmation. 20 Le nombre et la durée des intervalles temporels dépendent notamment de la précision souhaitée. Selon un mode de mise en oeuvre, le procédé comprend une détermination sur un dispositif de mémoire non volatile de référence réalisé dans la même technologie que celle dudit dispositif 25 de mémoire non volatile, d'une évolution temporelle du courant de programmation d'une cellule-mémoire de référence du dispositif de mémoire de référence pendant la durée de programmation, et une détermination de la valeur maximale du courant programmation obtenue sur ladite fenêtre de programmation lors d'une 30 programmation des N cellules-mémoire de référence par P paquets de N/P cellules-mémoire de référence, P étant inférieur à M, (par exemple pour une programmation de N=64 cellules-mémoire de 6 référence en deux impulsions, P est égal à deux, 32 cellules-mémoire de référence étant programmées simultanément), et ledit critère de référence est qu'à l'issue de la programmation par intervalle du groupe de N cellules-mémoire, la valeur maximale du 5 courant de programmation ne dépasse pas une fraction de ladite valeur maximale de référence. Cette fraction peut être par exemple de l'ordre de 0,75 ce qui correspondant à une réduction de 25% du pic de courant. Bien entendu ces valeurs ne sont qu'indicatives et la valeur de 10 réduction souhaitée dépend notamment de la technologie utilisée et du niveau du pic de courant. Ladite détermination par simulation comprend avantageusement la mise en oeuvre d'un algorithme qui va faire des hypothèses, des tests et valider les hypothèses compte tenu dudit 15 critère de référence. Plus précisément, selon un mode de mise en oeuvre, ladite détermination par simulation comprend un ordonnancement des cellules-mémoire du groupe de N cellules-mémoires, 20 une définition d'au moins une table de calcul comportant C coefficients associés à C instants de calcul, un échantillonnage de ladite évolution temporelle en D échantillons associés à D instants d'échantillonnage correspondant à D instants de calcul, C étant au moins égal au produit de N par D, 25 un ordonnancement des M intervalles temporels, un intervalle temporel de ladite séquence ayant une durée correspondant à DTS instants de calcul et débutant à un instant de calcul initial, DTS étant inférieur à D, et une cellule-mémoire du groupe de N cellules-mémoire est 30 considérée comme ayant une programmation déclenchable dans un intervalle temporel, si après ajout des D échantillons aux D valeurs précédentes, et donc une accumulation, des coefficients de la table 7 associés aux D instants de calcul débutant audit instant de calcul initial de cet intervalle temporel, la valeur maximale des coefficients de ladite table ne dépasse pas ladite fraction de ladite valeur maximale de référence tandis que si la valeur maximale des coefficients de la 5 table dépasse ladite fraction de ladite valeur maximale de référence, la cellule-mémoire courante est considérée comme n'ayant pas une programmation déclenchable dans cet intervalle temporel. Selon un mode de mise en oeuvre, si ladite cellule-mémoire est considérée comme ayant une programmation déclenchable dans ledit 10 intervalle temporel, on examine si la cellule-mémoire suivante peut avoir une programmation déclenchable dans ce même intervalle temporel en ajoutant à nouveau les D échantillons aux D valeurs précédentes des coefficients de la table associés aux D instants de calcul débutant audit instant de calcul initial de ce même intervalle 15 temporel et en déterminant si la valeur maximale des coefficients de ladite table ne dépasse pas ladite fraction de ladite valeur maximale de référence. Selon un mode de mise en oeuvre, si ladite cellule-mémoire est considérée comme n'ayant pas une programmation déclenchable dans 20 ledit intervalle temporel, on n'ajoute pas les D échantillons aux D valeurs précédentes des coefficients de la table associées aux D instants de calcul débutant audit instant de calcul initial de cet intervalle temporel, mais on les ajoute aux D valeurs des coefficients associés aux D instants de calcul débutant à l'instant de calcul initial 25 de l'intervalle temporel suivant, et détermine si la programmation de cette cellule-mémoire peut ou non être déclenchée dans ledit intervalle temporel suivant en comparant la valeur maximale des coefficients de ladite table à ladite fraction de ladite valeur maximale de référence. En effet l'intervalle juste suivant n'est pas forcément le bon. 30 Et dans ce cas on répète les opérations précédentes jusqu'à obtenir un nouvel intervalle temporel au cours duquel la programmation de la cellule-mémoire va pouvoir être déclenchée. Et les D échantillons ne 8 seront alors effectivement ajoutés aux D valeurs précédentes des coefficients de la table associés aux D instants de calcul débutant audit instant de calcul initial de ce nouvel intervalle temporel, que lorsque suffisamment d'intervalles temporels précédents auront été 5 écartés. Et la ou les cellules-mémoire restant à programmer seront soumises au critère de référence comme précisé précédemment. Ladite détermination par simulation comprend avantageusement une détermination séquentielle, cellule-mémoire après cellule-mémoire, selon leur ordonnancement, de la capacité des 10 cellules-mémoire à avoir des programmations déclenchables dans les intervalles temporels désignés, en considérant les intervalles séquentiellement selon leur ordonnancement. Les cellules-mémoire sont par exemple programmables par injection de porteurs chauds. 15 Le dispositif de mémoire peut être du type mémoire FLASH. Chaque cellule-mémoire peut être du type à grille divisée. Le dispositif de mémoire peut être embarqué au sein d'un circuit intégré incorporant par exemple un microcontrôleur. Selon un autre aspect il est proposé un dispositif de mémoire 20 non-volatile, comprenant un plan mémoire comportant des cellules- mémoires, un registre configuré pour stocker le profil de programmation obtenu par le procédé tel que défini ci-avant, et des moyens de programmation configurés pour programmer un groupe de N cellules-mémoire sur ladite fenêtre de programmation en suivant 25 ledit profil de programmation. Selon un mode de réalisation les moyens de programmation sont configurés pour programmer le plan-mémoire par groupe de N cellules-mémoire. Les cellules-mémoire sont par exemple programmables par 30 injection de porteurs chauds. Le dispositif de mémoire peut être du type mémoire FLASH. Chaque cellule-mémoire peut être du type à grille divisée. 9 Le dispositif de mémoire peut être embarqué au sein d'un circuit intégré incorporant par exemple un microcontrôleur. D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de mise 5 en oeuvre et de réalisation, nullement limitatifs et des dessins annexés sur lesquels : - Les figures I à 5 illustrent différents modes de mise en oeuvre et de réalisation de l'invention. Sur la figure I, la référence 1C désigne un circuit intégré 10 incorporant ici un microcontrôleur MC ainsi qu'un dispositif embarqué I de mémoire vive non volatile. Ce dispositif 1 comporte un plan mémoire PM possédant des cellules-mémoire CEL arrangées de façon classique en lignes et en colonnes, ainsi que des moyens de programmation MP configurés pour 15 programmer ces cellules-mémoire, par exemple par groupes de N cellules-mémoire. La structure de ces moyens de programmation est classique et connue en soi. Outre ces moyens, le dispositif de mémoire I comporte 20 également un registre RG configuré pour stocker un profil de programmation PRP dont on reviendra plus en détails ci-après sur la structure. Cela étant, on peut d'ores et déjà noter que ce profil de programmation PRP est déterminé par simulation au sein d'une étape 25 SI. Puis, ce profil de programmation est stocké (étape S2) dans le registre RG, de façon à ce que lors du fonctionnement du circuit intégré et en particulier du dispositif de mémoire, les moyens de programmation MP puissent programmer le plan mémoire PM en 30 utilisant le profil de programmation PRP contenu dans le registre RG. Les cellules-mémoire sont par exemple programmables par injection de porteurs chauds et le dispositif de mémoire peut être du type mémoire FLASH. 10 Le dispositif de mémoire peut être également configuré de telle sorte que chaque cellule-mémoire soit du type à grille divisée. Bien entendu, l'homme du métier saura ajuster la structure des moyens de programmation en fonction de la nature du dispositif de 5 mémoire non volatile. On se réfère maintenant plus particulièrement aux figures 2 à 4 pour illustrer un mode de mise en oeuvre d'une détermination du profil de programmation PRP par simulation. En pratique, comme il va être décrit ci-après, on subdivise une 10 fenêtre de programmation de N cellules-mémoire CEL en M intervalles temporel s Cette fenêtre de programmation a une durée supérieure à la durée de programmation d'une cellule-mémoire. Elle correspond par exemple à une fenêtre de programmation déjà utilisée lors de procédés 15 de programmation classiques. Ainsi à titre indicatif, lorsqu'on souhaite programmer un groupe de 64 cellules-mémoire, on peut choisir comme fenêtre de programmation, celle habituellement utilisée pour la programmation de ces 64 cellules-mémoire par 2 paquets de 32 cellules-mémoire. La durée de la fenêtre de programmation est alors de 20 l'ordre de deux fois la durée de programmation d'une cellule-mémoire (durée d'une impulsion de programmation) Puis, en tenant compte d'un critère de référence dont on reviendra plus en détails ci-après sur le contenu, le profil de programmation va comprendre un nombre maximum de cellules- 25 mémoire dont la programmation va pouvoir être déclenchée simultanément dans chaque intervalle temporel de la fenêtre de programmation. Puis, lors du fonctionnement du circuit intégré et en particulier du dispositif de mémoire 1, celui-ci va être programmé par avalanche 30 (étape S3) c'est-à-dire que l'on va déclencher successivement dans chaque intervalle temporel de la fenêtre de programmation, la programmation du nombre de cellules qui a été déterminé conformément au profil de programmation. 11 Et, ceci va conduire à une diminution significative du pic de courant qui se produisait lors de la programmation classique des N cellules-mémoire, et par conséquent à la possibilité d'utiliser un circuit de pompe de charge de taille réduite. 5 Le nombre M d'intervalles temporels est lié notamment à la précision souhaitée pour obtenir ce résultat. L'homme du métier saura choisir ce nombre M en fonction notamment des applications envisagées et du type de dispositif de mémoire. 10 Comme illustré sur la figure 2, on réalise tout d'abord une cellule-mémoire de référence CELR dans la même technologie que celle des cellules-mémoire CEL du dispositif de mémoire non volatile. Puis, on détermine, typiquement par des mesures sur silicium, une évolution F du courant de programmation de la cellule-mémoire de 15 référence pendant la durée de programmation DP, qui peut être de l'ordre 6 microsecondes. Puis, on échantillonne cette évolution temporelle F en D échantillons F(1)...F(D) (étape 21). Comme on le verra plus en détails ci-après, ces D instants 20 d'échantillonnage correspondent à D instants de calcul. Là encore, le nombre D dépend de la précision souhaitée. A titre indicatif, on pourra choisir D=6000. On détermine également (étape 22) la valeur maximale Vmax du courant de programmation résultant de la programmation classique 25 des N cellules-mémoire de référence par P paquets de N/P cellules- mémoire de référence. Dans cet exemple, N=64 et P=2 Comme indiqué ci-avant, la détermination par simulation des profils de programmation PRP tient compte d'un critère de référence. Et, ce critère de référence est ici qu'à l'issue de cette 30 programmation par intervalles du groupe de N cellules-mémoire, la valeur maximale du courant de programmation ne dépasse pas une fraction de ladite valeur maximale de référence Vmax 12 A titre indicatif mais non limitatif, cette fraction peut être de l'ordre de 0,75 ce qui conduit à une réduction de 25 du pic de courant. On se réfère maintenant plus particulièrement aux figures 3 et 5 4 pour décrire schématiquement un exemple d'algorithme de simulation permettant la détermination du profil de programmation PRP, c'est-à-dire du nombre maximum de cellules-mémoire du groupe de N cellules-mémoire dont la programmation peut être déclenchée dans chacun des M intervalles temporels. 10 Et à cet égard, la décision d'autoriser ou non le déclenchement de la programmation d'une cellule-mémoire courante dans un intervalle temporel, va prendre en compte le courant de programmation et son évolution temporelle résultant d'une programmation d'éventuelle(s) autre (s) cellule(s)-mémoire précédente(s) dans cet 15 intervalle temporel ou dans un intervalle temporel précédent, ainsi que l'évolution temporelle du courant de programmation dans le reste de la fenêtre de programmation qui va résulter du déclenchement de la programmation de cette cellule-mémoire courante, de façon à ce que le critère de référence soit respecté. 20 A cet égard, comme illustré sur la figure 3, on effectue un ordonnancement des cellules-mémoire CEL du groupe de N cellules-mémoire de façon à définir une première cellule-mémoire CELI, une cellule courante CEL(A), la cellule suivante CEL(A+l) et enfin la dernière cellule du groupe CEL(N). 25 On définit également une table de calcul ou « buffer » TB I contenant C coefficients H(1) ..H(C) associés à C instants de calcul. En pratique, C est au moins égal au produit de N par D. On effectue également un ordonnancement des M intervalles temporels TS(1) ..TS(M) 30 Un intervalle temporel TS(i) a une durée correspondant à DTS instants de calcul. Par ailleurs, un intervalle temporel TS(i) débute à un instant de calcul initial E(i) (compté en nombre d'instants de calcul). 13 A titre indicatif, pour N=64, et D=6000, on pourra choisir C=400 000 par exemple. La longueur DTS de chaque intervalle temporel TS (comptée en nombre d'instants de calcul) est inférieure à D. 5 On pourra par exemple prendre des intervalles temporels de 100 ns. On définit également pour les besoins de l'exemple d'algorithme qui va être décrit, une deuxième table de calcul (buffer) TB2 comportant les coefficients G(1) .G(C) 10 Si l'on se réfère maintenant à la figure 4, on voit que dans une étape d'initialisation 40, on considère la première cellule-mémoire (ou premier bit) à programmer (A=1) On considère également le premier intervalle temporel (Hl) et on initialise à zéro les coefficients H(1) H(C) et G(1) . G(C) des 15 tables TB1 et TB2. Dans l'étape 41, on vérifie si A est supérieur à N, c'est-à-dire si l'on a traité toutes les cellules-mémoire du groupe de N cellules-mémoire. Si tel est le cas, alors l'algorithme a pris fin (étape 50). 20 Dans le cas contraire, on copie le contenu de la table TB2 dans la table TB1 et on ajoute les D échantillons de l'évolution temporelle F aux D valeurs des coefficients H(E(i)). H(E(i+D)) de la table TB1 associés aux D instants de calcul débutant à l'instant de calcul initial E(i) de l'intervalle temporel de rang i. 25 Puis, à l'étape 43, on extrait de la table TB1 la valeur maximale Hmax de l'ensemble des C coefficients H(1) H(C) de cette table TB1 On compare ensuite dans l'étape 44 cette valeur Hmax à la fraction de la valeur maximale de référence Vmax, en l'espèce à 3/4 de 30 cette valeur. Si la valeur Hmax est effectivement inférieure à % de Vmax, alors cela signifie que l'on peut effectivement déclencher la programmation de la cellule CEL d'indice A, CEL(A), dans l'intervalle temporel TSi (étape 45). 14 Si l'on associe un compteur à chaque intervalle temporel destiné à comptabiliser le nombre maximum de cellule(s)-mémoire dont la programmation est déclenchable au cours de cet intervalle temporel, on va alors incrémenter de 1 le compteur associé à cet 5 intervalle TSi. Puis, on va effectuer dans l'étape 46 une copie de la table TB1 dans la table TB2 et on va incrémenter l'indice A de 1 (étape 47). Autrement dit, on va alors maintenant examiner si le déclenchement de la programmation de la cellule-mémoire suivante 10 CEL(A+1) dans l'intervalle TSi est possible en ré-exécutant les étapes 42, 43 et 44 Si dans l'étape 44, Hmax reste inférieur à % de Vmax, alors cela signifie que la cellule d'indice A+1, CEL(A+1), peut également avoir un déclenchement de programmation dans l'intervalle TSi 15 Si dans l'étape 44 relative à la cellule CEL(A), Hmax est supérieur ou égal à % de Vmax, alors cela signifie que cette cellule d'indice A ne peut pas avoir un déclenchement de programmation dans l'intervalle TSi. Dans ce cas, on incrémente de l'indice i de 1 (étape 48), et l'on 20 va déterminer en ré-exécutant les étapes 42, 43 et 44 si la cellule- mémoire d'indice A, CEL(A), peut avoir un déclenchement de programmation dans l'intervalle suivant TS(i+l). A cet égard, on remarquera que puisque dans l'étape 42 on effectue une copie de la deuxième table TB2 dans la première table 25 TB1 sans avoir au préalable effectué l'étape 46 (copie de la table TB1 dans la table TB2), on a en fait annulé l'ajout des échantillons F(1) F(D) qui avaient été effectués précédemment et cette fois-ci on ajoute ces échantillons F(1) F(D) aux D valeurs des coefficients H(E(i+1)) H(E(i+1+D)) associés aux D instants de calcul débutant à 30 l'instant de calcul initial E(i+1) de l'intervalle temporel suivant TS(i+1) de rang Hl En général, une cellule-mémoire dont le déclenchement ne peut pas être programmé dans un intervalle peut avoir son déclenchement de programmation dans l'intervalle suivant 15 Cela étant, on pourrait également envisager qu'il faille attendre un ou plusieurs intervalles suivants pour déclencher la programmation de la cellule-mémoire. A la fin de cet algorithme, on connaît donc pour chaque 5 intervalle temporel le nombre maximum de cellules-mémoire dont le déclenchement de programmation est possible au sein de cet intervalle temporel. Et, comme indiqué ci-avant, en fonctionnement, les moyens de programmation programmeront le plan-mémoire par groupes de N 10 cellules-mémoire en suivant ce profil de programmation. A titre d'exemple, la figure 5 illustre une évolution comparée du courant de programmation nécessaire à la programmation de N cellules-mémoire, entre une programmation classique par P paquets de N/P cellules-mémoire et une programmation par avalanche (par 15 intervalle). Sur cette figure 5, la courbe CO illustre l'évolution temporelle du courant de programmation pour une programmation classique sur la fenêtre de programmation FP, de 64 cellules-mémoire par 2 paquets de 32 cellules-mémoire, les 32 cellules-mémoires étant programmées 20 simultanément sur la durée de programmation DP d'une cellule- mémoire (durée de l'impulsion de programmation). On remarque que la courbe CO comporte deux pics de courants PC dont le niveau est égal à 32 fois le niveau d'un pic de courant résultant de la programmation d'une seule cellule-mémoire. 25 La courbe Cl illustre l'évolution temporelle du courant de programmation pour une programmation par avalanche de ces 64 cellules-mémoire sur la même fenêtre de programmation selon le profil de programmation obtenu par l'algorithme décrit par exemple en référence aux figures 3 et 4. 30 On remarque un étalement de la courbe Cl, avec un niveau maximum réduit de 25% par rapport au niveau des pics de courant PC. La fenêtre de programmation FP a une durée supérieure à la durée de programmation DP d'une cellule-mémoire mais plus courte que si l'on avait eu à programmer toutes les cellules-mémoire avec un 16 procédé classique du type de celui décrit dans l'article précité de Bartoli et autres. Ceci est la conséquence du compactage dans le temps des impulsions de programmation des différentes cellules-mémoire résultant du procédé qui vient d'être REVENDICATIONS1. Procédé de programmation d'un groupe de N cellules- mémoire d'un dispositif de mémoire non volatile sur une fenêtre de programmation (FP) ayant une durée supérieure à la durée de programmation (DP) d'une cellule-mémoire, comprenant une subdivision de ladite fenêtre de programmation en M intervalles temporels (TS(i)), M étant supérieur à deux, une détermination par simulation (SI), en tenant compte d'un critère de référence, d'un profil de programmation (PRP) comportant pour chaque intervalle temporel, un nombre maximum de cellules-mémoires dont la programmation peut être déclenchée au sein de cet intervalle temporel, un stockage (52) du profil de programmation dans le dispositif de mémoire (1), et une programmation du dispositif de mémoire sur ladite fenêtre de programmation, par intervalle, en utilisant ledit profil de programmation (PRP). 2. Procédé selon la revendication 1, comprenant une détermination sur un dispositif de mémoire non volatile de référence réalisé dans la même technologie que celle dudit dispositif de mémoire non volatile, d'une évolution temporelle (F) du courant de programmation d'une cellule-mémoire de renée (CELR) du dispositif de mémoire de référence pendant la durée de programmation (DPI, et une détermination (22) de la valeur maximale (Vmax) du courant programmation obtenue sur ladite fenêtre de programmation (FP) lors d'une programmation des N cellules-mémoire de référence par P paquets de NIE' cellules-mémoire de référence, P étant inférieur à M, et ledit critère de référence est qu'à l'issue de la programmation par intervalle du groupe de N cellules-mémoire, la valeur maximale du courant de programmation ne dépasse pas une fraction de ladite valeur maximale de référence (Vmax). 3. Procédé selon la revendication 2, dans lequel ladite fraction est de l'ordre de 0,75. 18 4. Procédé selon la revendication 2 ou 3, dans lequel ladite détermination par simulation (SI) comprend un ordonnancement des cellules-mémoire (CEL(I) CEL(A),...CEL(N)) du groupe de N cellules-mémoires, une définition d'une table de calcul (TH l) 5 comportant C coefficients (H(1),......H(C)) associés à C instants de calcul, un échantillonnage de ladite évolution temporelle (F) en D échantillons (F(1). F(D)) associés à D instants d'échantillonnage correspondant à D instants de calcul, C étant au moins égal au produit de N par D, un ordonnancement des M intervalles temporels 10 (TS(1),...TS(i),...TS(M)), un intervalle temporel de ladite séquence ayant une durée correspondant à DTS instants de calcul et débutant à un instant de calcul initiai (E(i)), DTS étant inférieur à D, et une cellule-mémoire (CEL(A)) du groupe de N cellules-mémoire est considérée comme ayant une programmation déclenchable dans un 15 intervalle temporel, si après ajout (42) des D échantillons aux D valeurs précédentes des coefficients de la table associés aux D instants de calcul débutant audit instant de calcul initial de cet intervalle temporel, la valeur maximale (Hmax) des coefficients de ladite table ne dépasse pas ladite fraction de ladite valeur maximale de référence 20 (Vmax) tandis que si la valeur maximale (Hmax) des coefficients de la table dépasse ladite fraction de ladite valeur maximale de référence, la cellule-mémoire (CEL(A)) est considérée comme n'ayant pas une programMation déclenchable dans cet intervalle temporel. 5. Procédé selon la revendication 4, dans lequel si ladite 25 cellule-mémoire est considérée comme ayant une programmation déclenchable dans ledit intervalle temporel, on examine si la cellule-mémoire suivante (CEL(A-1)) peut avoir une programmation déclenchable dans ce même intervalle temporel en ajoutant à nouveau les D échantillons aux D valeurs précédentes des coefficients de la 30 table associés aux D instants de calcul débutant audit instant de calcul initial de ce même intervalle temporel et en déterminant si la valeur maximale des coefficients de ladite table ne dépasse pas ladite fraction de ladite valeur maximale de référence. 19 6. Procédé selon la revendication 4, dans lequel si, ladite cellule-mémoire (CEL(A)) est considérée comme n' programmation déclenchable dans ledit intervalle t pas une temporel, on n'ajoute pas les D échantillons aux D valeurs précédentes des 5 coefficients de la table associés aux D instants de calcul débutant audit instant de calcul initial de cet intervalle temporel, mais on les ajoute aux D valeurs des coefficients associés aux D instants de calcul débutant à l'instant de calcul initial de l'intervalle temporel suivant, et détermine si la programmation de cette cellule-mémoire peut ou non IO être déclenchée dans ledit intervalle temporel suivant (TS(1+1)) en comparant la valeur maximale des coefficients de ladite table à ladite fraction de ladite valeur maximale de référence. 7. Procédé selon les revendications 4 à 6, dans lequel ladite détermination par simulation (S1) comprend une détermination 15 séquentielle, cellule-mémoire après cellule-mémoire, selon leur ordonnancement, de la capacité des cellules-mémoire à avoir des programmations déclenchables dans les intervalles temporels désignés, en considérant les intervalles séquentiellement selon leur ordonnancement. 20 8. Procédé se l'une des revendications précédentes, dans lequel les cellules-mémoire (CEL) sont programmables par Mie de porteurs chauds. 4. Procédé selon la revendication 8, dans lequel le dispositif de mémoire (1) est du type mémoire FLASH, 10. Procédé selon la revendication 8, dans lequel chaque cellule-mémoire (CEL) est du type à grille divisée. 11. Procédé scion l'une des revendications 8 à 10, dans lequel le dispositif de mémoire est embarqué au sein d'un circuit intégré (IC) incorporant un microcontrôleur (MC). 30 12. Dispositif de mémoire non-volatile, comprenant un plan oire (PM) comportant des cellules-mémoires, un registre (RU) configure pour stocker le profil de programmation (PRP) obtenu par te procédé selon l'une des revendications 1 à 7, et des moyens de programmation (NIP) configurés pour programmer un 20 cellilles-nt aire su ne de .pro Jati (FIN en suivant ledit profil de progran 13. Dispositif selon la revendication 12. dans moyens de programmation (MP) sont configurés pour programmer le plan-mémoire par groupe de N cellules-mémoire. ositif selon la revendication 12 ou 13, dans lequel les -"y- (CH.) sont programmables par injectionde porteurs chauds. 15. Dispositif selsn la reven3ication dans lequel le 10 dispositif de mémoire (1) est du type mémoire FLASH 6. Dispositif selon la revendication 14, dans lequel cellule-mémoire est du type à grille divisée. 17. Dispositif selon l'une des revendications12 à 16> embat ué au sein d'un circuit intégré Ef(_,i incorporantUTI 15 mierocontrôleu ')-