従来、不揮発性メモリのプログラムまたはイレース時に、不揮発性メモリに記憶されるデータと、期待値データとの一致不一致を検出して、データの照合を自動的に行う半導体装置の構成と、いわゆる顧客が使用する通常の不揮発性メモリセルと半導体装置の動作を制御するCAMセルを有する半導体装置が知られている。近年、省スペース化のために、このCAMセルを通常の不揮発性メモリセルと同一のもので構成する提案がなされている。CAMセルを通常のメモリセルと同一の構成とする場合、CAMセルに接続されるワード線、ビット線も通常のメモリセルと同じ構成にすることが望ましい。
通常のメモリセルと同一構成のCAMセルに書き込まれたCAMデータは、パワーオン時又はハードウェアリセット時にリードされてSRAM(Static Random Access Memory)等の揮発性記憶部(ラッチ回路)に転送されることが望ましい。これにより、通常の不揮発性メモリセルのリードアクセス時などのスピードがCAMデータ読出しによって遅れない。
また、CAMセルを通常のメモリセルと同じ構成にする場合、CAMデータの書き換えのときにベリファイ動作までを通常のメモリセルのベリファイ動作と同様に半導体装置内部で完了できるようにすることが望ましい。特許文献1には、通常のメモリセルをプログラムする時のベリファイ回路が開示されている。
通常のメモリセルをプログラムする場合、各I/Oから情報“1”と“0”をユーザが入力する。“0”は、プログラムに設定されたメモリセルを示し、“1”は、イレースに設定されたメモリセルを示す。また、この各I/O情報は、ベリファイ動作時に期待値としても利用される。
半導体装置側では、実際のプログラムの前に、プログラム対象となるワード線に接続された複数のメモリセルのデータを一度読み出す。これをプレリードと呼ぶ。プレリードしたデータとI/Oから入力したデータとを比較し、イレース状態(情報“1”が記憶されている)にあり、I/Oによってプログラムする(“0”が入力された)に設定されたメモリセルだけにプログラムを実行する。
すでにプログラムされているメモリセル(情報“0”が記憶されている)には、追加のプログラムはストレスとなるので行わない。また、すでにプログラムされているメモリセル(情報“0”が記憶されている)に対して、I/Oから入力される情報が“1”である場合には、エラーをコントローラ側に返す。何故なら、物性で書込みをする不揮発性メモリであり、付可逆性であるからイレース動作とプログラム動作とは分離され、例えばイレースはセクタごとに一括で行われるためである。また、すでにイレースされているメモリセル(情報“1”が記憶されている)に対して、I/Oから入力される情報が“1”である場合には、何も行わない。
CAMセルのプログラムも通常のメモリセルと同様に行われることが望ましい。但し、CAMセルのプログラムの場合、前述した通常メモリセルのプログラムのインタフェースと違う2つのインタフェース方法で行われる。プログラムするCAMセルとプログラムしないCAMセルを、I/Oから情報“1”と“0”に対応させて入力設定するCAMセルのプログラムのインタフェースをインタフェース1と呼ぶ(特許文献2参照)。インタフェース1の場合、各I/Oから情報“1”と“0”をユーザが入力する。“1”は、プログラムに設定されたメモリセルを示し、“0”は、何もしない(プログラムを行わない)に設定されたメモリセルを示す。
また、CAMセルへのプログラムの場合、このインタフェース1の方法ではなく、コマンド入力によってプログラムするCAMセルだけを指定する方法もある。この方法をインタフェース2と呼ぶ。インタフェース2の場合、CAMセルのアドレスを指定することで、指定されたCAMセルは、プログラムに設定されたメモリセルを意味する。
CAMセルには、ユーザが情報の書き換えを行うユーザブロックと、ベンダーメーカが予め情報を書き込むファクトリブロックとが設けられることが望ましい。このような構成において、ユーザブロックのCAMデータの書き換えを行う場合には、ファクトリブロックのメモリセルがセル情報のディスターブを受けないことが必要となる。ディスターブとは、対象のメモリセルへのプログラム時に、同じワード線やビット線につながれたメモリセルが電気的影響を受けて、メモリセルにチャージロスやチャージのゲインが発生する現象である。
第1の問題点として、ユーザブロックのCAMデータの書き換えを行う場合には、ファクトリブロックのメモリセルがセル情報のディスターブを受けないことが必要であるが、この点に着目した技術は知られていない。
第2の問題点として、CAMセルのプログラム後に、ベリファイが正しく行えないという問題が発生する。これについて以下に詳述する。
問題は、同一ワード線上に複数のCAMセルが接続されたアレイ構成であって、ベリファイ動作が同一ワード線上の複数のCAMセルに対して同時に行われる場合に発生する。
図1(A)には、同一ワード線上に配置された複数のCAMセルのプログラム状態が示されている。図1(A)に示す“1”のCAMセルは、イレースセルであり、プログラムされていないことを示している。また、“0”のCAMセルは、プログラムセルであり、すでにプログラムされたセルであることを示している。
ここで、図1(A)に示すワード線上のCAMセルに、図1(B)に示すような前記インタフェース1であるI/O入力がなされたとする。なお、図1(B)に示す“1”は、プログラム実行に設定し、“0”はプログラムは行わずに、そのままの状態を維持するように設定する。
半導体装置は、上述したプレリードによりワード線上の各CAMセルからデータを読出して、プレリードしたデータとI/Oから入力したデータとを比較し、イレース状態(情報“1”が記憶されている)にあり、I/Oによってプログラムする(“1”が入力された)に設定されたメモリセルだけにプログラムを実行する。ここでは、図1(C)に示すようにワード線上の一番右側のCAMセルでプログラムが実行される。
プログラム後には、ベリファイを行う。プログラム後のCAMセルから読出したデータと、I/O入力したデータを期待値として使用してこれらを比較する(図1(D)参照)。この時、図1(D)に示すようにすでにプログラムが行われたCAMセルに対してI/O入力した期待値がプログラムしない設定であった場合、比較結果は「フェイル」となり、ベリファイ動作がフェイルしてしまう。
また上述したインタフェース2の指定方法の場合、コマンド入力によってプログラムするCAMセルだけを指定する方法であるため、同一ワード線上のプログラムが行われなかったCAMセルに対応する期待値を発生させることができず、ベリファイ動作が実現できない。
本発明は上記事情に鑑みてなされたものであり、CAMセルを備える半導体装置において、データの書き換えやベリファイを正常に行うことができる半導体装置およびベリファイ方法を提供することを目的とする。
かかる目的を達成するために本発明の半導体装置は、半導体装置の動作設定情報を記憶するセルアレイと、前記セルアレイの読出しと書込みを制御する制御部とを有し、前記制御部は、前記動作設定情報の機能毎に異なるローアドレスを割り付ける構成を備えている。動作設定情報の機能毎に異なるローアドレスを割り付けるので、プログラム時に、選択されていない機能のセルアレイにストレス(ゲートディスターブ)を与えることがない。
上記の半導体装置において、前記制御部は、前記動作設定情報の機能毎に異なるコラムアドレスを割り付けるとよい。動作設定情報の機能毎に異なるコラムアドレスを割り付けるので、選択されていない機能のセルアレイにストレス(ドレインディスターブ)を与えることがない。
上記の半導体装置において、前記制御部は、前記動作設定情報の複数の異なる機能に対して連続するコラムアドレスを割り付けるとよい。複数の異なる機能に対して連続するコラムアドレスを割り付けているので、データを連続的に読出し、読出し時間を短縮させることができる。
上記の半導体装置において、前記制御部は、前記ローアドレスで選択される複数のコラムに前記動作設定情報を割り付けるとよい。または、前記制御部は、前記ローアドレスで選択される任意のコラムの全てのI/Oに前記動作設定情報を割り付けると良い。読出しサイクル数を最小限にして、読出し時間を短縮させることができる。
上記の半導体装置において、前記ローアドレスの異なるメモリセル間で、ローカルビット線の配線パターンを切断した構成を備えている。ローアドレスの異なるメモリセル間で、ローカルビット線の配線パターンを切断しているので、機能の異なるメモリセル間でワード線を同時に選択した状態のまま、コラムアドレスの切り換えでデータを読み出すことができる。
上記の半導体装置において、前記ローアドレスの異なるメモリセルは、コラム対応に設けたビット線との接続を切り換えるスイッチをそれぞれに有するとよい。機能の異なるメモリセル間でワード線を同時に選択した状態のまま、コラムアドレスの切り換えでデータを読み出すことができる。
上記の半導体装置において、前記セルアレイはコラム毎に複数のメモリセルを有し、前記動作設定情報が格納されていない前記複数のメモリセルは、コラム対応に設けられているビット線から切り離されているとよい。従って、プログラム時に、選択されていない機能のセルアレイにストレスを与えることがない。
上記の半導体装置において、前記制御部は、前記セルアレイ上の全ワード線を選択し、前記コラムアドレスを連続的に切り換えてデータを読み出すとよい。ワード線の切り換えを行わずに、コラムアドレスの切り換えだけでデータを読み出すことができ、読出し時間の短縮を図ることができる。
上記の半導体装置において、前記制御部は、指定されたメモリセルの番号から、該当するメモリセルのアドレスに変換する変換テーブルを有するとよい。指定したセルのアドレスに変換することができるので、所望のセルをプログラムすることができる。
本発明は、半導体装置の動作設定情報を記憶するセルアレイへのアドレス割り付け方法であって、前記動作設定情報の機能毎に異なるローアドレスを割り付ける。動作設定情報の機能毎に異なるローアドレスを割り付けるので、プログラム時に、選択されていない機能のセルアレイにストレスを与えることがない。また、機能毎のイレースが可能となる。
上記アドレス割り付け方法において、前記動作設定情報の機能毎に異なるコラムアドレスを割り付けるとよい。動作設定情報の機能毎に異なるコラムアドレスでデータを読み出すことができる。
上記アドレス割り付け方法において、前記動作設定情報の複数の異なる機能に対して連続するコラムアドレスを割り付けるとよい。複数の異なる機能の動作設定情報を読み出しやすくなる。
上記アドレス割り付け方法において、前記セルアレイ上の全ワード線を選択し、前記コラムアドレスを連続的に切り換えてデータを読み出すとよい。従って、ワード線の切り換えを行なわずに、コラムアドレスの切り換えだけで動作設定情報を読み出すことができる。
本発明は、半導体装置の動作設定情報を記憶するセルアレイと、前記セルアレイの複数のセルに同時にプログラムする書込み回路と、前記複数のセルのうち、実際にプログラムが行われたセルのプログラム結果だけを検証するベリファイ回路と、を有する構成を備えている。このように本発明は、実際にプログラムが行われたセルのプログラム結果だけを検証することができる。
上記の半導体装置において、前記ベリファイ回路は、正常にプログラムが行われた場合に得られる期待値データと、前記プログラム後に前記セルまたはセンスアンプから読出したデータとを比較する複数の比較回路と、前記プログラムの行われていない前記セルに割り当てられた前記比較回路の比較結果を、擬似的にパスさせる制御を行う制御手段とを有しているとよい。このようにプログラムの行われていないセルに割り当てられた比較回路の比較結果を、擬似的にパスさせる制御を行うので、プログラムされたセルのプログラム結果をベリファイに反映させることができる。
上記の半導体装置において、前記制御手段は、外部入力によってプログラムに指定されたセルであって、前記プログラム前にイレースビットであったセルを判定し、前記制御手段からの指示により、前記セルがプログラムされた場合に得られる期待値データを生成して、前記セルに割り振られた前記比較回路に出力する期待値保持回路をさらに有しているとよい。このように実際にプログラムが行われたセルを判定して、このセルに割り当てられた比較回路に期待値データを出力するので、プログラムされたセルのプログラム結果を正確に判定することができる。
上記の半導体装置において、半導体装置の動作設定情報を記憶するセルアレイと、前記セルアレイの複数のセルに同時にプログラムする書込み回路と、前記プログラム前の前記複数のセルの記憶データを記憶する揮発性記憶回路と、前記複数のセルのうち、前記プログラムが行われていないセルには前記記憶データをそのまま用いて検証を行い、実際に前記プログラムが行われたセルには正常にプログラムが行われた場合に得られる期待値データを用いてプログラム結果を検証するベリファイ回路と、を有しているとよい。このように本発明は、プログラムが行われていないセルには記憶データをそのまま用いて検証を行い、実際にプログラムが行われたセルには正常にプログラムが行われた場合に得られる期待値データを用いてプログラム結果を検証するので、プログラムされたセルのプログラム結果を正確に検証することができる。
上記の半導体装置において、前記ベリファイ回路は、正常にプログラムが行われた場合に得られる期待値データと、前記プログラム後に前記セルまたはセンスアンプから読出したデータとを比較する複数の比較回路と、実際にプログラムが行われたセルを判定し、当該セルに割り当てられた前記比較回路に、前記正常にプログラムが行われた場合に得られる期待値データを用いてプログラム結果を検証させる制御手段と、を有しているとよい。実際にプログラムされたセルを判定して、プログラムされたセルのプログラム結果を正確に検証することができる。
上記の半導体装置において、前記制御手段は、外部入力によってプログラムに指定されたセルであって、前記プログラム前にイレースビットであったセルに該当する前記揮発性記憶回路に記憶した前記期待値データを、プログラムされた場合の期待値データに変更して、前記比較回路に出力させるとよい。実際にプログラムされたセルを判定して、プログラムされたセルのプログラム結果を正確に検証することができる。
上記の半導体装置において、前記制御手段は、前記複数のセルごとに、プログラム対象に設定するか否かを指示する指示信号を外部入力し、前記プログラム対象に設定されたセルがイレースビットのセルであるか否かを判定して実際にプログラムを行うセルを判定するとよい。外部からの指示信号によりプログラム対象のセルを設定して、指定したセルのプログラムを行うことができる。
上記の半導体装置において、前記制御手段は、外部入力されるアドレス情報をデコードして、プログラム対象に設定されたセルを判定し、前記プログラム対象に設定されたセルがイレースビットのセルであるか否かを判定して実際にプログラムを行うセルを判定するとよい。外部入力されるアドレス情報によりプログラム対象のセルを設定して、指定したセルのプログラムを行うことができる。
上記の半導体装置において、前記制御手段は、外部入力されるモード切換信号により、前記プログラム対象のセルを指定するインタフェースを切り換えるとよい。複数のインタフェースに対応してプログラムするセルの指定を受け付けることができる。
上記の半導体装置において、前記動作設定情報を記憶するセルアレイへのプログラム後のベリファイと、通常のデータを記憶する通常用セルアレイへのプログラム後のベリファイとで、前記ベリファイ回路を共有するとよい。ベリファイ回路を共有することができるので、回路の小型化を図ることができる。
上記の半導体装置において、前記比較回路は、前記動作設定情報を記憶するセルアレイへのプログラムに切り換えるモード信号が入力されて、前記期待値データと前記セルまたはセンスアンプから読出したデータの比較を行うとよい。ベリファイの時にだけ比較回路を動作させることができる。
上記の半導体装置において、前記動作設定情報を記憶するセルアレイへのプログラム時には、前記揮発性記憶回路の出力を使用して前記比較回路で比較動作を行い、通常のデータを記憶する通常用セルアレイへのプログラム時には、前記セルがプログラムされた場合に得られる期待値データを保持する期待値保持回路の出力を使用して前記比較回路の比較動作を行うとよい。動作設定情報を記憶するセルアレイへのプログラム時と、通常用セルアレイへのプログラム時とで異なるベリファイの制御を行うことができる。
本発明は、半導体装置の動作設定情報を記憶するセルアレイのベリファイ方法であって、前記セルアレイの複数のセルのうち、実際にプログラムが行われたセルのプログラム結果だけを検証する。このように本発明は、実際にプログラムが行われたセルのプログラム結果だけを検証することができる。
本発明は、半導体装置の動作設定情報を記憶するセルアレイのベリファイ方法であって、前記複数のセルのうち、前記プログラムが行われていないセルには、当該セルの前記プログラム前のデータをそのまま用いて検証を行い、実際に前記プログラムが行われたセルには正常にプログラムが行われた場合に得られる期待値データを用いてプログラム結果を検証する。このように本発明は、プログラムが行われていないセルには記憶データをそのまま用いて検証を行い、実際にプログラムが行われたセルには正常にプログラムが行われた場合に得られる期待値データを用いてプログラム結果を検証するので、プログラムされたセルのプログラム結果を正確に検証することができる。
本発明は、動作設定情報を記憶するセルアレイを備える半導体装置において、データの書き換えやベリファイを正常に行うことができる。
次に、添付図面を参照しながら本発明を実施するための最良の形態について説明する。
添付図面を参照しながら本発明の好適な実施例を説明する。
まず、図2を参照しながら本実施例の全体構成を説明する。本実施例の半導体装置1は、セルアレイ部2として通常のデータを記憶する通常用セルアレイ3と、CAM用のデータを記憶するCAM用セルアレイ4とを備えている。CAM用セルアレイ4は、通常用セルアレイ3と同様にメモリセルが複数の行及び列に配置された構成を持つ。CAM用セルアレイ4には、半導体装置1の動作設定情報(所謂CAMデータ)が記憶される。例えば、通常用セルアレイ3のライトプロテクト情報、半導体装置1の内部電圧調整情報、内部タイミング調整情報、動作モード切り換え情報、メモリセル冗長ビットの情報などが記憶される。またこれらのセルアレイへのデータの書込み、読出し及び消去を実現するための周辺回路が設けられている。周辺回路には、図1に示すようにローデコーダ5、コラムデコーダ6、コマンドレジスタ7、コントローラ8、プログラム電圧発生回路9、センスアンプ10、揮発性メモリ部11、判定回路12、ベリファイ回路13、データ入出力回路14等が設けられている。
ローデコーダ5は、データ書込み時、消去時および読出し時に、それぞれのアドレスにもとづいて複数のワード線WLを選択駆動するものであり、そのワード線ドライバ(図示していない)にはプログラム電圧発生回路9から所要の電圧が供給される。コラムデコーダ6は、外部入力されたアドレスをもとにセルアレイの列、すなわちグローバルビット線やローカルビット線を選択する。
コマンドレジスタ7は、外部からのコマンドを内部制御信号にデコードする。コントローラ(制御部)8は、このコマンドレジスタ7によってデコードされた内部制御信号に応答して、コマンドに対応する内部動作を制御する。コントローラ8は、例えばマイクロプロセッサで構成され、前述内部制御信号に応じてプログラム電圧発生回路9、判定回路12、ベリファイ回路13等を制御する。
CAM用セルアレイ4に記憶されたCAMデータは、半導体装置1のパワーオン時、又はハードウェアのリセット時などに揮発性メモリ部11に転送され、記憶される。揮発性メモリ部11にCAMデータを読出しておくことで、通常用セルアレイ3のリードアクセス時にCAMデータの読出しによってリード動作に遅延を生じさせない。なお、この読出し動作時間は、起動時間の増大につながるため、CAMデータを短時間で転送することが望ましい。
データ入出力回路14は、外部からプログラムの指示を入力したり、読出したデータを出力するI/O端子を備えている。また、データ入出力回路14は、通常用セルアレイ3と、CAM用セルアレイ4へのデータの書込み(プログラム)と、読出し(リード)とを行う。
次に、CAM用セルアレイ4の構成について説明する。図3に、CAMデータのCAM用セルアレイ4への割り付けを示すビットマップを示す。CAM用セルアレイ4は、ユーザブロックとファクトリブロックとの機能ブロックに分かれている。データの消去は、この機能ブロック単位に行われる。
ユーザブロックとは、ユーザが書き換え可能なライトプロテクトビット(以下、WPビットとも表記する)などを書き込む領域である。ライトプロテクトビットは、メモリセルへのプログラム又はイレースを制御するビットであり、任意数のセクタ(以下、この単位をセクタグループと呼ぶ)を単位として設定される。図3に示す例では、WPビットは、望ましくはDQ0〜DQ15のすべてのI/Oに割り振られ、ワード線は1本(1つのローアドレス)、ローカルビット線(LBL)は、1I/O当たり4本、すなわち4コラムアドレス分(LBL0〜3)、グローバルビット線(GBL)は1I/O当たり1本分(GBL0)に割り当てられている。なお、WPビットを、DQ0〜DQ15のすべてのI/Oに割り振るとは、ローアドレスで選択される任意のコラムのメモリセルのすべてにデータを割り付けることを意味している。尚、WPビット数がI/O数で整数で割り切れないとき、I/O割り付けを重視してコラムを割り当てる又はコラム割り付けを重視してI/Oを割り付けるなど適宜に割り振ることで対処できる。例えば、WPビット数が60でI/O数が16の場合、I/O割り付けを重視してコラムを割り当てる方法では、最終コラムアドレス(000011)のWPビット60,61,62,63に対応するI/O(DQ)が割り当てられないか、または先頭コラムアドレス(000000)のWPビット0,1,2,3に対応するI/O(DQ)をシフトさせて割り当てることとなる。コラム割り付けを重視してI/Oを割り付ける方法では、WPビット15,31,47,63に対応するI/O(DQ)を飛ばして割り当てることとなる。
ユーザブロックは、WPビット0〜63まで64ビット分で構成され、図5に示す対応関係(変換テーブル)と、図6に示す変換(変換テーブル)に従ってビット割り付けされる。すなわち、図5及び図6に示すように、各WPビット0〜63は、I/OであるDQ端子のアドレスA17〜A20と、コラムアドレスであるアドレスA21とA22とに対応している。
ファクトリブロックは、ベンダーメーカが書き換えを行い、ユーザは書き換えができない機能ブロックである。この機能ブロックには、冗長データ、内部電圧トリミングデータ、内部タイミングトリミングデータなどが書き込まれる。
図3に示すファクトリブロックでは、トリミング(Triming)用TR0〜15の16ビットと、8ビットで1欠陥救済アドレスを記憶するセクタ冗長用のREDSECA〜REDSECDの32ビット分と、8ビットで1欠陥救済アドレスを記憶するコラム冗長用のREDCOL(0-0)〜REDCOL(7-1)の128ビット分とで構成される。
ファクトリブロックも図3に示すようにDQ0〜DQ15のすべてに割り振られ、ワード線は1本、ローカルビット線(LBL)は1I/O当たり11本分(すなわち、11コラムアドレス分(LBL4〜14に相当))、ファクトリブロックのグローバルビット線(GBL)は、1I/O当たり3本分(GBL1〜3)が割り当てられている。図4に示すようにファクトリブロックもユーザブロックと同様に64ビット分で構成し、DQ0〜DQ15のすべてに割り振ったものであってもよい。
図7(A)にCAM用セルアレイ4の詳細な構成を示し、図7(B)に通常用セルアレイ3の詳細な構成を示す。図7(A)に示すCAM用セルアレイ4は、ファクトリブロックがユーザブロックの書き換えによってメモリ情報のゲートディスターブを受けないように、ファクトリブロックとユーザブロックとで互いに独立したワード線を持っている。すなわち、ファクトリブロックとユーザブロックとが異なるローアドレスに割り当てられている。図2に示すローデコーダ5は、外部から入力されたアドレスに基づいて、機能ブロックごとのCAMデータを異なるローアドレスに割り当てる。図7(A)では、ユーザブロックに含まれるWPビットに割り振られたワード線WL0と、ファクトリブロックに含まれるファクトリビットに割り振られたワード線WL1とが示されている。さらに同じ機能ブロック(ユーザブロック又はファクトリブロック)内では、割り当てるワード線本数を最小限に設定している。これは、機能ブロック単位でデータの一括消去が可能なように構成するためである。なお、ゲートディスターブとは、プログラムするメモリセルと同一のワード線につながれ、ビット線は非選択のメモリセルのゲートにプログラム時の高電圧がかかり、チャージゲインを引き起こす現象である。この現象により非選択のメモリセルのデータがチャージゲインにより“1(閾値が低い)”から“0(閾値が高い)”へ変化してしまう。
同様にコラムデコーダ6は、外部から入力されたアドレスに基づいて、機能ブロックごとのCAMデータを異なるコラムアドレスに割り当てる。またファクトリブロックとユーザブロックとで、コラムアドレスが連続するようにアドレスの割り付けを行なう。
さらにファクトリブロックがユーザブロックの書き換えなどによってメモリ情報のドレインディスターブを受けないように、図7(A)に示すようにファクトリブロックとユーザブロック間でビット線を分離する。すなわち、コラムデコーダ6は、ユーザブロックとファクトリブロックとで、互いに独立したコラムアドレスをデータに割り当てる。また異なる機能ブロック間ではコラムアドレスが連続するようにコラムデコーダ6は、設定する。なお、ビット線の分離とは、ローカルビット線やグローバルビット線の物理的な分離と、電気的な分離の両方を指す。また、ドレインディスターブとは、プログラムするメモリセルと同一のビット線につながれ、ワード線は非選択のメモリセルのドレインにプログラム時の高電圧がかかり、チャージロスを引き起こす現象である。この現象により非選択のメモリセルのデータがチャージロスにより“0(閾値が高い)”から“1(閾値が低い)”へ変化してしまう。
また、全ワード線(例えばワード線WL1とWL2)を選択した状態で、コラムアドレスを切り換えるだけでCAMデータをすべて読み出せるようにするために、機能ブロック間で同一コラムアドレスを持たないようにし、かつ機能ブロック内でコラムアドレスを連続させる。すると、ワード線切り換えの時間を省くことができ、CAMデータをCAM用セルアレイ4から揮発性メモリ部11へ短時間で転送することができる。その場合、複数のワード線を同時に選択した時に、同一ビット線に必要なセルデータと不要なセルデータが重複して選択されないように不要なセルデータが接続されるビット線は切り離す。
さらに、ユーザブロックと、ファクトリブロックとで同じコラムアドレスを持たないことを利用して、図8(A)に示すようにユーザブロックとファクトリブロック間のローカルビット線(LBL)の配線パターンを物理的に断線し、かつ切断されたローカルビット線(LBL)をグローバルビット線に接続しない(例えば、コンタクトビアを設けない)。又はユーザブロックとファクトリブロックをセクタの概念で分離し、図7(A)に示すようにグローバルビット線につなぐコラムスイッチをユーザブロックとファクトリブロックのそれぞれで持つことで電気的に切り離す。
これにより、電源投入時などにおいて、CAM用セルアレイ4から揮発性メモリ11へのデータの読出し時、ユーザブロックのワード線とファクトリブロックのワード線を同時に選択した状態のまま、コラムアドレスの選択切換のみでCAMデータを読み出すことができる。ワード線の選択切り換えを行う必要がない分、さらにCAMデータ全ビットの総読出し時間を短縮させることができる。
図9に、プログラム/イレース動作用のアドレス信号をバンク毎のコラムアドレス信号に変換する変換回路の構成を示す。この変換回路は、コラムデコーダ6内に設けられ、CAMプログラムモード信号(CAMPGM)を活性状態と非活性状態とに切り換えることで、通常用セルアレイ3のコラムアドレスと、CAM用セルアレイ4のコラムアドレスとに切り換えることができる。
変換回路の構成は、プログラム/イレース動作用のアドレス信号WA(0)又はWA(1)と、CAMPGM信号とを入力するORゲート121と、CAMPGM信号の反転出力と、アドレス信号WA(21)又はWA(22)とをそれぞれに入力するORゲート123と、ORゲート121、123の出力を入力するNANDゲート124と、NANDゲート124の出力を反転させるインバータ125とを有している。インバータ125の出力がコラムアドレスAA(0),AA(1)となる。CAMPGM信号が非活性の場合には、アドレス信号WA(1)/WA(0)信号がそのままコラムアドレス信号AA(1)/AA(0)となる。
またその他は、CAMPGM信号と、各アドレス信号WA(2),WA(3),WA(4),WA(5)とを入力するORゲート131と、CAMPGM信号の反転出力と、電源電圧VCCとを入力するORゲート133と、ORゲート131と133の出力を入力するNANDゲート134と、NANDゲート134の出力を判定させるインバータ135とを有している。インバータ135の出力がコラムアドレスAA(2),AA(3),AA(4),AA(5)となって出力される。
プログラム/イレース用のアドレス信号を、DQ変換する変換回路を図10に示す。この変換回路は、データ入出力回路14内にスイッチとして設けられ、DQ0を生成する変換回路は、アドレス信号WA(20)、(19)、(18)、(17)を入力するNORゲート142と、CAMPGM信号とNORゲート142の出力とを入力するNANDゲート143と、NANDゲート143の出力を反転するインバータ144とから構成されている。同様の回路構成により、DQ0〜DQ15を生成する変換回路が構成される。
CAMPGM信号が活性化した場合、WA(0)〜WA(17)がCAM_DQ15〜CAMDQ_0に割り当てられる。通常用セルアレイ3が選択状態(つまりCAMPGM信号が非活性)の場合には、CAM_DQ15〜CAM_DQ0が非活性状態となる。
ライトプロテクトビットのプログラム時には、図10に示す変換回路によってプログラム対象となるDQのみが活性化動作して、プログラム非対象のDQは無視されるように印加ストレス、期待値、判定信号が制御される。
上述した実施例は本発明の好適な実施例であるが、これに限定されるものではない。例えば、ファクトリブロックにOne Time Programmable Rom(OTP−Rom)を含めても良い。OTP−Romは、ユーザが一度だけプログラムできる機能メモリである。ユーザに与えられた機能という視点ではファクトリブロックとは異なるが、一度プログラムしたら再度プログラムできない機能の視点からは、何度もプログラムやイレースができるユーザブロックからは分離する。すなわち、ゲートディスターブ、ドレインディスターブを回避することが要求される。
また、ユーザブロックをライトビットブロックではなく、リードビットブロックとし、任意のセクタ単位でリードの制御を行うようにしてもよい。
また、上述した実施例では、ファクトリブロックとユーザブロックとの間でローカルビット線の物理的な分離やグローバルビット線への電気的な分離を開示したが、これに限らずファクリトブロックとユーザブロック間のグローバルビット線を物理的や電気的に分離してもよい。
また通常用セルアレイとCAM用セルアレイとはデータバスを共有するように接続されていてもよいし、ユーザブロックとファクトリブロックのグローバルビット線を共有するように接続してもよい。
また、ウェルは、ユーザブロックとファクトリブロックとで分離してもよいし、共通でもよい。共通であれば、ダイサイズを縮小することができる。なお、共通の場合には、ユーザブロックでの消去動作時に、ファクトリブロックのワード線をフローティング制御する。
まず、図11を参照しながら本実施例の構成を説明する。図11には、半導体装置1のデータを記憶するセルアレイ部2(通常用セルアレイ3とCAM用セルアレイ4)と、セルアレイ部2へのデータの書込み状態や、データの消去状態を確認するベリファイ回路13と、データ入出力回路14内の期待値保持回路32の構成が示されている。なお、本実施例においても、16ビットの同時書込みモードを備え、通常用セルアレイ3又はCAM用セルアレイ4の16メモリセルに同時アクセスしてプログラムすることができる。
ベリファイ回路13には、図11に示すようにWPビットセレクト回路33と、データ比較回路34とが備えられている。データ入出力回路14内の期待値保持回路32とデータ比較回路34とは、16I/Oに対応して、16個ずつ設けられている。
WPビットセレクト回路33には、図11に示すようにインタフェースモード設定信号と、各I/Oから入力される信号と、ライトプロテクト用のCAM(以下、WP−CAM)を指定するアドレス(WP−CAMアドレス指定信号)とが入力される。
プログラムするCAMセルの指定方法には2通りの方法がある。1つは、プログラムしたいCAMセルに対応するI/Oに情報“1”を、その他のプログラムしたくないCAMセルに対応するI/Oには情報“0”を入力することで指定する方法(以下、I/Oモードと呼ぶ)である。もう1つは、プログラムしたいCAMセルに対して、対応するアドレスを入力する方法(以下、アドレスモードと呼ぶ)である。インタフェースモード設定信号は、プログラムするCAMセルの指定方法を、この2つで切り換える信号である。
図12にWPビットセレクト回路33の詳細な構成を示す。図12に示すようにWPビットセレクト回路33は、デコーダ51と、ANDゲート53と、スイッチ54とを主として備えている。ANDゲート53とスイッチ54とは、16I/Oに対応して16個ずつ設けられている。これらの構成により、擬似的にベリファイをパスさせるデータ比較回路34を選択する。
インタフェースモード設定信号によって、アドレスモードに設定されると、スイッチ54−(0)〜54−(15)はOFFし、入力したWP−CAMアドレス指定信号をデコーダ51でデコードして、ベリファイコントロール信号を生成する。また、インタフェースモード設定信号によって、I/Oモードに設定されると、インバータ52を介してデコーダ51に入力されるインタフェースモード設定信号によりデコーダ51がOFFになり、スイッチ54−(0)〜54−(15)がONする。
ANDゲート53−(0)〜53−(15)には、各I/Oから入力した信号(I/O−(0)〜I/O(15))と、CAMセルから予め読出したプレリードデータ(DAV)とが入力され、これらの信号の論理積をANDゲート53−(0)〜53−(15)で取る。すなわち、CAMセルのプログラム前のデータと、I/O入力したデータとが共に“1”の時にハイレベルの信号をベリファイコントロール信号として出力する。それ以外の時にはローレベルの信号をベリファイコントロール信号として出力する。
期待値保持回路32−(0)〜32−(15)は、図11に示すように各I/Oに対応して設けられ、I/O入力した情報を保持する。保持した情報は、通常用セルアレイ3のプログラム後に期待値データとしてデータ比較回路34に出力される。また期待値保持回路32−(0)〜32−(15)は、I/Oモードに設定されCAM用セルアレイ4のプログラム時に、I/O入力した情報を保持する。保持した情報は、CAM用セルアレイのプログラム後に期待値データとしてデータ比較回路34に出力される。また期待値保持回路32は、アドレスモードに設定されCAM用セルアレイ4のプログラム時に、インタフェースモード設定信号によりスイッチ35がONになると、WPビットセレクト回路33から出力されるベリファイコントロール信号を入力して期待値を生成する。そのデータは、CAM用セルアレイのプログラム後に期待値データとしてデータ比較回路34に出力される。
データ比較回路34−(0)〜34−(15)もI/Oに対応してそれぞれ設けられ、通常用セルアレイ3やCAM用セルアレイ4から読出したデータと、期待値保持回路32−(0)〜32−(15)に保持されたデータ(期待値)とを比較する。また、CAM用セルアレイ4のプログラム時には、データ比較回路34は、WPビットセレクト回路33からのベリファイコントロール信号によって、プログラム非対象のセルはすべて擬似的にベリファイをパスさせる。
次に、図13に示すフローチャートと、図14を参照しながら本実施例のI/Oモードに設定されCAM用セルアレイ4のプログラム時の動作を説明する。なお、本実施例では、書込みを保護するライトプロテクトの設定を、複数のセクタからなるセクタグループごとに行うことが可能であり、セクタグループごとにI/Oが割り振られている。書込みを保護するライトプロテクトに設定するセクタグループを選択すると、該当するセクタグループのWP−CAMセルに保護データがプログラムされる。
まず、プログラムするWP−CAMセルを設定したCAMプログラム設定信号(I/O−0,1・・・15)を各I/Oから入力する(ステップS10)。プログラムするWP−CAMセルに該当するI/Oには、プログラム実行を指示する情報“1”が入力され、その他のI/Oには、プログラムを行わないように指示する情報“0”が入力される(図14の(B)参照)。
次に、WP−CAMセルに既に記憶済みのデータを読出して、プレリードする(ステップS11)。プレリードしたデータを判定して、各WP−CAMセルのデータ書込み状態を判定する。既にデータが書き込まれ、プログラムされた状態の場合には、情報“0”が記憶されており、データが書き込まれていないイレース状態の場合には、情報“1”が記憶されている(図14の(A)参照)。
次に、I/O入力信号によって書込みに設定され、現在の状態がイレース状態にあるWP−CAMセルを検出する(ステップS12)。プレリードしたWP−CAMセルのデータが“1”のイレース状態で、I/O入力が“1”のWP−CAMセルを検出する。この判定には、図11に示す期待値保持回路32、データ比較回路34を使用することもできる。
そして検出したWP−CAMセルに対して、プログラムを実行する(ステップS13)(例えば、図14の(C)参照)。プログラムを実行すると、データが確かにWP−CAMセルに書き込まれたか否かを判定するベリファイをベリファイ回路13で実施する。この時、I/Oモードに設定されたインタフェースモード設定信号により、I/Oごとに設けられたスイッチ35−(0)〜35−(15)をOFFさせる。またインタフェースモード設定信号は、WPビットセレクト回路33にも入力され、スイッチ54−(0)〜54−(15)をONに設定する。
WPビットセレクト回路33は、各WP−CAMセルからプレリード時に読出したデータと、I/O入力した信号(I/O−0,1・・・15)との論理積をANDゲート53−(0)〜53−(15)で取り、ベリファイコントロール信号を生成する。I/O入力が“1”でプログラムに指定され、プレリードデータも“1”でイレースセルであった場合にハイレベルのベリファイコントロール信号がデータ比較回路34に出力される。それ以外の場合には、ローレベルのベリファイコントロール信号がデータ比較回路34に出力される。
期待値保持回路32−(0)〜32−(15)は、入力したI/O−(0),(1)・・・(15)の信号をそのままラッチしており、ラッチしたデータを所定タイミングでDIN0,1,2,・・・15としてデータ比較回路34−(0)〜34−(15)に出力する。このデータを期待値データと呼ぶ。また各データ比較回路34−(0)〜34−(15)には、WPビットセレクト回路33からのベリファイコントロール信号も入力される。
データ比較回路34−(0)〜34−(15)は、WP−CAMセルから読出したデータ、すなわちプログラム後のデータと、期待値保持回路32−(0)〜32−(15)から読出した期待値とを比較する。このとき、WPビットセクレト回路33からローレベルのベリファイコントロール信号が入力されているデータ比較回路34では、比較動作を行わずにハイレベルのマッチ信号を出力し、ベリファイを擬似的にパスさせる(図14の(D)参照)。またWPビットセクレト回路33からハイレベルのベリファイコントロール信号が入力されているデータ比較回路34では、対応する期待値保持回路32から入力した期待値データと、WP−CAMセルのプログラム後のデータとを比較する。I/O入力が“1”で「プログラムする」に設定され、プログラム後にWP−CAMセルから読み込んだデータが“1”でイレース状態であった場合には、Failを示すローレベル信号を判定回路12に出力する。また、図14(D)に示すようにI/O入力が“1”で、プログラム後にWP−CAMセルから読み込んだデータが“0”でプログラム状態であった場合には、ベリファイがパスしたことを示すハイレベル信号を判定回路12に出力する。
判定回路12は、各データ比較回路34−(0)〜34−(15)から出力されるマッチ信号がすべて“H”レベルの時に、データの書込み成功のベリファイ信号をコントローラに出力する。
このように本実施例は、プログラムの行われていないCAMセルに割り当てられたデータ比較回路の比較結果を、擬似的にパスさせる制御を行うので、プログラムされたCAMセルのプログラム結果をベリファイに反映させることができる。
次に、外部からセクタグループアドレス(SGA)が指定された場合の動作を図15に示すフローチャートと図16を参照しながら説明する。なお、図16に示すようにWP−CAMのプログラムコマンドを実行するためのシーケンスは、5サイクルでコマンド認識の手順を行い、6サイクル目で情報を書き換える。すなわちプログラムしたいSGAを指定して、合計6サイクルで1つのSGAのプログラムを実行する。
まず、プログラムするWP−CAMセルを設定したWP−CAMアドレス指定信号を入力する。このWP−CAMアドレス指定信号をデコーダで解析し(ステップS20)、実際にプログラムするWP−CAMセルに対応するアドレスを発生する。ベリファイ回路13においても、WP−CAMアドレス指定信号をデコーダ51でデコードする。そして、プログラムするWP−CAMセルに対応する期待値保持回路32と、データ比較回路34とにハイレベルのベリファイコントロール信号を出力する。その他の期待値保持回路32とデータ比較回路34には、ローレベルのベリファイコントロール信号を出力する。
次に、デコード結果から割り出されたWP−CAMセルに既に記憶されているデータを読出してプレリードする(ステップS21)。プレリードしたデータを判定して、該当WP−CAMセルのデータ書込み状態を判定する。
該当WP−CAMセルがイレース状態であると判定した場合には(ステップS22/YES)、そのセルにデータを書込み、プログラム状態とする(ステップS23)。該当WP−CAMセルがプログラム状態であった場合には(ステップS22/NO)、すでにプログラム済みとして処理を終了する。
WP−CAMセルへのプログラムが終了すると、データが確かにWP−CAMセルに書き込まれたか否かを判定するベリファイをベリファイ回路13で実施する。
WPビットセレクト回路33と、I/Oに対応して設けられたデータ比較回路34−(0)〜34−(15)とはそれぞれ配線で接続され、WPビットセレクト回路33からベリファイコントロール信号が出力されている。またアドレスモードの時には、インタフェースモード設定信号によってスイッチ35−(0)〜35−(15)をONさせている。このため、“H”レベルのベリファイコントール信号が出力される配線に接続された期待値保持回路32だけベリファイコントロール信号が入力される。“H”レベルのベリファイコントール信号が入力される期待値保持回路32は、該当するWP−CAMセルがプログラムされた場合の期待値“0”を生成してデータ比較回路34に出力する(ステップS24)(図16参照)。その他の“L”レベルのベリファイコントロール信号を入力する期待値保持回路32は、期待値の生成を行わない(ステップS24)。従って、データ比較回路34へは期待値は出力されない。
期待値保持回路32から期待値“0”を入力したデータ比較回路34は、該当するWP−CAMセルに記憶されたデータを読出して、このデータDAViと期待値“0”(図16には/DINiと表記する)とを比較する。その他のデータ比較回路34は、ベリファイコントール信号がローレベルであるので、強制的に“H”レベルのマッチ信号を出力する。すなわち、擬似的にベリファイをパスさせる(図16参照)。
判定回路12は、各データ比較回路34から出力されるマッチ信号がすべて“H”レベルの時に、データの書込み成功のベリファイ信号をコントローラに出力する(ステップS25)。すなわち、実際にプログラムされたWP−CAMセルのデータ比較結果を、ベリファイの結果として出力することができる。
図17に、図11に示す期待値保持回路32及びデータ比較回路34と、判定回路12の詳細な構成を示す。前述のようにデータ比較回路34の出力をWPビットセレクト回路33からのベリファイコントロール信号によって制御し、判定回路12に出力している。また、CAMセルを書き換えるモード信号であるCAMモード信号によりデータ比較回路34の制御を行っている。さらにインタフェースモード設定信号により期待値保持回路32の制御を行っている。
次に、図18を参照しながら本発明の第3実施例を説明する。CAM用セルアレイ4に書き込まれたCAMデータは、パワーオン時、又はハードウェアリセット時にスイッチ61をONにしてリードされ、図18に示すSRAM等の揮発性メモリ11に転送される。CAMデータの読出しの時には、この揮発性メモリ11から読み出すことで通常用セルアレイ3のリードアクセスなどのスピードが遅れないようにしている。本実施例ではCAMへのプログラム時、この揮発性メモリ11に記憶しているデータを期待値データとして使用し、データ比較回路34でCAMセルから読出したデータと比較する。
また、CAM用セルアレイ4にプログラムしたデータのベリファイ以外の時には、スイッチ62をCAMモード信号によって切り換えて期待値保持回路32とデータ比較回路34とをつなぐ。これにより、通常用セルアレイ3のベリファイ時には、期待値保持回路32を使用したベリファイも可能となる。
図19にWPビットセレクト回路33の構成を示す。本実施例では、実施例2のANDゲート53を設けずに、インタフェースモード設定信号によってI/Oモードに設定されると、I/O入力した信号I/O(0),(1),・・・(15)をそのままベリファイコントロール信号として出力する。またアドレスモード時には、インタフェースモード設定信号によりスイッチ54−(0)〜54−(15)をOFFして、デコーダ51からのデコード信号を出力する。デコーダ51は、アドレスモードに設定されると、WP−CAMアドレス指定信号を入力してこの信号を解析し、プログラムに指定されたWP−CAMセルを割り出す。そして、該当するWP−CAMセルがプログラムに指定されたことを示すハイレベルのベリファイコントロール信号を揮発性メモリ11に出力する。プログラムに指定されていないその他のWP−CAMセルに対応するベリファイコントロール信号は、ローレベルで出力される。
揮発性メモリ11には、CAMセルから読出したデータを保持する2つの記憶領域がある。第1記憶領域は、ベリファイによりCAMセルにそのデータが確かに記憶されていると証明されたデータを記憶する領域である。つまり、CAMセルへのプログラム(ベリファイを含む)完了後のCAMセルアレイ内の不揮発性メモリ情報と同一性を保持する。従って、通常セルアレイ3の通常動作時にその動作上必要な回路などからCAMセルのデータを要求された時には、この第1記憶領域のデータを出力する。また第2記憶領域は、一時的な記憶領域として使用され、プログラム時などにプレリードしたCAMセルのデータを記憶しておく領域である。
揮発性メモリ11は、WPビットセレクト回路33からベリファイコントロール信号を入力すると、この信号により指示されたWP−CAMセルの期待値として、プレリードにより読み込んだデータではなく図18に示すように“0”を出力する。また、その他のローレベルのベリファイコントロール信号に該当するWP−CAMセルのデータとして、プレリード時に第2記憶領域に記憶されたデータをそのまま出力(イニシャルパス)する。
本実施例のI/Oモードに設定されCAM用セルアレイ4のプログラム時の動作手順を図20に示すフローチャートと図21を参照しながら説明する。まず、プログラムするWP−CAMセルを設定したCAMプログラム設定信号(I/O−0,1・・・15)を各I/Oから入力する(ステップS30)。プログラムするWP−CAMセルに該当するI/Oには、プログラム実行を指示する情報“1”が入力され、その他のI/Oには情報“0”が入力される。
次に、WP−CAMセルからデータをプレリードし、各WP−CAMセルのデータ書込み状態を判定する(ステップS31)。既にデータが書き込まれ、プログラムされた状態の場合には、情報“0”が記憶されており、データが書き込まれていないイレース状態の場合には、情報“1”が記憶されている。
次に、I/O入力信号によって書込みに設定され、現在の状態がイレース状態にあるWP−CAMセルを検出する(ステップS32)。プレリードしたWP−CAMセルのデータが“1”のイレース状態で、I/O入力が“1”のWP−CAMセルを検出する。また書込みに指定されたWP−CAMセルが、すでにプログラム済みのものしかなかった場合には、この処理を終了し、エラーを出力する。なお、ここまでの処理はコントローラ8で行われる。
次に検出したWP−CAMセルに対して、プログラムを実行する(ステップS33)。プログラムを実行すると、データが確かにWP−CAMセルに書き込まれたか否かを判定するベリファイをベリファイ回路13で実施する。この時、インタフェースモード設定信号により、I/Oごとに設けられたスイッチ54−(0)〜54−(15)をONに設定する。またデコーダ51は、インバータ52を介して入力されるインタフェースモード設定信号により動作を停止する。
WPビットセレクト回路33は、入力したI/O−(0),(1)・・・(15)の信号をそのまま揮発性メモリ11にベリファイコントロール信号として出力する。すなわち、プログラムに指定されたWP−CAMセルには、“1”がI/O入力されるため、ベリファイコントロール信号としてハイレベルの信号を出力する。その他のWP−CAMセルに対応するベリファイコントロール信号はローレベルとなる。
揮発性メモリ11は、ハイレベルのベリファイコントロール信号で指定されるWP−CAMセルのデータとして期待値“0”をデータ比較回路34に出力する(図21参照)。その他のWP−CAMセルの期待値データは、第2記憶領域に記憶したプレリード時のデータをそのまま出力する(図21参照)。
各データ比較回路34−(0)〜34−(15)は、各WP−CAMセルからプログラム後に読み込んだデータと、揮発性メモリ11から読み込んだ期待値とを比較する(ステップS34)。プログラムが行われていないWP−CAMセルから読出したデータと期待値とは必ず一致するので、プログラムを行ったWP−CAMセルのデータと期待値の一致検出が、そのままベリファイの判定結果となる。WP−CAMセルから読出したデータと期待値とが一致しなかった場合には(ステップS35/NO)、もう一度プログラムからやり直す(ステップS33)。また、WP−CAMセルから読出したデータと期待値とが一致した場合には(ステップS35/YES)、一致を示すマッチ信号がデータ比較回路34から判定回路12に出力される。判定回路12は、すべてのデータ比較回路34からのマッチ信号が一致を示している場合には、ベリファイパスを示す信号をコントローラ8に出力する(ステップS36)。ベリファイに成功すると、WP−CAMセルまたはセンスアンプからデータを読み込んで、揮発性メモリ11の第1記憶領域に記憶し、正式なWP−CAMセルのデータとする(ステップS37)。
本実施例も、プログラムの行われていないCAMセルに割り当てられたデータ比較回路の比較結果を、擬似的にパスさせる制御を行うので、プログラムされたCAMセルのプログラム結果をベリファイに反映させることができる。
次に、図22のフローチャート、及び図23を参照しながらアドレスモード時の動作手順を説明する。まず、プログラムするWP−CAMセルを設定したWP−CAMアドレス指定信号を入力する。このWP−CAMアドレス指定信号をデコーダで解析し(ステップS40)、実際にプログラムするWP−CAMセルに対応するアドレスを発生する。ベリファイ回路13においても、WP−CAMアドレス指定信号をデコーダ51でデコードする。そして、プログラムするWP−CAMセルを指定するベリファイコントロール信号を揮発性メモリ11に出力する。
次に、デコード結果から割り出されたWP−CAMセルに既に記憶されているデータを読出してプレリードする(ステップS41)。プレリードしたデータを判定して、該当WP−CAMセルのデータ書込み状態を判定する。
該当WP−CAMセルがイレース状態であると判定した場合には(ステップS42/YES)、そのセルにデータを書込み、プログラム状態とする(ステップS43)。該当WP−CAMセルがプログラム状態であった場合には(ステップS42/NO)、すでにプログラム済みとして処理を終了する。
以降、上述した図20に示すフローチャートと同様に、検出したWP−CAMセルに対してプログラムが行われ、ベリファイが実施される。なお、ベリファイ時に、揮発性メモリ11はハイレベルのベリファイコントロール信号で指定されるWP−CAMセルのデータとして期待値“0”をデータ比較回路34に出力する(図23参照)。その他のWP−CAMセルの期待値データは、第2記憶領域に記憶したプレリード時のデータをそのまま出力する(図23参照)。各データ比較回路34−(0)〜34−(15)は、各WP−CAMセルからプログラム後に読み込んだデータと、揮発性メモリ11から読み込んだ期待値とを比較して、比較動作を行う。WP−CAMセルからプログラム後に読み込んだデータと期待値とが一致すると、ベリファイパスを示す信号がコントローラ8に出力される。ベリファイに成功すると、WP−CAMセルまたはセンスアンプからデータを読み込んで、揮発性メモリ11の第1記憶領域に記憶し、正式なWP−CAMセルのデータとする。
図24に詳細な構成を示す。図24に示す半導体装置は、CAMモード信号によりデータ比較回路34の入力を切り換えている。すなわち、CAMモード時には、揮発性メモリ11からの出力をデータ比較回路34に出力し、通常時には、期待値保持回路32の出力をデータ比較回路34に出力している。
上述した実施例は本発明の好適な実施例である。但しこれに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
例えば、揮発性メモリ11は、1つの記憶領域(第1記憶領域)のみであっても実現できる。CAM用セルアレイ4に書き込まれたCAMデータは、パワーオン時、又はハードウェアリセット時にスイッチ61をONにしてリードされ、揮発性メモリ11(第1記憶領域)に転送される。プレリードは、この揮発性メモリ11の情報を読み出すことでWP−CAMセルのデータが“1”のイレース状態で、I/O入力が“1”のWP−CAMセルを検出する。次に検出したWP−CAMセルに対して、プログラムを実行する。プログラムを実行すると、データが確かにWP−CAMセルに書き込まれたか否かを判定するベリファイをベリファイ回路13で実施する。WPビットセレクト回路33は、揮発性メモリ11にベリファイコントロール信号としてプログラムに指定されたWP−CAMセルにはハイレベルの信号を出力し、その他のWP−CAMセルに対応するベリファイコントロール信号はローレベルを出力する。揮発性メモリ11は、ハイレベルのベリファイコントロール信号で指定されるWP−CAMセルのデータとして第1記憶領域の読み出し出力部(図示せず)を第1記憶領域の情報とは無関係に期待値“0”をデータ比較回路34に出力する。簡易的には、第1記憶領域の読み出し出力部にベリファイコントロール信号によるクランプ回路を付加して出力を“0”にクランプする。その他のWP−CAMセルの期待値データは、第1記憶領域の情報を、前記クランプ部を作用させずにそのまま出力する。各データ比較回路は、各WP−CAMセルからプログラム後に読み込んだデータと、揮発性メモリ11から読み込んだ期待値とを比較する。ベリファイが一致した場合には、WP−CAMセルまたはセンスアンプからスイッチ61をONにしてデータを読み込んで、揮発性メモリ11の第1記憶領域に記憶し、正式なWP−CAMセルのデータとする。
尚、揮発性メモリ11の素子構成は所謂スタティックメモリセルであっても良いし、周辺回路に適用される論理素子で構成されたラッチ回路などであってもよい。