(57)【特許請求の範囲】
【請求項１】
メモリセルアレイをプログラム検査するＢＩＳＴ機能を備えた半導体記憶装置において、
前記メモリセルアレイは第１の設定数のセクタで構成され、
前記セクタは第２の設定数の単位データで構成され、
前記単位データは、プログラムする単位のデータであり、第３の設定数のビットのデータで構成され、
１個の単位データのプログラム検査用のデータを格納するバッファと、
前記セクタの中の１番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて１番目のセクタの中の１番目の単位データから最後のセクタの中の１番目の単位データまでプログラム検査を各１番目の単位データ毎に順次実行し、その後、前記セクタの中の２番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて１番目のセクタの中の２番目の単位データから最後のセクタの中の２番目の単位データまでプログラム検査を各２番目の単位データ毎に順次実行し、以下同様にして、３番目以降の単位データのプログラム検査を順次実行していくことにより、全てのセクタのプログラム検査を実行するプログラム検査手段とを備えたことを特徴とする半導体記憶装置。
【請求項２】
メモリセルアレイをリード検査するＢＩＳＴ機能を備えた半導体記憶装置において、
前記メモリセルアレイは第１の設定数のセクタで構成され、
前記セクタは第２の設定数の単位データで構成され、
前記単位データは、リードする単位のデータであり、第３の設定数のビットのデータで構成され、
リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを照合する比較回路を備え、
前記セクタの中の１番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて１番目のセクタの中の１番目の単位データから最後のセクタの中の１番目の単位データまでリード検査を各１番目の単位データ毎に順次実行し、その後、前記セクタの中の２番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて１番目のセクタの中の２番目の単位データから最後のセクタの中の２番目の単位データまでリード検査を各２番目の単位データ毎に順次実行し、以下同様にして、３番目以降の単位データのリード検査を順次実行していくことにより、全てのセクタのリード検査を実行するリード検査手段とを備えたことを特徴とする半導体記憶装置。
【請求項３】
前記セクタ内においてプログラム単位のデータに重複がある場合、単位データのプログラム順を適宜入れ替えて同じデータをプログラムするプログラム単位に対する書き込み動作を連続して実行するようにし、その間単位データのプログラムデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するプログラム検査手段とを備えたことを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記セクタ内においてリード単位のデータに重複がある場合、単位データのリード順を適宜入れ替えて期待データが同じリード単位に対するリード動作を連続して実行するようにし、その間単位データについて期待するリードデータを前記バッファに格納した状態のまま保持することにより、期待するデータパターンを前記バッファに格納する回数を減らすように制御するリード検査手段とを備えたことを特徴とする請求項２に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＢＩＳＴ（built in self test）機能、特にテストパターンをプログラミングして使うことが可能なプログラマブルＢＩＳＴ機能を備えた半導体記憶装置に関する。
【背景技術】
【０００２】
半導体記憶装置の１つであるフラッシュメモリの検査では、メモリの全領域のビットに対してプログラム（書き込み）とリード（読み出し）などの動作を行いメモリの不良を検出する。ＢＩＳＴ機能を備えたフラッシュメモリ装置では、それ自身でメモリの検査とその結果の判定を行うことが可能であり、プログラム検査を実行する場合、従来構成においては図８に示すフローチャートの制御を実行し、すべてのセクタに対し順次セクタごとに同じデータの書き込みを行う。
【０００３】
まず、図８のステップＳ１０において、フラッシュメモリのメモリセルアレイのプログラム検査のための初期化を行う。そして、ステップＳ２０へ進み、フラッシュメモリのメモリセルアレイにプログラムしたい１単位データ分のデータパターン（書き込みデータ、期待値）をバッファ（ライトバッファ）に発生させる。続いて、ステップＳ３０へ進み、メモリセルアレイに１単位データ分のデータパターンをプログラムする処理、即ち、書き込み動作とベリファイ（verify）動作を実行する。そして、ステップＳ４０へ進み、プログラム（書き込み）が正常に行われた否かを判断し、異常があった場合、「ＮＯ」へ進み、異常終了する（ｆａｉｌ）。
【０００４】
上記ステップＳ４０において、プログラムが正常に行われた場合、「ＹＥＳ」へ進み、ステップＳ５０へ進み、メモリセルアレイのセクタ内の最後の単位データであるか否かを判断する。ここで、最後の単位データでなければ、ステップＳ５０にて「ＮＯ」へ進み、次の単位データに移り（ステップＳ６０）、ステップＳ２０へ戻り、次の単位データのデータパターン（書き込みデータ、期待値）をバッファに発生させる。以下、セクタ内のすべての単位データをプログラムするまで、上記したステップＳ１０〜Ｓ６０を繰り返す。
【０００５】
そして、セクタ内のすべての単位データのプログラムが終了したら、ステップＳ５０にて「ＹＥＳ」へ進み、ステップＳ７０へ進み、メモリセルアレイ内の最後のセクタであるか否かを判断する。ここで、最後のセクタでなければ、ステップＳ７０にて「ＮＯ」へ進み、次のセクタに移り（ステップＳ８０）、ステップＳ１０へ戻り、セクタの最初の単位データのデータパターン（期待値）をバッファに発生させる。以下、最後のセクタ内のすべての単位データをプログラムするまで、上記したステップＳ１０〜Ｓ８０を繰り返す。これにより、すべてのセクタに同じパターンのデータをプログラムできる。
【０００６】
リードの検査を実行する場合についても同様に、例１として図９又は例２として図１０のようなフローに基づいてすべてのセクタに対するリード検査が実施される。例１では、セクタ内のそれぞれの読み出し単位について読み出し動作を行った後、特許文献１にあるように、センスアンプの先にあるデータ判定回路によって期待したデータと一致しているかの判定を行う。例２ではそれぞれの読み出し単位について読み出し動作を行った後、いったんデータをＲＡＭなどに保存し、ＣＰＵがそのデータにアクセスし演算等を行うことにより期待したデータに一致しているかどうかを判定する。いずれの例も最初のセクタから最後のセクタまで１セクタづつ順次読み出しの動作を行い、これによりすべてのセクタのリード検査を完了する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２０７３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来構成のプログラム検査の場合、ステップＳ２０のプログラムしたい１単位データ分のデータパターンをＣＰＵによる演算等によりバッファに発生させる処理を実行する必要が生じる。上記従来構成のプログラム検査においては、メモリセルアレイ内のすべての単位データについて、書き込み動作検査であるステップＳ３０の処理に加え上記ステップＳ２０の処理を実行しなければならないため、プログラム検査終了するまでに、本来の書き込み動作に要する時間以外に、長い時間がかかってしまい効率が良くないという問題点があった。
【０００９】
また上記従来構成のリード検査の場合、例１では読み出したデータの判定において専用のパターン判定回路を使用しているため、回路設計時に想定していたデータのパターンでしか判定を行うことができず、もし量産立ち上げ時などに検査に使用したいパターンが変更された場合には回路変更を行う必要が生じる。一方、例２では読み出したデータを一旦ＲＡＭなどに保存しＣＰＵでこのデータにアクセスし演算を行うことで期待したデータに一致しているかどうかの判定を行うので検査に要する時間が長くなる。
【００１０】
そこで、本発明の目的は、ＢＩＳＴ機能を備えた構成において、回路変更なしにあらゆるデータパターンを用いた検査を可能とすること、さらに検査シーケンスの工夫で不必要な繰り返しを最小限にすることによりメモリセルアレイの検査に要する時間を短縮することができる半導体記憶装置を提供することにある。この方法はメモリのチップ内にすでに存在している回路（ＲＡＭ等）に加え、簡単な論理回路の変更で実現することが可能なため、チップ面積に対するインパクトが小さいという利点がある。
【課題を解決するための手段】
【００１１】
請求項１の発明によれば、メモリセルアレイをプログラム検査するＢＩＳＴ機能を備えた半導体記憶装置において、前記メモリセルアレイは第１の設定数のセクタで構成され、前記セクタは第２の設定数の単位データで構成され、前記単位データは、プログラムする単位のデータであり、第３の設定数のビットのデータで構成され、１個の単位データのプログラム検査用のデータを格納するバッファと、前記セクタの中の１番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて１番目のセクタの中の１番目の単位データから最後のセクタの中の１番目の単位データまでプログラム検査を各１番目の単位データ毎に順次実行し、その後、前記セクタの中の２番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて１番目のセクタの中の２番目の単位データから最後のセクタの中の２番目の単位データまでプログラム検査を各２番目の単位データ毎に順次実行し、以下同様にして、３番目以降の単位データのプログラム検査を順次実行していくことにより、全てのセクタのプログラム検査を実行するプログラム検査手段とを備えたので、メモリセルアレイのプログラム検査において任意のデータパターンを用いることが可能であり、なおかつ検査に要する時間を短縮することができる。
【００１２】
請求項２の発明によれば、リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを回路動作により照合する比較回路を備え、前記セクタの中の１番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて１番目のセクタの中の１番目の単位データから最後のセクタの中の１番目の単位データまでリード検査を各１番目の単位データ毎に順次実行し、その後、前記セクタの中の２番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に保持した状態で、この期待値を用いて１番目のセクタの中の２番目の単位データから最後のセクタの中の２番目の単位データまでリード検査を各２番目の単位データ毎に順次実行し、以下同様にして、３番目以降の単位データのリード検査を順次実行していくことにより、全てのセクタのリード検査を実行するリード検査手段とを備えたので、メモリセルアレイのリード検査において任意のデータパターンを用いることが可能であり、なおかつ検査に要する時間を短縮することができる。
【００１３】
請求項３の発明によれば、１個の単位データのプログラム検査用のデータを格納するバッファと、前記セクタ内においてプログラム単位のデータに重複がある場合、単位データのプログラム順を適宜入れ替えて同じデータをプログラムするプログラム単位については連続してプログラムを実行するようにし、その間単位データのプログラムデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するプログラム検査手段とを備えたので、検査に要する時間をより一層短縮することができる。
【００１４】
請求項４の発明によれば、リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを回路動作により照合する比較回路を備え、前記セクタ内においてリード単位のデータに重複がある場合、単位データのリード順を適宜入れ替えて期待データが同じリード単位に対するリード動作を連続して実行するようにし、その間単位データの期待リードデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するリード検査手段とを備えたので、検査に要する時間をより一層短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１実施形態を示すフラッシュメモリ装置のブロック図
【図２】メモリセルアレイの構成を説明する図
【図３】メモリ検査時のデータパターンの一例を示す図
【図４】本発明のプログラム検査の制御を示すフローチャート
【図５】本発明のリード検査の制御を示すフローチャート
【図６】本発明の第２実施形態を示す図１相当図
【図７】本発明の第３実施形態を示す図３相当図
【図８】従来構成を示す図４相当図
【図９】従来構成を示す図５相当図（例１）
【図１０】従来構成を示す図５相当図（例２）
【発明を実施するための形態】
【００１６】
以下、本発明の第１実施形態について、図１ないし図４を参照して説明する。まず、図１は、本実施形態のフラッシュメモリ装置（半導体記憶装置）１の電気的構成を示す図である。フラッシュメモリ装置１は、メモリセルアレイ２、カラムデコーダ３、センスアンプ４、ロウデコーダ５、セクタデコーダ６、昇圧回路７、制御回路８および入出力バッファ９を備えて構成されている。
【００１７】
メモリセルアレイ２は、フラッシュメモリセルのアレイであり、複数のセクタで構成されている。セクタは１度に消去されるメモリセルの単位であり、１つのセクタの大きさは、通常、例えば数１０Ｋｂｉｔ〜数Ｍｂｉｔ程度である。尚、セクタ（メモリセルアレイ２）の具体的構造については、後述する。
【００１８】
カラムデコーダ３は、リード（読み出し）動作時には、アドレス情報によって選択されたメモリセルアレイ２のビット線をセンスアンプ４に接続させる。また、カラムデコーダ３は、プログラム（書き込み）動作時またはイレーズ（消去）動作時には、センスアンプ４をメモリセルアレイ２から切り離し、メモリセルアレイ２に必要な電圧を供給する。センスアンプ４は、選択したメモリセルに流れる電流を検知し、その結果からデータが「１」であるか「０」であるかを判定する。
【００１９】
ロウデコーダ５は、アドレス情報からメモリセルアレイ２のワード線（メモリセルのゲート）を選択する。選択したメモリセルのゲートに、リード、プログラムまたはイレーズ時に必要な電圧がこのブロックを通じて印加される。
【００２０】
セクタデコーダ６は、アドレス情報からリード、プログラムまたはイレーズの動作を行うセクタを選択しイネーブルする。昇圧回路７は、リード、プログラムまたはイレーズの動作を行うための高電圧や負電圧を生成する。
【００２１】
制御回路８は、ＣＰＵ１０、ＲＯＭ１１及びＲＡＭ１２を備え、アドレス情報やコマンド（制御）やデータを入出力バッファ９を介して入出力するように構成されている。制御回路８は、外部から受けたコマンドを解釈することにより、プログラムまたはイレーズなどの動作を実行し、昇圧回路７をディセーブル、イネーブルしたり、プログラムやイレーズパルスのコントロールを行う。更に、制御回路８は、リード動作などでデータを外部に出力するときのアウトプットイネーブル／ディセーブル制御する機能、プログラムベリファイの結果を一時的にＲＡＭ１２に保存する機能、チップの状態やメモリセルへの動作を制御する機能などを有する。
【００２２】
特に、本実施形態の制御回路８は、ＢＩＳＴ（built in self test）動作を実現するための論理回路やＣＰＵ（ＣＰＵ１０）も備えている。この場合、制御回路８は、プログラム検査手段及びリード検査手段を構成している。尚、ＢＩＳＴとは、チップ内部で、メモリセルアレイ２に対してリード、プログラム、イレーズなどを使った検査を実施し、その結果判定を行う機能のことである。そして、本実施形態の制御回路８は、ソフトＢＩＳＴ、即ち、半導体チップ上のＲＯＭ１１やＲＡＭ１２に格納されたソフトウエアによりＢＩＳＴ動作を実現する機能を有する。このため、上記制御回路８は、ソフトＢＩＳＴ動作実現用のソフトウエアで制御可能なＣＰＵ１０や論理回路を有する構成となっている。尚、制御回路８に、ＣＰＵのかわりにＢＩＳＴ等の各種の動作を実現する専用の回路（ハードウエア）を組み込むように構成しても良い。
【００２３】
次に、上記構成の動作、ＢＩＳＴ動作のうちのプログラム検査について、図２ないし図４を参照して説明する。まず、本実施形態のメモリセルアレイ２の構造について、図２及び図３に従って説明する。図２に示すように、メモリセルアレイ２は、第１の設定数としてのＮ（図２にはＮ＝１６の例を示す）個のセクタ１３から構成されている。１個のセクタ１３は、図３に示すように、第２の設定数としてのｎ個（ｎ行）のワード線１４から構成されている。１個（１行）のワード線１４は、第３の設定数としてのＭビットのデータで構成され、ここではプログラム（書き込み）の単位と一致しているものとする。尚、一般にプログラムの単位データは、１個のワード線１４の大きさのデータに限られるものではない。
【００２４】
メモリセルアレイ２のプログラム検査を実行する場合、Ｎ個の全てのセクタ１３について、例えば図３に示すようなダイアゴナルパターン、即ち、１番目のワード線１４としてデータ「０１１１・・・１」（Ｍビットのデータであり、この場合、２進数で表わしている）、２番目のワード線１４としてデータ「１０１１・・・１」、３番目のワード線１４としてデータ「１１０１・・・１」、・・・、ｎ番目のワード線１４としてデータ「１１１１・・・１０」を書き込む検査を実行する。尚、図３に示すダイアゴナルパターンは、１例であり、他の種々のパターンでも良い。そして、図３に示す各番目のワード線１４のダイアゴナルパターンのデータは、チップ内の制御回路８内のＣＰＵ１０によってアドレス情報を基にして演算で生成する構成となっている。尚、半導体チップ外の例えばテスターからダイアゴナルパターンのデータを制御回路８に送信する（書き込む）ように構成しても良い。
【００２５】
次に、プログラム検査の制御について、図４のフローチャートを参照して説明する。まず、ステップＳ１１０において、プログラム検査のための初期化を行い、２つの変数ｓ、ｉにそれぞれ「１」をセットする。尚、変数ｓはセクタ１３の順番を示す数値であり、変数ｉはワード線１４の順番を示す数値である。続いて、ステップＳ１２０へ進み、プログラム検査のために書き込むワード線１４のデータを、今の場合、１番目のワード線１４のデータ「０１１１・・・１」をバッファ（制御回路８のＲＡＭ１２に設けられている）に格納する。
【００２６】
そして、ステップＳ１３０へ進み、メモリセルアレイ２のｓ番目のセクタ１３のｉ番目のワード線１４（今の場合、メモリセルアレイ２の１番目のセクタ１３の１番目のワード線１４）に、上記バッファ内のデータをプログラム（書き込む）する動作、具体的には、書き込み動作とベリファイ動作を行う。
【００２７】
この後、ステップＳ１４０へ進み、書き込みが正常に実行されたか否かを判断し、ここで、書き込み異常があったと判断されると、「ＮＯ」へ進み、「プログラム異常有り」としてプログラム検査を終了する（ｆａｉｌ）。
【００２８】
また、上記ステップＳ１４０において、書き込みが正常に実行されたと判断されると、次の（今の場合、２番目の）セクタ１３のｉ番目（今の場合、１番目）のワード線１４のプログラム検査を行うために、「ＹＥＳ」へ進み、ステップＳ１５０へ進む。このステップＳ１５０では、上記プログラム検査したセクタ１３が最後（今の場合、１６番目（一般化した場合、Ｎ番目））のセクタ１３であるか否か、即ち、ｓ＝１６（Ｎ）であるか否かを判断する。今の場合、上記プログラム検査したセクタ１３が最後のセクタ１３でないから、「ＮＯ」へ進み、ステップＳ１６０へ進み、次のセクタ１３へ移る処理、即ち、セクタ１３の順番を示す変数ｓをカウントアップ（ｓ＝ｓ＋１＝１＋１＝２）する処理を実行する。
【００２９】
この後、ステップＳ１３０へ戻り、次の（今の場合、２番目の）セクタ１３のｉ番目（今の場合、１番目）のワード線１４に、前記バッファ内のデータをプログラム（書き込む）する動作、即ち、書き込み動作とベリファイ動作を行う。以下、最後のセクタ１３のｉ番目（今の場合、１番目）のワード線１４のプログラム検査が終了するまで、ステップＳ１３０〜Ｓ１６０の処理を繰り返し実行する。
【００３０】
そして、最後のセクタ１３のｉ番目（今の場合、１番目）のワード線１４（単位データ）のプログラム検査が終了すると、全てのセクタ１３の次のワード線１４（今の場合、２番目のワード線１４）のプログラム検査を行うために、ステップＳ１５０にて、「ＹＥＳ」へ進み、ステップＳ１７０へ進む。このステップＳ１７０では、上記プログラム検査したｉ番目のワード線１４（今の場合、１番目のワード線１４）がセクタ１３内の最後のワード線１４（ｎ番目のワード線１４）であるか否か、即ち、ｉ＝ｎであるか否かを判断する。今の場合、上記プログラム検査したワード線１４が最後のワード線１４でないから、「ＮＯ」へ進み、ステップＳ１８０へ進み、次のワード線１４（単位データ）へ移る処理、即ち、ワード線１４の順番を示す変数ｉをカウントアップ（ｉ＝ｉ＋１＝１＋１＝２）すると共に、セクタ１３の順番を示す変数ｓを初期化（ｓ＝１）する処理を実行する。
【００３１】
この後、ステップＳ１２０へ戻り、プログラム検査のために書き込むｉ番目のワード線１４のデータを、今の場合、２番目のワード線１４のデータ「１０１１・・・１」をバッファ（制御回路８のＲＡＭ１２に設けられている）に格納する。続いて、ステップＳ１３０へ進み、ｓ番目の（今の場合、１番目の）セクタ１３のｉ番目（今の場合、２番目）のワード線１４に、上記バッファ内のデータをプログラム（書き込む）する動作、即ち、書き込み動作とベリファイ動作を行う。以下、最後のセクタ１３のｉ番目（今の場合、２番目）のワード線１４のプログラム検査が終了するまで、ステップＳ１３０〜Ｓ１６０の処理を繰り返し実行する。
【００３２】
そして、最後のセクタ１３のｉ番目（今の場合、２番目）のワード線１４のプログラム検査が終了すると、全てのセクタ１３の次のワード線１４（今の場合、３番目のワード線１４）のプログラム検査を行うために、ステップＳ１５０にて、「ＹＥＳ」へ進み、ステップＳ１７０へ進む。このステップＳ１７０では、上記プログラム検査したワード線１４（今の場合、２番目のワード線１４）がセクタ１３内の最後のワード線１４（ｎ番目のワード線１４）であるか否か、即ち、ｉ＝ｎであるか否かを判断する。今の場合、上記プログラム検査したワード線１４が最後のワード線１４でないから、「ＮＯ」へ進み、ステップＳ１８０へ進み、次のワード線１４（単位データ）へ移る処理、即ち、ワード線１４の順番を示す変数ｉをカウントアップ（ｉ＝ｉ＋１＝２１＋１＝３）すると共に、セクタ１３の順番を示す変数ｓを初期化（ｓ＝１）する処理を実行した後、ステップＳ１２０へ戻る。以下、全てのセクタ１３の最後のワード線１４（ｎ番目のワード線１４）のプログラム検査が終了するまで、ステップＳ１２０〜Ｓ１８０の処理を繰り返し実行する。
【００３３】
そして、全てのセクタ１３の最後のワード線１４（今の場合、ｎ番目のワード線１４）のプログラム検査が終了すると、ステップＳ１７０にて、「ＹＥＳ」へ進み、メモリセルアレイ２のプログラム検査を完了する。
【００３４】
次に、第２実施形態としてメモリセルアレイ２のリード検査の制御について、図５ないし図６を参照して説明する。図５はリード検査のフローチャートを示すものであり、図６は本発明の第２実施形態を示すものである。尚、第１実施形態と同一構成には、同一符号を付している。第２実施形態では、制御回路８内に設けた比較回路１５（ハードウエア回路）により読み出したデータの判定を実行するように構成した。具体的には、メモリセルアレイ２内のセクタ１３内のワード線１４を読み出したデータ、即ち、センスアンプ出力と、ＲＡＭ内のデータ（期待値のデータ）を制御回路８内の比較回路１５の回路動作により照合（比較）する構成とした。ここでは１個（１行）のワード線１４は、リード（読み込み）の単位と一致しているものとし、第３の設定数としてのＭビットのデータで構成されている。尚、一般にリードの単位データは、１個のワード線１４の大きさのデータに限られるものではなく、またプログラムに用いられるデータの単位とリードに用いられるデータの単位が一致しているとも限らない。
【００３５】
まず、図５のステップＳ２１０において、リード検査のための初期化を行い、２つの変数ｓ、ｉにそれぞれ「１」をセットする。続いて、ステップＳ２２０へ進み、読み出しデータの期待値を、今の場合、各セクタ１３の１番目のワード線１４のデータ「０１１１・・・１」をＳＲＡＭ（制御回路８のＲＡＭ１２に設けられている）に格納する。
【００３６】
そして、ステップＳ２３０へ進み、メモリセルアレイ２のｓ番目のセクタ１３のｉ番目のワード線１４（今の場合、メモリセルアレイ２の１番目のセクタ１３内の１番目のワード線１４）のデータをリード（読み出す）する。続いて、ステップＳ２４０へ進み、読み出したデータとＲＡＭ内のデータ（期待値のデータ）を回路動作により照合（比較）する。次いで、ステップＳ２５０へ進み、リードが正常に実行されたか否か、即ち、読み出したデータと期待値のデータが一致したか否かを判断する。ここで、読み出し異常があったと判断されると、ステップＳ２５０にて「ＮＯ」へ進み、異常有りでリード検査を終了する（ｆａｉｌ）。
【００３７】
また、上記ステップＳ２５０において、読み出しが正常に実行されたと判断されると、次の（今の場合、２番目の）セクタ１３のｉ番目（今の場合、１番目）のワード線１４のリード検査を行うために、「ＹＥＳ」へ進み、ステップＳ２６０へ進む。このステップＳ２６０では、上記リード検査したセクタ１３が最後（今の場合、１６番目（一般化した場合、Ｎ番目））のセクタ１３であるか否か、即ち、ｓ＝１６（Ｎ）であるか否かを判断する。今の場合、上記プログラム検査したセクタ１３が最後のセクタ１３でないから、「ＮＯ」へ進み、ステップＳ２７０へ進む。このステップＳ２７０では、次のセクタ１３へ移る処理、即ち、セクタ１３の順番を示す変数ｓをカウントアップ（ｓ＝ｓ＋１＝１＋１＝２）する処理を実行する。
【００３８】
この後、ステップＳ２３０へ戻り、次のｓ番目（今の場合、２番目）のセクタ１３のｉ番目（今の場合、１番目）のワード線１４のデータをリードする。以下、最後のセクタ１３のｉ番目（今の場合、１番目）のワード線１４のデータのリード検査が終了するまで、ステップＳ２３０〜Ｓ２７０の処理を繰り返し実行する。
【００３９】
そして、最後のセクタ１３のｉ番目（今の場合、１番目）のワード線１４のデータのリード検査が終了すると、全てのセクタ１３の次のワード線１４（今の場合、２番目のワード線１４）のプログラム検査を行うために、ステップＳ２６０にて、「ＹＥＳ」へ進み、ステップＳ２８０へ進む。このステップＳ２８０では、上記リード検査したｉ番目の単位データとしてのワード線１４（今の場合、１番目のワード線１４）がセクタ１３内の最後のワード線１４（ｎ番目のワード線１４）であるか否か、即ち、ｉ＝ｎであるか否かを判断する。今の場合、上記リード検査したワード線１４（単位データ）が最後のワード線１４でないから、「ＮＯ」へ進み、ステップＳ２９０へ進み、次のワード線１４（単位データ）へ移る処理、即ち、ワード線１４の順番を示す変数ｉをカウントアップ（ｉ＝ｉ＋１＝１＋１＝２）すると共に、セクタ１３の順番を示す変数ｓを初期化（ｓ＝１）する処理を実行する。
【００４０】
この後、ステップＳ２２０へ戻り、リード検査のために読み出すｉ番目のワード線１４のデータの期待値を、今の場合、２番目のワード線１４のデータ「１０１１・・・１」をＲＡＭ（制御回路８のＲＡＭ１２に設けられている）に格納する。続いて、ステップＳ２３０へ進み、ｓ番目の（今の場合、１番目の）セクタ１３のｉ番目（今の場合、２番目）のワード線１４のデータをリードする。以下、最後のセクタ１３のｉ番目（今の場合、２番目）のワード線１４のプログラム検査が終了するまで、ステップＳ２３０〜Ｓ２７０の処理を繰り返し実行する。
【００４１】
そして、最後のセクタ１３のｉ番目（今の場合、２番目）のワード線１４のデータのリード検査が終了すると、全てのセクタ１３の次のワード線１４（今の場合、３番目のワード線１４）のデータのリード検査を行うために、ステップＳ２６０にて、「ＹＥＳ」へ進み、ステップＳ２８０へ進む。このステップＳ２８０では、上記リード検査したｉ番目のワード線１４（今の場合、２番目のワード線１４）がセクタ１３内の最後のワード線１４（ｎ番目のワード線１４）であるか否か、即ち、ｉ＝ｎであるか否かを判断する。今の場合、上記リード検査したワード線１４が最後のワード線１４でないから、「ＮＯ」へ進み、ステップＳ２９０へ進み、次のワード線１４（単位データ）へ移る処理、即ち、ワード線１４の順番を示す変数ｉをカウントアップ（ｉ＝ｉ＋１＝２＋１＝３）すると共に、セクタ１３の順番を示す変数ｓを初期化（ｓ＝１）する処理を実行した後、ステップＳ２２０へ戻る。以下、全てのセクタ１３内の最後のワード線１４（ｎ番目のワード線１４）のデータのリード検査が終了するまで、ステップＳ２２０〜Ｓ２９０の処理を繰り返し実行する。
【００４２】
そして、全てのセクタ１３の最後のワード線１４（今の場合、ｎ番目のワード線１４）のデータのリード検査が終了すると、ステップＳ２８０にて、「ＹＥＳ」へ進み、メモリセルアレイ２のリード検査を完了する。
【００４３】
上記第１実施形態においては、ＢＩＳＴ機能でメモリセルアレイ２のプログラム検査を行うときに、プログラム検査のために書き込むワード線１４のデータをバッファに格納する回数がｎ回（即ち、ワード線１４の個数の回数）となるように構成した。このため、本実施形態によれば、バッファにワード線１４のデータを格納する回数が大幅に少なくなる（尚、図８に示す従来構成の場合、（ｎ＊１６（Ｎ））回であるから、１／１６（Ｎ）になる）。通常ワード線１４のデータをバッファに格納する処理を実行するのに時間を要するため、その繰り返しの回数を減らすことによりプログラム検査に要する検査時間を大幅に短縮することができる。また、上記実施形態によれば、プログラム検査時にメモリセルアレイ２の全てのセクタ１３に書き込むデータパターンを、制御回路８に組み込むソフトウエアの変更だけで自由に変更することができるので、検査データパターンが変更されたような場合に、ハードウエアの変更が不要となり容易に対応することができる。
【００４４】
また、上記第２実施形態においては、リード検査において読み出したデータが期待したデータと一致しているかの判定において、あらかじめ用意されたパターン判定回路で行うのではなく、またＣＰＵ等を用いた演算によってソフトウェア的に行うのでもなく、センスアンプ出力とＲＡＭ（制御回路８のＲＡＭ１２）上に発生させた期待値データとの照合を行う回路によって判定することにした。これにより、リード検査中にＲＡＭに格納するリード検査用のデータパターン（期待値のデータ）を、制御回路８に組み込むソフトウエアの変更だけで自由に変更させることができるので、リード検査用のデータパターンが変更されたような場合に、回路変更せずに容易に対応することができる上、制御回路８のＣＰＵ１０の演算によりパターン一致を判定する構成に比べて、照合に要する時間を短縮することができる。また、第１の実施形態におけるプログラム検査の場合と同様に、リード検査のために読み出すワード線１４のデータの期待値をＲＡＭに格納する回数がｎ回（即ち、ワード線１４の個数の回数）となるように構成した。このため、本実施形態によれば、ＲＡＭにワード線１４のデータの期待値を格納する回数が大幅に少なくなる（尚、従来構成の場合、（ｎ＊１６（Ｎ））回であるから、１／１６（Ｎ）になる）ので、リード検査に要する検査時間を大幅に短縮することができる。特に、ワード線１４のデータの期待値をＲＡＭに格納する処理を実行するのに長い時間を要するため、リード検査に要する検査時間を実質的に大幅に短縮できる。上記により、任意のデータパターンでの検査と検査時間の短縮を両立することが可能となる。
【００４５】
図７は、本発明の第３実施形態を示すものである。尚、第１実施形態と同一構成には、同一符号を付している。第１実施形態では、プログラム検査を実行する際に、図３に示すようなダイアゴナルパターンを書き込むように構成したが、これに代えて、第３実施形態においては、図７に示すチェッカーボードパターンを書き込むように構成した。
【００４６】
チェッカーボードパターンは、図７に示すように、奇数番目のワード線１４のデータパターンは全て同じであると共に、偶数番目のワード線１４のデータパターンは全て同じである。即ち、ワード線１４（単位データ）のデータパターンは、２種類しかない。このため、第３実施形態では、プログラム検査のために書き込むワード線１４のデータをバッファに格納する回数を２回とすることができる。
【００４７】
例えば、まず、はじめに奇数番目のワード線１４のデータパターンをバッファに格納した状態で、すべてのセクタ１３について、奇数番目のワード線１４のプログラム検査を実行し（すべてのセクタ１３について１番目のワード線をプログラムを行い、次にすべてのセクタ１３について３番目のワード線、以後同様に５番目以降の奇数番目のワード線についてプログラムを行う）、その後、偶数番目のワード線１４のデータパターンをバッファに格納した状態で、すべてのセクタ１３について、偶数番目のワード線１４のプログラム検査を実行（すべてのセクタ１３について２番目のワード線をプログラムを行い、次にすべてのセクタ１３について４番目のワード線、以後同様に６番目以降の偶数番目のワード線についてプログラムを行う）するように制御すれば良い。
【００４８】
上述した以外の第３実施形態の構成は、第１実施形態と同じ構成となっている。従って、第３実施形態においても、第１実施形態とほぼ同じ作用効果を得ることができる。特に、第３実施形態によれば、プログラム検査のために書き込むワード線１４のデータをバッファに格納する回数を最小で２回とすることができるので、プログラム検査に要する検査時間を実質的に更に大幅に短縮することができる。
【００４９】
尚、上記第３実施形態では、プログラム検査を実行する際に、セクタ１３に書き込むデータパターンとして、ワード線１４（単位データ）のデータパターンが２種類しかないデータパターンについて説明したが、これに限られるものではなく、セクタ内でのワード線１４（単位データ）のデータパターンが重複している場合には、プログラム検査のために書き込むワード線１４のデータをバッファに格納する回数が最小となるように書き込みデータ単位のプログラム順序を適宜並べ替えるように、すべてのセクタ１３に対するワード線１４のプログラム検査の制御（即ち、すべてのセクタ１３に対して同じ種類のデータパターンのワード線１４のプログラム検査をまとめて実行する制御）を適宜構成すれば良い。
【００５０】
また、上記第３実施形態および変形形態では、プログラムの単位データを１個のワード線１４としたが、一般にこれに限られるものではない。
第４実施形態として、第３実施形態と同様にチェッカーボードパターンでリード検査を行う場合も同様に、はじめに奇数番目のワード線１４のデータパターンをバッファに格納した状態で、すべてのセクタ１３について、奇数番目のワード線１４のリード検査を実行し、その後、偶数番目のワード線１４のデータパターンをバッファに格納した状態で、すべてのセクタ１３について、偶数番目のワード線１４のリード検査を実行するように制御すればリード検査のために書き込むワード線１４のデータをバッファに格納する回数を最小で２回とすることが可能であり更なる時間短縮が可能である。
【００５１】
尚、上記実施形態において、メモリセルアレイ２のプログラム検査を実行し、書き込み異常があったときには、その異常があったセクタが不良であると確定し、冗長なセクタと置き換えるなどの処理を行うように構成しても良い。また、上記実施形態において、メモリセルアレイ２のリード検査を実行し、読み込み異常があったときには、その異常があったセクタが不良であると確定し、冗長なセクタと置き換えるなどの処理を行うように構成しても良い。
【符号の説明】
【００５２】
図面中、１はフラッシュメモリ装置、２はメモリセルアレイ、８は制御回路、１０はＣＰＵ、１１はＲＯＭ、１２はＲＡＭ、１３はセクタ、１４はワード線、１５は比較回路を示す。
【図１】
0005445500.tif 000002
【図２】
0005445500.tif 000003
【図３】
0005445500.tif 000004
【図４】
0005445500.tif 000005
【図５】
0005445500.tif 000006
【図６】
0005445500.tif 000007
【図７】
0005445500.tif 000008
【図８】
0005445500.tif 000009
【図９】
0005445500.tif 000010
【図１０】
0005445500.tif 000011