The disclosure relates in general to a programming method for a memory device.
Flash memory is a kind of a non-volatile memory device. By applying programming pulses to memory cells, data is stored into the memory cells.
In order to tighten threshold voltage (Vt) distribution of memory cells, during ISPP (Incremental Step Pulse Programming) operations, a programming step and one or more verifying steps are performed. The programming pulses are used to increase the threshold voltage of the memory cells. In ISPP, a program verify (PV) pulse is applied between the programming pulses, for verifying whether the memory cells are programmed successfully by verifying whether the threshold voltage of the memory cells exceed the programming verifying voltage. By so, ISPP operations may tighten the threshold voltage distribution.
Besides, the flash memory may be suffered by time dependent relaxation issues. The time dependent relaxation issues may cause increase or decrease of the threshold voltage of the memory cells, and thus the memory cells may not pass the verification or the Vt distribution may be wider.
Thus, there needs a programming method for a memory device to tighten Vt distribution of the memory cells.
According to one embodiment, a method for programming a memory device is provided. The method comprises: programming a target memory cell by a programming voltage and a programming code; applying first and second verification voltages on the target memory cell to obtain first and second read data; and determining whether the target memory cell pass an actual programming verification and/or a pseudo programming verification based on the programming code, the first and the second read data.
According to one embodiment, a method for programming a memory device is provided. The method comprises: executing a programming operation and a programming-verification operation on a target memory cell, the programming operation and the programming-verification operation including: applying a plurality of programming voltages, a plurality of first verification voltages and a plurality of second verification voltages on the target memory cell, wherein each of the first verification voltages and each of the second verification voltages is corresponding to a time dependent relaxation; and determining whether a threshold voltage of the target memory cell passes each of the first verification voltages and/or each of the second verification voltages to determine whether the target memory cell is successfully programmed.
In the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, that one or more embodiments may be practiced without these specific details. In other instances, well-known structures and devices are schematically shown in order to simplify the drawing.
Technical terms of the disclosure are based on general definition in the technical field of the disclosure. If the disclosure describes or explains one or some terms, definition of the terms is based on the description or explanation of the disclosure. Each of the disclosed embodiments has one or more technical features. In possible implementation, one skilled person in the art would selectively implement part or all technical features of any embodiment of the disclosure or selectively combine part or all technical features of the embodiments of the disclosure.
In step 105 of
In step 110, the target memory cell is programmed by a programming voltage P(n) and a programming code PgmCode(n), wherein “n” is a positive integer. “n” has an initial value, for example but not limited by, 0. The programming voltage P(n) is shown in
How to determine the programming code is as follows. For example but not limited by, in the initial (first) programming, the target memory cell is programmed by the initial program voltage P(0)(n=0) and the initial programming code PgmCode(0), wherein the program code PgmCode(0) is decided by the user data input in step 105 (i.e. PgmCode(0)=user data).
In step 115, the verification voltages VR2 and VR1 are applied in the target memory cell to read the target memory cell for obtaining two read data.
In step 120, the next program code PgmCode(n+1) may be obtained by:
PgmCode(n+1)=INV(R1)|INV(R2)|PgmCode(n) (or said PgmCode(n+1)={INV(R1) or INV(R2) or PgmCode(n)}).
R1 and R2 refer to data read by applying the verification voltages VR1 and VR2, respectively. INV(R1) and INV(R2) refer to inversion of R1 and R2. If the program code PgmCode(n+1) is logic “1”, then the target memory cell pass the pseudo program verification in the first embodiment of the application. In details, when the program code PgmCode(n) is logic 0, if at least one of the INV(R1) and INV(R2) is logic 1 (i.e. at least one of data read by applying the verification voltages VR1 and VR2 is logic 0), then the target memory cell passes the pseudo program verification. After ISPP, if the threshold voltage of the target memory cell exceeds the smaller of the verification voltages VR1 and VR2, then the target memory cell passes the pseudo program verification.
Besides, in the first embodiment of the application, the verification voltage VR2 reads and/or verifies the target memory cell first, and then the verification voltage VR1 reads and/or verifies the target memory cell later, as shown in the program sequence in
In the first embodiment of the application, after applying the programming voltages to the target memory cell, if the threshold voltage of the target memory cell exceeds the verification voltage VR2 (or said the actual verification voltage), then the target memory cell passes the actual program verification. If the target memory cell passes the actual program verification, the programming operation on the target memory cell is completed in the first embodiment.
Besides, after applying the programming voltage to the target memory cell, if the threshold voltage of the target memory cell exceeds the verification voltage VR1 (or said the pseudo verification voltage) but does not exceed the verification voltage VR2 (or said the actual verification voltage), then the target memory cell passes pseudo program verification but does not pass the actual program verification. In the first embodiment, after applying the programming voltages to the target memory cells, the threshold voltage of the target memory cell exceeds the verification voltage VR1 (or said the pseudo verification voltage). Then, due to the time dependent relaxation issue, the threshold voltage of the target memory cell may be shifted upwards and thus the threshold voltage of the target memory cell is changed to exceed the verification voltage VR2 (or said the actual verification voltage). Therefore, in the first embodiment of the application, when it is decided that the threshold voltage of the target memory cell exceeds the verification voltage VR1 (or said the pseudo verification voltage), it is determined that the target memory cell passes pseudo program verification and the programming operation on the target memory cell is completed.
As described above, in the first embodiment of the application, the programming voltages are not applied to the target memory cell which passes the pseudo program verification and/or the actual program verification.
In step 125, it is determined that whether the applied programming voltage reaches the maximum programming voltage or whether all memory cells under programming pass the program verification. If yes in step 125, then the flow ends. If no in step 125, then the flow proceeds to the step 130 where the programming voltage P(n) is increased as the programming voltage P(n+1) (for example, increased in a fixed step) and the programming code PgmCode(n) is updated as the programming code PgmCode(n+1). Then the flow returns to the step 110 where the target memory cell is programmed by the programming voltage P(n+1) and the programming code PgmCode(n+1).
In details, in step 125, deciding whether the applied programming voltage reaches the maximum programming voltage refers to that whether the applied programming voltage reaches the maximum programming voltage in the programming voltage range.
Also, in step 125, deciding whether all memory cells under programming passes the program verification refers to that if, for example, all memory cell of one page is programmed, then it is determined that whether respective threshold voltages of all memory cells of the page are higher than any one of VR2 or VR1. If respective threshold voltages of all memory cells of the page are higher than any one of VR2 or VR1, then all memory cells of the page pass the program verification and thus the flow ends. If the threshold voltage of at least one of the memory cells of the page is still lower than VR2 and VR1, then the at least one of the memory cells of the page fails to pass the program verification and thus the flow proceeds to perform program and verification on the memory cells which fail to pass the program verification.
In
Further, in step 115 of
Further, in the first embodiment of the application, the difference between the verification voltages VR2 and VR1 may be corresponding to the threshold voltage shift amount caused by the time dependent relaxation issue.
As described above, implementation in
In the first embodiment of the application, by the 1P2V programming operation, the threshold voltage distribution of the memory cells may be tightened.
As shown in
Of course, the programming voltage P(n) is incremental but the verification voltages VR2_A, VR1_A, VR2_B, VR1_B, VR2_C and VR1_C are fixed.
However to determine the programming code is as follows. For example but not limited by, in initial programming, the memory cells are programmed by the programming voltage P(0)(n=0) and the initial programming code PgmCode(0), wherein the programming code PgmCode(0) is determined by the user data input in the step 405.
Then, in step 415, the verification voltages VR2_A and VR1_A are applied to the target memory cell to read data R2_A and R1_A from the target memory cell.
In step 420, the next program code PgmCode(n+1) may be obtained by:
PgmCode(n+1)=INV(R1_A)|INV(R2_A)|PgmCode(n) (or said, PgmCode(n+1)={INV(R1_A) or INV(R2_A) or PgmCode(n)}.
R1_A and R2_A refer to data read by applying the verification voltages VR1_A and VR2_A, respectively. INV(R1_A) and INV(R2_A) refer to inversion of R1_A and R2_A. If the program code PgmCode(n+1) is logic “1”, then the target memory cell pass the pseudo program verification. The symbols R1_B, R2_B, INV(R1_B), INV(R2_B), R1_C, R2_C, INV(R1_C) and INV(R2_C) refer to similar meaning.
Further, in the second embodiment, based on the user data input in the step 405, whether the programming code PgmCode(n+1) obtained in the step 420 is used is determined. That is, if the user data is logic “10” (which means the target memory cell should be programmed as logic “10” (i.e. the range 610 in
The steps 425, 430, 435 and 440 are similar to the steps 415 and 420. Similarly, based on the user data input in the step 405, whether the programming code PgmCode(n+1) obtained in the step 430 is used is determined. That is, if the user data is logic “00” (which means the target memory cell should be programmed as logic “00” (i.e. the range 615 in
Similarly, based on the user data input in the step 405, whether the programming code PgmCode(n+1) obtained in the step 440 is used is determined. That is, if the user data is logic “01” (which means the target memory cell should be programmed as logic “01” (i.e., the range 620 in
Steps 445 and 450 are similar to steps 125 and 130 of
Similarly, in
Further, in steps 415, 425 and 435 of
In the second embodiment of the application, by the 1P2V programming operation, the threshold voltage distribution of the memory cells may be tightened.
As shown in
Of course, the programming voltage P(n) is incremental but the verification voltages VR2_A, VR1_A, VR2_G and VR1_G are fixed.
However to determine the programming code is as follows. For example but not limited by, in initial programming, the memory cells are programmed by the programming voltage P(0)(n=0) and the initial programming code PgmCode(0), wherein the programming code PgmCode(0) is determined by the user data input in the step 705.
Then, in step 715, the verification voltages VR2_i and VR1_i (i=A to G) are applied to the target memory cell to read data R2_i and R1_i from the target memory cell.
In step 720, the next program code PgmCode(n+1) may be obtained by:
PgmCode(n+1)=INV(R1_i)|INV(R2_i)|PgmCode(n) (or said, PgmCode(n+1)={INV(R1_i) or INV(R2_i) or PgmCode(n)}.
R1_i and R2_i refer to data read by applying the verification voltages and VR2_i, respectively. INV(R1_i) and INV(R2_i) refer to inversion of R1_i and R2_i. If the program code PgmCode(n+1) is logic “1”, then the target memory cell pass the pseudo program verification.
Further, in the third embodiment, based on the user data input in the step 705, whether the programming code PgmCode(n+1) obtained in the step 720 is used is determined. That is, for example, if the user data is logic “110” (which means the target memory cell should be programmed as logic “110” (i.e., the range 910 in
In step 725, it is determined whether the parameter “i” reaches upper limit (the upper limit of the parameter “i” is G). If no in step 725, then the parameter “i” is updated in step 730 (that is, if the current parameter “i” is A, then the parameter “i” is updated as B). If yes in step 725, then the flow proceeds to step 735. Steps 735 and 740 are similar to steps 125 and 130.
Similarly, in
Further, in steps 715 of
In the third embodiment of the application, by the 1P2V programming operation, the threshold voltage distribution of the memory cells may be tightened.
Further, the above embodiments also provide performing a programming operation and a program-verification operation on the target memory cell. The programming operation and the programming-verification operation including: applying a plurality of programming voltages P(n), a plurality of first verification voltages (VR1, VR1_A, . . . , VR1_G) and a plurality of second verification voltages (VR2, VR2_A, . . . , VR2_G) on the target memory cell. Details are as described above.
It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments. It is intended that the specification and examples be considered as exemplary only, with a true scope of the disclosure being indicated by the following claims and their equivalents.