Patent ID: 8295096

Claim:
A method of programming a flash memory system including a first memory cell and a second memory cell, the first memory cell including a first transistor associated with a first threshold voltage, the second memory cell including a second transistor associated with a second threshold voltage, the method comprising: reading the first memory cell and the second memory cell to determine a first current associated with at least the first threshold voltage and the second threshold voltage, the first threshold voltage being equal to a first value, the second threshold voltage being equal to a second value; determining if the first current corresponds to a predetermined logic state; if the first current does not correspond to the predetermined logic state, programming the first memory cell and the second memory cell, wherein the programming the first memory cell and the second memory cell includes: changing the first threshold voltage from the first value to a third value; changing the second threshold voltage from the second value to a fourth value; reading the first memory cell and the second memory cell to determine a second current associated with at least the first threshold voltage and the second threshold voltage; determining whether the second current satisfies a predetermined relation with respect to a predetermined current; and if the second current does not satisfy the predetermined relation with respect to the predetermined current, changing the second threshold voltage from a fourth value to a fifth value.