以下、実施の形態について図面を用いて説明する。図面において同一の符号の構成要素は、同一の構成要素であるものとする。
[第1の実施形態]
図1は、第1の実施形態の半導体装置300の構成を表わす図である。
図1を参照して、この半導体装置は、N個のメモリモジュール30−1〜30−Nと、選択デコーダ303と、故障判定部304とを備える。Nは2以上の自然数である。
選択デコーダ303は、少なくとも1ビット以上のアドレスビットに基づいて、複数個の選択信号cen1〜cennのレベルを制御する。
メモリモジュール30−i(i=1〜n)は、対応する選択信号ceniが活性化レベルのときに選択されて、データの読出しおよび書き込みが可能となる。
故障判定部304は、複数個の選択信号cen1〜cennのレベルに基づいて、選択デコーダ303が故障状態か否かを判定する。
将来の自動運転に向けて車載半導体には安全性向上の為の機能が求められており、たとえばISO26262(機能安全)の規格に基づく設計が要求されている。この規格によれば、ハードウエアの経年劣化のようなランダム故障を想定して故障が生じた際にそれを訂正もしくは検出し危険回避処理を行うことが求められている。また、高信頼性の製品においては、放射線(α線や中性子)に対して誤動作の影響を受けやすいメモリに対してはECC機能が搭載されていることが多い。これにより、放射線に対する保持データの破壊のみならずデータに対するランダム故障については、訂正もしくは検出が可能である。一方、ECCにより訂正および誤り検出ができない非データ系の信号であるアドレスを処理する回路の故障に対しては、検出することができないという問題があった。本実施の形態によれば、複数のメモリモジュールのいずれを選択するかを指定するアドレスを処理する選択デコーダ303の故障を検出することができる。
[参考例1の半導体装置]
図2は、参考例1の半導体装置400の構成を表わす図である。
図2を参照して、この半導体装置400は、第1のメモリモジュール41と、第2のメモリモジュール42と、フラッシュメモリ350と、ECCエンコーダ21と、冗長制御回路31〜34とを備える。半導体装置400は、さらに、セレクタ51と、ECCデコーダ22と、アドレス分割器61と、選択デコーダ62と、冗長デコーダ68と、割り込み制御部201と、CPU202と、フリップフロップ(FF)71,72とを備える。
第1のメモリモジュール41および第2のメモリモジュール42は、たとえば、半導体装置の設計環境において、ライブラリとして提供されるSRAM(Static Random Access Memory)マクロである。第1のメモリモジュール41および第2のメモリモジュール42は、それぞれ「メモリユニット」、「メモリブロック」、「メモリマクロ」という語で表わすこともできる。
第1のメモリモジュール41は、複数個のSRAMメモリセルを有するメモリアレイ43と、SRAMロジック回路とを備える。
メモリアレイ43は、正規ブロック363と、冗長ブロック364とを含む。正規ブロック363は、複数の正規メモリセル列からなる。複数の正規メモリセル列は、不良でない限り、データの書き込み箇所となる。冗長ブロック364は、1以上の冗長メモリセル列からなる。1以上の冗長メモリセル列は、正規ブロック363に含まれる複数の正規メモリセル列のうち、不良のメモリセルを有する不良メモリセル列を救済するために設けられる。1以上の冗長メモリセル列は、不良メモリセル列の代わりに、データの書き込み箇所となる。
第2のメモリモジュール42は、複数個のSRAMメモリセルを有するメモリアレイ44と、SRAMロジック回路とを備える。メモリアレイ44は、正規ブロック365と、冗長ブロック366とを含む。正規ブロック365は、複数の正規メモリセル列からなる。冗長ブロック366は、1以上の冗長メモリセル列からなる。
図3は、参考例1の第1のメモリモジュール41の構成を表わす図である。第2のメモリモジュール42の構成も、これと同様である。
図3を参照して、第1のメモリモジュール41は、アドレス入力端子ADAと、クロック入力端子CKと、データ入出力端子DAと、メモリアレイMARYと、ワード線駆動回路WDと、データ入出力部IOと、制御部CTRLとを備える。
アドレス入力端子ADAには、アドレス分割器61から送られる第2のアドレスビットAdd[0:N−1]が入力される。クロック入力端子CKには、クロックCLKが入力される。データ入出力端子DAには、データ信号D1[0:M]が入出力される。
メモリアレイMARYは、ワード線WL0〜WLiによって選択される複数のメモリセルを有する。
制御部CTRLは、ラッチ回路1_0〜1_N−1で構成される一時記憶回路650と、アドレスデコーダADRCTLとを備える。ラッチ回路1_0〜1_N−1は、アドレスビットAdd[0]〜Add[N−1]をクロックCLKに同期して取り込み、内部アドレスビットAQ1[0]〜AQ1[N−1]として出力する。ラッチ回路1_0〜1_N−1は、クロックCLKのエッジが入力されるまでは、取り込んだアドレスビットAdd[0]〜Add[N−1]を保持し続ける。アドレスデコーダADRCTLは、内部アドレスビットAQ1[0]〜AQ1[N−1]に基づいてアドレスデコード信号(X0〜Xi及びY0〜Yj)を出力する。
ワード線駆動回路WDは、アドレスデコード信号のうちの行選択信号X0〜Xiに基づいて、メモリアレイMARYの対応するワード線WLを選択して駆動する。
データ入出力部IOは、メモリアレイMARY内のワード線WLによって選択されたメモリセルのデータをデータ入出力端子DAを通じて、データ信号D1[0:M]として出力する。
データ入出力部IOは、メモリアレイMARY内のワード線WLによって選択されたメモリセルにデータ入出力端子DAを通じて入力されるデータ信号D1[0:M]を書き込む。
再び、図2を参照して、アドレス分割器61は、CPU202から出力される(N+1)ビットのアドレス信号A[0:N]を最上位ビットである第1のアドレスビットAdd[N](上位の第2の個数のビット)と、Nビットの第2のアドレスビットAdd[0:N−1](下位の第1の個数のビット)に分割する。Nビットの第2のアドレスビットAdd[0:N−1]が、第1のメモリモジュール41および第2のメモリモジュール42に供給される。アドレス分割器61は、タイミング制御のために、第1のアドレスビットAdd[N]および第2のアドレスビットAdd[0:N−1]をラッチするラッチ回路を備える。
ECCエンコーダ21は、ライトデータであるデータ信号Data[0:M]を誤り訂正検出符号化して、誤り訂正検出符号化されたデータを第1のメモリモジュール41および第2のメモリモジュール42へ出力する。具体的には、ECCエンコーダ21は、(M+1)ビットのデータ信号Data[0:M]の誤り訂正検出のためのsビットの検査ビットを生成し、検査ビットが付加された(M+s+1)ビットのデータ信号EData[0:M+s]を誤り検出訂正符号化データとして生成する。
検査ビットは、Xビット以下の訂正可能で、Yビット(Y>X)以下の誤り検出を可能とするコードである。たとえば、検査ビットは、SEC-DED(Single Error-Correcting Double-Error-Detecting) Code 、つまり、1ビット誤りを訂正し、かつ2ビット誤りを検出することができる誤り訂正符号とすることができる。
選択デコーダ62は、選択許可信号CENと、第1のアドレスビットAdd[N]に基づいて、第1の選択信号cen1のレベルと、第2の選択信号cen2のレベルとを制御する。選択デコーダ62は、選択許可信号CENが活性化レベルの「1」であり、かつ第1のアドレスビットAdd[N]が「1」のときには、第1の選択信号cen1のレベルを活性化レベルの「1」に設定するとともに、第2の選択信号cen2のレベルを非活性化レベルの「0」に設定する。選択デコーダ62は、選択許可信号CENが活性化レベルの「1」であり、かつ第1のアドレスビットAdd[N]が「0」のときには、第1の選択信号cen1のレベルを非活性化レベルの「0」に設定するとともに、第2の選択信号cen2のレベルを活性化レベルの「1」に設定する。選択デコーダ62は、選択許可信号CENが非活性化レベルの「0」のときには、第1の選択信号cen1のレベルを非活性化レベルの「0」に設定するとともに、第2の選択信号cen2のレベルを非活性化レベルの「0」に設定する。
フラッシュメモリ350は、正規ブロック363内に存在する不良メモリセル列を示すアドレス信号C_Add1と、正規ブロック365内に存在する不良メモリセル列を示すアドレス信号C_Add2とを記憶する。
冗長デコーダ68は、正規ブロック363内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Add1をデコードして、アドレスデコード信号R1を出力する。冗長デコーダ68は、正規ブロック365内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Add2をデコードして、アドレスデコード信号R2を出力する。
冗長制御回路31は、データの書き込み時に、アドレスデコード信号R1に従って、正規ブロック363内の不良メモリセル列の代わりに、冗長ブロック364内の冗長メモリセル列にECCエンコーダ21の出力が書き込まれるように制御する。たとえば、メモリアレイ43内の右側に冗長ブロック364が配置され、複数のデータ入出力線が、正規メモリセル列の複数のビット線と接続されている場合に、冗長制御回路31は、データの書き込み時に、不良メモリセル列のビット線と接続されているデータ入出力線およびそれよりも右側に配置されるデータ入出力線が、1つ右のビット線と接続されるように制御する。
冗長制御回路32は、データの書き込み時に、アドレスデコード信号R2に従って、正規ブロック365内の不良メモリセル列の代わりに、冗長ブロック366内の冗長メモリセル列にECCエンコーダ21の出力が書き込まれるように制御する。
第1のメモリモジュール41では、データの書き込み時に、第1の選択信号cen1が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所に、誤り検出訂正符号化データEdata[0:M+s]が書き込まれ、第1の選択信号cen1が「0」のときに、誤り検出訂正符号化データEdata[0:M+s]が書き込まれない。第2のメモリモジュール42では、データの書き込み時に、第2の選択信号cen2が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所に、誤り検出訂正符号化データEdata[0:M+s]が書き込まれ、第2の選択信号cen2が「0」のときに、誤り検出訂正符号化データEdata[0:M+s]が書き込まれない。
第1のメモリモジュール41では、データの読出し時に、第1の選択信号cen1が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所から、記憶されているデータ信号Q1が出力される。第1のメモリモジュール41では、データの読出し時に、第1の選択信号cen1が「0」のときに、記憶されているデータ信号Q1が出力されない。第2のメモリモジュール42では、データの読出し時に、第2の選択信号cen2が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所から、記憶されているデータ信号Q2が出力される。第2のメモリモジュール42では、データの読出し時に、第2の選択信号cen2が「0」のときに、記憶されているデータ信号Q2が出力されない。
冗長制御回路33は、データの読出し時に、アドレスデコード信号R1に従って、正規ブロック363内の不良メモリセル列の代わりに、冗長ブロック364内の冗長メモリセル列からデータが読み出されるように制御する。たとえば、メモリアレイ43内の右側に冗長ブロック364が配置され、複数のデータ入出力線が、正規メモリセル列の複数のビット線と接続されている場合に、冗長制御回路33は、データの読み出し時に、不良メモリセル列のビット線と接続されているデータ入出力線およびそれよりも右側に配置されるデータ入出力線が、1つ右のビット線と接続されるように制御する。
冗長制御回路34は、データの読出し時に、アドレスデコード信号R2に従って、正規ブロック365内の不良メモリセル列の代わりに、冗長ブロック366内の冗長メモリセル列からデータが読み出されるように制御する。
セレクタ51は、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルに基づいて、第1のメモリモジュール41から出力されるデータ信号Q1と第2のメモリモジュール42から出力されるデータ信号Q2のうちのいずれかを選択して、ECCデコーダ22へ出力する。
セレクタ51は、第1の選択信号cen1のレベルが活性化レベルの「1」、かつ第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、第1のメモリモジュール41から出力されるデータ信号Q1を選択して、ECCデコーダ22へ出力する。セレクタ51は、第1の選択信号cen1のレベルが非活性化レベルの「0」、かつ第2の選択信号cen2のレベルが活性化レベルの「1」のときに、第2のメモリモジュール42から出力されるデータ信号Q2を選択して、ECCデコーダ22へ出力する。セレクタ51は、第1の選択信号cen1のレベルが非活性化レベルの「0」、かつ第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、第1のメモリモジュール41から出力されるデータ信号Q1および第2のメモリモジュール42から出力されるデータ信号Q2のうちのいずれかを選択して出力する。セレクタ51は、第1の選択信号cen1のレベルが活性化レベルの「1」、かつ第2の選択信号cen2のレベルが活性化レベルの「1」のときに、第1のメモリモジュール41から出力されるデータ信号Q1および第2のメモリモジュール42から出力されるデータ信号Q2のうちいずれかを選択して出力する。cen1=「1」かつcen2=「1」、およびcen1=「0」かつcen2=「0」のときにいずれを選択するかは、予め明示的に定められた方を選択する、前回選択していた方を選択する、または論理設計によってマッピングされた論理ゲートによって決まる方を選択するなどのいずれであってもよい。
ECCデコーダ22は、セレクタ51の出力を誤り検出訂正する。ECCデコーダ22は、セレクタ51の出力の誤りを検出すると、故障通知信号ERRORを出力する。割り込み制御部201は、故障通知信号ERRORを受信すると、CPU202に故障を検知したことを割り込み通知する。
CPU202は、半導体装置の全体を制御する。CPU202は、割り込み制御部201から故障の割り込み通知を受信すると、必要な処理を行なう。
FF71は、選択デコーダ62からセレクタ51への第1の選択信号cen1の伝送経路の途中に設けられる。FF72は、選択デコーダ62からセレクタ51への第2の選択信号cen2の伝送経路の途中に設けられる。FF71、FF72、第1のメモリモジュール41、および第2のメモリモジュール42に供給されるクロックは、同一である。
FF71は、第1の選択信号cen1がセレクタ51に送られるタイミングと、第1のメモリモジュール41からの出力Q1がセレクタ51に送られるタイミングとの同期を採るために設けられる。FF72は、第2の選択信号cen2がセレクタ51に送られるタイミングと、第2のメモリモジュール42からの出力Q2がセレクタ51に送られるタイミングとの同期を採るために設けられる。このような同期制御が必要なのは、第1のメモリモジュール41および第2のメモリモジュール42において、データ出力のために、クロックCLKの1周期分の時間が必要なためである。
参考例1の半導体装置400では、アドレス信号Add[N]を処理する選択デコーダ62およびそれに関連する配線の故障、およびアドレス信号C_Add1およびC_Add2を処理する冗長デコーダ68およびそれに関連する配線の故障を検出することできないという問題がある。
[第2の実施形態]
図4は、第2の実施形態の半導体装置500の構成を表わす図である。
この半導体装置500は、第1のメモリモジュール45と、第2のメモリモジュール46と、ECCエンコーダ21と、セレクタ51と、ECCデコーダ22と、アドレス分割器61と、選択デコーダ62と、故障判定部121と、割り込み制御部201と、CPU202と、FF71,72とを備える。
第2の実施形態のECCエンコーダ21、アドレス分割器61、選択デコーダ62、ECCデコーダ22、FF71,72、セレクタ51、割り込み制御部201、およびCPU202は、参考例1と同様なので、説明を繰り返さない。
第1のメモリモジュール45は、参考例1の第1のメモリモジュール41と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。第1のメモリモジュール45は、冗長列救済機能を有さないものとする。
第2のメモリモジュール46は、参考例1の第2のメモリモジュール42と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。第2のメモリモジュール46は、冗長列救済機能を有さないものとする。
故障判定部121は、第1の選択信号cen1のレベル、第2の選択信号cen2のレベル、および選択許可信号CENのレベルに基づいて、選択デコーダ62が故障か否かを判定する。故障判定部121は、選択デコーダ62が故障であると判定したときには、故障通知信号ERRORを割り込み制御部201へ出力する。
図5は、選択デコーダ62が正常な場合における、入力(選択許可信号CEN、アドレス信号の最上位ビットAdd[N])と、出力(第1の選択信号cen1、第2の選択信号cen2)との関係を表わす図である。
選択デコーダ62は、正常な場合に、選択許可信号CENのレベルが活性化レベルの「1」であり、かつアドレス信号の最上位ビットAdd[N]が「1」のときに、第1の選択信号cen1のレベルを活性化レベルの「1」に設定するとともに、第2の選択信号cen2のレベルを非活性化レベルの「0」に設定する。選択デコーダ62は、正常な場合に、選択許可信号CENのレベルが活性化レベルの「1」であり、かつアドレス信号の最上位ビットAdd[N]が「0」のときに、第1の選択信号cen1のレベルを非活性化レベルの「0」に設定するとともに、第2の選択信号cen2のレベルを活性化レベルの「1」に設定する。選択デコーダ62は、正常な場合に、選択許可信号CENのレベルが「0」のときに、アドレス信号の最上位ビットAdd[N]に係らず、第1の選択信号cen1のレベルを非活性化レベルの「0」に設定するとともに、第2の選択信号cen2のレベルを非活性化レベルの「0」に設定する。
図6は、選択デコーダ62の故障判定手順を表わすフローチャートである。
図6を参照して、ステップS301において、選択許可信号CENのレベルが「1」のときには(YES)、処理がステップS302に進み、選択許可信号CENのレベルが「0」のときには(NO)、処理がステップS303に進む。
ステップS302において、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルの両方が「1」または「0」のときには(YES)、処理がステップS305に進み、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルのうちの一方が「1」で、他方が「0」のときには(NO)、処理がステップS304に進む。
ステップS303において、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルのうちの両方が「0」のときには(YES)、処理がステップS304に進み、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルのうちの少なくとも1つが「1」のときには(NO)、処理がステップS305に進む。
ステップS304において、故障判定部121は、選択デコーダ62が正常状態であると判定する。
ステップS305において、故障判定部121は、選択デコーダ62が故障状態であると判定する。故障判定部121は、故障通知信号ERRORを割り込み制御部201へ出力する。割り込み制御部201は、故障通知信号ERRORを受信すると、CPU202に故障を通知する。
なお、上記において、選択許可信号CENのレベルが「1」のときには、第1の選択信号cen1と第2の選択信号cen2のうちのいずれか一方のみが反転した場合のみ、選択デコーダ62の故障状態と判定したのは、発生頻度の高いシングル故障を検出するためである。
以上のように、本実施の形態では、第1の選択信号cen1のレベル、第2の選択信号cen2のレベル、および選択許可信号CENのレベルに基づいて、選択デコーダ62が故障か否かを判定することができる。
[第3の実施形態]
図7は、第3の実施形態の半導体装置600の構成を表わす図である。
この半導体装置600は、第1のメモリモジュール45と、第2のメモリモジュール46と、ECCエンコーダ21と、セレクタ149と、ECCデコーダ22と、アドレス分割器61と、選択デコーダ62と、故障判定部131と、割り込み制御部201と、CPU202と、FF71,72とを備える。
第3の実施形態の第1のメモリモジュール45、第2のメモリモジュール46、ECCエンコーダ21、ECCデコーダ22、アドレス分割器61、選択デコーダ62、割り込み制御部201、CPU202、およびFF71,72は、第2の実施形態と同様なので、説明を繰り返さない。
故障判定部131は、第2の実施形態の故障判定部121と同様にして、選択デコーダ62が故障か否かを判定する。故障判定部131は、選択デコーダ62が故障であると判定した場合に、故障検知信号ERをセレクタ149へ出力する。
セレクタ149は、故障検知信号ERを受信すると、第1のメモリモジュール45と第2のメモリモジュール46のうち、選択した方から出力されるデータの複数ビットのうち、X個のビットを反転させる。X個のビットは、ECCデコーダ22において誤り訂正可能なビット数の上限を超え、かつ誤り検出可能なビット数の上限以下のビット数である。検査ビットは、SEC-DED Codeの場合、X=2となる。
本実施の形態によれば、新たな回路を設けることなく、アドレス信号Add[N]を処理する選択デコーダ62およびそれに関連する配線の故障を検知することができる。
[第4の実施形態]
図8は、第4の実施形態の半導体装置700の構成を表わす図である。
この半導体装置700は、第1のメモリモジュール45と、第2のメモリモジュール46と、ECCエンコーダ21と、セレクタ141と、セレクタ142と、ECCデコーダ122と、アドレス分割器61と、選択デコーダ62と、割り込み制御部201と、CPU202と、FF73,74,75,76とを備える。
第4の実施形態の第1のメモリモジュール45、第2のメモリモジュール46、ECCエンコーダ21、アドレス分割器61、選択デコーダ62、割り込み制御部201、およびCPU202は、第2の実施形態と同様なので、説明を繰り返さない。
データの読み出し時に、第1のメモリモジュール45から出力されるデータを構成する複数ビットは、グループA(第1グループ)の複数のビットQaと、グループB(第2グループ)の複数のビットQbに分類される。第1のメモリモジュール45は、グループAの複数ビットQaをセレクタ141へ出力し、グループBの複数ビットQbをセレクタ142へ出力する。
データの読み出し時に、第2のメモリモジュール46から出力されるデータを構成する複数ビットは、グループC(第1グループ)の複数のビットQcと、グループD(第2グループ)の複数のビットQdに分類される。第2のメモリモジュール46は、グループCの複数ビットQcをセレクタ141へ出力し、グループDの複数ビットQdをセレクタ142へ出力する。
グループAの複数のビットQaの位置とグループCの複数のビットQcの位置は、同じである。グループBの複数のビットQbの位置とグループDの複数のビットQdの位置は、同じである。
たとえば、グループAの複数ビットQaは、第1のメモリモジュール45から出力される複数ビットの中の奇数ビット、グループBの複数ビットQbは、第1のメモリモジュール45から出力される複数ビットの中の偶数ビットとすることができる。グループCの複数ビットQcは、第2のメモリモジュール46から出力される複数ビットの中の奇数ビット、グループDの複数ビットQdは、第2のメモリモジュール46から出力される複数ビットの中の奇数ビットとすることができる。
あるいは、グループAの複数ビットQaは、第1のメモリモジュール45から出力される複数ビットの中のMSB(Most Significant Bit)側の上位半分のビット、グループBの複数ビットQbは、第1のメモリモジュール45から出力される複数ビットの中のLSB(Least Significant Bit)側の下位半分のビットとすることができる。グループCの複数ビットQcは、第2のメモリモジュール46から出力される複数ビットの中のMSB側の上位半分のビット、グループDの複数ビットQdは、第2のメモリモジュール46から出力される複数ビットの中のLSB側の下位半分のビットとすることができる。
セレクタ141は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール45から出力されるグループAの複数のビットQaと、第2のメモリモジュール46から出力されるグループCの複数のビットQcとのうち、グループAの複数のビットQaを選択して、ECCデコーダ122へ出力する。
セレクタ141は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール45から出力されるグループAの複数のビットQaと、第2のメモリモジュール46から出力されるグループCの複数のビットQcとのうち、グループCの複数のビットQcを選択して、ECCデコーダ122へ出力する。
セレクタ141は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール45から出力されるグループAの複数のビットQaと、第2のメモリモジュール46から出力されるグループCの複数のビットQcのうちいずれかを出力する。
セレクタ141は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール45から出力されるグループAの複数のビットQaと、第2のメモリモジュール46から出力されるグループCの複数のビットQcのうちいずれかを出力する。
セレクタ142は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール45から出力されるグループBの複数のビットQbと、第2のメモリモジュール46から出力されるグループDの複数のビットQdとのうち、グループBの複数のビットQbを選択して、ECCデコーダ122へ出力する。
セレクタ142は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール45から出力されるグループBの複数のビットQbと、第2のメモリモジュール46から出力されるグループDの複数のビットQdとのうち、グループDの複数のビットQdを選択して、ECCデコーダ122へ出力する。
セレクタ142は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール45から出力されるグループBの複数のビットQbと、第2のメモリモジュール46から出力されるグループDの複数のビットQdのうちいずれかを出力する。
セレクタ142は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール45から出力されるグループBの複数のビットQbと、第2のメモリモジュール46から出力されるグループDの複数のビットQdのうちいずれかを出力する。
ECCデコーダ122は、セレクタ141の出力とセレクタ142の出力とを合成したビットを誤り検出訂正する。ECCデコーダ122は、合成したビットの誤りを検出すると、故障通知信号ERRORを出力する。
FF73は、選択デコーダ62からセレクタ141への第1の選択信号cen1の伝送経路の途中に設けられる。FF74は、選択デコーダ62からセレクタ141への第2の選択信号cen2の伝送経路の途中に設けられる。FF75は、選択デコーダ62からセレクタ142への第1の選択信号cen1の伝送経路の途中に設けられる。FF76は、選択デコーダ62からセレクタ142への第2の選択信号cen2の伝送経路の途中に設けられる。FF73、FF74、FF75、FF76、第1のメモリモジュール45、および第2のメモリモジュール46に供給されるクロックは、同一である。
以上のような構成によって、FF73、FF74、FF75、またはFF76の故障を検出することができる。
たとえば、cen1=1、cen2=0の場合に、FF73が正常のときには、セレクタ141は、グループAの複数のビットQaを出力するが、FF73が故障のときには、セレクタ141が、グループAの複数のビットQaを出力するか、グループCの複数のビットQcを出力するかは不確定である。グループCの複数のビットQcが出力されたときには、ECCデコーダ122は、グループBの複数のビットQbと、グループCの複数のビットQcとを合成したビットを誤り検出訂正することによって、誤りを検出する。これによって、FF73〜FF76のいずれかに故障があったことを検出することができる。
[第5の実施形態]
図9は、第5の実施形態の半導体装置800の構成を表わす図である。
図9を参照して、この半導体装置800は、メモリモジュール47と、ECCエンコーダ21と、冗長制御回路35,36と、ECCデコーダ22と、冗長デコーダ168と、エンコーダ151と、比較器152と、割り込み制御部201と、CPU202とを備える。
ECCエンコーダ21、ECCデコーダ22、割り込み制御部201、およびCPU202は、参考例1と同様なので、説明を繰り返さない。
メモリモジュール47は、複数個のSRAMメモリセルを有するメモリアレイ155と、SRAMロジック回路とを備える。
メモリアレイ155は、正規ブロック153と、冗長ブロック154とを含む。正規ブロック153は、複数の正規メモリセル列からなる。複数の正規メモリセル列は、不良でない限り、データの書き込み箇所となる。冗長ブロック154は、1以上の冗長メモリセル列からなる。1以上の冗長メモリセル列は、正規ブロック153に含まれる複数の正規メモリセル列のうち、不良のメモリセルを有する不良メモリセル列を救済するために設けられる。1以上の冗長メモリセル列は、不良メモリセル列の代わりに、データの書き込み箇所となる。
冗長デコーダ168は、正規ブロック153内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Addをデコードして、アドレスデコード信号R1を出力する。
冗長制御回路35は、データの書き込み時に、アドレスデコード信号R1に従って、正規ブロック153内の不良メモリセル列の代わりに、冗長ブロック154内の冗長メモリセル列にECCエンコーダ21の出力が書き込まれるように制御する。
メモリモジュール47では、データの書き込み時に、アドレス信号Add[0:N]で指定される箇所に、誤り検出訂正符号化データEdata[0:M+s]が書き込まれる。
メモリモジュール47では、データの読出し時に、アドレス信号Add[0:N]で指定される箇所から、記憶されているデータ信号Qが出力される。
冗長制御回路36は、アドレスデコード信号R1に従って、正規ブロック153内の不良メモリセル列の代わりに、冗長ブロック154内の冗長メモリセル列からデータが読み出されるように制御する。
エンコーダ151は、アドレスデコード信号R1をエンコードして、正規ブロック153内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Add′を出力する。このエンコードは、冗長デコーダ168のデコード(変換)の逆変換である。
比較器152は、エンコーダ151から出力されるアドレス信号C_Add′と、冗長デコーダ168に入力されるアドレス信号C_Addを比較し、不一致の場合に、故障通知信号ERRORを出力する。
以上の構成によって、冗長デコーダ168が故障状態のときに、アドレス信号C_Addから生成されるアドレスデコード信号R1が誤った信号となり、アドレスデコード信号R1をエンコードして得られるアドレス信号C_Add′が、アドレス信号C_Addと相違する。この相違を検出することによって、冗長デコーダ168の故障を判定することができる。
[第6の実施形態]
図10は、第6の実施形態の半導体装置900の構成を表わす図である。
図10を参照して、この半導体装置900は、メモリモジュール47と、ECCエンコーダ21と、冗長制御回路35,36と、ECCデコーダ22と、冗長デコーダ168,169と、割り込み制御部201と、CPU202とを備える。
メモリモジュール47、ECCエンコーダ21、割り込み制御部201と、CPU202は、第5の実施形態と同様なので、説明を繰り返さない。
冗長デコーダ168は、データの書込み時に、正規ブロック153内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Addをデコードして、アドレスデコード信号R1を出力する。
冗長制御回路35は、データの書き込み時に、アドレスデコード信号R1に従って、正規ブロック153内の不良メモリセル列の代わりに、冗長ブロック154内の冗長メモリセル列にECCエンコーダ21の出力が書き込まれるように制御する。
冗長デコーダ169は、データの読み出し時に、正規ブロック153内の複数の正規メモリセル列の中の不良メモリセル列のアドレス信号C_Addをデコードして、アドレスデコード信号R2を出力する。
冗長制御回路36は、データの読み出し時に、アドレスデコード信号R2に従って、正規ブロック153内の不良メモリセル列の代わりに、冗長ブロック154内の冗長メモリセル列からデータが読み出されるように制御する。
ECCデコーダ22は、冗長制御回路36で読出が制御されたメモリモジュール47からの出力を誤り検出訂正する。ECCデコーダ22は、メモリモジュール47の出力の誤りを検出すると、故障通知信号ERRORを出力する。冗長デコーダ168および冗長デコーダ169のうち少なくとも1つが故障状態のため、アドレスデコード信号R1とアドレスデコード信号R2とが相違するときには、ECCデコーダ22がメモリモジュール47の出力の誤りを検出する。割り込み制御部201は、故障通知信号ERRORを受信すると、CPU202に故障を検知したことを割り込み通知する。
[第7の実施形態]
図11は、第7の実施形態の半導体装置1000の構成を表わす図である。
図11を参照して、この半導体装置1000は、メモリモジュール161と、ECCエンコーダ221と、ECCデコーダ222と、比較器166と、割り込み制御部201と、CPU202とを備える。
割り込み制御部201と、CPU202は、参考例1と同様なので、説明を繰り返さない。
メモリモジュール161は、複数個のSRAMセルを含むメモリアレイ162と、制御部CTRLなどのSRAMロジックとを備える。
メモリアレイ162は、データ信号Data[0:M]を記憶するデータ領域163と、アドレス信号Add[0:N]を記憶するアドレス領域164と、データ信号Data[0:M]とアドレス信号Add[0:N]とに基づいて生成された検査ビットを記憶する検査ビット領域165とを含む。データ領域163は、(M+1)個の列からなる。アドレス領域164は、(N+1)個の列からなる。検査ビット領域165は、S個の列からなる。
図12は、第7の実施形態のメモリアレイ162に記憶されるデータの構成を表わす図である。
メモリアレイ162の1行には、(M+1)ビットのデータ信号Data[0:M]と、(N+1)ビットのアドレス信号Add[0:N]と、Sビットの検査ビットとからなるビット列が記憶される。
図3に示すような一時記憶回路650およびアドレスデコーダADRCTLからなる制御部CTRLは、メモリアレイ162へのデータの書き込み時に書き込み用のアドレス信号Add[0:N]をデコードして第1のアドレスデコード信号WRを出力する。
ECCエンコーダ221は、データの書き込み時に、データ信号Data[0:M]と、書き込み用のアドレス信号Add[0:N]とからなるビット列を誤り検出訂正符号化して、Sビットの検査ビットを生成する。
メモリアレイ162内の第1のアドレスデコード信号WRで指定される行の位置に、ECCエンコーダ221から出力されるデータ信号Data[0:M]と、書き込み用のアドレス信号Add[0:M]と、検査ビットとからなるビット列が書き込まれる。
制御部CTRLは、は、メモリアレイ162からのデータの読出し時に読出し用のアドレス信号Add[0:N]をデコードして第2のアドレスデコード信号RRを出力する。
メモリアレイ162は、データの読出し時に、第2のアドレスデコード信号RRで指定される行の位置からデータData′[0:M]と、アドレスAdd′[0:N]と、検査ビットとからなるビット列を出力する。
ECCデコーダ222は、メモリモジュール161から出力されたビット列を誤り検出訂正復号化して、データData″[0:M]とアドレスAdd″[0:N]とを出力する。
比較器166は、ECCデコーダ222から出力されるアドレスAdd″[0:N]と、読出し用のアドレスAdd[0:N]とを比較する。比較器166は、不一致の場合に、故障通知信号ERRORを出力する。
制御部CTRLに故障がない場合に、ECCデコーダ222から出力されるアドレスAdd″[0:N]と、読出し用のアドレスAdd[0:N]とが一致する。制御部CTRLに故障が発生した結果、書き込み用のアドレスをデコードした第1のアドレスデコード信号WRと、書き込み用のアドレスと同一の読出し用のアドレスをデコードした第2のアドレスデコード信号RRとが相違する場合がある。このような場合に、ECCデコーダ222から出力されるアドレスAdd″[0:N]と、読出し用のアドレスAdd[0:N]とが不一致となる。この不一致を検出することによって、制御部CTRLの故障が検出できる。
[第8の実施形態]
図13は、第8の実施形態の半導体装置1100の構成を表わす図である。
図13を参照して、この半導体装置1100は、メモリモジュール171と、ECCエンコーダ321と、ECCデコーダ322と、割り込み制御部201と、CPU202とを備える。
割り込み制御部201と、CPU202は、参考例1と同様なので、説明を繰り返さない。
メモリモジュール171は、複数個のSRAMセルを含むメモリアレイ172と、制御部CTRLなどのSRAMロジックとを備える。
メモリアレイ172は、データ信号Data[0:M]を記憶するデータ領域173と、データ信号Data[0:M]とアドレス信号Add[0:N]とに基づいて生成された検査ビットを記憶する検査ビット領域174とを含む。データ領域173は、(M+1)個の列からなる。検査ビット領域174は、S個の列からなる。
図14は、第8の実施形態のメモリアレイ172に記憶されるデータの構成を表わす図である。
メモリアレイ172の1行には、(M+1)ビットのデータ信号Data[0:M]と、Sビットの検査ビットとからなるビット列が記憶される。
図3に示すような一時記憶回路650およびアドレスデコーダADRCTLからなる制御部CTRLは、メモリアレイ172へのデータの書き込み時に書き込み用のアドレスAdd[0:N]をデコードして第1のアドレスデコード信号WRを出力する。
ECCエンコーダ321は、データの書き込み時に、データ信号Data[0:M]と、書き込み用のアドレス信号Add[0:N]とからなるビット列を誤り検出訂正符号化して、Sビットの検査ビットを生成する。
メモリアレイ172内の第1のアドレスデコード信号WRで指定される行の位置に、ECCエンコーダ321から出力されるデータ信号Data[0:M]と、検査ビットとからなるビット列が書き込まれる。
制御部CTRLは、メモリアレイ172からのデータの読出し時に読出し用のアドレスAdd[0:N]をデコードして第2のアドレスデコード信号RRを出力する。
メモリアレイ172は、データの読出し時に、第2のアドレスデコード信号RRで指定される行位置からデータData′[0:M]と、検査ビットとからなるビット列を出力する。
ECCデコーダ322は、メモリモジュール171から出力されたビット列に読出し用のアドレスAdd[0:N]を付加することによって、データData′[0:M]と、アドレスAdd[0:N]と、検査ビットとからなるビット列を生成する。ECCデコーダ322は、生成したビット列を誤り検出訂正復号化して、データData″[0:M]とアドレスAdd″[0:N]とを出力する。ECCデコーダ322は、誤りを検出した場合に、故障通知信号ERRORを割り込み制御部201へ出力する。
制御部CTRLに故障がない場合に、ECCデコーダ322は誤りを検出しない。
制御部CTRLに故障が発生した結果、書き込み用のアドレスをデコードした第1のアドレスデコード信号WRと、書き込み用のアドレスと同一の読出し用のアドレスをデコードした第2のアドレスデコード信号RRとが相違する場合がある。このような場合、ECCデコーダ322に入力されるメモリモジュール171から読み出された検査ビットは、ECCデコーダ322に入力される読出し用のアドレスAdd[0:N]から生成されたものと相違する。よって、ECCデコーダ322は、検査ビットに基づいて、誤りを検出することができる。
[参考例2]
図15は、参考例2の半導体装置1200の構成を表わす図である。図15において、データ信号Data[0:M]を処理する回路および配線は省略されている。
図15を参照して、この半導体装置1200は、アドレス出力機能付き第1のメモリモジュール181と、アドレス出力機能付き第2のメモリモジュール182と、アドレス分割器61と、選択デコーダ62と、ERRORセレクタ283と、FF77,78,79と、比較器184と、割り込み制御部201と、CPU202とを備える。
アドレス分割器61、選択デコーダ62、割り込み制御部201、およびCPU202は、参考例1と同様なので、説明を繰り返さない。
アドレス出力機能付き第1のメモリモジュール181は、実施の形態2の第1のメモリモジュール45と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。
アドレス出力機能付き第1のメモリモジュール181およびアドレス出力機能付き第2のメモリモジュール182の各々には、アドレス分割器61から出力されたNビットの第2のアドレスビットAdd[0:N−1]が入力される。
図16は、アドレス出力機能付き第1のメモリモジュール181の構成を表わす図である。アドレス出力機能付き第2のメモリモジュール182も、これと同様である。
図16を参照して、アドレス出力機能付き第1のメモリモジュール181が、図3の第1のメモリモジュール41と相違する点は、アドレス出力機能付き第1のメモリモジュール181は、内部アドレスビットAQ1[0]〜AQ1[N−1](以下、AQ1と称することもある)を出力するための内部アドレス出力端子AQをさらに有することである。アドレス出力機能付き第1のメモリモジュール181は、入力されたNビットの第2のアドレスビットAdd[0:N−1]から生成された内部アドレスビットAQ1[0]〜AQ1[N−1]をアドレス出力端子AQから出力する。
アドレス出力機能付き第2のメモリモジュール182は、入力されたNビットの第2のアドレスビットAdd[0:N−1]から生成された内部アドレスビットAQ2[0]〜AQ2[N−1](以下、AQ2と称することもある)を内部アドレス出力端子AQから出力する。
アドレス出力機能付き第1のメモリモジュール181では、データの書き込み時に、第1の選択信号cen1が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所に、データ信号Data[0:M]が書き込まれ、第1の選択信号cen1が「0」のときに、データ信号Data[0:M]が書き込まれない。アドレス出力機能付き第1のメモリモジュール181では、データの読出し時に、第1の選択信号cen1が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所から、記憶されているデータ信号Q1が出力される。アドレス出力機能付き第1のメモリモジュール181は、データの読出し時に、第1の選択信号cen1が「0」のときに、記憶されているデータ信号Q1が出力されない。アドレス出力機能付き第1のメモリモジュール181では、第1の選択信号cen1のレベルに係らず、内部アドレスビットAQ1[0]〜AQ1[N−1]を出力する。
アドレス出力機能付き第2のメモリモジュール182では、データの書き込み時に、第2の選択信号cen2が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所に、データ信号Data[0:M]が書き込まれ、第2の選択信号cen2が「0」のときに、データ信号Data[0:M]が書き込まれない。アドレス出力機能付き第2のメモリモジュール182では、データの読出し時に、第2の選択信号cen2が「1」のときに、第2のアドレスビットAdd[0:N−1]で指定される箇所から、記憶されているデータ信号Q2が出力される。アドレス出力機能付き第2のメモリモジュール182では、データの読出し時に、第2の選択信号cen2が「0」のときに、記憶されているデータ信号Q2が出力されない。アドレス出力機能付き第2のメモリモジュール182では、第2の選択信号cen2のレベルに係らず、内部アドレスビットAQ2[0]〜AQ2[N−1]を出力する。
再び、図15を参照して、ERRORセレクタ283は、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルに基づいて、第1のメモリモジュール181から出力される内部アドレスビットAQ1と第2のメモリモジュール182から出力される内部アドレスビットAQ2のうちのいずれかを選択して、比較器184へ出力する。
ERRORセレクタ283は、第1の選択信号cen1のレベルが活性化レベルの「1」、かつ第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、第1のメモリモジュール181から出力される内部アドレスビットAQ1を選択して、比較器184へ出力する。ERRORセレクタ283は、第1の選択信号cen1のレベルが非活性化レベルの「0」、かつ第2の選択信号cen2のレベルが活性化レベルの「1」のときに、第2のメモリモジュール182から出力される内部アドレスビットAQ2を選択して、比較器184へ出力する。ERRORセレクタ283は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール181から出力される内部アドレスビットAQ1および第2のメモリモジュール182から出力される内部アドレスビットAQ2のうちいずれかを出力する。ERRORセレクタ283は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール181から出力される内部アドレスビットAQ1および第2のメモリモジュール182から出力される内部アドレスビットAQ2のうちいずれかを出力する。
比較器184は、ERRORセレクタ283から出力される内部アドレスビットAQ1またはAQ2と、アドレス分割器61から出力される第1のアドレスビットAdd[N]とを合成したビットと、CPU202から出力されるアドレス信号A[0:N]とを比較する。比較器184は、不一致の場合に、故障通知信号ERRORを出力する。
FF77は、選択デコーダ62からERRORセレクタ283への第1の選択信号cen1の伝送経路の途中に設けられる。FF78は、選択デコーダ62からERRORセレクタ283への第2の選択信号cen2の伝送経路の途中に設けられる。FF79は、アドレス分割器61から比較器184の入力への第1のアドレスビットAdd[N]の伝送経路の途中に設けられる。
FF77、FF78、FF79、アドレス出力機能付き第1のメモリモジュール181、およびアドレス出力機能付き第2のメモリモジュール182に供給されるクロックは、同一である。
参考例2の半導体装置1200では、アドレス信号Add[0:N]を処理する選択デコーダ62およびそれに関連する配線の故障を検出することできないという問題がある。
第1の選択信号cen1のレベルと第2の選択信号cen2のレベルのうちの少なくとも一方が誤っている場合でも、第1のメモリモジュール181の出力AQ1と第2のメモリモジュール182の出力AQ2のうちのいずれかがERRORセレクタ283を介して、比較器184に入力されるからである。
[第9の実施形態]
図17は、第9の実施形態の半導体装置1300の構成を表わす図である。
図17を参照して、この半導体装置1300は、アドレス出力機能付き第1のメモリモジュール181と、アドレス出力機能付き第2のメモリモジュール182と、アドレス分割器61と、選択デコーダ62と、ERRORセレクタ283と、FF77,78,79と、エンコーダ191と、比較器194と、割り込み制御部201と、CPU202とを備える。
アドレス出力機能付き第1のメモリモジュール181、アドレス出力機能付き第2のメモリモジュール182、アドレス分割器61、選択デコーダ62、ERRORセレクタ283、FF77,78,79、割り込み制御部201、およびCPU202は、参考例2と同様なので、説明を繰り返さない。
エンコーダ191は、選択デコーダ62から出力される第1の選択信号cen1、第2の選択信号cen2をエンコードして、第1のアドレスビットAdd′[N]を出力する。このエンコードは、選択許可信号CEN=1のときの選択デコーダ62のデコード(変換)の逆変換である。
エンコーダ191は、第1の選択信号cen1が「1」、かつ第2の選択信号cen2が「0」のときに、第1のアドレスビットAdd′[N](=「1」)を出力する。エンコーダ191は、第1の選択信号cen1が「0」、かつ第2の選択信号cen2が「1」のときに、第1のアドレスビットAdd′[N](=「0」)を出力する。
比較器194は、ERRORセレクタ283から出力される内部アドレスビットAQ1またはAQ2と、エンコーダ191から出力される第1のアドレスビットAdd′[N]とを合成したビットと、CPU202から出力されるアドレス信号A[0:N]とを比較する。比較器194は、不一致の場合に、故障通知信号ERRORを出力する。
選択デコーダ62の故障によって選択デコーダ62から出力される第1の選択信号cen1のレベルと第2の選択信号cen2のレベルがともに反転したときには、エンコーダ191から出力される第1のアドレスビットAdd′[N]は、アドレスビットAdd[N]と相違することになる。この相違を検出することによって、選択デコーダ62の故障を判定することができる。
[第10の実施形態]
図18は、第10の実施形態の半導体装置1400の構成を表わす図である。
図18を参照して、この半導体装置1400は、アドレス出力機能付き第1のメモリモジュール181と、アドレス出力機能付き第2のメモリモジュール182と、アドレス分割器61と、選択デコーダ62と、ERRORセレクタ283とを備える。半導体装置1400は、FF77,78,79と、CGC(Clock Gating Circuit)192,193と、比較器184と、割り込み制御部201と、CPU202とを備える。
アドレス出力機能付き第1のメモリモジュール181、アドレス出力機能付き第2のメモリモジュール182、アドレス分割器61、選択デコーダ62、ERRORセレクタ283、FF77,78,79、比較器184、割り込み制御部201、およびCPU202は、参考例2と同様なので、説明を繰り返さない。
CGC192は、第1の選択信号cen1が活性化レベル「1」のときに、第1のメモリモジュール181へクロックCLKを出力する。CGC193は、第2の選択信号cen2が活性化レベル「1」のときに、第2のメモリモジュール182へクロックCLKを出力する。
第1のメモリモジュール181は、第2のアドレスビットAdd[0:N−1]を受けて、クロックCLKのエッジのタイミングで、入力された第2のアドレスビットAdd[0:N−1]の最新値を取り込む。第1のメモリモジュール181は、第2のアドレスビットAdd[0:N−1]の最新値に基づき、メモリアレイMARYへのデータの書き込み、またはメモリアレイMARYからのデータの読出しを実行するとともに、第2のアドレスビットAdd[0:N−1]の最新値の内部アドレスビットAQ1を出力する。したがって、第1の選択信号cen1が「1」のときには、第1のメモリモジュール181から、第2のアドレスビットAdd[0:N−1]の最新値の内部アドレスビットが出力される。第1の選択信号cen1が「0」のときには、第1のメモリモジュール181から、第2のアドレスビットAdd[0:N−1]の以前の値の内部アドレスビットが出力される。
第2のメモリモジュール182は、第2のアドレスビットAdd[0:N−1]を受けて、クロックCLKのエッジのタイミングで、入力された第2のアドレスビットAdd[0:N−1]の最新値を取り込む。第2のメモリモジュール182は、第2のアドレスビットAdd[0:N−1]の最新値に基づき、メモリアレイMARYへのデータの書き込み、またはメモリアレイMARYからのデータの読出しを実行するとともに、第2のアドレスビットAdd[0:N−1]の最新値の内部アドレスビットAQ2を出力する。したがって、第2の選択信号cen2が「1」のときには、第2のメモリモジュール182から、第2のアドレスビットAdd[0:N−1]の最新値の内部アドレスビットが出力される。第2の選択信号cen2が「0」のときには、第2のメモリモジュール182から、第2のアドレスビットAdd[0:N−1]の以前の値の内部アドレスビットが出力される。
比較器184は、ERRORセレクタ283から出力される内部アドレスビットAQ1またはAQ2と、最上位ビットAdd[N]とを合成したビットと、CPU202から出力されるアドレス信号A[0:N]とを比較する。比較器184は、不一致の場合に、故障通知信号ERRORを出力する。
選択デコーダ62の故障によって、選択許可信号CENのレベルが「1」、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」となったときには、以下のような動作が行われる。第1のメモリモジュール181の出力AQ1は、第2のアドレスビットの以前の値(すなわち、1つ前の周期の値)の内部アドレスビットとなり、第2のメモリモジュール182の出力AQ2も第2のアドレスビットの以前の値の内部アドレスビットとなる。ERRORセレクタ283によって、第1のメモリモジュール181の出力AQ1と、第2のメモリモジュール182の出力AQ2のいずれか一方が選択されて比較器184に入力される。これによって、比較器184には、第2のアドレスビットAdd[0:N−1]の以前の値の内部アドレスビットが入力されるため、故障を検知することができる。
[第11の実施形態]
図19は、第11の実施形態の半導体装置1500の構成を表わす図である。
この半導体装置1500は、アドレス出力機能付き第1のメモリモジュール181と、アドレス出力機能付き第2のメモリモジュール182と、アドレス分割器61と、選択デコーダ62と、ECCエンコーダ21と、ERRORセレクタ283とを備える。半導体装置1500は、さらに、セレクタ141と、セレクタ142と、ECCデコーダ122と、故障判定部121と、比較器184と、FF73,74,75,76,77,78,79と、割り込み制御部301と、CPU302とを備える。
アドレス出力機能付き第1のメモリモジュール181と、アドレス出力機能付き第2のメモリモジュール182と、アドレス分割器61と、選択デコーダ62と、ECCエンコーダ21と、ERRORセレクタ283は、上述のいずれかの実施形態で説明したものと同様なので説明を繰り返さない。また、セレクタ141と、セレクタ142と、ECCデコーダ122と、故障判定部121と、比較器184と、FF73,74,75,76,77,78,79は、上述のいずれかの実施形態で説明したものと同様なので説明を繰り返さない。
故障判定部121は、選択デコーダ62が第1の故障状態と判定したときに、第1の故障通知信号ERROR1を割り込み制御部301へ出力する。第1の故障状態とは、選択許可信号CENが「1」のときに、第1の選択信号cen1と第2の選択信号cen2の一方が「1」で他方が「0」となるのが正しい場合に、第1の選択信号cen1と第2の選択信号cen2の両方が「0」または「1」となる故障である。また、選択許可信号CENが「1」のときに、第1の選択信号cen1と第2の選択信号cen2の両方が「0」となるのが正しい場合に、少なくとも1つが「1」となるような故障である。
比較器184は、選択デコーダ62が第2の故障状態のため、入力される2つのアドレスが不一致となった場合に、第2の故障通知信号ERROR2を出力する。第2の故障状態とは、第1の選択信号cen1のレベルが反転するとともに、第2の選択信号cen2のレベルも反転する故障である。
ECCデコーダ122は、FF73,74,75,76のいずれかが故障状態の結果、誤りを検出したときには、第3の故障通知信号ERROR3を割り込み制御部301へ出力する。
割り込み制御部301は、第1の故障通知信号ERROR1、第2の故障通知信号ERROR2、および第3の故障通知信号ERROR3をCPU302に伝える。第1の故障通知信号ERROR1が最も優先度が高く、第2の故障通知信号ERROR2が次に優先度が高く、第3の故障通知信号ERROR3が優先度が最も低いものとする。
図20は、故障が通知されたときのCP302の処理手順を表わすフローチャートである。
図20を参照して、ステップS501において、CPU302が第1の故障通知信号ERROR1を受信したときには、処理がステップS510に進み、CPU302が第1の故障通知信号ERROR1を受信しないときには、処理がステップS502に進む。
ステップS502において、CPU302が第2の故障通知信号ERROR2を受信したときには、処理がステップS507に進み、CPU302が第2の故障通知信号ERROR2を受信しないときには、処理がステップS503に進む。
ステップS503において、CPU302が第3の故障通知信号ERROR3を受信したときには、処理がステップS505に進み、CPU302が第3の故障通知信号ERROR3を受信しないときには、処理がステップS504に進む。
ステップS505において、CPU302が第3の故障通知信号ERROR3を受信したのが2回目の場合に、処理がステップS509に進み、CPU302が第3の故障通知信号ERROR3を受信したのが1回目の場合に、処理がステップS506に進む。
ステップS507において、CPU302がテストを実行する。
ステップS508において、テスト結果が良好の場合に、処理がステップS503に進み、テスト結果が不良の場合に、処理がステップS509に進む。
ステップS504において、CPU302は、通常処理が実行されるように制御する。
ステップS506において、CPU302は、直前の動作を繰り返す繰り返し処理が実行されるように制御する。
ステップS509において、CPU302は、代替処理が実行されるように制御する。
ステップS510において、CPU302は、危険回避処理が実行されるように制御する。
以上のように、本実施の形態では、複数種類の故障が発生する可能性がある場合に、発生した故障の種類の優先度に応じた処理を実行することができる。
[第12の実施形態]
図21は、第12の実施形態の半導体装置1600の構成を表わす図である。
図21を参照して、この半導体装置1600は、アドレス出力機能付き第1のメモリモジュール281と、アドレス出力機能付き第2のメモリモジュール282と、アドレス分割器61と、選択デコーダ62と、ERRORセレクタ283と、比較器284と、FF77,78,79と、割り込み制御部401と、CPU202とを備える。
アドレス分割器61、選択デコーダ62、FF77,78,79、およびCPU202は、参考例2と同様なので、説明を繰り返さない。
アドレス出力機能付き第1のメモリモジュール281およびアドレス出力機能付き第2のメモリモジュール282は、実施の形態2の第1のメモリモジュール45と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。
アドレス出力機能付き第1のメモリモジュール281およびアドレス出力機能付き第2のメモリモジュール282の各々には、アドレス分割器61から出力されたNビットの第2のアドレスビットAdd[0:N−1](第1のアドレス信号)と、CPU202から直接送られるNビットのアドレスビットA[0:N−1](第2のアドレス信号)が入力される。アドレスビットA[0:N−1]は、内部アドレスビットAQ1[0:N−1]が正常か否かを調べるための期待値信号として機能する。
アドレス出力機能付き第1のメモリモジュール281は、第1の選択信号cen1を受ける。アドレス出力機能付き第1のメモリモジュール281は、第1の選択信号cen1のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第1のメモリモジュール281は、第1の選択信号cen1のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
アドレス出力機能付き第2のメモリモジュール282は、第2の選択信号cen2を受ける。アドレス出力機能付き第2のメモリモジュール282は、第2の選択信号cen2のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第2のメモリモジュール282は、第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
図22は、アドレス出力機能付き第1のメモリモジュール281の構成を表わす図である。アドレス出力機能付き第2のメモリモジュール282も、これと同様である。
図22を参照して、アドレス出力機能付き第1のメモリモジュール281が、図3の第1のメモリモジュール41と相違する点は、比較器285と、故障通知出力端子EAと、アドレス入力端子ADBと、クロック供給源888と、選択端子CNとを備える点である。
アドレス入力端子ADBは、(N+1)ビットのアドレス信号A[0:N]のうちのNビットのアドレスビットA[0:N−1](下位の第1の個数のビット)をCPU202から直接受ける。
選択端子CNは、第1の選択信号cen1を受けて、クロック供給源888へ出力する。クロック供給源888は、第1の選択信号cen1のレベルが活性化レベルの「1」のときに、クロックCLKをアドレス出力機能付き第1のメモリモジュール281へ供給する。クロック供給源888は、第1の選択信号cen1のレベルが非活性化レベルの「0」のときに、クロックCLKをアドレス出力機能付き第1のメモリモジュール281へ供給しない。
比較器285は、アドレス入力端子ADBから送られるNビットのアドレスビットA[0:N−1]と、一時記憶回路650から出力されるNビットの内部アドレスビットAQ1[0:N−1]とを比較する。比較器285は、比較結果が不一致のときには、故障通知信号ERROR1を出力する。
故障通知出力端子EAは、故障通知信号ERROR1を出力する。
アドレス出力機能付き第2のメモリモジュール282は、同様にして、故障通知信号ERROR2を出力する。
再び、図21を参照して、ERRORセレクタ283は、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルに基づいて、第1のメモリモジュール281から出力される故障通知信号ERROR1と第2のメモリモジュール282から出力される故障通知信号ERROR2のうちのいずれかを選択して、選択した故障通知信号を故障通知信号ERROR3として、割り込み制御部401へ出力する。
ERRORセレクタ283は、第1の選択信号cen1のレベルが活性化レベルの「1」、かつ第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、第1のメモリモジュール281から出力される故障通知信号ERROR1を選択する。ERRORセレクタ283は、第1の選択信号cen1のレベルが非活性化レベルの「0」、かつ第2の選択信号cen2のレベルが活性化レベルの「1」のときに、第2のメモリモジュール282から出力される故障通知信号ERROR2を選択する。ERRORセレクタ283は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」のときに、第1のメモリモジュール281から出力される故障通知信号ERROR1および第2のメモリモジュール282から出力される故障通知信号ERROR2のうちのいずれかを選択する。ERRORセレクタ283は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「1」のときに、第1のメモリモジュール281から出力される故障通知信号ERROR1および第2のメモリモジュール282から出力される故障通知信号ERROR2のうちのいずれかを選択する。
比較器284は、アドレス分割器61から出力される第1のアドレスビットAdd[N]と、CPU202から直接送られる第1のアドレスビットA[N]とを比較する。比較器284は、比較結果が不一致のときに、故障通知信号ERROR4を割り込み制御部401へ出力する。
割り込み制御部401は、故障通知信号ERROR3または故障通知信号ERROR4を受けたときに、CPU202に故障を検知したことを割り込み通知する。
本実施の形態によれば、メモリモジュール内に比較器を設けて、メモリモジュール内でアドレスの比較によって、故障判定する。これによって、従来は、メモリモジュールからアドレス信号のビット数分の信号を出力していたのに対して、本実施の形態では、メモリモジュールから1ビットの信号を出力するだけでよくなる。
図23は、アドレス出力機能付き第1のメモリモジュール281のレイアウトを表わす図である。アドレス出力機能付き第2のメモリモジュール282も、これと同様である。
メモリモジュール281への入出力端子は、制御部CTRLの近辺に集中して配置される。入出力端子と接続する信号線の数が多いと、制御部CTRLの近辺で電流集中が起こりやすくなる。本実施の形態では、出力する信号のビット数を低減することによって、特定の箇所に多量の電流が集中して流れるのを抑制することができる。
[第13の実施形態]
図24は、第13の実施形態の半導体装置1700の構成を表わす図である。
図24を参照して、この半導体装置1700は、アドレス出力機能付き第1のメモリモジュール381と、アドレス出力機能付き第2のメモリモジュール382と、アドレス分割器61と、選択デコーダ62と、ERRORセレクタ283と、比較器284と、FF77,78,79と、割り込み制御部401と、CPU202とを備える。
アドレス分割器61、選択デコーダ62、FF77,78,79、およびCPU202は、参考例2と同様なので、説明を繰り返さない。ERRORセレクタ283、比較器284、および割り込み制御部401は、第12の実施形態と同様なので、説明を繰り返さない。
アドレス出力機能付き第1のメモリモジュール381およびアドレス出力機能付き第2のメモリモジュール382は、実施の形態2の第1のメモリモジュール45と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。
アドレス出力機能付き第1のメモリモジュール381およびアドレス出力機能付き第2のメモリモジュール382の各々には、アドレス分割器61から出力されたNビットの第2のアドレスビットAdd[0:N−1]と、テストアドレスが入力される。
アドレス出力機能付き第1のメモリモジュール381は、第1の選択信号cen1を受ける。アドレス出力機能付き第1のメモリモジュール381は、第1の選択信号cen1のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第1のメモリモジュール381は、第1の選択信号cen1のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
アドレス出力機能付き第2のメモリモジュール382は、第2の選択信号cen2を受ける。アドレス出力機能付き第2のメモリモジュール382は、第2の選択信号cen2のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第2のメモリモジュール382は、第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
図25は、アドレス出力機能付き第1のメモリモジュール381の構成を表わす図である。アドレス出力機能付き第2のメモリモジュール382も、これと同様である。
図25を参照して、アドレス出力機能付き第1のメモリモジュール381が、図3の第1のメモリモジュール41と相違する点は、比較器385と、故障通知出力端子EAと、テストアドレス入力端子TAと、セレクタ386と、クロック供給源888と、選択端子CNとを備える点である。
テストアドレス入力端子TAには、たとえばCPU202から直接送られるNビットのテストアドレス信号TAdd[0:N−1]が入力される。たとえば、テストアドレス信号TAdd[0:N−1]は、全ビットが0の信号、あるいは全ビットが1の信号とすることができる。
なお、テストアドレス入力端子TAに入力されるテストアドレス信号は、Nビットのテストアドレス信号TAdd[0:N−1]に限らない。たとえば、1ビットのテストアドレス信号であってもよい。メモリモジュール381が、1ビットのテストアドレス信号を受けたときに、Nビットのテストアドレス信号を生成して、セレクタ386へ供給するものとしてもよい。
選択端子CNは、第1の選択信号cen1を受けて、クロック供給源888へ出力する。クロック供給源888は、第1の選択信号cen1のレベルが活性化レベルの「1」のときに、クロックCLKをアドレス出力機能付き第1のメモリモジュール381へ供給する。クロック供給源888は、第1の選択信号cen1のレベルが非活性化レベルの「0」のときに、クロックCLKをアドレス出力機能付き第1のメモリモジュール381へ供給しない。
セレクタ386は、図示しない制御信号に従って、アドレス入力端子ADAから送られるNビットの第2のアドレスビットAdd[0:N−1]と、テストアドレス入力端子TAから送られるNビットのテストアドレス信号TAdd[0:N−1]のうちのいずれか選択して、選択した方をアドレスビットB[0:N−1]として、比較器385へ出力する。第2のアドレスビットAdd[0:N−1]が選択されるときには、第2のアドレスビットAdd[0:N−1]は、内部アドレスビットAQ1[0:N−1]が正常か否かを調べるための期待値信号として機能する。テストアドレス信号TAdd[0:N−1]が選択されたときには、テストアドレス信号TAdd[0:N−1]は、比較器385が正常か否かを調べるための信号として機能する。
比較器385は、セレクタ386から出力されるNビットのアドレスビットB[0:N−1]と、一時記憶回路650から出力されるNビットの内部アドレスビットAQ1[0:N−1]とを比較する。比較器385は、比較結果が不一致のときには、故障通知信号ERROR1を出力する。
故障通知出力端子EAは、故障通知信号ERROR1を出力する。
アドレス出力機能付き第2のメモリモジュール382は、同様にして、故障通知信号ERROR2を出力する。
本実施の形態では、テストアドレスをNビット未満とすることによって、第12の実施形態よりも、メモリモジュールの入力端子数を削減することができる。これによって、メモリモジュール周辺での配線領域を削減でき、空き領域を電源強化領域として開放できる。よって、さらに電流集中を回避することができる。また、本実施の形態では、メモリモジュール内の比較器の故障検出も可能である。
なお、第12の実施形態のメモリモジュールにおいても、テストアドレスを入力するテストアドレス入力端子TAと、テストアドレスTAdd[0:N−1]と、アドレスビットA[0:N−1]とを選択して、比較器へ供給するセレクタとを設けるものとしてもよい。
[第14の実施形態]
図26は、第14の実施形態の半導体装置1800の構成を表わす図である。
図26を参照して、この半導体装置1800は、アドレス出力機能付き第1のメモリモジュール481と、アドレス出力機能付き第2のメモリモジュール482と、アドレス分割器61と、選択デコーダ62と、ERROR/AQセレクタ483と、比較器284と、FF77,78,79と、割り込み制御部401と、エラーアドレス保持回路484と、CPU202とを備える。
アドレス分割器61、選択デコーダ62、FF77,78,79、およびCPU202は、参考例2と同様なので、説明を繰り返さない。比較器284、および割り込み制御部401は、第12の実施形態と同様なので、説明を繰り返さない。
アドレス出力機能付き第1のメモリモジュール481およびアドレス出力機能付き第2のメモリモジュール482は、実施の形態2の第1のメモリモジュール45と同様に、複数個のSRAMメモリセルを有するメモリアレイと、SRAMロジック回路とを備える。
アドレス出力機能付き第1のメモリモジュール481およびアドレス出力機能付き第2のメモリモジュール482の各々には、アドレス分割器61から出力されたNビットの第2のアドレスビットAdd[0:N−1]と、CPU202から直接送られるNビットのアドレスビットA[0:N−1]が入力される。
アドレス出力機能付き第1のメモリモジュール481は、第1の選択信号cen1を受ける。アドレス出力機能付き第1のメモリモジュール481は、第1の選択信号cen1のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第1のメモリモジュール481は、第1の選択信号cen1のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
アドレス出力機能付き第2のメモリモジュール482は、第2の選択信号cen2を受ける。アドレス出力機能付き第2のメモリモジュール482は、第2の選択信号cen2のレベルが活性化レベルの「1」のときに、データの読出しおよび書き込みが可能となる。アドレス出力機能付き第2のメモリモジュール482は、第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、データの読出しおよび書き込みが不可能となる。
図27は、アドレス出力機能付き第1のメモリモジュール481の構成を表わす図である。アドレス出力機能付き第2のメモリモジュール482も、これと同様である。
図27を参照して、アドレス出力機能付き第1のメモリモジュール481が、図22のアドレス出力機能付き第1のメモリモジュール281と相違する点は、セレクタ584を備える点である。
セレクタ584は、一時記憶回路650から出力されるNビットの内部アドレスビットAQ1[0:N−1]と、データ入出力部IOから出力されるデータ信号D1[0:M]のうち一方を選択し、選択した信号をメモリモジュール出力データADTA1としてデータ入出力端子DAに出力する。セレクタ584は、故障通知信号ERROR1を受けないときには、データ信号D1[0:M]を選択する。セレクタ584は、故障通知信号ERROR1を受けたときには、内部アドレスビットAQ1[0:N−1]を選択する。
アドレス出力機能付き第2のメモリモジュール482は、故障通知信号ERROR2とメモリモジュール出力データADTA2とを出力する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルに基づいて、第1のメモリモジュール481から出力される故障通知信号ERROR1と第2のメモリモジュール482から出力される故障通知信号ERROR2のうちのいずれかを選択する。ERROR/AQセレクタ483は、選択した故障通知信号を故障通知信号ERROR3として、割り込み制御部401およびエラーアドレス保持回路484へ出力する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルおよび第2の選択信号cen2のレベルに基づいて、第1のメモリモジュール481から出力されるメモリモジュール出力データADTA1と第2のメモリモジュール482から出力されるメモリモジュール出力データADTA2のうちのいずれかを選択する。ERROR/AQセレクタ483は、選択した方をメモリモジュール出力データADTA3として、エラーアドレス保持回路484へ出力する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルが活性化レベルの「1」、かつ第2の選択信号cen2のレベルが非活性化レベルの「0」のときに、第1のメモリモジュール481から出力される故障通知信号ERROR1およびメモリモジュール出力データADTA1を選択する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルが非活性化レベルの「0」、かつ第2の選択信号cen2のレベルが活性化レベルの「1」のときに、第2のメモリモジュール482から出力される故障通知信号ERROR2およびメモリモジュール出力データADTA2を選択する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルが「0」、かつ第2の選択信号cen2のレベルが「0」のときに、故障通知信号ERROR1および故障通知信号ERROR2のうちのいずれかを選択し、メモリモジュール出力データADTA1およびメモリモジュール出力データADTA2のうちのいずれかを選択する。
ERROR/AQセレクタ483は、第1の選択信号cen1のレベルが「1」、かつ第2の選択信号cen2のレベルが「1」のときに、故障通知信号ERROR1および故障通知信号ERROR2のうちのいずれかを選択し、メモリモジュール出力データADTA1およびメモリモジュール出力データADTA2のうちのいずれかを選択する。
エラーアドレス保持回路484は、メモリモジュール出力データADTA3を受ける。エラーアドレス保持回路484は、故障通知信号ERRO3を受けたときには、メモリモジュール出力データADTA3を保持する。なぜなら、故障通知信号ERRO3を受信したときには、メモリモジュール出力データADTA3は、内部アドレスビットAQ1[0:N−1]またはAQ2[0:N−1]を表わすからである。
さらに、エラーアドレス保持回路484は、第1のアドレスビットAdd[N]を受ける。エラーアドレス保持回路484は、故障通知信号ERROR4を受けたときには、第1のアドレスビットAdd[N]を保持する。
本実施の形態によれば、故障通知信号が出力されたときに、故障に関係するアドレスがエラーアドレス保持回路に保持される。これによって、故障が通知されたときに、メモリBIST(Built-In Self Test)を実施して、故障に関係するアドレスを特定する作業を不要にすることができる。
(変形例)
本開示は、上記の実施形態に限定されるものではなく、たとえば、以下のような変形例も含む。
(1)メモリモジュールの数
第2〜第11の実施形態では、半導体装置が1つまたは2つのメモリモジュールを備える場合について説明したが、これに限定されるものではない。たとえば、半導体装置が、2N個のメモリモジュールを備えるものとしてもよい。
アドレス分割器61は、2N個のメモリモジュールがある場合に、アドレス信号のMSB側から上位Nビットをメモリモジュールの選択のための第1のアドレスビットとし、それ以外を第2のアドレスビットとすることができる。選択デコーダは、2N個のメモリモジュールへ供給する選択信号cen1〜cen2Nを生成する。図4、図7の故障判定部121、131は、選択許可信号CEN、および選択信号cen1〜cen2Nに基づいて、選択デコーダ62の故障を判定する。図8のセレクタ141は、選択信号cen1〜cen2Nに基づいて、2N個のメモリモジュールから出力される2N個の第1グループの複数ビットのうちいずれかを選択する。図8のセレクタ142は、選択信号cen1〜cen2Nに基づいて、2N個のメモリモジュールから出力される2N個の第2グループの複数ビットのうちいずれかを選択する。図17、図18のERRORセレクタ283は、選択信号cen1〜cen2Nに基づいて、2N個のメモリモジュールから出力される2N個の内部アドレスビットのいずれかを選択して出力する。
(2)第7の実施形態のECC
第7の実施形態のECCエンコーダ221、ECCデコーダ222を省略し、メモリアレイ162には、データとアドレスのみを記憶するものとしてもよい。
(3)メモリモジュール
第9の実施形態で説明したメモリモジュールは、選択信号が活性化されたときに動作するものとしてもよい。たとえば、選択信号が非活性化されているときには、メモリモジュール内のクロック源が、メモリモジュール内の各構成要素へのクロックの供給を停止するものとしてもよい。
(付記)
なお、上記の実施形態に基づき、本開示には、以下のよう発明も含まれる。
(請求項A)
複数個の正規メモリセルと冗長メモリセルとを有するメモリアレイと、
前記複数個の正規メモリセルの中の不良メモリセルのアドレス信号をデコードして、アドレスデコード信号を出力する冗長デコーダと、
前記アドレスデコード信号に従って、前記不良メモリセルの代わりに、前記冗長メモリセルにデータが書き込まれるように制御する第1の冗長制御回路と、
前記アドレスデコード信号に従って、前記不良メモリセルの代わりに、前記冗長メモリセルからデータが読み出されるように制御する第2の冗長制御回路と、
前記アドレスデコード信号をエンコードして、アドレス信号を出力するエンコーダと、
前記冗長デコーダに入力される前記アドレス信号と、前記エンコーダから出力される前記アドレス信号とを比較する比較器とを備えた、半導体装置。
(請求項B)
複数個の正規メモリセルと冗長メモリセルとを有するメモリアレイと、
データの書込み時に、前記複数個の正規メモリセルの中の不良メモリセルのアドレス信号をデコードして、第1のアドレスデコード信号を出力する第1の冗長デコーダと、
データの読み出し時に、前記複数個の正規メモリセルの中の不良メモリセルのアドレス信号をデコードして、第2のアドレスデコード信号を出力する第2の冗長デコーダと、
前記メモリアレイへのデータを誤り検出訂正符号化するECCエンコーダと、
データの書込み時に、前記第1のアドレスデコード信号に従って、前記不良メモリセルの代わりに、前記冗長メモリセルに前記ECCエンコーダの出力が書き込まれるように制御する第1の冗長制御回路と、
データの読み出し時に、前記第2のアドレスデコード信号に従って、前記不良メモリセルの代わりに、前記冗長メモリセルからデータが読み出されるように制御する第2の冗長制御回路と、
前記メモリアレイから出力されるデータを誤り検出訂正するするECCデコーダとを備えた、半導体装置。
(請求項C)
データと、アドレスと、検査ビットとからなるビット列を記憶するメモリアレイと、
前記メモリアレイへのデータの書き込み時に書き込み用のアドレスをデコードして第1のデコード信号を出力し、前記メモリアレイからのデータの読出し時に読出し用のアドレスをデコードして第2のデコード信号を出力するアドレスデコーダと、
データの書き込み時に、データと、前記書き込み用のアドレスとからなるビット列を誤り検出訂正符号化して、検査ビットを生成するECCエンコーダとを備え、
前記メモリアレイ内の前記第1のデコード信号で指定される位置に、前記データと、前記書き込み用のアドレスと、前記検査ビットとからなるビット列が書き込まれ、
データの読出し時に、前記メモリアレイは、前記第2のデコード信号で指定される位置からデータとアドレスと検査ビットからなるビット列を出力し、
前記メモリアレイから出力されたビット列を誤り検出訂正するECCデコーダと、
前記ECCデコーダから出力されるアドレスと、前記読出し用のアドレスとを比較する比較器とを備えた、半導体装置。
(請求項D)
データと、検査ビットとからなるビット列を記憶するメモリアレイと、
前記メモリアレイへのデータの書き込み時に書き込み用のアドレスをデコードして第1のデコード信号を出力し、前記メモリアレイからのデータの読出し時に読出し用のアドレスをデコードして第2のデコード信号を出力するアドレスデコーダと、
データの書き込み時に、データと、前記書き込み用のアドレスとからなるビット列を誤り検出訂正符号化して、検査ビットを生成するECCエンコーダとを備え、
前記メモリアレイ内の前記第1のデコード信号で指定される位置に、前記データと、前記検査ビットとからなるビット列が書き込まれ、
データの読出し時に、前記メモリアレイは、前記第2のデコード信号で指定される位置からデータと検査ビットからなるビット列を出力し、
前記メモリアレイから出力されたビット列に前記読出用のアドレスを付加して誤り検出訂正するECCデコーダとを備えた、半導体装置。
(請求項E)
複数個のメモリモジュールを備え、前記複数個のメモリモジュールにおけるデータの格納位置を表わすアドレス信号を表わす複数ビットは、第1のアドレスビットと第2のアドレスビットとを含み、前記複数個のメモリモジュールの各々は、前記第2のアドレスビットを受けて、前記第2のアドレスビットから生成した内部アドレスビットを出力し、
前記第1のアドレスビットをデコードして、複数個の選択信号のレベルを制御する選択デコーダと、
前記複数個の選択信号のレベルに基づいて、前記選択デコーダが故障状態か否かを判定し、故障状態のときに第1の故障通知信号を出力する故障判定部と、
前記複数個の選択信号をエンコードして、アドレスビットを出力するエンコーダと、
前記複数個の選択信号のレベルに基づいて、前記複数個のメモリモジュールから出力される内部アドレスビットのいずれかを選択する第1のセレクタと、
前記第1のセレクタから出力される内部アドレスビットと、前記エンコーダから出力されるアドレスビットとを合成したビット列と、前記アドレス信号を表わす複数ビットとを比較し、不一致の場合に、第2の故障通知信号を出力する比較器と、
ライトデータを誤り検出訂正符号化するECCエンコーダとを備え、
前記複数個のメモリモジュールの各々には、対応する選択信号が活性化レベルのときに、前記誤り検出訂正符号化されたライトデータが書き込まれ、
前記複数個のメモリモジュールの各々からの出力データの複数ビットは、第1グループの複数個のビットと、第2グループの複数個のビットに分類され、
前記複数個の選択信号のレベルに基づいて、前記複数個のメモリモジュールから出力される複数個の第1グループの複数ビットのうちのいずれかを選択して出力する第2のセレクタと、
前記複数個の選択信号のレベルに基づいて、前記複数個のメモリモジュールから出力される複数個の第2グループの複数ビットのうちのいずれかを選択して出力する第3のセレクタと、
前記第2のセレクタの出力と前記第3のセレクタの出力とを合成したビット列を誤り検出訂正し、誤りが検出されたときに第3の故障通知信号を出力するECCデコーダと、
受信した故障通知信号の種類に応じた処理を実行するCPUとを備える、半導体装置。
(請求項F)
複数個のメモリモジュールを備え、前記複数個のメモリモジュールにおけるデータの格納位置を表わすアドレス信号を表わす複数ビットは、第1のアドレスビットと第2のアドレスビットとを含み、前記複数個のメモリモジュールの各々は、前記第2のアドレスビットを受けて、前記第2のアドレスビットから生成した内部アドレスビットを出力し、
前記第1のアドレスビットをデコードして、複数個の選択信号のレベルを制御する選択デコーダと、
前記複数個の選択信号をエンコードして、アドレスビットを出力するエンコーダと、
前記複数個の選択信号のレベルに基づいて、前記複数個のメモリモジュールから出力される前記内部アドレスビットのいずれかを選択するセレクタと、
前記セレクタから出力される前記内部アドレスビットと、前記エンコーダから出力される前記アドレスビットとを合成したビット列と、前記アドレス信号を表わす前記複数ビットとを比較する比較器とを備えた、半導体装置。
(請求項G)
複数個のメモリモジュールを備え、前記複数個のメモリモジュールにおけるデータの格納位置を表わすアドレス信号を表わす複数ビットは、第1のアドレスビットと第2のアドレスビットとを含み、前記複数個のメモリモジュールの各々は、前記第2のアドレスビットを受けて、前記第2のアドレスビットから生成した内部アドレスビットを出力し、
前記第1のアドレスビットをデコードして、複数個の選択信号のレベルを制御する選択デコーダと、
各々が、クロックを受けて、対応する前記選択信号が活性化レベルのときに、対応する前記メモリモジュールへ前記クロックを出力する複数個のクロックゲートとを備え、
前記複数個のメモリモジュールの各々は、対応する前記クロックゲートから出力される前記クロックを受けると、前記第2のアドレスビットの最新値から生成される前記内部アドレスビットを出力し、
前記複数個の選択信号のレベルに基づいて、前記複数個のメモリモジュールから出力される前記内部アドレスビットのいずれかを選択するセレクタと、
前記セレクタから出力される前記内部アドレスビットと、前記第1のアドレスビットとを合成したビットと、前記アドレス信号とを比較する比較器と、
各々が、対応する前記選択信号が前記セレクタに供給される経路に設けられた複数個のフリップフロップとを備え、
前記複数個のブリップフロップ、および前記複数個のメモリモジュールには、同一のクロック信号が入力される、半導体装置。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。