Method for programming of memory cells, in particular of the flash type, and corresponding programming architecture
View Patent ↗A method is described for programming memory cells, in particular of the Flash type. In accordance with the method, a verification is performed with a first parallelism (M) in which a reading is carried out for determining the state of a group of memory cells, a determination is performed of a programming parallelism (np), based on the results of the verification, and a real programming of the memory cells carried out with the programming parallelism (np). An architecture is also described for programming memory cells in particular of the Flash type.
1. A method for programming Flash memory cells comprising:
programming a group of memory cells;
identifying cells within the group that need to be programmed again;
determining a number of cells to be reprogrammed at one time based on the driving capacity of a charge pump for programming said cells;
storing the number of memory cells to be reprogrammed;
grouping the cells according to the relation:
n=I charge_pump/ I cell
wherein:
Icharge_pump is a maximum value of the current which can be supplied by the charge pump, and
Icell is a value of current absorbed by a memory cell during a programming; and
generating a control flag PR_PAGE according to the relation:
PR_PAGE=1 if the number of memory cells to be programmed is lower or equal to the second parallelism; and
PR_PAGE=0 if the number of memory cells to be programmed is higher than the second parallelism;
if PR_PAGE=1, attribution to the programming parallelism of a value corresponding to a value of maximum parallelism; and
if PR_PAGE=0 attribution to the programming parallelism of a value corresponding to a value of minimum parallelism.
2. The programming method of claim 1 , wherein the value of maximum parallelism corresponds to the first parallelism.
3. The programming method of claim 1 , wherein the value of minimum parallelism corresponds to the second parallelism.
4. The programming method of claim 1 , further comprising a determination step of a number of programming pulses according to the relation:
bit_to — pr/n =number of pulses,
the number of pulses being an integer number and the programming step comprising the number of pulses.
5. The programming method of claim 1 , including:
if the number of memory cells to be programmed is higher than the second parallelism (bit_to_pr>n), attributing to the programming parallelism of a value corresponding to half of the value of maximum parallelism (np=M/2);
this relation being consecutively applied up to the exhaustion of the cells to be programmed.
6. The programming method of claim 1 , further comprising storage of a second parallelism indicative of a driving capability of a charge pump for generation of a programming voltage of the cells and a setting step of the second parallelism.
7. The programming method of claim 1 , further comprising storage of a second parallelism indicative of a driving capability of a charge pump for generation of a programming voltage of the cells and a calculation step of the second parallelism by means of comparison of a value of the current absorbed by the memory cells during a programming and/or soft-programming step with a value of reference current.
8. A method for programming Flash memory cells comprising:
programming a group of memory cells;
identifying cells within the group that need to be programmed again;
determining a number of cells to be reprogrammed at one time based on the driving capacity of a charge pump for programming said cells;
including storing the number of memory cells to be reprogrammed;
further comprising:
grouping of the cells according to the relation:
n=I charge_pump/ I cell
wherein:
Icharge_pump is a maximum value of the current which can be supplied by the charge pump, and
Icell is a value of current absorbed by a memory cell during a programming; and
further comprising a determination step of a number of programming pulses according to the relation:
number of cells to be programmed divided by n=number of pulses,
the number of pulses being an integer number and the programming step comprising the number of pulses.