KR20000011610A - 쓰기동작횟수가프로그램검증동작에서줄여질수있는비휘발성반도체메모리및프로그램검증방법 - Google Patents

쓰기동작횟수가프로그램검증동작에서줄여질수있는비휘발성반도체메모리및프로그램검증방법 Download PDF

Info

Publication number
KR20000011610A
KR20000011610A KR1019990027715A KR19990027715A KR20000011610A KR 20000011610 A KR20000011610 A KR 20000011610A KR 1019990027715 A KR1019990027715 A KR 1019990027715A KR 19990027715 A KR19990027715 A KR 19990027715A KR 20000011610 A KR20000011610 A KR 20000011610A
Authority
KR
South Korea
Prior art keywords
data
write
bit data
signal
bit
Prior art date
Application number
KR1019990027715A
Other languages
English (en)
Other versions
KR100336464B1 (ko
Inventor
헤비시마히로후미
Original Assignee
가네꼬 히사시
닛본 덴기 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가네꼬 히사시, 닛본 덴기 가부시끼가이샤 filed Critical 가네꼬 히사시
Publication of KR20000011610A publication Critical patent/KR20000011610A/ko
Application granted granted Critical
Publication of KR100336464B1 publication Critical patent/KR100336464B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells

Abstract

비휘발성반도체메모리는 메모리셀어레이, 비교부, 및 복수개의 쓰기회로들을 구비한다. 메모리셀어레이는 복수개의 비휘발성메모리셀들을 구비한다. 비교부는 메모리셀어레이로부터 읽어낸 복수개의 제 1비트데이터를 포함하는 읽어낸 데이터를 복수개의 제 2비트데이터를 포함하는 기대치데이터와 비트단위로 비교하여, 비교결과들을 표시하는 판단신호를 출력한다. 복수개의 쓰기회로들은 복수개의 제 2비트데이터의 각각을 메모리셀어레이의 일부분에 쓴다. 복수개의 쓰기회로들은 선택적으로 활동적이게 된다. 선택적으로 활동적이게 되는 쓰기회로들의 갯수는 판단신호에 근거하여 가변한다.

Description

쓰기동작횟수가 프로그램검증동작에서 줄여질 수 있는 비휘발성반도체메모리 및 프로그램검증방법{Nonvolatile semiconductor memory and program verification method in which number of write operation can be reduced in program verification operation}
본 발명은 전기적인 쓰기 및 소거 동작이 수행될 수 있는 비휘발성반도체메모리 및 비휘발성반도체메모리의 프로그램검증방법에 관한 것이다. 보다 상세하게는, 본 발명은 프로그램검증동작이 효과적으로 수행될 수 있는 비휘발성반도체메모리 및 프로그램검증방법에 관한 것이다.
전기적인 쓰기 및 소거 동작이 수행될 수 있는, E2PROM 및 플래시메모리와 같은 비휘발성반도체메모리에서, 데이터의 쓰기 및 소거 동작이 데이터의 쓰기 및 소거 동작 이후에 실제로 수행되는 지를 점검하는 것이 필요하다. 이러한 점검동작은 검증이라 불리어진다. 게다가, 데이터가 쓰여지는 때에 수행되는 검증은 프로그램검증이라 불리어지고, 데이터가 소거되는 때에 수행되는 검증은 소거가능 (erasable)검증이라 불리어진다.
기존의 비휘발성반도체메모리를 도 1을 참조하여 설명한다. 도 1에 보인 것처럼, 비휘발성반도체메모리에는 메모리셀어레이(1), 번지버퍼(2), 행디코더(3), 열디코더(4), 감지증폭기(5), 입출력버퍼(6), 비교회로블록(7), 쓰기회로블록(8) 및 제어회로(9)가 제공된다.
메모리셀어레이(1)에서, 메모리셀들은 배열(array)의 형태로 배치된다. 번지버퍼(2)는 외부로부터 보내진 번지신호를 래치하여 행디코더(3) 및 열디코더(4)로 출력한다. 행디코더(3)는 외부로부터 보내진 번지신호로부터 행번지신호를 디코드하여 워드라인을 선택한다. 열디코더(4)는 외부로부터 보내진 번지신호로부터 열번지신호를 디코드하여 데이터라인을 선택한다.
감지증폭기(5)는 메모리셀어레이(1)로부터 데이터라인을 통해 읽어낸 데이터를 증폭시킨다. 입출력버퍼(6)는 데이터버스(6a)로부터 신호를 입력받고 데이터버스(6a)에 신호를 출력한다.
비교회로블록(7)은 메모리셀어레이(1)에 저장된 데이터가 감지증폭기(5)에 의해 증폭된 신호(읽어낸 데이터)와, 데이터버스(6a)로부터 보내진 데이터(기대치데이터)가 입출력버퍼(6)에 의해 증폭된 신호를 비교한다.
쓰기회로블록(8)은, 감지증폭기(5)에 의해 출력되는 신호가 입출력버퍼(6)로부터의 출력신호와 일치하지 않는다면, 그 데이터를 비교회로블록(7)에서의 비교결과로서 메모리셀어레이(1)에 쓴다.
제어회로(9)는 감지증폭기(5), 입출력버퍼(6), 비교회로블록(7), 쓰기회로블록(8) 등을 제어한다.
도 1에 보여진 비휘발성반도체메모리에서의 프로그램검증동작을 도 2에 보여진 흐름도를 참조하여 설명한다.
우선, 쓰기동작이 단계 S0에서 시작된다. 다음으로, 단계 S1에서, 쓰기회로블록(8)의 쓰기회로들이 메모리셀어레이(1)의 메모리셀들에 지금까지 데이터를 쓴 횟수(쓰기횟수)가 계수된다.
예를 들어, 데이터의 길이가 16비트이고 내부버스가 16비트의 폭을 갖는다면, 쓰기회로블록(8)에는 16개의 쓰기회로들이 있게 된다. 그러한 16개 쓰기회로들은 개별적으로 16개의 메모리셀들에 대한 쓰기동작들을 수행한다. 제어회로(9)는 각 쓰기회로에서의 쓰기동작들의 횟수를 카운트한다.
다음으로, 단계 S2에서는, 단계 S1에서 계수된 쓰기동작횟수가 기설정된 최대값에 도달했는 지가 판단된다. 최대값에 도달했다면, 비정상적인 종료가 단계 S4에서 수행된다. 즉, 쓰기동작은 고온전자(hot electron)를 비휘발성반도체메모리의 부동게이트(floating gate) 속으로 주입하여 메모리셀의 트렌지스터의 문턱값을 바꿈으로써 수행된다. 이 경우, 고온전자가 기설정된 횟수만큼 부동게이트 속으로 주입되는 경우에서 조차, 트렌지스터의 문턱값이 기설정된 값에 도달하지 않는다면 이것은 비정상적인 것이다. 그래서, 이 경우는 결함으로 취급된다.
다음으로, 단계 S2에서 쓰기동작횟수가 최대값에 도달하지 않은 것으로 판단되면, 프로그램검증이 단계 S3에서 수행된다. 즉, 비교회로블록(7)은 읽어낸 데이터와 메모리셀에 쓰여져야 할 기대치데이터를 비교한다. 비교회로블록(7)은, 그것들의 둘 다가 비교된 결과로서 서로 일치한다면(통과), 쓰기동작이 정상적으로 완료된 것으로 판단한다. 그런 다음, 쓰기완성이 단계 S5에서 확정(establishment)된다.
그것들의 둘 다가 비교된 결과로서 서로 일치하지 않는다면(실패), 기대치데이터는 단계 S6에서 쓰기회로블록(8)의 쓰기회로들을 사용함으로써 메모리셀어레이 (1)에 쓰여진다. 이 때, 쓰기회로블록(8)의 16개의 쓰기회로들을 위한 파워공급기는 고전압을 가지고, 쓰기동작에소의 전류는 크게 된다. 따라서, 쓰기동작의 전류는 노이즈 또는 열이 유발되어지게 할 것이다. 또한, 내부파워공급기의 전류구동능력(current drive ability)에 대한 제한이 있다. 그러므로, 16개의 쓰기회로들은 데이터를 동일한 시간에 메모리셀들에 쓸 수 없다. 그래서, 쓰기동작은 실제로 각 4비트들(기설정된 값)을 위한 4개의 세션(session)들로 분리되어 수행된다.
다음으로, 쓰기동작횟수는 단계 S1에서 계수되고, 단계 S2 및 그 이후의 단계들은 비슷하게 반복된다.
예를 들어, 도 3에 보인 것처럼, 기존의 비휘발성반도체메모리는, 16비트들 중에서, 오직 4개의 비트들 만이 도 2의 단계 S3에서 실패로 판단된다면, 다음의 문제점들을 갖는다. 즉, 실패횟수(4회)는 기설정된 값 보다 작거나 같다. 그러므로, 실패에 관한 4비트들은, 내부파워공급기의 전류구동능력에 대한 제약 및 잘못된 동작이 쓰기전류흐름들이 고려되는 때의 노이즈발생으로부터 생겨나게 되는 경우에서 조차, 모두 한꺼번에 쓰여질 수 있다. 그럼에도 불구하고, 쓰기동작은 4개의 세션들로 나누어져 수행되어져야 한다. 이것은 쓸모없는 쓰기사이클이 유발되어 쓰기처리시간이 길어지게 만드는 문제가 일어나게 한다.
일본특허출원공개(특개평 5-144277호)에 개시된 기법은 비휘발성반도체메모리를 위해 잘 알려진 것이다. 데이터래치 및 감지증폭기로서 소용되는 CMOS플립플롭은 메모리셀어레이의 비트라인방향의 한 끝단에 제공된다. 그래서, 이 기법은 메모리셀어레이의 기설정된 범위 내의 메모리셀을 위한 단위쓰기시간을 설정하고, 동시에 데이터를 쓰고, 그런 다음 메모리셀이 이 메모리셀의 데이터가 읽어내어진 이후에 불충분한 쓰기 상태로 있게 된다면 다시쓰기(rewrite)동작을 수행하는 검증제어수단을 갖는다. 쓰기검증동작이 수행되는 경우, 논리연산이 메모리셀에서 밖으로 읽어낸 데이터 및 플립플롭에 래치된 쓰기데이터 사이에서 수행된다. 그런 다음, 다시쓰기데이터는 불필요한 쓰기동작이 수행되지 않도록 각 비트 마다 자동으로 설정된다.
본 발명은 기존의 비휘발성반도체메모리 및 프로그램검증방법의 전술한 문제점들을 해결하도록 만들어진 것으로서, 이 발명의 목적은 쓰기동작횟수가 프로그램검증동작에서 감소될 수 있는 비휘발성반도체메모리 및 프로그램검증방법을 제공함에 있다.
그러므로, 본 발명의 목적은 불필요한 쓰기사이클이 제거될 수 있고 이것에 의해서 쓰기시간이 짧아지게 될 수 있는 비휘발성반도체메모리 및 프로그램검증방법을 제공하는 것이다.
도 1은 기존의 비휘발성반도체메모리를 보여주는 블록도,
도 2는 기존의 프로그램검증방법을 나타내는 흐름도,
도 3은 기존의 프로그램검증방법을 이용한 분할쓰기(division write)법을 설명하기 위한 설명도,
도 4는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예를 설명하는, 16비트길이를 갖는 데이터의 비트구성을 보여주는 설명도,
도 5는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서 사용되는 플래그를 정의하는 설명도,
도 6a는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 실패 및 이에 대응하는 플래그 분포를 나타내는 설명도,
도 6b는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 실패 및 이에 대응하는 플래그의 다른 분포를 나타내는 설명도,
도 6c는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 실패 및 이에 대응하는 플래그의 또 다른 분포를 나타내는 설명도,
도 6d는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 실패 및 이에 대응하는 플래그의 또 다른 분포를 나타내는 설명도,
도 6e는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 실패 및 이에 대응하는 플래그의 또 다른 분포를 나타내는 설명도,
도 7은 본 발명의 프로그램검증방법의 실시예를 나타내는 흐름도,
도 8은 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에서, 플래그의 상태, 쓰기절차, 및 분할쓰기동작들의 횟수 사이의 관계를 설명하는 설명도,
도 9a는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에 따른 제어신호의 타이밍을 나타내는 타이밍도,
도 9b는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에 따른 다른 제어신호의 타이밍을 나타내는 타이밍도,
도 9c는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에 따른 또 다른 제어신호의 타이밍을 나타내는 타이밍도,
도 9d는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에 따른 또 다른 제어신호의 타이밍을 나타내는 타이밍도,
도 9e는 본 발명의 비휘발성반도체메모리 및 프로그램검증방법의 실시예에 따른 또 다른 제어신호의 타이밍을 나타내는 타이밍도,
도 10은 본 발명의 비휘발성반도체메모리의 실시예를 보여주는 도면,
도 11은 본 발명의 비휘발성반도체메모리의 실시예의 비교회로블록, 분할쓰기제어회로 및 쓰기회로블록을 더욱 상세하게 설명하는 블록도,
도 12는 본 발명의 비휘발성반도체메모리의 실시예의 플래그발생회로의 동작을 설명하는 흐름도,
도 13a는 본 발명의 비휘발성반도체메모리의 플래그발생회로의 실시예를 보여주는 일부 회로도,
도 13b는 본 발명의 비휘발성반도체메모리의 플래그발생회로의 실시예를 보여주는 다른 일부의 회로도,
도 14a는 본 발명의 비휘발성반도체메모리의 쓰기펄스제어회로의 실시예를 보여주는 일부 회로도, 그리고
도 14b는 본 발명의 비휘발성반도체메모리의 쓰기펄스제어회로의 실시예를 보여주는 다른 일부의 회로도이다.
*도면의 주요부분에 대한 부호의 설명
1 : 메모리셀어레이 2 : 번지버퍼
3 : 행디코더 4 : 열디코더
5 : 감지증폭기 6 : 입출력버퍼
10 : 분할쓰기제어회로 70 : 비교회로블록
80 : 쓰기회로블록 90 : 제어회로
본 발명의 목적을 달성하기 위하여, 비휘발성반도체메모리는, 복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이, 메모리셀어레이로부터 읽어낸 복수개의 제 1비트데이터를 포함하는 읽어낸 데이터와 복수개의 제 2비트데이터를 포함하는 기대치데이터를 비트단위로 비교하여, 비교결과들을 표시하는 판단신호를 출력하는 비교부, 및 복수개의 제 2비트데이터의 각각을 메모리셀어레이의 일부분에 쓰는 복수개의 쓰기회로들을 포함하고, 여기서 복수개의 쓰기회로들은 선택적으로 활동적이게 되고, 선택적으로 활동적이게 되는 상기 쓰기회로들의 갯수는 상기 판단신호에 근거하여 가변한다.
본 발명의 다른 목적을 달성하기 위하여, 비휘발성반도체메모리는, 복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이, 메모리셀어레이로부터 읽어낸 복수개의 제 1비트데이터를 포함하는 읽어낸 데이터와 복수개의 제 2비트데이터를 포함하는 기대치데이터를 비트단위로 비교하여, 비교결과들을 표시하는 판단신호를 출력하는 비교부, 복수개의 제 1비트데이터를 위해 개별적으로 제공되고, 제어신호 및 판단신호에 응답하여, 복수개의 제 2비트데이터의 각각을 메모리셀어레이의 일부분에 쓰는 복수개의 쓰기회로들, 및 판단신호에 응답하여, 제어신호를 복수개의 쓰기회로들의 각각에 출력하는 제어부를 구비한다.
이 경우, 제어부는, 제어신호를 선택된 회로들로서 복수개의 쓰기회로들로부터 선택된 쓰기회로들로 서로 동일한 타이밍들에 출력하고, 선택된 회로들의 갯수를 판단신호에 근거하여 결정한다.
또한 이 경우, 제어부는 그 갯수가 기설정된 값 보다 작거나 같도록 선택된 회로들의 갯수를 결정한다.
게다가 이 경우, 복수개의 쓰기회로들은 복수개의 그룹들로 분류되고, 제어부는 제어신호를 서로 동일한 타이밍들에 복수개 그룹들의 각각에 속한 쓰기회로들에 출력하고, 복수개 그룹들의 각각을 단위로 하여 선택되는 회로들의 갯수를 결정한다.
이 경우, 복수개의 쓰기회로들은 읽어낸 데이터에서의 복수개의 제 1비트데이터의 배치순서(array order)에 근거하여 복수개의 그룹들로 분류되고, 제어부는 판단신호에 근거하여 제 2비트데이터와 일치하지 않는 제 1비트데이터를 실패데이터로서 검출하고, 읽어낸 데이터에서의 실패데이터의 분포를 제 2검출결과로서 검출하여, 선택되는 회로들의 갯수를 제 2검출결과에 근거하여 결정한다.
또한 이 경우, 제어부는 제 2검출결과를 표시하는 복수개의 플래그신호들을 발생하고, 복수개의 발생된 플래그신호들에 근거하여 선택된 회로들의 갯수를 결정한다.
게다가 이 경우, 제어부는 복수개의 플래그신호들을 발생하여 제 2검출결과를 표시하고, 이 복수개의 플래그신호들은, 읽어낸 데이터에서의 제 1비트데이터 모두에 포함된 실패데이터의 갯수가 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 1플래그신호, 읽어낸 데이터에서의 제 1비트데이터 모두의 제 1부분에 포함된 실패데이터의 갯수가 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 2플래그신호, 읽어낸 데이터에서의 제 1비트데이터 모두의 제 1부분과는 다른 제 2부분에 포함된 실패데이터의 갯수가 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 3플래그신호, 읽어낸 데이터에서의 제 1비트데이터 모두의 제 1부분에 포함된 실패데이터의 갯수가 영인 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 4플래그신호, 그리고 읽어낸 데이터에서의 제 1비트데이터 모두의 제 2부분에 포함된 실패데이터의 갯수가 영인 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 5플래그신호를 구비한다.
이 경우, 제어부는, 제 1 내지 제 3플래그신호들의 모두가 제 2레벨에 있는 경우 제어신호를 복수개의 그룹들의 각각으로 서로 다른 타이밍들에 출력하며, 제 1 내지 제 3플래그신호들의 모두가 제 1레벨로 있는 경우 제어신호를 복수개의 그룹들의 각각으로 서로 동일한 타이밍들에 출력하고, 제 4플래그신호가 제 2레벨에 있는 경우 제어신호를 복수개의 그룹들 중에서 제 1부분에 대응하는 그룹들의 각각에 출력하지 않으며, 제 5플래그신호가 제 2레벨에 있는 경우 제어신호를 복수개의 그룹들중에서 제 2부분에 대응하는 그룹들의 각각에 출력하지 않는다.
또한 이 경우, 제어부는 선택된 회로들의 결정된 갯수에 근거하여, 제어신호를 복수개 그룹들의 각각에 출력하는 경우의 타이밍을 결정한다.
게다가 이 경우, 복수개의 제 2비트데이터가 메모리셀어레이의 일부분에 쓰여지는 경우의 단일한 쓰기동작은 하나의 사이클 또는 복수개의 사이클들을 포함하고, 제어부는 선택된 회로들의 결정된 갯수에 근거하여 단일한 쓰기동작에서의 사이클들의 갯수를 결정한다.
본 발명의 또 다른 목적을 달성하기 위하여, 비휘발성반도체메모리의 프로그램검증방법은 (a) 제 1비트데이터를 복수개의 비휘발성메모리셀들의 각각으로부터 읽어내는 단계, (b) 기록하려는 제 2비트데이터를 복수개의 메모리셀들의 각각에 공급하는 단계, (c) 복수개의 제 1비트데이터의 각각이 제 2비트데이터와 일치하는 지를 판단하여 판단된 결과를 발생하는 단계, (d) 제 2비트데이터와 일치하지 않는 제 1비트데이터를 판단된 결과에 근거하여 실패데이터로서 검출하여, 검출된 결과를 발생하는 단계, (e) 쓰기동작의 적어도 일부분으로서, 제 2비트데이터를 검출된 결과에 근거하여 복수개의 메모리셀들의 각각에 기록하고, 여기서 이 쓰기동작은 한 사이클 또는 복수개의 사이클들로 수행되는 단계, 및 (f) 검출된 결과에 근거하여, 단계 (e)가 수행되는 경우의 쓰기동작에 포함된 사이클들의 갯수를 결정하는 단계를 포함한다.
이 경우, 단계 (a)는 복수개의 메모리셀들의 각각으로부터 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고, 단계 (f)는 읽어낸 데이터에서의 실패데이터의 분포를 검출된 결과에 근거하여 제 2검출된 결과로서 검출하여 제 2검출된 결과에 근거하여 사이클들의 갯수를 결정하는 단계를 구비한다.
또한 이 경우, 프로그램검증방법은 (g) 단계 (e)의 쓰기동작이 수행되는 경우의 한 사이클에서 쓰여질 수 있는 제 2비트데이터의 갯수를 M(M은 양의 정수)으로서 설정하는 단계를 더 구비하며, 여기서 단계 (a)는 각각의 메모리셀로부터 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고, 여기서 단계 (f)는 (h) 검출된 결과에 근거하여, N비트의 읽어낸 데이터 의 모두에 대해 실패데이터의 갯수가 M+1을 초과하는 지를 판단하는 단계를 더 포함하고, 여기서 단계 (f)는 단계 (h)의 판단된 결과로서, 실패데이터의 갯수가 M+1을 초과하지 않는 경우, 사이클들의 갯수를 1이 되는 것으로 결정하는 단계를 구비한다.
게다가 이 경우, 단계 (f)는 (i) 각 부분이 P개의 제 1비트데이터에 대응하는 적어도 두 개의 판단부분들을 읽어낸 데이터로 설정하는, 여기서 P는 M의 2배와 동일한, 단계, 및 (j) 검출된 결과에 근거하여, 판단부분들 중의 제 1 및 제 2판단부분들의 각각에 M+1 또는 그 이상의 실패데이터가 있는 지를 판단하는 단계를 더 포함하고, 여기서 단계 (f)는, 단계 (h)의 판단결과로서 M+1 또는 그 이상의 실패데이터가 있는 것으로 판단되는 경우 및 단계 (j)의 판단된 결과로서 제 1 및 제 2판단부분들의 둘 다에 M+1 또는 그 이상의 실패데이터가 없는 경우, 사이클들의 갯수를 2가 되게 결정하는 단계를 구비한다.
이 경우, 단계 (f)는 (k) 검출된 결과에 근거하여, 제 1 및 제 2판단부분들의 각각에서의 실패데이터가 영인 지를 판단하는 단계를 더 포함하고, 여기서 단계 (f)는 단계 (j)의 판단된 결과로서 제 1판단부분에 M+1개 또는 그 이상의 실패데이터가 있는 것으로 판단되는 경우 및 단계 (k)의 판단된 결과로서 제 2판단부분의 실패데이터가 영인 것으로 판단되는 경우, 사이클들의 갯수를 2가 되게 결정하는 단계, 그리고 단계 (j)의 판단된 결과로서 제 1판단부분에 M+1개 또는 그 이상의 실패데이터가 있고 제 2판단부분에 M+1개 또는 그 이상의 실패데이터가 없는 것으로 판단되는 경우 및 단계 (k)의 판단된 결과로서 제 2판단부분의 실패데이터가 영이 아닌 것으로 판단되는 경우, 사이클들의 갯수를 3이 되게 결정하는 단계를 구비한다.
또한 이 경우, 단계 (e)는 제 2비트데이터를 검출된 실패데이터에 대응하는 복수개 메모리셀들의 각각에 쓰는 단계를 구비한다.
게다가 이 경우, 단계 (a)는 각각의 메모리셀로부터 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고, 여기서 프로그램검증방법은, (l) 단계 (e)의 쓰기동작이 수행되는 경우의 한 사이클에 쓰여질 수 있는 제 2비트데이터의 갯수를 M(M은 양의 정수)으로서 설정하는 단계, 및 (m) 복수개의 쓰기부들의 갯수가 N이고 N개의 쓰기부들의 각각이 제 2비트데이터를 각각의 메모리셀에 쓰는 복수개의 쓰기부(write section)들을 제공하는 단계를 더 포함하고, 여기서 단계 (m)은 N개의 쓰기부들이 복수개 그룹들의 각각이 M개의 쓰기부들에 할당되어진 복수개의 그룹들로 분류되도록 N개의 쓰기부들을 제공하는 단계를 구비하고, 여기서 프로그램검증방법은 (n) 복수개 그룹들 중의 제 1하나에 할당되는 M개의 쓰기부들의 각각에 대한 쓰기타이밍을 결정하기 위한 제 1제어신호를 입력하는 단계를 더 구비하고, 여기서 제 1제어신호는 제 1그룹의 M개의 쓰기부들에 공통한다.
이 경우, 프로그램검증방법은, (o) 제 1그룹의 M개의 쓰기부들의 각각에 대응하는 각각의 메모리셀이 실패데이터를 갖는 지를 표시하는 판단신호를, 제 1제어신호에 더하여, 제 1그룹의 각 쓰기부에 입력하는 단계를 더 포함하고, 여기서 제 1그룹의 각 쓰기부는, 제 1제어신호 및 판단신호에 응답하여, 제 2비트데이터를 쓴다.
또한 이 경우, 프로그램검증방법은 (p) 복수개 그룹들 중의 제 2하나의 M개의 쓰기부들의 각각에 대한 쓰기타이밍을 결정하기 위한 제 2제어신호를 입력하는 단계를 더 구비하고, 여기서 제 2제어신호는 제 2그룹의 M개의 쓰기부들에 공통이고, 여기서 단계 (p)는 검출된 결과에 근거하여, 제 2제어신호를 제 1제어신호와 동일한 타이밍 및 제 1제어신호와는 다른 타이밍 중의 하나에 제 2그룹의 각 쓰기부에 입력하는 단계를 구비한다.
게다가 이 경우, 프로그램검증방법은 (q) 검출된 결과에 근거하여, 복수개 그룹들 중의 제 2그룹에서 공통인 제 2제어신호가 제 2그룹의 M개의 쓰기부들의 각각에 입력되는 지를 판단하는 단계를 더 구비한다.
본 발명의 또 다른 하나의 목적을 달성하기 위하여, 비휘발성반도체메모리의 프로그램검증방법은 (a) 복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이를 제공하는 단계, (b) N(N은 양의 정수)비트의 제 1비트데이터를 포함하는 데이터를 메모리셀어레이로부터 읽어내는 단계, (c) N비트의 제 2비트데이터를 포함하는 기대치데이터를 제공하는 단계, (d) 제 1비트데이터를 제 2비트데이터와 비트단위로 비교하여 개개의 비교된 결과들을 표시하는 복수개의 판단신호들을 출력하는, 여기서 복수개의 판단신호들의 갯수는 N인 단계, (e) 복수개의 쓰기회로들을 제공하여 N비트의 제 2비트데이터의 각각을 제어신호에 응답하여 개별적으로 쓰는, 여기서 복수개 쓰기회로들의 갯수는 N인 단계, 및 (f) 복수개의 판단신호들에 응답하여, 제어신호를 N개의 쓰기회로들의 각각에 출력하는 단계를 포함하고, 여기서 단계 (f)는 복수개의 판단신호들에 근거하여, 제어신호가 동시에 출력되어지는 복수개 쓰기회로들의 갯수를 결정하는 단계, 및 이 제어신호를 결정된 갯수에 대응하는 복수개의 쓰기회로들에 동시에 츨력하는 단계를 구비한다.
이 경우, 단계 (f)는 복수개의 판단신호들에 근거하여 제 2비트데이터와 일치하지 않는 제 1비트데이터를 실패데이터로서 검출하는 단계, 및 읽어낸 데이터에서의 실패데이터의 분포를 제 2검출된 결과로서 검출하여 제 2검출된 결과에 근거하여 그 갯수를 결정하는 단계를 구비한다.
본 발명의 가르침들의 보다 완전한 이해는 첨부한 도면들을 참조함으로써 획득되어질 것이고, 이 도면들에서 비슷한 참조번호들은 비슷한 특징들을 나타낸다.
지금 도면들을 참조하여, 본 발명의 여러 바람직한 실시예들을 상세히 설명한다.
우선, 이 실시예의 비휘발성반도체메모리에서 사용되는 16비트의 데이터길이를 갖는 비트구성을 도 4를 참조하여 설명한다.
도 4에 보인 것처럼, 비트구성은 최하위비트(D0)부터 최상위비트(D15)까지의 16비트들을 제공하고, 이 16비트들은 각 4비트마다 (a) 내지 (d)의 단위데이터로 추가로 분할된다. 게다가, 16비트들 모두는 D0부터 D7까지의 하위 8비트들 및 D8부터 D15까지의 상위 8비트들로 분할된다. 또한 이 실시예에서, 쓰기회로들이 한꺼번에 쓸 수 있는 비트들의 갯수는, 기존의 기법과 유사하게, 4비트인 것으로 가정한다.
메모리셀어레이(1)로부터 읽어낸 개개의 비트들(D0 내지 D15)에 대응하는 데이터(읽어낸 신호들)(Dm0 내지 Dm15)는 나중에 설명된 것처럼 개개의 비트들에 대응하는 기대치신호들(Dr0 내지 Dr15)과 비트단위로 비교된다. 이것들이 비교된 결과로서 서로 일치하지 않는 다는 사실은 "실패(fail)"로서 간주된다.
나중에 상세하게 되는 개개의 플래그들의 함의(implication)를 도 5를 참조하여 설명한다. 플래그 F0는 전체 16비트들 중에서 5비트들 또는 그 이상이 실패로 된다면 하이레벨이 되는 플래그이다. 플래그 F0는 전체 16비트들에서의 실패들의 비율을 나타낸다. 플래그 F1은 상위 8비트들 중에서 5비트들 또는 그 이상이 실패로 된다면 하이레벨이 되는 플래그이다. 플래그 F2는 하위 8비트들 중에서 5비트들 또는 그 이상이 실패로 된다면 하이레벨이 되는 플래그이다. 이런 식으로, 개개의 플래그들(F1, F2)은 상위 8비트들 및 하위 8비트들에서의 실패비율들을 나타낸다.
게다가, 플래그 BFUB는 실패가 상위 8비트들에 존재하지 않는다면 하이레벨이 되는 플래그이다. 플래그 BFLB는 실패가 하위 8비트들에 존재하지 않는다면 하이레벨이 되는 플래그이다. 따라서, 플래그 BFUB가 하이레벨이라면 쓰기동작이 상위 8비트들에 대해 수행될 필요가 없고, 비슷하게 플래그 BFLB가 하이레벨이라면 쓰기동작이 하위 8비트들에 대해 수행될 필요가 없음을 이해 할 수 있을 것이다.
전술한 개개의 플래그들의 값들의 상황을 도 6a 내지 도 6e에 보여진 여러 경우들에 대해 설명한다.
도 6a는 실패들의 갯수가 매우 큰 경우를 나타낸다. 이 경우, 단위데이터 (a) 내지 (d)에서의 실패갯수들은 각각 2, 4, 4, 및 2이다. 그러므로, 16비트들 모두에서의 실패갯수는 12이며, 상위 8비트들에서의 실패갯수는 6이고, 하위 8비트들에서의 실패갯수는 6이다. 따라서, 플래그들(F0, F1 및 F2)은 모두 하이레벨(H)이고, 플래그들(BFUB 및 BFLB)은 둘 다가 로우레벨(L)이다.
도 6b에 보여진 경우에서는, 실패가 상위 8비트들에 존재하지 않아 플래그 BFUB는 "H"이다. 단위데이터 (a) 및 (b)에서의 실패갯수들은 각각 3이므로, 플래그 F0는 "H"이며, 플래그 F1은 "L"이고, 플래그 BFLB는 "L"이다.
도 6c에 보여진 경우는, 도 6b의 경우와는 반대로, 실패가 하위 8비트들에 존재하지 않고, 그래서, 플래그 BFLB는 "H"이다. 단위데이터 (c) 및 (d)에서의 실패갯수들은 각각 3이므로, 플래그 F0은 "H", 플래그 F1은 "H", 플래그 F2는 "L", 그리고 플래그 BFUP는 "L"이다.
도 6d에 보인 경우에서는, 4개의 실패들이 단위데이터 (a) 및 단위데이터 (b)를 함께 포함하는 (ab)에 존재한다. 비슷하게, 4개의 실패들이 단위데이터 (c) 및 단위데이터 (d)를 함께 포함하는 (cd)에 존재한다. 그러므로, 플래그 F0은 "H", 플래그 F1은 "L", 플래그 F2는 "L", 플래그 BFUB는 "L", 그리고 플래그 BFLB는 "L"이다. 이 경우, 단일의 쓰기동작이 두 개의 쓰기세션들(사이클들)에서 수행될 수 있다.
도 6e는 16비트들 모두(abcd)의 실패갯수가 4인 경우를 보여준다. 단일쓰기동작이 단일한 쓰기세션(사이클)에서 수행될 수 있다.
이 실시예의 검증방법을, 각각이 플래그 및 실패분포 사이의 관계를 나타내는 도 6a 내지 도 6e에 보여진 설명도들, 도 7에 보인 흐름도, 도 8에 보여진 플래그의 상태, 쓰기절차 및 분할쓰기동작들의 횟수를 보여주는 테이블, 그리고 도 9a 내지 도 9e에 보여진 쓰기타이밍도들을 참조하여 설명한다.
도 7에서의 단계들 S0 내지 S5는 도 2에 보여진 개개의 단계들 S0 내지 S5와 유사하다. 그러므로, 이 단계들에 대한 설명을 생략한다.
단계 S3의 프로그램검증에서 실패한 것으로 판단되면, 도 5를 참조하여 설명된 개개의 플래그들이 단계 S7에서 판단된다.
플래그들(F0, F1 및 F2)이 도 6a에 보인 것처럼 모두 "H"로 되면, 그 플래그는 단계 S8에서 FL1(H,H,H)가 되고, 쓰기절차가 도 8의 경우 (A)에 보여진 것같은 단위데이터의 순서로 (a)→(b)→(c)→(d)의 4개의 쓰기세션들로 분할되어 수행된다. 즉, 양의 펄스신호로 소용되는 제어신호들 Sa 내지 Sd는 도 9a에 보인 것 처럼 Sa, Sb, Sc 및 Sd의 순서로 발생된다. 그러면, 쓰기동작이 4개의 세션들로 분할되어 수행된다. 즉, 단일쓰기동작이 4개의 쓰기세션들(사이클들)에서 수행된다.
다음으로, 플래그들 F0, F1 및 F2가 도 6b에 보인 것처럼 "H", "L" 및 "H"로 되거나, 또는 플래그들 F0, F1 및 F2가 도 6c에 보인 것처럼 "H", "H" 및 "L"로 된다면(단계 S9), 단계 S12에서 플래그(BFUB 또는 BLB)가 "H"로 되는 지가 판단된다. 플래그들(BFUB 및 BLB) 중의 적어도 하나의 플래그가 "H"로 된다면, 쓰기동작이 단계 S15에서 두 개의 세션들로 나누어져 수행된다. 즉, 단일쓰기동작이 2개의 세션들(사이클들)에서 수행된다. 플래그들 BFUB 및 BFLB 둘 다가 "L"로 된다면, 쓰기동작은 단계 S14에서 3개의 세션들로 분할되어 수행된다. 즉, 단일쓰기동작이 3개의 세션들(사이클들)에서 수행된다.
전술의 절차를 지금 설명한다.
도 8의 (B1)의 경우에서는, 플래그들 BFUB 및 BFLB 둘 다가 "L"로 된다. 따라서, 쓰기절차는 (a)→(b)→(cd)이고, 3개의 쓰기세션들로 분할되어 수행된다(단계 S14). 이때, 단일쓰기동작이 3개의 쓰기세션들(사이클들)에서 수행된다. 즉, 플래그 F1은 "L"이 되므로, 상위 8비트들에서의 실패갯수는 4 또는 그 미만이다. 그래서, 단위데이터 (c) 및 (d)는 (cd)로 모아져 단일쓰기세션(사이클)에서 완료된다. 도 9b는 이 시간의 제어신호들(Sa 내지 Sd)을 보여준다. 양의 펄스신호들이 Sa 및 Sb의 순서로 발생된다. 다음으로, 양의 펄스신호들(Sc 및 Sd)은 단위데이터 (c) 및 단위데이터 (d)를 위해 동시에 발생된다.
다음으로, 도 8의 (B2)의 경우에는, 플래그 BFUB가 도 6c에 보인 것처럼 "H"로 된다. 그러므로, 실패가 상위 8비트들에 존재하지 않는다. 따라서, 쓰기절차는 하위 8비트들에 겨냥되어진다. 이때, 쓰기절차는 단계 S15에서 (a)→(b)의 2개의 쓰기세션들로 분리되어 수행된다(도 9c 참조). 단일쓰기동작이 2개의 쓰기세션들(사이클들)에서 수행된다.
유사하게, 도 8의 (C2)의 경우에서는, 플래그 BFLB가 도 6c에 보인 것처럼 "H"로 된다. 그러므로, 실패가 하위 8비트들에 존재하지 않는다. 따라서, 쓰기절차는 상위 8비트들에 겨냥되어진다. 이때, 쓰기절차는 단계 S15에서 (c)→(d)의 2개의 쓰기세션들로 분할되어 수행된다. 단일쓰기동작은 2개의 쓰기세션들(사이클들)에서 수행된다.
다음으로, 플래그들 F0, F1 및 F2가 도 6d에 보여진 것처럼 각각 "H", "L" 및 "L"로 된다면, 그 플래그는 단계 S10에서 FL3(H,L,L)이고, 상위 8비트들 및 하위 8비트들 둘 다에서의 개개의 실패갯수는 4 이하이다. 따라서, 쓰기절차는 도 8의 (D)에 보여진 (ab)→(cd)의 2개의 쓰기세션들로 분리되어 수행된다. 단일쓰기절차는 2개의 쓰기세션들(사이클들)에서 수행된다. 즉, 도 9d에 보인 것처럼, 양의 펄스신호들(Sa, Sb)은 단위데이터 (a) 및 (b)를 위해 동시에 발생된다. 다음으로, 양의 펄스신호들(Sc, Sd)은 단위데이터 (c) 및 (d)를 위해 동시에 발생된다. 그래서, 그 쓰기동작은 2개의 쓰기세션들로 분할되어 수행된다.
다음으로, 플래그들 F0, F1 및 F2의 모두가 도 6e에 보인 것처럼 "L"로 된다면, 그 플래그는 단계 S11에서 FL4(L,L,L)로 된다. 그 쓰기절차는 도 8의 경우 (E)에 보인 것처럼 (abcd)의 단일분할쓰기동작으로 수행된다. 단일쓰기동작은 단일쓰기세션(사이클)로 수행된다. 즉, 도 9e에 보인 것처럼, 양의 펄스신호들은 제어신호들(Sa 내지 Sd)를 위해 동시에 발생되고, 단일분할쓰기동작이 수행된다.
단계들 S13 내지 S16의 실행 이후에, 쓰기동작들의 횟수는 단계 S1에서 계수된다. 이때, 단계 S2에서 및 그 이후에서의 단계들은 비슷하게 반복된다.
전술한 바와 같이, 단일쓰기동작의 단일쓰기세션(사이클)에 동시에 구동될 수 있는 쓰기회로들의 갯수에 대하여 4개의 회로들이라는 제약이 있다. 그 경우에는, 각 플래그가 모든 비트들에서 실패들의 분포를 판단하는데 사용된다. 판단된 결과에 따라서, 단일쓰기세션(사이클)에서의 쓰기범위는 항상 단위데이터 (a), (b), (c) 및 (d) 중의 하나로 제한되지는 않고, 그것들의 단위데이터 (a), (b), (c) 및 (d)가 모이는 (ab) 또는 (abcd) 등으로 변경된다. 게다가, 프로그램검증은 실패가 존재하지 않는 단위데이터에 대한 쓰기사이클을 삭제함으로써 작은 갯수의 쓰기세션들로 수행된다.
즉, 본 발명에 따른 비휘발성반도체메모리 및 프로그램검증방법에서는, 쓸모없는 쓰기사이클은 제거되어 쓰기시간을 짧게 만들 수 있다.
이 실시예의 비휘발성반도체메모리를 도 10 및 도 11을 참조하여 설명한다.
도 10에 보인 것처럼, 이 실시예의 비휘발성반도체메모리에는 메모리셀어레이(1), 번지버퍼(2), 행디코더(3), 열디코더(4), 감지증폭기(5), 입출력버퍼(6), 비교회로블록(70), 쓰기회로블록(80), 제어회로(90) 및 분할쓰기제어회로(10)가 제공된다.
도 10에서, 메모리셀어레이(1)로부터 입출력버퍼(6)까지의 구성요소들은 도 1에 보여진 기존의 비휘발성반도체메모리의 구성요소들과 비슷한 회로동작들을 수행한다.
비교회로블록(70)은 메모리셀어레이(1)에 저장된 데이터가 감지증폭기(5)에 의해 증폭된 신호들(Dm0 내지 Dm15)(읽어낸 신호들, 읽어낸 데이터)을, 데이터버스(6a)로부터 보내진 데이터가 입출력버퍼(6)에 의해 증폭된 신호들(기대치신호들, 기대치데이터)(Dr0 내지 Dr15)과 비교한다. 비교회로블록(70)은 각 비트마다의 비교된 결과를 표시하는 비교데이터(J0 내지 J15)를 분할쓰기제어회로(10)에 비교결과로서 출력한다. 읽어낸 데이터(Dm0)는 최하위비트(D0)에 대응하고, 읽어낸 데이터(Dm15)는 최상위비트(D15)에 대응한다. 기대치데이터(Dr0)는 최하위비트(D0)에 대응하고, 기대치데이터(Dr15)는 최하위비트(D15)에 대응한다. 비교데이터(J0)는 최하위비트(D0)에 대응하는 기대치데이터(Dr0) 및 읽어낸 데이터(Dm0) 사이의 비교된 결과를 보여준다. 비교데이터(J15)는 최상위비트(D15)에 대응하는 기대치데이터(Dr15) 및 읽어낸 데이터(Dm15) 사이의 비교된 결과를 보여준다. 쓰기회로블록(80)은, 비교회로블록(70)에 의한 비교된 결과로, 감지증폭기(5)에 의해 출력된 신호들(읽어낸 신호들)(Dm0 내지 Dm15)이 입출력버퍼(6)로부터의 출력신호들(기대치신호들)(Dr0 내지 Dr15)과 일치하지 않는다면, 그 데이터를 메모리셀어레이 (1)에 쓰기 위하여 쓰기신호들(WR0 내지 WR15)을 메모리셀어레이(1)로 출력한다. 쓰기신호(WR0)는 기대치데이터(Dr0)를 쓰기 위해 의도된 것이고, 쓰기신호(WR15)는 기대치데이터(Dr15)를 쓰기 위해 의도된 것이다.
제어회로(90)는 감지증폭기(5), 입출력버퍼(6), 비교회로블록(70), 쓰기회로블록(80) 등을 제어한다.
분할쓰기제어회로(10)는, 비교회로블록(70)으로부터 입력되는 비교데이터(J0 내지 J15)에 근거하여, 플래그들(F0 내지 F2, BFUB 및 BFLB)을 발생하여 도 9a 내지 도 9e에 보인 것같은 제어신호들(Sa 내지 Sd)을 쓰기회로블록(80)으로 출력시킨다.
도 11은 비교회로블록(70), 쓰기회로블록(80) 및 분할쓰기제어회로(10)의 더 상세한 회로블록도이다. 도 11에 보인 것처럼, 분할쓰기제어회로(10)는 플래그발생회로(10A) 및 쓰기펄스제어회로(10B)를 구비한다.
비교회로블록(70), 플래그발생회로(10A), 쓰기펄스제어회로(10B) 및 쓰기회로블록(80)을 도 11을 참조하여 설명한다.
비교회로블록(70)은 16개의 비교회로들(700 내지 715)을 구비한다. 비교회로들(700 내지 715)은 입출력버퍼(6)를 통해 입력되는 기대치신호들(Dr0 내지 Dr15)과 감지증폭기(5)를 통해 메모리셀어레이(1)로부터 읽어낸 신호들(Dm0 내지 Dm15)을 비교하여 비교결과들을 표시하는 비교데이터(J0 내지 J15)를 출력한다.
플래그발생회로(10A)는 도 5에 보여진 플래그들(F0, F1, F2, BFUB 및 BFLB)을 발생하기 위한 회로이다. 도 12는 플래그발생회로(10A)의 처리절차를 보여준다.
도 12에서, 각 4비트들 마다의 비교데이터(J0 내지 J3, J4 내지 J7, J8 내지 J11, 및 J12 내지 J15)에 포함된 실패들의 갯수들은 단계들 S91 내지 S94에서 계수된다. 이 실패갯수들의 각각은 3비트들의 데이터로서 표현되어지는 0과 4 사이의 임의의 숫자에 대응한다.
다음으로, 비교데이터(J0 내지 J7 및 J8 내지 J15)의 실패갯수들은 단계 S95 및 단계 S96에서 각각 계수된다. 각 실패갯수는 4비트들의 데이터로서 표현되어지는 0과 8 사이의 임의의 숫자에 대응한다.
다음으로, 단계 S97에서, 단계들 S95 및 S96에서 개별적으로 얻어진 계수값들은 더해져서 실패들의 갯수가 계산된다. 이 실패갯수는 5비트들의 계수값(count value)으로 표현되어지는 0과 16 사이의 임의의 숫자에 대응한다. 이어서, 단계 S912에서 이 계수값이 5 이상인 지가 판단된다. 계수값이 5 이상이면 플래그 F0은 "H"로 설정되고, 그것이 4 이하이면 플래그 F0는 "L"로 설정된다.
다음으로, 단계 S95에서 얻어진 계수값이 '0'인 지가 단계 S98에서 판단된다. 이 계수값이 0이면, 플래그 BFLB는 "H"로 설정되고, 이 계수값이 0이 아니면 단계 S99에서 계수값이 5 이상인 지가 판단된다. 이 계수값이 5 이상이면, 플래그 F2는 "H"로 설정되고, 그것이 4 이하이면 플래그 F2는 "L"로 설정된다.
다음으로, 단계 S910에서는 단계 S96에서 얻어진 계수값이 0인 지가 판단된다. 그 계수값이 0이면, 플래그 BFUB는 "H"로 설정되고, 그 계수값이 0이 아니면 단계 S911에서 계수값이 5 이상인 지가 판단된다. 그 계수값이 5 이상이면, 플래그 F1은 "H"로 설정되고, 그것이 4 이하이면 플래그 F1은 "L"로 설정된다.
도 5에 보여진 플래그들은 전술의 절차에 의해 발생된다. 도 13a 및 도 13b는 도 12의 흐름도를 구현한 플래그발생회로(10A)의 실시예를 보여준다. 이 회로에서, 판단신호들(비교데이터)(J0 내지 J15)은 왼쪽으로 입력된다. 이 판단신호들은 반전기, NAND게이트, NOR게이트, ExOR게이트 및 ExNOR게이트가 마련된 조합회로(combination circuit)를 통해 오른쪽으로 전송된다. 그러면, 플래그들 (F0, F1, F2, BFUB 및 BFLB)이 출력된다.
도 11로 되돌아가서, 쓰기펄스제어회로(10B)를 설명한다.
쓰기펄스제어회로(10B)는 플래그발생회로(10A)로부터 플래그들(F0, F1, F2, BFUB 및 BFLB)을 수신하여 도 9a 내지 도 9e에 보여진 펄스신호들(제어신호들)(Sa 내지 Sd)을 쓰기회로블록(80)으로 출력한다. 도 14a 및 도 14b는 쓰기펄스제어회로 (10B)의 실시예를 보여준다. 이 회로에서, 플래그들(F0, F1, F2, BFUB 및 BFLB), 클럭신호(CK) 및 반전재설정신호(/Reset)는 왼쪽으로 입력된다. 이 신호들은 인버터, NAND게이트, OR게이트, NOR게이트, ExNOR게이트 및 플립플롭이 마련된 순차회로(sequential circuit)를 통하여 오른쪽으로 전송된다. 그러면, 제어신호들(Sa, Sb, Sc 및 Sd)이 출력된다.
도 11에 보인 것처럼, 쓰기회로블록(80)은 각 쓰기회로가 16비트들의 각각에 대응하는 16개의 쓰기회로들(800 내지 815)을 가진다. 16개의 쓰기회로들(800 내지 815)은 4개의 그룹들(81 내지 84)에 할당되어지는 16비트들의 배치된 순서에 따라서 각 그룹이 4개의 회로들을 가지게 묶여진다. 제 1그룹(81)은 쓰기회로들(800 내지 803)을 가지며, 제 2그룹(82)은 쓰기회로들(804 내지 807)을 가지며, 제 3그룹(83)은 쓰기회로들(808 내지 811)을 가지고, 제 4그룹(84)은 쓰기회로들(812 내지 815)을 가진다.
쓰기펄스제어회로(10B)에 의해 출력되는 제어신호(Sa)는 제 1그룹(81)의 개개의 쓰기회로들(800 내지 803)에 동시에 입력된다. 개개의 쓰기회로들(800 내지 803)은 제어신호(Sa)를 수신할 때 활동적이게(active) 된다.
비교데이터(J0)가 읽어낸 데이터의 최하위비트(D0)에 대응하는 비트데이터(Dm0)가 기대치신호에 포함된 최하위비트(D0)에 대응하는 비트데이터 (D0)와 일치하지 않음을 표시하면, 비교데이터(J0)를 수신하는 쓰기회로(800)는, 쓰기회로(800)가 제어신호를 수신함에 의해 활동적이게 되는 타이밍에, 쓰기신호(WR0)를 메모리셀로 출력한다. 쓰기신호(WR0)는 비트데이터(Dr0)를 메모리셀에 쓰도록 하는 신호이다.
비슷하게, 제어신호(Sb)는 제 2그룹(82)의 개개의 쓰기회로들(804 내지 807)에 동시에 입력된다. 제어신호(Sc)는 제 3그룹(83)의 개개의 쓰기회로들(808 내지 811)에 동시에 입력된다. 그리고, 제어신호(Sd)는 제 4그룹(84)의 개개의 쓰기회로들(812 내지 815)에 동시에 입력된다.
또한, 쓰기회로(800)는 비교회로(700)로부터 비교데이터(J0)를 수신한다. 쓰기회로(801)는 비교회로(701)로부터 비교데이터(J1)를 수신한다. 그리고, 쓰기회로 (802)는 비교회로(702)로부터 비교데이터(J2)를 수신한다.
수신된 비교데이터(J0)가 기대치신호(Dr0) 및 읽어낸 신호(Dm0)가 서로 일치함을 표시한다면, 쓰기회로(800)는, 이것의 출력부가 높은 임피던스를 가지므로, 쓰기신호(WR0)를 출력하지 않는다. 따라서, 기대치신호(Dr0)는 이 때에는, 최하위비트(D0)에 대응하는 메모리셀에 결코 새로이 쓰여지지 않는다.
수신된 비교데이터(J1)가 기대치신호(Dr1) 및 읽어낸 신호(Dm1)가 서로 일치함을 표시한다면, 쓰기회로(801)는, 이것의 출력부가 높은 임피던스를 가지므로, 쓰기신호(WR1)를 출력하지 않는다. 따라서, 기대치신호(Dr1)는 이 때에는, 최하위비트(D0)에 인접하는 비트(D1)에 대응하는 메모리셀에 결코 새로이 쓰여지지 않는다.
비슷한 동작이 쓰기회로들(802, 803)에서 수행된다.
한편, 수신된 비교데이터(J0)가 기대치신호(Dr0) 및 읽어낸 신호(Dm0)가 서로 일치하지 않음을 표시한다면, 쓰기회로(800)는 기대치신호(Dr0)를 다시 증폭하여, 도 9a 내지 도 9e의 심볼(Sa)에 의해 보여진 타이밍에 따라서, 쓰기신호(WR0)를 최하위비트(D0)에 대응하는 메모리셀어레이(1)의 일부분에 출력한다. 따라서, 기대치신호 (Dr0)는 메모리셀어레이(1)에 쓰여진다.
수신된 비교데이터(J1)가 기대치신호(Dr1) 및 읽어낸 신호(Dm1)가 서로 일치하지 않음을 표시한다면, 쓰기회로(801)는 기대치신호(Dr1)를 다시 증폭하여, 도 9a 내지 도 9e의 심볼(Sa)에 의해 보여진 타이밍에 따라서, 쓰기신호(WR1)를 최하위비트(D0)에 인접하는 비트(D1)에 대응하는 메모리셀어레이(1)의 일부분에 출력한다. 따라서, 기대치신호(Dr1)는 메모리셀어레이(1)에 쓰여진다.
비슷한 동작이 쓰기회로들(802, 803)에서 수행된다.
비슷하게, 개개의 비교회로들(704 내지 707, 708 내지 711, 및 712 내지 715)로부터의 비교데이터(J4 내지 J7, J8 내지 J11, 및 J12 내지 J15)는 쓰기회로들(804 내지 807, 808 내지 811, 및 812 내지 815)에 개별적으로 입력된다. 입력된 비교데이터(J4 내지 J7, J8 내지 J11, 및 J12 내지 J15)가 기대치신호들(Dr4 내지 Dr7, Dr8 내지 Dr11, 및 Dr12 내지 Dr15)가 읽어낸 신호들(Dm4 내지 Dm7, Dm8 내지 Dm11, 및 Dm12 내지 Dm15)과 개별적으로 일치함을 표시한다면, 쓰기회로들(804 내지 807, 808 내지 811, 및 812 내지 815)은, 이것들의 출력부들이 높은 임피던스들을 가지므로, 쓰기신호들(WR4 내지 WR7, WR8 내지 WR11, 및 WR12 내지 WR15)을 개별적으로 출력하지 않는다.
한편, 입력된 비교데이터(J4 내지 J7, J8 내지 J11, 및 J12 내지 J15)가 기대치신호들(Dr4 내지 Dr7, Dr8 내지 Dr11, 및 Dr12 내지 Dr15)이 읽어낸 신호들(Dm4 내지 Dm7, Dm8 내지 Dm11, 및 Dm12 내지 Dm15)과 개별적으로 일치하지 않음을 표시한다면, 쓰기회로들(804 내지 807, 808 내지 811, 및 812 내지 815)은, 다시 기대치신호들(Dr4 내지 Dr7, Dr8 내지 Dr11, 및 Dr12 내지 Dr15)을 증폭하여 도 9a 내지 도 9e의 심볼들(Sb 내지 Sd)에 의해 보여진 타이밍들에 따라서, 쓰기신호들(WR4 내지 WR7, WR8 내지 WR11, 및 WR12 내지 WR15)을 출력한다. 따라서, 기대치신호들(Dr4 내지 Dr7, Dr8 내지 Dr11, 및 Dr12 내지 Dr15)이 메모리셀어레이(1)에 쓰여진다.
전술한 바와 같이, 이 실시예에 따른 비휘발성반도체메모리는 플래그발생회로(10A) 및 쓰기펄스제어회로(10B)가 제공된 분할쓰기제어회로(10)을 가진다. 따라서, 이 비휘발성반도체메모리는 플래그들(F0, F1, F2, BFUB, BFLB)을 모든 비트들에 포함된 실패들의 분포에 따라서 발생하여 이러한 플래그들(F0, F1, F2, BFUB, BFLB)에 근거하여 제어신호들(Sa 내지 Sd)을 발생시킨다. 이 비휘발성반도체메모리는 비교신호들(데이터)(J0 내지 J15) 및 제어신호들(Sa 내지 Sd)에 근거하여 쓰기회로들(800 내지 815)을 제어한다. 이 비휘발성반도체메모리에서, 쓰기단위(쓰기범위)는 실패들의 분포에 따라서 (a), (b), (abcd) 등과 같은 단위로 변경된다. 그래서, 분할쓰기세션들의 갯수를 줄이고 이것에 의하여 쓸모없는 쓰기사이클을 제거하는 것이 가능하다. 따라서, 프로그램검증이 작은 갯수의 쓰기세션들로 수행될 수 있다.
예를 들면, 도 3의 경우에, 도 1 및 도 2의 기존의 예는 4개의 쓰기세션들을 필요로 한다. 그러나, 이 실시예는, 도 3의 경우에, 쓰기동작을 단일쓰기세션으로 완료할 수 있다.
16비트 길이를 갖는 데이터의 경우가 전술한 실시예에서 설명되었다. 그러나, 16비트의 길이로 제한되는 것은 아니며, 다른 비트길이를 갖는 데이터에 비슷하게 적용할 수 있다. 예를 들면, 4비트가 단위데이터(한 번에 쓰여질 수 있는 비트들의 갯수)로 정해지고 데이터의 길이가 24비트라 하면, 플래그는 24개의 비트들이 8비트들을 단위로 하는 상위비트(판단부분), 중위(middle order)비트 (판단부분), 및 하위비트(판단부분)로 분류되게 발생된다.
상술한 바와 같이, 본 발명의 비휘발성반도체메모리 및 프로그램검증방법에 의하면, 모든 비트들에 포함된 실패들의 분포에 따라서 플래그들 및 제어신호들을 발생한 다음 쓰기단위의 비트구성을 변경하고 이것에 의하여 쓸모없는 쓰기사이클을 제거하고 그 결과로 쓰기동작의 시간을 짧게 만드는 것이 가능하다.
본 발명에 따른 비휘발성반도체메모리 및 프로그램검증방법은 실패들의 갯수가 더 작게 되고 실패들의 분포가 크게 치우쳐지게 되는(균형이 잡히지 않게 되는) 중요한 효과를 제공한다.

Claims (23)

  1. 비휘발성반도체메모리에 있어서,
    복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이;
    상기 메모리셀어레이로부터 읽어낸 복수개의 제 1비트데이터를 포함하는 읽어낸 데이터와 복수개의 제 2비트데이터를 포함하는 기대치데이터를 비트단위로 비교하여, 비교결과들을 표시하는 판단신호를 출력하는 비교부; 및
    상기 복수개의 제 2비트데이터의 각각을 메모리셀어레이의 일부분에 쓰는 복수개의 쓰기회로들을 포함하고,
    여기서 상기 복수개의 쓰기회로들은 선택적으로 활동적(active)이게 되고, 선택적으로 활동적이게 되는 상기 쓰기회로들의 갯수는 상기 판단신호에 근거하여 가변하는 비휘발성반도체메모리.
  2. 비휘발성반도체메모리에 있어서,
    복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이;
    상기 메모리셀어레이로부터 읽어낸 복수개의 제 1비트데이터를 포함하는 읽어낸 데이터와 복수개의 제 2비트데이터를 포함하는 기대치데이터를 비트단위로 비교하여, 비교결과들을 표시하는 판단신호를 출력하는 비교부;
    상기 복수개의 제 1비트데이터를 위해 개별적으로 제공되고, 제어신호 및 상기 판단신호에 응답하여, 상기 복수개의 제 2비트데이터의 각각을 상기 메모리셀어레이의 일부분에 쓰는 복수개의 쓰기회로들; 및
    상기 판단신호에 응답하여, 상기 제어신호를 상기 복수개의 쓰기회로들의 각각에 출력하는 제어부를 포함하는 비휘발성반도체메모리.
  3. 제 2항에 있어서, 상기 제어부는 상기 제어신호를 선택된 회로들로서 상기 복수개의 쓰기회로들로부터 선택된 쓰기회로들로 서로 동일한 타이밍들에 출력하고, 상기 선택된 회로들의 갯수를 판단신호에 근거하여 결정하는 비휘발성반도체메모리.
  4. 제 3항에 있어서, 상기 제어부는 그 갯수가 기설정된 값 보다 작거나 같도록 상기 선택된 회로들의 상기 갯수를 결정하는 비휘발성반도체메모리.
  5. 제 3항 또는 제 4항에 있어서, 상기 복수개의 쓰기회로들은 복수개의 그룹들로 분류되고,
    상기 제어부는 상기 제어신호를 서로 동일한 타이밍들에 상기 복수개 그룹들의 각각에 속한 상기 쓰기회로들로 출력하고, 상기 복수개 그룹들의 각각을 단위로 하여 선택된 회로들의 상기 갯수를 결정하는 비휘발성반도체메모리.
  6. 제 5항에 있어서, 상기 복수개의 쓰기회로들은, 상기 읽어낸 데이터에서의 상기 복수개 제 1비트데이터의 배치순서에 근거하여, 상기 복수개의 그룹들로 분류되고,
    상기 제어부는, 상기 판단신호에 근거하여 상기 제 2비트데이터와 일치하지 않는 상기 제 1비트데이터를 실패데이터로서 검출하고 상기 읽어낸 데이터에서의 상기 실패데이터의 분포를 제 2검출결과로서 검출하여, 선택된 회로들의 상기 갯수를 상기 제 2검출결과에 근거하여 결정하는 비휘발성반도체메모리.
  7. 제 6항에 있어서, 상기 제어부는 복수개의 플래그신호들을 발생하여 상기 제 2검출결과를 표시하고, 선택된 회로들의 상기 갯수를 상기 복수개의 발생된 플래그신호들에 근거하여 결정하는 비휘발성반도체메모리.
  8. 제 6항에 있어서, 상기 제어부는 복수개의 플래그신호들을 발생하여 상기 제 2검출결과를 표시하고,
    상기 복수개의 플래그신호들은,
    상기 읽어낸 데이터에서의 상기 제 1비트데이터의 모두에 포함된 상기 실패데이터의 갯수가 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 1플래그신호;
    상기 읽어낸 데이터에서의 상기 제 1비트데이터 모두의 제 1부분에 포함된 실패데이터의 상기 갯수가 상기 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 2플래그신호;
    상기 읽어낸 데이터에서의 상기 제 1비트데이터 모두의 상기 제 1부분과는 다른 제 2부분에 포함된 실패데이터의 상기 갯수가 상기 기설정된 값을 초과하는 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 3플래그신호;
    상기 읽어낸 데이터에서의 상기 제 1비트데이터 모두의 상기 제 1부분에 포함된 실패데이터의 상기 갯수가 영인 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 4플래그신호; 및
    상기 읽어낸 데이터에서의 상기 제 1비트데이터 모두의 상기 제 2부분에 포함된 실패데이터의 상기 갯수가 영인 경우, 자신의 신호레벨을 제 1레벨로부터 제 2레벨로 변경하는 제 5플래그신호를 구비하는 비휘발성반도체메모리.
  9. 제 8항에 있어서, 상기 제어부는,
    상기 제 1 내지 제 3플래그신호들의 모두가 상기 제 2레벨에 있는 경우, 상기 제어신호를 상기 복수개 그룹들의 각각으로 서로 다른 타이밍들에 출력하며;
    상기 제 1 내지 제 3플래그신호들의 모두가 상기 제 1레벨로 있는 경우, 상기 제어신호를 상기 복수개의 그룹들의 각각으로 서로 동일한 타이밍들에 출력하며;
    상기 제 4플래그신호가 상기 제 2레벨에 있는 경우, 상기 제어신호를 상기 복수개의 그룹들 중에서 상기 제 1부분에 대응하는 그룹들의 각각에 출력하지 않으며; 그리고
    상기 제 5플래그신호가 상기 제 2레벨에 있는 경우, 상기 제어신호를 상기 복수개의 그룹들 중에서 상기 제 2부분에 대응하는 그룹들의 각각에 출력하지 않는 비휘발성반도체메모리.
  10. 제 5항에 있어서, 상기 제어부는 선택된 회로들의 상기 결정된 갯수에 근거하여, 상기 제어신호를 상기 복수개 그룹들의 각각에 출력하는 타이밍을 결정하는 비휘발성반도체메모리.
  11. 제 3항 또는 제 4항에 있어서, 상기 복수개의 제 2비트데이터가 상기 메모리셀어레이의 상기 일부분에 쓰여지는 경우의 단일쓰기동작은, 하나의 사이클과 복수개의 사이클들 중의 어느 하나를 구비하고,
    상기 제어부는 선택된 회로들의 상기 결정된 갯수에 근거하여, 상기 단일쓰기동작에서의 상기 사이클들의 갯수를 결정하는 비휘발성반도체메모리.
  12. 비휘발성반도체메모리의 프로그램검증방법에 있어서,
    (a) 제 1비트데이터를 복수개의 비휘발성메모리셀들의 각각으로부터 읽어내는 단계;
    (b) 기록하려는 제 2비트데이터를 상기 복수개 메모리셀들의 각각에 공급하는 단계;
    (c) 복수개의 상기 제 1비트데이터의 각각이 상기 제 2비트데이터와 일치하는 지를 판단하여 판단된 결과를 발생하는 단계;
    (d) 상기 제 2비트데이터와 일치하지 않는 상기 제 1비트데이터를 상기 판단된 결과에 근거하여 실패데이터로서 검출하여 검출된 결과를 발생하는 단계;
    (e) 쓰기동작의 적어도 일부분으로서, 상기 제 2비트데이터를 상기 검출된 결과에 근거하여 상기 복수개 메모리셀들의 각각에 기록하고, 여기서 상기 쓰기동작은 한 사이클 또는 복수개의 사이클들 중의 어느 하나로 수행되는 단계; 및
    (f) 상기 검출된 결과에 근거하여, 상기 단계 (e)가 수행되는 경우의 상기 쓰기동작에 포함된 상기 사이클들의 갯수를 결정하는 단계를 포함하는 프로그램검증방법.
  13. 제 12항에 있어서, 상기 단계 (a)는 상기 복수개 메모리셀들의 각각으로부터 상기 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고,
    상기 단계 (f)는 상기 읽어낸 데이터에서의 상기 실패데이터의 분포를 상기 검출된 결과에 근거하여 제 2검출된 결과로서 검출하여 상기 제 2검출된 결과에 근거하여 사이클들의 상기 갯수를 결정하는 단계를 구비하는 프로그램검증방법.
  14. 제 12항 또는 제 13항에 있어서,
    (g) 상기 단계 (e)의 상기 쓰기동작이 수행되는 경우의 상기 한 사이클에서 쓰여질 수 있는 상기 제 2비트데이터의 갯수를 M(M은 양의 정수)으로서 설정하는 단계를 더 포함하며,
    여기서 상기 단계 (a)는 상기 각각의 메모리셀로부터 상기 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고,
    여기서 상기 단계 (f)는,
    (h) 상기 검출된 결과에 근거하여, 상기 N비트의 상기 읽어낸 데이터의 모두에 대해 상기 실패데이터의 갯수가 M+1을 초과하는 지를 판단하는 단계를 더 포함하고,
    여기서 상기 단계 (f)는 상기 단계 (h)의 판단된 결과로, 실패데이터의 갯수가 상기 M+1을 초과하지 않는 경우, 사이클들의 상기 갯수를 1이 되는 것으로 결정하는 단계를 구비하는 프로그램검증방법.
  15. 제 14항에 있어서, 상기 단계 (f)는
    (i) 각 부분이 P개의 상기 제 1비트데이터에 대응하는 적어도 두 개의 판단부분들을 상기 읽어낸 데이터로 설정하는, 여기서 상기 P는 M의 2배와 동일한, 단계; 및
    (j) 상기 검출된 결과에 근거하여, 상기 판단부분들 중의 제 1 및 제 2판단부분들의 각각에 상기 M+1개 이상의 상기 실패데이터가 있는 지를 판단하는 단계를 더 포함하고,
    여기서 상기 단계 (f)는 상기 단계 (h)의 상기 판단결과로서 상기 M+1개 이상의 상기 실패데이터가 있는 것으로 판단되는 경우, 및 상기 단계 (j)의 판단된 결과로서 상기 제 1 및 제 2판단부분들의 둘 다에 상기 M+1개 이상의 상기 실패데이터가 없는 경우, 사이클들의 상기 갯수를 2가 되게 결정하는 단계를 구비하는 프로그램검증방법.
  16. 제 15항에 있어서, 상기 단계 (f)는
    (k) 상기 검출된 결과에 근거하여, 상기 제 1 및 제 2판단부분들의 각각에서의 상기 실패데이터가 영인 지를 판단하는 단계를 더 포함하고,
    여기서 상기 단계 (f)는, 상기 단계 (j)의 상기 판단된 결과로서 상기 제 1판단부분에 상기 M+1개 이상의 상기 실패데이터가 있는 것으로 판단되는 경우, 및 상기 단계 (k)의 판단된 결과로서 상기 제 2판단부분의 실패데이터가 영인 것으로 판단되는 경우, 사이클들의 상기 갯수를 2가 되게 결정하는 단계, 및
    상기 단계 (j)의 상기 판단된 결과로서 상기 제 1판단부분에 상기 M+1개 이상의 상기 실패데이터가 있고 상기 제 2판단부분에 상기 M+1개 이상의 상기 실패데이터가 없는 것으로 판단되는 경우, 및 상기 단계 (k)의 상기 판단된 결과로서 상기 제 2판단부분의 상기 실패데이터가 영이 아닌 것으로 판단되는 경우, 사이클들의 상기 갯수를 3이 되게 결정하는 단계를 구비하는 프로그램검증방법.
  17. 제 12항 또는 제 13항에 있어서, 상기 단계 (e)는 상기 제 2비트데이터를 상기 검출된 실패데이터에 대응하는 상기 복수개 메모리셀들의 각각에 쓰는 단계를 구비하는 프로그램검증방법.
  18. 제 12항 또는 제 13항에 있어서, 상기 단계 (a)는 상기 각각의 메모리셀로부터 상기 제 1비트데이터를 읽어내어 N(N은 양의 정수)비트의 읽어낸 데이터를 형성하는 단계를 구비하고,
    여기서 프로그램검증방법은,
    (l) 상기 단계 (e)의 상기 쓰기동작이 수행되는 경우의 상기 한 사이클에 쓰여질 수 있는 상기 제 2비트데이터의 갯수를 M(M은 양의 정수)으로서 설정하는 단계; 및
    (m) 복수개의 쓰기부들의 갯수가 상기 N이고 상기 N개 쓰기부들의 각각이 상기 제 2비트데이터를 상기 각각의 메모리셀에 쓰는 복수개의 쓰기부들을 제공하는 단계를 더 포함하고,
    여기서 상기 단계 (m)은 상기 N개의 쓰기부들이 복수개 그룹들의 각각이 상기 M개의 쓰기부들에 할당되어진 복수개의 그룹들로 분류되도록 상기 N개의 쓰기부들을 제공하는 단계를 구비하고,
    여기서 상기 프로그램검증방법은
    (n) 상기 복수개 그룹들 중의 제 1그룹에 할당되는 상기 M개 쓰기부들의 각각에 대한 쓰기타이밍을 결정하기 위한 제 1제어신호를 입력하는, 여기서 상기 제 1제어신호는 상기 제 1그룹의 상기 M개의 쓰기부들에 공통하는, 단계를 더 포함하는 프로그램검증방법.
  19. 제 18항에 있어서,
    (o) 상기 제 1그룹의 상기 M개 쓰기부들의 각각에 대응하는 상기 각각의 메모리셀이 실패데이터를 갖는 지를 표시하는 판단신호를, 상기 제 1제어신호에 더하여, 상기 제 1그룹의 상기 각 쓰기부에 입력하는 단계를 더 포함하고,
    여기서 상기 제 1그룹의 상기 각 쓰기부는, 상기 제 1제어신호 및 상기 판단신호에 응답하여, 상기 제 2비트데이터를 쓰는 프로그램검증방법.
  20. 제 18항에 있어서,
    (p) 상기 복수개 그룹들 중의 제 2그룹의 상기 M개 쓰기부들의 각각에 대한 쓰기타이밍을 결정하기 위한 제 2제어신호를 입력하는, 여기서 상기 제 2제어신호는 상기 제 2그룹의 상기 M개 쓰기부들에 공통인, 단계를 더 포함하고,
    여기서 상기 단계 (p)는, 상기 검출된 결과에 근거하여, 상기 제 2제어신호를 상기 제 1제어신호와 동일한 타이밍 및 상기 제 1제어신호와는 다른 타이밍 중의 하나에 상기 제 2그룹의 상기 각 쓰기부에 입력하는 단계를 구비하는 프로그램검증방법.
  21. 제 18항에 있어서,
    (q) 상기 검출된 결과에 근거하여, 상기 복수개 그룹들 중의 제 2그룹에서 공통인 제 2제어신호가 상기 제 2그룹의 상기 M개 쓰기부들의 각각에 입력되는 지를 판단하는 단계를 더 포함하는 프로그램검증방법.
  22. 비휘발성반도체메모리의 프로그램검증방법에 있어서,
    (a) 복수개의 비휘발성메모리셀들을 구비한 메모리셀어레이를 제공하는 단계;
    (b) N(N은 양의 정수)비트의 제 1비트데이터를 포함하는 데이터를 메모리셀어레이로부터 읽어내는 단계;
    (c) 상기 N비트의 제 2비트데이터를 포함하는 기대치데이터를 제공하는 단계;
    (d) 상기 제 1비트데이터를 상기 제 2비트데이터와 비트단위로 비교하여 개개의 비교된 결과들을 표시하는 복수개의 판단신호들을 출력하는, 여기서 상기 복수개의 판단신호들의 갯수는 상기 N인, 단계;
    (e) 복수개의 쓰기회로들을 제공하여 상기 N비트의 상기 제 2비트데이터의 각각을 제어신호에 응답하여 개별적으로 쓰는, 여기서 상기 복수개 쓰기회로들의 갯수는 상기 N인, 단계; 및
    (f) 상기 복수개의 판단신호들에 응답하여, 상기 제어신호를 상기 N개 쓰기회로들의 각각에 출력하는 단계를 포함하고,
    여기서 상기 단계 (f)는, 상기 복수개의 판단신호들에 근거하여, 상기 제어신호가 동시에 출력되어지는 상기 복수개 쓰기회로들의 갯수를 결정하는 단계, 및 상기 제어신호를 상기 결정된 갯수에 대응하는 상기 복수개의 쓰기회로들에 동시에 츨력하는 단계를 구비한 프로그램검증방법.
  23. 제 22항에 있어서, 상기 단계 (f)는 상기 복수개의 판단신호들에 근거하여 상기 제 2비트데이터와 일치하지 않는 상기 제 1비트데이터를 실패데이터로서 검출하는 단계, 및 상기 읽어낸 데이터에서의 실패데이터의 분포를 제 2검출된 결과로서 검출하여 상기 제 2검출된 결과에 근거하여 상기 갯수를 결정하는 단계를 구비한 프로그램검증방법.
KR1019990027715A 1998-07-24 1999-07-09 쓰기동작횟수가 프로그램검증동작에서 줄여질 수 있는 비휘발성반도체메모리 및 프로그램검증방법 KR100336464B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP20909498A JP3138688B2 (ja) 1998-07-24 1998-07-24 不揮発性半導体記憶装置及びプログラムベリファイ方法
JP10-209094 1998-07-24

Publications (2)

Publication Number Publication Date
KR20000011610A true KR20000011610A (ko) 2000-02-25
KR100336464B1 KR100336464B1 (ko) 2002-05-15

Family

ID=16567196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990027715A KR100336464B1 (ko) 1998-07-24 1999-07-09 쓰기동작횟수가 프로그램검증동작에서 줄여질 수 있는 비휘발성반도체메모리 및 프로그램검증방법

Country Status (5)

Country Link
US (1) US6201738B1 (ko)
JP (1) JP3138688B2 (ko)
KR (1) KR100336464B1 (ko)
CN (1) CN1118828C (ko)
TW (1) TW434555B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100430205B1 (ko) * 2000-03-10 2004-05-03 가부시끼가이샤 도시바 반도체 기억 장치
US7519764B2 (en) 2004-10-18 2009-04-14 Samsung Electronics Co., Ltd. Apparatus and method for detecting data validity in flash memory
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7274607B2 (en) * 2005-06-15 2007-09-25 Micron Technology, Inc. Bitline exclusion in verification operation
TWI312969B (en) 2005-12-08 2009-08-01 Mstar Semiconductor Inc Operating nonvolatile memory method
KR100809333B1 (ko) 2006-09-04 2008-03-05 삼성전자주식회사 상변화 메모리 장치의 기입 검증 방법 및 그 방법을사용하는 상변화 메모리 장치
KR100791341B1 (ko) 2006-09-04 2008-01-03 삼성전자주식회사 비휘발성 메모리 장치의 기입 방법 및 그 방법을 사용하는비휘발성 메모리 장치
KR101274190B1 (ko) * 2007-07-30 2013-06-14 삼성전자주식회사 저항체를 이용한 비휘발성 메모리 장치
US8570828B2 (en) * 2010-04-12 2013-10-29 Mosaid Technologies Incorporated Memory programming using variable data width
JP5269020B2 (ja) * 2010-09-22 2013-08-21 株式会社東芝 半導体集積回路装置およびメモリの管理方法
KR101153813B1 (ko) 2010-09-30 2012-06-13 에스케이하이닉스 주식회사 반도체 메모리 장치
KR101218605B1 (ko) 2010-09-30 2013-01-04 에스케이하이닉스 주식회사 반도체 메모리 장치
CN102509557B (zh) * 2011-11-04 2014-10-15 珠海天威技术开发有限公司 电可擦可编程只读存储器的数据擦写控制装置及方法、芯片及其数据写入方法、耗材容器
CN103021458B (zh) * 2012-12-06 2015-07-08 华中科技大学 一种阻变存储器的写前读电路及其操作方法
US8947944B2 (en) 2013-03-15 2015-02-03 Sandisk 3D Llc Program cycle skip evaluation before write operations in non-volatile memory
US8947972B2 (en) * 2013-03-15 2015-02-03 Sandisk 3D Llc Dynamic address grouping for parallel programming in non-volatile memory
US9019780B1 (en) * 2013-10-08 2015-04-28 Ememory Technology Inc. Non-volatile memory apparatus and data verification method thereof
US9711225B2 (en) 2013-10-16 2017-07-18 Sandisk Technologies Llc Regrouping and skipping cycles in non-volatile memory
US9564215B2 (en) 2015-02-11 2017-02-07 Sandisk Technologies Llc Independent sense amplifier addressing and quota sharing in non-volatile memory
KR20180085396A (ko) * 2017-01-18 2018-07-27 에스케이하이닉스 주식회사 비휘발성 메모리 장치, 및 그의 데이터 라이트 동작방법
JP7122936B2 (ja) * 2018-10-29 2022-08-22 ルネサスエレクトロニクス株式会社 半導体装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5602789A (en) * 1991-03-12 1997-02-11 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile and multi-level memory systemn with write-verify controller
JP3142335B2 (ja) 1991-09-24 2001-03-07 株式会社東芝 不揮発性半導体記憶装置
JPH08190796A (ja) * 1995-01-09 1996-07-23 Mitsubishi Denki Semiconductor Software Kk データリフレッシュ機能を有するフラッシュメモリ及びフラッシュメモリのデータリフレッシュ方法
US5886927A (en) * 1996-06-11 1999-03-23 Nkk Corporation Nonvolatile memory device with verify function

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100430205B1 (ko) * 2000-03-10 2004-05-03 가부시끼가이샤 도시바 반도체 기억 장치
US7519764B2 (en) 2004-10-18 2009-04-14 Samsung Electronics Co., Ltd. Apparatus and method for detecting data validity in flash memory
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory

Also Published As

Publication number Publication date
KR100336464B1 (ko) 2002-05-15
TW434555B (en) 2001-05-16
CN1118828C (zh) 2003-08-20
JP3138688B2 (ja) 2001-02-26
CN1243318A (zh) 2000-02-02
US6201738B1 (en) 2001-03-13
JP2000040383A (ja) 2000-02-08

Similar Documents

Publication Publication Date Title
KR100336464B1 (ko) 쓰기동작횟수가 프로그램검증동작에서 줄여질 수 있는 비휘발성반도체메모리 및 프로그램검증방법
KR100634414B1 (ko) 에러 검출용 패러티 발생기를 구비한 낸드 플래시 메모리 장치 및 그것의 에러 검출 방법
US7296128B2 (en) Nonvolatile memory with error correction for page copy operation and method thereof
US20050276129A1 (en) Integrated circuit memory with fast page mode verify
US7697347B2 (en) Non-volatile memory device and method of driving the same
JP2002288988A (ja) 不揮発性半導体記憶装置
CN112420116A (zh) 用于熔丝错误检测的设备及方法
KR20090120685A (ko) 불휘발성 메모리 장치의 프로그램 검증 방법
KR100286188B1 (ko) 비휘발성 메모리 및 그것을 구비하는 반도체 장치
KR20040071293A (ko) 프로그래밍 방법, 제품 및 장치
JPH03230400A (ja) メモリ・セルの状態を検証する装置と方法
US10490240B2 (en) Semiconductor memory device capable of correctly reading data
US6888764B2 (en) Semiconductor device including semiconductor memory
US7688640B2 (en) Flash memory device and method for driving the same
US7522451B2 (en) High program speed MLC memory
US6320791B1 (en) Writing apparatus for a non-volatile semiconductor memory device
KR100871703B1 (ko) 불휘발성 메모리 장치 및 그 구동방법
US9870810B2 (en) Method and system for power signature suppression in memory devices
JP2001155500A (ja) 不揮発性メモリを備えた半導体装置
US20080158978A1 (en) Memory read circuit and memory apparatus using the same
TW202219968A (zh) 記憶體儲存裝置及其操作方法
CN114512171A (zh) 内存存储装置及其操作方法
KR20180061118A (ko) 메모리 장치에 있어서의 파워 시그너처 억제를 위한 시스템
JPH01108736A (ja) 集積回路の製造方法
KR19990065224A (ko) 내부적으로 프로그램 패스/페일이 검출 가능한 플래시 메모리장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090424

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee