メモリセルアレイをプログラム検査するBIST機能を備えた半導体記憶装置において、前記メモリセルアレイは第1の設定数のセクタで構成され、前記セクタは第2の設定数の単位データで構成され、前記単位データは、プログラムする単位のデータであり、第3の設定数のビットのデータで構成され、1個の単位データのプログラム検査用のデータを格納するバッファと、前記セクタの中の1番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて全てのセクタの中の1番目の単位データのプログラム検査を実行し、その後、前記セクタの中の2番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて全てのセクタの中の2番目の単位データのプログラム検査を実行し、以下同様にして、3番目以降の単位データのプログラム検査を順次実行していくことにより、全てのセクタのプログラム検査を実行するプログラム検査手段とを備えたことを特徴とする半導体記憶装置。メモリセルアレイをリード検査するBIST機能を備えた半導体記憶装置において、前記メモリセルアレイは第1の設定数のセクタで構成され、前記セクタは第2の設定数の単位データで構成され、前記単位データは、リードする単位のデータであり、第3の設定数のビットのデータで構成され、リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを照合する比較回路を備え、前記セクタの中の1番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて全てのセクタの中の1番目の単位データのリード検査を実行し、その後、前記セクタの中の2番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて全てのセクタの中の2番目の単位データのリード検査を実行し、以下同様にして、3番目以降の単位データのリード検査を順次実行していくことにより、全てのセクタのリード検査を実行するリード検査手段とを備えたことを特徴とする半導体記憶装置。前記セクタ内においてプログラム単位のデータに重複がある場合、単位データのプログラム順を適宜入れ替えて同じデータをプログラムするプログラム単位に対する書き込み動作を連続して実行するようにし、その間単位データのプログラムデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するプログラム検査手段とを備えたことを特徴とする請求項1に記載の半導体記憶装置。前記セクタ内においてリード単位のデータに重複がある場合、単位データのリード順を適宜入れ替えて期待データが同じリード単位に対するリード動作を連続して実行するようにし、その間単位データについて期待するリードデータを前記バッファに格納した状態のまま保持することにより、期待するデータパターンを前記バッファに格納する回数を減らすように制御するリード検査手段とを備えたことを特徴とする請求項2に記載の半導体記憶装置。上記従来構成のプログラム検査の場合、ステップS20のプログラムしたい1単位データ分のデータパターンをCPUによる演算等によりバッファに発生させる処理を実行する必要が生じる。上記従来構成のプログラム検査においては、メモリセルアレイ内のすべての単位データについて、書き込み動作検査であるステップS30の処理に加え上記ステップS20の処理を実行しなければならないため、プログラム検査終了するまでに、本来の書き込み動作に要する時間以外に、長い時間がかかってしまい効率が良くないという問題点があった。また上記従来構成のリード検査の場合、例1では読み出したデータの判定において専用のパターン判定回路を使用しているため、回路設計時に想定していたデータのパターンでしか判定を行うことができず、もし量産立ち上げ時などに検査に使用したいパターンが変更された場合には回路変更を行う必要が生じる。一方、例2では読み出したデータを一旦RAMなどに保存しCPUでこのデータにアクセスし演算を行うことで期待したデータに一致しているかどうかの判定を行うので検査に要する時間が長くなる。そこで、本発明の目的は、BIST機能を備えた構成において、回路変更なしにあらゆるデータパターンを用いた検査を可能とすること、さらに検査シーケンスの工夫で不必要な繰り返しを最小限にすることによりメモリセルアレイの検査に要する時間を短縮することができる半導体記憶装置を提供することにある。この方法はメモリのチップ内にすでに存在している回路RAM等に加え、簡単な論理回路の変更で実現することが可能なため、チップ面積に対するインパクトが小さいという利点がある。請求項1の発明によれば、メモリセルアレイをプログラム検査するBIST機能を備えた半導体記憶装置において、前記メモリセルアレイは第1の設定数のセクタで構成され、前記セクタは第2の設定数の単位データで構成され、前記単位データは、プログラムする単位のデータであり、第3の設定数のビットのデータで構成され、1個の単位データのプログラム検査用のデータを格納するバッファと、前記セクタの中の1番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて全てのセクタの中の1番目の単位データのプログラム検査を実行し、その後、前記セクタの中の2番目の単位データのプログラム検査用のデータを前記バッファに格納した状態で、このプログラム検査用のデータを用いて全てのセクタの中の2番目の単位データのプログラム検査を実行し、以下同様にして、3番目以降の単位データのプログラム検査を順次実行していくことにより、全てのセクタのプログラム検査を実行するプログラム検査手段とを備えたので、メモリセルアレイのプログラム検査において任意のデータパターンを用いることが可能であり、なおかつ検査に要する時間を短縮することができる。請求項2の発明によれば、リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを回路動作により照合する比較回路を備え、前記セクタの中の1番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に格納した状態で、この期待値を用いて全てのセクタの中の1番目の単位データのリード検査を実行し、その後、前記セクタの中の2番目の単位データをリードしたときのリードデータの期待値を前記記憶手段に保持した状態で、この期待値を用いて全てのセクタの中の2番目の単位データのリード検査を実行し、以下同様にして、3番目以降の単位データのリード検査を順次実行していくことにより、全てのセクタのリード検査を実行するリード検査手段とを備えたので、メモリセルアレイのリード検査において任意のデータパターンを用いることが可能であり、なおかつ検査に要する時間を短縮することができる。請求項3の発明によれば、1個の単位データのプログラム検査用のデータを格納するバッファと、前記セクタ内においてプログラム単位のデータに重複がある場合、単位データのプログラム順を適宜入れ替えて同じデータをプログラムするプログラム単位については連続してプログラムを実行するようにし、その間単位データのプログラムデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するプログラム検査手段とを備えたので、検査に要する時間をより一層短縮することができる。請求項4の発明によれば、リードした単位データの期待値を格納する記憶手段と、読み出したデータと、前記記憶手段内のリードデータの期待値とを回路動作により照合する比較回路を備え、前記セクタ内においてリード単位のデータに重複がある場合、単位データのリード順を適宜入れ替えて期待データが同じリード単位に対するリード動作を連続して実行するようにし、その間単位データの期待リードデータを前記バッファに格納した状態のまま保持することにより、データパターンを前記バッファに格納する回数を減らすように制御するリード検査手段とを備えたので、検査に要する時間をより一層短縮することができる。以下、本発明の第1実施形態について、図1ないし図4を参照して説明する。まず、図1は、本実施形態のフラッシュメモリ装置半導体記憶装置1の電気的構成を示す図である。フラッシュメモリ装置1は、メモリセルアレイ2、カラムデコーダ3、センスアンプ4、ロウデコーダ5、セクタデコーダ6、昇圧回路7、制御回路8および入出力バッファ9を備えて構成されている。メモリセルアレイ2は、フラッシュメモリセルのアレイであり、複数のセクタで構成されている。セクタは1度に消去されるメモリセルの単位であり、1つのセクタの大きさは、通常、例えば数10Kbit~数Mbit程度である。尚、セクタメモリセルアレイ2の具体的構造については、後述する。カラムデコーダ3は、リード読み出し動作時には、アドレス情報によって選択されたメモリセルアレイ2のビット線をセンスアンプ4に接続させる。また、カラムデコーダ3は、プログラム書き込み動作時またはイレーズ消去動作時には、センスアンプ4をメモリセルアレイ2から切り離し、メモリセルアレイ2に必要な電圧を供給する。センスアンプ4は、選択したメモリセルに流れる電流を検知し、その結果からデータが1であるか0であるかを判定する。ロウデコーダ5は、アドレス情報からメモリセルアレイ2のワード線メモリセルのゲートを選択する。選択したメモリセルのゲートに、リード、プログラムまたはイレーズ時に必要な電圧がこのブロックを通じて印加される。セクタデコーダ6は、アドレス情報からリード、プログラムまたはイレーズの動作を行うセクタを選択しイネーブルする。昇圧回路7は、リード、プログラムまたはイレーズの動作を行うための高電圧や負電圧を生成する。制御回路8は、CPU10、ROM11及びRAM12を備え、アドレス情報やコマンド制御やデータを入出力バッファ9を介して入出力するように構成されている。制御回路8は、外部から受けたコマンドを解釈することにより、プログラムまたはイレーズなどの動作を実行し、昇圧回路7をディセーブル、イネーブルしたり、プログラムやイレーズパルスのコントロールを行う。更に、制御回路8は、リード動作などでデータを外部に出力するときのアウトプットイネーブル/ディセーブル制御する機能、プログラムベリファイの結果を一時的にRAM12に保存する機能、チップの状態やメモリセルへの動作を制御する機能などを有する。特に、本実施形態の制御回路8は、BISTbuiltinselftest動作を実現するための論理回路やCPUCPU10も備えている。この場合、制御回路8は、プログラム検査手段及びリード検査手段を構成している。尚、BISTとは、チップ内部で、メモリセルアレイ2に対してリード、プログラム、イレーズなどを使った検査を実施し、その結果判定を行う機能のことである。そして、本実施形態の制御回路8は、ソフトBIST、即ち、半導体チップ上のROM11やRAM12に格納されたソフトウエアによりBIST動作を実現する機能を有する。このため、上記制御回路8は、ソフトBIST動作実現用のソフトウエアで制御可能なCPU10や論理回路を有する構成となっている。尚、制御回路8に、CPUのかわりにBIST等の各種の動作を実現する専用の回路ハードウエアを組み込むように構成しても良い。次に、上記構成の動作、BIST動作のうちのプログラム検査について、図2ないし図4を参照して説明する。まず、本実施形態のメモリセルアレイ2の構造について、図2及び図3に従って説明する。図2に示すように、メモリセルアレイ2は、第1の設定数としてのN図2にはN=16の例を示す個のセクタ13から構成されている。1個のセクタ13は、図3に示すように、第2の設定数としてのn個n行のワード線14から構成されている。1個1行のワード線14は、第3の設定数としてのMビットのデータで構成され、ここではプログラム書き込みの単位と一致しているものとする。尚、一般にプログラムの単位データは、1個のワード線14の大きさのデータに限られるものではない。メモリセルアレイ2のプログラム検査を実行する場合、N個の全てのセクタ13について、例えば図3に示すようなダイアゴナルパターン、即ち、1番目のワード線14としてデータ01111Mビットのデータであり、この場合、2進数で表わしている、2番目のワード線14としてデータ10111、3番目のワード線14としてデータ11011、、n番目のワード線14としてデータ111110を書き込む検査を実行する。尚、図3に示すダイアゴナルパターンは、1例であり、他の種々のパターンでも良い。そして、図3に示す各番目のワード線14のダイアゴナルパターンのデータは、チップ内の制御回路8内のCPU10によってアドレス情報を基にして演算で生成する構成となっている。尚、半導体チップ外の例えばテスターからダイアゴナルパターンのデータを制御回路8に送信する書き込むように構成しても良い。次に、プログラム検査の制御について、図4のフローチャートを参照して説明する。まず、ステップS110において、プログラム検査のための初期化を行い、2つの変数s、iにそれぞれ1をセットする。尚、変数sはセクタ13の順番を示す数値であり、変数iはワード線14の順番を示す数値である。続いて、ステップS120へ進み、プログラム検査のために書き込むワード線14のデータを、今の場合、1番目のワード線14のデータ01111をバッファ制御回路8のRAM12に設けられているに格納する。そして、ステップS130へ進み、メモリセルアレイ2のs番目のセクタ13のi番目のワード線14今の場合、メモリセルアレイ2の1番目のセクタ13の1番目のワード線14に、上記バッファ内のデータをプログラム書き込むする動作、具体的には、書き込み動作とベリファイ動作を行う。この後、ステップS140へ進み、書き込みが正常に実行されたか否かを判断し、ここで、書き込み異常があったと判断されると、NOへ進み、プログラム異常有りとしてプログラム検査を終了するfail。また、上記ステップS140において、書き込みが正常に実行されたと判断されると、次の今の場合、2番目のセクタ13のi番目今の場合、1番目のワード線14のプログラム検査を行うために、YESへ進み、ステップS150へ進む。このステップS150では、上記プログラム検査したセクタ13が最後今の場合、16番目一般化した場合、N番目のセクタ13であるか否か、即ち、s=16Nであるか否かを判断する。今の場合、上記プログラム検査したセクタ13が最後のセクタ13でないから、NOへ進み、ステップS160へ進み、次のセクタ13へ移る処理、即ち、セクタ13の順番を示す変数sをカウントアップs=s1=11=2する処理を実行する。この後、ステップS130へ戻り、次の今の場合、2番目のセクタ13のi番目今の場合、1番目のワード線14に、前記バッファ内のデータをプログラム書き込むする動作、即ち、書き込み動作とベリファイ動作を行う。以下、最後のセクタ13のi番目今の場合、1番目のワード線14のプログラム検査が終了するまで、ステップS130~S160の処理を繰り返し実行する。そして、最後のセクタ13のi番目今の場合、1番目のワード線14単位データのプログラム検査が終了すると、全てのセクタ13の次のワード線14今の場合、2番目のワード線14のプログラム検査を行うために、ステップS150にて、YESへ進み、ステップS170へ進む。このステップS170では、上記プログラム検査したi番目のワード線14今の場合、1番目のワード線14がセクタ13内の最後のワード線14n番目のワード線14であるか否か、即ち、i=nであるか否かを判断する。今の場合、上記プログラム検査したワード線14が最後のワード線14でないから、NOへ進み、ステップS180へ進み、次のワード線14単位データへ移る処理、即ち、ワード線14の順番を示す変数iをカウントアップi=i1=11=2すると共に、セクタ13の順番を示す変数sを初期化s=1する処理を実行する。この後、ステップS120へ戻り、プログラム検査のために書き込むi番目のワード線14のデータを、今の場合、2番目のワード線14のデータ10111をバッファ制御回路8のRAM12に設けられているに格納する。続いて、ステップS130へ進み、s番目の今の場合、1番目のセクタ13のi番目今の場合、2番目のワード線14に、上記バッファ内のデータをプログラム書き込むする動作、即ち、書き込み動作とベリファイ動作を行う。以下、最後のセクタ13のi番目今の場合、2番目のワード線14のプログラム検査が終了するまで、ステップS130~S160の処理を繰り返し実行する。そして、最後のセクタ13のi番目今の場合、2番目のワード線14のプログラム検査が終了すると、全てのセクタ13の次のワード線14今の場合、3番目のワード線14のプログラム検査を行うために、ステップS150にて、YESへ進み、ステップS170へ進む。このステップS170では、上記プログラム検査したワード線14今の場合、2番目のワード線14がセクタ13内の最後のワード線14n番目のワード線14であるか否か、即ち、i=nであるか否かを判断する。今の場合、上記プログラム検査したワード線14が最後のワード線14でないから、NOへ進み、ステップS180へ進み、次のワード線14単位データへ移る処理、即ち、ワード線14の順番を示す変数iをカウントアップi=i1=211=3すると共に、セクタ13の順番を示す変数sを初期化s=1する処理を実行した後、ステップS120へ戻る。以下、全てのセクタ13の最後のワード線14n番目のワード線14のプログラム検査が終了するまで、ステップS120~S180の処理を繰り返し実行する。そして、全てのセクタ13の最後のワード線14今の場合、n番目のワード線14のプログラム検査が終了すると、ステップS170にて、YESへ進み、メモリセルアレイ2のプログラム検査を完了する。次に、第2実施形態としてメモリセルアレイ2のリード検査の制御について、図5ないし図6を参照して説明する。図5はリード検査のフローチャートを示すものであり、図6は本発明の第2実施形態を示すものである。尚、第1実施形態と同一構成には、同一符号を付している。第2実施形態では、制御回路8内に設けた比較回路15ハードウエア回路により読み出したデータの判定を実行するように構成した。具体的には、メモリセルアレイ2内のセクタ13内のワード線14を読み出したデータ、即ち、センスアンプ出力と、RAM内のデータ期待値のデータを制御回路8内の比較回路15の回路動作により照合比較する構成とした。ここでは1個1行のワード線14は、リード読み込みの単位と一致しているものとし、第3の設定数としてのMビットのデータで構成されている。尚、一般にリードの単位データは、1個のワード線14の大きさのデータに限られるものではなく、またプログラムに用いられるデータの単位とリードに用いられるデータの単位が一致しているとも限らない。まず、図5のステップS210において、リード検査のための初期化を行い、2つの変数s、iにそれぞれ1をセットする。続いて、ステップS220へ進み、読み出しデータの期待値を、今の場合、各セクタ13の1番目のワード線14のデータ01111をSRAM制御回路8のRAM12に設けられているに格納する。そして、ステップS230へ進み、メモリセルアレイ2のs番目のセクタ13のi番目のワード線14今の場合、メモリセルアレイ2の1番目のセクタ13内の1番目のワード線14のデータをリード読み出すする。続いて、ステップS240へ進み、読み出したデータとRAM内のデータ期待値のデータを回路動作により照合比較する。次いで、ステップS250へ進み、リードが正常に実行されたか否か、即ち、読み出したデータと期待値のデータが一致したか否かを判断する。ここで、読み出し異常があったと判断されると、ステップS250にてNOへ進み、異常有りでリード検査を終了するfail。また、上記ステップS250において、読み出しが正常に実行されたと判断されると、次の今の場合、2番目のセクタ13のi番目今の場合、1番目のワード線14のリード検査を行うために、YESへ進み、ステップS260へ進む。このステップS260では、上記リード検査したセクタ13が最後今の場合、16番目一般化した場合、N番目のセクタ13であるか否か、即ち、s=16Nであるか否かを判断する。今の場合、上記プログラム検査したセクタ13が最後のセクタ13でないから、NOへ進み、ステップS270へ進む。このステップS270では、次のセクタ13へ移る処理、即ち、セクタ13の順番を示す変数sをカウントアップs=s1=11=2する処理を実行する。この後、ステップS230へ戻り、次のs番目今の場合、2番目のセクタ13のi番目今の場合、1番目のワード線14のデータをリードする。以下、最後のセクタ13のi番目今の場合、1番目のワード線14のデータのリード検査が終了するまで、ステップS230~S270の処理を繰り返し実行する。そして、最後のセクタ13のi番目今の場合、1番目のワード線14のデータのリード検査が終了すると、全てのセクタ13の次のワード線14今の場合、2番目のワード線14のプログラム検査を行うために、ステップS260にて、YESへ進み、ステップS280へ進む。このステップS280では、上記リード検査したi番目の単位データとしてのワード線14今の場合、1番目のワード線14がセクタ13内の最後のワード線14n番目のワード線14であるか否か、即ち、i=nであるか否かを判断する。今の場合、上記リード検査したワード線14単位データが最後のワード線14でないから、NOへ進み、ステップS290へ進み、次のワード線14単位データへ移る処理、即ち、ワード線14の順番を示す変数iをカウントアップi=i1=11=2すると共に、セクタ13の順番を示す変数sを初期化s=1する処理を実行する。この後、ステップS220へ戻り、リード検査のために読み出すi番目のワード線14のデータの期待値を、今の場合、2番目のワード線14のデータ10111をRAM制御回路8のRAM12に設けられているに格納する。続いて、ステップS230へ進み、s番目の今の場合、1番目のセクタ13のi番目今の場合、2番目のワード線14のデータをリードする。以下、最後のセクタ13のi番目今の場合、2番目のワード線14のプログラム検査が終了するまで、ステップS230~S270の処理を繰り返し実行する。そして、最後のセクタ13のi番目今の場合、2番目のワード線14のデータのリード検査が終了すると、全てのセクタ13の次のワード線14今の場合、3番目のワード線14のデータのリード検査を行うために、ステップS260にて、YESへ進み、ステップS280へ進む。このステップS280では、上記リード検査したi番目のワード線14今の場合、2番目のワード線14がセクタ13内の最後のワード線14n番目のワード線14であるか否か、即ち、i=nであるか否かを判断する。今の場合、上記リード検査したワード線14が最後のワード線14でないから、NOへ進み、ステップS290へ進み、次のワード線14単位データへ移る処理、即ち、ワード線14の順番を示す変数iをカウントアップi=i1=21=3すると共に、セクタ13の順番を示す変数sを初期化s=1する処理を実行した後、ステップS220へ戻る。以下、全てのセクタ13内の最後のワード線14n番目のワード線14のデータのリード検査が終了するまで、ステップS220~S290の処理を繰り返し実行する。そして、全てのセクタ13の最後のワード線14今の場合、n番目のワード線14のデータのリード検査が終了すると、ステップS280にて、YESへ進み、メモリセルアレイ2のリード検査を完了する。上記第1実施形態においては、BIST機能でメモリセルアレイ2のプログラム検査を行うときに、プログラム検査のために書き込むワード線14のデータをバッファに格納する回数がn回即ち、ワード線14の個数の回数となるように構成した。このため、本実施形態によれば、バッファにワード線14のデータを格納する回数が大幅に少なくなる尚、図8に示す従来構成の場合、n16N回であるから、1/16Nになる。通常ワード線14のデータをバッファに格納する処理を実行するのに時間を要するため、その繰り返しの回数を減らすことによりプログラム検査に要する検査時間を大幅に短縮することができる。また、上記実施形態によれば、プログラム検査時にメモリセルアレイ2の全てのセクタ13に書き込むデータパターンを、制御回路8に組み込むソフトウエアの変更だけで自由に変更することができるので、検査データパターンが変更されたような場合に、ハードウエアの変更が不要となり容易に対応することができる。また、上記第2実施形態においては、リード検査において読み出したデータが期待したデータと一致しているかの判定において、あらかじめ用意されたパターン判定回路で行うのではなく、またCPU等を用いた演算によってソフトウェア的に行うのでもなく、センスアンプ出力とRAM制御回路8のRAM12上に発生させた期待値データとの照合を行う回路によって判定することにした。これにより、リード検査中にRAMに格納するリード検査用のデータパターン期待値のデータを、制御回路8に組み込むソフトウエアの変更だけで自由に変更させることができるので、リード検査用のデータパターンが変更されたような場合に、回路変更せずに容易に対応することができる上、制御回路8のCPU10の演算によりパターン一致を判定する構成に比べて、照合に要する時間を短縮することができる。また、第1の実施形態におけるプログラム検査の場合と同様に、リード検査のために読み出すワード線14のデータの期待値をRAMに格納する回数がn回即ち、ワード線14の個数の回数となるように構成した。このため、本実施形態によれば、RAMにワード線14のデータの期待値を格納する回数が大幅に少なくなる尚、従来構成の場合、n16N回であるから、1/16Nになるので、リード検査に要する検査時間を大幅に短縮することができる。特に、ワード線14のデータの期待値をRAMに格納する処理を実行するのに長い時間を要するため、リード検査に要する検査時間を実質的に大幅に短縮できる。上記により、任意のデータパターンでの検査と検査時間の短縮を両立することが可能となる。図7は、本発明の第3実施形態を示すものである。尚、第1実施形態と同一構成には、同一符号を付している。第1実施形態では、プログラム検査を実行する際に、図3に示すようなダイアゴナルパターンを書き込むように構成したが、これに代えて、第3実施形態においては、図7に示すチェッカーボードパターンを書き込むように構成した。チェッカーボードパターンは、図7に示すように、奇数番目のワード線14のデータパターンは全て同じであると共に、偶数番目のワード線14のデータパターンは全て同じである。即ち、ワード線14単位データのデータパターンは、2種類しかない。このため、第3実施形態では、プログラム検査のために書き込むワード線14のデータをバッファに格納する回数を2回とすることができる。例えば、まず、はじめに奇数番目のワード線14のデータパターンをバッファに格納した状態で、すべてのセクタ13について、奇数番目のワード線14のプログラム検査を実行しすべてのセクタ13について1番目のワード線をプログラムを行い、次にすべてのセクタ13について3番目のワード線、以後同様に5番目以降の奇数番目のワード線についてプログラムを行う、その後、偶数番目のワード線14のデータパターンをバッファに格納した状態で、すべてのセクタ13について、偶数番目のワード線14のプログラム検査を実行すべてのセクタ13について2番目のワード線をプログラムを行い、次にすべてのセクタ13について4番目のワード線、以後同様に6番目以降の偶数番目のワード線についてプログラムを行うするように制御すれば良い。上述した以外の第3実施形態の構成は、第1実施形態と同じ構成となっている。従って、第3実施形態においても、第1実施形態とほぼ同じ作用効果を得ることができる。特に、第3実施形態によれば、プログラム検査のために書き込むワード線14のデータをバッファに格納する回数を最小で2回とすることができるので、プログラム検査に要する検査時間を実質的に更に大幅に短縮することができる。尚、上記第3実施形態では、プログラム検査を実行する際に、セクタ13に書き込むデータパターンとして、ワード線14単位データのデータパターンが2種類しかないデータパターンについて説明したが、これに限られるものではなく、セクタ内でのワード線14単位データのデータパターンが重複している場合には、プログラム検査のために書き込むワード線14のデータをバッファに格納する回数が最小となるように書き込みデータ単位のプログラム順序を適宜並べ替えるように、すべてのセクタ13に対するワード線14のプログラム検査の制御即ち、すべてのセクタ13に対して同じ種類のデータパターンのワード線14のプログラム検査をまとめて実行する制御を適宜構成すれば良い。また、上記第3実施形態および変形形態では、プログラムの単位データを1個のワード線14としたが、一般にこれに限られるものではない。第4実施形態として、第3実施形態と同様にチェッカーボードパターンでリード検査を行う場合も同様に、はじめに奇数番目のワード線14のデータパターンをバッファに格納した状態で、すべてのセクタ13について、奇数番目のワード線14のリード検査を実行し、その後、偶数番目のワード線14のデータパターンをバッファに格納した状態で、すべてのセクタ13について、偶数番目のワード線14のリード検査を実行するように制御すればリード検査のために書き込むワード線14のデータをバッファに格納する回数を最小で2回とすることが可能であり更なる時間短縮が可能である。尚、上記実施形態において、メモリセルアレイ2のプログラム検査を実行し、書き込み異常があったときには、その異常があったセクタが不良であると確定し、冗長なセクタと置き換えるなどの処理を行うように構成しても良い。また、上記実施形態において、メモリセルアレイ2のリード検査を実行し、読み込み異常があったときには、その異常があったセクタが不良であると確定し、冗長なセクタと置き換えるなどの処理を行うように構成しても良い。