説明

半導体装置

【課題】データの信頼性の向上を低コストで実現可能な半導体装置を提供する。
【解決手段】例えば、相補メモリを備えた半導体装置において、書き込み時に、(N+1)ビットの正極(Posi)データに対してパリティービットを生成し、(N+1)ビットの負極(Nega)データに対してパリティービットを生成する。読み出し時には、正極側および負極側のそれぞれに対してパリティーチェックを行うと共に、正極データと負極データを各ビット番号毎に比較する。ここで、正極データと負極データが同一データとなっているビット番号が存在した場合、正極側のパリティーチェック結果が異常であれば正極データの当該ビット番号を誤データとして特定でき、逆に負極側のパリティーチェック結果が異常であれば負極データの当該ビット番号を誤データとして特定できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリユニットを備えた半導体装置に関し、特に、2個の記憶素子で1ビットを記憶するメモリユニットを備えた半導体装置に適用して有効な技術に関する。
【背景技術】
【0002】
例えば特許文献1には、2つのメモリセルに相補的なデータを書き込む半導体不揮発性メモリにおいて、ベリファイ読み出しと通常読み出しを同一のセンスアンプを利用して行う技術が示されている。また、特許文献2には、2つのメモリセル(ツインセル)に相補的なデータを書き込む半導体不揮発性メモリにおいて、複数のツインセルが書き込み状態かブランク状態かを高速に検出する技術が示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−252290号公報
【特許文献2】特開2009−272028号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、マイクロコンピュータ(所謂マイコン)等では、従来のデータ格納用のEEPROM(Electrically Erasable Programmable Read Only Memory)に代わってフラッシュメモリ等が搭載される場合がある。フラッシュメモリでは、メモリセルの記憶情報となるしきい値電圧(フローティング・ゲートの電荷)が時間経過と共に徐々に変動する。このしきい値電圧を正常な範囲に維持できる期間はデータリテンションと呼ばれる。フラッシュメモリをマイコン等のデータ格納領域として用いた場合、書き換え動作が多く発生し得るが、データリテンションは、特に書き換え回数が多くなると劣化する傾向にある。そこで、書き換え回数が多い場合でもデータ保持特性(データリテンション)を確保するため、特許文献1や特許文献2に示されるような不揮発性の相補型メモリを用いることが有益となる。相補型メモリでは、1ビットのデータを記憶するために2ビットの記憶領域を用い、その一方に正極(positive)データが記憶され、他方に負極(negative)データが記憶される。読み出し動作時には、正極データと負極データの差分を用いることでデータ保持特性(データの信頼性)をある程度改善することができる。
【0005】
近年、このような不揮発性の相補型メモリを内蔵したマイコンでは、多様な使用環境に伴い、小領域(例えば数バイト、数ワード等)単位でのアクセス(書き換え、読み出し)がより多く行われるようになってきている。このため、データの信頼性の更なる向上が望まれる。データの信頼性を向上させるためには、例えば、エラー検出やエラー訂正といった技術を用いることが考えられる。このような技術の代表として、データにハミングコード(ECC(Error Checking and Correction)コード)を付加することが知られている。しかしながら、この場合、ハミングコードの記憶領域の付加やエラー検出/訂正用の演算回路の付加に伴う面積オーバヘッドが大きく、マイコン等の小型化・低コスト化が図れない恐れがある。
【0006】
特に、この面積オーバヘッドの問題は、アクセス単位が小さくなるほどより顕著となる。ハミングコードは、検査用ビット数をnとすると、2−1のビット数を持つ。すなわち、本来のデータのビット数は、2−1−nである。例えば、8バイト(64ビット)をアクセス単位とするデータに対しては7ビットのハミングコードを付加する必要があり、記憶領域としては71/64倍(約1.1倍)の確保が必要となる。また、2バイト(16ビット)をアクセス単位とするデータに対しては5ビットのハミングコードを付加する必要があり、記憶領域としては21/16倍(約1.3倍)の確保が必要となる。
【0007】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、データの信頼性の向上を低コストで実現可能な半導体装置(または記憶装置)を提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【0009】
本実施の形態による半導体装置は、N(N≧1)個の第1記憶ノードと、N個の第2記憶ノードと、パリティー生成回路と、第1および第2パリティー記憶ノードと、エラー処理回路とを備える。第1記憶ノードにはNビットの第1データが書き込まれ、第2記憶ノードには第1データの反転データとなる第2データが書き込まれる。パリティー生成回路は、第1データの書き込みに伴い当該データを対象とした第1パリティーデータを生成し、第2データの書き込みに伴い当該データを対象とした第2パリティーデータを生成する。第1および第2パリティー記憶ノードには、第1および第2パリティーデータがそれぞれ書き込まれる。エラー処理回路は、読み出し動作時に第1〜第5処理を実行する。第1処理では第1記憶ノードからのNビットの第1読み出しデータと第2記憶ノードからのNビットの第2読み出しデータとの一致・不一致が各ビット番号毎に判定される。第2処理では、第1読み出しデータと第1パリティーデータを用いてパリティー判定が行われ、第3処理では、第2読み出しデータと第2パリティーデータを用いてパリティー判定が行われる。第4処理では、第1処理で一致するビット番号が1個存在し、かつ第2処理/第3処理の判定結果が異常/正常な場合にNビットの第1読み出しデータにおける当該ビット番号が誤りと判定される。また、第4処理では、第1処理で一致するビット番号が1個存在し、かつ第3処理/第2処理の判定結果が異常/正常な場合に、Nビットの第2読み出しデータにおける当該ビット番号が誤りと判定される。第5処理では、第4処理で誤りと判定されたビットの訂正が行われる。
【0010】
このような半導体装置を用いることで、データの信頼性を向上させることができ、また、例えばハミングコード等を用いてエラー訂正を行うような場合と比べて、エラー訂正に伴う回路面積のオーバヘッドを抑制でき、低コスト化等が図れる。なお、より望ましくは、第1および第2パリティー記憶ノードのそれぞれを、相補ビット(2ビット)の記憶ノードで構成するとよい。これによって、データの信頼性を更に向上させることが可能になる。また、第1記憶ノードからの読み出し動作と第2記憶ノードからの読み出し動作は、それぞれ個別のセンスアンプ回路等を用いて並行して行うことが望ましい。これによって、エラー処理動作(読み出し動作)の高速化が図れる。
【発明の効果】
【0011】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、メモリユニットを備えた半導体装置(または記憶装置)において、データの信頼性の向上を低コストで実現可能になる。
【図面の簡単な説明】
【0012】
【図1】本発明の実施の形態1による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。
【図2】図1におけるパリティー生成回路の動作例を示す説明図である。
【図3】図1におけるエラー処理回路ブロックの動作例を示すフロー図である。
【図4】(a)〜(e)は、図2および図3の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。
【図5】(a)〜(e)は、図4(a)〜(e)の変形例を示す説明図である。
【図6】本発明の実施の形態2による半導体装置において、その全体構成の一例を示すブロック図である。
【図7】図6の半導体装置において、そのデータ格納用のフラッシュメモリの概略構成例を示す回路ブロック図である。
【図8】図7における各メモリセルの詳細を示すものであり、(a)は各メモリセルの詳細な構成例を示す回路図、(b)は(a)における各種動作条件の一例を示す説明図、(c)は(b)の動作に伴う各メモリセルのしきい値状態の一例を示す説明図である。
【図9】図7のフラッシュメモリにおけるメモリマットのレイアウト構成例を示す概略図である。
【図10】図7および図9における各センスアンプ回路ブロック周りの概略構成例を示す回路図である。
【図11】図10を変形した各センスアンプ回路ブロック周りの概略構成例を示す回路図である。
【図12】(a)は図7におけるパリティー生成回路の詳細な構成例を示す回路図であり、(b)は(a)における加算回路の動作例を示す真理値表である。
【図13】図7におけるエラー処理回路ブロックの詳細な動作例を示す真理値表である。
【図14】図7におけるエラー処理回路ブロックの詳細な構成例を示す回路図である。
【図15】本発明の実施の形態3による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。
【図16】図15におけるエラー処理回路ブロックの主要な動作例を示すフロー図である。
【図17】本発明の実施の形態4による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。
【図18】図17におけるエラー処理回路ブロックの動作例を示すフロー図である。
【図19】(a)〜(e)は、図18の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。
【発明を実施するための形態】
【0013】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【0014】
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0015】
また、実施の形態の各機能ブロックを構成する回路素子は、特に制限されないが、公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような半導体基板上に形成される。なお、実施の形態では、MISFET(Metal Insulator Semiconductor Field Effect Transistor)の一例としてMOSFET(Metal Oxide Semiconductor Field Effect Transistor)(MOSトランジスタと略す)を用いるが、ゲート絶縁膜として非酸化膜を除外するものではない。
【0016】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0017】
(実施の形態1)
《メモリユニットの概略構成および概略動作[1]》
図1は、本発明の実施の形態1による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。図1に示すメモリユニットは、メモリ領域MEM1,MEM2と、パリティー生成回路PRTYG1,PRTYG2と、パリティー用記憶ノードSN1p,SN2pと、エラー処理回路ブロックERCBK1を備えている。MEM1は(N+1)ビットの記憶ノードSN1[0]〜SN1[N]を備え、MEM2は(N+1)ビットの記憶ノードSN2[0]〜SN2[N]を備える。
【0018】
ここで、MEM1,MEM2は、MEM1を正極(Posi)データ、MEM2を負極(Nega)データとする相補型メモリとなる。また、ここでは、SN1pは記憶ノードSN1pp,SN1pnからなる相補ビット(2ビット)で構成され、SN2pは記憶ノードSN2pp,SN2pnからなる相補ビットで構成される。SN1p,SN2pのそれぞれは、場合によっては1ビットで構成することも可能であるが、パリティービットの信頼性を高めるためには、差分によって大きな読み出し信号が得られる相補ビット(2ビット)で構成する方が望ましい。
【0019】
書き込み動作の際、MEM1のSN1[0]〜SN1[N]には、それぞれ、(N+1)ビットのデータ入力信号DI[0]〜DI[N](なお便宜上区別無くDI[0:N]と表記する場合もあり、その他の符号に関しても同様)が記憶される。また、MEM2のSN2[0]〜SN2[N]には、それぞれ、DI[0]〜DI[N]の反転データ入力信号(/DI[0]〜/DI[N])が記憶される。PRTYG1は、DI[0]〜DI[N]を対象としたパリティービットの値を演算し、その値をSN1pに書き込む。PRTYG2は、/DI[0]〜/DI[N]を対象としたパリティービットの値を演算し、その値をSN2pに書き込む。
【0020】
一方、読み出し動作の際、MEM1のSN1[0]〜SN1[N]の記憶データがプリデータ信号PREDATp[0]〜PREDATp[N]として読み出され、MEM2のSN2[0]〜SN2[N]の記憶データがプリデータ信号PREDATn[0]〜PREDATn[N]として読み出される。ERCBK1は、これらのプリデータ信号と、SN1p,SN2pから読み出した信号(パリティービット)を用いて、エラー検出およびエラー訂正を行い、エラー訂正後となる(N+1)ビットのデータ出力信号DO[0]〜DO[N]を出力する。
【0021】
《エラー処理動作[1]》
図2は、図1におけるパリティー生成回路の動作例を示す説明図である。図2に示すように、パリティー生成回路PRTYG1は、(N+1)ビットの正極(Posi)データ(DI[0]〜DI[N])を対象として当該(N+1)ビットとパリティービット(SN1p)内に含まれる「1」情報の合計数が奇数個となるようなパリティービットの値を定める。すなわち、当該(N+1)ビット中に含まれる「1」情報の合計数が奇数個の場合にはSN1pに「0」情報を書き込み、当該(N+1)ビット中に含まれる「1」情報の合計数が偶数個の場合にはSN1pに「1」情報を書き込む。
【0022】
同様に、パリティー生成回路PRTYG2は、(N+1)ビットの負極(Nega)データ(/DI[0]〜/DI[N])を対象として当該(N+1)ビットとパリティービット(SN2p)内に含まれる「1」情報の合計数が奇数個となるようなパリティービットの値を定める。このようにして、図2の例では、正極側のSN1pが「0」に、負極側のSN2pが「1」に定められる。このようなパリティー方式は奇数(odd)パリティー等と呼ばれる。ただし、勿論、奇数(odd)パリティーに限らず、「1」情報の合計数を偶数個に揃える偶数(even)パリティーを用いることも可能である。
【0023】
図3は、図1におけるエラー処理回路ブロックの動作例を示すフロー図である。図3に示すように、エラー処理回路ブロックERCBK1は、まず、正極(Posi)用のシングルデータ列となるプリデータ信号(図1のPREDATp[0]〜PREDATp[N])と、正極用のパリティービット(図1のSN1pの情報)を読み出し、パリティーチェックを行う(S101)。ここでは、当該パリティーチェック結果(Parity Check P)が正常(すなわち、PREDATp[0:N],SN1pにおける「1」情報の数が奇数個)な場合を「Parity Check P=0」と表現し、異常(「1」情報の数が偶数個)な場合を「Parity Check P=1」と表現する。
【0024】
次いで、ERCBK1は、負極(Nega)用のシングルデータ列となるプリデータ信号(図1のPREDATn[0]〜PREDATn[N])と、負極用のパリティービット(図1のSN2pの情報)を読み出し、パリティーチェックを行う(S102)。ここでは、当該パリティーチェック結果(Parity Check N)が正常(すなわち、PREDATn[0:N],SN2pにおける「1」情報の数が奇数個)な場合を「Parity Check N=0」と表現し、異常(「1」情報の数が偶数個)な場合を「Parity Check N=1」と表現する。なお、S101,S102では、正極用のデータ列と負極用のデータ列をそれぞれシングルデータ列として別個独立に読み出している点が特徴となっている。すなわち、通常の相補型メモリでは、正極用のデータ列と負極用のデータ列は差動対として一体不可分に読み出され、正極用のデータのみ又は負極用のデータのみを単独で読み出すようなことは通常行われない。
【0025】
続いて、ERCBK1は、正極用のプリデータ信号(PREDATp[0]〜PREDATp[N])と負極用のプリデータ信号(PREDATn[0]〜PREDATn[N])の一致・不一致を各ビット毎に判定する(S103)。全てのビットが不一致であれば、相補データが正常に記憶されていることになるためエラー無しと判定する(S109)。一方、一致するビットが存在する場合には、ERCBK1は、S101におけるパリティーチェック結果(Parity Check P)が異常(「1」)か正常(「0」)かを判定する(S104)。異常であれば、ERCBK1は、正極用のプリデータ信号の中で、S103で一致したビットが誤データであると判定し(S106)、当該ビットを訂正する(S110)。
【0026】
また、ERCBK1は、S104におけるパリティーチェック結果(Parity Check P)が正常(「0」)であった場合には、S102におけるパリティーチェック結果(Parity Check N)が異常(「1」)か正常(「0」)かを判定する(S105)。異常であれば、ERCBK1は、負極用のプリデータ信号の中で、S103で一致したビットが誤データであると判定し(S107)、当該ビットを訂正する(S110)。一方、S105の結果が正常であれば、ERCBK1は、エラーは存在するものの訂正は不可と判定する(S108)。なお、S106,S107,S110では、S103で一致したビットが1ビットである場合を前提とし、複数ビットの場合には、S108の場合と同様にエラーは存在するものの訂正は不可と判定される。
【0027】
図4(a)〜図4(e)は、図2および図3の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。まず、図4(a)には、図3のS109に対応するエラー無しの状態が示されている。ここでは、正極データ(PREDATp[0]〜PREDATp[N])と負極データ(PREDATn[0]〜PREDATn[N])における各ビットが相補データとなっており、正極データおよび負極データに対するパリティーチェック結果も共に正常である。
【0028】
図4(b)には、図3のS106に対応し、正極データ中の1ビットが「0」から「1」に化けた状態が示されている。ここでは、正極データと負極データにおける[0]ビット目が相補データでは無く、正極データに対するパリティーチェック結果が異常となっている。したがって、正極データの[0]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図4(c)には、図3のS106に対応し、正極データ中の1ビットが「1」から「0」に化けた状態が示されている。ここでは、正極データと負極データにおける[1]ビット目が相補データでは無く、正極データに対するパリティーチェック結果が異常となっている。したがって、正極データの[1]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【0029】
図4(d)には、図3のS107に対応し、負極データ中の1ビットが「1」から「0」に化けた状態が示されている。ここでは、正極データと負極データにおける[0]ビット目が相補データでは無く、負極データに対するパリティーチェック結果が異常となっている。したがって、負極データの[0]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図4(e)には、図3のS107に対応し、負極データ中の1ビットが「0」から「1」に化けた状態が示されている。ここでは、正極データと負極データにおける[1]ビット目が相補データでは無く、負極データに対するパリティーチェック結果が異常となっている。したがって、負極データの[1]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【0030】
図5(a)〜図5(e)は、図4(a)〜図4(e)の変形例を示す説明図である。図5(a)〜図5(e)は、図4(a)〜図4(e)と比較して、正極データに対するパリティービットの値と負極データに対するパリティービットの値が同一値となっている点が異なっている。この点を除いて、図5(a)〜図5(e)に示す処理結果は、図4(a)〜図4(e)と同様である。
【0031】
ここで、前述した図2の動作例において、データのビット数(N+1)が奇数個の場合、図2および図4(a)〜図4(e)に示すように、正常なパリティービットの値として正極側と負極側で異なる値が書き込まれることになる。一方、前述した図2の動作例において、データのビット数(N+1)が偶数個の場合、図5(a)〜図5(e)に示すように、正常なパリティービットの値として正極側と負極側で同一値が書き込まれることになる。図5(a)〜図5(e)は、この図2の動作例におけるデータのビット数(N+1)が偶数個である場合を前提とした処理結果の一例を示したものである。多くの場合、データのビット数(パラレルビット数)はバイト(8ビット)の整数倍であるため、奇数個ではなく偶数個を前提とした図5(a)〜図5(e)のような処理結果がより現実的に生じ得る。
【0032】
《本実施の形態1の主要な効果》
以上のように、本実施の形態1の半導体装置(記憶装置)は、正極ビット列および負極ビット列のそれぞれに対するパリティーチェック結果から正極側と負極側のどちらが異常かを特定し、正極ビット列と負極ビット列間の各ビット毎の比較結果から1個のビット番号を特定し、当該特定箇所に対して1ビットのエラー訂正を行う機能を備えている。これによって、データの信頼性を向上させることが可能になる。また、この際に、パリティービットを相補ビットで記憶することで、パリティービットの信頼性が向上することからデータの信頼性の更なる向上が図れる。更に、このようなデータの信頼性の向上効果を低コストで得ることが可能になる。当該低コスト化の効果は、特にアクセス単位のパラレルビット数が少ない場合により有益なものとなる。
【0033】
すなわち、比較例としてハミングコード(ECC)方式を用いた場合、例えば2バイト(16ビット)(相補時32ビット)のパラレルデータに対して5ビット(相補時10ビット)のハミングコードを付加するため、(32+10)/32倍(約1.3倍)の記憶領域を確保する必要がある。一方、本実施の形態の方式を用いた場合、16ビット(相補時32ビット)のパラレルデータに対して正極用の1ビットのパリティービット(相補時2ビット)と負極用の1ビットのパリティービット(相補時2ビット)を加えればよく、パリティービットを相補とした場合、(32+4)/32倍(約1.1倍)の記憶領域を確保すればよい。このように、本実施の形態の方式では、記憶領域の確保に伴う面積オーバヘッドを抑制することができる。更に、パリティービットの生成、パリティーチェック、およびエラー訂正を行う際の処理内容も、図2および図3から判るようにハミングコード(ECC)方式を用いる場合と比較して簡素であるため、当該処理に必要な各種処理回路に伴う面積オーバヘッドも十分に抑制される。これらの結果、半導体装置(記憶装置)の小型化や低コスト化が可能になる。
【0034】
(実施の形態2)
本実施の形態2では、実施の形態1のメモリユニットを備えた半導体装置の更なる具体例について説明する。
【0035】
《半導体装置の全体構成》
図6は、本発明の実施の形態2による半導体装置において、その全体構成の一例を示すブロック図である。図6には、半導体装置の一例として、例えばCMOSプロセス等により単結晶シリコンのような1個の半導体チップ上に形成されたマイクロコンピュータMCUが示されている。MCUは、特に制限されないが、高速バスHBSと低速バス(周辺バス)LBSの2バス構成を有する。HBSとLBSは、特に制限されないが、それぞれデータバス、アドレスバス及びコントロールバスを含んでいる。バスを2バス構成に分離することにより、共通バスに全ての回路を共通接続する場合に比べてバスの負荷が軽くなり、高速アクセス動作が実現可能となる。
【0036】
高速バスHBSには、中央処理ユニットCPU、ダイレクトメモリアクセスコントローラDMAC、バスインタフェース回路BSIF、ランダムアクセスメモリRAM、および不揮発性メモリモジュールとしてのフラッシュメモリモジュールFMDLが接続される。FMDLは、データ格納用のフラッシュメモリFMD_D、プログラム(コード)格納用のフラッシュメモリFMD_C、高速アクセスポートHACSP、および低速アクセスポートLACSPを備える。FMDLは、HACSPを介してHBSに接続される。CPUは、RAMをワーク領域として用いながら所定の演算処理等を実行する。DMACは、CPU等からの命令に基づいて、RAMとFMDLとの間のデータ転送を制御する。BSIFは、HBSやLBSの使用権の制御や、HBSとLBSの間のバスブリッジの制御などを行う。
【0037】
低速バスLBSには、フラッシュメモリモジュールFMDL、フラッシュシーケンサFSEQ、タイマTMR、外部入出力ポートPORT1,PORT2、バスインタフェース回路BSIF、およびクロック生成回路PLLが接続される。FMDLは、低速アクセスポートLACSPを介してLBSに接続される。FSEQは、FMDLに対するコマンドアクセス制御を行う。PLLは、MCUの各種内部クロック信号を生成する。PORT1,PORT2は、MCUの外部端子Din/Doutを介して外部との間の通信を制御する。なお、MCUには、外部端子として更にXTAL/EXTAL、STBY/RES、Vcc/Vssが備わっている。XTAL/EXTALには、例えば水晶振動子が接続されるか或いは外部クロック信号が供給され、PLLは当該端子を用いて動作を行う。STBYはスタンバイ状態を指示する外部ハードウェアスタンバイ端子、RESはリセットを指示する外部リセット端子、Vccは外部電源電圧端子、Vssは外部接地電源電圧端子である。
【0038】
ここで、例えばCPUとFMDL内のFMD_C又はFMD_Dとの間では、HBSおよびHACSPを介して高速な読み出しアクセス動作が可能となっている。また、例えばCPUとFMDL内のFMD_Dとの間では、LBS、FSEQ、およびLACSPを介した書き込みアクセス動作等が可能となっている。このようにFMDLは、CPU(又はDMAC)の読み出し・書き込みアクセス対象とされ、CPUは、例えば一時的なデータ等をRAMに、次回の電源投入後に使用するデータ等をFMD_Dに格納しながら、FMD_Cから読み出したコードを適宜実行する。なお、実際のフラッシュメモリでは、書き込み動作に伴い数ステップの処理が必要とされるため、ここではFSEQがCPUからFMD_Dに向けた書き込み命令を受け、FSEQがFMD_Dの書き込み動作に必要な各種処理(例えば、消去動作、書き込み動作、ベリファイ動作)を時系列的に制御する。FSEQは、ここではFMDLの外部に備わっているがFMDLの内部に備わっていてもよい。また、特に限定はされないが、FMD_Cは数百キロバイト以上の容量値を備え、FMD_Dは数十キロバイト以下の容量値を備える。
【0039】
例えば、図6に示したようなマイクロコンピュータMCUでは、CPU(あるいはDMAC)等からデータ格納用のフラッシュメモリFMD_Dに向けて小領域(例えば数バイト)のアクセス単位で多数の書き込みアクセスが生じる場合がある。これに伴い、FMD_Dではデータリテンションが劣化する恐れがあるため、FMD_Dは相補メモリやエラー訂正機能を備えることが有益となる。ただし、この場合、面積オーバヘッドの増大が懸念されるが、通常、FMD_DはFMD_Cに比べて小容量であるため、ある程度は許容可能である。一方、FMD_Cは、実動作上、コード格納用のROM(Read Only Memory)として用いられるため、FMD_Dに比べてデータリテンションの劣化が生じ難く、また、FMD_Dに比べて大容量であるため小面積化に重点をおいたシングルメモリ等であってもよい。
【0040】
《フラッシュメモリの全体構成》
図7は、図6の半導体装置において、そのデータ格納用のフラッシュメモリの概略構成例を示す回路ブロック図である。図8は、図7における各メモリセルの詳細を示すものであり、図8(a)は各メモリセルの詳細な構成例を示す回路図、図8(b)は図8(a)における各種動作条件の一例を示す説明図、図8(c)は図8(b)の動作に伴う各メモリセルのしきい値状態の一例を示す説明図である。図7に示すフラッシュメモリFMD_Dは、メモリマットMMAT、行デコード回路RDEC1,RDEC2、列デコード回路CDEC、書き込みデータラッチ回路WLT、書き込み列選択回路WSEL、ベリファイ回路VRFY、入出力バッファ回路IOBF、出力バッファ回路OBF、および内部電源生成回路VGを備えている。
【0041】
MMATは、1ビットの情報を相補(正極、負極)で記憶する2個のメモリセルMC1,MC2と、正極用の各メモリセルに対するパリティービットを相補で記憶する2個のメモリセルMCp1,MCp2と、負極用の各メモリセルに対するパリティービットを相補で記憶する2個のメモリセルMCn1,MCn2を備えている。各メモリセル(MC1,MC2,MCp1,MCp2,MCn1,MCn2)は、例えば、図8(a)に例示されるスプリットゲート型フラッシュメモリ素子とされる。このメモリ素子は、ソース・ドレイン領域の間のチャネル形成領域の上にゲート絶縁膜を介して配置されたコントロールゲートCGとメモリゲートMGを有し、メモリゲートとゲート絶縁膜の間にはシリコンナイトライド等の電荷トラップ領域(SiN)が配置されて構成される。CG側のソース又はドレイン領域はビット線BLに接続され、MG側のソース又はドレイン領域はソース線SLに接続される。
【0042】
図8(b)に示すように、メモリセルのしきい値電圧(Vth)を下げる際には、BL=1.5V、CG=0V、MG=−10V、SL=6V、ウェル領域WELL=0Vとされる。これによって、WELLとMG間の高電界によって電荷トラップ領域(SiN)からWELLに電子が引き抜かれる。この処理単位はMGを共有する複数メモリセルとされる。メモリセルのVthを上げる際には、BL=0V、CG=1.5V、MG=10V、SL=6V、WELL=0Vとされる。これによって、SLからBLに書き込み電流が流れ、それによってCGとMGの境界部分で発生するホットエレクトロンが電荷トラップ領域(SiN)に注入される。電子の注入はBLに電流を流すか否かによって決まるため、この処理はビット単位で制御される。読み出しの際には、BL=1.5V、CG=1.5V,MG=0V、SL=0V、WELL=0Vとされる。メモリセルのVthが低ければメモリセルはオン状態にされ、高ければオフ状態にされる。また、ここでは、メモリセルのVthを下げる動作を消去動作とし、メモリセルのVthを上げる動作を書き込み動作としている。
【0043】
なお、メモリ素子は、このようなスプリットゲート型フラッシュメモリ素子に限定されず、例えば広く知られているスタックド・ゲート型フラッシュメモリ素子であってよい。このメモリ素子はソース・ドレイン領域の間のチャネル形成領域の上にゲート絶縁膜を介してフローティングゲート(FG)とコントロールゲート(CG)がスタックされて構成される。このようなメモリ素子では、例えば、ホットキャリア書き込み方式によってしきい値電圧を上げる動作が行われ、ウェル領域(WELL)への電子の放出によってしきい値電圧を下げる動作が行われる。また、例えば、FNトンネル書き込み方式によってしきい値電圧を上げる動作が行われ、ビット線(BL)への電子の放出によって閾値電圧を下げる動作が行われる。
【0044】
相補ビット(ツインセル)となるメモリセルMC1,MC2は、例えば図8(c)に示すような状態で‘0’または‘1’の情報(データ)を記憶する。すなわち、MC1,MC2に対してデータを書き込む際には、まず図8(b)で述べた消去動作によってMC1,MC2が共に初期状態(Vthが低い状態)とされる。この状態から‘1’データを書き込む際には、負極用となるMC2に対して図8(b)で述べた書き込み動作が行われる。その結果、MC1が初期状態、MC2が書き込み状態(Vthが高い状態)となり、この状態がデータ‘1’に対応する。一方、MC1,MC2の初期状態から‘0’データを書き込む際には、正極用となるMC1に対して図8(b)で述べた書き込み動作が行われる。その結果、MC2が初期状態、MC1が書き込み状態となり、この状態がデータ‘0’に対応する。なお、ここでは、正極側においてVthが低い状態をデータ‘1’とし、Vthが高い状態をデータ‘0’としたが、勿論、データ‘0’と‘1’の対応関係を入れ替えることも可能である。
【0045】
図7のメモリマットMMATにおいて、MC1,MC2,MCp1,MCp2,MCn1,MCn2のメモリゲートMGは、共通のメモリゲート選択線MGLに接続され、コントロールゲートCGは共通のワード線WLに接続され、ソースノードは共通のソース線SLに接続される。ここでは、データ用のメモリセルとして代表的に、1個のツインセル(MC1,MC2)を示したが、実際には、同一のMGL,WL,SLに複数(例えば図1における(N+1)ビット分)のツインセルが接続される。また、ここでは、1本のMGL,WL,SLを示しているが、実際には、当該MGL,WL,SLに並んで複数本のMGL,WL,SLが順次配置され、これらのそれぞれに対して複数のツインセルおよびパリティー用のメモリセル(MCp1,MCp2,MCn1,MCn2)が接続される。
【0046】
MC1,MC2,MCp1,MCp2,MCn1,MCn2は、それぞれ異なるサブビット線SBLに接続され、サブビット線選択回路BSELを介してそれぞれ異なる書き込み系メインビット線WMBLに接続される。また、MC1のサブビット線SBLは読み出し列選択回路RSELを介してセンスアンプ回路SA1の差動入力端子の一方に接続され、MC2のSBLはRSELを介してSA1の差動入力端子の他方に接続される。なお、SA1周りは、詳細は後述するが、図3で述べたように正極側と負極側をそれぞれシングルデータ列として読み出せるようにするため、工夫がなされている。
【0047】
MCp1のSBLはRSELを介してセンスアンプ回路SA2の差動入力端子の一方に接続され、MCp2のSBLはRSELを介してSA2の差動入力端子の他方に接続される。MCn1のSBLはRSELを介してセンスアンプ回路SA3の差動入力端子の一方に接続され、MCn2のSBLはRSELを介してSA3の差動入力端子の他方に接続される。このように、パリティービットを相補ビット(ツインセル)で記憶し、センスアンプ回路を用いて差動で読み出すことで、パリティービットの信頼性を向上させることが可能になる。すなわち、ツインセルの情報を差動で判定することで、例えばシングルセルの情報を中間レベルを基準として判定する場合と比べてマージンが大きくなり、その分だけパリティービットの信頼性(データ保持特性)が向上する。なお、パリティービットは、相補ビット(ツインセル)で構成することが望ましいが、場合によってシングルビット(シングルセル)で構成することも可能である。この場合、信頼性が低下するものの、面積オーバヘッドの抑制が図れる。
【0048】
ワード線WLは、行デコード回路RDEC1によって駆動され、メモリゲート選択線MGL、ソース線SLおよびサブビット線選択回路BSELの選択信号は、行デコード回路RDEC2によって駆動される。RDEC1,RDEC2における選択動作は、読み出しアクセス時には図6のHACSPに供給されるアドレス情報等に従い、データの書き込み動作および消去動作では図6のLACSPに供給されるアドレス情報等に従う。各センスアンプ回路SA1〜SA3の出力信号は、それぞれ異なる読み出し系メインビット線RMBLに接続される。なお、実際には、SA1およびこれに対応するRMBLは、データのアクセス単位となるパラレルビット数(図1では(N+1)ビット分)が設けられる。
【0049】
出力バッファ回路OBFは、エラー処理回路ブロックERCBKを備える。ERCBKは、前述したメモリマットMMAT内のSA1〜SA3からの出力信号をRMBLを介して受け、図3で述べたような処理を行うことでエラー検出・エラー訂正を行う。すなわち、詳細は後述するが、ERCBKは、SA1を介してMC1を含む正極側のデータ列とMC2を含む負極側のデータ列を取得し、SA2を介して当該正極側のデータ列に対するパリティービット値を取得し、SA3を介して当該負極側のデータ列に対するパリティービット値を取得する。そして、ERCBKは、当該データ列に1ビットのエラーが存在する場合には当該エラーを訂正し、訂正後のデータ出力信号DO[0]〜DO[N]を図6の高速アクセスポートHACSPを介して高速バスHBSに出力する。
【0050】
書き込みデータラッチ回路WLTは、各書き込み系メインビット線WMBLにそれぞれ接続されるラッチ回路LT1,LT2,LTp1,LTn1を備え、当該ラッチ回路のラッチデータに基づいて各WMBLに対して選択的に書き込み電流を流す。なお、図7のWLTでは、MCp2のWMBLに接続されるラッチ回路(LTp2とする)とMCn2のWMBLに接続されるラッチ回路(LTn2とする)の記載を省略しているが、実際には存在する。書き込み列選択回路WSELは、WLT内の各ラッチ回路を選択的に入出力バッファ回路IOBFに接続すると共に、各ラッチ回路に接続されたWMBLを選択的にベリファイ回路VRFYに接続する。この際の選択信号は、列デコード回路CDECによって生成される。CDECの選択動作は、図6の低速アクセスポートLACSPに供給されるアドレス情報等に従う。
【0051】
ベリファイ回路VRFYは、各WMBLにそれぞれ接続されたベリファイ用センスアンプ回路VSAを備え、各VSAのベリファイ結果はIOBFに出力される。IOBFは、パリティー生成回路PRTYGを備え、図6の低速バスLBSから低速アクセスポートLACSPを介してデータ入力信号DI[0]〜DI[N]が入力され、またLACSPを介してLBSに向けてデータ出力信号DO[0]〜DO[N]を出力する。PRTYGは、DI[0]〜DI[N]を受けて正極用および負極用のパリティービット値を生成する。内部電源生成回路VGは、読み出し動作、書き込み動作、消去動作に必要な各種動作電源を生成する。
【0052】
《フラッシュメモリの全体動作》
図7のフラッシュメモリFMD_Dに対する書き込み動作および読み出し動作について簡単に説明する。まず、書き込み動作を行う際には、予め図6のフラッシュシーケンサFSEQの命令に応じてFMD_Dが図8(b)に示したような消去動作を行い、メモリセルMC1,MC2,MCp1,MCp2,MCn1,MCn2のしきい値電圧Vthを図8(c)に示すような低い状態にしておく。次いで、FSEQの命令に応じて、入出力バッファ回路IOBFが、データ入力信号DI[0]〜DI[N]に基づいて書き込みデータラッチ回路WLT内の各ラッチ回路の値を設定する。例えば、DI[0]に対応するツインセルがMC1,MC2であるものとして、DI[0]が‘1’の場合にはラッチ回路LT1に‘1’が設定され、ラッチ回路LT2に‘0’が設定される。逆に、DI[0]が‘0’の場合にはLT1に‘0’が設定され、LT2に‘1’が設定される。また、ラッチ回路LTp1,LTn1には、パリティー生成回路PRTYGによって生成されたパリティービット値がそれぞれ設定され、ラッチ回路LTp2,LTn2(図示せず)には当該パリティービット値を反転した値が設定される。
【0053】
ここで、‘0’が設定されたラッチ回路は、対応する書き込み系メインビット線WMBLに対して書き込み電流を所定の期間供給し、‘1’が設定されたラッチ回路は、対応するWMBLに対して書き込み電流の供給を行わない。したがって、例えばDI[0]が‘1’の場合には、LT2がMC2を対象にWMBLおよびサブビット線選択回路BSELを介して書き込み電流を供給し、その結果、MC2のVthが上昇する。続いて、FSEQの命令に応じてベリファイ動作が行われる。ベリファイ動作では、MC1,MC2,MCp1,MCp2,MCn1,MCn2の記憶データがBSELおよび各WMBLを介して読み出される。各WMBLに読み出されたデータはベリファイ用センスアンプ回路VSAによって判定され、書き込み電流が供給されたメモリセル(対応するラッチ回路に‘0’が設定されたメモリセル)のVthが十分なレベルに達したかが検証される。この検証結果は、IOBFを介してFSEQに通知され、仮に十分なレベルに達していない場合にはFSEQの命令に応じて再度書き込み電流の供給が行われる。このような動作の結果、図8(c)に示したような書き込み状態が実現される。
【0054】
一方、読み出し動作を行う際には、MC1,MC2の記憶データが読み出し列選択回路RSELを介してセンスアンプ回路SA1に入力され、MCp1,MCp2の記憶データがRSELを介してセンスアンプ回路SA2に入力され、MCn1,MCn2の記憶データがRSELを介してセンスアンプ回路SA3に入力される。SA1〜SA3は、当該入力信号を差動増幅し、読み出し系メインビット線RMBLに出力を行う。出力バッファ回路OBF内のエラー処理回路ブロックERCBKは、当該RMBLの情報に基づいてエラー検出・エラー訂正を行い、高速バスHBSに向けてデータ出力信号DO[0]〜DO[N]を出力する。
【0055】
《フラッシュメモリのメモリマット構成》
図9は、図7のフラッシュメモリにおけるメモリマットのレイアウト構成例を示す概略図である。図9に示すように、メモリマットMMATは、複数のメモリアレイMARYj[0,0]〜MARYj[M,N+2],MARYk[0,0]〜MARYk[M,N+2]および複数のセンスアンプ回路ブロックSABK[0,0]〜SABK[M,N+2]を備えている。SABK[0,0]〜SABK[M,N+2]は、ワード線の配列方向を行、ビット線(サブビット線)の配列方向を列として、アレイ状に「(M+1)行×(N+3)列」で配置される。同様に、MARYj[0,0]〜MARYj[M,N+2]はアレイ状に「(M+1)行×(N+3)列」で配置され、MARYk[0,0]〜MARYk[M,N+2]は、アレイ状に「(M+1)行×(N+3)列」で配置される。この際に、MARYj[0,0]とMARYk[0,0]はSABK[0,0]を行方向で挟む形で配置され、MARYj[0,1]とMARYk[0,1]はSABK[0,1]を行方向で挟む形で配置され、以降同様にしてMARYj[M,N+2]とMARYk[M,N+2]はSABK[M,N+2]を行方向で挟む形で配置される。
【0056】
この内、「(M+1)行×(N+1)列」でそれぞれ配置されるMARYj[0,0]〜MARYj[M,N],MARYk[0,0]〜MARYk[M,N]とSABK[0,0]〜SABK[M,N]は、データ領域となる。一方、「(M+1)行×2列」でそれぞれ配置されるMARYj[0,N+1]〜MARYj[M,N+2],MARYk[0,N+1]〜MARYk[M,N+2]とSABK[0,N+1]〜SABK[M,N+2]は、パリティー領域となる。この2列分のパリティー領域の内、(N+1)列側の領域は正極(Posi)用であり、(N+2)列側の領域は負極(Nega)用である。
【0057】
このような構成において、データ用およびパリティー用の各メモリアレイは、X本(例えば256本)のワード線WLと、当該ワード線と交差するように配置されるY本(例えば32本)のサブビット線SBLと、WLとSBLの交点に配置されるメモリセルとを備えている。WLは、同一行に配置されたメモリアレイを横断するように列方向に向けて延伸する。例えば、読み出し動作の際に、同一行となるMARYj[0,0]〜MARYj[0,N+2]上に配置される1本のWLが活性化されると、当該WLに接続される複数のメモリセルが選択される。また、このWLで選択された複数のメモリセルの内、図7の読み出し列選択回路RSELを介して、データ用のMARYj[0,0]〜MARYj[0,N]のそれぞれの中から1個のツインセル(MC1,MC2)が選択される。更にこれに加えて、RSELを介して、パリティー(正極)用のMARYj[0,N+1]の中から1個のツインセル(MCp1,MCp2)が選択され、パリティー(負極)用のMARYj[0,N+2]の中から1個のツインセル(MCn1,MCn2)が選択される。
【0058】
このようにしてデータ用の各MARYj[0,0]〜MARYj[0,N]から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたセンスアンプ回路ブロックSABK[0,0]〜SABK[0,N]内のセンスアンプ回路SA1でそれぞれ増幅され、対応する読み出し系メインビット線RMBL[0]〜RMBL[N]を介して出力される。このRMBL[0]〜RMBL[N]の信号によって、図1における(N+1)ビット分のパラレルデータ(PREDATp[0:N],PREDATn[0:N])が得られる。一方、パリティー(正極)用のMARYj[0,N+1]から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたSABK[0,N+1]内のSA2で増幅され、RMBL[N+1]を介して出力される。同様に、パリティー(負極)用のMARYj[0,N+2]から出力されたツインセルの情報は、当該メモリアレイに隣接配置されたSABK[0,N+2]内のSA3で増幅され、RMBL[N+2]を介して出力される。これによって、図1における正極用のパリティービット(SN1p)の値と負極用のパリティービット(SN2p)の値が得られる。
【0059】
なお、RMBL[0]〜RMBL[N+2]のそれぞれは、同一列に配置されたセンスアンプ回路ブロックを横断するように行方向に向けて延伸する。例えば、同一列となるSABK[0,0]〜SABK[M,0]上にはRMBL[0]が配置され、同様に、同一列となるSABK[0,N]〜SABK[M,N]上にはRMBL[N]が配置される。RMBL[0]には、SABK[0,0]〜SABK[M,0]内にそれぞれ含まれるSA1の出力ノードが共通に接続され、同様に、RMBL[N]には、SABK[0,N]〜SABK[M,N]内にそれぞれ含まれるSA1の出力ノードが共通に接続される。例えば、RMBL[0]を例として、読み出し動作時には1本のWLの活性化に応じてSABK[0,0]〜SABK[M,0]内における各SA1のいずれか1個の出力がRMBL[0]に出力され、他の出力はハイインピーダンス状態に制御される。また、各センスアンプ回路ブロックは、行方向に隣接配置された2個のメモリアレイを対象に増幅動作等を行う。例えば、MARYj[0,0]からのツインセル情報はSABK[0,0]で増幅され、MARYk[0,0]からのツインセル情報も同じくSABK[0,0]で増幅される。
【0060】
《センスアンプ回路ブロック周りの構成[1]》
図10は、図7および図9における各センスアンプ回路ブロック周りの概略構成例を示す回路図である。図10に示すように、センスアンプ回路ブロックSABKa(例えば図9のSABK[0,0])には、隣接する一方のメモリアレイ(例えば図9のMARYj[0,0])からの複数(ここでは32本)のサブビット線SBLj0<0>〜SBLj0<15>,SBLj1<0>〜SBLj1<15>が接続される。更に、当該SABKa(例えばSABK[0,0])には、隣接する他方のメモリアレイ(例えば図9のMARYk[0,0])からの複数(ここでは32本)のサブビット線SBLk0<0>〜SBLk0<15>,SBLk1<0>〜SBLk1<15>が接続される。
【0061】
この例では、一方のメモリアレイに対応するSBLj0<0>〜SBLj0<7>,SBLj1<0>〜SBLj1<7>が当該メモリアレイ内における正極用の各メモリセルに接続され、SBLj0<8>〜SBLj0<15>,SBLj1<8>〜SBLj1<15>が当該メモリアレイ内における負極用の各メモリセルに接続される。同様に、他方のメモリアレイに対応するSBLk0<0>〜SBLk0<7>,SBLk1<0>〜SBLk1<7>が当該メモリアレイ内における正極用の各メモリセルに接続され、SBLk0<8>〜SBLk0<15>,SBLk1<8>〜SBLk1<15>が当該メモリアレイ内における負極用の各メモリセルに接続される。
【0062】
SABKa(例えばSABK[0,0])は、センスアンプ回路SAと、読み出し列選択回路RSELj,RSELk,RSELjkと、8本の共通ビット線CBLj<0>〜CBLj<3>,CBLk<0>〜CBLk<3>と、8個のリファレンスメモリセルRMCを備えている。RSELjkは、図7の列デコード回路CDECから生成される8本の選択信号yrb<7:0>に応じて、8本の共通ビット線をSAの差動入力端子の一方又は他方に選択的に接続する。ここでは、SAの差動入力端子の一方には、CBLj<0>,CBLj<1>とCBLk<0>,CBLk<1>のいずれか1本が選択的に接続され、SAの差動入力端子の他方には、CBLj<2>,CBLj<3>とCBLk<2>,CBLk<3>のいずれか1本が選択的に接続される。
【0063】
CBLj<0>には、一方のメモリアレイの正極側に対応した16本のサブビット線中の8本がRSELjを介して接続され、CBLj<1>には、当該16本中の残りの8本がRSELjを介して接続される。CBLj<2>には、一方のメモリアレイの負極側に対応した16本のサブビット線中の8本がRSELjを介して接続され、CBLj<3>には、当該16本中の残りの8本がRSELjを介して接続される。CBLk<0>には、他方のメモリアレイの正極側に対応した16本のサブビット線中の8本がRSELkを介して接続され、CBLk<1>には、当該16本中の残りの8本がRSELkを介して接続される。CBLk<2>には、他方のメモリアレイの負極側に対応した16本のサブビット線中の8本がRSELkを介して接続され、CBLk<3>には、当該16本中の残りの8本がRSELkを介して接続される。
【0064】
RSELjは、図7のCDECから生成される8本の選択信号yraj<7:0>に応じて、CBLj<0>〜CBLj<3>のそれぞれに対して前述した8本のサブビット線のいずれか1本を接続する。RSELkは、図7のCDECから生成される8本の選択信号yrak<7:0>に応じて、CBLk<0>〜CBLk<3>のそれぞれに対して前述した8本のサブビット線のいずれか1本を接続する。8個のリファレンスメモリセルRMCは、前述した8本の共通ビット線CBLj<0>〜CBLj<3>,CBLk<0>〜CBLk<3>にそれぞれ接続される。各RMCは、対応する共通ビット線と接地電源電圧GNDの間にソース・ドレイン経路が直列接続されたPMOSトランジスタPQrとNMOSトランジスタNQrを備えている。NQrはゲートに固定電圧Vrefが印加されることで電流源として機能し、PQrはゲートに選択信号が印加されることでスイッチとして機能する。ここでは、CBLj<0>〜CBLj<3>に接続された4個のRMC内のPQrは選択信号refjによって共通に制御され、CBLk<0>〜CBLk<3>に接続された4個のRMC内のPQrは選択信号refkによって共通に制御される。
【0065】
《センスアンプ回路ブロック周りの動作[1]》
図10のような構成例を用いると、各種選択信号yrb<7:0>,yraj<7:0>,yrak<7:0>,refj,refkに応じて、一方のメモリアレイ(例えばMARYj[0,0])からの相補読み出し及びシングル読み出しと、他方のメモリアレイ(例えばMARYk[0,0])からの相補読み出しおよびシングル読み出しを実現できる。例えば、yraj<0>,yrak<0>とyrb<0>,yrb<2>がオンレベルに駆動された場合、SAの差動入力端子の一方には、図10の読み出し経路RT1に示すように、一方のメモリアレイ(例えばMARYj[0,0])における正極側の1本のサブビット線(SBLj0<0>)がCBLj<0>を介して接続される。この際に、SAの差動入力端子の他方には、図10の読み出し経路RT2に示すように、一方のメモリアレイ(例えばMARYj[0,0])における負極側の1本のサブビット線(SBLj0<8>)がCBLj<2>を介して接続される。これによって、SAではツインセルに対する相補読み出しが行われる。
【0066】
また、例えば、yraj<0>,yrak<0>とyrb<0>,yrb<6>とrefkがオンレベルに駆動された場合、SAの差動入力端子の一方には、図10の読み出し経路RT1に示すように、一方のメモリアレイ(例えばMARYj[0,0])における正極側の1本のサブビット線(SBLj0<0>)がCBLj<0>を介して接続される。この際に、SAの差動入力端子の他方には、図10の読み出し経路RT4に示すように、CBLk<2>に接続されたリファレンスメモリセルRMCが接続される。RMCは、例えば、正規のメモリセルが書き込み状態の際に流れる電流と消去状態(初期状態)の際に流れる電流の中間値を持つ電流を生成する。これによって、SAでは、正極側のメモリセルに対するシングル読み出しが行われる。なお、この際にCBLk<2>には、RMCに加えて他方のメモリアレイ(例えばMARYk[0,0])における負極側の1本のサブビット線(SBLk0<8>)が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【0067】
また、例えば、yraj<0>,yrak<0>とyrb<2>,yrb<4>とrefkがオンレベルに駆動された場合、SAの差動入力端子の他方には、図10の読み出し経路RT2に示すように、一方のメモリアレイ(例えばMARYj[0,0])における負極側の1本のサブビット線(SBLj0<8>)がCBLj<2>を介して接続される。この際に、SAの差動入力端子の一方には、図10の読み出し経路RT3に示すように、CBLk<0>に接続されたリファレンスメモリセルRMCが接続される。これによって、SAでは、負極側のメモリセルに対するシングル読み出しが行われる。なお、この際にCBLk<0>には、RMCに加えて他方のメモリアレイ(例えばMARYk[0,0])における正極側の1本のサブビット線(SBLk0<0>)が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【0068】
このように、正極側のデータ列と負極側のデータ列をそれぞれ個別にシングルモードで読み出し、加えて、正極側のデータ列のパリティービットに対応するツインセルを相補モードで読み出し、同様に負極側のパリティービットに対応するツインセルを相補モードで読み出すことで、前述した図3のエラー検出・エラー訂正処理が実現可能になる。ここで、当該シングルモードでの読み出しを実現するためには、通常の相補メモリ用のセンスアンプ回路に対して主にリファレンスメモリセルRMCを加えればよく、回路面積のオーバヘッドが抑制できる。また、当該センスアンプ回路をベリファイ時にも利用しているようなフラッシュメモリでは、RMCが既に備わっているような場合が有り、この場合、回路面積のオーバヘッドが更に抑制できる。
【0069】
《センスアンプ回路ブロック周りの構成[2]》
図11は、図10を変形した各センスアンプ回路ブロック周りの概略構成例を示す回路図である。図11において、センスアンプ回路ブロックSABKb(例えば図9のSABK[0,0])には、図10の場合と同様に、隣接する一方のメモリアレイ(例えば図9のMARYj[0,0])からの複数(ここでは32本)のサブビット線SBLj0<0>〜SBLj0<15>,SBLj1<0>〜SBLj1<15>が接続される。更に、当該SABKbには、図10の場合と同様に、隣接する他方のメモリアレイ(例えば図9のMARYk[0,0])からの複数(ここでは32本)のサブビット線SBLk0<0>〜SBLk0<15>,SBLk1<0>〜SBLk1<15>が接続される。
【0070】
SABKb(例えばSABK[0,0])は、図10の場合と同様の読み出し列選択回路RSELj,RSELk、8本の共通ビット線CBLj<0>〜CBLj<3>,CBLk<0>〜CBLk<3>、および8個のリファレンスメモリセルRMCを備えている。これに加えて、当該SABKbは、図10の場合と異なり3個のセンスアンプ回路SAm,SAp,SAnを備え、これに伴い図10の場合と異なる読み出し列選択回路RSELjk2を備えている点が主要な特徴となっている。RSELjk2は、図7の列デコード回路CDECから生成される4本の選択信号yrb<3:0>に応じて、8本の共通ビット線を3個のSAm,SAp,SAnの差動入力端子の一方又は他方に選択的に接続する。
【0071】
具体的には、RSELjk2は、yrb<0>がオンレベルに駆動された際、SAmの差動入力端子の一方にCBLj<0>を、他方にCBLj<2>を接続し、SApの差動入力端子の一方にCBLj<0>を、他方にCBLk<2>を接続し、SAnの差動入力端子の一方にCBLk<0>を、他方にCBLj<2>を接続する。すなわち、相補読み出し用のSAmには、ツインセルの正極データ(CBLj<0>に対応)と負極データ(CBLj<2>)が接続される。正極側のシングル読み出し用のSApには、ツインセルの正極データ(CBLj<0>に対応)とリファレンスメモリセル(CBLk<2>に対応)が接続される。負極側のシングル読み出し用のSAnには、リファレンスメモリセル(CBLk<0>に対応)とツインセルの負極データ(CBLj<2>に対応)が接続される。
【0072】
また、RSELjk2は、yrb<1>がオンレベルに駆動された際、SAmの差動入力端子の一方にCBLj<1>を、他方にCBLj<3>を接続し、SApの差動入力端子の一方にCBLj<1>を、他方にCBLk<3>を接続し、SAnの差動入力端子の一方にCBLk<1>を、他方にCBLj<3>を接続する。すなわち、相補読み出し用のSAmには、ツインセルの正極データ(CBLj<1>に対応)と負極データ(CBLj<3>)が接続される。正極側のシングル読み出し用のSApには、ツインセルの正極データ(CBLj<1>に対応)とリファレンスメモリセル(CBLk<3>に対応)が接続される。負極側のシングル読み出し用のSAnには、リファレンスメモリセル(CBLk<1>に対応)とツインセルの負極データ(CBLj<3>に対応)が接続される。
【0073】
さらに、RSELjk2は、yrb<2>がオンレベルに駆動された際、SAmの差動入力端子の一方にCBLk<0>を、他方にCBLk<2>を接続し、SApの差動入力端子の一方にCBLk<0>を、他方にCBLj<2>を接続し、SAnの差動入力端子の一方にCBLj<0>を、他方にCBLk<2>を接続する。すなわち、前述したyrb<0>がオンレベルに駆動された場合に対して「j」と「k」を入れ替えたような処理を行う。同様に、RSELjk2は、yrb<3>がオンレベルに駆動された際、前述したyrb<1>がオンレベルに駆動された場合に対して「j」と「k」を入れ替えたような処理を行う。
【0074】
《センスアンプ回路ブロック周りの動作[2]》
図11のような構成例を用いると、各種選択信号yrb<3:0>,yraj<7:0>,yrak<7:0>,refj,refkに応じて、一方のメモリアレイ(例えばMARYj[0,0])のツインセルからの相補読み出しと、正極側セルからのシングル読み出しと、負極側セルからのシングル読み出しとを並行して行うこと可能になる。同様に、他方のメモリアレイ(例えばMARYk[0,0])のツインセルからの相補読み出しと、正極側セルからのシングル読み出しと、負極側セルからのシングル読み出しとを並行して行うこと可能になる。
【0075】
例えば、yraj<0>,yrak<0>,yrb<0>,refkがオンレベルに駆動された場合、SAmの差動入力端子の一方には、図11の読み出し経路RT1に示すように、一方のメモリアレイ(例えばMARYj[0,0])における正極側の1本のサブビット線(SBLj0<0>)がCBLj<0>を介して接続される。この際に、SAmの差動入力端子の他方には、図11の読み出し経路RT2に示すように、一方のメモリアレイ(例えばMARYj[0,0])における負極側の1本のサブビット線(SBLj0<8>)がCBLj<2>を介して接続される。これによって、SAmではツインセルに対する相補読み出しが行われる。
【0076】
また、これと並行して、SApの差動入力端子の一方には、図11の読み出し経路RT1に示すように、一方のメモリアレイ(例えばMARYj[0,0])における正極側の1本のサブビット線(SBLj0<0>)がCBLj<0>を介して接続される。この際に、SApの差動入力端子の他方には、図11の読み出し経路RT4に示すように、CBLk<2>に接続されたリファレンスメモリセルRMCが接続される。RMCは、例えば、正規のメモリセルが書き込み状態の際に流れる電流と消去状態(初期状態)の際に流れる電流の中間値を持つ電流を生成する。これによって、SApでは、正極側のメモリセルに対するシングル読み出しが行われる。なお、この際にCBLk<2>には、RMCに加えて他方のメモリアレイ(例えばMARYk[0,0])における負極側の1本のサブビット線(SBLk0<8>)が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【0077】
更に、これらと並行して、SAnの差動入力端子の他方には、図11の読み出し経路RT2に示すように、一方のメモリアレイ(例えばMARYj[0,0])における負極側の1本のサブビット線(SBLj0<8>)がCBLj<2>を介して接続される。この際に、SAnの差動入力端子の一方には、図11の読み出し経路RT3に示すように、CBLk<0>に接続されたリファレンスメモリセルRMCが接続される。これによって、SAnでは、負極側のメモリセルに対するシングル読み出しが行われる。なお、この際にCBLk<0>には、RMCに加えて他方のメモリアレイ(例えばMARYk[0,0])における正極側の1本のサブビット線(SBLk0<0>)が接続されるが、当該サブビット線はワード線が非選択であるためフローティング状態となっており、容量として機能する。
【0078】
このように、正極側のデータ列と負極側のデータ列をそれぞれ個別にシングルモードで読み出し、加えて、正極側のデータ列のパリティービットに対応するツインセルを相補モードで読み出し、同様に負極側のパリティービットに対応するツインセルを相補モードで読み出すことで、前述した図3のエラー検出・エラー訂正処理が実現可能になる。ここで、前述した図10の構成例を用いた場合、正極側のシングルモード読み出しと負極側のシングルモード読み出しをシリアルに行う必要があるが、図11の構成例ではパラレルで読み出すことが可能であるため、図10の構成例と比較して読み出し時間の短縮が図れる。
【0079】
なお、図3の処理を用いる場合、図9のデータ領域に含まれる各センスアンプ回路ブロックでは特に相補読み出しを行う必要は無いため、図11のSAm並びにこれに伴うRSELjk2上の選択経路は省略することも可能である。ただし、例えばフラッシュメモリに前述したエラー検出・訂正機能を有効・無効に設定できる機能を設け、この無効時にSAmを用いるようなことも可能である。また、例えば、エラー検出は行われたがエラー訂正が失敗したような場合(例えば図3のS108のような場合)にSAmからの出力をデータ出力信号として用いるようなことも可能である。また、電源起動時に図3のようなフローでエラー検出の有無を実施し、それ以外の高速動作が要求される時はSAmからの相補読み出しによる出力データを有効にする事も可能である。更に、図3の処理を用いる場合、図9のパリティー領域に含まれる各センスアンプ回路ブロックでは特にシングル読み出しを行う必要は無いため、図11のSAp,SAn並びにこれに伴うRSELjk2上の選択経路は省略することも可能である。
【0080】
《パリティー生成回路の構成》
図12(a)は、図7におけるパリティー生成回路の詳細な構成例を示す回路図であり、図12(b)は、図12(a)における加算回路の動作例を示す真理値表である。図12(a)のパリティー生成回路PRTYGは、相補データ生成回路CDS[0]〜CDS[N]と、正極用のN個の加算回路ADDp[1]〜ADDp[N]およびインバータ回路IVpと、負極用のN個の加算回路ADDn[1]〜ADDn[N]およびインバータ回路IVnを備えている。CDS[0]〜CDS[N]は、データ入力信号DI[0]〜DI[N]から正極側のデータ入力信号DIp[0]〜DIp[N]とその反転データとなる負極側のデータ入力信号DIn[0]〜DIn[N]を生成する。
【0081】
ADDp[1]にはDIp[0]とDIp[1]が入力され、ADDp[2]にはADDp[1]の加算結果(EXOR(排他的論理和)演算結果)とDIp[2]が入力され、以降同様にして、ADDp[N]にはADDp[N−1]の加算結果とDIp[N]が入力される。IVpは、ADDp[N]の加算結果を反転して正極側のパリティービットPRTYBITp_Wを生成する。これによって、PRTYBITp_Wとして奇数パリティーの値が得られる。同様に、ADDn[1]にはDIn[0]とDIn[1]が入力され、ADDn[2]にはADDn[1]の加算結果(EXOR演算結果)とDIn[2]が入力され、以降同様にして、ADDn[N]にはADDn[N−1]の加算結果とDIn[N]が入力される。IVnは、ADDn[N]の加算結果を反転して負極側のパリティービットPRTYBITn_Wを生成する。これによって、PRTYBITn_Wとして奇数パリティーの値が得られる。なお、偶数パリティーを用いる場合にはIVp,IVnを省略すればよく、また、各加算回路はEXOR演算回路に置き換えることも可能である。
【0082】
《エラー処理回路ブロックの詳細》
図13は、図7におけるエラー処理回路ブロックの詳細な動作例を示す真理値表である。図14は、図7におけるエラー処理回路ブロックの詳細な構成例を示す回路図である。図14に示すように、エラー処理回路ブロックERCBKは、正極用のパリティーチェック回路PRTYCHKCTpと、負極用のパリティーチェック回路PRTYCHKCTnと、(N+1)個のエラー処理回路ERC[0]〜ERC[N]を備えている。PRTYCHKCTpは、図10又は図11の回路を介して正極側からシングルモードで読み出された(N+1)ビットのデータ列(プリデータ信号PREDATp[0]〜PREDATp[N])と、正極側のパリティービットPRTYBITp_Rを入力としてパリティーチェックを行う。PRTYBITp_Rは、図12(a)の回路によって生成されたのちメモリセル(ツインセル)に書き込まれているPRTYBITp_Wを読み出したものである。
【0083】
PRTYCHKCTpは、N個のEXOR演算回路EORp[1]〜EORp[N]と、1個のEXNOR(排他的反転論理和)演算回路ENRppを備える。EORp[1]〜EORp[N]は、PREDATp[0]〜PREDATp[N]の(N+1)入力に対するEXOR演算を行う。この例では、EORp[1]がPREDATp[0]とPREDATp[1]の演算を行い、EORp[2]がEORp[1]の演算結果とPREDATp[2]の演算を行い、以降同様にして、EORp[N]がEORp[N−1]の演算結果とPREDATp[N]の演算を行う。ENRppは、このPREDATp[0]〜PREDATp[N]のEXOR演算結果(EORp[N]の出力)とPRTYBITp_RのEXNOR演算を行い、その結果をパリティー判定信号PRTYCHKpとして出力する。
【0084】
同様に、PRTYCHKCTnは、図10又は図11の回路を介して負極側からシングルモードで読み出された(N+1)ビットのデータ列(プリデータ信号PREDATn[0]〜PREDATn[N])と、負極側のパリティービットPRTYBITn_Rを入力としてパリティーチェックを行う。PRTYBITn_Rは、図12(a)の回路によって生成されたのちメモリセル(ツインセル)に書き込まれているPRTYBITn_Wを読み出したものである。PRTYCHKCTnは、N個のEXOR演算回路EORn[1]〜EORn[N]と、1個のEXNOR(排他的反転論理和)演算回路ENRnnを備える。EORn[1]〜EORn[N]は、前述した正極側の場合と同様に、PREDATn[0]〜PREDATn[N]のEXOR演算結果を生成し、ENRnnは、このEXOR演算結果とPRTYBITn_RのEXNOR演算を行い、その結果をパリティー判定信号PRTYCHKnとして出力する。
【0085】
ERC[0]は、正極データとなるPREDATp[0]と負極データとなるPREDATn[0]と、PRTYCHKCTpからのパリティー判定信号PRTYCHKpと、PRTYCHKCTnからのパリティー判定信号PRTYCHKnを入力として動作する。ERC[0]は、1個のEXNOR演算回路ENR1と、3個のアンド演算回路AD1〜AD3と、1個のオア演算回路OR1と、3個のEXOR演算回路EOR1〜EOR3を備え、これによって前述した入力信号を論理演算し、5個の出力信号を生成する。5個の出力信号は、それぞれ、正極側データ出力信号DOp[0]、負極側データ出力信号DOn[0]、エラー検出信号ERRPOT[0]、エラー訂正失敗信号ERCERR[0]、エラー訂正成功信号ERCSUC[0]である。
【0086】
ERC[N]は、正極データとなるPREDATp[N]と負極データとなるPREDATn[N]と、ERC[0]と同様に、PRTYCHKCTpからのパリティー判定信号PRTYCHKpおよびPRTYCHKCTnからのパリティー判定信号PRTYCHKnを入力として動作する。ERC[N]は、ERC[0]と同様の内部回路を備え、これによって前述した入力信号を論理演算し、5個の出力信号を生成する。5個の出力信号は、それぞれ、正極側データ出力信号DOp[N]、負極側データ出力信号DOn[N]、エラー検出信号ERRPOT[N]、エラー訂正失敗信号ERCERR[N]、エラー訂正成功信号ERCSUC[N]である。なお、ERC[1]〜ERC[N−1]に関してもERC[N]と同様である。
【0087】
ERC[0]〜ERC[N]のそれぞれの内部回路は、図13の真理値表に基づいた動作を行う。図13において、まず、正極データとなるPREDATpと負極データとなるPREDATnをEXNOR演算することで、これらが相補データとなっているか否かが判定される(図13、図14の信号CJに対応)。このCJとPRTYCHKpのアンド演算を行うことでエラーが正極側か否かが判定され(図13、図14の信号ERRpに対応)、CJとPRTYCHKnのアンド演算を行うことでエラーが負極側か否かが判定される(図13、図14の信号ERRnに対応)。したがって、ERRpとPREDATpのEXOR演算を行うことでエラー訂正後の正極側データ出力信号DOpを生成することができ、ERRnとPREDATnのEXOR演算を行うことでエラー訂正後の負極側データ出力信号DOnが生成することができる。
【0088】
また、PRTYCHKpとPRTYCHKnとCJのオア演算を行うことでエラーの有無を表すエラー検出信号ERRPOTが生成される。更に、PRTYCHPpとPRTYCHPnのEXOR演算結果と、CJとをアンド演算することでエラー訂正が成功したか否かを表すエラー訂正成功信号ERCSUCが生成され、ERRPOTと、ERCSUCの反転信号をアンド演算することで、エラー訂正が失敗したか否かを表すエラー訂正失敗信号ERCERRが生成される。ERRPOTは、パリティーチェック結果で異常が検出された場合かあるいは相補である筈のデータが相補でない場合に「1」(エラー有り)となり、それ以外の場合(パリティーチェック結果が正常かつ相補データが相補である)に「0」(エラー無し)となる。ERCSUCは、相補である筈のデータが相補でなく、かつ正極側と負極側のパリティーチェック結果の内の一方のみが異常となっている場合に「1」(エラー訂正成功)となる。したがって、DOp,DOnが正しく得られるのは、ERRPOTが「0」(エラー無し)の場合か、ERCSUCが「1」(エラー訂正成功)の場合かである。これらの場合にはERCERRが「0」となり、それ以外の場合にはERCERRが「1」となるため、ERCERRによってDOp,DOnの信頼性を識別できる。
【0089】
この図13および図14の説明から判るように、当該エラー処理回路ブロックERCBKは、前述した図3の処理内容を実行する回路となっている。また、図12のパリティー生成回路PRTYGおよび図14のエラー処理回路ブロックERCBKから判るように、本実施の形態のエラー検出・エラー訂正機能で必要とされる各種演算処理は、一般的なハミングコード(ECCコード)を用いる場合と比較して簡素であり、これに伴い当該演算回路の回路面積オーバヘッドも十分に抑制される。その結果、データの信頼性を低コストで向上させることが可能になる。
【0090】
以上、本実施の形態2の半導体装置を用いることで、実施の形態1の場合と同様に、代表的には、データの信頼性の向上が可能となり、また、当該効果を低コストで得ることが可能になる。更に、本実施の形態のエラー検出・エラー訂正機能をマイクロコンピュータ等に内蔵されたデータ用の不揮発性メモリブロック等に適用することで、前述したような効果をより顕著に得ることが可能になる。
【0091】
(実施の形態3)
本実施の形態3では、前述した実施の形態1で述べたエラー検出・エラー訂正機能のうちの一部の機能のみを備えた半導体装置(記憶装置)について説明する。
【0092】
《メモリユニットの概略構成および概略動作[2]》
図15は、本発明の実施の形態3による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。図15に示すメモリユニットは、図1の構成例と同様に、(N+1)ビットの記憶ノードSN1[0]〜SN1[N]を持つメモリ領域MEM1と、(N+1)ビットの記憶ノードSN2[0]〜SN2[N]を持つメモリ領域MEM2を備え、更に、図1とは異なるエラー処理回路ブロックERCBK2を備えている。MEM1とMEM2は、図1の構成例と同様にMEM1を正極(Posi)用、MEM2を負極(Nega)用とする相補メモリを構成する。
【0093】
《エラー処理動作[2]》
図16は、図15におけるエラー処理回路ブロックの主要な動作例を示すフロー図である。図16に示すように、エラー処理回路ブロックERCBK2は、まず、正極(Posi)用のシングルデータ列となるプリデータ信号(図15のPREDATp[0]〜PREDATp[N])を読み出す(S201)。同様に、負極(Nega)用のシングルデータ列となるプリデータ信号(図15のPREDATn[0]〜PREDATn[N])を読み出す(S202)。次いで、ERCBK2は、正極用のプリデータ信号(PREDATp[0]〜PREDATp[N])と負極用のプリデータ信号(PREDATn[0]〜PREDATn[N])の一致・不一致を各ビット毎に判定する(S203)。全てのビットが不一致であれば、相補データが正常に記憶されていることになるためエラー無しと判定し(S205)、一致するビットが存在する場合には、エラー有りと判定する(S204)。
【0094】
このように、本実施の形態3の半導体装置(記憶装置)は、相補メモリを利用して、各ビットのエラー有無を判定していることが特徴となっている。このエラー有無の判定は、図15の例ではEXNOR演算回路ENR10によって行われ、ENR10はその判定結果を(N+1)ビットのエラー検出信号ERRPOT[0:N]として出力している。また、図15の例では、正極側のプリデータ信号と負極側のプリデータ信号の各ビットが差動増幅回路DAMPによって増幅され、DAMPはその増幅結果を(N+1)ビットのデータ出力信号DO[0:N]として出力している。例えば、ある読み出しサイクルにおいて、ERRPOT[0:N]のいずれかのビットに「1」(一致ビット有り)が出力された場合、当該サイクルにおけるDO[0:N]の信憑性が疑わしいことになり、その旨を読み出し要求元等に伝達することが可能になる。
【0095】
以上、本実施の形態3の半導体装置(記憶装置)を用いると、図15から判るように、通常の相補メモリの構成に対してEXNR演算回路等を加えることでエラー検出が可能になるため、代表的には、データの信頼性を向上させることができ、また当該効果を低コストで実現することが可能になる。
【0096】
(実施の形態4)
本実施の形態4では、前述した実施の形態1の構成例を変形した構成例について説明する。
【0097】
《メモリユニットの概略構成および概略動作[3]》
図17は、本発明の実施の形態4による半導体装置(記憶装置)において、それに含まれるメモリユニットの構成例を示す概略図である。図17に示すメモリユニットは、図1の構成例と同様に、メモリ領域MEM1,MEM2と、パリティー生成回路PRTYG1,PRTYG2と、パリティー用記憶ノードSN1p,SN2pを備え、加えて図1とは異なるエラー処理回路ブロックERCBK3を備えている。図1との相違点は、MEM1が備える(N+1)ビットの記憶ノードSN1[0]〜SN1[N]とMEM2が備える(N+1)ビットの記憶ノードSN2[0]〜SN2[N]に同一のデータが書き込まれ(すなわちデータが多重化され)、これに応じてERCBK3の処理内容が若干変更されている点にある。以下、実施の形態1と重複する説明は省略し、相違点に着目して説明を行う。
【0098】
《エラー処理動作[3]》
図18は、図17におけるエラー処理回路ブロックの動作例を示すフロー図である。図18に示すように、エラー処理回路ブロックERCBK3は、まず、MEM1からのシングルデータ列となるデータ信号(図17のDATA1[0]〜DATA1[N])と、MEM1用のパリティービット(図17のSN1pの情報)を読み出し、パリティーチェックを行う(S301)。ここでは、当該パリティーチェック結果(Parity Check 1)が正常な場合を「Parity Check 1=0」と表現し、異常な場合を「Parity Check 1=1」と表現する。
【0099】
次いで、ERCBK3は、MEM2からのシングルデータ列となるデータ信号(図17のDATA2[0]〜DATA2[N])と、MEM2用のパリティービット(図17のSN2pの情報)を読み出し、パリティーチェックを行う(S302)。ここでは、当該パリティーチェック結果(Parity Check 2)が正常な場合を「Parity Check 2=0」と表現し、異常な場合を「Parity Check 2=1」と表現する。続いて、ERCBK3は、DATA1[0:N]とDATA2[0:N]の一致・不一致を各ビット毎に判定する(S303)。全てのビットが一致であれば、正常に記憶されていることになるためエラー無しと判定する(S309)。一方、不一致ビットが存在する場合には、ERCBK3は、S301におけるパリティーチェック結果(Parity Check 1)が異常(「1」)か正常(「0」)かを判定する(S304)。異常であれば、ERCBK3は、DATA1[0:N]の中で、S303での不一致ビットが誤データである判定し(S306)、当該ビットを訂正する(S310)。
【0100】
また、ERCBK3は、S304におけるパリティーチェック結果(Parity Check 1)が正常(「0」)であった場合には、S302におけるパリティーチェック結果(Parity Check 2)が異常(「1」)か正常(「0」)かを判定する(S305)。異常であれば、ERCBK3は、DATA2[0:N]の中で、S303での不一致ビットが誤データであると判定し(S307)、当該ビットを訂正する(S310)。一方、S305の結果が正常であれば、ERCBK3は、エラーは存在するものの訂正は不可と判定する(S308)。なお、S306,S307,S310では、S303での不一致ビットが1ビットである場合を前提とし、複数ビットの場合には、S308の場合と同様にエラーは存在するものの訂正は不可と判定される。
【0101】
図19(a)〜図19(e)は、図18の動作例を用いた場合のそれぞれ異なる具体的な処理結果の一例を示す説明図である。まず、図19(a)には、図18のS309に対応するエラー無しの状態が示されている。ここでは、DATA1[0:N]とDATA2[0:N]における各ビットが同一データとなっており、DATA1[0:N]およびDATA2[0:N]に対するパリティーチェック結果(この例では奇数パリティを用いている)も共に正常である。
【0102】
図19(b)には、図18のS306に対応し、DATA1[0:N]中の1ビットが「0」から「1」に化けた状態が示されている。ここでは、DATA1[0:N]とDATA2[0:N]における[0]ビット目が同一データでは無く、DATA1[0:N]に対するパリティーチェック結果が異常となっている。したがって、DATA1[0:N]の[0]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図19(c)には、図18のS306に対応し、DATA1[0:N]中の1ビットが「1」から「0」に化けた状態が示されている。ここでは、DATA1[0:N]とDATA2[0:N]における[1]ビット目が同一データでは無く、DATA1[0:N]に対するパリティーチェック結果が異常となっている。したがって、DATA1[0:N]の[1]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【0103】
図19(d)には、図18のS307に対応し、DATA2[0:N]中の1ビットが「0」から「1」に化けた状態が示されている。ここでは、DATA1[0:N]とDATA2[0:N]における[0]ビット目が同一データでは無く、DATA2[0:N]に対するパリティーチェック結果が異常となっている。したがって、DATA2[0:N]の[0]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。図19(e)には、図18のS307に対応し、DATA2[0:N]中の1ビットが「1」から「0」に化けた状態が示されている。ここでは、DATA1[0:N]とDATA2[0:N]における[1]ビット目が同一データでは無く、DATA2[0:N]に対するパリティーチェック結果が異常となっている。したがって、DATA2[0:N]の[1]ビット目が誤データであると判断でき、当該データを反転させることでエラー訂正が実現できる。
【0104】
以上、本実施の形態4の半導体装置(記憶装置)を用いることで、代表的には、実施の形態1の場合と同様に、データの信頼性を向上させることができ、また当該効果を低コストで実現することが可能になる。例えば、ハードディスク等の記憶装置では、RAID(Redundant Arrays of Inexpensive Disks)1等で知られているように、データを二重化して記憶する場合がある。特に、このような場合に本実施の形態4の半導体装置(記憶装置)を適用することが有益となる。
【0105】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【0106】
例えば、ここでは具体例としてフラッシュメモリへの適用例を示したが、勿論、これに限定されるものではなく、各種記憶ユニット全般に対して広く適応可能である。例えば、記憶素子の結晶状態を変化させてその抵抗値によって情報を記憶する相変化メモリや、記憶素子の磁化状態を変化させてその抵抗値によって情報を記憶する磁気抵抗メモリ(MRAM)等の各種半導体不揮発性メモリに対して同様に適用可能である。また、DRAM(Dynamic Random Access Memory)等を代表とする各種半導体揮発性メモリや、所謂ストレージと呼ばれる各種外部記憶装置等に対しても同様に適用可能である。
【符号の説明】
【0107】
AD アンド演算回路
ADD 加算回路
BL ビット線
BSEL サブビット線選択回路
BSIF バスインタフェース回路
CBL 共通ビット線
CDEC 列デコード回路
CDS 相補データ生成回路
CG コントロールゲート
CJ,ERR 信号
CPU 中央処理ユニット
DAMP 差動増幅回路
DATA データ信号
DI データ入力信号
DMAC ダイレクトメモリアクセスコントローラ
DO データ出力信号
Din,Dout,XTAL,EXTAL,STBY,RES、Vcc,Vss 外部端子
ENR EXNOR演算回路
EOR EXOR演算回路
ERC エラー処理回路
ERCBK エラー処理回路ブロック
ERCERR エラー訂正失敗信号
ERCSUC エラー訂正成功信号
ERRPOT エラー検出信号
FMD フラッシュメモリ
FMDL フラッシュメモリモジュール
FSEQ フラッシュシーケンサ
HACSP 高速アクセスポート
HBS 高速バス
IOBF 入出力バッファ回路
IV インバータ回路
LACSP 低速アクセスポート
LBS 低速バス
LT ラッチ回路
MARY メモリアレイ
MC メモリセル
MCU マイクロコンピュータ
MEM メモリ領域
MG メモリゲート
MGL メモリゲート選択線
MMAT メモリマット
NQr NMOSトランジスタ
OBF 出力バッファ回路
OR オア演算回路
PLL クロック生成回路
PORT 外部入出力ポート
PQr PMOSトランジスタ
PREDAT プリデータ信号
PRTYBIT パリティービット
PRTYCHK パリティー判定信号
PRTYCHKCT パリティーチェック回路
PRTYG パリティー生成回路
RAM ランダムアクセスメモリ
RDEC 行デコード回路
RMBL 読み出し系メインビット線
RMC リファレンスメモリセル
RSEL 読み出し列選択回路
RT 読み出し経路
SA センスアンプ回路
SABK センスアンプ回路ブロック
SBL サブビット線
SL ソース線
SN 記憶ノード
TMR タイマ
VG 内部電源生成回路
VRFY ベリファイ回路
VSA ベリファイ用センスアンプ回路
WELL ウェル領域
WL ワード線
WLT 書き込みデータラッチ回路
WMBL 書き込み系メインビット線
WSEL 書き込み列選択回路
yrb,yraj,yrak,refj,refk 選択信号

