(57)【特許請求の範囲】
【請求項１】
主データを格納するメインメモリと、
上記主データに応じて生成された誤り訂正用副データを格納するサブメモリと、
上記メインメモリに格納された主データを読み出し増幅するためのセンスアンプと、
上記センスアンプから供給される主データとセンスアンプを介さずに上記サブメモリから読み出された副データにと基づいて上記主データに生じる誤りを訂正するための訂正データを生成するデコーダ回路と、
上記訂正データに応じて上記メインメモリから読み出された主データに含まれる誤りを訂正して出力するデータ訂正回路と、
を有し、
上記サブメモリが上記メインメモリと上記デコーダ回路及び上記データ訂正回路との間に配置されており、
上記メインメモリから主データを読み出して出力する際に、当該主データに含まれる誤りが上記データ訂正回路で訂正される
誤り訂正回路を備えた半導体記憶装置。
【請求項２】
上記メインメモリのビット線と上記サブメモリのビット線とが異なる配線層により形成されている
請求項１に記載の誤り訂正回路を備えた半導体記憶装置。
【請求項３】
上記データ訂正回路は上記主データのビット数に応じた複数のビット訂正回路を有し、
上記ビット訂正回路が、
第１の電源電位と出力ノードとの間に接続され、制御端子が第１のノードに接続された第１のトランジスタと、
第２の電源電位と出力ノードとの間に接続され、制御端子が第２のノードに接続された第２のトランジスタと、
イネーブル信号に応じて上記第１のノードと上記第２のノードとを電気的に接続するための第１のトランスファゲートと、
第１の電源電位と上記第１のノードとの間に接続され、制御端子が第３のノードに接続された第３のトランジスタと、
第２の電源電位と上記第２のノードとの間に接続され、制御端子が上記第３のノードに接続され、上記第３のトランジスタと相補的に動作する第４のトランジスタと、
入力端子が入力ノードに接続された反転回路と、
上記入力ノードと上記第３のノードとの間に接続され、上記訂正データのビット情報に応じて上記入力ノードと上記第３のノードとを電気的に接続するための第２のトランスファゲートと、
上記反転回路の出力端子と上記第３のノードとの間に接続され、上記訂正データのビット情報に応じて上記反転回路の出力端子と上記第３のノードとを電気的に接続するための上記第２のトランスファゲートと相補的に動作する第３のトランスファゲートと、
を有する請求項１又は２に記載の誤り訂正回路を備えた半導体記憶装置。
【請求項４】
上記訂正データが上記主データに応じて生成された垂直―水平パリティコード又はハミングコードである
請求項１、２又は３に記載の誤り訂正回路を備えた半導体記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶データの誤りを訂正する誤り訂正回路を備えた半導体記憶装置に関するものである。
【０００２】
【従来の技術】
近年、ＳＲＡＭの急激な微細化と電源電圧のスケーリングにより、半導体記憶装置、例えば、ＳＲＡＭにおけるデータ誤り（Soft Error Rate 、以下便宜上ＳＥＲと記述する）の増加問題が顕在化している。例えば、現在一般的に使用されている６トランジスタＳＲＡＭの場合、従来のＤＲＡＭのようにキャパシタとして５０ｆＦ以上の容量を確保するための特殊なキャパシタプロセスを持たない。特にロジックプロセスで設計されるＳＲＡＭの場合は、汎用のＤＲＡＭに比べてＳＥＲが深刻になっている。今後更なるスケーリングが継続していくと、ＳＥＲの問題がさらに顕著となり、ＳＲＡＭのスケーリングに対して大きな障害になると予測できる。
【０００３】
ＤＳＰのオンチップのメモリ容量の増加はこの危機を一層増している。例えば、データメモリとして使用する場合、１ビットのデータエラーによる誤動作はそれほど問題はないが、プログラムメモリとして使用する場合、１ビットのデータエラーでもＤＳＰが制御不能に陥る危険性がある。
【０００４】
従来、汎用のＤＲＡＭにおいてＳＥＲ対策として誤り検査及び訂正（Error Check and Correction、以下ＥＣＣと表記する）の技術が用いられていた。ところが、汎用ＤＲＡＭにおいてオンチップでＥＣＣを行うよりシステムレベルで行った方がコスト、信頼性、または性能の面では有利である。現在、半導体製造技術の進歩に伴い、更なる微細化及び低電源電圧化が進んでおり、オンチップ上でシステムを構成しているＤＳＰ、ＡＲＭなどを混載したｃＤＳＰにおいては、チップレベルでこの問題に対処する必要性が益々重要になってきている。
【０００５】
ＥＣＣの代表的なアルゴリズムとして、ハミングコード方式及び垂直水平パリティ方式などが挙げられる。従来のＤＲＡＭにおいては、書き込み時に使用される入力回路の後段にＥＣＣ回路を設けてＥＣＣコードを生成し、データコードとともに所定のメモリ領域に記憶させておき、読み出しのとき、データコードとともにＥＣＣコードを読み出し、センスアンプの出力側に設けられているＥＣＣ回路によって、データコードとＥＣＣコードに基づきデータコードの誤りを検出して訂正する方式が一般的である。
【０００６】
【発明が解決しようとする課題】
ところで、上述した従来のＥＣＣ回路による誤り訂正方式では、ＥＣＣ回路が読み出し回路の後段にシリアルに接続されているので、データの読み出し速度が低下するほか、ＥＣＣ回路を設けることによって回路規模が増加し、消費電力が増加するという不利益がある。
【０００７】
また、ＥＣＣ回路を使用せず、ＳＥＲを低減させる幾つかの方法も提案されている。例えば、ＳＲＡＭの記憶ノードの蓄積容量を増加させることによって記憶データの破壊を防止する方法、ＳＲＡＭの蓄積ノードの電圧を高くする方法などがある。しかし、蓄積ノードの容量を増加させるには、ＤＲＡＭのような特殊なプロセスを導入する必要があり、コスト増をもたらす一方、回路規模の増加が避けられない。また、蓄積ノードの電圧を高くする方法は、ＳＲＡＭのスケーリングの停止になり、ＳＲＡＭの性能の低下及び消費電力の増加を招き、コストの増加となる。
【０００８】
他に、シリコン基板の代わりにＳＲＡＭを絶縁体の基板上に作成する、いわゆるＳＯＩ（Semiconductor On Insulator）を導入する方法もあるが、この方法はＳＥＲの改善にそれほど有効ではない。また、強誘電体メモリ（ＦｅＲＡＭ）を導入することでデータの信頼性を改善する方法も提案されていたが、量産技術が確立していないため、メモリの製造が困難である。
【０００９】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、回路規模及び消費電力の増加を抑制しながら、記憶データの誤りを訂正でき、さらに動作速度の低下を回避可能な誤り訂正回路を備えた半導体記憶装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明の誤り訂正回路を備えた半導体記憶装置は、主データを格納するメインメモリと、上記主データに応じて生成された誤り訂正用副データを格納するサブメモリと、上記メインメモリに格納された主データを読み出し増幅するためのセンスアンプと、上記センスアンプから供給される主データとセンスアンプを介さずに上記サブメモリから読み出された副データにと基づいて上記主データに生じる誤りを訂正するための訂正データを生成するデコーダ回路と、上記訂正データに応じて上記メインメモリから読み出された主データに含まれる誤りを訂正して出力するデータ訂正回路と、を有し、上記サブメモリが上記メインメモリと上記デコーダ回路及び上記データ訂正回路との間に配置されており、上記メインメモリから主データを読み出して出力する際に、当該主データに含まれる誤りが上記データ訂正回路で訂正される。
【００１２】
また、本発明では、好適には、上記メインメモリのビット線と上記サブメモリのビット線とが異なる配線層により形成されている。
【００１３】
また、本発明では、好適には、上記データ訂正回路は上記主データのビット数に応じた複数のビット訂正回路を有し、上記ビット訂正回路が、第１の電源電位と出力ノードとの間に接続され、制御端子が第１のノードに接続された第１のトランジスタと、第２の電源電位と出力ノードとの間に接続され、制御端子が第２のノードに接続された第２のトランジスタと、イネーブル信号に応じて上記第１のノードと上記第２のノードとを電気的に接続するための第１のトランスファゲートと、第１の電源電位と上記第１のノードとの間に接続され、制御端子が第３のノードに接続された第３のトランジスタと、第２の電源電位と上記第２のノードとの間に接続され、制御端子が上記第３のノードに接続され、上記第３のトランジスタと相補的に動作する第４のトランジスタと、入力端子が入力ノードに接続された反転回路と、上記入力ノードと上記第３のノードとの間に接続され、上記訂正データのビット情報に応じて上記入力ノードと上記第３のノードとを電気的に接続するための第２のトランスファゲートと、上記反転回路の出力端子と上記第３のノードとの間に接続され、上記訂正データのビット情報に応じて上記反転回路の出力端子と上記第３のノードとを電気的に接続するための上記第２のトランスファゲートと相補的に動作する第３のトランスファゲートとを有する。
【００１４】
また、本発明では、好適には、上記訂正データが上記主データに応じて生成された垂直−水平パリティコードまたはハミングコードである。
【００１５】
【発明の実施の形態】
図１は本発明に係る誤り訂正回路を備えた半導体記憶装置の一実施形態を示す回路図である。
図示のように、本実施形態の半導体記憶装置は、メモリ部１００と誤り訂正部２００によって構成されている。
メモリ部１００は、メインメモリアレイ１１０、サブメモリアレイ１２０、センスアンプ（ＳＡ）１３０、ドライバー１４０，１５０及びトランスファゲート（ＴＧ）１６０−１，１６０−２，１６０−３，１７０によって構成されている。また、誤り訂正部２００は、フリップフロップ（ＦＦ）２１０、ラッチ回路２２０、セレクタ（ＳＥＬ）２３０，２４０、ＥＣＣデコーダ２５０、ＥＣＣエンコーダ２６０、セレクタ２７０、バッファ２８０−１，２８０−２、２８０−３及び誤り訂正回路（ＥＲＣ）３００によって構成されている。
【００１６】
まず、メモリ部１００の各部分の構成について説明する。
メインメモリアレイ１１０は、データを記憶し、サブメモリアレイ１２０は誤り訂正データを記憶する。外部から入力される記憶データは、ドライバー１４０を介して入力され、さらに、トランスファゲート１６０−１，１６０−２及び１６０−３を介してメインメモリ１１０に格納される。なお、メインメモリアレイ１１０に格納されているデータは、例えば、１６ビット単位である。即ち、ドライバー１４０と入力用セレクタ２７０との間、またはセンスアンプ１３０とフリップフロップ２１０、ラッチ回路２２０及びＥＣＣデコーダ２５０との間のデータバスは、１６ビットである。なお、ドライバー１４０とトランスファゲート１６０−１，１６０−２，１０６−３との間に、または各トランスファゲートとセンスアンプ１３０との間には、ビット線とビット補線からなるビット線ペアが接続されている。これらのビット線ペアは、それぞれ例えば１６組である。
【００１７】
ＥＣＣエンコーダ２６０によって生成された誤り訂正コードＥＣは、ドライバー１５０を介して入力され、さらにトランスファゲート１７０を介してサブメモリアレイ１２０に格納される。サブメモリアレイ１２０に格納されている誤り訂正データは、図示のようにｎe ビットを単位とする。即ち、ドライバー１５０とトランスファゲート１７０との間、または、トランスファゲート１７０とＥＣＣデコーダ２５０、ＥＣＣエンコーダ２６０とドライバー１５０との間のデータバスは、ともにｎe ビットである。なお、ｎe は誤り検出及び誤り訂正の方法によって異なる。例えば、垂直−水平パリティコードを用いる場合、ｎe は８ビットであり、ハミングコードを用いる場合、ｎe は５ビットとなる。
【００１８】
センスアンプ１３０は、メインメモリアレイ１１０、ビット線及びビット補線からなるビット線ペアの電位差を増幅し、当該増幅の結果に応じて読み出しデータを確定し、フリップフロップ２１０、ラッチ回路２２０及びＥＣＣデコーダ２５０に出力する。なお、センスアンプ１３０は、通常ＳＲＡＭに用いられているセンスアンプであり、周知の技術として知られているため、その詳細について省略する。
【００１９】
ドライバー１４０は、入力されるデータに応じてビット線及びビット補線からなるビット線ペアの電位差を確定し、入力データをトランスファゲートを介してメインメモリアレイ１１０に格納する。
【００２０】
トランスファゲート１６０−１，１６０−２，１０６−３は、データ書き込み及び読み出しのとき、例えば書き込みイネーブル信号または読み出しイネーブル信号に応じてオン／オフを切り替える。ここで、複数のトランスファゲートを設けているのは、例えば、メインメモリアレイ１１０が複数のブロックから構成されている場合など、トランスファゲートで使用するメモリブロックを切り替えるためである。
【００２１】
ドライバー１５０は、ＥＣＣエンコーダ２６０によって生成された誤り訂正コードＥＣに応じて、ビット線及びビット補線からなるビット線ペアを駆動し、トランスファゲート１７０を介して誤り訂正コードＥＣをサブメモリアレイ１２０に格納する。
【００２２】
トランスファゲート１７０は、書き込みまたは読み出しのとき、書き込みイネーブル信号または読み出しイネーブル信号に応じてオン状態に保持される。書き込みのとき、ドライバー１５０から入力される誤り訂正コードＥＣをサブメモリアレイ１２０に入力し、読み出しのときサブメモリアレイ１２０から読み出した誤り訂正データをＥＣＣデコーダ２５０に出力する。
【００２３】
上述のように、読み出しのとき、誤り訂正コードＥＣはセンスアンプを通さずに直接ＥＣＣデコーダ２５０に出力される。これによってセンスアンプによって生じた信号遅延を解消でき、読み出しの高速化をはかることができる。本実施形態の半導体記憶装置において、メインメモリアレイ１１０、サブメモリアレイ１２０及びセンスアンプなどのメモリ周辺回路のレイアウト配置を工夫することによって、誤り訂正コードＥＣをセンスアンプ経由せずにＥＣＣデコーダ２５０に入力することができる。このため、誤り訂正データの読み出し時の遅延を抑制でき、誤り訂正によって生じた遅延を低減でき、メモリアクセスの高速化を実現する。
なお、本実施形態の半導体記憶装置におけるレイアウトについて後にさらに詳しく説明する。
【００２４】
次に、誤り訂正部２００の各部分の構成について説明する。
フリップフロップ２１０は、センスアンプ１３０の出力データを保持して、セレクタ２３０に出力する。フリップフロップ２１０は、クロック信号ＣＬＫによって動作タイミングが制御されるマスタラッチとスレーブラッチによって構成されている。このため、フリップフロップ２１０は、クロック信号ＣＬＫが入力されると、マスタラッチの保持データをスレーブラッチにシフトし、また新しい入力データをマスタラッチによって保持する。スレーブラッチの保持データがフリップフロップの出力データとして後段のセレクタ２３０に出力される。
【００２５】
ラッチ回路２２０は、入力データを保持してセレクタ２３０及び２４０に出力する。ラッチ回路２２０は、クロック信号ＣＬＫの入力タイミングで動作し、入力データを保持する。
上述のように、ラッチ回路２２０は、クロック信号ＣＬＫが入力されたとき、例えば、クロック信号ＣＬＫの立ち上がりエッジまたは立ち下がりエッジのタイミングで入力データを保持して出力する。これに対して、フリップフロップ２１０はクロック信号ＣＬＫの１周期前の入力データを保持して出力する。即ち、フリップフロップ２１０の出力データは、ラッチ回路２２０の出力データよりクロック信号ＣＬＫの１周期分遅れる。
【００２６】
セレクタ２３０は、フリップフロップ２１０またはラッチ回路２２０の何れかの出力を選択してバッファ２８０−１に出力する。セレクタ２３０によってラッチ回路２２０の出力が選択されるとき、クロック信号ＣＬＫに同期してセンスアンプからの読み出しデータが選択され、バッファ２８０−１に出力される。一方、セレクタ２３０によってフリップフロップ２１０の出力が選択されるとき、クロック信号ＣＬＫの１周期前のタイミングで保持したセンスアンプの読み出しデータが選択され、バッファ２８０−１に出力される。
【００２７】
バッファ２８０−１によってセレクタ２３０の選択データがデータバスＣＢＵＳに出力される。即ち、セレクタ２３０の制御によって、データバスＣＢＵＳに出力されるデータは、クロック信号ＣＬＫの１周期分の遅延を持たせることができる。これにより、例えば、データバスＣＢＵＳの出力タイミングの要求に対応することができる。
【００２８】
セレクタ２４０は、ラッチ回路２３０の出力データをバッファ２８０−２，２８０−３及び誤り訂正回路３００に出力する。
バッファ２８０−２は、セレクタ２４０から入力されたデータをデータバスＤＢＵＳに出力し、バッファ２８０−３は、セレクタ２４０から入力されたデータをデータバスＭＢＵＳに出力する。
誤り訂正回路３００は、ＥＣＣデコーダ２５０から出力される誤り訂正データＥＤに応じて、セレクタ２４０から出力されるセンスアンプの読み出しデータに対して誤り訂正を行い、訂正後のデータをプログラムバスＰＢＵＳに出力する。
【００２９】
ＥＣＣデコーダ２５０は、メインメモリアレイ１１０からの読み出しデータＤＡＴ及びサブメモリアレイ１２０から読み出した誤り訂正コードＥＣに応じて、誤り訂正データＥＤを生成し、誤り訂正回路３００に供給する。
ＥＣＣエンコーダ２６０は、セレクタ２７０から入力されるデータに応じて、誤り訂正コードＥＣを生成し、ドライバー１５０に供給する。
誤り訂正回路３００は、セレクタ２４０から入力される読み出しデータＤＡＴ及びＥＣＣデコーダ２５０から入力される誤り訂正データＥＤに応じて、読み出しデータＤＡＴに生じた誤りビットを訂正し、訂正後のデータをプログラムバスＰＢＵＳに出力する。
なお、ＥＣＣデコーダ２５０、ＥＣＣエンコーダ２６０及び誤り訂正回路３００は、誤り訂正アルゴリズムに応じてそれぞれの構成が異なる。それぞれの具体例について後程さらに詳述する。
【００３０】
以下、図２を参照しつつ、本実施形態の半導体記憶装置のレイアウトについて説明する。
図２は、本実施形態におけるメモリアレイ、その周辺回路及び誤り訂正回路の各部分の配置を示すレイアウト図である。図示のように、メインメモリアレイ（Ｍａｉｎ  Ａｒｒａｙ）１１０、サブメモリアレイ（Ｓｕｂ  Ａｒｒａｙ）１２０、書き込み読み出し回路（Ｒ／Ｗ）、センスアンプ（ＳＡ）及びカラムデコーダ（ＣＤＥＣ）からなる回路（以下、便宜上これらをまとめて周辺回路１８０と表記する）、さらに誤り訂正部２００が半導体基板上順次配置されている。
【００３１】
なお、図２に示すように、メインメモリアレイ１１０の各メモリセルに接続されているビット線ＢＬＭとサブメモリアレイ１２０の各メモリセルに接続されているビット線ＢＬＳとはそれぞれ異なる配線層に形成されている。例えば、メインメモリアレイ１１０のビット線ＢＬＭが金属配線層ＭＴｎに形成され、サブメモリアレイ１２０のビット線ＢＬＳが金属配線層ＭＴより下層の配線層ＭＴｍ（ｍ＜ｎ）に形成されている。
また、図２に示すように、メインメモリアレイ１１０より、サブメモリアレイ１２０が周辺回路１８０に近いところに配置されている。
【００３２】
上述した配線構造及び配置によって、サブメモリアレイ１２０の各メモリセルに接続されているビット線ＢＬＳがメインメモリアレイ１１０の各メモリセルに接続されているビット線ＢＬＭより短く形成される。即ち、サブメモリセルから読み出したデータが負荷の小さいビット線ＢＬＳを介して誤り訂正部２００に供給される。一方、メインメモリアレイ１１０のメモリセルから読み出したデータが長いビット線ＢＬＭを介して周辺回路１８０のセンスアンプに供給される。このため、サブメモリアレイ１２０からの読み出しデータがセンスアンプを経由せず、直接誤り訂正部２００に転送される。これに対して、メインメモリアレイ１１０からの読み出しデータはセンスアンプによって増幅された後、誤り訂正部２００に転送される。
これによって、サブメモリアレイ１２０からの読み出しデータがより早く誤り訂正部２００に到達するので、ＥＣＣデコーダ２５０によって生じた遅延時間の一部分が吸収され、誤り訂正処理による遅延時間の増加を抑制でき、メモリアクセスの高速化を実現できる。
【００３３】
次に、図１に示す誤り訂正部２００に設けられている誤り訂正回路３００の構成について説明する。
図３は、誤り訂正回路３００の一構成単位であるビット訂正回路を示す回路図である。図３に示すビット訂正回路３００ａは、訂正する読み出しデータのビット数分だけ設けられる。例えば、メインメモリアレイ１１０から一回に１６ビットのデータが読み出される場合、図３に示すビット訂正回路３００ａが１６個設けられる。これらの誤り訂正回路によって、ＥＣＣデコーダ２５０から出力される誤り訂正データＥＤに応じて読み出しデータの各ビットがそれぞれ訂正され、訂正後のデータがプログラムバスＰＢＵＳに出力される。
【００３４】
図３に示すように、ビット訂正回路３００ａは、トランスファゲートＴＧ１，ＴＧ２，ＴＧ３、インバータＩＮＶ１，ＩＮＶ２及びｐＭＯＳトランジスタＰＴ１，ＰＴ２，ＰＴ３とｎＭＯＳトランジスタＮＴ１，ＮＴ２，ＮＴ３によって構成されている。
【００３５】
トランスファゲートＴＧ１の入力端子が読み出しデータＤinの入力ノードＮＤ１に接続され、出力端子がノードＮＤ２に接続されている。一方、トランスファゲートＴＧ２の入力端子がインバータＩＮＶ１の出力端子に接続され、出力端子がノードＮＤ２に接続されている。インバータＩＮＶ１の入力端子が読み出しデータＤinの入力ノードＮＤ１に接続されている。
トランスファゲートＴＧ１を構成するｎＭＯＳトランジスタのゲートにクロス信号ＣＯＲの反転信号ＸＣＯＲが入力され、ｐＭＯＳトランジスタのゲートにクロス信号ＣＯＲが入力される。トランスファゲートＴＧ２を構成するｐＭＯＳトランジスタのゲートにクロス信号ＣＯＲの反転信号ＸＣＯＲが入力され、ｎＭＯＳトランジスタのゲートにクロス信号ＣＯＲが入力される。
【００３６】
クロス信号ＣＯＲがＥＣＣデコーダ２５０によって出力される誤り訂正データＥＤのうち一ビットに応じて生成された信号である。読み出しデータＤinに誤りがなければ、当該データＤinに対応するクロス信号ＣＯＲがローレベルに保持され、逆に読み出しデータＤinに誤りが検出された場合、クロス信号ＣＯＲがハイレベルに保持される。このため、データＤinに誤りがなければ、トランスファゲートＴＧ１が導通し、トランスファゲートＴＧ２が遮断するので、データＤinがトランスファゲートＴＧ１を通して、ノードＮＤ２に入力される。逆にデータＤinに誤りがあれば、トランスファゲートＴＧ１が遮断し、トランスファゲートＴＧ２が導通するので、インバータＩＮＶ１の出力、即ち、読み出しデータＤinの論理反転データがトランスファゲートＴＧ２を通して、ノードＮＤ２に入力される。
【００３７】
トランジスタＰＴ２とＰＴ３が電源電圧ＶCCとノードＮＤ４との間に並列に接続されている。トランスファゲートＴＧ３がノードＮＤ４とノードＮＤ５との間に接続されている。さらに、トランジスタＮＴ２とＮＴ３がノードＮＤ５と接地電位ＧＮＤとの間に並列に接続されている。
トランジスタＰＴ２のゲートがノードＮＤ２に接続され、トランジスタＰＴ３のゲートがイネーブル信号ＯＥの入力端子に接続されている。
トランジスタＮＴ２のゲートがノードＮＤ２に接続され、トランジスタＮＴ３のゲートがインバータＩＮＶ２の出力端子に接続されている。
トランスファゲートＴＧ３を構成するｎＭＯＳトランジスタのゲートがイネーブル信号ＯＥの入力端子に接続され、ｐＭＯＳトランジスタのゲートがインバータＩＮＶ２の出力端子に接続されている。即ち、トランスファゲートＴＧ３を構成するｐＭＯＳトランジスタのゲートにイネーブル信号ＯＥの反転信号が印加される。
【００３８】
イネーブル信号ＯＥがローレベルのとき、トランスファゲートＴＧ３が遮断する。一方、イネーブル信号ＯＥがハイレベルのとき、トランスファゲートＴＧ３が導通する。また、このとき、ｐＭＯＳトランジスタＰＴ３がオフし、ｎＭＯＳトランジスタＮＴ３もオフするので、トランジスタＰＴ２とＮＴ２によってインバータが構成される。即ち、ノードＮＤ４とＮＤ５は、ノードＮＤ２と逆の論理レベルに保持される。
【００３９】
トランジスタＰＴ１とＮＴ１が電源電圧ＶCCと接地電位ＧＮＤとの間に直列接続されている。トランジスタＰＴ１のゲートがノードＮＤ４に接続され、トランジスタＮＴ１のゲートがノードＮＤ５に接続されている。
イネーブル信号ＯＥがハイレベルのとき、トランスファゲートＴＧ３が導通するので、ノードＮＤ４とノードＮＤ５が共通の電位に保持されている。このとき、トランジスタＰＴ１とＮＴ１がインバータを形成し、プログラムバスＰＢＵＳｉを駆動する。ノードＮＤ４とＮＤ５の電位に応じてトランジスタＰＴ１とＮＴ１のうち一方がオンし、他方がオフするので、プログラムバスＰＢＵＳｉがハイレベルまたはローレベルに駆動される。
【００４０】
イネーブル信号ＯＥがローレベルのとき、トランスファゲートＴＧ３が遮断し、ノードＮＤ４とＮＤ５が切り離される。また、トランジスタＰＴ３とＮＴ３がともにオンするので、ノードＮＤ４がハイレベルに保持され、ノードＮＤ５がローレベルに保持される。このため、トランジスタＰＴ１のゲートにハイレベルの電圧が印加され、トランジスタＮＴ１のゲートにローレベルの電圧が印加されるので、トランジスタＰＴ１とＮＴ１がオフ状態に保持される。
【００４１】
トランジスタＰＴ１とＮＴ１が負荷の大きいデータバスを駆動するために、駆動能力が他のトランジスタより大きいもので構成されている。このため、リーク電流も通常のトランジスタに較べて大きく、待機時に消費電力が増加する傾向がある。ここで、待機時、即ち、イネーブル信号ＯＥがローレベルのとき、トランジスタＰＴ１とＮＴ１のゲートにそれぞれハイレベルとローレベルの電圧を印加することによって、これらのトランジスタを待機時に深いオフ状態に保持し、リーク電流の発生を抑制する。
【００４２】
上述した構成を持つビット訂正回路３００ａにおいて、ＥＣＣデコーダ２５０から供給されるクロス信号ＣＯＲ及びその反転信号ＸＣＯＲに応じて、読み出しデータＤinに対して誤り訂正が実行される。
例えば、ＥＣＣデコーダ２５０からハイレベルのクロス信号ＣＯＲを受けた場合、トランスファゲートＴＧ１が遮断し、トランスファゲートＴＧ２が導通するので、読み出しデータＤinの論理反転データがトランスファゲートＴＧ２を介してノードＮＤ２に入力される。逆に、ＥＣＣデコーダ２５０からローレベルのクロス信号ＣＯＲを受けた場合、トランスファゲートＴＧ１が導通し、トランスファゲートＴＧ２が遮断するので、読み出しデータＤinがトランスファゲートＴＧ１を介してノードＮＤ２に入力される。
【００４３】
イネーブル信号ＯＥがローレベルのとき、ビット訂正回路３００ａが待機状態にある。このとき、トランスファゲートＴＧ３が遮断し、また、トランジスタＰＴ１とＮＴ１がともにオフ状態にあるので、プログラムバスＰＢＵＳｉがハイインピーダンス状態にある。
イネーブル信号ＯＥがハイレベルに切り替わると、ビット訂正回路３００ａが待機状態から動作状態に入る。このとき、トランスファゲートＴＧ３が導通するので、ノードＮＤ２の電圧レベルに応じて、ノードＮＤ４及びＮＤ５の電圧レベルが制御される。例えば、ノードＮＤ２がハイレベルのとき、ノードＮＤ４とＮＤ５がローレベルに保持され、逆にノードＮＤ２がローレベルのとき、ノードＮＤ４とＮＤ５がハイレベルに保持される。
【００４４】
ノードＮＤ４とＮＤ５のレベルに応じて、インバータを形成するトランジスタＰＴ１とＮＴ１のうち一方がオンし、他方がオフする。例えば、ノードＮＤ４とＮＤ５がハイレベルにあるとき、トランジスタＰＴ１がオフし、トランジスタＮＴ１がオンするので、プログラムバスＰＢＵＳｉがローレベル、例えば、接地電位のレベルに駆動される。逆に、ノードＮＤ４とＮＤ５がローレベルにあるとき、トランジスタＰＴ１がオンし、トランジスタＮＴ１がオフするので、プログラムバスＰＢＵＳｉがハイレベル、例えば、電源電圧ＶCCのレベルに駆動される。
【００４５】
上述したように、ビット訂正回路３００ａにおいて、読み出しデータＤinの誤り訂正は、トランスファゲートＴＧ１及びＴＧ２の切り替えによって行われるので、誤り訂正のための遅延時間を最小限に抑制することができる。また、待機時にプログラムバスＰＢＵＳを駆動するトランジスタＰＴ１とＮＴ１をオフ状態に保持させることによって、待機時のリーク電流の発生を抑制することができ、誤り訂正回路を付加することに起因する消費電力の増加を抑制可能である。
【００４６】
図４は、プログラムバスＰＢＵＳ以外の他のデータバスを駆動するバッファ２８０ａの構成を示す回路図である。
図示のように、バッファ２８０ａは、図３に示すビット訂正回路３００ａから、トランスファゲートＴＧ１とＴＧ２及びインバータＩＮＶ１を省いたものである。即ち、バッファ２８０ａは、トランスファゲートＴＧ３、インバータＩＮＶ２及びｐＭＯＳトランジスタＰＴ１，ＰＴ２，ＰＴ３とｎＭＯＳトランジスタＮＴ１，ＮＴ２，ＮＴ３によって構成されている。
【００４７】
トランジスタＰＴ２とＰＴ３が電源電圧ＶCCとノードＮＤ４との間に並列に接続され、トランスファゲートＴＧ３がノードＮＤ４とＮＤ５との間に接続されている。また、ｎＭＯＳトランジスタＮＴ２とＮＴ３がノードＮＤ５と接地電位ＧＮＤとの間に並列に接続されている。
トランジスタＰＴ２のゲートがノードＮＤ２に接続され、トランジスタＰＴ３のゲートがイネーブル信号ＯＥの入力端子に接続されている。
トランジスタＮＴ２のゲートがノードＮＤ２に接続され、トランジスタＮＴ３のゲートがインバータＩＮＶ２の出力端子に接続されている。
トランスファゲートＴＧ３を構成するｎＭＯＳトランジスタのゲートがイネーブル信号ＯＥの入力端子に接続され、ｐＭＯＳトランジスタのゲートがインバータＩＮＶ２の出力端子に接続されている。即ち、トランスファゲートＴＧ３を構成するｐＭＯＳトランジスタのゲートにイネーブル信号ＯＥの反転信号が印加される。
【００４８】
トランジスタＰＴ１とＮＴ１が電源電圧ＶCCと接地電位ＧＮＤとの間に直列接続されている。トランジスタＰＴ１のゲートがノードＮＤ４に接続され、トランジスタＮＴ１のゲートがノードＮＤ５に接続されている。即ち、トランジスタＰＴ１とＮＴ１は、データバスＢＵＳｉを駆動するためのインバータを形成している。
【００４９】
待機時にイネーブル信号ＯＥがローレベルにある。このとき、トランスファゲートＴＧ３が遮断する。また、ｐＭＯＳトランジスタＰＴ３とｎＭＯＳトランジスタＮＴ３がオンするので、ノードＮＤ４がハイレベルに、ノードＮＤ５がローレベルにそれぞれ保持される。このため、トランジスタＰＴ１とＮＴ１がともにオフ状態に保持される。
【００５０】
動作時にイネーブル信号ＯＥがハイレベルにある。このとき、トランスファゲートＴＧ３が導通するので、ノードＮＤ４とＮＤ５が同じ電位に保持される。ノードＮＤ２に入力される読み出しデータＤinに応じて、ノードＮＤ４およびＮＤ５の電位が制御される。さらに、ノードＮＤ４とＮＤ５の電位に応じて、トランジスタＰＴ１とＮＴ１のうち一方がオン状態、他方がオフ状態に保持される。例えば、ノードＮＤ４とＮＤ５がハイレベルのとき、トランジスタＰＴ１がオフし、トランジスタＮＴ１がオンするので、データバスＢＵＳｉがローレベルに駆動される。逆に、ノードＮＤ４とＮＤ５がローレベルのとき、トランジスタＰＴ１がオンし、トランジスタＮＴ１がオフするので、データバスＢＵＳｉがハイレベルに駆動される。
【００５１】
上述したバッファ２８０ａによって、読み出しデータＤinに応じてデータバスＢＵＳｉを所定の電位に駆動することができる。また、待機時にトランスファゲートＴＧ３を遮断し、駆動用トランジスタＰＴ１とＮＴ１をともにオフ状態に制御することによって、待機時のリーク電流の発生を抑制でき、消費電力の低減を実現できる。
【００５２】
次に、ＥＣＣエンコーダ２６０及びＥＣＣデコーダ２５０の構成について説明する。
ＥＣＣエンコーダ２６０及びＥＣＣデコーダ２５０は、ＥＣＣアルゴリズムに従って動作する。データをメモリに格納するとき、ＥＣＣエンコーダ２６０は記憶データに応じて誤り訂正コードＥＣを生成してサブメモリ１２０に格納し、読み出しのとき、メインメモリ１１０からの読み出しデータＤＡＴ及びサブメモリ１２０からの誤り訂正コードＥＣに基づき、ＥＣＣデコーダ２５０によって誤り訂正データＥＤが生成されるので、読み出しデータのビット毎に設けられている上述したビット訂正回路３００ａによって、誤りのあったデータが訂正され、訂正後のデータがプログラムバスＰＢＵＳに出力される。
【００５３】
誤り訂正に採用されるＥＣＣアルゴリズムによって、ＥＣＣエンコーダ２６０及びＥＣＣデコーダ２５０の構成が異なる。以下、一般的に用いられている垂直−水平パリティ方式及びハミング方式について、それぞれのＥＣＣアルゴリズムに対応するＥＣＣエンコーダ及びデコーダの構成について説明する。
【００５４】
図５はハミング方式の原理を説明するための図である。図示のように、ハミング方式において、１６ビットの入力データと１６×５のＥＣＣコード生成用マトリックスを用いて、５ビットのＥＣＣコードＥＣが生成される。１６ビットの入力データがメインメモリアレイ１１０に格納され、５ビットの誤り訂正コードＥＣがサブメモリアレイ１２０に格納される。
読み出しのとき、メインメモリアレイ１１０からの１６ビットの読み出しデータＤＡＴとサブメモリアレイ１２０からの５ビットの誤り訂正コードＥＣに従って、読み出しデータＤＡＴの各ビットに生じた誤りを訂正するための誤り訂正データＥＤが生成される。そして、誤り訂正回路３００によって、誤り訂正データＥＤに応じて、読み出しデータに生じた誤りビットが訂正される。
【００５５】
図６は、ハミング方式によるＥＣＣエンコーダ２６０、ＥＣＣデコーダ２５０及び誤り訂正回路３００の構成を示す回路図である。
図示のように、ＥＣＣエンコーダ２６０において、１６ビットの記憶データに応じて、５ビットの誤り訂正コードＥＣ（Ｅ1 ，Ｅ2 ，Ｅ3 ，Ｅ4 ，Ｅ5 ）が生成される。１６ビットの記憶データがメインメモリアレイ１１０に格納され、５ビットの誤り訂正コードがサブメモリアレイ１２０に格納される。
【００５６】
読み出しのとき、メインメモリアレイ１１０から１６ビットのデータＤＡＴが読み出され、センスアンプ１３０を介して出力される。一方、サブメモリアレイ１２０から５ビットの誤り訂正コードＥＣが読み出される。ＥＣＣデコーダ２５０において、読み出しデータＤＡＴ及び誤り訂正コードＥＣに応じて、１６ビットの誤り訂正データＥＤが生成され、誤り訂正回路３００に供給される。
【００５７】
図６において、誤り訂正回路３００は、エクスクルーシブＯＲゲートを用いて構成されているように表記しているが、これはあくまでも誤り訂正回路の動作原理を示すためのものであり、本実施形態では、誤り訂正回路３００は、図３に示すビット訂正回路３００ａを読み出しデータＤＡＴのビット分、例えば、１６個を用いて構成されている。
【００５８】
図３に示すビット訂正回路３００ａにおいて、クロス信号ＣＯＲは、例えば、誤り訂正データＥＤのうちの一ビット分に応じて生成された信号である。前述したように、クロス信号ＣＯＲがローレベルのとき、読み出しデータＤinがノードＮＤ２に入力され、それに応じてプログラムバスＰＢＵＳが駆動される。一方、クロス信号ＣＯＲがハイレベルのとき、読み出しデータＤinの論理反転データがノードＮＤ２に入力され、それに応じてプログラムバスＰＢＵＳが駆動される。即ち、クロス信号ＣＯＲと読み出しデータＤinのエクスクルーシブＯＲ論理演算に応じて、プログラムバスＰＢＵＳが駆動される。
図６に示す誤り訂正回路３００は、エクスクルーシブＯＲゲートを用いて、この誤り訂正の原理を示している。
【００５９】
図７は、垂直−水平パリティ方式による誤り訂正の原理を示す図である。
図示のように、垂直−水平パリティ方式において、記憶データを最上位（ｍｓｂ）から最下位（ｌｓｂ）までの１６ビットのデータを４つの組に分割し、これらの４組のデータによって、４×４のマトリックスを形成する。そして、エクスクルーシブ論理演算により、マトリックスの各行及び各列毎にそれぞれパリティコードＥx0及びＥ0xが生成される。
こうして生成された８ビットの垂直及び水平パリティコードが誤り訂正コードＥＣとしてサブメモリアレイ１２０に格納される。また、１６ビットの記憶データがメインメモリアレイ１１０に格納される。
【００６０】
読み出しのとき、メインメモリアレイ１１０から読み出した１６ビットのデータとサブメモリアレイ１２０から読み出した８ビットの誤り訂正コードに応じて、ＥＣＣエンコーダによって誤り訂正データが生成される。この誤り訂正データに応じて、読み出しデータに生じた誤りが訂正され、訂正後のデータがデータバスに出力される。
【００６１】
図８は、垂直−水平パリティ方式によるＥＣＣエンコーダ２６０、ＥＣＣデコーダ２５０及び誤り訂正回路３００の構成を示す回路図である。
図示のように、ＥＣＣエンコーダ２６０において、１６ビットの記憶データに応じて、４ビットの垂直パリティコードと４ビットの水平パリティコードからなる８ビット誤り訂正コードＥＣが生成される。１６ビットの記憶データがメインメモリアレイ１１０に格納され、８ビットの誤り訂正コードがサブメモリアレイ１２０に格納される。
【００６２】
読み出しのとき、メインメモリアレイ１１０から１６ビットのデータＤＡＴが読み出され、センスアンプ１３０を介して出力される。一方、サブメモリアレイ１２０から８ビットの誤り訂正コードＥＣが読み出される。ＥＣＣデコーダ２５０において、読み出しデータＤＡＴ及び誤り訂正コードＥＣに応じて、１６ビットの誤り訂正データＥＤが生成され、誤り訂正回路３００に供給される。
【００６３】
図８は誤り訂正回路３００の原理を示しており、実際に本実施形態では、誤り訂正回路３００は、図３に示すビット訂正回路３００ａを読み出しデータＤＡＴのビット分、例えば、１６個を用いて構成されている。誤り訂正回路３００において、ＥＣＣデコーダ２５０によって生成された誤り訂正データに応じて、読み出しデータＤＡＴの誤りビットが訂正されるので、訂正後のデータによって、プログラムバスＰＢＵＳが駆動される。
【００６４】
以上説明したように、本実施形態によれば、記憶データに応じて生成される誤り訂正コードが上記記憶データを格納するメインメモリアレイとは別に設けられているサブメモリアレイに格納される。読み出しのとき、メインメモリアレイ及びサブメモリアレイから記憶データと誤り訂正コードがそれぞれ読み出され、これらのデータに基づき読み出しデータに対して誤り訂正を行う誤り訂正データが生成される。誤り訂正回路によって、誤り訂正データに基づき、読み出しデータの誤りが訂正される。誤り訂正コードをメインメモリアレイと異なるサブメモリアレイに格納し、かつメインメモリアレイとサブメモリアレイのレイアウトを工夫することによって、誤り訂正コードの読み出しを高速化できる。これによって、誤り訂正処理で発生した遅延時間を抑制でき、誤り訂正を高速に実行することができる。
【００６５】
【発明の効果】
以上説明したように、本発明の半導体記憶装置によれば、記憶データを格納するメインメモリと誤り訂正コードを格納するサブメモリのレイアウトを工夫することによって、誤り訂正コードの読み出しを高速化でき、誤り訂正処理のためのデコーディング処理による時間遅延を吸収することができ、誤り処理の高速化を実現できる。
また、本発明の半導体記憶装置によれば、読み出しデータに対して誤り訂正を行う誤り訂正回路において、待機状態においてリーク電流の発生経路を遮断することによって、待機時の消費電力の低減を実現できる。これによって、誤り訂正処理に起因する消費電力の増加を最小限に抑制することができる利点がある。
【図面の簡単な説明】
【図１】本発明に係る誤り訂正回路を備えた半導体記憶装置の一実施形態を示す回路図である。
【図２】半導体記憶装置のレイアウトを示すレイアウト図である。
【図３】誤り訂正回路の一構成例を示す回路図である。
【図４】バッファの一構成例を示す回路図である。
【図５】ハミング方式の原理を示す概念図である。
【図６】ハミング方式に基づくＥＣＣエンコーダ、ＥＣＣデコーダの構成を示す回路図である。
【図７】垂直−水平パリティ方式の原理を示す概念図である。
【図８】垂直−水平パリティ方式に基づくＥＣＣエンコーダ、ＥＣＣデコーダの構成を示す回路図である。
【符号の説明】
１００…記憶部、
１１０…メインメモリアレイ、
１２０…サブメモリアレイ、
１３０…センスアンプ、
１４０…ドライバー、
１５０…ドライバー、
１６０−１，１６０−２，１６０−３…トランスファゲート、
１７０…トランスファゲート、
２００…誤り訂正部、
２１０…フリップフロップ、
２２０…ラッチ回路、
２３０…セレクタ、
２４０…セレクタ、
２５０…ＥＣＣデコーダ、
２６０…ＥＣＣエンコーダ、
２７０…セレクタ、
２８０−１，２８０−２，２８０−３…バッファ、
３００…誤り訂正回路、
ＶCC…電源電圧、ＧＮＤ…接地電位。
【図１】
0003944380.tif 000002
【図２】
0003944380.tif 000003
【図３】
0003944380.tif 000004
【図４】
0003944380.tif 000005
【図５】
0003944380.tif 000006
【図６】
0003944380.tif 000007
【図７】
0003944380.tif 000008
【図８】
0003944380.tif 000009