(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-19
(45)【発行日】2022-07-27
(54)【発明の名称】半導体装置及び半導体メモリの故障検出方法
(51)【国際特許分類】
G06F 11/10 20060101AFI20220720BHJP
G11C 29/04 20060101ALI20220720BHJP
【FI】
G06F11/10 662
G11C29/04
(21)【出願番号】P 2018034152
(22)【出願日】2018-02-28
【審査請求日】2020-12-28
(73)【特許権者】
【識別番号】308033711
【氏名又は名称】ラピスセミコンダクタ株式会社
(74)【代理人】
【識別番号】100079119
【氏名又は名称】藤村 元彦
(74)【代理人】
【識別番号】100147728
【氏名又は名称】高野 信司
(72)【発明者】
【氏名】茂木 久利
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開平08-314811(JP,A)
【文献】特開平03-154950(JP,A)
【文献】特開平05-173899(JP,A)
【文献】特開平08-016487(JP,A)
【文献】特開平03-108044(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/08-11/10
G11C 29/04
(57)【特許請求の範囲】
【請求項1】
書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力するメモリと、
前記読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成する誤り検出訂正回路と、
前記メモリのハードエラー故障を検出するメモリ故障検出回路と、を含み、
前記誤り検出訂正回路は、前記訂正データ片を前記メモリに供給し、
前記メモリ故障検出回路は、
前記アドレスバス上の前記アドレスを保持する第1の保持回路と、
前記誤りビット位置情報を保持する第2の保持回路と、
前記誤り検出信号に応じて、前記第1の保持回路に保持されている前記アドレスを前記メモリに供給しつ
つ書込信号及
び読出信号を順に生成して前記メモリに供給する書込読出制御回路と、
前記読出信号に応じて前記メモリから読み出された読出データ片に応じて前記誤り検出訂正回路が生成した前記誤りビット位置情報と、前記第2の保持回路に保持されている前記誤りビット位置情報とが一致する場合に前記ハードエラー故障が生じていることを示すメモリ故障検出信号を出力する故障検出信号出力回路と、を有することを特徴とする半導体装置。
【請求項2】
前記書込読出制御回路は、
前記誤り検出信号を所定の第1期間だけ遅延させた信号を前記書込信号として生成する第1の遅延回路と、
前記書込信号又は前記書込指令を前記メモリに供給する第1のORゲートと、
前記第1の遅延回路で生成された前記書込信号を所定の第2期間だけ遅延させた信号を前記読出信号として生成する第2の遅延回路と、
前記読出信号又は前記読出指令を前記メモリに供給する第2のORゲートと、を有することを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記書込読出制御回路は、
前記アドレスバス上の前記アドレス、及び前記第1の保持回路に保持されている前記アドレスのうちの一方を選択して前記メモリに供給するセレクタと、
前記誤り
検出訂正回路が前記誤り検出信号を生成してから前記メモリから前記読出データ片が出力されるまでの間に亘り、前記第1の保持回路に保持されている前記アドレスを選択するように前記セレクタを制御する回路と、を含むことを特徴とする請求項1又は2に記載の半導体装置。
【請求項4】
書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力する半導体メモリのハードエラー故障検出方法であって、
前記読出データ片に誤り検出処理を施してビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す第1の誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成し、
前記アドレスバス上の前記アドレスを第1のアドレスとして保持し、
前記誤り検出信号
の生成タイミングで前記第1のアドレス
及び前記訂正データ片を前記メモリに供給しつつ、前記メモリ
に書込信号及
び読出信号を順に供給し、
前記読出信号に応じて前記メモリから読み出された読出データ片に誤り検出処理を施し、ビット誤りが検出された場合にこのビット誤りの位置を表す第2の誤りビット位置情報を生成し、
前記第1の誤りビット位置情報と、前記第2の誤りビット位置情報とが一致する場合に前記メモリにハードエラー故障が生じていることを示すメモリ故障検出信号を生成することを特徴とする半導体メモリの故障検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置、特に半導体メモリを含む半導体装置、及び半導体メモリの故障検出方法に関する。
【背景技術】
【0002】
近年、CPU(中央処理装置)を含む各種のシステムでは、扱うデータ量の増大に伴い、メモリ容量の増加が要求されている。信頼性が要求されるシステムでは、メモリの故障はシステムダウンにつながる懸念があるため不良メモリを早期に検出し保守を行うことが必要となる。
【0003】
メモリの故障には、宇宙線(アルファ線や中性子線)などがメモリに衝突した際にメモリに記憶されているデータが反転するソフトエラー(correctable error)故障と、メモリ自体が物理的に故障するハードエラー(uncorrectable error)故障の2種類がある。
【0004】
このような故障を検出するために、メモリから読み出されたデータに対して、ECC(Error Correction Code)を採用した誤り検出及び誤り訂正が行われる。尚、ECCでは、2ビットまでの誤り検出、及び1ビットの誤り訂正が可能なSECDED(Single Error Correction Double Error Detection)方式が主流になっている。
【0005】
よって、システムの品質を維持するために、SECDED方式のECCを採用して、メモリから読み出されたデータから検出された1ビット誤りが訂正可能なソフトエラーであるのか、又は訂正不可能なハードエラーであるのか区別できることが望まれる。
【0006】
そこで、メモリから読み出されたデータに1ビット誤りが検出された場合に、以下の手順でハードエラーの検出を行うハードエラー検出方式が提案された(例えば、特許文献1参照)。このハードエラー検出方式では、メモリから読み出されたデータから1ビット誤りが検出された場合に、先ず、その1ビット誤りが生じているデータのアドレスを障害アドレスとして保持すると共に、この誤り検出処理の過程で生成されたシンドロームを保持する。次に、この1ビット誤りが生じているデータに対して誤り訂正を施した訂正データを、CPUが当該メモリの障害アドレスに書き込み、引き続きCPUがこの障害アドレスに書き込まれたデータを読み出す。この際、読み出されたデータから1ビット誤りが検出され、且つこの誤り検出処理の過程で生成されたシンドローム及び障害アドレスが、上記のように保持したシンドローム及び障害アドレスと一致した場合にハードエラーであると判定する。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところが、特許文献1に記載のハードエラー検出方式では、メモリから読み出されたデータから誤りが検出される度に、CPUが訂正データをメモリの障害アドレスに書き込む書込アクセス、及び当該訂正データを読み出す読出アクセスを実行する必要がある。
【0009】
よって、CPUに対する負荷が増えると共に、上記したような書込及び読出アクセスによるバスアクセスが余分に発生するため、バスマスタを複数有するシステムでは処理性能を低下させる懸念があった。
【0010】
そこで、本発明は、処理速度の低下を招くことなく、半導体メモリのハードエラー故障を検出することが可能な半導体装置及び半導体メモリの故障検出方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る半導体装置は、書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力するメモリと、前記読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成する誤り検出訂正回路と、前記メモリのハードエラー故障を検出するメモリ故障検出回路と、を含み、前記誤り検出訂正回路は、前記訂正データ片を前記メモリに供給し、前記メモリ故障検出回路は、前記アドレスバス上の前記アドレスを保持する第1の保持回路と、前記誤りビット位置情報を保持する第2の保持回路と、前記誤り検出信号に応じて、前記第1の保持回路に保持されている前記アドレスを前記メモリに供給しつつ書込信号及び読出信号を順に生成して前記メモリに供給する書込読出制御回路と、前記読出信号に応じて前記メモリから読み出された読出データ片に応じて前記誤り検出訂正回路が生成した前記誤りビット位置情報と、前記第2の保持回路に保持されている前記誤りビット位置情報とが一致する場合に前記ハードエラー故障が生じていることを示すメモリ故障検出信号を出力する故障検出信号出力回路と、を有する。
【0012】
また、本発明に係る半導体メモリの故障検出方法は、書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力する半導体メモリのハードエラー故障検出方法であって、前記読出データ片に誤り検出処理を施してビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す第1の誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成し、前記アドレスバス上の前記アドレスを第1のアドレスとして保持し、前記誤り検出信号の生成タイミングで前記第1のアドレス及び前記訂正データ片を前記メモリに供給しつつ、前記メモリに書込信号及び読出信号を順に供給し、前記読出信号に応じて前記メモリから読み出された読出データ片に誤り検出処理を施し、ビット誤りが検出された場合にこのビット誤りの位置を表す第2の誤りビット位置情報を生成し、前記第1の誤りビット位置情報と、前記第2の誤りビット位置情報とが一致する場合に前記メモリにハードエラー故障が生じていることを示すメモリ故障検出信号を生成する。
【発明の効果】
【0013】
本発明によれば、メモリに対するハードエラー故障の検出をCPUを介さずに行うことができるので、CPUの負荷が低減され、他のタスクに影響を及ぼす懸念がなくなる。更に、ハードエラー故障の検出処理を行っている間は、データバス及びアドレスバスに対するバスアクセスが発生しないため、バスマスタを複数有するシステムにおいて処理性能の低下を抑えることが可能となる。
【図面の簡単な説明】
【0014】
【
図1】半導体装置100の構成を示すブロック図である。
【
図2】メモリ故障検出回路40の動作の一例を表すタイムチャートである。
【発明を実施するための形態】
【0015】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【0016】
図1は、本発明に係る半導体装置100の構成を示すブロック図である。
図1に示すように、半導体装置100は、CPU(中央処理装置)10、半導体メモリとしてのメモリ20、ECC(Error Correction Code)回路30、及びメモリ故障検出回路40を含む。
【0017】
CPU10は、アドレスバスABS及びデータバスDBSに接続されている。CPU10は、当該データバスDBS上のデータ片を書き込ませる書込指令WR、及びデータ片の読み出しを促す読出指令RDを、メモリ故障検出回路40を介してメモリ20に供給する。
【0018】
CPU10は、メモリ故障検出回路40から、メモリにハードエラー故障が生じていることを表すメモリ故障検出信号MBDが供給された場合には、その旨を外部機器(図示せず)に通知するメモリ故障通知信号FNを出力する。
【0019】
メモリ20は、クロック信号CLKを受け、当該クロック信号CLKに同期したタイミングで、以下の動作を行う。
【0020】
すなわち、メモリ20は、CPU10から供給された書込指令WRに応じて、データバスDBS上のデータ片(検査ビットを含む)を、アドレスバスABS上のアドレスで示される自身の記憶領域に書き込む。また、メモリ20は、メモリ故障検出回路40から供給された書込信号WTに応じて、ECC回路30から供給された読出データRDC(検査ビットを含む)を、メモリ故障検出回路40から供給されたアドレスADDにて示される自身の記憶領域に書き込む。
【0021】
メモリ20は、CPU10から供給された読出指令RDに応じて、アドレスバスABS上のアドレスにて示される自身の記憶領域に格納されているデータ(検査ビットを含む)を読み出す。また、メモリ20は、メモリ故障検出回路40から供給された読出信号REに応じて、このメモリ故障検出回路40から供給されたアドレスADDにて示される自身の記憶領域に格納されているデータ(検査ビットを含む)を読み出す。
【0022】
メモリ20は、上記したように読み出したデータを読出データRDDとしてECC回路30に供給する。
【0023】
ECC回路30は、例えば2ビットまでの誤り検出が可能であり、且つ1ビット誤りを訂正することが可能なSECDED(Single Error Correction Double Error Detection)方式を採用したECC回路である。
【0024】
ECC回路30は、先ず、読出データRDDに含まれる検査ビットに基づき、当該読出データRDDに対して誤り検出処理を施す。
【0025】
この誤り検出処理の結果、当該読出データRDDに1ビット誤りが生じている場合には、ECC回路30は、1ビット誤りが生じていることを示す例えば論理レベル1の誤り検出信号ERR、及び1ビット誤りの位置を表す誤りビット位置情報BCを生成する。尚、誤り検出信号ERRは、所定期間の間だけ論理レベル1の状態を維持する単一パルスの信号である。ECC回路30は、上記した誤り検出信号ERR及び誤りビット位置情報BCをメモリ故障検出回路40に供給する。
【0026】
また、読出データRDDに1ビット誤りが生じている場合には、ECC回路30は、読出データRDDに対して、その1ビット誤りを訂正する誤り訂正処理を施す。ECC回路30は、この誤り訂正処理によって得られた訂正データを上記した読出データRDCとして、メモリ20及びデータバスDBSに供給する。尚、ECC回路は、読出データRDDにビット誤りが生じていない場合には、この読出データRDDをそのまま読出データRDCとして、メモリ20及びデータバスDBSに供給する。
【0027】
メモリ故障検出回路40は、夫々が上記したクロック信号CLKに同期して動作する、トグルカウンタ41、保持回路42~44、オアゲート(ORゲート)45~47、セレクタ48、遅延回路49及び50、一致判定回路51、及び故障割込出力回路52を含む。
【0028】
トグルカウンタ41は、電源投入時には初期値「0」を有し、単一パルスの誤り検出信号ERRが供給される度にその値が「0」から「1」、又は「1」から「0」に反転するトグルカウント値CTを、保持回路42に供給する。
【0029】
保持回路42は、誤り検出信号ERRが供給された場合には、当該誤り検出信号ERRにて表される論理レベル1を保持する。尚、保持回路42は、トグルカウンタ41から論理レベル0のトグルカウント値CTが供給された場合に、自身の保持内容を論理レベル0の状態にクリアする。保持回路42は、自身に保持された値(論理レベル0又は1)を有するアドレス維持信号ASをオアゲート45に供給する。
【0030】
保持回路43は、アドレスバスABS上のアドレスを保持し、これをアドレスADDとしてセレクタ48に供給する。
【0031】
オアゲート45は、論理レベル1のアドレス維持信号AS、又は論理レベル1の誤り検出信号ERRが供給された場合には、論理レベル1の選択信号SLをセレクタ48に供給する。また、オアゲート45は、アドレス維持信号AS及び誤り検出信号ERRが共に論理レベル0を表す場合には、論理レベル0の選択信号SLをセレクタ48に供給する。
【0032】
セレクタ48は、アドレスバスABS上のアドレスと、上記した保持回路43から供給されたアドレスADDとのうちから、選択信号SLに応じた方を選択し、これをメモリアクセス用のアドレスとしてメモリ20に供給する。すなわち、セレクタ48は、例えば選択信号SLが論理レベル0を表す場合には、アドレスバスABS上のアドレスを選択し、これをメモリ20に供給する。一方、選択信号SLが論理レベル1を表す場合には、セレクタ48は、保持回路43から供給されたアドレスADDを選択し、これをメモリ20に供給する。
【0033】
遅延回路49は、ECC回路30から供給された単一パルスの誤り検出信号ERRを所定の第1期間だけ遅延させた信号を上記した書込信号WTとし、これをオアゲート46及び遅延回路50に供給する。
【0034】
オアゲート46は、この書込信号WT、又はCPU10から供給された書込指令WRを、データの書き込みを促す信号としてメモリ20に供給する。
【0035】
遅延回路50は、当該書込信号WTを所定の第2期間だけ遅延させた信号を上記した読出信号REとし、これをオアゲート47に供給する。
【0036】
オアゲート47は、この読出信号RE、又はCPU10から供給された読出指令RDを、データの読み出しを促す信号としてメモリ20に供給する。
【0037】
保持回路44は、ECC回路30から供給された誤りビット位置情報BCを取り込んで保持する。そして、保持回路44は、保持した誤りビット位置情報BCを誤りビット位置情報BCXとして一致判定回路51に供給する。
【0038】
一致判定回路51は、ECC回路30から供給された誤りビット位置情報BCと、保持回路44から供給された誤りビット位置情報BCXとを比較し、両者が一致している場合に論理レベル1の故障箇所一致信号FLを故障割込出力回路52に供給する。
【0039】
故障割込出力回路52は、誤り検出信号ERR及び故障箇所一致信号FLが共に論理レベル1となったときに、メモリ20にハードエラー故障が生じていることを表す割込信号として、論理レベル1のメモリ故障検出信号MBDをCPU10に供給する。
【0040】
以下に、メモリ故障検出回路40によるハードエラー故障検出動作について説明する。
【0041】
図2は、メモリ20の記憶領域にハードエラー故障が生じている場合に、メモリ故障検出回路40内部で行われる動作を表すタイムチャートである。尚、
図2に示す一例では、メモリ20として、クロック信号CLKに同期して動作するSRAM(Static Random Access Memory)を想定してその動作を説明する。
【0042】
メモリ故障検出回路40は、
図2に示すように、夫々がクロック信号CLKの1周期の長さを有する処理期間T1~T7による一連の処理により、メモリ20に生じているハードエラー故障を検出する。
【0043】
すなわち、先ず、
図2に示す処理期間T1では、メモリ20は、CPU10から発せられた論理レベル1の読出指令RDをオアゲート47を介して受ける。尚、この間、
図2に示すように選択信号SLは論理レベル0の状態にある。よって、セレクタ48は、
図2に示すようにアドレスバスABS上のアドレスRa1をメモリ20に供給する。
【0044】
処理期間T2では、これら読出指令RD及びアドレスRa1に応じて、メモリ20が、
図2に示すようにアドレスRa1にて示される記憶領域に格納されているデータRd1(検査ビットを含む)を表す読出データRDDを出力する。更に、当該処理期間T2では、保持回路43がアドレスRa1を取り込んでこれを保持しつつ、このアドレスRa1を表すアドレスADDをセレクタ48に供給する。
【0045】
次の処理期間T3では、ECC回路30が、上記したデータRd1を表す読出データRDDを取り込み、当該データRd1に対して誤り検出処理を施す。その誤り検出処理の結果、ECC回路30は、1ビット誤りを検出する。この際、ECC回路30は、
図2に示すように、1ビット誤りが生じていることを示す論理レベル1の単一パルスの誤り検出信号ERRと、この1ビット誤りの位置を誤りビット位置Sd1として表す誤りビット位置情報BCを生成する。
【0046】
尚、当該処理期間T3では、上記した論理レベル1の誤り検出信号ERRに応じて、遅延回路49が論理レベル1の書込信号WTを生成し、これをオアゲート46を介してメモリ20に供給する。また、処理期間T3では、この論理レベル1の誤り検出信号ERRに応じて選択信号SLが論理レベル0から論理レベル1に遷移する。論理レベル1の選択信号SLに応じて、セレクタ48は、保持回路43で保持されているアドレスRa1を表すアドレスADDを、メモリ20に供給する。
【0047】
更に、処理期間T3では、ECC回路30が、読出データRDDを取り込み、当該読出データRDDにて表されるデータRd1に生じている1ビット誤りを訂正し、訂正された訂正データCd1を表す読出データRDCを生成する。ECC回路30は、当該読出データRDCをデータバスDBSに送出すると共に、この読出データRDCを書込用のデータとしてメモリ20に供給する。
【0048】
尚、上記した処理期間T3での処理により、メモリ20に対するCPU10からのメモリリードアクセスが終了し、以下の処理期間T4以降は、アドレスバスABS及びデータバスDBSが開放される。
【0049】
処理期間T4では、メモリ20が、上記した処理期間T3で生成された書込信号WTに応じて、訂正データCd1を表す読出データRDCを、アドレスADDにて表されるアドレスRa1に対応した記憶領域に上書きする。
【0050】
また、処理期間T4では、上記した論理レベル1の誤り検出信号ERRに応じて、トグルカウンタ41が
図2に示すようにトグルカウント値CTを「0」から「1」に遷移させる。これにより、保持回路42は、上記した論理レベル1の誤り検出信号ERRを取り込み、これを保持しつつオアゲート45に供給する。よって、
図2に示すように、処理期間T4中も選択信号SLの状態が論理レベル1に維持されるので、セレクタ48は、アドレスRa1を表すアドレスADDを、処理期間T4中も継続してメモリ20に供給する。更に、処理期間T4では、保持回路44が、上記したように処理期間T3にてECC回路30が生成した、誤りビット位置Sd1を表す誤りビット位置情報BCを取り込んでこれを保持する。そして、保持回路44は、この取り込んで保持した、誤りビット位置Sd1を表す誤りビット位置情報BCを誤りビット位置情報BCXとして一致判定回路51に供給する。
【0051】
更に、処理期間T4では、遅延回路50が、上記した論理レベル1の書込信号WTを遅延させた信号を読出信号REとして生成し、これをオアゲート47を介してメモリ20に供給する。
【0052】
次の処理期間T5では、メモリ20が、処理期間T4で生成された読出信号REに応じて、上記したアドレスADDにて表されるアドレスRa1にて示される記憶領域に格納されているデータRd1D(検査ビットを含む)を表す読出データRDDを読み出す。
【0053】
次の処理期間T6では、ECC回路30が、このデータRd1Dを表す読出データRDDを取り込み、当該データRd1Dに対して誤り検出処理を施す。ところで、アドレスRa1にて示されるメモリ20の記憶領域にハードエラー故障が生じていると、例え訂正済みのデータが当該記憶領域に上書きされていても、前回と同一のビット位置でビット誤りが生じることになる。よって、この際、処理期間T6において、ECC回路30は、1ビット誤りが生じていることを示す論理レベル1の単一パルスの誤り検出信号ERRと、この1ビット誤りの位置を誤りビット位置Sd1として表す誤りビット位置情報BCと、を生成する。
【0054】
更に処理期間T6では、一致判定回路51が、ECC回路30から供給された誤りビット位置情報BCにて表される誤りビット位置と、保持回路44から供給された誤りビット位置情報BCXにて表される誤りビット位置とが一致しているか否かを判定する。ここで、アドレスRa1にて示される記憶領域にハードエラー故障が生じていることから、
図2に示すように、誤りビット位置情報BCにて表される誤りビット位置Sd1と、誤りビット位置情報BCXにて表される誤りビット位置Sd1とが一致する。よって、一致判定回路51は、両者(BC、BCX)が同一であることを表す論理レベル1の故障箇所一致信号FLを故障割込出力回路52に供給する。
【0055】
次に、処理期間T7では、故障割込出力回路52が、上記した処理期間T6において論理レベル1の誤り検出信号ERR、及び論理レベル1の故障箇所一致信号FLを受ける。これにより、故障割込出力回路52は、メモリ20にハードエラー故障が生じている旨を表す論理レベル1のメモリ故障検出信号MBDをCPU10に供給する。更に、処理期間T7では、論理レベル1の誤り検出信号ERRに応じてトグルカウンタ41がトグルカウント値CTを「1」から「0」に遷移させる。これにより、保持回路42は、自身に保持されていた内容をクリアして、
図2に示すようにアドレス維持信号ASを論理レベル1から論理レベル0に遷移させる。
【0056】
以上のように、半導体装置100では、メモリ20のアドレスRa1から読み出された読出データRDDに対して、先ず、ECC回路30が1ビット誤り検出処理を施す(T1、T2)。
【0057】
この際、1ビット誤りが検出された場合には、ECC回路30は、単一パルスの誤り検出信号ERRと共に、誤りビット位置を表す誤りビット位置情報BCを生成する。更に、ECC回路30は、読出データRDDに1ビット誤りが生じている場合には、当該読出データRDDに生じている1ビット誤りを訂正した訂正データCd1を生成し、当該訂正データCd1を表す読出データRDCをデータバスDBSに送出する(T3)。
【0058】
ここで、メモリ故障検出回路40は、誤り検出信号ERRに応じて書込信号WTを生成し、上記した訂正データCd1を表す読出データRDCを、この書込信号WTに応じて、メモリ20の上記読出データRDDが格納されていたアドレスRa1に上書きする。更に、保持回路44が上記した誤りビット位置情報BCを取り込んで保持し、これを誤りビット位置情報BCXとして出力する(T4)。
【0059】
次に、メモリ故障検出回路40は、書込信号WTに応じて読出信号REを生成し、この読出信号REに応じて、上記したアドレスRa1に上書きされている訂正データCd1を読み出す(T5)。
【0060】
そして、この読み出された訂正データCd1に対してECC回路31が誤り検出処理を施し、1ビット誤りが検出された場合には、その誤りビット位置を表す誤りビット位置情報BCと、上記した誤りビット位置情報BCXとが、同一の誤りビット位置を示すか否かを判定する(T6)。ここで、両者が同一の誤りビット位置を示す場合に、誤りを訂正することができないハードエラー故障がメモリ20に生じていると判定し、その旨を示すメモリ故障検出信号MBDを割込信号としてCPU10に供給するのである(T7)。
【0061】
よって、
図1に示すメモリ故障検出回路40によれば、CPU10が介在することなく、メモリ20への訂正データの書き戻し(T4)及び読み出し(T5)を順に行うことで、メモリ20に生じている訂正不可なハードエラー故障が検出可能となる。したがって、故障したメモリを迅速に知ることができるので、システムの保守、品質維持のために早期対応を取ることが可能となる。
【0062】
また、メモリ故障検出回路40によれば、メモリに対するハードエラー故障の検出をCPUを介さずに行うことができるので、CPUの負荷が低減され、他のタスクに影響を及ぼす懸念がなくなる。更に、
図2に示すように、処理期間T4以降は、バスアクセスが発生しないため、バスマスタを複数有するシステムにおいて処理性能の低下を抑えることが可能となる。
【0063】
尚、
図2に示す一例では、論理レベル1の誤り検出信号ERRが生成されてから、誤りビット位置情報BCと誤りビット位置情報BCXとの一致判定が終了するまでの期間(T3~T6)に亘り、アドレスADDを選択させる論理レベル1の選択信号SLをセレクタ48に供給している。しかしながら、アドレスADDを選択させる期間は、これよりも短くても良い。要するに、論理レベル1の誤り検出信号ERRが生成されてから、読出信号REに応じてメモリ20から読出データRDDが出力されるまでの間(T3~T5)に亘り、保持回路43に保持されているアドレスADDを選択するようにセレクタ48を制御すればよいのである。
【0064】
また、上記実施例では、メモリ20として、クロック信号CLKに同期して書込及び読出を行うSRAMを採用して動作を説明したが、非同期のSRAMやDRAM、フラッシュROM等を用いても良い。また、ECC回路30としても、SECDED方式以外の2ビット誤り訂正、3ビット誤り検出が可能なタイプのECC回路を採用しても良い。
【0065】
また、上記実施例では、メモリ20から読み出された読出データRDDに対して誤り検出及び訂正処理を施す回路として、ECC回路を採用しているが、このECC回路に代えて、BCH符号、ハミング符号を用いた各種の誤り検出訂正回路を採用しても良い。
【0066】
要するに、半導体装置100としては、以下のメモリ、誤り検出訂正回路、メモリ検出回路を含むものであれば良い。
【0067】
すなわち、メモリ(20)は、書込指令(WR)を受けてアドレスバス(ABS)上のアドレスで示される記憶領域にデータを書き込み、読出指令(RD)を受けてアドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片(RDD)として出力する。
【0068】
誤り検出訂正回路(30)は、読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号(ERR)、ビット誤りの位置を表す誤りビット位置情報(BC)、読出データ片のビット誤りを訂正した訂正データ片(RDC)と、を生成する。
【0069】
更に、メモリのハードエラー故障を検出するメモリ故障検出回路(40)は、以下の第1及び第2の保持回路、書込読出制御回路、及び故障検出信号出力回路を含む。
【0070】
すなわち、第1の保持回路(43)は、アドレスバス(ABS)上のアドレスを保持し、第2の保持回路(44)は、誤り検出訂正回路で生成された誤りビット位置情報を保持する。
【0071】
書込読出制御回路(41、42、46~50)は、誤り検出信号(ERR)に応じて、第1の保持回路に保持されているアドレス(ADD)をメモリに供給しつつ、訂正データの書き込を促す書込信号(WT)及び読み出しを促す読出信号(RE)を順に生成してメモリに供給する。
【0072】
故障検出信号出力回路(51、52)は、読出信号に応じてメモリから読み出された読出データ片を受けて誤り検出訂正回路が生成した誤りビット位置情報(BC)と、第2の保持回路に保持されている誤りビット位置情報(BCX)とが一致する場合にハードエラー故障が生じていることを示すメモリ故障検出信号(MBD)を出力する。
【符号の説明】
【0073】
10 CPU
20 メモリ
30 ECC回路
40 メモリ故障検出回路
42~44 保持回路
45~47 オアゲート
48 セレクタ
49、50 遅延回路
51 一致判定回路