【特許請求の範囲】
【請求項1】
N(Nは1以上の整数)ビットのデータを記憶し、書き込み時にNビットの第1書き込みデータが入力され、読み出し時にNビットの第1読み出しデータを出力するN個の第1記憶ノードと、
Nビットのデータを記憶し、前記書き込み時にNビットの第2書き込みデータが入力され、前記読み出し時にNビットの第2読み出しデータを出力するN個の第2記憶ノードと、
前記書き込み時に、Nビットの前記第1書き込みデータを対象として第1パリティーデータを生成し、Nビットの前記第2書き込みデータを対象として第2パリティーデータを生成するパリティー生成回路と、
前記第1および第2パリティーデータを記憶する第1および第2パリティー記憶ノードと、
エラー処理回路とを備え、
Nビットの前記第2書き込みデータは、Nビットの前記第1書き込みデータの反転データであり、
前記エラー処理回路は、
Nビットの前記第1読み出しデータとNビットの前記第2読み出しデータの一致・不一致を各ビット番号毎に比較する第1処理と、
Nビットの前記第1読み出しデータと前記第1パリティーデータを用いてパリティー判定を行う第2処理と、
Nビットの前記第2読み出しデータと前記第2パリティーデータを用いてパリティー判定を行う第3処理と、
前記第1処理で一致するビット番号が1個存在し、かつ前記第2処理の判定結果が異常であり前記第3処理の判定結果が正常な場合に、Nビットの前記第1読み出しデータにおける当該ビット番号を誤りと判定し、前記第1処理で一致するビット番号が1個存在し、かつ前記第3処理の判定結果が異常であり前記第2処理の判定結果が正常な場合に、Nビットの前記第2読み出しデータにおける当該ビット番号を誤りと判定する第4処理と、
前記第4処理で誤りと判定されたビットを訂正する第5処理とを実行することを特徴とする半導体装置。
【請求項2】
請求項1記載の半導体装置において、
前記第1パリティー記憶ノードは、
前記第1パリティーデータを正極で記憶する第1正極パリティー記憶ノードと、
前記第1パリティーデータを負極で記憶する第1負極パリティー記憶ノードとを備え、
前記第2パリティー記憶ノードは、
前記第2パリティーデータを正極で記憶する第2正極パリティー記憶ノードと、
前記第2パリティーデータを負極で記憶する第2負極パリティー記憶ノードとを備え、
前記エラー処理回路の前記第2処理では、前記第1パリティーデータとして前記第1正極パリティー記憶ノードの出力信号と前記第1負極パリティー記憶ノードの出力信号の差動増幅結果が用いられ、
前記エラー処理回路の前記第3処理では、前記第2パリティーデータとして前記第2正極パリティー記憶ノードの出力信号と前記第2負極パリティー記憶ノードの出力信号の差動増幅結果が用いられることを特徴とする半導体装置。
【請求項3】
請求項1記載の半導体装置において、
前記エラー処理回路は、さらに、前記第5処理で訂正が行われる第1の場合か、あるいは前記第1処理で一致するビット番号が存在せず、なおかつ前記第2および第3処理の判定結果が共に正常である第2の場合に第1論理レベルの第1信号を出力し、前記第1および第2の場合以外の場合に第2論理レベルの前記第1信号を出力することを特徴とする半導体装置。
【請求項4】
請求項1記載の半導体装置において、
N個の前記第1記憶ノードとN個の前記第2記憶ノードのそれぞれは、フラッシュメモリセルであることを特徴とする半導体装置。
【請求項5】
メモリユニットを備え、
前記メモリユニットは、
ワード線と、
前記ワード線と交差するN(Nは1以上の整数)本の第1ビット線、N本の第2ビット線、第3ビット線、および第4ビット線と、
前記ワード線とN本の前記第1ビット線の交点部分にそれぞれ配置されるN個の第1メモリセルと、
前記ワード線とN本の前記第2ビット線の交点部分にそれぞれ配置されるN個の第2メモリセルと、
前記ワード線と前記第3および第4ビット線の交点にそれぞれ配置される第3および第4メモリセルと、
Nビットの入力データを対象に第1パリティー書き込みデータを生成し、Nビットの前記入力データの反転データとなるNビットの反転入力データを対象に第2パリティー書き込みデータを生成するパリティー生成回路と、
書き込み動作に伴い前記ワード線が活性化された際に、Nビットの前記入力データをN本の前記第1ビット線を介してN個の前記第1メモリセルに書き込み、Nビットの前記反転入力データをN本の前記第2ビット線を介してN個の前記第2メモリセルに書き込み、前記第1および第2パリティー書き込みデータを前記第3および第4ビット線を介して前記第3および第4メモリセルに書き込む第1制御回路と、
読み出し動作に伴い前記ワード線が活性化された際に、N個の前記第1メモリセルからN本の前記第1ビット線を介して読み出された信号を増幅することでNビットの第1読み出しデータを出力し、N個の前記第2メモリセルからN本の前記第2ビット線を介して読み出された信号を増幅することでNビットの第2読み出しデータを出力し、前記第3および第4メモリセルから前記第3および第4ビット線を介して読み出された信号をそれぞれ増幅することで第1および第2パリティー読み出しデータを出力する第2制御回路と、
エラー処理回路とを有し、
前記エラー処理回路は、
Nビットの前記第1読み出しデータとNビットの前記第2読み出しデータの一致・不一致を各ビット番号毎に比較する第1処理と、
Nビットの前記第1読み出しデータと前記第1パリティー読み出しデータを用いてパリティー判定を行う第2処理と、
Nビットの前記第2読み出しデータと前記第2パリティー読み出しデータを用いてパリティー判定を行う第3処理と、
前記第1処理で一致するビット番号が1個存在し、かつ前記第2処理の判定結果が異常であり前記第3処理の判定結果が正常な場合に、Nビットの前記第1読み出しデータにおける当該ビット番号を誤りと判定し、前記第1処理で一致するビット番号が1個存在し、かつ前記第3処理の判定結果が異常であり前記第2処理の判定結果が正常な場合に、Nビットの前記第2読み出しデータにおける当該ビット番号を誤りと判定する第4処理と、
前記第4処理で誤りと判定されたビットを訂正する第5処理とを実行することを特徴とする半導体装置。
【請求項6】
請求項5記載の半導体装置において、
前記メモリユニットは、さらに、
前記ワード線と交差する第5および第6ビット線と、
前記ワード線と前記第5および第6ビット線の交点にそれぞれ配置される第5および第6メモリセルとを備え、
前記第1制御回路は、さらに、前記第1パリティー書き込みデータの反転データを前記第5ビット線を介して前記第5メモリセルに書き込み、前記第2パリティー書き込みデータの反転データを前記第6ビット線を介して前記第6メモリセルに書き込み、
前記第2制御回路は、前記第3メモリセルから前記第3ビット線を介して読み出された信号と前記第5メモリセルから前記第5ビット線を介して読み出された信号を差動増幅することで前記第1パリティー読み出しデータを出力し、前記第4メモリセルから前記第4ビット線を介して読み出された信号と前記第6メモリセルから前記第6ビット線を介して読み出された信号を差動増幅することで前記第2パリティー読み出しデータを出力することを特徴とする半導体装置。
【請求項7】
請求項5記載の半導体装置において、
前記第2制御回路は、
N個の前記第1メモリセルからN本の前記第1ビット線を介して読み出された信号を予め定めた第1基準信号を比較対象として増幅するN個の第1センスアンプ回路と、
N個の前記第2メモリセルからN本の前記第2ビット線を介して読み出された信号を前記第1基準信号を比較対象として増幅するN個の第2センスアンプ回路とを有することを特徴とする半導体装置。
【請求項8】
請求項7記載の半導体装置において、
前記第2制御回路は、さらに、
N個の前記第1メモリセルからN本の前記第1ビット線を介して読み出された信号をN個の前記第2メモリセルからN本の前記第2ビット線を介して読み出された信号を比較対象として増幅するN個の第3センスアンプ回路とを有することを特徴とする半導体装置。
【請求項9】
請求項5記載の半導体装置において、
前記エラー処理回路は、さらに、前記第5処理で訂正が行われる第1の場合か、あるいは前記第1処理で一致するビット番号が存在せず、なおかつ前記第2および第3処理の判定結果が共に正常である第2の場合に第1論理レベルの第1信号を出力し、前記第1および第2の場合以外の場合に第2論理レベルの前記第1信号を出力することを特徴とする半導体装置。
【請求項10】
請求項5記載の半導体装置において、
N個の前記第1メモリセル、N個の前記第2メモリセル、前記第3および第4メモリセルのそれぞれは、フラッシュメモリセルであることを特徴とする半導体装置。
【請求項11】
請求項10記載の半導体装置において、
前記半導体装置は、更に、
所定のプログラムを実行する中央処理ユニットと、
前記中央処理ユニットと前記メモリユニットを接続するバスとを備え、
前記メモリユニットは、前記中央処理ユニットの書き込みおよび読み出しアクセス対象であることを特徴とする半導体装置。
【請求項12】
N(Nは1以上の整数)ビットのデータを記憶し、書き込み時にNビットの第1書き込みデータが入力され、読み出し時にNビットの第1読み出しデータを出力するN個の第1記憶ノードと、
Nビットのデータを記憶し、前記書き込み時にNビットの第2書き込みデータが入力され、前記読み出し時にNビットの第2読み出しデータを出力するN個の第2記憶ノードと、
エラー処理回路とを備え、
Nビットの前記第2書き込みデータは、Nビットの前記第1書き込みデータと同一データ又はNビットの前記第1書き込みデータの反転データであり、
前記エラー処理回路は、Nビットの前記第1読み出しデータとNビットの前記第2読み出しデータの一致・不一致を各ビット番号毎に比較することでエラー有無を判定する第1処理を実行することを特徴とする半導体装置。
【請求項13】
請求項12記載の半導体装置において、
前記半導体装置は、さらに、
前記書き込み時に、Nビットの前記第1書き込みデータを対象として第1パリティーデータを生成し、Nビットの前記第2書き込みデータを対象として第2パリティーデータを生成するパリティー生成回路と、
前記第1および第2パリティーデータを記憶する第1および第2パリティー記憶ノードとを備え、
前記エラー処理回路は、さらに、
Nビットの前記第1読み出しデータと前記第1パリティーデータを用いてパリティー判定を行う第2処理と、
Nビットの前記第2読み出しデータと前記第2パリティーデータを用いてパリティー判定を行う第3処理と、
前記第1処理でエラーと判定されたビット番号が1個存在し、かつ前記第2処理の判定結果が異常であり前記第3処理の判定結果が正常な場合に、Nビットの前記第1読み出しデータにおける当該ビット番号を誤りと判定し、前記第1処理でエラーと判定されたビット番号が1個存在し、かつ前記第3処理の判定結果が異常であり前記第2処理の判定結果が正常な場合に、Nビットの前記第2読み出しデータにおける当該ビット番号を誤りと判定する第4処理と、
前記第4処理で誤りと判定されたビットを訂正する第5処理とを実行することを特徴とする半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−243332(P2012−243332A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−109228(P2011−109228)
【出願日】平成23年5月16日(2011.5.16)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】