(57)【要約】【課題】増加したエラービットの訂正を可能とする。【解決手段】検査ビット生成回路１３はライトデータｗｄと仮想データ１８ａとに基づいて複数ビットのエラー検出及び訂正に対応した符号の検査ビットｗｐｂを生成し、メモリセル部１４はライトデータｗｄと検査ビットｗｐｂとを記憶する。試験モード設定回路１５は設定信号ｓｅｔに基づいて設定される動作状態が第１の状態のときに仮想データ１８ａに対して少なくとも１ビットの値が異なる仮想データ１８ｂを出力し、第２の状態のときに仮想データ１８ｂよりも仮想データ１８ａに対して値が異なるビット数が少ない仮想データ１８ｃを出力する。エラー検出回路１６はリードデータｒｄと、仮想データ１８ｂまたは仮想データ１８ｃとに基づいて生成した検査ビットと、検査ビットｒｐｂとに基づいてエラービットを検出し、エラー訂正回路１７はその検出結果に基づいてリードデータｒｄのエラービットを訂正する。【選択図】図１
2018195122.tif 000002
【特許請求の範囲】
【請求項１】
第１のビット数のライトデータと、第２のビット数の第１のデータとに基づいて、第３のビット数を上限とした複数ビットのエラー検出及び訂正に対応した符号の第１の検査ビットを生成する検査ビット生成回路と、
前記ライトデータと、前記第１の検査ビットとを記憶するメモリセル部と、
設定信号に基づいて設定される動作状態が第１の状態のときに、前記第１のデータに対して少なくとも１ビットの値が異なる第２のデータを出力し、前記動作状態が第２の状態のときに、前記第２のデータよりも前記第１のデータに対して値が異なるビット数が少ない第３のデータを出力する設定回路と、
前記ライトデータに対応しており前記メモリセル部から読み出された第１のリードデータと、前記設定回路が出力する前記第２のデータまたは前記第３のデータと、に基づいて前記符号の第２の検査ビットを生成し、前記第１の検査ビットに対応しており前記メモリセル部から読み出された第３の検査ビットと、前記第２の検査ビットと、に基づいてエラービットを検出し、検出結果を出力するエラー検出回路と、
前記検出結果に基づいて、前記エラービットのうち、少なくとも前記第１のリードデータに含まれる第１のエラービットを訂正するエラー訂正回路と、
を有する半導体記憶装置。
【請求項２】
前記第３のデータは、前記第１のデータと同じ値である、請求項１に記載の半導体記憶装置。
【請求項３】
前記第２のデータの前記第１のデータに対して値が異なる上限のビット数は、前記第３のビット数である、請求項１または２に記載の半導体記憶装置。
【請求項４】
前記設定信号は複数の値をもち、前記複数の値のそれぞれは、前記第１のデータに対して値が異なるビット数が異なる複数の第４のデータの何れか１つに対応付けられており、
前記設定回路は、前記複数の値のうちの第１の値を受け、前記複数の第４のデータの１つであり、前記第１の値に対応付けられた前記第２のデータを選択して出力する、請求項１乃至３の何れか一項に記載の半導体記憶装置。
【請求項５】
前記エラー検出回路は、前記第２のデータに関して検出された前記エラービットが、前記第１のデータに対して値が異なるビットと一致しない場合には、前記エラー訂正回路に、前記第１のリードデータの全ビット、または前記第３のビット数よりも多いビットの値を反転させる、請求項１乃至４の何れか一項に記載の半導体記憶装置。
【請求項６】
前記エラー検出回路は、前記エラービットのビット数が、前記第３のビット数を超える場合、前記エラー訂正回路に、前記第１のリードデータの全ビット、または前記第３のビット数よりも多いビットの値を反転させる、請求項１乃至４の何れか一項に記載の半導体記憶装置。
【請求項７】
前記エラー訂正回路は、前記第１のリードデータに含まれる前記第１のエラービットを訂正して第２のリードデータを出力し、前記エラービットのうち、前記第３の検査ビットに含まれる第２のエラービットを訂正して第４の検査ビットを出力し、
前記エラー検出回路は、前記エラービットの数が前記第３のビット数に達したときに、前記第３のビット数に達したことを示す検出信号を出力し、
前記半導体記憶装置は、さらに、
前記エラー検出回路が前記検出信号を出力した場合、前記ライトデータの代わりに、前記第２のリードデータを選択して、前記メモリセル部に供給する第１の選択回路と、
前記エラー検出回路が前記検出信号を出力した場合、前記第１の検査ビットの代わりに、前記第４の検査ビットを選択して、前記メモリセル部に供給する第２の選択回路と、
を有する請求項１乃至６の何れか一項に記載の半導体記憶装置。
【請求項８】
前記メモリセル部は冗長セルを有し、
前記半導体記憶装置は、さらに、
前記メモリセル部に記憶された前記第２のリードデータと前記第４の検査ビットの読み出し時に、再度、前記検出信号が出力されるか否かを判定し、前記検出信号が出力される場合に、前記第１のエラービットと前記第２のエラービットの値を、前記エラー訂正回路による訂正後に、前記冗長セルに書き込む制御を行う制御回路、を有する請求項７に記載の半導体記憶装置。
【請求項９】
前記符号はゴレイ符号であり、前記第１のビット数は８ビットであり、前記第２のビット数は４ビットである、請求項１乃至８の何れか一項に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
性能向上や歩留まり向上を目的にしてメモリセルから読み出されたデータのエラーを検出して訂正するＥＣＣ（Error Checking and Correcting）機能を備えた半導体記憶装置がある。たとえば、ＭＲＡＭ（Magnetoresistive Random Access Memory）などの不揮発性メモリでは、正常なビットであってもある確率（エラーレート）で不良となるため、上記のようなＥＣＣ機能を実行するＥＣＣ回路が用いられている。その一例として、ハミング符号を用いて１ビットのエラー検出及び訂正を行うＥＣＣ回路がある。
【０００３】
なお、２ビット以上のエラー検出及び訂正に対応した符号もある。その一例としてゴレイ符号がある。ゴレイ符号を用いることで、１１ビットの検査ビット（パリティビットと呼ばれる場合もある）と１２ビットのデータビットを合わせた２３ビットから、３ビットのエラーの検出及び訂正が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１１７４３０号公報
【特許文献２】特開平１１−７３７９７号公報
【特許文献３】特開２００８−１７６８２８号公報
【特許文献４】特開２００９−４３３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、従来の半導体記憶装置では、出荷前試験などの工程において歩留まりを上げるためにＥＣＣ回路を用いてエラー検出及び訂正が行われる。しかし、その工程において、訂正できるビット数分のエラービットの訂正を行ってしまった場合、その工程後に増加したエラービット（たとえば、出荷後に増えたエラービット）を訂正できなくなる問題がある。
【０００６】
１つの側面では、本発明は、増加したエラービットを訂正可能とする半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、第１のビット数のライトデータと、第２のビット数の第１のデータとに基づいて、第３のビット数を上限とした複数ビットのエラー検出及び訂正に対応した符号の第１の検査ビットを生成する検査ビット生成回路と、前記ライトデータと、前記第１の検査ビットとを記憶するメモリセル部と、設定信号に基づいて設定される動作状態が第１の状態のときに、前記第１のデータに対して少なくとも１ビットの値が異なる第２のデータを出力し、前記動作状態が第２の状態のときに、前記第２のデータよりも前記第１のデータに対して値が異なるビット数が少ない第３のデータを出力する設定回路と、前記ライトデータに対応しており前記メモリセル部から読み出された第１のリードデータと、前記設定回路が出力する前記第２のデータまたは前記第３のデータと、に基づいて前記符号の第２の検査ビットを生成し、前記第１の検査ビットに対応しており前記メモリセル部から読み出された第３の検査ビットと、前記第２の検査ビットと、に基づいてエラービットを検出し、検出結果を出力するエラー検出回路と、前記検出結果に基づいて、前記エラービットのうち、少なくとも前記第１のリードデータに含まれる第１のエラービットを訂正するエラー訂正回路と、を有する半導体記憶装置が提供される。
【発明の効果】
【０００８】
１つの側面では、本発明は、増加したエラービットの訂正が可能となる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の半導体記憶装置の一例を示す図である。
【図２】第２の実施の形態の半導体記憶装置の一例を示す図である。
【図３】１２ビットのデータの各ビットに対応付けられたゴレイ符号の１１ビットのデータパターンを示す図である。
【図４】７入力１出力のＸＯＲ演算を行うＸＯＲ回路の一例を示す図である。
【図５】７入力１出力のＸＯＲ演算回路の各入力とデータビットと出力される検査ビットとの対応関係を示す図である。
【図６】１２ビットのデータと１１ビットの検査ビットの各ビットに対応付けられたゴレイ符号の１１ビットのデータパターンを示す図である。
【図７】８入力１出力のＸＯＲ演算を行うＸＯＲ回路の一例を示す図である。
【図８】８入力１出力のＸＯＲ演算回路の各入力とリードデータ及び読み出された検査ビットの各ビットと、出力されるシンドロームの各ビットとの対応関係を示す図である。
【図９】シンドロームに基づくデコード信号とエラービットとの対応関係を示す図である。
【図１０】シンドロームデコーダの一例を示す図である。
【図１１】２ビットエラーが生じている場合のシンドロームデコーダの動作の一例を示すタイミングチャートである。
【図１２】４ビットエラーが生じている場合のシンドロームデコーダの動作の一例を示すタイミングチャートである。
【図１３】仮想データエラー検出回路とエラー信号出力回路の一例を示す図である。
【図１４】４ビットエラーが生じている場合の仮想データエラー検出回路とエラー信号出力回路の動作の一例を示すタイミングチャートである。
【図１５】エラー訂正回路の一例を示す図である。
【図１６】２ビットエラーが生じている場合のエラー訂正回路の動作の一例を示すタイミングチャートである。
【図１７】４ビットエラーが生じている場合のエラー訂正回路の動作の一例を示すタイミングチャートである。
【図１８】チップグレードの分別方法の一例を示すフローチャートである。
【図１９】第３の実施の形態の半導体記憶装置の一例を示す図である。
【図２０】選択回路の一例を示す図である。
【図２１】エラーＭＡＸフラグ生成回路の一例を示す図である。
【図２２】フラグ出力回路の一例を示す図である。
【図２３】冗長セルを有する第３の実施の形態の半導体記憶装置の一例の動作の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の半導体記憶装置の一例を示す図である。
【００１１】
半導体記憶装置１０は、データ入出力部１１、仮想データ設定回路１２、検査ビット生成回路１３、メモリセル部１４、試験モード設定回路１５、エラー検出回路１６、エラー訂正回路１７を有する。仮想データ設定回路１２、検査ビット生成回路１３、メモリセル部１４、試験モード設定回路１５、エラー検出回路１６、エラー訂正回路１７は、ＥＣＣ回路として機能する。なお、図１では、メモリセル部１４へのアドレスの指定を受け付ける部分や、書き込みコマンドや読み出しコマンドを受け付ける部分、アドレスに応じてメモリセルを選択する回路、書き込み回路や読み出し回路などについては、図示が省略されている。
【００１２】
データ入出力部１１は、メモリセル部１４へ書き込まれるライトデータｗｄを半導体記憶装置１０の外部から受け、メモリセル部１４から読み出され、エラー訂正されたリードデータｒｄａを半導体記憶装置１０の外部へ出力する。
【００１３】
仮想データ設定回路１２は、検査ビット生成回路１３に、ライトデータｗｄに付加される所定のビット数のデータ（以下仮想データと呼ぶ）１８ａを供給する。図１の例では、仮想データ１８ａは、各ビットの値が０の４ビット値（００００）である。
【００１４】
検査ビット生成回路１３は、所定のビット数のライトデータｗｄと、仮想データ１８ａとに基づいて、所定のビット数を上限とした複数ビットのエラー検出及び訂正に対応した符号の検査ビットｗｐｂを生成する。複数ビットのエラー検出及び訂正に対応した符号として、ゴレイ符号やＢＣＨ符号などがある。なお、ライトデータｗｄは、たとえば、１バイト（８ビット）単位でメモリセル部１４に書き込まれる。
【００１５】
たとえば、検査ビット生成回路１３が３ビットを上限としたエラー検出及び訂正に対応したゴレイ符号の検査ビットｗｐｂを生成する場合、８ビットのライトデータｗｄと４ビットの仮想データ１８ａから、１２ビットの検査ビットｗｐｂを生成する。
【００１６】
メモリセル部１４は、ライトデータｗｄと、検査ビットｗｐｂとを記憶する。図１の例では、検査ビットｗｐｂは、メモリセル部１４の検査ビット記憶部１４ａに書き込まれ、ライトデータｗｄは、メモリセル部１４のデータ記憶部１４ｂに書き込まれる。メモリセル部１４には、たとえば、図示しない複数のメモリセルがアレイ状に配置されている。メモリセルは、ＭＲＡＭセルや、ＦｅＲＡＭ（Ferroelectric Random Access Memory）セル、ＤＲＡＭ（Dynamic Random Access Memory）セルなどの記憶素子である。
【００１７】
試験モード設定回路１５は、設定信号ｓｅｔに基づいて設定される動作状態が第１の状態のとき、仮想データ１８ａに対して少なくとも１ビットの値が異なる仮想データ１８ｂを出力する。また、試験モード設定回路１５は、動作状態が第２の状態のとき、仮想データ１８ｂよりも仮想データ１８ａに対して値が異なるビット数が少ない仮想データ１８ｃを出力する。設定信号ｓｅｔは、たとえば、図示しない制御回路または、半導体記憶装置１０の外部から供給される。
【００１８】
図１の例では、仮想データ１８ｂは、仮想データ１８ａの最下位ビットが反転された４ビット値（０００１）であり、仮想データ１８ｃは、仮想データ１８ａと同じ４ビット値（００００）である。たとえば、意図的にエラーを発生させる場合には第１の状態が試験モード設定回路１５に設定され、意図的なエラーを発生させない場合には第２の状態が試験モード設定回路１５に供給される。
【００１９】
エラー検出回路１６は、試験モード設定回路１５が出力する仮想データ１８ｂまたは仮想データ１８ｃと、メモリセル部１４から読み出されたリードデータｒｄ（ライトデータｗｄに対応している）とに基づいて上記の符号の検査ビットを生成する。そして、エラー検出回路１６は、その検査ビットと検査ビット記憶部１４ａから読み出された検査ビットｒｐｂとに基づいてエラービットを検出し、検出結果を出力する。
【００２０】
なお、リードデータｒｄは、ライトデータｗｄに対応しており、エラービットがなければ、ライトデータｗｄと同じ値である。また、検査ビットｒｐｂは、検査ビットｗｐｂに対応しており、エラービットがなければ、検査ビットｗｐｂと同じ値である。
【００２１】
エラー訂正回路１７は、エラー検出回路１６が出力する検出結果に基づいて、エラービットのうち、リードデータｒｄに含まれるエラービットを訂正する。図１の例では、エラー訂正回路１７は、リードデータｒｄを受けて、リードデータｒｄのエラービットを訂正したリードデータｒｄａを出力している。
【００２２】
なお、エラー訂正回路１７は、検査ビットｒｐｂを受けて、検査ビットｒｐｂのエラービットを訂正し、出力してもよい。
以下、第１の実施の形態の半導体記憶装置１０の動作の一例を説明する。
【００２３】
なお、以下では、検査ビット生成回路１３は、３ビットのエラー検出及び訂正可能な符号の検査ビットｗｐｂを生成するものとして説明する。
たとえば、半導体記憶装置１０に対する出荷前試験時において、設定信号ｓｅｔに基づいて第１の状態が試験モード設定回路１５に設定される場合、エラー検出回路１６には、仮想データ１８ｂが供給される。
【００２４】
このとき、エラー検出回路１６は、仮想データ１８ｂとリードデータｒｄとに基づいて上記の符号の検査ビットを生成する。そして、エラー検出回路１６は生成した検査ビットと、検査ビット記憶部１４ａから読み出された検査ビットｒｐｂとに基づいてエラービットを検出する。
【００２５】
図１の例では、仮想データ１８ｂは、仮想データ１８ａに対して１ビットの値が異なるため、エラー検出回路１６では、少なくとも１ビットのエラービットが検出される。言い換えると、エラー検出回路１６は、さらに２ビットのエラービットを検出可能となる。
【００２６】
そのため、検査ビットｒｐｂにエラービットがなく、ライトデータｗｄに対してリードデータｒｄの２ビットの値が異なる場合（２ビットエラーが発生している場合）、エラー検出回路１６は、３ビットのエラービットを検出する。このとき、エラー訂正回路１７は、エラー検出回路１６が出力する検出結果に基づいて、リードデータｒｄに含まれる２ビットのエラービットの値を１から０または０から１に反転することでエラー訂正を行う。そして、エラー訂正回路１７は、リードデータｒｄａを出力する。
【００２７】
なお、図１に示すような仮想データ１８ｂが用いられ、リードデータｒｄに３ビット以上のエラービットが含まれる場合、４ビット以上のエラーとなるため、エラー検出回路１６ではエラービットが正常には検出されない。これによりエラービットの訂正は正常に行われず、リードデータｒｄａは、ライトデータｗｄと異なるものとなり、半導体記憶装置１０の不良が検出される。
【００２８】
上記のような半導体記憶装置１０の出荷前試験後に、設定信号ｓｅｔに基づいて第２の状態が試験モード設定回路１５に設定される場合、エラー検出回路１６には、仮想データ１８ｃが供給される。
【００２９】
このとき、エラー検出回路１６は、仮想データ１８ｃとリードデータｒｄとに基づいて上記の符号の検査ビットを生成する。そして、エラー検出回路１６は生成した検査ビットと、検査ビット記憶部１４ａから読み出された検査ビットｒｐｂとに基づいてエラービットを検出する。
【００３０】
図１の例では、仮想データ１８ｃは、仮想データ１８ａと同じ値をもつため、エラー検出回路１６では、意図的に発生させたエラービットは検出されない。言い換えると、エラー検出回路１６は、３ビットのエラービットを検出可能となる。
【００３１】
そのため、出荷前試験時に検出された２ビットのエラーに加えてさらに１ビットのエラーが発生した場合でも、エラー検出回路１６は、その増加したエラービットを検出できる。たとえば、検査ビットｒｐｂにエラービットがなく、リードデータｒｄに３ビットのエラービットが生じている場合、エラー訂正回路１７は、エラー検出回路１６が出力する検出結果に基づいて、その３ビットのエラービットの値を反転することでエラー訂正を行う。そして、エラー訂正回路１７は、リードデータｒｄａを出力する。
【００３２】
このように、第１の実施の形態の半導体記憶装置１０によれば、ライトデータｗｄとメモリセル部１４に書き込まれない仮想データ１８ａとに基づいて検査ビットｗｐｂが生成される。そして、読み出された検査ビットｒｐｂを用いたエラー検出及び訂正時に、仮想データ１８ｂ，１８ｃを用いて意図的なエラービット数が設定されることで、リードデータｒｄに対するエラーの訂正能力（検出し訂正できるエラービットの上限）を変えられる。たとえば、上記のように出荷前試験時には訂正能力を制限し、その後に訂正能力を最大にするなどの変更ができる。これにより、出荷後などに増加するエラービットの訂正が可能になる。
【００３３】
なお、上記では、意図的に１ビットエラーを発生させる仮想データ１８ｂを用いた例を説明したが、２ビット以上のエラービットを発生させる仮想データを用いてもよい。その例については後述する。
【００３４】
（第２の実施の形態）
図２は、第２の実施の形態の半導体記憶装置の一例を示す図である。
半導体記憶装置２０は、ゴレイ符号を用いてエラー検出及び訂正を行うＥＣＣ機能を有する。半導体記憶装置２０は、データ入出力部２１、仮想データ設定回路２２、検査ビット生成回路２３、メモリセル部２４、試験モード設定回路２５、エラー検出回路２６、エラー訂正回路２７を有する。
【００３５】
なお、図２では、メモリセル部２４へのアドレスの指定を受け付ける部分や、書き込みコマンドや読み出しコマンドを受け付ける部分、アドレスに応じてメモリセルを選択する回路、書き込み回路や読み出し回路などについては、図示が省略されている。
【００３６】
データ入出力部２１は、メモリセル部２４へ８ビット単位で書き込まれるライトデータＷＤを半導体記憶装置２０の外部から受け、メモリセル部２４から８ビット単位で読み出され、エラー訂正されたリードデータＲＤａを半導体記憶装置２０の外部へ出力する。
【００３７】
仮想データ設定回路２２は、検査ビット生成回路２３に、ライトデータＷＤに付加される４ビットの仮想データを供給する。
検査ビット生成回路２３は、８ビットのライトデータＷＤに対して、たとえば、上位側に４ビットの仮想データを付加した１２ビットのデータに基づいて、ゴレイ符号の１１ビットの検査ビットＷＰＢを生成する。
【００３８】
メモリセル部２４は、ライトデータＷＤと、検査ビットＷＰＢとを記憶する。図２の例では、検査ビットＷＰＢは、メモリセル部２４の検査ビット記憶部２４ａに書き込まれ、ライトデータＷＤは、メモリセル部２４のデータ記憶部２４ｂに書き込まれる。メモリセル部２４には、たとえば、図示しない複数のメモリセルがアレイ状に配置されている。メモリセルは、ＭＲＡＭセルや、ＦｅＲＡＭセル、ＤＲＡＭセルなどの記憶素子である。各メモリセルは、半導体記憶装置２０の図示しないアドレス端子または、図示しない制御回路から供給されるアドレスによって指定される。そして、指定されたメモリセルから図示しない読み出し回路によってデータが読み出される、または指定されたメモリセルに図示しない書き込み回路によってデータが書き込まれる。
【００３９】
試験モード設定回路２５は、設定信号ｓｅｔａ，ｓｅｔｂ，ｓｅｔｃを受ける。設定信号ｓｅｔａ〜ｓｅｔｃは、たとえば、図示しない制御回路または、半導体記憶装置２０の外部から供給される。この設定信号ｓｅｔａ〜ｓｅｔｃの値に基づいて、動作状態として４つの状態（試験モード）の何れかが、試験モード設定回路２５に設定される。そして、試験モード設定回路２５は、設定された試験モードに対応付けられた４ビットの仮想データを出力する。
【００４０】
設定信号ｓｅｔａ〜ｓｅｔｃのそれぞれは、たとえば、０または１の１ビット値である。その場合、設定信号ｓｅｔａ〜ｓｅｔｃのそれぞれは、３ビットの設定信号の各ビット値に対応しているとみなすこともできる。３ビットの設定信号は、設定信号ｓｅｔａ〜ｓｅｔｃの値に応じた複数の値をもつ。そして、その複数の値のそれぞれは、仮想データ設定回路２２が出力する仮想データに対して異なるビット数がそれぞれ異なる複数の仮想データの何れか１つに対応付けられている。
【００４１】
図２には、設定信号ｓｅｔａ〜ｓｅｔｃによる３ビット値と仮想データとの対応関係の一例が示されている。たとえば、仮想データ設定回路２２が出力する仮想データが“００００”である場合、設定信号ｓｅｔａが１、設定信号ｓｅｔｂ，ｓｅｔｃが０である３ビット値は、仮想データ“０００１”に対応付けられている。また、設定信号ｓｅｔｂが１、設定信号ｓｅｔａ，ｓｅｔｃが０である３ビット値は、仮想データ“００１１”に対応付けられている。また、設定信号ｓｅｔｃが１、設定信号ｓｅｔａ，ｓｅｔｂが０である３ビット値は、仮想データ“０１１１”に対応付けられている。また、設定信号ｓｅｔａ〜ｓｅｔｃが全て０である３ビット値は、仮想データ“００００”に対応付けられている。なお、ゴレイ符号でエラー検出及び訂正が可能であるのは２３ビット当たり３ビットまでであるため、試験モード設定回路２５が出力する仮想データの最上位ビットは０で固定であるものとする。
【００４２】
試験モード設定回路２５は、上記のような４種類の３ビット値のうちの１つの値を受け、複数の仮想データのうち、その１つの値に対応付けられた仮想データを選択して出力する。
【００４３】
以下上記４つの試験モード（４種類の仮想データの何れかを出力する動作状態）を、第１試験モード、第２試験モード、第３試験モード、通常モードという。
第１試験モードは、意図的に１ビットエラーを発生させる試験モードである。第１試験モードでは、試験モード設定回路２５は、仮想データ設定回路２２が出力する仮想データに対して１ビットの値が異なる仮想データを出力する。
【００４４】
第２試験モードは、意図的に２ビットエラーを発生させる試験モードである。第２試験モードでは、試験モード設定回路２５は、仮想データ設定回路２２が出力する仮想データに対して２ビットの値が異なる仮想データを出力する。
【００４５】
第３試験モードは、意図的に３ビットエラーを発生させる試験モードである。第３試験モードでは、試験モード設定回路２５は、仮想データ設定回路２２が出力する仮想データに対して３ビットの値が異なる仮想データを出力する。
【００４６】
通常モードは、意図的なビットエラーを発生させない試験モードである。通常モードでは、試験モード設定回路２５は、仮想データ設定回路２２が出力する仮想データと同じ値の仮想データを出力する。
【００４７】
たとえば、設定信号ｓｅｔａが１、設定信号ｓｅｔｂ，ｓｅｔｃが０のときは、第１試験モードが設定され、設定信号ｓｅｔｂが１、設定信号ｓｅｔａ，ｓｅｔｃが０のときは、第２試験モードが設定される。また、設定信号ｓｅｔｃが１、設定信号ｓｅｔａ，ｓｅｔｂが０のときは、第３試験モードが設定され、設定信号ｓｅｔａ〜ｓｅｔｃが全て０のときは、通常モードが設定される。
【００４８】
エラー検出回路２６は、試験モード設定回路２５が出力する仮想データと、メモリセル部２４から読み出されたリードデータＲＤとに基づいてゴレイ符号の検査ビットを生成する。そして、エラー検出回路２６は、その検査ビットと検査ビット記憶部２４ａから読み出された検査ビットＲＰＢとに基づいてエラービットを検出し、その検出結果に基づいてエラー信号を出力する。
【００４９】
なお、リードデータＲＤは、ライトデータＷＤに対応しており、エラービットがなければ、ライトデータＷＤと同じ値である。また、検査ビットＲＰＢは、検査ビットＷＰＢに対応しており、エラービットがなければ、検査ビットＷＰＢと同じ値である。
【００５０】
エラー検出回路２６は、シンドローム生成回路２６ａ、シンドロームデコーダ２６ｂ、仮想データエラー検出回路２６ｃ、エラー信号出力回路２６ｄを有する。
シンドローム生成回路２６ａは、８ビットのリードデータＲＤと試験モード設定回路２５から供給される４ビットの仮想データとに基づいて、ゴレイ符号の検査ビットを生成する。そしてシンドローム生成回路２６ａは、生成した検査ビットと検査ビットＲＰＢとに基づいてシンドロームを生成し、出力する。
【００５１】
シンドロームデコーダ２６ｂは、シンドロームをデコードし、エラービットの検出結果を出力する。
仮想データエラー検出回路２６ｃは、シンドロームデコーダ２６ｂが出力するエラービットの検出結果と、設定信号ｓｅｔａ〜ｓｅｔｃとに基づいて、試験モード設定回路２５が出力する仮想データに意図しないエラーが生じているか否かを検出する。
【００５２】
エラー信号出力回路２６ｄは、シンドロームデコーダ２６ｂが出力するエラービットの検出結果と、仮想データエラー検出回路２６ｃによる仮想データのエラーの検出結果とに基づいて、エラー信号を出力する。
【００５３】
エラー訂正回路２７は、エラー検出回路２６が出力するエラー信号に基づいて、リードデータＲＤ、検査ビットＲＰＢ、仮想データに含まれるエラービットを訂正する。図２の例では、エラー訂正回路２７は、リードデータＲＤと検査ビットＲＰＢと仮想データを受けて、それらのエラービットを訂正したリードデータＲＤａ、検査ビットＲＰＢａ、仮想データＶＤａを出力している。なお、検査ビットＲＰＢａ、仮想データＶＤａは、データ入出力部２１には送られない。つまり、半導体記憶装置２０の外部には出力されない。
【００５４】
（ゴレイ符号に用いられる１１ビットのデータパターンと、検査ビットＷＰＢの生成方法）
ゴレイ符号では、１２ビットのデータの各ビットに、以下に示すような１１ビットのデータパターンが対応付けられている。
【００５５】
図３は、１２ビットのデータの各ビットに対応付けられたゴレイ符号の１１ビットのデータパターンを示す図である。
たとえば、ビットＤ＜０＞には、“１０００１１１０１０１”の１１ビットが対応付けられており、ビットＤ＜１１＞には、“１１０００１１１０１０”の１１ビットが対応付けられている。
【００５６】
以下、図３のビットＤ＜０＞〜Ｄ＜１１＞のうち、たとえば、下位８ビットであるビットＤ＜０＞〜Ｄ＜７＞が、第２の実施の形態の半導体記憶装置２０における８ビットのライトデータＷＤに対応するものとする。また、図３のビットＤ＜０＞〜Ｄ＜１１＞のうち、上位４ビットであるビットＤ＜８＞〜Ｄ＜１１＞が、第２の実施の形態の半導体記憶装置２０において、仮想データ設定回路２２が出力する４ビットの仮想データに対応するものとする。
【００５７】
また、ビットＤ＜０＞〜Ｄ＜１１＞のそれぞれに対応付けられた上記の１１ビットのデータパターンの各ビットは、図３に示されているように、検査ビットＷＰＢのビットＰ＜０＞〜Ｐ＜１０＞のそれぞれに対応付けられているものとする。
【００５８】
検査ビットＷＰＢのビットＰ＜０＞〜Ｐ＜１０＞のそれぞれは、ビットＤ＜０＞〜Ｄ＜１１＞のうち、上記１１ビットのデータパターンにおいて“１”となっているビットの値を排他的論理和演算（以下ＸＯＲ演算という）することで得られる。
【００５９】
たとえば、ビットＰ＜０＞の値は、ビットＤ＜０＞〜Ｄ＜４＞，Ｄ＜７＞，Ｄ＜１０＞の値をＸＯＲ演算することで得られる。ビットＰ＜１０＞の値は、ビットＤ＜０＞〜Ｄ＜３＞，Ｄ＜６＞，Ｄ＜９＞，Ｄ＜１１＞の値をＸＯＲ演算することで得られる。ビットＰ＜０＞〜Ｐ＜１０＞の何れの値も、ビットＤ＜０＞〜Ｄ＜１１＞のうちの７つの値をＸＯＲ演算することで得られる。
【００６０】
すなわち、検査ビット生成回路２３として、７入力１出力のＸＯＲ演算を行うＸＯＲ回路を用いることで、検査ビットＷＰＢを生成することができる。
図４は、７入力１出力のＸＯＲ演算を行うＸＯＲ回路の一例を示す図である。
【００６１】
７入力１出力のＸＯＲ演算を行うＸＯＲ回路２３ａは、６つの２入力１出力のＸＯＲ演算を行うＸＯＲ回路２３ａ１，２３ａ２，２３ａ３，２３ａ４，２３ａ５，２３ａ６により実現可能である。
【００６２】
ＸＯＲ回路２３ａ１は、入力値ｉｎ１と入力値ｉｎ２とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ２は、入力値ｉｎ３と入力値ｉｎ４とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ３は、入力値ｉｎ５と入力値ｉｎ６とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ４は、ＸＯＲ回路２３ａ１の出力値と、ＸＯＲ回路２３ａ２の出力値とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ５は、入力値ｉｎ７とＸＯＲ回路２３ａ３の出力値とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ６は、ＸＯＲ回路２３ａ４の出力値とＸＯＲ回路２３ａ５の出力値とのＸＯＲ演算を行う。ＸＯＲ回路２３ａ６の出力値が、７入力１出力のＸＯＲ回路２３ａの出力値ｏｕｔとなる。
【００６３】
図５は、７入力１出力のＸＯＲ演算回路の各入力とデータビットと出力される検査ビットとの対応関係を示す図である。
たとえば、入力値ｉｎ１〜ｉｎ７として、図３に示したデータのビットＤ＜０＞〜Ｄ＜４＞，Ｄ＜７＞，Ｄ＜１０＞の値を用いることで、出力値ｏｕｔとして、ビットＰ＜０＞が得られる。また、入力値ｉｎ１〜ｉｎ７として、図３に示したデータのビットＤ＜０＞〜Ｄ＜３＞，Ｄ＜６＞，Ｄ＜９＞，Ｄ＜１１＞の値を用いることで、ビットＰ＜１０＞の値が得られる。
【００６４】
図５に示すようなビットＰ＜０＞〜Ｐ＜１０＞を全て同時に生成するためには、１１個の７入力１出力のＸＯＲ回路を用いればよい。
（シンドロームの生成方法）
図６は、１２ビットのデータと１１ビットの検査ビットの各ビットに対応付けられたゴレイ符号の１１ビットのデータパターンを示す図である。
【００６５】
ビットｐ＜０＞〜ｐ＜１０＞は、検査ビット記憶部２４ａから読み出された検査ビットＲＰＢのビットに対応している。
たとえば、ビットｐ＜０＞には、“００００００００００１”の１１ビットが対応付けられており、ビットｐ＜１０＞には、“１００００００００００”の１１ビットが対応付けられている。
【００６６】
ビットｄ＜０＞〜ｄ＜１１＞は、８ビットのリードデータＲＤと、試験モード設定回路２５から供給される４ビットの仮想データのビットである。ビットｄ＜０＞〜ｄ＜１１＞のうち、たとえば、下位８ビットであるビットｄ＜０＞〜ｄ＜７＞がリードデータＲＤに対応しており、上位４ビットであるビットｄ＜８＞〜ｄ＜１１＞が仮想データに対応している。
【００６７】
ビットｄ＜０＞〜ｄ＜１１＞のそれぞれに対応付けられているデータパターンは、図３に示したビットＤ＜０＞〜Ｄ＜１１＞のそれぞれに対応付けられているデータパターンと同じである。
【００６８】
さらに、ビットｄ＜０＞〜ｄ＜１１＞，ｐ＜０＞〜ｐ＜１０＞のそれぞれに対応付けられた上記の１１ビットのデータパターンの各ビットは、１１ビットのシンドロームのビットＳ＜０＞〜Ｓ＜１０＞のそれぞれに対応付けられている。シンドロームのビットＳ＜０＞〜Ｓ＜１０＞のそれぞれは、ビットｄ＜０＞〜ｄ＜１１＞，ｐ＜０＞〜ｐ＜１０＞のうち、上記１１ビットのデータパターンにおいて“１”となっているビットの値をＸＯＲ演算することで得られる。
【００６９】
たとえば、ビットＳ＜０＞の値は、ビットｄ＜０＞〜ｄ＜４＞，ｄ＜７＞，ｄ＜１０＞，ｐ＜０＞の値をＸＯＲ演算することで得られる。ビットＳ＜１０＞の値は、ビットｄ＜０＞〜ｄ＜３＞，ｄ＜６＞，ｄ＜９＞，ｄ＜１１＞，ｐ＜１０＞の値をＸＯＲ演算することで得られる。ビットＳ＜０＞〜Ｓ＜１０＞の何れの値も、ビットｄ＜０＞〜ｄ＜１１＞，ｐ＜０＞〜ｐ＜１０＞のうちの８つの値をＸＯＲ演算することで得られる。
【００７０】
すなわち、シンドローム生成回路２６ａとして、８入力１出力のＸＯＲ演算を行うＸＯＲ回路を用いることで、シンドロームを生成することができる。
図７は、８入力１出力のＸＯＲ演算を行うＸＯＲ回路の一例を示す図である。
【００７１】
８入力１出力のＸＯＲ演算を行うＸＯＲ回路２６ａ１は、７入力１出力のＸＯＲ演算を行うＸＯＲ回路２６ａ２と、２入力１出力のＸＯＲ演算を行うＸＯＲ回路２６ａ３により実現可能である。
【００７２】
ＸＯＲ回路２６ａ２は、入力値ＩＮ１，ＩＮ２，ＩＮ３，ＩＮ４，ＩＮ５，ＩＮ６，ＩＮ７のＸＯＲ演算を行う。ＸＯＲ回路２６ａ２の出力は、リードデータＲＤに基づいて生成された１ビットの検査ビットＰＢに相当する。ＸＯＲ回路２６ａ２の回路構成は、図４に示したＸＯＲ回路２３ａと同じである。
【００７３】
ＸＯＲ回路２６ａ３は、入力値ＩＮ０と検査ビットＰＢとのＸＯＲ演算を行う。ＸＯＲ回路２６ａ３の出力が、８入力１出力のＸＯＲ回路２６ａ１の出力値ＯＵＴ（すなわちシンドロームの１ビット）となる。
【００７４】
図８は、８入力１出力のＸＯＲ演算回路の各入力とリードデータ及び読み出された検査ビットの各ビットと、出力されるシンドロームの各ビットとの対応関係を示す図である。
たとえば、入力値ＩＮ０〜ＩＮ７として、図６に示したビットｐ＜０＞，ｄ＜０＞〜ｄ＜４＞，ｄ＜７＞，ｄ＜１０＞の値を用いることで、出力値ＯＵＴとして、ビットＳ＜０＞が得られる。また、入力値ＩＮ０〜ＩＮ７として、図６に示したビットｐ＜１０＞，ｄ＜０＞〜ｄ＜３＞，ｄ＜６＞，ｄ＜９＞，ｄ＜１１＞の値を用いることで、ビットＳ＜１０＞の値が得られる。
【００７５】
図８に示すようなビットＳ＜０＞〜Ｓ＜１０＞を全て同時に生成するためには、１１個の８入力１出力のＸＯＲ回路を用いればよい。
（シンドロームデコーダ２６ｂによるエラービットの検出方法）
シンドローム生成回路２６ａが出力する１１ビットのシンドロームによって、２０４８通りのエラービットの検出結果が表せる。シンドロームデコーダ２６ｂは、シンドロームをデコードし、エラービットの検出結果を出力する。
【００７６】
図９は、シンドロームに基づくデコード信号とエラービットとの対応関係を示す図である。
シンドロームデコーダ２６ｂは、１１ビットのシンドロームに基づいて、デコード信号ＳＯ＜＊＞を生成する。“＊”は、１１ビットのシンドロームを１０進数で表した値である。たとえば、ビットＳ＜０＞〜Ｓ＜１０＞が全て０であれば、＊＝０であり、ビットＳ＜０＞が１でビットＳ＜１＞〜Ｓ＜１０＞が０であれば、＊＝１であり、ビットＳ＜０＞〜Ｓ＜１０＞が全て１であれば、＊＝２０４７である。
【００７７】
シンドロームデコーダ２６ｂは、シンドロームに基づいて、何れか１つが１となり、他が０となるデコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞を生成する。そしてシンドロームデコーダ２６ｂは、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞に基づいて、エラービットの検出結果を出力する。図９において、ビットｄ＜０＞〜ｄ＜１１＞，ｐ＜０＞〜ｐ＜１０＞のうち、黒い四角のマークが付されたビットが、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞が示すエラービットである。
【００７８】
たとえば、デコード信号ＳＯ＜１５＞が１となる場合、ビットｄ＜３＞，ｄ＜６＞，ｐ＜５＞がエラービットであることが示される。また、デコード信号ＳＯ＜０＞が１となる場合、エラービットがないことが示される。
【００７９】
図１０は、シンドロームデコーダの一例を示す図である。図１０では、シンドロームデコーダ２６ｂの一部が示されている。
シンドロームデコーダ２６ｂは、デコード信号生成回路３０、複数のトランジスタ（たとえば、トランジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅ，３１ｆ，３１ｇ，３１ｈ，３１ｉ，３１ｊ，３１ｋ，３１ｌ，３１ｍ，３１ｎ，３１ｏ）を有する。さらにシンドロームデコーダ２６ｂは、ｗｉｒｅｄ−ＯＲ型の信号バス３２ａ１〜３２ａ２３、エラー訂正フラグ出力回路３３ａ１〜３３ａ２３を有する。
【００８０】
デコード信号生成回路３０は、タイミング信号ｔｉｍｅ（たとえば、クロック信号）が１になるタイミングで、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞の値に基づいて、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞を出力する論理回路である。なお、デコード信号生成回路３０は、タイミング信号ｔｉｍｅが０になるタイミングで、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞を全て０にリセットする。
【００８１】
複数のトランジスタは、ｎチャネル型ＭＯＳＦＥＴ（Metal-Oxide Semiconductor Field Effect Transistor）である。複数のトランジスタのそれぞれのゲートには、デコード信号ＳＯ＜１＞〜ＳＯ＜２０４７＞の何れかが供給され、複数のトランジスタのそれぞれのドレインは、信号バス３２ａ１〜３２ａ２３の何れかに接続されている。また複数のトランジスタのそれぞれのソースは接地されている（基準電位（たとえば、０Ｖ）となっている）。
【００８２】
たとえば、トランジスタ３１ａのゲートには、デコード信号ＳＯ＜１＞が供給され、トランジスタ３１ａのドレインは、信号バス３２ａ１３に接続されている。また、トランジスタ３１ｆ，３１ｇのゲートには、デコード信号ＳＯ＜５＞が供給され、トランジスタ３１ｆのドレインは、信号バス３２ａ１３に接続され、トランジスタ３１ｇのドレインは、信号バス３２ａ１５に接続されている。
【００８３】
信号バス３２ａ１〜３２ａ２３のそれぞれは、エラー訂正フラグ出力回路３３ａ１〜３３ａ２３のうち対応する１つに接続されている。たとえば、信号バス３２ａ１は、エラー訂正フラグ出力回路３３ａ１に接続され、信号バス３２ａ２３は、エラー訂正フラグ出力回路３３ａ２３に接続されている。以下信号バス３２ａ１〜３２ａ２３を伝搬する信号を信号ｅｂｄ＜０＞〜ｅｂｄ＜１１＞，ｅｂｐ＜０＞〜ｅｂｐ＜１０＞という。
【００８４】
エラー訂正フラグ出力回路３３ａ１〜３３ａ２３は、信号ｅｂｄ＜０＞〜ｅｂｄ＜１１＞，ｅｂｐ＜０＞〜ｅｂｐ＜１０＞に基づいて、エラービットの検出結果として、エラー訂正フラグを出力する。
【００８５】
たとえば、エラー訂正フラグ出力回路３３ａ２３は、ｐチャネル型ＭＯＳＦＥＴであるトランジスタ３３ｂ，３３ｃ、インバータ回路３３ｄを有する。なお、トランジスタ３３ｃは、弱トランジスタである。
【００８６】
トランジスタ３３ｂ，３３ｃのドレイン及びインバータ回路３３ｄの入力端子は、信号バス３２ａ２３に接続されている。トランジスタ３３ｂ，３３ｃのソースには、電源電圧が供給される。トランジスタ３３ｂのゲートには、リセット信号ｒｓｔｂが、たとえば、図示しない制御回路から供給され、トランジスタ３３ｃのゲート及びインバータ回路３３ｄの出力端子の電位が、エラー訂正フラグｅｒｒｐａ＜１０＞となる。
【００８７】
図１０では図示が省略されているが、エラー訂正フラグ出力回路３３ａ１〜３３ａ２３のうち、エラー訂正フラグ出力回路３３ａ２３以外についても同様の回路構成となっており、エラー訂正フラグを出力する。以下、エラー訂正フラグ出力回路３３ａ１〜３３ａ２３の出力をエラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞という。エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞は、信号ｅｂｄ＜０＞〜ｅｂｄ＜１１＞に基づいて生成され、エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞は、信号ｅｂｐ＜０＞〜ｅｂｐ＜１０＞に基づいて生成される。
【００８８】
なお、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞は、リードデータＲＤ及び試験モード設定回路２５から供給される仮想データの、ビットｄ＜０＞〜ｄ＜１１＞のエラーの有無を示すものである。エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞は、検査ビットＲＰＢのビットｐ＜０＞〜ｐ＜１０＞のエラーの有無を示すものである。リセット信号ｒｓｔｂの電位がＨ（High）レベルのとき、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞のうち、（電位が）Ｈレベルになるエラー訂正フラグに対応するリードデータＲＤ、仮想データまたは検査ビットＲＰＢのビットがエラービットである。
【００８９】
たとえば、エラー訂正フラグｅｒｒｄａ＜５＞が、Ｈレベルである場合、リードデータＲＤのビットｄ＜５＞がエラービットである。
なお、デコード信号ＳＯ＜０＞は、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞の生成には用いられないが、エラービットの有無を示すために、半導体記憶装置２０の外部に出力されるようにしてもよい。
【００９０】
図１１は、２ビットエラーが生じている場合のシンドロームデコーダの動作の一例を示すタイミングチャートである。図１１には、検査ビットＲＰＢのビットｐ＜０＞，ｐ＜２＞の２ビットにエラーが生じている場合のシンドロームデコーダの動作の一例が示されている。
【００９１】
図１１には、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞、リセット信号ｒｓｔｂ、タイミング信号ｔｉｍｅ、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞の時間変化の一例が示されている。さらに、図１１には、信号ｅｂｄ＜０＞〜ｅｂｄ＜１１＞，ｅｂｐ＜０＞〜ｅｂｐ＜１０＞、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞の時間変化の一例が示されている。
【００９２】
初期状態ではリセット信号ｒｓｔｂは、（電位が）Ｌ（Low）レベルであり、図１０に示したトランジスタ３３ｂがオンし、信号ｅｂｐ＜１０＞は（電位が）Ｈレベル、エラー訂正フラグｅｒｒｐａ＜１０＞はＬレベルである。同様に信号ｅｂｄ＜０＞〜ｅｂｄ＜１０＞，ｅｂｐ＜０＞〜ｅｂｐ＜９＞はＨレベルであり、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜９＞はＬレベルである。
【００９３】
なお、たとえば、Ｈレベルは電源電圧の電位レベルであり、Ｌレベルは基準電位（たとえば、接地電位）である。Ｈレベルは、“１”に対応し、Ｌレベルは、“０”に対応する。
【００９４】
タイミングｔ１において、メモリセル部２４からリードデータＲＤと検査ビットＲＰＢが読み出された後、シンドローム生成回路２６ａでシンドロームが生成される（タイミングｔ２）。図１１の例では、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞のうち、ビットＳ＜０＞，Ｓ＜２＞の値がＨレベル（つまり“１”）で、他のビットの値はＬレベル（つまり“０”）となっている。
【００９５】
タイミングｔ３においてタイミング信号ｔｉｍｅがＨレベルに立ち上がっている。これによって、シンドロームデコーダ２６ｂのデコード信号生成回路３０は、ビットＳ＜０＞〜Ｓ＜１０＞の値に基づいて、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞を生成する。図１１の例では、タイミングｔ４において、デコード信号ＳＯ＜５＞だけがＨレベルとなり、他はＬレベルとなるデコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞が生成されている。なお、タイミングｔ３では、リセット信号ｒｓｔｂもＨレベルに立ち上がっている。
【００９６】
デコード信号ＳＯ＜５＞がＨレベルとなるとき、図１０に示したシンドロームデコーダ２６ｂにおいて、トランジスタ３１ｆ，３１ｇがオンする。したがって、信号バス３２ａ１３，３２ａ１５が基準電位となり、信号ｅｂｐ＜０＞，ｅｂｐ＜２＞がＬレベルとなる（タイミングｔ５）。そして、エラー訂正フラグｅｒｒｐａ＜０＞，ｅｒｒｐａ＜２＞がＨレベルとなる（タイミングｔ６）。信号ｅｂｐ＜０＞，ｅｂｐ＜２＞は、検査ビットＲＰＢのビットｐ＜０＞，ｐ＜２＞に対応している。したがって、シンドロームデコーダ２６ｂから、検査ビットＲＰＢのビットｐ＜０＞，ｐ＜２＞がエラービットであることを示す検出結果が出力されることになる。
【００９７】
タイミングｔ７において、タイミング信号ｔｉｍｅがＬレベルに立ち下がっている。これによって、デコード信号ＳＯ＜５＞がＬレベルになる（タイミングｔ８）。また、タイミングｔ９において、リセット信号ｒｓｔｂがＬレベルに立ち下がっている。これによって、信号ｅｂｐ＜０＞，ｅｂｐ＜２＞がＨレベルに戻り（タイミングｔ１０）、エラー訂正フラグｅｒｒｐａ＜０＞，ｅｒｒｐａ＜２＞はＬレベルに戻る（タイミングｔ１１）。
【００９８】
図１２は、４ビットエラーが生じている場合のシンドロームデコーダの動作の一例を示すタイミングチャートである。図１２には、検査ビットＲＰＢのビットｐ＜４＞，ｐ＜５＞，ｐ＜９＞，ｐ＜１０＞の４ビットにエラーが生じている場合の、図１１に示した各信号や値の時間変化の一例が示されている。
【００９９】
初期状態ではリセット信号ｒｓｔｂは、Ｌレベルであり、図１１に示したタイミングチャートと同様に、信号ｅｂｄ＜０＞〜ｅｂｄ＜１０＞，ｅｂｐ＜０＞〜ｅｂｐ＜１０＞はＨレベルであり、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞はＬレベルである。
【０１００】
タイミングｔ２０において、メモリセル部２４からリードデータＲＤと検査ビットＲＰＢが読み出された後、シンドローム生成回路２６ａでシンドロームが生成される（タイミングｔ２１）。図１２の例では、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞のうち、ビットＳ＜１０＞，Ｓ＜９＞（“Ｓ＜１０：９＞”と表記されている）と、ビットＳ＜５＞，Ｓ＜４＞（“Ｓ＜５：４＞”と表記されている）の値がＨレベル（つまり“１”）となっている。他のビット（“Ｓ＜８：６＞”、“Ｓ＜３：０＞”と表記されている）の値はＬレベル（つまり“０”）となっている。
【０１０１】
タイミングｔ２２においてタイミング信号ｔｉｍｅがＨレベルに立ち上がっている。これによって、シンドロームデコーダ２６ｂのデコード信号生成回路３０は、ビットＳ＜０＞〜Ｓ＜１０＞の値に基づいて、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞を生成する。図１２の例では、タイミングｔ２３において、デコード信号ＳＯ＜１５８４＞だけがＨレベルとなり、他はＬレベルとなるデコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞が生成されている。なお、タイミングｔ２２では、リセット信号ｒｓｔｂもＨレベルに立ち上がっている。
【０１０２】
デコード信号ＳＯ＜１５８４＞がＨレベルとなるとき、図１０に示したシンドロームデコーダ２６ｂにおいて、デコード信号ＳＯ＜１５８４＞に対応した複数のトランジスタ（図示せず）がオンする。これにより、信号ｅｂｐ＜１＞，ｅｂｐ＜３＞，ｅｂｄ＜１１＞がＬレベルとなる（タイミングｔ２４）。そして、エラー訂正フラグｅｒｒｐａ＜１＞，ｅｒｒｐａ＜３＞，ｅｒｒｄａ＜１１＞がＨレベルとなる（タイミングｔ２５）。信号ｅｂｐ＜１＞，ｅｂｐ＜３＞は、検査ビットＲＰＢのビットｐ＜１＞，ｐ＜３＞に対応している。また、信号ｅｂｄ＜１１＞は、４ビットの仮想データの最上位ビットであるビットｄ＜１１＞に対応している。
【０１０３】
したがって、シンドロームデコーダ２６ｂから、検査ビットＲＰＢのビットｐ＜１＞，ｐ＜３＞、仮想データの最上位ビットであるビットｄ＜１１＞がエラービットであることを示す検出結果が出力されることになる。
【０１０４】
この場合、エラー訂正回路２７では、実際にエラーが生じている検査ビットＲＰＢのビットｐ＜４＞，ｐ＜５＞，ｐ＜９＞，ｐ＜１０＞の４ビットは訂正されず、エラー訂正回路２７が誤訂正するビットｐ＜１＞，ｐ＜３＞，ｄ＜１１＞がエラーとして加わることになる。ビットｄ＜１１＞は仮想データのビットであるため、外部には出力されない。
【０１０５】
このような４ビットエラーの発生を半導体記憶装置２０の外部に通知するために、後述するような仮想データエラー検出回路２６ｃとエラー信号出力回路２６ｄが用いられる。  なお、図１２のタイミングｔ２６において、タイミング信号ｔｉｍｅがＬレベルに立ち下がっている。これによって、デコード信号ＳＯ＜１５８４＞がＬレベルになる（タイミングｔ２７）。また、タイミングｔ２８において、リセット信号ｒｓｔｂがＬレベルに立ち下がっている。これによって、信号ｅｂｐ＜１＞，ｅｂｐ＜３＞，ｅｂｄ＜１１＞がＨレベルに戻り（タイミングｔ２９）、エラー訂正フラグｅｒｒｐａ＜１＞，ｅｒｒｐａ＜３＞，ｅｒｒｄａ＜１１＞はＬレベルに戻る（タイミングｔ３０）。
【０１０６】
（仮想データエラー検出回路２６ｃとエラー信号出力回路２６ｄの一例）
図１３は、仮想データエラー検出回路とエラー信号出力回路の一例を示す図である。
なお、図１３の仮想データエラー検出回路２６ｃでは、設定信号ｓｅｔａが１（Ｈレベル）、設定信号ｓｅｔｂ，ｓｅｔｃが０（Ｌレベル）のときは、第１試験モードが設定されるものとしている。また、設定信号ｓｅｔｂが１、設定信号ｓｅｔａ，ｓｅｔｃが０のときは、第２試験モードが設定されるものとしている。また、設定信号ｓｅｔｃが１、設定信号ｓｅｔａ，ｓｅｔｂが０のときは、第３試験モードが設定され、設定信号ｓｅｔａ〜ｓｅｔｃが全て０のときは、通常モードが設定されるものとしている。
【０１０７】
また、図１３の仮想データエラー検出回路２６ｃでは、仮想データ設定回路２２からライトデータＷＤに付加される４ビットデータが“００００”、第１試験モードで試験モード設定回路２５が出力する仮想データが“０００１”であるものとしている。また、第２試験モードで試験モード設定回路２５が出力する仮想データが“００１１”、第３試験モードで試験モード設定回路２５が出力する仮想データが“０１１１”、通常モードで試験モード設定回路２５が出力する仮想データが“００００”であるものとしている。ゴレイ符号でエラー検出及び訂正が可能であるのは２３ビット当たり３ビットまでであるため、試験モード設定回路２５が出力する仮想データの最上位ビットは０（Ｌレベル）で固定であるものとしている。
【０１０８】
仮想データエラー検出回路２６ｃは、インバータ回路２６ｃ１，２６ｃ２，２６ｃ３，２６ｃ４、ＮＡＮＤ回路２６ｃ５，２６ｃ６，２６ｃ７，２６ｃ８，２６ｃ９，２６ｃ１０，２６ｃ１１，２６ｃ１２を有する。さらに、仮想データエラー検出回路２６ｃは、ＮＯＲ回路２６ｃ１３，２６ｃ１４，２６ｃ１５，２６ｃ１６，２６ｃ１７，２６ｃ１８を有する。
【０１０９】
ＮＯＲ回路２６ｃ１３の３つの入力端子には設定信号ｓｅｔａ〜ｓｅｔｃが供給される。ＮＯＲ回路２６ｃ１３の出力端子は、ＮＡＮＤ回路２６ｃ５の一方の入力端子に接続されている。ＮＡＮＤ回路２６ｃ５の他方の入力端子には、エラー訂正フラグｅｒｒｄａ＜１１＞がインバータ回路２６ｃ４を介して供給される。ＮＡＮＤ回路２６ｃ６の３つの入力端子の１つ目には、エラー訂正フラグｅｒｒｄａ＜１０＞がインバータ回路２６ｃ３を介して供給され、２つ目には、エラー訂正フラグｅｒｒｄａ＜９＞がインバータ回路２６ｃ２を介して供給される。また、３つ目には、エラー訂正フラグｅｒｒｄａ＜８＞がインバータ回路２６ｃ１を介して供給される。
【０１１０】
ＮＡＮＤ回路２６ｃ７の一方の入力端子には、設定信号ｓｅｔａが供給され、他方の入力端子には、エラー訂正フラグｅｒｒｄａ＜１１＞がインバータ回路２６ｃ４を介して供給される。ＮＡＮＤ回路２６ｃ８の３つの入力端子の１つ目には、エラー訂正フラグｅｒｒｄａ＜１０＞がインバータ回路２６ｃ３を介して供給され、２つ目には、エラー訂正フラグｅｒｒｄａ＜９＞がインバータ回路２６ｃ２を介して供給される。また、３つ目には、エラー訂正フラグｅｒｒｄａ＜８＞が供給される。
【０１１１】
ＮＡＮＤ回路２６ｃ９の一方の入力端子には、設定信号ｓｅｔｂが供給され、他方の入力端子には、エラー訂正フラグｅｒｒｄａ＜１１＞がインバータ回路２６ｃ４を介して供給される。ＮＡＮＤ回路２６ｃ１０の３つの入力端子の１つ目には、エラー訂正フラグｅｒｒｄａ＜１０＞がインバータ回路２６ｃ３を介して供給され、２つ目には、エラー訂正フラグｅｒｒｄａ＜９＞が供給される。また、３つ目には、エラー訂正フラグｅｒｒｄａ＜８＞が供給される。
【０１１２】
ＮＡＮＤ回路２６ｃ１１の一方の入力端子には、設定信号ｓｅｔｃが供給され、他方の入力端子には、エラー訂正フラグｅｒｒｄａ＜１１＞がインバータ回路２６ｃ４を介して供給される。ＮＡＮＤ回路２６ｃ１２の３つの入力端子の１つ目には、エラー訂正フラグｅｒｒｄａ＜１０＞が供給され、２つ目には、エラー訂正フラグｅｒｒｄａ＜９＞が供給され、３つ目には、エラー訂正フラグｅｒｒｄａ＜８＞が供給される。
【０１１３】
ＮＯＲ回路２６ｃ１４の一方の入力端子は、ＮＡＮＤ回路２６ｃ５の出力端子に接続されており、他方の入力端子は、ＮＡＮＤ回路２６ｃ６の出力端子に接続されている。ＮＯＲ回路２６ｃ１５の一方の入力端子は、ＮＡＮＤ回路２６ｃ７の出力端子に接続されており、他方の入力端子は、ＮＡＮＤ回路２６ｃ８の出力端子に接続されている。ＮＯＲ回路２６ｃ１６の一方の入力端子は、ＮＡＮＤ回路２６ｃ９の出力端子に接続されており、他方の入力端子は、ＮＡＮＤ回路２６ｃ１０の出力端子に接続されている。ＮＯＲ回路２６ｃ１７の一方の入力端子は、ＮＡＮＤ回路２６ｃ１１の出力端子に接続されており、他方の入力端子は、ＮＡＮＤ回路２６ｃ１２の出力端子に接続されている。
【０１１４】
ＮＯＲ回路２６ｃ１８の４つの入力端子には、ＮＯＲ回路２６ｃ１４〜２６ｃ１７の出力端子が接続されている。ＮＯＲ回路２６ｃ１８の出力端子は、エラー信号出力回路２６ｄに接続されている。
【０１１５】
このような仮想データエラー検出回路２６ｃでは、試験モード設定回路２５が出力する仮想データに意図しないエラーが生じているか否か（設定信号ｓｅｔａ〜ｓｅｔｃに対応した仮想データか否か）を検出する。そして、仮想データエラー検出回路２６ｃは、その検出結果を示す仮想データビットエラーフラグｅｒｒｖｄを出力する。仮想データビットエラーフラグｅｒｒｖｄがＨレベルのときは、仮想データに意図しないエラーが生じていることを示し、仮想データビットエラーフラグｅｒｒｖｄがＬレベルのときは、仮想データに意図しないエラーが生じていないことを示す。
【０１１６】
たとえば、意図的に１ビットエラーを発生させる試験モードである第１試験モードが設定されている場合、エラー訂正フラグｅｒｒｄａ＜１１＞がＨレベルであれば、ＮＡＮＤ回路２６ｃ７の出力信号は、Ｈレベルとなる。この場合、ＮＯＲ回路２６ｃ１５の出力信号は、ＮＡＮＤ回路２６ｃ８の出力信号の論理レベルにかかわらず、Ｌレベルになる。第１試験モードの場合、設定信号ｓｅｔｂ，ｓｅｔｃは０であり、ＮＯＲ回路２６ｃ１４，２６ｃ１６，２６ｃ１７の出力信号はＬレベルになる。そのため、ＮＯＲ回路２６ｃ１８の出力信号である仮想データビットエラーフラグｅｒｒｖｄは、Ｈレベルとなる。つまり、仮想データに意図しないエラーが生じていることが検出される。
【０１１７】
エラー訂正フラグｅｒｒｄａ＜１１＞は、仮想データの最上位ビットであるビットｄ＜１１＞に対応している。仮想データの最上位ビットは、前述のように０で固定であるので、ビットｄ＜１１＞にエラーが生じている場合には、そのエラーは、意図しないエラーである。
【０１１８】
エラー訂正フラグｅｒｒｄａ＜１１＞がＨレベルとなる場合は、試験モードによらず、仮想データビットエラーフラグｅｒｒｖｄは、Ｈレベルとなる。
一方、第１試験モードが設定されており、エラー訂正フラグｅｒｒｄａ＜１１＞がＬレベルの場合、ＮＡＮＤ回路２６ｃ７の出力信号は、Ｌレベルとなる。この場合、ＮＯＲ回路２６ｃ１５の出力信号は、ＮＡＮＤ回路２６ｃ８の出力信号の論理レベルによって決まる。エラー訂正フラグｅｒｒｄａ＜８＞がＨレベルで、エラー訂正フラグｅｒｒｄａ＜９＞，ｅｒｒｄａ＜１０＞がＬレベルの場合は、ＮＡＮＤ回路２６ｃ８の出力信号はＬレベルとなり、それ以外の場合は、ＮＡＮＤ回路２６ｃ８の出力信号はＨレベルとなる。
【０１１９】
ＮＡＮＤ回路２６ｃ８の出力信号がＬレベルの場合、ＮＯＲ回路２６ｃ１５の出力信号はＨレベルとなり、ＮＯＲ回路２６ｃ１８の出力信号である仮想データビットエラーフラグｅｒｒｖｄはＬレベルとなる。ＮＡＮＤ回路２６ｃ８の出力信号がＨレベルの場合、ＮＯＲ回路２６ｃ１５の出力信号はＬレベルとなり、ＮＯＲ回路２６ｃ１８の出力信号である仮想データビットエラーフラグｅｒｒｖｄはＨレベルとなる。つまり、仮想データに意図しないエラーが生じていることが検出される。
【０１２０】
エラー訂正フラグｅｒｒｄａ＜９＞，ｅｒｒｄａ＜１０＞は、仮想データの２つのビットであるビットｄ＜９＞，ｄ＜１０＞に対応している。仮想データのビットｄ＜９＞，ｄ＜１０＞は、第１試験モードが設定されている場合には、意図的なエラーを生じさせないビットであるため、ビットｄ＜９＞，ｄ＜１０＞にエラーが生じている場合には、そのエラーは、意図しないエラーである。
【０１２１】
エラー信号出力回路２６ｄは、回路部２６ｄ１〜２６ｄ８，２６ｄ９〜２６ｄ１２，２６ｄ１３〜２６ｄ２３を有する。
回路部２６ｄ１〜２６ｄ２３のそれぞれは、ＯＲ回路である。図１３の例では、ＮＯＲ回路とインバータ回路とを用いてＯＲ回路が実現されている。たとえば、回路部２６ｄ１は、ＮＯＲ回路２６ｄａとインバータ回路２６ｄｂを有し、回路部２６ｄ９は、ＮＯＲ回路２６ｄｃとインバータ回路２６ｄｄを有し、回路部２６ｄ１３は、ＮＯＲ回路２６ｄｅとインバータ回路２６ｄｆを有する。
【０１２２】
回路部２６ｄ１〜２６ｄ８のそれぞれは、仮想データビットエラーフラグｅｒｒｖｄと、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜７＞の何れか１つとの論理和を、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞の１つとして出力する。
【０１２３】
たとえば、回路部２６ｄ１は、仮想データビットエラーフラグｅｒｒｖｄと、エラー訂正フラグｅｒｒｄａ＜０＞との論理和を、エラー信号ｅｒｒｄ＜０＞として出力する。回路部２６ｄ８は、仮想データビットエラーフラグｅｒｒｖｄと、エラー訂正フラグｅｒｒｄａ＜７＞との論理和を、エラー信号ｅｒｒｄ＜７＞として出力する。
【０１２４】
回路部２６ｄ１〜２６ｄ８は、仮想データビットエラーフラグｅｒｒｖｄがＨレベルになると、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜７＞の値によらず、Ｈレベルのエラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞を出力する。
【０１２５】
回路部２６ｄ９〜２６ｄ１２のそれぞれは、基準電位（Ｌレベルの電位）と、エラー訂正フラグｅｒｒｄａ＜８＞〜ｅｒｒｄａ＜１１＞の何れか１つとの論理和を、エラー信号ｅｒｒｄ＜８＞〜ｅｒｒｄ＜１１＞の１つとして出力する。
【０１２６】
たとえば、回路部２６ｄ９は、基準電位と、エラー訂正フラグｅｒｒｄａ＜８＞との論理和を、エラー信号ｅｒｒｄ＜８＞として出力する。回路部２６ｄ１２は、基準電位と、エラー訂正フラグｅｒｒｄａ＜１１＞との論理和を、エラー信号ｅｒｒｄ＜１１＞として出力する。
【０１２７】
回路部２６ｄ９〜２６ｄ１２は、エラー訂正フラグｅｒｒｄａ＜８＞〜ｅｒｒｄａ＜１１＞のうちＨレベルになるものに対応したエラー信号をＨレベルとする。たとえば、エラー訂正フラグｅｒｒｄａ＜８＞がＨレベルである場合、エラー信号ｅｒｒｄ＜８＞がＨレベルになる。
【０１２８】
回路部２６ｄ１３〜２６ｄ２３のそれぞれは、基準電位と、エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞の何れか１つとの論理和を、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞の１つとして出力する。
【０１２９】
たとえば、回路部２６ｄ１３は、基準電位と、エラー訂正フラグｅｒｒｐａ＜０＞との論理和を、エラー信号ｅｒｒｐ＜０＞として出力する。回路部２６ｄ２３は、基準電位と、エラー訂正フラグｅｒｒｐａ＜１０＞との論理和を、エラー信号ｅｒｒｐ＜１０＞として出力する。
【０１３０】
回路部２６ｄ１３〜２６ｄ２３は、エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞のうちＨレベルになるものに対応したエラー信号をＨレベルとする。たとえば、エラー訂正フラグｅｒｒｐａ＜０＞がＨレベルである場合、エラー信号ｅｒｒｐ＜０＞がＨレベルになる。
【０１３１】
図１４は、４ビットエラーが生じている場合の仮想データエラー検出回路とエラー信号出力回路の動作の一例を示すタイミングチャートである。
図１４には、エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞，ｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞の時間変化の一例が示されている。また、図１４には、仮想データビットエラーフラグｅｒｒｖｄ、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞，ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞の時間変化の一例が示されている。
【０１３２】
Ｌレベルのエラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞，ｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞のうち、エラー訂正フラグｅｒｒｐａ＜１＞，ｅｒｒｐａ＜３＞，ｅｒｒｄａ＜１１＞が、タイミングｔ４０で、Ｈレベルに立ち上がっている。前述のように、エラー訂正フラグｅｒｒｄａ＜１１＞がＨレベルになると、試験モードによらず、仮想データビットエラーフラグｅｒｒｖｄは、Ｈレベルとなる。これにより、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞がＨレベルになる。
【０１３３】
また、エラー訂正フラグｅｒｒｐａ＜１＞，ｅｒｒｐａ＜３＞，ｅｒｒｄａ＜１１＞がＨレベルになると、それらに対応したエラー信号ｅｒｒｐ＜１＞，ｅｒｒｐ＜３＞，ｅｒｒｄ＜１１＞がＨレベルになる。
【０１３４】
タイミングｔ４１において、エラー訂正フラグｅｒｒｐａ＜１＞，ｅｒｒｐａ＜３＞，ｅｒｒｄａ＜１１＞がＬレベルに立ち下がると、仮想データビットエラーフラグｅｒｒｖｄも、Ｌレベルとなる。また、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞，ｅｒｒｄ＜１１＞，ｅｒｒｐ＜１＞，ｅｒｒｐ＜３＞も、Ｌレベルになる。
【０１３５】
（エラー訂正回路２７の一例）
エラー訂正回路２７は、複数の２入力１出力のＸＯＲ回路で実現できる。
図１５は、エラー訂正回路の一例を示す図である。図１５には、ビットｄ＜０＞〜ｄ＜７＞のエラーを訂正する回路部分が示されている。
【０１３６】
エラー訂正回路２７は、２入力１出力のＸＯＲ回路２７ａ１〜２７ａ８を有する。
ＸＯＲ回路２７ａ１〜２７ａ８のそれぞれには、リードデータＲＤのビットｄ＜０＞〜ｄ＜７＞のうちの１ビットと、そのビットに対応するエラー訂正フラグ（ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞の何れか１つ）が入力される。ＸＯＲ回路２７ａ１〜２７ａ８の出力値であるビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞が、８ビットのリードデータＲＤａとなる。
【０１３７】
図示を省略しているが、ビットｄ＜８＞〜ｄ＜１１＞のエラーを訂正する回路部分は、４つのＸＯＲ回路で実現され、エラー信号ｅｒｒｄ＜８＞〜ｅｒｒｄ＜１１＞が用いられる。また、図示を省略しているが、検査ビットｐ＜０＞〜ｐ＜１０＞のエラーを訂正する回路部分は、１１個のＸＯＲ回路で実現され、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞が用いられる。
【０１３８】
図１６は、２ビットエラーが生じている場合のエラー訂正回路の動作の一例を示すタイミングチャートである。
図１６には、リードデータＲＤのビットｄ＜０＞〜ｄ＜７＞、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞、リードデータＲＤａのビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞の時間変化の一例が示されている。
【０１３９】
なお、リードデータＲＤのビットｄ＜０＞〜ｄ＜７＞の期待値（ライトデータＷＤのビットＤ＜０＞〜Ｄ＜７＞に相当）は、全てＨレベルであるものとする。
また、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞の初期値はＬレベルである。
【０１４０】
タイミングｔ５０においてメモリセル部２４から読み出されたリードデータＲＤのビットｄ＜０＞〜ｄ＜７＞のうち、ビットｄ＜０＞，ｄ＜２＞の値は、Ｌレベルとなっている。つまり、ビットｄ＜０＞，ｄ＜２＞がエラービットとなっている。
【０１４１】
また、タイミングｔ５０では、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞がＬレベルであるため、ＸＯＲ回路２７ａ１〜２７ａ８の出力値であるビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞は、ビットｄ＜０＞〜ｄ＜７＞の値と同じとなる。
【０１４２】
その後、前述したエラー検出回路２６の動作により、エラー信号ｅｒｒｄ＜０＞，ｅｒｒｄ＜２＞がＬレベルからＨレベルになる（タイミングｔ５１）。
これによって、ＸＯＲ回路２７ａ１〜２７ａ８の出力値であるビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞のうち、ビットｄＥＣＣ＜０＞，ｄＥＣＣ＜２＞がＬレベルからＨレベル（つまり０から１）に反転する（タイミングｔ５２）。つまり、２ビットエラー訂正が行われる。
【０１４３】
図１７は、４ビットエラーが生じている場合のエラー訂正回路の動作の一例を示すタイミングチャートである。
図１７には、ビットｐ＜０＞〜ｐ＜１０＞，ｄ＜０＞〜ｄ＜１１＞、仮想データビットエラーフラグｅｒｒｖｄ、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞，ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞の時間変化の一例が示されている。さらに、検査ビットＲＰＢのエラー訂正後のビットｐＥＣＣ＜０＞〜ｐＥＣＣ＜１０＞、リードデータＲＤａのビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞、仮想データのエラー訂正後のビットｄＥＣＣ＜８＞〜ｄＥＣＣ＜１１＞の時間変化の一例が示されている。
【０１４４】
なお、ビットｐ＜０＞〜ｐ＜１０＞，ｄ＜０＞〜ｄ＜１１＞の期待値は、全てＨレベルであるものとする。
また、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞，ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞の初期値はＬレベルである。
【０１４５】
タイミングｔ６０においてメモリセル部２４から読み出されたビットｐ＜０＞〜ｐ＜１０＞，ｄ＜０＞〜ｄ＜７＞のうち、ビットｐ＜４＞，ｐ＜５＞，ｐ＜９＞，ｐ＜１０＞の値は、Ｌレベルとなっている。つまり、４ビットエラーが生じている。
【０１４６】
また、タイミングｔ６０では、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞がＬレベルであるため、ビットｐＥＣＣ＜０＞〜ｐＥＣＣ＜１０＞は、ビットｐ＜０＞〜ｐ＜１０＞の値と同じとなる。また、タイミングｔ６０では、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞がＬレベルであるため、ビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜１１＞は、ビットｄ＜０＞〜ｄ＜１１＞の値と同じとなる。
【０１４７】
その後、エラー検出回路２６の動作により、エラー信号ｅｒｒｐ＜１＞，ｅｒｒｐ＜３＞，ｅｒｒｄ＜１１＞がＨレベルになる（タイミングｔ６１）。また、タイミングｔ６１では、仮想データエラー検出回路２６ｃの動作により、仮想データビットエラーフラグｅｒｒｖｄがＨレベルになる。これにより、エラー信号出力回路２６ｄの動作により、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞もＨレベルになる。
【０１４８】
エラー信号ｅｒｒｐ＜１＞，ｅｒｒｐ＜３＞，ｅｒｒｄ＜１１＞がＨレベルになるため、エラー訂正回路２７の動作により、ビットｐＥＣＣ＜１＞，ｐＥＣＣ＜３＞，ｄＥＣＣ＜１１＞がＨレベルからＬレベル（つまり１から０）に反転する（タイミングｔ６２）。実際にビットエラーが生じているのは、ビットｐ＜４＞，ｐ＜５＞，ｐ＜９＞，ｐ＜１０＞であるため、３ビットの誤訂正が生じている。しかし、タイミングｔ６２では、エラー信号出力回路２６ｄの動作により、リードデータＲＤａのビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞が全て、ＨレベルからＬレベルに反転している。リードデータＲＤａは、半導体記憶装置２０から出力されるため、ビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞を全てＬレベルとすることで、４ビットエラーの発生を半導体記憶装置２０の外部に通知することができる。なお、上記の説明では、エラー信号出力回路２６ｄは、ビットｄＥＣＣ＜０＞〜ｄＥＣＣ＜７＞を全て、ＨレベルからＬレベルに反転しているが、これに限定されず、エラー検出及び訂正可能な３ビットよりも多くのビットを反転することで、４ビットエラーの発生を半導体記憶装置２０の外部に通知するようにしてもよい。
【０１４９】
（半導体記憶装置２０の試験モード変更例）
たとえば、半導体記憶装置２０に対する出荷前試験時において、試験モード設定回路２５に第２試験モードが設定される場合、エラー検出回路２６には、仮想データ“００１１”が供給される。
【０１５０】
メモリセル部２４から８ビットのリードデータＲＤが読み出された場合、シンドローム生成回路２６ａには、リードデータＲＤの上位側に仮想データ“００１１”を追加した１２ビット（前述したビットｄ＜０＞〜ｄ＜１１＞）の値が供給される。さらに、シンドローム生成回路２６ａには、メモリセル部２４から読み出された１１ビットの検査ビットＲＰＢ（前述したビットｐ＜０＞〜ｐ＜１０＞）が供給される。なお、メモリセル部２４から読み出される検査ビットＲＰＢは、メモリセル部２４から読み出されるリードデータＲＤに対応付けられたものである。
【０１５１】
シンドローム生成回路２６ａは、図８に示したような対応関係に基づいてＸＯＲ演算により、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞を生成する。そして、シンドロームデコーダ２６ｂは、ビットＳ＜０＞〜Ｓ＜１０＞に基づいて、エラービットの検出結果を示すエラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞を出力する。
【０１５２】
第２試験モードでは、仮想データ“００１１”が用いられているため、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞のうち少なくともエラー訂正フラグｅｒｒｄａ＜８＞，ｅｒｒｄａ＜９＞はＨレベルとなる。また、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットのうちの１ビットにエラーが生じている場合には、そのビットに対応したエラー訂正フラグがＨレベルとなる。
【０１５３】
エラー訂正回路２７は、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞，ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞に基づいて、ビットｐ＜０＞〜ｐ＜１０＞，ｄ＜０＞〜ｄ＜１１＞ｎのうちのエラービットを訂正する。
【０１５４】
たとえば、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットのうち、リードデータＲＤに１ビットのエラービットが生じている場合、エラー訂正回路２７によりエラー訂正が行われる。この場合、エラー訂正で得られたリードデータＲＤａは、期待値であるライトデータＷＤと同じになる。
【０１５５】
半導体記憶装置２０の出荷前試験後、たとえば、設定信号ｓｅｔａ〜ｓｅｔｃが全て０となり、通常モードが設定される。通常モードでは、エラー検出回路２６には、仮想データ“００００”が供給される。
【０１５６】
通常モードでは、仮想データ“００００”が用いられているため、４ビット以上のエラーが生じていない場合には、エラー訂正フラグｅｒｒｄａ＜８＞〜ｅｒｒｄａ＜１１＞はＬレベルとなる。また、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットのうちの１乃至３ビットがエラービットである場合には、そのビットに対応したエラー訂正フラグがＨレベルとなる。
【０１５７】
エラー訂正回路２７は、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットのうち、検査ビットＲＰＢにエラービットがなく、リードデータＲＤに３ビットまでのエラービットが生じている場合、エラー訂正回路２７により正しくエラー訂正が行われる。また、検査ビットＲＰＢに１ビットのエラービットがあっても、そのエラービットと、リードデータＲＤに生じる２ビットまでのエラービットが正しく訂正可能である。また、検査ビットＲＰＢに２ビットのエラービットがあっても、それらのエラービットと、リードデータＲＤに生じる１ビットまでのエラービットが正しく訂正可能である。
【０１５８】
上記のような方法では、出荷前試験において、第２試験モードにより意図的に追加された２ビットエラーが発生し、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットに対してエラー検出及び訂正が可能なビット数が１ビットに制限される。その後、試験モードが通常モードに変更されることによって、たとえば、検査ビットＲＰＢにエラービットの増加がなく、リードデータＲＤのエラービットが２ビット増加した場合でも正しくエラー訂正が可能となる。また、検査ビットＲＰＢのエラービットが１ビット増加しても、リードデータＲＤの１ビットのエラービットの増加に対応できる。さらに、検査ビットＲＰＢのエラービットが２ビット増加しても、リードデータＲＤを誤訂正することなく正常な動作を行うことが可能である。
【０１５９】
なお、出荷前試験を第１試験モードで行う場合には、意図的に追加された１ビットエラーが発生し、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットに対してエラー検出及び訂正が可能なビット数が２ビットに制限される。その後、試験モードが通常モードに変更されることによって、たとえば、検査ビットＲＰＢにエラービットの増加がなく、リードデータＲＤのエラービットが１ビット増加した場合でも正しくエラー訂正が可能となる。また、検査ビットＲＰＢのエラービットが１ビット増加しても、リードデータＲＤを誤訂正することなく正常な動作を行うことが可能である。
【０１６０】
また、出荷前試験を第３試験モードで行う場合には、意図的に追加された３ビットエラーが発生し、リードデータＲＤ及び検査ビットＲＰＢの全１９ビットに対してエラー検出及び訂正が可能なビット数は０ビットとなる。その後、試験モードが通常モードに変更されることによって、たとえば、検査ビットＲＰＢにエラービットの増加がなく、リードデータＲＤのエラービットが３ビット増加した場合でも正しくエラー訂正が可能となる。また、検査ビットＲＰＢのエラービットが１ビット増加しても、リードデータＲＤの２ビットのエラービットの増加に対応できる。また、検査ビットＲＰＢのエラービットが２ビット増加しても、リードデータＲＤの１ビットのエラービットの増加に対応できる。さらに、検査ビットＲＰＢのエラービットが３ビット増加しても、リードデータＲＤを誤訂正することなく正常な動作を行うことが可能である。
【０１６１】
このように、第２の実施の形態の半導体記憶装置２０によれば、第１の実施の形態の半導体記憶装置１０と同様に、出荷後に増えたエラービットの検出及び訂正が可能になる。
なお、出荷前試験を通常モードで行い、３ビットエラーが生じている半導体記憶装置２０についても良品として出荷できるようにして、歩留まりを向上させてもよい。
【０１６２】
また、出荷前後で試験モードを変更することに限定されず、ある試験では、第３試験モードを使用し、次の試験では、第２試験モード、第１試験モードまたは通常モードに変更するようにしてもよい。
【０１６３】
これによって、たとえば、チップグレードの分別も可能になる。
図１８は、チップグレードの分別方法の一例を示すフローチャートである。
初めは、第３試験モードで試験が行われ（ステップＳ１）、パスした場合（つまり、リードデータＲＤと検査ビットＲＰＢにエラービットが生じていない場合）、通常モードへの変更が行われ、半導体記憶装置２０は高信頼性チップとして出荷される。この、半導体記憶装置２０は、たとえば、突発的にエラービットが増加しても、１９ビットのリードデータＲＤと検査ビットＲＰＢの各組あたり、３ビットまでならそのエラービットを訂正することができるためである。たとえば、高信頼性が要求される車載チップ用として、第３試験モードでの試験にパスした半導体記憶装置２０が出荷される。
【０１６４】
第３試験モードでの試験でフェイルとなった場合（つまり、リードデータＲＤまたは検査ビットＲＰＢにエラービットが生じている場合）、通常モードでの試験が行われる（ステップＳ２）。通常モードの試験でパスした場合は、半導体記憶装置２０は低価格チップとして出荷される。第３試験モードの試験にパスできなかった半導体記憶装置２０は、第３試験モードの試験にパスしたものよりも、エラービットの増加に対する訂正能力が劣るためである。
【０１６５】
半導体記憶装置２０が、通常モードの試験でフェイルとなった場合（つまり、リードデータＲＤと検査ビットＲＰＢによる各組の何れかに、合計４ビット以上のエラービットが生じている場合）、その半導体記憶装置２０は、不良チップであるとして出荷されない。
【０１６６】
（第３の実施の形態）
図１９は、第３の実施の形態の半導体記憶装置の一例を示す図である。図１９において、図２に示した第２の実施の形態の半導体記憶装置２０と同じ要素については、同一符号が付されている。
【０１６７】
第３の実施の形態の半導体記憶装置４０は、エラー訂正後の検査ビットＲＰＢａと、エラー訂正後のリードデータＲＤａをメモリセル部２４に書き戻す機能を有している。第３の実施の形態の半導体記憶装置４０は、ゴレイ符号によりエラー訂正できる上限である３ビットエラーが生じている場合に、上記書き戻し機能を実行する。
【０１６８】
そのための要素として、半導体記憶装置４０のエラー訂正回路４１は、検査ビット訂正部４１ａとリードデータ訂正部４１ｂを有する。なお、エラー訂正回路４１は、仮想データのエラーを訂正する回路部を有しているが、図示が省略されている。
【０１６９】
また、半導体記憶装置４０は、選択回路４２ａ，４２ｂを有する。さらに、半導体記憶装置４０のエラー検出回路４３は、エラーＭＡＸフラグ生成回路４３ａを有する。また、半導体記憶装置４０はビジー信号出力回路４４、制御回路４５を有する。
【０１７０】
なお、図１９の例では、メモリセル部２４は、固定不良のメモリセルの代わりに使用される複数の冗長セルを含む冗長セル部２４ｃを有しているがなくてもよい。
検査ビット訂正部４１ａと、リードデータ訂正部４１ｂは、図１５に示したような複数のＸＯＲ回路により実現できる。
【０１７１】
選択回路４２ａは、エラーＭＡＸフラグ生成回路４３ａが出力するフラグＥＲＲｍａｘに基づいて、検査ビットＷＰＢまたはエラー訂正された検査ビットＲＰＢａの何れか一方を選択して出力する。
【０１７２】
選択回路４２ｂは、フラグＥＲＲｍａｘに基づいて、ライトデータＷＤまたはエラー訂正されたリードデータＲＤａの何れか一方を選択して出力する。
図２０は、選択回路の一例を示す図である。
【０１７３】
図２０では、図１９に示した選択回路４２ａの一例が示されている。選択回路４２ｂについても、選択回路４２ａと同様の回路で実現できる。
選択回路４２ａは、インバータ回路４２ａ１，４２ａ２，４２ａ３，４２ａ４、ｎチャネル型ＭＯＳＦＥＴであるトランジスタ４２ａ５，４２ａ６、ｐチャネル型ＭＯＳＦＥＴであるトランジスタ４２ａ７，４２ａ８を有する。
【０１７４】
インバータ回路４２ａ１の入力端子にはビットＰ＜＊＞の値が入力され、インバータ回路４２ａ２の入力端子には、ビットｐａ＜＊＞の値が供給される。ビットＰ＜＊＞は、１１ビットの検査ビットＷＰＢのビットＰ＜０＞〜Ｐ＜１０＞の何れかである。ビットｐａ＜＊＞は、エラー訂正された１１ビットの検査ビットＲＰＢａのビットｐａ＜０＞〜ｐａ＜１０＞の何れかである。インバータ回路４２ａ１の出力端子は、トランジスタ４２ａ５，４２ａ７の一方の入出力端子（ドレインまたはソース）に接続されており、インバータ回路４２ａ２の出力端子は、トランジスタ４２ａ６，４２ａ８の一方の入出力端子に接続されている。
【０１７５】
トランジスタ４２ａ５，４２ａ７の他方の入出力端子と、トランジスタ４２ａ６，４２ａ８の他方の入出力端子は、インバータ回路４２ａ４の入力端子に接続されている。また、トランジスタ４２ａ６，４２ａ７の制御端子（ゲート）とインバータ回路４２ａ３の入力端子にはフラグＥＲＲｍａｘが供給され、トランジスタ４２ａ５，４２ａ８の制御端子には、インバータ回路４２ａ３の出力端子に接続されている。
【０１７６】
フラグＥＲＲｍａｘがＬレベルの場合、トランジスタ４２ａ５，４２ａ７がオンし、トランジスタ４２ａ６，４２ａ８がオフするので、インバータ回路４２ａ４の出力は、ビットＰ＜＊＞の値となる。
【０１７７】
フラグＥＲＲｍａｘがＨレベルの場合、トランジスタ４２ａ５，４２ａ７がオフし、トランジスタ４２ａ６，４２ａ８がオンするので、インバータ回路４２ａ４の出力は、ビットｐａ＜＊＞の値となる。
【０１７８】
選択回路４２ａは、検査ビットＷＰＢのビットＰ＜０＞〜Ｐ＜１０＞の各ビットに対応して、上記のような回路を１１個有する。
図１９のエラーＭＡＸフラグ生成回路４３ａは、シンドロームデコーダ２６ｂが生成するデコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞に基づいて、エラービットの数が検出可能な最大数に達したときに、その旨を示す検出信号であるフラグＥＲＲｍａｘを生成する。第３の実施の形態の半導体記憶装置４０では、ゴレイ符号を用いるため、検出可能な最大数は３ビットである。以下では、エラーＭＡＸフラグ生成回路４３ａは、エラービットが３ビットである場合、ＨレベルのフラグＥＲＲｍａｘを出力するものとする。
【０１７９】
図２１は、エラーＭＡＸフラグ生成回路の一例を示す図である。
なお、図２１には、シンドロームデコーダ２６ｂの一部と共に、エラーＭＡＸフラグ生成回路４３ａの一部が示されている。
【０１８０】
エラーＭＡＸフラグ生成回路４３ａは、複数のトランジスタ（たとえば、トランジスタ５０ａ，５０ｂ，５０ｃ，５０ｄ，５０ｅ，５０ｆ，５０ｇ，５０ｈ，５０ｉ）、ｗｉｒｅｄ−ＯＲ型の信号バス５１ａ，５１ｂ，５１ｃを有する。さらにエラーＭＡＸフラグ生成回路４３ａは、０ビットエラー検出回路５２ａ１、１ビットエラー検出回路５２ａ２、２ビットエラー検出回路５２ａ３、フラグ出力回路５３を有する。
【０１８１】
複数のトランジスタは、ｎチャネル型ＭＯＳＦＥＴである。複数のトランジスタのそれぞれのゲートには、デコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞のうち、０ビットエラー、１ビットエラー、２ビットエラーの発生の有無を示すデコード信号の何れかが供給される。たとえば、図９に示したように、デコード信号ＳＯ＜７＞などの３ビットエラーの発生の有無を示す信号は、複数のトランジスタの何れのゲートにも供給されない。複数のトランジスタのそれぞれのドレインは、信号バス５１ａ〜５１ｃの何れかに接続されている。また複数のトランジスタのそれぞれのソースは接地されている（基準電位（たとえば、０Ｖ）となっている）。
【０１８２】
たとえば、トランジスタ５０ａのゲートには、デコード信号ＳＯ＜０＞が供給され、トランジスタ５０ａのドレインは、信号バス５１ａに接続されている。
信号バス５１ａは、０ビットエラー検出回路５２ａ１に接続されており、信号バス５１ｂは、１ビットエラー検出回路５２ａ２に接続されており、信号バス５１ｃは、２ビットエラー検出回路５２ａ３に接続されている。以下信号バス５１ａを伝搬する信号を信号ｅ０ｂ、信号バス５１ｂを伝搬する信号を信号ｅ１ｂ、信号バス５１ｃを伝搬する信号を信号ｅ２ｂという。
【０１８３】
０ビットエラー検出回路５２ａ１は、信号ｅ０ｂに基づいて、０ビットエラー（つまりエラービットがないこと）の発生の有無を示す信号ｅｒｒ０を出力する。１ビットエラー検出回路５２ａ２は、信号ｅ１ｂに基づいて、１ビットエラーの発生の有無を示す信号ｅｒｒ１を出力する。２ビットエラー検出回路５２ａ３は、信号ｅ２ｂに基づいて、２ビットエラーの発生の有無を示す信号ｅｒｒ２を出力する。
【０１８４】
たとえば、２ビットエラー検出回路５２ａ３は、ｐチャネル型ＭＯＳＦＥＴであるトランジスタ５２ｂ，５２ｃ、インバータ回路５２ｄを有する。なお、トランジスタ５２ｃは、弱トランジスタである。
【０１８５】
トランジスタ５２ｂ，５２ｃのドレイン及びインバータ回路５２ｄの入力端子は、信号バス５１ｃに接続されている。トランジスタ５２ｂ，５２ｃのソースには、電源電圧が供給される。トランジスタ５２ｂのゲートには、リセット信号ｒｓｔｂが、たとえば、制御回路４５から供給され、トランジスタ５２ｃのゲート及びインバータ回路５２ｄの出力端子の電位が、信号ｅｒｒ２となる。
【０１８６】
２ビットエラー検出回路５２ａ３は、リセット信号ｒｓｔｂがＨレベルで、信号ｅ２ｂがＬレベルになるとき、２ビットエラーが検出されたことを示すＨレベルの信号ｅｒｒ２を出力する。
【０１８７】
図２１では図示が省略されているが、０ビットエラー検出回路５２ａ１、１ビットエラー検出回路５２ａ２についても、２ビットエラー検出回路５２ａ３と同様の回路構成となっている。
【０１８８】
フラグ出力回路５３は、信号ｅｒｒ０〜ｅｒｒ２に基づいて、エラービットが３ビットであるか否かを示すフラグＥＲＲｍａｘを出力する。
図２２は、フラグ出力回路の一例を示す図である。
【０１８９】
フラグ出力回路５３は、ＮＡＮＤ回路５３ａ，５３ｂ、ＮＯＲ回路５３ｃ，５３ｄ，５３ｅ、インバータ回路５３ｆ，５３ｇ，５３ｈ，５３ｉ，５３ｊ，５３ｋ、信号線５３ｌ、トランジスタ５３ｍ，５３ｎ，５３ｏを有する。
【０１９０】
ＮＡＮＤ回路５３ａの４つの入力端子の３つには電源電圧が供給され、１つの入力端子にはタイミング信号ｔｉｍｅが供給される。ＮＡＮＤ回路５３ａの出力端子は、ＮＯＲ回路５３ｃの一方の入力端子に接続されている。ＮＯＲ回路５３ｃの他方の入力端子は接地されており、ＮＯＲ回路５３ｃの出力端子は、ＮＡＮＤ回路５３ｂの一方の入力端子に接続されている。ＮＡＮＤ回路５３ｂの他方の入力端子には電源電圧が供給され、ＮＡＮＤ回路５３ｂの出力端子は、インバータ回路５３ｆを介してトランジスタ５３ｍのゲートに接続されている。
【０１９１】
トランジスタ５３ｍは、ｎチャネル型ＭＯＳＦＥＴである。トランジスタ５３ｍのドレインは信号線５３ｌを介して、ｐチャネル型ＭＯＳＦＥＴであるトランジスタ５３ｎ，５３ｏのドレイン及びインバータ回路５３ｇの入力端子に接続されている。トランジスタ５３ｍのソースは接地されている。
【０１９２】
トランジスタ５３ｎ，５３ｏのソースには電源電圧が供給され、トランジスタ５３ｎのゲートにはリセット信号ｒｓｔｂが供給される。トランジスタ５３ｌのゲート及びインバータ回路５３ｇの出力端子は、インバータ回路５３ｈ〜５３ｊを介してＮＯＲ回路５３ｅの一方の入力端子に接続されている。なお、トランジスタ５３ｏは弱トランジスタである。
【０１９３】
ＮＯＲ回路５３ｅの他方の入力端子には、インバータ回路５３ｋの出力端子が接続されている。ＮＯＲ回路５３ｅの出力端子の電位が、フラグＥＲＲｍａｘである。インバータ回路５３ｋの入力端子には、ＮＯＲ回路５３ｄの出力端子が接続されている。ＮＯＲ回路５３ｄの３つの入力端子には、信号ｅｒｒ０〜ｅｒｒ２が供給される。
【０１９４】
このような、フラグ出力回路５３では、信号ｅｒｒ０〜ｅｒｒ２が何れもＬレベルの場合、すなわち３ビット以上のエラービットがある場合、インバータ回路５３ｋの出力はＬレベルとなる。リセット信号ｒｓｔｂがＨレベルで、タイミング信号ｔｉｍｅがＨレベルになるとき、３ビットエラーの発生を示すデコード信号が出力されるタイミングを考慮した遅延時間後に、インバータ回路５３ｊの出力はＬレベルとなる。これにより、ＮＯＲ回路５３ｅは、３ビットエラーの発生を示す検出信号であるＨレベルのフラグＥＲＲｍａｘを出力する。
【０１９５】
図１９のビジー信号出力回路４４は、フラグＥＲＲｍａｘがＨレベルになると、半導体記憶装置４０が書き戻しを行うためにビジー状態であることを示す信号ｂｕｓｙ（たとえば、Ｈレベルの信号）を所定期間出力する。ビジー信号出力回路４４は、たとえば、フラグＥＲＲｍａｘがＨレベルになると、所定期間Ｈレベルの信号ｂｕｓｙを出力するパルス信号発生回路である。
【０１９６】
（第３の実施の形態の半導体記憶装置４０の動作例）
以下、半導体記憶装置４０の動作の一例を説明する。
メモリセル部２４から８ビットのリードデータＲＤが読み出された場合、エラー検出回路４３には、そのリードデータＲＤと、試験モード設定回路２５から設定信号ｓｅｔａ〜ｓｅｔｃに基づく４ビットの仮想データが供給される。さらに、そのリードデータＲＤに対応付けられた検査ビットＲＰＢもメモリセル部２４から読み出され、エラー検出回路４３に供給される。
【０１９７】
なお、図２１では図示を省略しているが、エラーＭＡＸフラグ生成回路４３ａは、制御信号ｓｅｔｒにより制御され、制御信号ｓｅｔｒが１のとき有効となる。また、エラーＭＡＸフラグ生成回路４３ａは、制御信号ｓｅｔｒが０のときは無効となり、フラグＥＲＲｍａｘはＬレベルとなる。前述の設定信号ｓｅｔａ〜ｓｅｔｃを用いた出荷前試験においては、設定信号ｓｅｔｒは０となり、エラーＭＡＸフラグ生成回路４３ａが無効となる。設定信号ｓｅｔｒを１に変えて出荷することで、出荷後にエラーＭＡＸフラグ生成回路４３ａが機能し、エラービットが３ビットに達したときにエラーＭＡＸフラグがＨレベルとなる。
【０１９８】
エラー検出回路４３のシンドローム生成回路２６ａは、前述のように、図８に示したような対応関係に基づいてＸＯＲ演算により、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞を生成する。そして、シンドロームデコーダ２６ｂは、シンドロームのビットＳ＜０＞〜Ｓ＜１０＞に基づいて、エラービットの検出結果である、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞，ｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞を出力する。
【０１９９】
エラー信号出力回路２６ｄは、エラー訂正フラグｅｒｒｄａ＜０＞〜ｅｒｒｄａ＜１１＞と、仮想データビットエラーフラグｅｒｒｖｄに基づいて、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞を出力する。また、エラー信号出力回路２６ｄは、エラー訂正フラグｅｒｒｐａ＜０＞〜ｅｒｒｐａ＜１０＞に基づいて、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞を出力する。
【０２００】
検査ビット訂正部４１ａは、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜１１＞，ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞のうち、エラー信号ｅｒｒｐ＜０＞〜ｅｒｒｐ＜１０＞に基づいて、検査ビットＲＰＢのエラービットを訂正する。また、リードデータ訂正部４１ｂは、エラー信号ｅｒｒｄ＜０＞〜ｅｒｒｄ＜７＞に基づいて、リードデータＲＤのエラービットを訂正する。
【０２０１】
さらに、第３の実施の形態の半導体記憶装置４０のエラー検出回路４３において、エラーＭＡＸフラグ生成回路４３ａは、シンドロームデコーダ２６ｂが生成するデコード信号ＳＯ＜０＞〜ＳＯ＜２０４７＞に基づいて、フラグＥＲＲｍａｘを生成する。
【０２０２】
リードデータＲＤと検査ビットＲＰＢと仮想データとを合わせた全２３ビット中、エラービットが２ビット以下の場合には、フラグＥＲＲｍａｘはＬレベルとなる。このとき、選択回路４２ａは、検査ビットＷＰＢを選択して出力する。これにより、図示しない書き込み回路によって、検査ビットＷＰＢがメモリセル部２４の検査ビット記憶部２４ａに書き込まれる。また、選択回路４２ｂは、ライトデータＷＤを選択して出力する。これにより、図示しない書き込み回路によって、ライトデータＷＤがメモリセル部２４のデータ記憶部２４ｂに書き込まれる。またビジー信号出力回路４４が出力する信号ｂｕｓｙはＬレベルとなる。
【０２０３】
リードデータＲＤと検査ビットＲＰＢと仮想データとを合わせた全２３ビット中、エラービットが３ビットの場合、フラグＥＲＲｍａｘはＨレベルとなる。このとき、選択回路４２ａは、エラー訂正された検査ビットＲＰＢａを選択して出力する。これにより、図示しない書き込み回路によって、検査ビットＲＰＢａがメモリセル部２４の検査ビット記憶部２４ａに書き込まれる。また、選択回路４２ｂは、エラー訂正されたリードデータＲＤａを選択して出力する。これにより、図示しない書き込み回路によって、リードデータＲＤａがメモリセル部２４のデータ記憶部２４ｂに書き込まれる。
【０２０４】
なお、検査ビットＲＰＢａとリードデータＲＤａは、検査ビットＲＰＢとリードデータＲＤが読み出されたアドレスのメモリセルに書き込まれる。
またビジー信号出力回路４４が出力する信号ｂｕｓｙはＨレベルとなる。なお、信号ｂｕｓｙがＨレベルの場合、データ入出力部２１を介した外部からのライトデータＷＤの供給は停止される。
【０２０５】
たとえば、出荷前試験が第２試験モードで行われ、その後、通常モードへの変更が行われる場合、半導体記憶装置４０は、出荷後に新たに発生したエラービットを２３ビット当たり最低でも２ビットまで訂正できる。出荷後に突発的なエラーが累積され、エラービットの数が、トータルで３ビットになった時点で、エラー訂正された検査ビットＲＰＢａと、リードデータＲＤａが、メモリセル部２４に書き戻される。
【０２０６】
以下、半導体記憶装置４０が有する効果を説明する。
半導体記憶装置には、読み出し時にメモリセルにストレスがかかるものがあり、まれではあるが、読み出しを行うことでメモリセルに記憶されたデータが壊れ、突発的なエラーが生じる場合がある。読み出しが繰り返されると、そのエラーが複数回発生し、エラービットが累積することになる。エラービット数が、ＥＣＣの訂正能力の上限（ゴレイ符号が用いられる場合は３ビット）を超えると、システム的なメモリエラーが引き起こされる。
【０２０７】
第３の実施の形態の半導体記憶装置４０では、エラービット数が訂正能力の上限である３ビットになると、エラー訂正回路４１でエラー訂正された検査ビットＲＰＢａと、リードデータＲＤａが、メモリセル部２４に書き戻される。つまり、揮発性メモリにおけるリフレッシュ動作に対応した動作が行われる。これにより、上記突発的なエラーがメモリセル自体の固定不良でなければ、エラービットの累積をゼロにリセットでき、システム的なメモリエラーの発生を未然に防ぐことができる。
【０２０８】
なお、半導体記憶装置４０のメモリセル部２４は冗長セルを有していてもよい。その場合、半導体記憶装置４０の制御回路４５は、検査ビットＲＰＢａと、リードデータＲＤａの検査ビット記憶部２４ａ、データ記憶部２４ｂへの書き戻し後に、再度読み出しを行い、再びフラグＥＲＲｍａｘがＨレベルとなるか否かを検出する。再びフラグＥＲＲｍａｘがＨレベルとなる場合、制御回路４５は、メモリセル自身の固定不良が発生しているとみなし、そのメモリセルのアドレスを冗長セルのアドレスに置き換える処理を行う。これにより、そのメモリセルのアドレスに対するデータの書き込みや読み出しが行われる場合、冗長セルへデータの書き込み、または冗長セルからデータの読み出しが行われるようになる。
【０２０９】
図２３は、冗長セルを有する第３の実施の形態の半導体記憶装置の一例の動作の流れを示すフローチャートである。
読み出し処理が行われると（ステップＳ１０）、制御回路４５は、フラグＥＲＲｍａｘがＨレベルであるか否かを判定する（ステップＳ１１）。読み出し処理では、メモリセル部２４からリードデータＲＤとそのリードデータＲＤに対応付けられた検査ビットＲＰＢが読み出される。
【０２１０】
フラグＥＲＲｍａｘがＨレベルである場合には、エラー訂正されたリードデータＲＤａと検査ビットＲＰＢａが、メモリセル部２４に書き戻される（ステップＳ１２）。ステップＳ１２の処理では、検査ビットＲＰＢａとリードデータＲＤａは、検査ビットＲＰＢとリードデータＲＤが読み出されたアドレスのメモリセルに書き込まれる。
【０２１１】
フラグＥＲＲｍａｘがＬレベルである場合、半導体記憶装置４０に入力されるコマンドに応じた通常動作（書き込み処理や読み出し処理など）が行われる（ステップＳ１７）。
一方、ステップＳ１２の処理後、制御回路４５の制御のもと、再読み出し処理が行われる（ステップＳ１３）。再読み出し処理では、メモリセル部２４に書き戻された検査ビットＲＰＢａとリードデータＲＤａが、再度読み出される。
【０２１２】
そして、制御回路４５は、フラグＥＲＲｍａｘがＨレベルであるか否かを再度判定する（ステップＳ１４）。フラグＥＲＲｍａｘがＬレベルである場合、ステップＳ１７の処理が行われる。
【０２１３】
フラグＥＲＲｍａｘが再度Ｈレベルとなる場合には、たとえば、制御回路４５が、３ビットのエラービットが記憶されているメモリセルのアドレスの代わりに、冗長セルのアドレスを指定する。そして図示しない書き込み回路が、検査ビットＲＰＢａとリードデータＲＤａに含まれるエラー訂正された上記３ビットの値を、指定されたアドレスの冗長セルに書き込む（ステップＳ１５）。検査ビットＲＰＢａとリードデータＲＤａに含まれるその他のビットの値は、検査ビット記憶部２４ａまたはデータ記憶部２４ｂに書き込まれる。
【０２１４】
なお、検査ビット記憶部２４ａやデータ記憶部２４ｂのアドレスの冗長セルのアドレスへの置き換え処理がメモリセルアレイの行または列ごとに行われる場合、エラービットが記憶されているメモリセルと同じ行または列アドレスの値も読み出される。そして、その値も指定された行または列アドレスの冗長セルに書き込まれる。
【０２１５】
その後、制御回路４５の制御のもと、図示しない書き込み回路は、冗長セルのアドレスに置き換えられた検査ビット記憶部２４ａまたはデータ記憶部２４ｂのアドレスを、冗長セルに書き込む（ステップＳ１６）。これにより、次に冗長セルのアドレスに置き換えられた検査ビット記憶部２４ａまたはデータ記憶部２４ｂのアドレスが指定された場合、たとえば、制御回路４５は、冗長セルのアドレスに変換して、読み出しや書き込みを行えるようにする。
【０２１６】
ステップＳ１６の処理後は、ステップＳ１７の処理が行われる。
以上のような処理によれば、メモリセル自身の固定不良にも対応でき、さらに半導体記憶装置４０の信頼性を高めることができる。
【０２１７】
以上、実施の形態に基づき、本発明の半導体記憶装置の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、上記の説明では、主に３ビットエラー検出及び訂正に対応した符号を用いた半導体記憶装置を説明したが、これに限定されない。２ビットエラー検出及び訂正に対応した符号または４ビットエラー検出及び訂正に対応した符号を用いた半導体記憶装置についても、その符号に対応するように仮想データのビット数や意図的に発生させるビット数を変更し、回路を適宜変更すれば実現可能である。
【符号の説明】
【０２１８】
１０  半導体記憶装置
１１  データ入出力部
１２  仮想データ設定回路
１３  検査ビット生成回路
１４  メモリセル部
１４ａ  検査ビット記憶部
１４ｂ  データ記憶部
１５  試験モード設定回路
１６  エラー検出回路
１７  エラー訂正回路
１８ａ〜１８ｃ  仮想データ
ｒｄ，ｒｄａ  リードデータ
ｒｐｂ，ｗｐｂ  検査ビット
ｓｅｔ  設定信号
ｗｄ  ライトデータ
【図１】
2018195122.tif 000003
【図２】
2018195122.tif 000004
【図３】
2018195122.tif 000005
【図４】
2018195122.tif 000006
【図５】
2018195122.tif 000007
【図６】
2018195122.tif 000008
【図７】
2018195122.tif 000009
【図８】
2018195122.tif 000010
【図９】
2018195122.tif 000011
【図１０】
2018195122.tif 000012
【図１１】
2018195122.tif 000013
【図１２】
2018195122.tif 000014
【図１３】
2018195122.tif 000015
【図１４】
2018195122.tif 000016
【図１５】
2018195122.tif 000017
【図１６】
2018195122.tif 000018
【図１７】
2018195122.tif 000019
【図１８】
2018195122.tif 000020
【図１９】
2018195122.tif 000021
【図２０】
2018195122.tif 000022
【図２１】
2018195122.tif 000023
【図２２】
2018195122.tif 000024
【図２３】
2018195122.tif 000025