(57)【要約】【課題】複数のＥＣＣのコード長に切り替え可能な半導体メモリ装置を提供する。    【解決手段】メモリセルアレイ内のデータメモリセルアレイとパリティメモリセルアレイを，複数のＥＣＣのコード長に対応した構成にし，書き込みデータからパリティを生成する入力側パリティ生成回路と，読み出しデータからパリティを生成する出力側パリティ生成回路と，読み出しパリティビットと生成パリティビットから誤りビットを示すシンドロームビットを生成するシンドローム生成回路とを，複数のＥＣＣのコード長に応じて切り替え可能に構成する。  【選択図】図４
2008041171.tif 000002
【特許請求の範囲】
【請求項１】
誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに対して入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに対して入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力するパリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記パリティ生成回路及びシンドローム生成回路が，２のＩ乗ビットのデータとＩ＋１ビットのパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとＩ−Ｊ＋１ビットのパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする半導体メモリ装置。  
【請求項２】
請求項１において，
前記パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データからＩ＋１ビットのパリティビットを生成し，読み出し時において，２のＩ乗ビットの読み出しデータとＩ＋１ビットの読み出しパリティビットとから前記シンドロームビットを生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データからＩ−Ｊ＋１ビットのパリティビットを２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータとＩ−Ｊ＋１ビットの読み出しパリティビットとから前記シンドロームビットを２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチと，前記生成されたパリティビットまたはシンドロームビットの出力を切り替える出力スイッチとを有することを特徴とする半導体メモリ装置。  
【請求項３】
請求項１において，
前記パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ＋１ビットのパリティビットとして生成し，読み出し時において，２のＩ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ−Ｊ＋１ビットのパリティビットとして２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチと，前記生成されたパリティビットまたはシンドロームビットの出力を切り替える出力スイッチとを有することを特徴とする半導体メモリ装置。  
【請求項４】
請求項２または３において，
前記ＸＯＲ回路群は，Ｉ＋１ビットのパリティビットまたはシンドロームビットの各ビットをそれぞれ生成するＩ＋１個のＸＯＲ回路を有し，
前記第１のＥＣＣに切り替えられた場合は，当該Ｉ＋１個のＸＯＲ回路からＩ＋１ビットのパリティビットまたはシンドロームビットが出力され，
前記第２のＥＣＣに切り替えられた場合は，前記Ｉ−Ｊ＋１個のＸＯＲ回路からＩ−Ｊ＋１ビットのパリティビットまたはシンドロームビットが出力されることを特徴とする半導体メモリ装置。  
【請求項５】
請求項１において，
さらに，前記パリティ生成回路及びシンドローム生成回路の切り替えを制御する切り替え制御信号を生成する切り替え制御部を有し，
試験時において，前記切り替え制御信号を前記第１または第２のＥＣＣに対応する信号に切り替え可能であることを特徴とする半導体メモリ装置。  
【請求項６】
請求項１において，
前記ワードの選択に応答して前記パリティメモリセルアレイに入出力されるパリティビットが，
前記第１のＥＣＣに切り替えられた場合はＩ＋１ビットのパリティビットであり，前記第２のＥＣＣに切り替えられた場合はＩ−Ｊ＋１ビットのパリティビットを２のＪ乗グループ有するパリティビットである
ことを特徴とする半導体メモリ装置。  
【請求項７】
請求項６において，
前記データメモリセルアレイとパリティメモリセルアレイとは同じ数のワード線で構成され，前記ワード線の選択に応答して，選択されたワード線に対応するデータとパリティビットとが書込または読み出しされることを特徴とする半導体メモリ装置。  
【請求項８】
請求項６において，
前記パリティメモリセルアレイが，前記第１のＥＣＣに切り替えられた場合は第１の容量を有し，前記第２のＥＣＣに切り替えられた場合は前記第１の容量より大きい第２の容量を有することを特徴とする半導体メモリ装置。
【請求項９】
誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力する入力側パリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータから，前記パリティビットを生成する出力側パリティ生成回路と，
前記出力側パリティ生成回路が生成したパリティビットと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記入力側パリティ生成回路と出力側パリティビット生成回路とシンドローム生成回路とが，２のＩ乗ビットのデータとそれに対応するビット数のパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとそれに対応するビット数のパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする半導体メモリ装置。  
【請求項１０】
請求項９において，
前記入力側及び出力側パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データからそれに対応するビット数のパリティビットを生成し，読み出し時において，２のＩ乗ビットの読み出しデータとそれに対応する読み出しパリティビットとから前記シンドロームビットを生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データからそれに対応するビット数のパリティビットを２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータとそれに対応する読み出しパリティビットとから前記シンドロームビットを２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチを有することを特徴とする半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，記憶データの誤り訂正が可能な半導体メモリ装置に関し，特に，誤り訂正のためのＥＣＣ（誤り訂正符号）のコード長を変更することができる半導体メモリ装置に関する。
【背景技術】
【０００２】
ＤＲＡＭなどの半導体メモリ装置は，大容量化に伴って不良ビットの救済がますます重要になっている。従来から不良ビットの救済には冗長メモリセルアレイを設けて，不良のあるメモリセルを冗長メモリセルに置き換える冗長構成の半導体メモリ装置が普及している。
【０００３】
近年において，冗長メモリセルとの置換を行うのではなく，記憶データの誤り訂正が可能な半導体メモリ装置が提案されている。例えば，特許文献１などである。
【０００４】
この記憶データの誤り訂正が可能な半導体メモリ装置は，データを記憶するメモリセルアレイに加えて，書込データから生成したパリティビットを記憶するパリティメモリセルアレイを設け，書き込み時は，入力データからパリティビットを生成し，入力データとパリティデータとを記憶し，読み出し時は，読み出しデータからパリティビットを生成し，記憶済みのパリティビットと比較し，誤りビット情報を有するシンドロームデータを生成し，そのシンドロームデータに基づいて誤りビットを訂正し訂正された読み出しデータを出力する。
【０００５】
このＥＣＣでは，あるハミングコードによれば，８ビットのデータに対して４ビットのパリティビットを利用して，８ビットのデータの１ビットの誤りを訂正することができる。また，１６ビットのデータに対して５ビットのパリティビットを利用することで，１６ビット中の１ビットの誤りを訂正することができる。そして，一般化すると，２のＮ乗（２Ｎ）ビットのデータに対してＮ＋１ビットのパリティビットを利用することで，２のＮ乗ビット中の１ビットの誤りを訂正することができる。
【特許文献１】特開２００５−４４３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記のとおり，メモリセルアレイにデータの領域に加えてパリティの領域を設け，周辺回路としてパリティ生成回路と誤り訂正回路とを設けることで，不良ビットに対する誤り訂正が可能になり，歩留まり向上とそれに伴うコストダウンを実現できる。
【０００７】
しかしながら，ＥＣＣのコード長に依存して誤り訂正能力が異なり，誤り訂正能力に応じて歩留まりも異なる。前述した２のＮ乗ビットのデータに対してＮ＋１ビットのパリティビットを利用する。よって，Ｎが小さいほどメモリセルアレイの冗長性が高くなり，欠陥密度が低い場合には高い冗長性がチップ面積を増大させコストアップを招くが，欠陥密度が高い場合には救済確率が高くなりコストアップを抑制できる。一方で，Ｎが大きいほどメモリセルアレイの冗長性が低くなり，欠陥密度が低い場合にはコストアップを抑制できるが，欠陥密度が高くなると低い誤り訂正能力により救済確率が低下して逆にコストアップを招く。
【０００８】
すなわち，ＥＣＣのコード長に関しては，コード長を長くすることによるエラー訂正確率の向上と歩留まりの向上の可能性と，コード長を長くすることによるパリティビット用メモリセルアレイ領域の増大とそれに伴うチップの肥大化とは，トレードオフの関係にある。しかも，それらは欠陥密度に依存して変動する。
【０００９】
したがって，半導体メモリ装置を設計する際に，どの程度の欠陥密度になるかを予測して，最適なＥＣＣのコード長を決定する必要がある。しかし，この予測と判断は必ずしも容易ではない。
【００１０】
そこで，本発明の目的は，ＥＣＣのコード長を最適化できる半導体メモリ装置を提供するにある。
【００１１】
また，本発明の別の目的は，ＥＣＣのコード長を欠陥密度に応じて最適化できる半導体メモリ装置を提供することにある。
【００１２】
さらに，本発明の別の目的は，ＥＣＣのコード長に応じてパリティメモセルアレイの一部を任意に変更できる半導体メモリ装置を提供することにある。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために，本発明の第１の側面によれば，メモリセルアレイ内のデータメモリセルアレイとパリティメモリセルアレイを，複数のＥＣＣのコード長に対応した構成にし，書き込みデータからパリティを生成する入力側パリティ生成回路と，読み出しデータからパリティを生成する出力側パリティ生成回路と，読み出しパリティビットと生成パリティビットから誤りビットを示すシンドロームビットを生成するシンドローム生成回路とを，複数のＥＣＣのコード長に応じて切り替え可能に構成する。
【００１４】
好ましい態様によれば，入力側パリティ生成回路と出力側パリティ生成回路とは，同じ回路構成であるので共有化して，書き込み時と読み出し時で入出力を切り替えて使用することができる。また，シンドローム生成回路をパリティ生成回路と一体に構成することもできる。よって，これらの回路を共通化し，書き込み時と読み出し時で入出力を切り替えると共に，ＥＣＣのコード長に応じて一部の構成を切り替えるようにする。これにより，異なるＥＣＣのコード長に切り替え可能な半導体メモリ装置を提供することができる。
【００１５】
上記の目的を達成するために，本発明の第２の側面によれば，誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに対して入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに対して入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力するパリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記パリティ生成回路及びシンドローム生成回路が，２のＩ乗ビットのデータとＩ＋１ビットのパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとＩ−Ｊ＋１ビットのパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする。
【００１６】
上記の目的を達成するために，本発明の第３の側面によれば，誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力する入力側パリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータから，前記パリティビットを生成する出力側パリティ生成回路と，
前記出力側パリティ生成回路が生成したパリティビットと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記入力側パリティ生成回路と出力側パリティビット生成回路とシンドローム生成回路とが，２のＩ乗ビットのデータとそれに対応するビット数のパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとそれに対応するビット数のパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする。  
【発明の効果】
【００１７】
本発明によれば，複数のＥＣＣのコード長の構成に切り替え可能な半導体メモリ装置を提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１９】
図１は，誤り訂正可能な半導体メモリ装置の構成図である。この半導体メモリ装置では，メモリセルアレイが，データを記憶するメモリセルアレイＤ−ＭＣＡと，パリティビットを記憶するメモリセルアレイＰ−ＭＣＡとを有する。そして，書き込まれる入力データＤｉｎと読み出される出力データＤｏｕｔとは，共通の入出力端子から入出力される。
【００２０】
書き込み時において，入力データＤｉｎはそのままデータメモリセルアレイＤ−ＭＣＡに書き込まれると共に，パリティ生成回路１０に供給される。パリティ生成回路１０は，入力データＤｉｎの誤りを検出し訂正可能な符号のパリティビットを生成し，上記書き込まれた入力データＤｉｎと関連付けてパリティメモリセルアレイＰ−ＭＣＡにパリティビットを書き込む。一般的には，共通のワード線選択に対応して，入力データＤｉｎが書込データＤｗとして，パリティ生成回路１０で生成されたパリティビットが書込パリティＰｗとして，それぞれデータメモリセルアレイＤ−ＭＣＡとパリティメモリセルアレイＰ−ＭＣＡとに記憶される。
【００２１】
そして，読み出し時において，共通のワード線選択に応答して，データメモリセルアレイＣ−ＭＣＡから読み出しデータＤｒが出力され，パリティメモリセルアレイＰ−ＭＣＡから読み出しパリティビットＰｒが出力される。そして，誤り訂正ユニット１２は，読み出しデータＤｒから新たなパリティビットを生成し，読み出したパリティビットＰｒとの比較により誤りビットの位置を示すシンドロームビットを生成し，そのシンドロームビットに基づいて読み出しデータＤｒの誤りビットを訂正し，出力データＤｏｕｔとして出力する。
【００２２】
本実施の形態では，メモリセルアレイの構成を変更することなく（または一部を変更するだけで），パリティ生成回路１０と誤り訂正ユニット１２とを，異なるＥＣＣのコード長に対応して切り替え可能にする。これにより，同じ半導体メモリ装置において，製造後にまたは製造の最終段階で，最適なＥＣＣのコード長を選択し，生成回路１０と誤り訂正ユニット１２とをその選択されたＥＣＣのコード長に対応する構成に切り替えることができる。したがって，製品の製造ラインの欠陥密度などに対応した最適のＥＣＣのコード長に設定することができ，その時点で最小のコスト且つ最大の歩留まりを実現することができる。また，試験工程において，任意のＥＣＣコード長に設定して動作試験を行うことができ，任意の条件下で信頼性試験を行うことができる。
【００２３】
図２は，ＥＣＣの３つのコード長でのデータとパリティの関係を示す図である。この図２では，１メガビット容量のメモリ装置を前提にして，ＥＣＣのコード長が，８ビットデータ・４ビットパリティの８−４タイプと，１６ビットデータ・５ビットパリティの１６−５タイプと，３２ビットデータ・６ビットパリティの３２−６タイプの場合のメモリセルアレイの構成を示す。
【００２４】
ハミングコードによれば，８ビットのデータから１ビットの不良を訂正するためには４ビットのパリティビットが必要である。この８ビットのデータと４ビットのパリティとがＥＣＣであり，このＥＣＣから不良ビットの検出に必要なシンドロームビットが生成される。よって，８−４タイプのＥＣＣのコード長は，１２ビットで，データが８ビット，パリティが４ビットになる。
【００２５】
同様に，１６ビットのデータから１ビットの不良を訂正するためには５ビットのパリティビットが必要である。したがって，このＥＣＣのコード長は，２１ビットで，データが１６ビット，パリティが５ビットである。さらに，３２ビットのデータから１ビットの不良を訂正するためには６ビットのパリティビットが必要である。このＥＣＣのコード長は，３８ビットで，データが３２ビット，パリティが６ビットである。
【００２６】
これを一般式で示すと，２のＪ乗ビットのデータから１ビットの不良を訂正するためにはＪ＋１ビットのパリティビットが必要になる。つまり，ＥＣＣは，２のＪ乗ビットのデータと，Ｊ＋１ビットのパリティの組合せになる。
【００２７】
そして，１メガビットのメモリ装置を前提にすると，８−４タイプのＥＣＣでは，１ワードが８ビットデータからなり，１３１０７２ワードで合計１メガビットになる。この１メガビットのデータに対して，パリティビットは，１ワードが４ビットからなり，１３１０７２ワード必要であるので，合計で０．５メガビットになる。つまり，メモリセルアレイの容量は１．５メガビットが必要になる。
【００２８】
同様に，１６−５タイプのＥＣＣでは，１ワードが１６ビットデータからなり，６５５３６ワードで合計１メガビットになる。この１メガビットのデータに対して，パリティビットは，１ワードが５ビットからなり，６５５３６ワード必要であるので，合計で約０．３１メガビットになる。つまり，メモリセルアレイの容量は１．３１メガビットが必要になる。
【００２９】
同様に，３２−６タイプのＥＣＣでは，１ワードが３２ビットデータからなり，３２７６８ワードで合計１メガビットになる。この１メガビットのデータに対して，パリティビットは，１ワードが６ビットからなり，３２７６８ワード必要であるので，合計で約０．１９メガビットになる。つまり，メモリセルアレイの容量は１．１９メガビットが必要になる。
【００３０】
上記のとおり，ＥＣＣのコード長が長くなるにしたがって，冗長なパリティビットの容量は小さくなり，チップサイズを小さくすることができる。しかし，ＥＣＣのコード長が長くなると，１ビットの救済単位（１ワード）のビット数が多くなるので，救済確率は低くなる。つまり，８−４タイプでは，８ビットのデータから１ビットが救済可能であり，１６−５タイプでは，１６ビットのデータから１ビットが救済可能であり，３２−６タイプでは，３２ビットのデータから１ビットが救済可能である。よって，３種類のうち，８−４タイプが最も救済確率が高く，３２−６タイプが最も救済確率が低い。
【００３１】
ただし，８−４タイプは冗長なパリティビットが最も多く，最も大きなメモリ容量を必要とし，３２−６タイプは冗長なパリティビットが最も少なく，最も小さなメモリ容量になる。したがって，救済確率と必要なメモリ容量とはトレードオフの関係になっている。
【００３２】
図１に示した，誤り訂正可能な半導体メモリ装置では，図２に示したような異なるＥＣＣのコード長のうち，最適なものを選択して，メモリのセルアレイや，パリティ生成回路やシンドローム生成回路の設計が行われる。
【００３３】
図３は，ＥＣＣのコード長に対応した平均欠陥密度と歩留まり及びコストデメリットとの関係を示すグラフ図である。図３のグラフＡは，横軸が１Ｍｂｉｔあたりの欠陥数を示す平均欠陥密度であり，縦軸がＥＣＣ救済による歩留まりである。なお，単一の不良ビットがランダムに発生することを前提にしてパアソン分布の不良ビットを用いた確率計算により求めている。横軸の欠陥密度が０，１，１０であれば，ＥＣＣにより誤り訂正可能であるので，いずれのＥＣＣタイプであってもほぼ歩留まりは１００％である。しかし，欠陥密度が高くなると，８−４タイプが最も救済確率が高いので歩留まりも高くなり，３２−６タイプが最も救済確率が低いので歩留まりも低くなる。
【００３４】
図３のグラフＢは，横軸が平均欠陥密度であり，縦軸がコストでメリットの影響度の指標である。ここでは，１枚のウエハあたりのチップ搭載数がメモリセルアレイの容量の逆数で決まると仮定した製造効率とグラフＡの歩留まりとに基づいて，コストデメリットの影響度を求めた。縦軸の数値が低いほど低コスト，高いほど高コストになる。グラフＢからわかることは，欠陥密度が１０以下の場合と１００以上の場合とで，ＥＣＣタイプ別のコストが逆転していることである。つまり，欠陥密度が１０以下では，グラフＡに示したとおり歩留まりがほぼ１００％であるので，チップのコストは１枚のウエハあたりのチップ搭載数に依存する。よって，３２−６タイプが最もメモリ容量が小さいのでコストも最小になり，８−４タイプが最もメモリ容量が大きいのでコストも最大になる。しかし，欠陥密度が１００以上になると，３２−６タイプの歩留まりが８−４タイプよりも大きく低下するので，それによるコストデメリットの割合が大きくなる。よって，より高い欠陥密度では，８−４タイプが最も低コストであり，３２−６タイプが最も高コストである。
【００３５】
図３のグラフから理解できるとおり，欠陥密度が高い製造能力のもとでは，ＥＣＣを８−４タイプにすることが最も低コストにつながるのに対して，欠陥密度が低い製造能力のもとでは，ＥＣＣを３２−６タイプにすることが最も低コストにつながる。つまり，欠陥密度が高い場合はＥＣＣのコード長を短くし，欠陥密度が低い場合はＥＣＣのコード長を長くすることが望ましい。
【００３６】
しかしながら，製造ラインの欠陥密度を予測することは困難であるとともに，製造ラインの欠陥密度は，習熟曲線によって逐一変動することが多い。また，製造ラインによっても欠陥密度が異なることもある。したがって，最適なＥＣＣを選択することは容易ではない。
【００３７】
［具体例］
図４は，本実施の形態における半導体メモリ装置の構成図である。このメモリ装置では，データを記憶するデータメモリセルアレイＤ−ＭＣＡと，パリティビットを記憶するパリティメモリセルアレイＰ−ＭＣＡとを有し，メモリセルアレイ内には，ワード線ＷＬとビット線ＢＬとの交差部にセルＣを有する。そして，共通のワード選択回路２２により１本のワード線ＷＬが選択されると，データメモリセルアレイＤ−ＭＣＡとパリティメモリセルアレイＰ−ＭＣＡとで同時に書込または読み出しが行われる。よって，メモリセルアレイには書き込み用と読み出し用の増幅器２４が設けられている。
【００３８】
この増幅器２４は，データとパリティビットのバス２５を介して，ＥＣＣ演算回路２６に接続される。また，データの入力端子２９にはデータ入力バッファ２８が，データの出力端子３１にはデータ出力バッファ３０がそれぞれ接続される。データ入力端子２９と出力端子３１とは，同じ入出力端子で構成されてもよい。図４の例では，データ入力端子２９と出力端子３１とは，それぞれ８ビット端子であるが，端子数はそれに限定されない。
【００３９】
メモリセルアレイＤ−ＭＣＡ，Ｐ−ＭＣＡでは，１本のワード線の選択に応答して，所定ビットのデータとそれに対応するパリティビットが書き込み又は読み出しされる。そして，ＥＣＣのコード長（またはタイプ）が異なっても，メモリセルアレイの構成は固定である。但し，パリティメモリセルアレイＰ−ＭＣＡは，後述するとおり，ＥＣＣのコード長に応じて不要な領域が存在するので，必要に応じて不要領域を削除してチップサイズの縮小化を図ることも可能である。不要なパリティの領域を無視すれば，データメモリセルアレイＤ−ＭＣＡもパリティメモリセルアレイＰ−ＭＣＡも固定された構成になり，増幅器２４も固定された構成になる。
【００４０】
それに伴ってバス２５も，ＥＣＣのコード長に依存することなく，同じビット数のデータのバスとパリティビットのバスで構成される。ただし，バス２５のどのビットをＥＣＣ演算回路２６に接続するかは，ＥＣＣのコード長に依存して切り替えられる。
【００４１】
そして，ＥＣＣ演算回路２６は，図１のパリティ生成回路とシンドローム生成回路及び誤り訂正回路とを有する。これらの回路構成は，ＥＣＣのコード長に依存して，切り替え可能な構成を有する。したがって，ＥＣＣ演算回路２６が切り替え制御信号ＣＮＴに応答してその構成が切り替えられる。しかし，その切り替えは，入出力の組合せの切り替えであるので，スイッチ群により実現可能であり，演算回路を構成する回路要素の切り替えは必要ない。
【００４２】
周辺回路２０は，入力コマンドを解釈してリード動作とライト動作の制御信号を生成し，選択されたＥＣＣのコード長に応じて切り替え制御信号を生成し，試験モードにおいて選択されたＥＣＣのコード長に応じて試験用の切り替え制御信号を生成する。これらの制御信号ＣＮＴに応じて，ＥＣＣ演算回路のスイッチ群が切り替え制御される。
【００４３】
データ入力バッファ２８は，データ入力端子から入力されるデータをＥＣＣ演算回路２６に供給し，データ出力バッファ３０は，ＥＣＣ演算回路２６から出力される訂正済みデータをデータ出力端子３１から出力する。これらのバッファは，データバス２５のビット数と入出力端子３０，３１のビット数との整合をとるためのシリアル・パラレル変換回路及びパラレル・シリアル変換回路を有しても良い。または，入出力端子３０，３１のビット数がデータバス２５のビット数と等しくてもよい。
【００４４】
図５は，本実施の形態におけるＥＣＣのコード長に応じたメモリセルアレイの構成を示す図である。ＥＣＣのコード長は，前述のとおり８−４タイプ，１６−５タイプ，３２−６タイプの３種類が示されている。以下の実施の形態では，一例として，ＥＣＣのコード長として上記３種類のコード長に適宜切り替え可能な構成を示す。しかし，これ以外のタイプのＥＣＣのコード長にも適用できることは明らかである。
【００４５】
メモリセルアレイは，データメモリセルアレイＤ−ＭＣＡと，パリティメモリセルアレイＰ−ＭＣＡとを有する。今仮に，データ容量を１Ｍｂｉｔとすると，データメモリセルアレイＤ−ＭＣＡは，３２７６８ｗｏｒｄ×３２ｂｉｔで構成される。つまり，３２ビットとは，ワード線の選択に応答してデータメモリセルアレイＤ−ＭＣＡに入出力されるビット数であり，図５中の１平面Ｗ１内に格納されるビット数である。そして，この３２ビットの平面（または１ワード）Ｗ１〜Ｗ３２７６８が，３２７６８面（またはワード）に論理的に分離されている。従って，論理アドレスをデコードすることにより，３２７６８ワードのうち１ワード（３２ビット）がデータメモリセルアレイＤ−ＭＣＡに対して入出力される。つまり，データバス２５は３２本設けられることになる。そして，３２ビットのデータが同時に入出力される場合は，データ入出力端子は３２ビットであり，３２ビットのデータがＮ回に分けて時分割で入出力される場合は，データ入出力端子は３２／Ｎビットである。時分割入出力するためには，入出力バッファにシリアル／パラレル変換，パラレル／シリアル変換回路が設けられる。
【００４６】
上記のように，行アドレスをデコードしてワード線が選択されて，３２ビットのデータと１６，１０または６ビットのパリティビットが同時にバスに入出力される。あるいは，行アドレスをデコードしてワード線が選択されて，２のＮ乗グループの３２ビットのデータと１６，１０または６ビットのパリティビットがセンスアンプに出力され，さらに列アドレスで２のＮ乗分の１が選択されて，最終的に３２ビットのデータと１６，１０または６ビットのパリティビットが同時にバスに入出力されてもよい。
【００４７】
８−４タイプの場合は，データが８（＝２の３乗）ビット単位であるので，ワード線の選択に対応して，４グループの８ビットデータが，データメモリセルアレイＤ−ＭＣＡに対して同時に入出力される。１６−５タイプの場合は，データが１６（２の４乗）ビット単位であるので，ワード線の選択に対応して，２グループの１６ビットデータが，データメモリセルアレイＤ−ＭＣＡに対して同時に入出力される。３２−６タイプの場合は，データが３２（２の５乗）ビット単位であるので，１グループの３２ビットデータが同時に入出力される。
【００４８】
一方，パリティメモリセルアレイＰ−ＭＣＡは，３２７６８ｗｏｒｄ×１６ｂｉｔで構成される。つまり，ワード線の選択に応答してパリティメモリセルアレイＰ−ＭＣＡに対して入出力される最大ビット数が１６ビットである。そして，１６ビットの平面（または１ワード）Ｗ１〜Ｗ３２７６８が，３２７６８面（またはワード）に論理的に分離されている。よって，パリティバス２５は１６本設けられることになる。
【００４９】
８−４タイプの場合は，８ビットデータに対して４ビットのパリティビットが生成される。よって，ワード線の選択に対応して，図中ボールド線の枠で示すとおり，４グループの８ビットデータにそれぞれ対応する４グループの４ビットパリティビットが，パリティメモリセルアレイＰ−ＭＣＡに対して入出力される。１６−５タイプの場合は，１６ビットデータに対して５ビットのパリティビットが生成される。よって，ワード線の選択に対応して，２グループの１６ビットデータにそれぞれ対応する２グループの５ビットパリティビットが，パリティメモリセルアレイＰ−ＭＣＡに対して入出力される。したがって，パリティメモリセルアレイＰ−ＭＣＡには，６ビットの不使用セル（網掛け部分）が存在する。３２−６タイプの場合は，３２ビットデータに対して６ビットのパリティビットが生成される。よって，ワード線の選択に対応して，１グループの３２ビットデータにそれぞれ対応する１グループの６ビットパリティビットが，パリティメモリセルアレイＰ−ＭＣＡに対して入出力される。よって，パリティメモリセルアレイＰ−ＭＣＡには，１０ビットの不使用セル（網掛け部分）が存在する。
【００５０】
上記のように，異なるＥＣＣのコード長に対応できるように，データメモリセルアレイＤ−ＭＣＡでは，最長コード長に対応して，２のＩ乗ビットを１ワードとする構成にして，２のＩ−Ｊ乗（Ｉ＞Ｊ，Ｊ＝１，２，３．．．）ビットのデータの単位に対応可能にする。一方，パリティメモリセルアレイＰ−ＭＣＡでは，最短コード長に対応して，Ｉ−Ｊ＋１ビット×２のＪ乗グループ（Ｊは選択可能な最大値）のビットを１ワードとする構成にする。
【００５１】
そして，ＥＣＣのコード長が最短長では，パリティメモリセルアレイＰ−ＭＣＡは全てのメモリセルが使用され，ＥＣＣのコード長が長くなるにしたがい，一部のメモリセルしか使用されなくなる。つまり，不使用メモリセル数が増大する。
【００５２】
このような構成にすることで，ワード線選択回路２２や増幅器２４やバス２５を含めてメモリセルアレイの構成を，ＥＣＣのコード長にかかわらず固定的な構成にすることができる。したがって，ＥＣＣのコード長を切り替え可能なメモリ装置に適用可能である。
【００５３】
図６は，本実施の形態におけるＥＣＣ演算回路の概略構成図である。書き込み時では，入力されるデータＤｉｎは，書込データＤ＜Ｎ：０＞としてデータメモリセルアレイに記憶されるとともに，入力側パリティ生成回路２６０に入力される。入力側パリティ生成回路２６０は，書込データに対応するビット数のパリティビットＰ＜Ｌ：０＞を生成し，パリティメモリセルアレイＰ−ＭＣＡに記憶する。
【００５４】
一方，読み出し時では，読み出しデータＤ＜Ｎ：０＞と読み出しパリティビットＰ＜Ｌ：０＞とが，シンドローム生成回路２６２に入力される。シンドローム生成回路２６２は，具体的には，読み出しデータからそれに対応するパリティビットを生成する出力側パリティ生成回路と，そこで生成されたパリティビットと，読み出しパリティビットとからシンドロームビットを生成するシンドローム生成回路とを有する。ただし，パリティビットの生成は，ＸＯＲ回路によりデータのＸＯＲ論理を生成することで行われ，シンドロームビットの生成も，ＸＯＲ回路により両パリティビットのＸＯＲ論理を生成することで行われる。したがって，出力側パリティ生成回路とシンドローム生成回路とはＸＯＲ回路で共通化することが可能である。
【００５５】
そして，シンドロームデコーダ２６４は，シンドローム生成回路２６２が生成したシンドロームビットＳ＜Ｌ：０＞をデコードして，どのビットに誤りが存在するかを示す誤りビット信号ＥＣ＜Ｌ：０＞を生成する。最後に，誤り訂正回路２６６が，誤りビット信号ＥＣ＜Ｌ：０＞に基づいて，読み出しデータＤ＜Ｎ：０＞の誤りビットを訂正（ビット反転）して，誤り訂正された読み出しデータが出力データＤｏｕｔとして出力される。前述した出力側パリティ生成回路とシンドローム生成回路とを有するシンドローム生成回路２６２と，シンドロームデコーダ２６４とを合わせて，シンドローム生成回路と称しても良い。
【００５６】
さらに，入力側パリティ生成回路２６０は，ＸＯＲ回路を有し，入力データＤｉｎのうち選択された一部のデータのＸＯＲ論理を生成して，パリティビットを生成する。つまり，入力側パリティ生成回路２６０もＸＯＲ回路で構成できる。よって，入力側パリティ生成回路２６０とシンドローム生成回路２６２とは，共通のＸＯＲ回路群で構成可能であり，書き込み時と読み出し時とで，入力端子及び出力端子をスイッチで切り替えることが好ましい構成である。
【００５７】
次に，一般的なハミングコードに基づくパリティビットについて説明する。この説明により，後述するＥＣＣ演算回路のＥＣＣのコード長に応じた切り替え構造の理解が容易になる。
【００５８】
図７は，本実施の形態におけるパリティチェックマトリクスの具体例を示す図である。図７には，図５で示した１ワード，３２ビットのデータＤに対するパリティビットｐ０〜ｐ５の例を示している。８−４タイプのＥＣＣシステムの場合は，４つのグループ（０）〜（３）が，１６−５タイプのＥＣＣシステムの場合は，２つのグループ（０）（１）が，３２−６タイプのＥＣＣシステムの場合は１つのグループが示される。
【００５９】
パリティビットの生成は次の通りである。８−４タイプの場合，図中１００で示すデータＤ０〜Ｄ７のうちクロスＸの５ビットのＸＯＲ論理が，データ１００に対するパリティビットｐ０になる。他のパリティビットｐ１〜ｐ３も同様にクロスＸが付された５ビットのＸＯＲ論理になる。このパリティビットに対するクロスＸの位置は，各データビットＤ０〜Ｄ７について見ると（図７の縦方向），重複しない組合せになっている。つまり，データＤ０に対してはパリティビットｐ０，ｐ２にクロスＸが配置され，この組合せｐ０，ｐ２は，他のデータＤ１〜Ｄ７には存在しない。重複しない組合せになっていればよいので他の組合せでも良い。
【００６０】
８−４タイプの場合，上記クロスＸの配置は，４つのグループ（０）〜（３）において共通化されている。
【００６１】
１６−５タイプの場合のパリティビットの生成も同様であり，データＤ０〜Ｄ１５のうちクロスＸが配置されている１０ビットのＸＯＲ論理が，それぞれのパリティビットｐ０〜ｐ４になる。そして，クロスＸの組合せは，パリティビットｐ０〜ｐ３においては，８−４タイプと同じになっている。これがＥＣＣのコード長に対応する切り替え構造を簡単にすることに寄与している。そして，パリティビットｐ４に対するクロスＸの位置は，いずれもデータＤ８〜Ｄ１５に配置されている。
【００６２】
３２−６タイプの場合のパリティビットの生成も同様に，データＤ０〜Ｄ３１のうちクロスＸが配置されている２０ビットのＸＯＲ論理が，それぞれのパリティビットｐ０〜ｐ５になる。そして，クロスＸの組合せは，パリティビットｐ０〜ｐ３においては，８−４タイプと同じになっていて，ＥＣＣのコード長に対応する切り替え構造を簡単にすることに寄与している。また，パリティビットｐ４に対するクロスＸの位置は，データＤ８〜Ｄ１５，Ｄ２４〜Ｄ３１に配置され，パリティビットｐ５に対するクロスＸの位置は，データＤ１６〜Ｄ３１に配置されている。
【００６３】
上記のとおり，最長のＥＣＣのコード長である８−４タイプのパリティビットｐ０〜ｐ３を生成するデータの組合せ（クロスＸの組合せ）を，他のＥＣＣのコード長と同じにすることで，いずれのＥＣＣのコード長であっても，パリティビットｐ０〜ｐ３を生成するＸＯＲ回路を同じ構成にすることができる。
【００６４】
次に，誤り訂正について説明する。８−４タイプを例にすると，読み出しデータＤ０〜Ｄ７から，図７のマトリクスに応じてＸＯＲ論理を生成して新たなパリティビットｐ０〜ｐ３を生成する。今仮に，書込データＤ０〜Ｄ７が全て「０」と仮定すると，書き込み時に生成されるパリティビットｐ０〜ｐ３は「００００」になる。ＸＯＲ論理は，２ビットであれば２ビットデータが排他的な場合に「１」，同じ場合に「０」になるが，３ビット以上の場合は，データ「１」が奇数の場合に「１」，偶数の場合に「０」になる。したがって，書込データが全て「０」であれば，全てのパリティビットｐ０〜ｐ３は「０」になる。
【００６５】
そして，仮に読み出しデータＤ０〜Ｄ７から生成されたパリティビットｐ０〜ｐ３が「１０１０」になったとする。この場合，読み出されたパリティビット「００００」と新たに生成されたパリティビット「１０１０」とを比較し，不一致のビットはｐ０，ｐ２である。つまり，この比較をＸＯＲ論理の生成で行うと，得られる比較結果コードは「１０１０」である。この比較結果コード「１０１０」を図７のマトリクスのクロスＸの組合せと照合すると，データＤ０のクロスＸの組合せが一致することが判明する。したがって，データＤ０に誤りがあることが検出される。つまり，読み出しデータＤ０〜Ｄ７は「１０００００００」であり，それから生成したパリティビットｐ０〜ｐ３は「１０１０」だったわけである。
【００６６】
なお，新たに生成されたパリティビットが「００００」の場合は，新旧のパリティビットが一致するので，誤りは存在しないことが判明する。
【００６７】
このように，書込データＤ０〜Ｄ７のうち，一部のビットのユニークな組合せのＸＯＲ論理によりパリティビットｐ０〜ｐ３を生成しておき，読み出しデータＤ０〜Ｄ７から再度新たにパリティビットｐ０〜ｐ３を生成し，新旧のパリティビットを比較して不一致のビットの組合せから，読み出しデータＤ０〜Ｄ７のどのビットに誤りがあるかを検出することができる。
【００６８】
上記の説明で理解できるとおり，入力側パリティ生成回路も，出力側パリティ生成回路も，いずれもＸＯＲ論理回路で構成可能である。また，両パリティビットを比較するシンドローム生成回路もＸＯＲ論理回路で構成可能である。そして，出力側パリティ生成回路とシンドローム生成回路を同じＸＯＲ論理回路で構成可能である。よって，入力側と出力側パリティ生成回路とシンドローム生成回路とを全て共通のＸＯＲ論理回路で構成し，書き込み時と読み出し時で読み出しパリティビットを入力するか否かを切り替え，ＥＣＣのコード長に応じてどのデータ群のＸＯＲ論理出力をパリティビットまたはシンドロームビットとして出力するかを切り替えることで，ＥＣＣ演算回路を最小回路規模にすることができる。
【００６９】
図８，図９は，本実施の形態におけるＥＣＣ論理回路の構成図である。このＥＣＣ論理回路では，入力側パリティ生成回路２６０と出力側パリティ生成回路及びシンドローム生成回路２６２が，共通のＸＯＲ回路で構成されている。以下，この共通化されたＸＯＲ回路をパリティ／シンドローム生成回路と称する。また，図８には，ＥＣＣのコード長に応じて切り替えるための制御信号ＣＮＴＣＮＴ，書き込みと読み出しとで切り替えるための制御信号ＣＮＴを生成する制御信号生成回路ＣＯＮＴが示されている。
【００７０】
図７で説明したとおり，各パリティビットｐ０〜ｐ６は，データＤ０〜Ｄ７，Ｄ０〜Ｄ１５，Ｄ０〜Ｄ３１のクロスＸの組合せから生成される。したがって，パリティ／シンドローム生成回路は，パリティビットｐ０〜ｐ６をそれぞれ生成する６つの回路P0/S0〜P5/S5で構成される。図中Ｓ＜Ｎ＞はシンドロームビットを示す。
【００７１】
データメモリセルアレイＤ−ＭＣＡは，３２ビットのデータバス２５Ｄに接続され，パリティメモリセルアレイＰ−ＭＣＡは，１６ビットのパリティバス２５Ｐに接続され，これらのバス２５Ｄ，２５Ｐが接続網ＮＥＴ１を介して，パリティ／シンドローム生成回路P0/S0〜P5/S5の入力端子に，それぞれ対応する組合せで接続される。そして，各パリティ／シンドローム生成回路P0/S0〜P5/S5は，パリティビットＰ＜Ｌ＞またはシンドロームビットＳ＜Ｌ＞を出力する。これらのうちパリティビットＰ＜５：０＞，２組のＰ＜４：０＞，または４組のＰ＜３：０＞は，パリティセルアレイＰ−ＭＣＡに供給され，シンドロームビットＳ＜５：０＞，２組のＳ＜４：０＞，または４組のＳ＜３：０＞は，接続網ＮＥＴ２を介して，図９のシンドロームデコーダ２６４０〜２６４３に供給される。
【００７２】
図９には，４つのシンドロームデコーダ２６４０〜２６４３と，誤り訂正回路２６６とが示されている。シンドロームデコーダは，各シンドロームビットＳ＜５：０＞，２組のＳ＜４：０＞，または４組のＳ＜３：０＞を，図７のパリティチェックマトリクスを格納したＲＯＭ２８のクロスＸの位置と照合し，一致するビットを示す誤り訂正コードＥＣを生成し，誤り訂正回路２６６に与える。図９については，後で再度詳述する。
【００７３】
パリティ／シンドローム生成回路P0/S0は，３２ビットの書込データＤｗまたは読み出しデータＤｒのうち，２０ビットを入力し，それらのＸＯＲ論理を生成して，パリティビットＰ＜０＞を生成する。２０ビットの組合せは，図７のクロスＸに示されるとおりであり，ＥＣＣのデータ長に依存することなく共通になっている。また，生成されるパリティビットＰ＜０＞は，８−４タイプなら４つのパリティビットＰ＜０＞が，１６−５タイプなら２つのパリティビットＰ＜０＞が，３１−６タイプなら１つのパリティビットＰ＜０＞が生成される。この切り替えが，切り替え制御信号ＣＮＴに応じて，出力側のスイッチ群ＳＷｏｕｔにより行われる。
【００７４】
パリティ／シンドローム生成回路P0/S0は，読み出し時において，読み出しデータＤｒのうち２０ビットのＸＯＲ論理に加えて，読み出されたパリティビットＰ＜０＞とのＸＯＲ論理も生成して，シンドロームビットＳ＜０＞を生成する。入力されるパリティビットＰ＜０＞は，８−４タイプなら４つのパリティビットＰ＜０＞，１６−５タイプなら２つのパリティビットＰ＜０＞，３１−６タイプなら１つのパリティビットＰ＜０＞になり，出力されるシンドロームビットＳ＜０＞も，同様にタイプ別に４つ，２つ，１つのビットになる。これらの切り替えが，切り替え制御信号ＣＮＴに応じて，入力側スイッチ群ＳＷinと出力側スイッチ群ＳＷｏｕｔとで行われる。
【００７５】
パリティ／シンドローム生成回路P1/S1〜P3/S3も，上記のパリティ／シンドローム生成回路P0/S0と同じ構成である。
【００７６】
図１０〜図１６は，パリティ／シンドローム生成回路P0/S0〜P3/S3の３つのＥＣＣのタイプ別の回路図である。３つのタイプそれぞれに，パリティ生成回路の構成と，シンドローム生成回路の構成とが示される。図１６は，それら６つの回路構成を切り替え可能にするスイッチ群を含めた図である。
【００７７】
図１０は，３２−６タイプの場合のパリティ生成回路である。この回路は，８つの３入力のＸＯＲ回路２６０１〜２６０８を入力側に設け，２４ビットの入力端子に接続している。そして，３入力ＸＯＲ回路の出力が，４つの２入力ＸＯＲ回路２６０９〜２６１２に入力され，それらの出力が２つの２入力ＸＯＲ回路２６１３，２６１４に入力され，その出力が最終段の２入力ＸＯＲ回路２６１５に入力され，その出力がパリティビットＰ＜Ｌ＞となる。このパリティビットは，Ｐ＜０＞〜Ｐ＜３＞のいずれかになる。
【００７８】
上記のように，ＸＯＲ回路を階層化した構成にすることで，後で説明するとおり，異なるＥＣＣのコード長にも切り替え可能にすることができる。
【００７９】
２４ビットの入力端子は，４グループに分けられ，各グループには，５ビットのデータが入力され，残りの１ビットはグランド端子ＧＮＤに接続されて論理「０」にされる。論理「０」はＸＯＲ論理に何らの影響も与えない。４グループの５ビットデータは，図７に示したとおり，３２ビットのデータＤ０〜Ｄ３１からクロスＸが配置された２０ビットのデータの組合せである。したがって，パリティ／シンドローム回路P0/S0〜P3/S3それぞれに，図７で示した組合せの２０ビットのデータを入力することで，パリティビットＰ＜０＞〜Ｐ＜３＞をそれぞれ生成する。
【００８０】
図１１は，３２−６タイプの場合のシンドローム生成回路である。この回路も，図１０と同様に２４ビットの入力端子と，８つの３入力ＸＯＲ回路と，７つの２入力ＸＯＲ回路と，１ビットの出力端子とで構成される。そして，４グループに分けられた入力端子には，３グループでは５ビットデータが入力され，残りの１ビットがグランド端子に接続される。もう１つのグループでは，図中矢印２００に示すとおり，５ビットデータと１ビットの読み出しパリティビットとが入力される。つまり，２０ビットの読み出しデータと１ビットのパリティビットのＸＯＲ論理が，シンドロームビットＳ＜Ｌ＞として出力される。つまり，図１１の回路は，図１０とは矢印２００の入力端子に，グランドＧＮＤの論理「０」を入力するか，読み出したパリティビットＰ＜Ｌ＞を入力するかが異なるだけである。よって，書き込みと読み出しを区別する制御信号によりこれらの切り替えが行われればよい。
【００８１】
図１２は，１６−５タイプの場合のパリティ生成回路である。この回路では，２４ビットの入力端子と，８つの３入力ＸＯＲ回路ＸＯＲ３と，６つの２入力ＸＯＲ回路ＸＯＲ２と，２ビットの出力端子Ｐ＜Ｌ＞とで構成される。つまり，最後段の２入力ＸＯＲ回路の部分２１０は使用されない。そして，図７に示されるとおり，１６−５タイプの場合は，２グループのデータに対してそれぞれパリティビットＰ＜Ｌ＞が生成されるので，図中水平破線で分離された上下のＸＯＲ回路群によりそれぞれのグループのＸＯＲ論理が生成される。つまり，１グループ目のデータＤ＜１５：０＞−０のうちの１０ビットから，パリティビットＰ＜Ｌ＞−０が生成され，２グループ目のデータＤ＜１５：０＞−１のうちの１０ビットから，パリティビットＰ＜Ｌ＞−１が生成される。
【００８２】
図１３は，１６−５タイプの場合のシンドローム生成回路である。図１２と同様に，２４ビットの入力端子と，８つの３入力ＸＯＲ回路ＸＯＲ３と，６つの２入力ＸＯＲ回路ＸＯＲ２と，２ビットの出力端子Ｓ＜Ｌ＞とで構成され，最後段の２入力ＸＯＲ回路の部分２１０は使用されない。そして，図１２とは，矢印２２０の入力端子の位置に，パリティビットＰ＜Ｌ＞−０，Ｐ＜Ｌ＞−１が入力されることで異なっていて，出力がシンドロームビットであることでも異なっている。入力されるデータＤ＜１５：０＞の組合せは図１２と同じである。よって，書き込み時と読み出し時とでは，矢印２２０の部分が切り替えられる。
【００８３】
図１４は，８−４タイプの場合のパリティ生成回路である。この回路では，２４ビットの入力端子と，８つの３入力ＸＯＲ回路ＸＯＲ３と，４つの２入力ＸＯＲ回路ＸＯＲ２と，４ビットの出力端子Ｐ＜Ｌ＞とで構成される。つまり，最後段の３つの２入力ＸＯＲ回路の部分２３０は使用されない。そして，図７に示されるとおり，８−４タイプの場合は，４グループのデータに対してそれぞれパリティビットＰ＜Ｌ＞が生成されるので，図中水平破線で分離された４つのＸＯＲ回路群によりそれぞれのグループのＸＯＲ論理が生成される。つまり，１グループ目のデータＤ＜７：０＞−０のうち５ビットから，パリティビットＰ＜Ｌ＞−０が生成され，２グループ目のデータＤ＜７：０＞−１のうち５ビットから，パリティビットＰ＜Ｌ＞−１が生成され，３，４グループ目も同様にパリティビットＰ＜Ｌ＞−２，Ｐ＜Ｌ＞−３が生成される。
【００８４】
図１５は，８−４タイプの場合のシンドローム生成回路である。図１４と同様に，２４ビットの入力端子と，８つの３入力ＸＯＲ回路と，４つの２入力ＸＯＲ回路と，４ビットの出力端子Ｓ＜Ｌ＞とで構成され，最後段の３つの２入力ＸＯＲ回路の部分２３０は使用されない。そして，図１４とは，矢印２４０の入力端子の位置に，パリティビットＰ＜Ｌ＞−０，Ｐ＜Ｌ＞−１，Ｐ＜Ｌ＞−２，Ｐ＜Ｌ＞−３が入力されることで異なり，出力がシンドロームビットであることでも異なっている。入力されるデータＤ＜７：０＞の組合せは図１４と同じである。したがって，書き込み時と読み出し時とでは，矢印２４０の部分が切り替えられる。
【００８５】
図１６は，３つのＥＣＣのコード長に切り替え可能なパリティ／シンドローム生成回路P0/S0〜P3/S3を示す図である。図１０〜図１５に示したとおり，各ＥＣＣのタイプにおいて，矢印２００，２２０，２４０の入力端子で書き込み時と読み出し時で切り替えが必要である。そして，３つのＥＣＣのタイプに応じて，入力端子に入力すべきパリティビットを，出力端子に出力すべきパリティビットまたはシンドロームビットを，それぞれ切り替えることが必要である。
【００８６】
図１６には，図８の入力側のスイッチ群ＳＷｉｎとしてスイッチＳＷ１，ＳＷ２，ＳＷ３，ＳＷ４が示され，出力側のスイッチ群ＳＷｏｕｔとしてスイッチＳＷ１１，ＳＷ１２が示されている。これらのスイッチの切り替えは，以下の通りであり，このように切り替えることで，図１０〜図１５に示した回路が実現される。
【００８７】
ＳＷ１：書き込み時はＧＮＤに，読み出し時は８−４ではパリティＰ＜Ｌ＞−０に，１６−４，３２−５ではＧＮＤに接続される。
【００８８】
ＳＷ２：書き込み時はＧＮＤに，読み出し時は８−４ではパリティＰ＜Ｌ＞−１に，１６−４ではパリティＰ＜Ｌ＞−０に，３２−５ではＧＮＤに接続される。
【００８９】
ＳＷ３：書き込み時はＧＮＤに，読み出し時は８−４ではパリティＰ＜Ｌ＞−２に，１６−４，３２−５ではＧＮＤに接続される。
【００９０】
ＳＷ４：書き込み時はＧＮＤに，読み出し時は８−４ではパリティＰ＜Ｌ＞−３に，１６−４ではパリティＰ＜Ｌ＞−１に，３２−５ではパリティＰ＜Ｌ＞に接続される。
【００９１】
ＳＷ１１：書き込み時と読み出し時のいずれも，端子８−４，１６−５，３２−６のいずれかに接続される。但し，書き込み時はパリティビットＰ＜Ｌ＞として，読み出し時はシンドロームビットＳ＜Ｌ＞として出力される。
【００９２】
ＳＷ１２：書き込み時と読み出し時のいずれも，端子８−４，１６−５のいずれかに接続され，３２−６ではこの出力端子は不使用。
【００９３】
以上のように，出力端子は，８−４タイプなら４ビット出力，１６−５タイプなら２ビット出力，３２−６タイプなら１ビット出力になる。逆にいえば，３２−６タイプなら３つの出力端子は不使用，１６−５タイプなら２つの出力端子が不使用になる。これらのスイッチの制御は，書き込みと読み出し，ＥＣＣのコード長（８−４，１６−５，３２−６）に応じて生成される切り替え制御信号ＣＮＴにより行われる。また，入力端子へのデータバスからの入力は，切り替える必要はない。
【００９４】
図８に戻り，パリティ／シンドローム生成回路P4/S4は，図７に示されるとおり，書き込み時には，３２ビットのデータＤ＜Ｌ＞のうち１６ビットを入力して，パリティビットＰ＜４＞を必要ビット生成する。そして，読み出し時には，同回路は，３２ビットのデータＤ＜Ｌ＞のうち１６ビットを入力し，さらに読み出されたパリティビットＰ＜４＞を必要ビット入力して，シンドロームビットＳ＜４＞を必要ビット出力する。
【００９５】
パリティ／シンドローム生成回路P4/S4は，８−４タイプでは必要なく，１６−５タイプと３２−６タイプで使用される。１６−５タイプの場合は，２グループのデータＤ＜１５：０＞のうちの８ビットから，それぞれ，２グループのパリティビットＰ＜４＞またはシンドロームビットＳ＜４＞が生成され，３２−６タイプの場合は，１グループのデータＤ＜３１：０＞のうち１６ビットから，単一のパリティビットＰ＜５＞またはシンドロームビットＳ＜５＞が生成される。したがって，これらの入力側スイッチ群ＳＷｉｎへの切り替え制御信号ＣＮＴは，書き込みと読み出し，及び１６−５か３２−６かに対応して生成される。また，出力側スイッチ群ＳＷｏｕｔへの切り替え制御信号ＣＮＴは，１６−５か３２−６かに対応して生成される。
【００９６】
図１７〜図２１は，パリティ／シンドローム生成回路P4/S4の２つのＥＣＣのタイプ別の回路図である。２つのタイプそれぞれに，パリティ生成回路の構成と，シンドローム生成回路の構成とが示される。図２１は，それら４つの回路構成を切り替え可能にするスイッチ群を含めた図である。
【００９７】
図１７は，３２−６タイプの場合のパリティ生成回路である。この回路は，８つの３入力のＸＯＲ回路ＸＯＲ３を入力側に設け，２４ビットの入力端子に接続している。そして，７つの３入力ＸＯＲ回路ＸＯＲ３の出力が３階層に構成され，最終段の２入力ＸＯＲ回路ＸＯＲ２の出力がパリティビットＰ＜４＞となる。入力段の１対のＸＯＲ３の６ビット入力のうち，４ビットにデータが入力され，２ビットがグランドＧＮＤに接続されて論理「０」になっている。そして，データＤ＜３１：０＞のうち，図７のクロスＸが付された１６ビットのデータＤ＜３１：１６＞が入力される。
【００９８】
図１８は，３２−６タイプの場合のシンドローム生成回路である。この回路も，図１７と同様に，８つの３入力のＸＯＲ回路ＸＯＲ３を入力側に設け，２４ビットの入力端子に接続し，７つの３入力ＸＯＲ回路ＸＯＲ３の出力が３階層に構成され，最終段の２入力ＸＯＲ回路ＸＯＲ２の出力がシンドロームビットＳ＜４＞となる。入力段の１対のＸＯＲ３の６ビット入力のうち，４ビットにデータが入力され，２ビットがグランドＧＮＤに接続されて論理「０」になっている。つまり，データＤ＜３１：０＞のうち１６ビットのデータＤ＜３１：１６＞が入力される。さらに，矢印２５０で示した入力端子には，読み出されたパリティビットＰ＜４＞が入力される。つまり，矢印２５０の接続が図１７と異なる。
【００９９】
図１９は，１６−５タイプの場合のパリティ生成回路である。この回路は，８つの３入力のＸＯＲ回路ＸＯＲ３を入力側に設け，２４ビットの入力端子に接続し，６つの３入力ＸＯＲ回路ＸＯＲ３の出力が２階層に構成され，２グループのパリティビットＰ＜４＞−０，Ｐ＜４＞−１が出力される。最終段の２入力ＸＯＲ回路ＸＯＲ２の部分２６０は使用されない。入力段の１対のＸＯＲ３の６ビット入力のうち，４ビットにデータが入力され，２ビットがグランドＧＮＤに接続されて論理「０」になっている。そして，図中水平破線で分離され，２グループのデータＤ＜１５：０＞のうち８ビットのデータＤ＜１５：８＞が，各グループの１０ビット入力端子に入力される。
【０１００】
図２０は，１６−５タイプの場合のシンドローム生成回路である。この回路は，図１９と同様に，８つの３入力のＸＯＲ回路ＸＯＲ３を入力側に設け，２４ビットの入力端子に接続し，６つの３入力ＸＯＲ回路ＸＯＲ３の出力が２階層に構成され，２グループのシンドロームビットＳ＜４＞−０，Ｓ＜４＞−１が出力される。最終段の２入力ＸＯＲ回路ＸＯＲ２の部分２８０は使用されない。そして，入力端子では，矢印２７０の端子にそれぞれ読み出しパリティビットＰ＜４＞−０，Ｐ＜４＞−１がそれぞれ入力される。それ以外の入力端子は，図１９と同じである。
【０１０１】
図２１は，２つのＥＣＣのコード長３２−６，１６−５に切り替え可能なパリティ／シンドローム生成回路P4/S4を示す図である。図１７〜図１９に示したとおり，各ＥＣＣのタイプにおいて，矢印２５０，２７０の入力端子で書き込み時と読み出し時で切り替えが必要である。そして，２つのＥＣＣのタイプに応じて，入力端子に入力すべきパリティビットを，出力端子に出力すべきパリティビットまたはシンドロームビットを，それぞれ切り替えることが必要である。
【０１０２】
図２１には，図８の入力側のスイッチ群ＳＷｉｎとしてスイッチＳＷ２１，ＳＷ２２が示され，出力側のスイッチ群ＳＷｏｕｔとしてスイッチＳＷ３１が示されている。これらのスイッチの切り替えは，以下の通りであり，このように切り替えることで，図１７〜図１９に示した回路が実現される。
【０１０３】
ＳＷ２１：書き込み時はＧＮＤに，読み出し時は１６−５ではパリティＰ＜４＞−０に，３２−５ではＧＮＤに接続される。
【０１０４】
ＳＷ２２：書き込み時はＧＮＤに，読み出し時は１６−４ではパリティＰ＜４＞−１に，３２−５ではパリティＰ＜４＞に接続される。
【０１０５】
ＳＷ３１：書き込み，読み出しいずれも１６−５，３２−６のいずれかに接続される。但し，書き込み時はパリティビットＰ＜４＞として，読み出し時はシンドロームビットＳ＜４＞として出力される。
【０１０６】
以上のように，出力端子は，１６−５タイプなら２ビット出力，３２−６タイプなら１ビット出力になる。これらのスイッチの制御は，書き込みと読み出しに応じて，そして，ＥＣＣのコード長（１６−５，３２−６）に応じて，それぞれ生成される切り替え制御信号ＣＮＴにより行われる。また，データバスから入力端子へのの入力は，切り替える必要はない。
【０１０７】
図８に戻り，最後のパリティ／シンドローム回路P5/S5について説明する。パリティ／シンドローム回路P5/S5は，図７に示されるとおり，書き込み時には，３２ビットのデータＤ＜Ｌ＞のうち１６ビットのデータＤ＜３１：１６＞を入力して，パリティビットＰ＜５＞を１ビット生成する。そして，読み出し時には，同回路は，３２ビットのデータＤ＜Ｌ＞のうち１６ビットのデータＤ＜３１：１６＞を入力し，さらに読み出されたパリティビットＰ＜５＞を入力して，シンドロームビットＳ＜５＞を１ビット出力する。
【０１０８】
パリティ／シンドローム生成回路P5/S5は，８−４タイプ，１６−５タイプでは必要なく，３２−６タイプでのみ使用される。したがって，これらの入力側スイッチ群ＳＷｉｎへの切り替え制御信号ＣＮＴは，書き込みと読み出しに対応して生成される。また，出力側スイッチ群ＳＷｏｕｔはない。
【０１０９】
図２２〜図２４は，パリティ／シンドローム生成回路P5/S5の書き込み時と読み出し時別の回路図である。図２４は，それら２つの回路構成を切り替え可能にするスイッチ群を含めた図である。
【０１１０】
図２２は，３２−６タイプのパリティ生成回路である。８つの３入力ＸＯＲ回路ＸＯＲ３と，７つの２入力ＸＯＲ回路ＸＯＲ２とで構成され，２４ビットの入力端子のうち１６ビットにはデータＤ＜３１：１６＞が入力され，残りの８ビットはグランドＧＮＤに接続されて論理「０」にされている。
【０１１１】
図２３は，３２−６タイプのシンドローム生成回路である。ＸＯＲ回路構成は，図２２と同じであり，入力端子において，矢印２９０に読み出しパリティビットＰ＜５＞が入力されることを除いては，図２２と同じである。また，出力端子にはシンドロームビットＳ＜５＞が出力される。
【０１１２】
図２４は，３２−６タイプのパリティ／シンドローム回路P5/S5の回路図であり，入力側スイッチ群ＳＷｉｎとしてスイッチＳＷ４１が示されている。つまり，スイッチＳＷ４１は，書き込み時にグランドＧＮＤ側に，読み出し時にパリティビットＰ＜５＞側に接続される。よって，スイッチＳＷ４１は，書き込みか読み出しかに応じて切り替えられる。出力端子には，読み出し時にパリティビットＰ＜５＞が出力され，書き込み時にシンドロームビットＳ＜５＞が出力される。
【０１１３】
図８に戻り，パリティ／シンドローム回路P0/S0〜P3/S3は，３タイプのＥＣＣのコード長に対応し，且つ書き込み時と読み出し時でそのスイッチ群ＳＷｉｎ，ＳＷｏｕｔが切り替えられ，６種類の回路に切り替わる。同様に，パリティ／シンドローム回路P4/S4は，２タイプのＥＣＣのコード長３２−６，１６−５に対応し，且つ書き込み時と読み出し時でそのスイッチ群ＳＷｉｎ，ＳＷｏｕｔが切り替えられ，４種類の回路に切り替わる。そして，パリティ／シンドローム回路P5/S5は，ＥＣＣのコード長３２−６の時に使用され，書き込み時と読み出し時でそのスイッチ群ＳＷｉｎが切り替えられ，２種類の回路に切り替わる。そして，それらの切り替わりが，制御信号ＣＮＴにより行われる。
【０１１４】
図８において，３２ビットのデータバス２５Ｄのうち図７のパリティｐ０に示した組合せの２０ビットがパリティ／シンドローム回路P0/S0に，パリティｐ１に示した組合せの２０ビットがパリティ／シンドローム回路P1/S1に，パリティｐ２に示した組合せの２０ビットがパリティ／シンドローム回路P2/S2に，パリティｐ３に示した組合せの２０ビットがパリティ／シンドローム回路P3/S3に，それぞれ入力される。しかし，これらの入力への接続は，３タイプのＥＣＣのコード長にかかわらず固定である。同様に，３２ビットのデータバス２５Ｄのうち図７のパリティｐ４，ｐ５に示した組合せの１６ビットが，パリティ／シンドローム回路P4/S4，P5/S5に入力され，これらの入力への接続も固定である。
【０１１５】
そして，上記パリティ／シンドローム回路に入力される読み出しパリティビットの組合せが，ＥＣＣのコード長のタイプに応じて切り替えられるが，それは入力側スイッチ群ＳＷｉｎで行われる。さらに，上記パリティ／シンドローム回路の出力であるパリティビットまたはシンドロームビットは，ＥＣＣのコード長に応じて切り替えられるが，それは出力側スイッチ群ＳＷｏｕｔで行われる。
【０１１６】
図８の接続網ＮＥＴ２により，各パリティ／シンドローム回路P0/S0〜P5/S5が生成するシンドロームビットのうち，第１グループの１ビットをそれぞれから選択して得られるシンドロームビットＳ＜５：０＞が，シンドロームデコーダ２６４０に入力され，第２グループの１ビットをそれぞれから選択して得られるシンドロームビットＳ＜４：０＞が，シンドロームデコーダ２６４１に入力され，同様に，第３，４グループの１ビットをそれぞれから選択して得られるシンドロームビットＳ＜３：０＞が，シンドロームデコーダ２６４２，２６４３にそれぞれ入力される。
【０１１７】
ＥＣＣのコード長が３２−６タイプなら，シンドロームビットＳ＜５：０＞が入力されるシンドロームデコーダ２６４０のみが動作し，１６−５タイプならシンドロームビットＳ＜４：０＞が入力されるシンドロームデコーダ２６４０，２６４１のみが動作し，８−４タイプならシンドロームビットＳ＜３：０＞が入力されう４つのシンドロームデコーダにが動作する。よって，各シンドロームデコーダには，切り替え用の制御信号ＣＮＴが供給される。
【０１１８】
各シンドロームデコーダ回路２６４０〜２６４３は，入力されたシンドロームビットとパリティチェックマトリクス２８内のクロスＸの情報とを照合し，一致するビットを「１」とし不一致のビットを「０」とする誤り訂正コードＥＣを生成する。前述の例であれば，データＤ０に誤りがあるので，ＥＣ＜７：０＞＝１０００００００が出力される。
【０１１９】
そして，誤り訂正回路２６６が，読み出されたデータＤ＜３１：０＞，Ｄ＜１５：０＞×２，Ｄ＜７：０＞×４を誤り訂正コードＥＣに基づいて訂正する。具体的には，誤り訂正コードＥＣが「１」のビットを反転する。そして，誤り訂正されたデータＤ＜３１：０＞，Ｄ＜１５：０＞×２，Ｄ＜７：０＞×４が出力される。
【０１２０】
図２５は，本実施の形態におけるメモリセルアレイの構成例を示す図である。図２５には，ＥＣＣのコード長が３２−６タイプのものを示している。図５と同様に，データメモリセルアレイＤ−ＭＣＡには，１ワード（平面）あたり３２ビットのセルが含まれ，それに対応してパリティメモリセルアレイＰ−ＭＣＡには１ワード（平面）あたり５ビットのセルが含まれる。図５でも説明したとおり，パリティメモリセルアレイＰ−ＭＣＡは，８−４タイプにも対応できるように１ワード（平面）あたり１６ビットの容量を有する。よって，３２−６タイプの場合は，使用しないセル（図中網掛け）が存在する。
【０１２１】
そこで，本実施の形態では，パリティメモリセルアレイＰ−ＭＣＡ内に不良箇所ＦＡが存在する場合は，使用するセルの領域を不良箇所が存在しない領域に変更できるようにする。図２５において，パリティメモリセルアレイＰ−ＭＣＡ（１）では，使用セル領域内に不良箇所ＦＡが存在するが，パリティメモリセルアレイＰ−ＭＣＡ（２）では，不良箇所ＦＡのない領域のセルを使用している。また，パリティメモリセルアレイＰ−ＭＣＡ（３）では，使用するセルを分散させて配置している。
【０１２２】
このように，本実施の形態では，パリティメモリセルアレイＰ−ＭＣＡにおいて，３２−６タイプや１６−５タイプの場合に，使用されるセル領域と使用されないセル領域とが存在するので，不良箇所に対応して使用されるセル領域を選択することが望ましい。
【０１２３】
図２６は，本実施の形態におけるメモリセルアレイのレイアウト例を示す図である。図２６には，ＥＣＣのコード長が８−４タイプ，１６−５タイプ，３２−６タイプの３種類におけるメモリセルアレイのレイアウトが示されている。この例によれば，メモリセルアレイの中央部に，１ワードあたり３２ビットのメモリセルを配置したデータメモリセルアレイＤ−ＭＣＡが配置され，その両側にパリティメモリセルアレイＰ−ＭＣＡが２分割して配置される。パリティメモリセルアレイＰ−ＭＣＡは，左右合わせて，１ワードあたり１６ビットのメモリセルが配置されている。
【０１２４】
図２６のメモリセルアレイは，水平方向にワード線が延びるように配置され，垂直方向にビット線が延びるように配置される。そして，ワード線選択回路は，データメモリセルアレイの中央部に配置される。よって，１つのワード線を選択すると，データメモリセルアレイ側では３２本のビット線から３２ビットのデータが出力される。また，パリティセルアレイ側では，１６本，１０本，６本のビット線から１６ビット，１０ビット，６ビットのデータが出力される。
【０１２５】
８−４タイプの場合は，パリティメモリセルアレイＰ−ＭＣＡ（１０）（１１）内の全てのメモリセルが使用される。１６−５タイプと３２−６タイプの場合は，パリティメモリセルアレイＰ−ＭＣＡ内の一部のメモリセルが使用される。そこで，左右に分割されたパリティメモリセルアレイＰ−ＭＣＡ（１２）（１３）（１４）（１５）を，中央のデータメモリセルアレイＤ−ＭＣＡ側に寄せるようにし，不使用のメモリセル群が両端に位置するようにレイアウトする。
【０１２６】
このようにすることで，常に不使用のメモリセル群を，メモリセルアレイの両端に配置することができる。通常，チップの周辺領域に不良発生確率が高くなる傾向にあるので，このようにメモリセルアレイをレイアウトすることで，不良箇所の使用確率を下げることができる。
【０１２７】
図２７は，本実施の形態におけるメモリセルアレイの変更例を示す図である。図３で説明したとおり，製造ラインの習熟度に応じて平均欠陥密度が徐々に低下していく場合，欠陥密度が高い場合は，ＥＣＣのコード長を８−４タイプにして欠陥の救済確率を上げることが全体のコストダウンになるが，欠陥密度が低くなると，ＥＣＣのコード長を３２−６タイプにしてデータ長に対するパリティビット長を短くしてセルアレイサイズを小さくすることがコストダウンにつながる。
【０１２８】
そこで，図２７に示した３２−６タイプのメモリセルアレイの場合，図２６のように中央部にデータメモリセルアレイＤ−ＭＣＡを配置し，左右にパリティメモリセルアレイＰ−ＭＣＡ（１４）（１５）を分割して配置し，さらに両端の領域３００の不使用領域をメモリから削除することで，メモリのサイズを小さくすることができる。両端の領域３００を削除されたメモリは，チップサイズまたはマクロサイズ（ＡＳＩＣ内にメモリが埋め込まれる場合）が小さくなり，コストダウンに寄与することができる。
【０１２９】
以上説明したとおり，上記の実施の形態によれば，ＥＣＣのコード長を適宜変更することができるので，製造ラインの欠陥密度に対応して，最適なコード長を選択してコストを下げることができる。
【０１３０】
コード長に対応する切替は，図８の切替制御信号ＣＮＴを生成する切替制御回路内にヒューズＲＯＭを設け，そのヒューズＲＯＭにコード長に対応する情報を書き込むことで行うことが出来る。または，マスクオプションにより切り替えることもできる。ＭＯＳトランジスタのゲート酸化膜を破壊して短絡するヒューズ形式の場合は，パッケージに組み込んだ後に切り替えることもできる。
【０１３１】
また，ＥＣＣのコード長に対応して切り替え可能にしているので，試験工程において，３２−６タイプに切り替えて良否判定試験を行い，試験をパスした後に８−４タイプに切り替えて出荷することもできる。具体的には，図８の切替制御回路に試験工程でどのタイプに切り替えるかを示す信号を与えて，所望のタイプに切り替えて動作試験を行う。このようにすれば，救済確率の低い状態で動作試験を実行できるので，出荷されるメモリの信頼性を格段に向上させることができる。
【０１３２】
上記の実施の形態では，あるハミングコードにしたがって，２のＩ乗のデータに対してＩ＋１ビットのパリティビットを生成して１ビットの誤りを訂正可能にしている。本発明はそれ以外のハミングコードでも同様に適用可能である。たとえば，２ビットまたはそれ以上の複数ビットの誤りを訂正可能にするハミングコードにおいても，ＥＣＣのコード長を異ならせて救済確率を変更させることができる。本発明は，そのようなハミングコードに基づく場合でも適用可能である。
【０１３３】
さらに，上記の実施の形態では，入力側，出力側のパリティ生成回路とシンドローム生成回路とを共通のＸＯＲ回路で構成したが，それらを個別のＸＯＲ回路で構成してもよい。その場合，各ＸＯＲ回路の入力側スイッチや出力側スイッチが，ＥＣＣのコード長に応じて切り替えられる。
【０１３４】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１３５】
（付記１）
誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに対して入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに対して入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力するパリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記パリティ生成回路及びシンドローム生成回路が，２のＩ乗ビットのデータとＩ＋１ビットのパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとＩ−Ｊ＋１ビットのパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする半導体メモリ装置。
【０１３６】
（付記２）
付記１において，
前記パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データからＩ＋１ビットのパリティビットを生成し，読み出し時において，２のＩ乗ビットの読み出しデータとＩ＋１ビットの読み出しパリティビットとから前記シンドロームビットを生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データからＩ−Ｊ＋１ビットのパリティビットを２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータとＩ−Ｊ＋１ビットの読み出しパリティビットとから前記シンドロームビットを２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチと，前記生成されたパリティビットまたはシンドロームビットの出力を切り替える出力スイッチとを有することを特徴とする半導体メモリ装置。
【０１３７】
（付記３）
付記１において，
前記パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ＋１ビットのパリティビットとして生成し，読み出し時において，２のＩ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ−Ｊ＋１ビットのパリティビットとして２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチと，前記生成されたパリティビットまたはシンドロームビットの出力を切り替える出力スイッチとを有することを特徴とする半導体メモリ装置。
【０１３８】
（付記４）
付記２または３において，
前記ＸＯＲ回路群の入力スイッチと出力スイッチとは，前記書き込み時と読み出し時とに対応する切り替え制御信号に応答して，切り替えられることを特徴とする半導体メモリ装置。
【０１３９】
（付記５）
付記２または３において，
前記ＸＯＲ回路群は，Ｉ＋１ビットのパリティビットまたはシンドロームビットの各ビットをそれぞれ生成するＩ＋１個のＸＯＲ回路を有し，
前記第１のＥＣＣに切り替えられた場合は，当該Ｉ＋１個のＸＯＲ回路からＩ＋１ビットのパリティビットまたはシンドロームビットが出力され，
前記第２のＥＣＣに切り替えられた場合は，前記Ｉ−Ｊ＋１個のＸＯＲ回路からＩ−Ｊ＋１ビットのパリティビットまたはシンドロームビットが出力されることを特徴とする半導体メモリ装置。
【０１４０】
（付記６）
付記５において，
前記Ｉ＋１個のＸＯＲ回路のうち，Ｉ−Ｊ＋１個のＸＯＲ回路は，２のＩ−Ｊ乗ビットのデータうち共通の組み合わせのデータを２のＪ乗グループ入力することを特徴とする半導体メモリ。
【０１４１】
（付記７）
付記１において，
さらに，前記パリティ生成回路及びシンドローム生成回路の切り替えを制御する切り替え制御信号を生成する切り替え制御部を有し，
試験時において，前記切り替え制御信号を前記第１または第２のＥＣＣに対応する信号に切り替え可能であることを特徴とする半導体メモリ装置。
【０１４２】
（付記８）
付記１において，
前記ワードの選択に応答して前記パリティメモリセルアレイに入出力されるパリティビットが，
前記第１のＥＣＣに切り替えられた場合はＩ＋１ビットのパリティビットであり，前記第２のＥＣＣに切り替えられた場合はＩ−Ｊ＋１ビットのパリティビットを２のＪ乗グループ有するパリティビットである
ことを特徴とする半導体メモリ装置。
【０１４３】
（付記９）
付記７において，
前記データメモリセルアレイとパリティメモリセルアレイとは同じ数のワード線で構成され，前記ワード線の選択に応答して，選択されたワード線に対応するデータとパリティビットとが書込または読み出しされることを特徴とする半導体メモリ装置。
【０１４４】
（付記１０）
付記８において，
前記パリティメモリセルアレイが，前記第１のＥＣＣに切り替えられた場合は第１の容量を有し，前記第２のＥＣＣに切り替えられた場合は前記第１の容量より大きい第２の容量を有することを特徴とする半導体メモリ装置。
【０１４５】
（付記１１）
付記１０において，
前記パリティメモリセルアレイが，半導体メモリ装置の外周部に配置され，
前記第１のＥＣＣに切り替えられた場合は，前記パリティメモリセルアレイが第１の面積を専有し，前記第２のＥＣＣに切り替えられた場合は，前記パリティメモリセルアレイが前記第１の面積よりも広い第２の面積を専有することを特徴とする半導体メモリ装置。
【０１４６】
（付記１２）
付記１において，
前記パリティ生成回路及びシンドローム生成回路が，さらに，２のＩ−Ｋ乗ビット（Ｉ＞Ｋ＞Ｊ，Ｋは１以上の整数）のデータとＩ−Ｋ＋１ビットのパリティビットとを２のＫ乗グループ含む第３のＥＣＣにも切り替えられることを特徴とする半導体メモリ装置。
【０１４７】
（付記１３）
誤り訂正機能を有する半導体メモリ装置において，
複数のメモリセルを有し，ワードの選択に応答して２のＩ乗ビット（Ｉは２以上の整数）のデータをデータバスに入出力するデータメモリセルアレイと，
複数のメモリセルを有し，前記ワードの選択に応答して前記２のＩ乗ビットのデータに対応するビット数のパリティビットをパリティバスに入出力するパリティメモリセルアレイと，
データ入出力端子と，
前記データ入出力端子から入力される２のＩ乗ビットの書込データから，前記パリティビットを生成して，前記パリティバスに出力する入力側パリティ生成回路と，
前記データメモリセルアレイから前記データバスに読み出される２のＩ乗ビットの読み出しデータから，前記パリティビットを生成する出力側パリティ生成回路と，
前記出力側パリティ生成回路が生成したパリティビットと前記パリティメモリセルアレイから前記パリティバスに読み出されるパリティビットとから，前記読み出されたデータの誤りビット位置を示すシンドロームビットを生成するシンドローム生成回路と，
前記シンドロームビットに基づいて前記読み出しデータの誤りを訂正する誤り訂正回路とを有し，
前記入力側パリティ生成回路と出力側パリティビット生成回路とシンドローム生成回路とが，２のＩ乗ビットのデータとそれに対応するビット数のパリティビットとからなる第１のＥＣＣと，２のＩ−Ｊ乗ビット（Ｉ＞Ｊ，Ｊは１以上の整数）のデータとそれに対応するビット数のパリティビットとを２のＪ乗グループ含む第２のＥＣＣとのいずれかに切り替え可能に構成されていることを特徴とする半導体メモリ装置。
【０１４８】
（付記１４）
付記１３において，
前記入力側及び出力側パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データからそれに対応するビット数のパリティビットを生成し，読み出し時において，２のＩ乗ビットの読み出しデータとそれに対応する読み出しパリティビットとから前記シンドロームビットを生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データからそれに対応するビット数のパリティビットを２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータとそれに対応する読み出しパリティビットとから前記シンドロームビットを２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチを有することを特徴とする半導体メモリ装置。
【０１４９】
（付記１５）
付記１３において，
前記入力側及び出力側パリティ生成回路とシンドローム生成回路とが，共通のＸＯＲ回路群で構成され，
前記ＸＯＲ回路群は，
前記第１のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ＋１ビットのパリティビットとして生成し，読み出し時において，２のＩ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして生成し，
前記第２のＥＣＣに切り替えられた場合は，書き込み時において，２のＩ−Ｊ乗ビットの書込データのうち選択されたビットのＸＯＲを前記Ｉ−Ｊ＋１ビットのパリティビットとして２のＪ乗グループ生成し，読み出し時において，２のＩ−Ｊ乗ビットの読み出しデータのうち選択されたビットと前記読み出しパリティビットとのＸＯＲを前記シンドロームビットとして２のＪ乗グループ生成し，
前記ＸＯＲ回路群は，切り替え制御信号に応答して，前記読み出しパリティビットの入力を切り替える入力スイッチと，前記生成されたパリティビットまたはシンドロームビットの出力を切り替える出力スイッチとを有することを特徴とする半導体メモリ装置。
【０１５０】
（付記１６）
付記１４または１５において，
前記ＸＯＲ回路群の入力スイッチと出力スイッチとは，前記書き込み時と読み出し時とに対応する切り替え制御信号に応答して，切り替えられることを特徴とする半導体メモリ装置。
【０１５１】
（付記１７）
付記１４または１５において，
前記ＸＯＲ回路群は，Ｉ＋１ビットのパリティビットまたはシンドロームビットの各ビットをそれぞれ生成するＩ＋１個のＸＯＲ回路を有し，
前記第１のＥＣＣに切り替えられた場合は，当該Ｉ＋１個のＸＯＲ回路からＩ＋１ビットのパリティビットまたはシンドロームビットが出力され，
前記第２のＥＣＣに切り替えられた場合は，前記Ｉ−Ｊ＋１個のＸＯＲ回路からＩ−Ｊ＋１ビットのパリティビットまたはシンドロームビットが出力されることを特徴とする半導体メモリ装置。
【図面の簡単な説明】
【０１５２】
【図１】誤り訂正可能な半導体メモリ装置の構成図である。
【図２】ＥＣＣの３つのコード長でのデータとパリティの関係を示す図である。
【図３】ＥＣＣのコード長に対応した平均欠陥密度と歩留まり及びコストデメリットとの関係を示すグラフ図である。
【図４】本実施の形態における半導体メモリ装置の構成図である。
【図５】本実施の形態におけるＥＣＣのコード長に応じたメモリセルアレイの構成を示す図である。
【図６】本実施の形態におけるＥＣＣ演算回路の概略構成図である。
【図７】本実施の形態におけるパリティチェックマトリクスの具体例を示す図である。
【図８】本実施の形態におけるＥＣＣ論理回路の構成図である。
【図９】本実施の形態におけるＥＣＣ論理回路の構成図である。
【図１０】３２−６タイプの場合のパリティ生成回路である。
【図１１】３２−６タイプの場合のシンドローム生成回路である。
【図１２】１６−５タイプの場合のパリティ生成回路である。
【図１３】１６−５タイプの場合のシンドローム生成回路である。
【図１４】８−４タイプの場合のパリティ生成回路である。
【図１５】８−４タイプの場合のシンドローム生成回路である。
【図１６】３つのＥＣＣのコード長に切り替え可能なパリティ／シンドローム生成回路P0/S0〜P3/S3を示す図である。
【図１７】１６−５タイプの場合のパリティ生成回路である。
【図１８】１６−５タイプの場合のシンドローム生成回路である。
【図１９】８−４タイプの場合のパリティ生成回路である。
【図２０】８−４タイプの場合のシンドローム生成回路である。
【図２１】２つのＥＣＣのコード長に切り替え可能なパリティ／シンドローム生成回路P4/S4を示す図である。
【図２２】３２−６タイプの場合のパリティ生成回路である。
【図２３】３２−６タイプの場合のシンドローム生成回路である。
【図２４】３２−６タイプのパリティ／シンドローム回路P5/S5の回路図である。
【図２５】本実施の形態におけるメモリセルアレイの構成例を示す図である。
【図２６】本実施の形態におけるメモリセルアレイのレイアウト例を示す図である。
【図２７】本実施の形態におけるメモリセルアレイの変更例を示す図である。
【符号の説明】
【０１５３】
Ｄ−ＭＣＡ：データメモリセルアレイ    Ｐ−ＭＣＡ：パリティメモリセルアレイ
２５：データバス，パリティバス        ２６：ＥＣＣ演算回路
２９：データ入力端子                  ３１：データ出力端子
【図１】
2008041171.tif 000003
【図２】
2008041171.tif 000004
【図３】
2008041171.tif 000005
【図４】
2008041171.tif 000006
【図５】
2008041171.tif 000007
【図６】
2008041171.tif 000008
【図７】
2008041171.tif 000009
【図８】
2008041171.tif 000010
【図９】
2008041171.tif 000011
【図１０】
2008041171.tif 000012
【図１１】
2008041171.tif 000013
【図１２】
2008041171.tif 000014
【図１３】
2008041171.tif 000015
【図１４】
2008041171.tif 000016
【図１５】
2008041171.tif 000017
【図１６】
2008041171.tif 000018
【図１７】
2008041171.tif 000019
【図１８】
2008041171.tif 000020
【図１９】
2008041171.tif 000021
【図２０】
2008041171.tif 000022
【図２１】
2008041171.tif 000023
【図２２】
2008041171.tif 000024
【図２３】
2008041171.tif 000025
【図２４】
2008041171.tif 000026
【図２５】
2008041171.tif 000027
【図２６】
2008041171.tif 000028
【図２７】
2008041171.tif 000029