(57)【要約】      （修正有）【課題】処理速度の低下を招くことなく、半導体メモリのハードエラー故障を検出することが可能な半導体装置及び半導体メモリの故障検出方法を提供する。【解決手段】半導体装置１００において、半導体メモリから読み出された読出データ片にビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、ビット誤りの位置を表す誤りビット位置情報と、読出データ片のビット誤りを訂正した訂正データ片と、を生成し、アドレスバス上のアドレスと誤りビット位置情報を保持し、誤り検出信号に応じて、アドレスバス上のアドレスをメモリに供給しつつ、訂正データの書込を促す書込信号及び読出信号を順にメモリに供給する。読出信号に応じてメモリから読み出された読出データ片を受けて誤り検出訂正回路が生成した誤りビット位置情報と、保持されている誤りビット位置情報とが一致する場合にメモリ故障検出信号を出力する。【選択図】図１
2019149069.tif 000002
【特許請求の範囲】
【請求項１】
書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力するメモリと、
前記読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成する誤り検出訂正回路と、
前記メモリのハードエラー故障を検出するメモリ故障検出回路と、を含み、
前記メモリ故障検出回路は、
前記アドレスバス上の前記アドレスを保持する第１の保持回路と、
前記誤りビット位置情報を保持する第２の保持回路と、
前記誤り検出信号に応じて、前記第１の保持回路に保持されている前記アドレスを前記メモリに供給しつつ、前記訂正データの書き込を促す書込信号及び読み出しを促す読出信号を順に生成して前記メモリに供給する書込読出制御回路と、
前記読出信号に応じて前記メモリから読み出された読出データ片に応じて前記誤り検出訂正回路が生成した前記誤りビット位置情報と、前記第２の保持回路に保持されている前記誤りビット位置情報とが一致する場合に前記ハードエラー故障が生じていることを示すメモリ故障検出信号を出力する故障検出信号出力回路と、を有することを特徴とする半導体装置。
【請求項２】
前記書込読出制御回路は、
前記誤り検出信号を所定の第１期間だけ遅延させた信号を前記書込信号として生成する第１の遅延回路と、
前記書込信号又は前記書込指令を前記メモリに供給する第１のＯＲゲートと、
前記第１の遅延回路で生成された前記書込信号を所定の第２期間だけ遅延させた信号を前記読出信号として生成する第２の遅延回路と、
前記読出信号又は前記読出指令を前記メモリに供給する第２のＯＲゲートと、を有することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記書込読出制御回路は、
前記アドレスバス上の前記アドレス、及び前記第１の保持回路に保持されている前記アドレスのうちの一方を選択して前記メモリに供給するセレクタと、
前記誤り訂正回路が前記誤り検出信号を生成してから前記メモリから前記読出データ片が出力されるまでの間に亘り、前記第１の保持回路に保持されている前記アドレスを選択するように前記セレクタを制御する回路と、を含むことを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力する半導体メモリのハードエラー故障検出方法であって、
前記読出データ片に誤り検出処理を施してビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す第１の誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成し、
前記アドレスバス上の前記アドレスを第１のアドレスとして保持し、
前記誤り検出信号に応じて、前記第１のアドレスを前記メモリに供給しつつ、前記メモリに対して前記訂正データの書き込を促す書込信号及び読み出しを促す読出信号を順に供給し、
前記読出信号に応じて前記メモリから読み出された読出データ片に誤り検出処理を施し、ビット誤りが検出された場合にこのビット誤りの位置を表す第２の誤りビット位置情報を生成し、
前記第１の誤りビット位置情報と、前記第２の誤りビット位置情報とが一致する場合に前記メモリにハードエラー故障が生じていることを示すメモリ故障検出信号を生成することを特徴とする半導体メモリの故障検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、特に半導体メモリを含む半導体装置、及び半導体メモリの故障検出方法に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（中央処理装置）を含む各種のシステムでは、扱うデータ量の増大に伴い、メモリ容量の増加が要求されている。信頼性が要求されるシステムでは、メモリの故障はシステムダウンにつながる懸念があるため不良メモリを早期に検出し保守を行うことが必要となる。
【０００３】
メモリの故障には、宇宙線（アルファ線や中性子線）などがメモリに衝突した際にメモリに記憶されているデータが反転するソフトエラー（correctable error）故障と、メモリ自体が物理的に故障するハードエラー（uncorrectable error）故障の２種類がある。
【０００４】
このような故障を検出するために、メモリから読み出されたデータに対して、ＥＣＣ(Error Correction Code)を採用した誤り検出及び誤り訂正が行われる。尚、ＥＣＣでは、２ビットまでの誤り検出、及び１ビットの誤り訂正が可能なＳＥＣＤＥＤ(Single Error Correction Double Error Detection)方式が主流になっている。
【０００５】
よって、システムの品質を維持するために、ＳＥＣＤＥＤ方式のＥＣＣを採用して、メモリから読み出されたデータから検出された１ビット誤りが訂正可能なソフトエラーであるのか、又は訂正不可能なハードエラーであるのか区別できることが望まれる。
【０００６】
そこで、メモリから読み出されたデータに１ビット誤りが検出された場合に、以下の手順でハードエラーの検出を行うハードエラー検出方式が提案された（例えば、特許文献１参照）。このハードエラー検出方式では、メモリから読み出されたデータから１ビット誤りが検出された場合に、先ず、その１ビット誤りが生じているデータのアドレスを障害アドレスとして保持すると共に、この誤り検出処理の過程で生成されたシンドロームを保持する。次に、この１ビット誤りが生じているデータに対して誤り訂正を施した訂正データを、ＣＰＵが当該メモリの障害アドレスに書き込み、引き続きＣＰＵがこの障害アドレスに書き込まれたデータを読み出す。この際、読み出されたデータから１ビット誤りが検出され、且つこの誤り検出処理の過程で生成されたシンドローム及び障害アドレスが、上記のように保持したシンドローム及び障害アドレスと一致した場合にハードエラーであると判定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平５−２２５０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところが、特許文献１に記載のハードエラー検出方式では、メモリから読み出されたデータから誤りが検出される度に、ＣＰＵが訂正データをメモリの障害アドレスに書き込む書込アクセス、及び当該訂正データを読み出す読出アクセスを実行する必要がある。
【０００９】
よって、ＣＰＵに対する負荷が増えると共に、上記したような書込及び読出アクセスによるバスアクセスが余分に発生するため、バスマスタを複数有するシステムでは処理性能を低下させる懸念があった。
【００１０】
そこで、本発明は、処理速度の低下を招くことなく、半導体メモリのハードエラー故障を検出することが可能な半導体装置及び半導体メモリの故障検出方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る半導体装置は、書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力するメモリと、前記読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成する誤り検出訂正回路と、前記メモリのハードエラー故障を検出するメモリ故障検出回路と、を含み、前記メモリ故障検出回路は、前記アドレスバス上の前記アドレスを保持する第１の保持回路と、前記誤りビット位置情報を保持する第２の保持回路と、前記誤り検出信号に応じて、前記第１の保持回路に保持されている前記アドレスを前記メモリに供給しつつ、前記訂正データの書き込を促す書込信号及び読み出しを促す読出信号を順に生成して前記メモリに供給する書込読出制御回路と、前記読出信号に応じて前記メモリから読み出された読出データ片に応じて前記誤り検出訂正回路が生成した前記誤りビット位置情報と、前記第２の保持回路に保持されている前記誤りビット位置情報とが一致する場合に前記ハードエラー故障が生じていることを示すメモリ故障検出信号を出力する故障検出信号出力回路と、を有する。
【００１２】
また、本発明に係る半導体メモリの故障検出方法は、書込指令を受けてアドレスバス上のアドレスで示される記憶領域にデータを書き込み、読出指令を受けて前記アドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片として出力する半導体メモリのハードエラー故障検出方法であって、前記読出データ片に誤り検出処理を施してビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号と、前記ビット誤りの位置を表す第１の誤りビット位置情報と、前記読出データ片の前記ビット誤りを訂正した訂正データ片と、を生成し、前記アドレスバス上の前記アドレスを第１のアドレスとして保持し、前記誤り検出信号に応じて、前記第１のアドレスを前記メモリに供給しつつ、前記メモリに対して前記訂正データの書き込を促す書込信号及び読み出しを促す読出信号を順に供給し、前記読出信号に応じて前記メモリから読み出された読出データ片に誤り検出処理を施し、ビット誤りが検出された場合にこのビット誤りの位置を表す第２の誤りビット位置情報を生成し、前記第１の誤りビット位置情報と、前記第２の誤りビット位置情報とが一致する場合に前記メモリにハードエラー故障が生じていることを示すメモリ故障検出信号を生成する。
【発明の効果】
【００１３】
本発明によれば、メモリに対するハードエラー故障の検出をＣＰＵを介さずに行うことができるので、ＣＰＵの負荷が低減され、他のタスクに影響を及ぼす懸念がなくなる。更に、ハードエラー故障の検出処理を行っている間は、データバス及びアドレスバスに対するバスアクセスが発生しないため、バスマスタを複数有するシステムにおいて処理性能の低下を抑えることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】半導体装置１００の構成を示すブロック図である。
【図２】メモリ故障検出回路４０の動作の一例を表すタイムチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【００１６】
図１は、本発明に係る半導体装置１００の構成を示すブロック図である。図１に示すように、半導体装置１００は、ＣＰＵ（中央処理装置）１０、半導体メモリとしてのメモリ２０、ＥＣＣ(Error Correction Code)回路３０、及びメモリ故障検出回路４０を含む。
【００１７】
ＣＰＵ１０は、アドレスバスＡＢＳ及びデータバスＤＢＳに接続されている。ＣＰＵ１０は、当該データバスＤＢＳ上のデータ片を書き込ませる書込指令ＷＲ、及びデータ片の読み出しを促す読出指令ＲＤを、メモリ故障検出回路４０を介してメモリ２０に供給する。
【００１８】
ＣＰＵ１０は、メモリ故障検出回路４０から、メモリにハードエラー故障が生じていることを表すメモリ故障検出信号ＭＢＤが供給された場合には、その旨を外部機器（図示せず）に通知するメモリ故障通知信号ＦＮを出力する。
【００１９】
メモリ２０は、クロック信号ＣＬＫを受け、当該クロック信号ＣＬＫに同期したタイミングで、以下の動作を行う。
【００２０】
すなわち、メモリ２０は、ＣＰＵ１０から供給された書込指令ＷＲに応じて、データバスＤＢＳ上のデータ片（検査ビットを含む）を、アドレスバスＡＢＳ上のアドレスで示される自身の記憶領域に書き込む。また、メモリ２０は、メモリ故障検出回路４０から供給された書込信号ＷＴに応じて、ＥＣＣ回路３０から供給された読出データＲＤＣ（検査ビットを含む）を、メモリ故障検出回路４０から供給されたアドレスＡＤＤにて示される自身の記憶領域に書き込む。
【００２１】
メモリ２０は、ＣＰＵ１０から供給された読出指令ＲＤに応じて、アドレスバスＡＢＳ上のアドレスにて示される自身の記憶領域に格納されているデータ（検査ビットを含む）を読み出す。また、メモリ２０は、メモリ故障検出回路４０から供給された読出信号ＲＥに応じて、このメモリ故障検出回路４０から供給されたアドレスＡＤＤにて示される自身の記憶領域に格納されているデータ（検査ビットを含む）を読み出す。
【００２２】
メモリ２０は、上記したように読み出したデータを読出データＲＤＤとしてＥＣＣ回路３０に供給する。
【００２３】
ＥＣＣ回路３０は、例えば２ビットまでの誤り検出が可能であり、且つ１ビット誤りを訂正することが可能なＳＥＣＤＥＤ(Single Error Correction Double Error Detection)方式を採用したＥＣＣ回路である。
【００２４】
ＥＣＣ回路３０は、先ず、読出データＲＤＤに含まれる検査ビットに基づき、当該読出データＲＤＤに対して誤り検出処理を施す。
【００２５】
この誤り検出処理の結果、当該読出データＲＤＤに１ビット誤りが生じている場合には、ＥＣＣ回路３０は、１ビット誤りが生じていることを示す例えば論理レベル１の誤り検出信号ＥＲＲ、及び１ビット誤りの位置を表す誤りビット位置情報ＢＣを生成する。尚、誤り検出信号ＥＲＲは、所定期間の間だけ論理レベル１の状態を維持する単一パルスの信号である。ＥＣＣ回路３０は、上記した誤り検出信号ＥＲＲ及び誤りビット位置情報ＢＣをメモリ故障検出回路４０に供給する。
【００２６】
また、読出データＲＤＤに１ビット誤りが生じている場合には、ＥＣＣ回路３０は、読出データＲＤＤに対して、その１ビット誤りを訂正する誤り訂正処理を施す。ＥＣＣ回路３０は、この誤り訂正処理によって得られた訂正データを上記した読出データＲＤＣとして、メモリ２０及びデータバスＤＢＳに供給する。尚、ＥＣＣ回路は、読出データＲＤＤにビット誤りが生じていない場合には、この読出データＲＤＤをそのまま読出データＲＤＣとして、メモリ２０及びデータバスＤＢＳに供給する。
【００２７】
メモリ故障検出回路４０は、夫々が上記したクロック信号ＣＬＫに同期して動作する、トグルカウンタ４１、保持回路４２〜４４、オアゲート（ＯＲゲート）４５〜４７、セレクタ４８、遅延回路４９及び５０、一致判定回路５１、及び故障割込出力回路５２を含む。
【００２８】
トグルカウンタ４１は、電源投入時には初期値「０」を有し、単一パルスの誤り検出信号ＥＲＲが供給される度にその値が「０」から「１」、又は「１」から「０」に反転するトグルカウント値ＣＴを、保持回路４２に供給する。
【００２９】
保持回路４２は、誤り検出信号ＥＲＲが供給された場合には、当該誤り検出信号ＥＲＲにて表される論理レベル１を保持する。尚、保持回路４２は、トグルカウンタ４１から論理レベル０のトグルカウント値ＣＴが供給された場合に、自身の保持内容を論理レベル０の状態にクリアする。保持回路４２は、自身に保持された値（論理レベル０又は１）を有するアドレス維持信号ＡＳをオアゲート４５に供給する。
【００３０】
保持回路４３は、アドレスバスＡＢＳ上のアドレスを保持し、これをアドレスＡＤＤとしてセレクタ４８に供給する。
【００３１】
オアゲート４５は、論理レベル１のアドレス維持信号ＡＳ、又は論理レベル１の誤り検出信号ＥＲＲが供給された場合には、論理レベル１の選択信号ＳＬをセレクタ４８に供給する。また、オアゲート４５は、アドレス維持信号ＡＳ及び誤り検出信号ＥＲＲが共に論理レベル０を表す場合には、論理レベル０の選択信号ＳＬをセレクタ４８に供給する。
【００３２】
セレクタ４８は、アドレスバスＡＢＳ上のアドレスと、上記した保持回路４３から供給されたアドレスＡＤＤとのうちから、選択信号ＳＬに応じた方を選択し、これをメモリアクセス用のアドレスとしてメモリ２０に供給する。すなわち、セレクタ４８は、例えば選択信号ＳＬが論理レベル０を表す場合には、アドレスバスＡＢＳ上のアドレスを選択し、これをメモリ２０に供給する。一方、選択信号ＳＬが論理レベル１を表す場合には、セレクタ４８は、保持回路４３から供給されたアドレスＡＤＤを選択し、これをメモリ２０に供給する。
【００３３】
遅延回路４９は、ＥＣＣ回路３０から供給された単一パルスの誤り検出信号ＥＲＲを所定の第１期間だけ遅延させた信号を上記した書込信号ＷＴとし、これをオアゲート４６及び遅延回路５０に供給する。
【００３４】
オアゲート４６は、この書込信号ＷＴ、又はＣＰＵ１０から供給された書込指令ＷＲを、データの書き込みを促す信号としてメモリ２０に供給する。
【００３５】
遅延回路５０は、当該書込信号ＷＴを所定の第２期間だけ遅延させた信号を上記した読出信号ＲＥとし、これをオアゲート４７に供給する。
【００３６】
オアゲート４７は、この読出信号ＲＥ、又はＣＰＵ１０から供給された読出指令ＲＤを、データの読み出しを促す信号としてメモリ２０に供給する。
【００３７】
保持回路４４は、ＥＣＣ回路３０から供給された誤りビット位置情報ＢＣを取り込んで保持する。そして、保持回路４４は、保持した誤りビット位置情報ＢＣを誤りビット位置情報ＢＣＸとして一致判定回路５１に供給する。
【００３８】
一致判定回路５１は、ＥＣＣ回路３０から供給された誤りビット位置情報ＢＣと、保持回路４４から供給された誤りビット位置情報ＢＣＸとを比較し、両者が一致している場合に論理レベル１の故障箇所一致信号ＦＬを故障割込出力回路５２に供給する。
【００３９】
故障割込出力回路５２は、誤り検出信号ＥＲＲ及び故障箇所一致信号ＦＬが共に論理レベル１となったときに、メモリ２０にハードエラー故障が生じていることを表す割込信号として、論理レベル１のメモリ故障検出信号ＭＢＤをＣＰＵ１０に供給する。
【００４０】
以下に、メモリ故障検出回路４０によるハードエラー故障検出動作について説明する。
【００４１】
図２は、メモリ２０の記憶領域にハードエラー故障が生じている場合に、メモリ故障検出回路４０内部で行われる動作を表すタイムチャートである。尚、図２に示す一例では、メモリ２０として、クロック信号ＣＬＫに同期して動作するＳＲＡＭ（Static Random Access Memory）を想定してその動作を説明する。
【００４２】
メモリ故障検出回路４０は、図２に示すように、夫々がクロック信号ＣＬＫの１周期の長さを有する処理期間Ｔ１〜Ｔ７による一連の処理により、メモリ２０に生じているハードエラー故障を検出する。
【００４３】
すなわち、先ず、図２に示す処理期間Ｔ１では、メモリ２０は、ＣＰＵ１０から発せられた論理レベル１の読出指令ＲＤをオアゲート４７を介して受ける。尚、この間、図２に示すように選択信号ＳＬは論理レベル０の状態にある。よって、セレクタ４８は、図２に示すようにアドレスバスＡＢＳ上のアドレスＲａ１をメモリ２０に供給する。
【００４４】
処理期間Ｔ２では、これら読出指令ＲＤ及びアドレスＲａ１に応じて、メモリ２０が、図２に示すようにアドレスＲａ１にて示される記憶領域に格納されているデータＲｄ１（検査ビットを含む）を表す読出データＲＤＤを出力する。更に、当該処理期間Ｔ２では、保持回路４３がアドレスＲａ１を取り込んでこれを保持しつつ、このアドレスＲａ１を表すアドレスＡＤＤをセレクタ４８に供給する。
【００４５】
次の処理期間Ｔ３では、ＥＣＣ回路３０が、上記したデータＲｄ１を表す読出データＲＤＤを取り込み、当該データＲｄ１に対して誤り検出処理を施す。その誤り検出処理の結果、ＥＣＣ回路３０は、１ビット誤りを検出する。この際、ＥＣＣ回路３０は、図２に示すように、１ビット誤りが生じていることを示す論理レベル１の単一パルスの誤り検出信号ＥＲＲと、この１ビット誤りの位置を誤りビット位置Ｓｄ１として表す誤りビット位置情報ＢＣを生成する。
【００４６】
尚、当該処理期間Ｔ３では、上記した論理レベル１の誤り検出信号ＥＲＲに応じて、遅延回路４９が論理レベル１の書込信号ＷＴを生成し、これをオアゲート４６を介してメモリ２０に供給する。また、処理期間Ｔ３では、この論理レベル１の誤り検出信号ＥＲＲに応じて選択信号ＳＬが論理レベル０から論理レベル１に遷移する。論理レベル１の選択信号ＳＬに応じて、セレクタ４８は、保持回路４３で保持されているアドレスＲａ１を表すアドレスＡＤＤを、メモリ２０に供給する。
【００４７】
更に、処理期間Ｔ３では、ＥＣＣ回路３０が、読出データＲＤＤを取り込み、当該読出データＲＤＤにて表されるデータＲｄ１に生じている１ビット誤りを訂正し、訂正された訂正データＣｄ１を表す読出データＲＤＣを生成する。ＥＣＣ回路３０は、当該読出データＲＤＣをデータバスＤＢＳに送出すると共に、この読出データＲＤＣを書込用のデータとしてメモリ２０に供給する。
【００４８】
尚、上記した処理期間Ｔ３での処理により、メモリ２０に対するＣＰＵ１０からのメモリリードアクセスが終了し、以下の処理期間Ｔ４以降は、アドレスバスＡＢＳ及びデータバスＤＢＳが開放される。
【００４９】
処理期間Ｔ４では、メモリ２０が、上記した処理期間Ｔ３で生成された書込信号ＷＴに応じて、訂正データＣｄ１を表す読出データＲＤＣを、アドレスＡＤＤにて表されるアドレスＲａ１に対応した記憶領域に上書きする。
【００５０】
また、処理期間Ｔ４では、上記した論理レベル１の誤り検出信号ＥＲＲに応じて、トグルカウンタ４１が図２に示すようにトグルカウント値ＣＴを「０」から「１」に遷移させる。これにより、保持回路４２は、上記した論理レベル１の誤り検出信号ＥＲＲを取り込み、これを保持しつつオアゲート４５に供給する。よって、図２に示すように、処理期間Ｔ４中も選択信号ＳＬの状態が論理レベル１に維持されるので、セレクタ４８は、アドレスＲａ１を表すアドレスＡＤＤを、処理期間Ｔ４中も継続してメモリ２０に供給する。更に、処理期間Ｔ４では、保持回路４４が、上記したように処理期間Ｔ３にてＥＣＣ回路３０が生成した、誤りビット位置Ｓｄ１を表す誤りビット位置情報ＢＣを取り込んでこれを保持する。そして、保持回路４４は、この取り込んで保持した、誤りビット位置Ｓｄ１を表す誤りビット位置情報ＢＣを誤りビット位置情報ＢＣＸとして一致判定回路５１に供給する。
【００５１】
更に、処理期間Ｔ４では、遅延回路５０が、上記した論理レベル１の書込信号ＷＴを遅延させた信号を読出信号ＲＥとして生成し、これをオアゲート４７を介してメモリ２０に供給する。
【００５２】
次の処理期間Ｔ５では、メモリ２０が、処理期間Ｔ４で生成された読出信号ＲＥに応じて、上記したアドレスＡＤＤにて表されるアドレスＲａ１にて示される記憶領域に格納されているデータＲｄ１Ｄ（検査ビットを含む）を表す読出データＲＤＤを読み出す。
【００５３】
次の処理期間Ｔ６では、ＥＣＣ回路３０が、このデータＲｄ１Ｄを表す読出データＲＤＤを取り込み、当該データＲｄ１Ｄに対して誤り検出処理を施す。ところで、アドレスＲａ１にて示されるメモリ２０の記憶領域にハードエラー故障が生じていると、例え訂正済みのデータが当該記憶領域に上書きされていても、前回と同一のビット位置でビット誤りが生じることになる。よって、この際、処理期間Ｔ６において、ＥＣＣ回路３０は、１ビット誤りが生じていることを示す論理レベル１の単一パルスの誤り検出信号ＥＲＲと、この１ビット誤りの位置を誤りビット位置Ｓｄ１として表す誤りビット位置情報ＢＣと、を生成する。
【００５４】
更に処理期間Ｔ６では、一致判定回路５１が、ＥＣＣ回路３０から供給された誤りビット位置情報ＢＣにて表される誤りビット位置と、保持回路４４から供給された誤りビット位置情報ＢＣＸにて表される誤りビット位置とが一致しているか否かを判定する。ここで、アドレスＲａ１にて示される記憶領域にハードエラー故障が生じていることから、図２に示すように、誤りビット位置情報ＢＣにて表される誤りビット位置Ｓｄ１と、誤りビット位置情報ＢＣＸにて表される誤りビット位置Ｓｄ１とが一致する。よって、一致判定回路５１は、両者（ＢＣ、ＢＣＸ）が同一であることを表す論理レベル１の故障箇所一致信号ＦＬを故障割込出力回路５２に供給する。
【００５５】
次に、処理期間Ｔ７では、故障割込出力回路５２が、上記した処理期間Ｔ６において論理レベル１の誤り検出信号ＥＲＲ、及び論理レベル１の故障箇所一致信号ＦＬを受ける。これにより、故障割込出力回路５２は、メモリ２０にハードエラー故障が生じている旨を表す論理レベル１のメモリ故障検出信号ＭＢＤをＣＰＵ１０に供給する。更に、処理期間Ｔ７では、論理レベル１の誤り検出信号ＥＲＲに応じてトグルカウンタ４１がトグルカウント値ＣＴを「１」から「０」に遷移させる。これにより、保持回路４２は、自身に保持されていた内容をクリアして、図２に示すようにアドレス維持信号ＡＳを論理レベル１から論理レベル０に遷移させる。
【００５６】
以上のように、半導体装置１００では、メモリ２０のアドレスＲａ１から読み出された読出データＲＤＤに対して、先ず、ＥＣＣ回路３０が１ビット誤り検出処理を施す（Ｔ１、Ｔ２）。
【００５７】
この際、１ビット誤りが検出された場合には、ＥＣＣ回路３０は、単一パルスの誤り検出信号ＥＲＲと共に、誤りビット位置を表す誤りビット位置情報ＢＣを生成する。更に、ＥＣＣ回路３０は、読出データＲＤＤに１ビット誤りが生じている場合には、当該読出データＲＤＤに生じている１ビット誤りを訂正した訂正データＣｄ１を生成し、当該訂正データＣｄ１を表す読出データＲＤＣをデータバスＤＢＳに送出する（Ｔ３）。
【００５８】
ここで、メモリ故障検出回路４０は、誤り検出信号ＥＲＲに応じて書込信号ＷＴを生成し、上記した訂正データＣｄ１を表す読出データＲＤＣを、この書込信号ＷＴに応じて、メモリ２０の上記読出データＲＤＤが格納されていたアドレスＲａ１に上書きする。更に、保持回路４４が上記した誤りビット位置情報ＢＣを取り込んで保持し、これを誤りビット位置情報ＢＣＸとして出力する（Ｔ４）。
【００５９】
次に、メモリ故障検出回路４０は、書込信号ＷＴに応じて読出信号ＲＥを生成し、この読出信号ＲＥに応じて、上記したアドレスＲａ１に上書きされている訂正データＣｄ１を読み出す（Ｔ５）。
【００６０】
そして、この読み出された訂正データＣｄ１に対してＥＣＣ回路３１が誤り検出処理を施し、１ビット誤りが検出された場合には、その誤りビット位置を表す誤りビット位置情報ＢＣと、上記した誤りビット位置情報ＢＣＸとが、同一の誤りビット位置を示すか否かを判定する（Ｔ６）。ここで、両者が同一の誤りビット位置を示す場合に、誤りを訂正することができないハードエラー故障がメモリ２０に生じていると判定し、その旨を示すメモリ故障検出信号ＭＢＤを割込信号としてＣＰＵ１０に供給するのである（Ｔ７）。
【００６１】
よって、図１に示すメモリ故障検出回路４０によれば、ＣＰＵ１０が介在することなく、メモリ２０への訂正データの書き戻し（Ｔ４）及び読み出し（Ｔ５）を順に行うことで、メモリ２０に生じている訂正不可なハードエラー故障が検出可能となる。したがって、故障したメモリを迅速に知ることができるので、システムの保守、品質維持のために早期対応を取ることが可能となる。
【００６２】
また、メモリ故障検出回路４０によれば、メモリに対するハードエラー故障の検出をＣＰＵを介さずに行うことができるので、ＣＰＵの負荷が低減され、他のタスクに影響を及ぼす懸念がなくなる。更に、図２に示すように、処理期間Ｔ４以降は、バスアクセスが発生しないため、バスマスタを複数有するシステムにおいて処理性能の低下を抑えることが可能となる。
【００６３】
尚、図２に示す一例では、論理レベル１の誤り検出信号ＥＲＲが生成されてから、誤りビット位置情報ＢＣと誤りビット位置情報ＢＣＸとの一致判定が終了するまでの期間（Ｔ３〜Ｔ６）に亘り、アドレスＡＤＤを選択させる論理レベル１の選択信号ＳＬをセレクタ４８に供給している。しかしながら、アドレスＡＤＤを選択させる期間は、これよりも短くても良い。要するに、論理レベル１の誤り検出信号ＥＲＲが生成されてから、読出信号ＲＥに応じてメモリ２０から読出データＲＤＤが出力されるまでの間（Ｔ３〜Ｔ５）に亘り、保持回路４３に保持されているアドレスＡＤＤを選択するようにセレクタ４８を制御すればよいのである。
【００６４】
また、上記実施例では、メモリ２０として、クロック信号ＣＬＫに同期して書込及び読出を行うＳＲＡＭを採用して動作を説明したが、非同期のＳＲＡＭやＤＲＡＭ、フラッシュＲＯＭ等を用いても良い。また、ＥＣＣ回路３０としても、ＳＥＣＤＥＤ方式以外の２ビット誤り訂正、３ビット誤り検出が可能なタイプのＥＣＣ回路を採用しても良い。
【００６５】
また、上記実施例では、メモリ２０から読み出された読出データＲＤＤに対して誤り検出及び訂正処理を施す回路として、ＥＣＣ回路を採用しているが、このＥＣＣ回路に代えて、ＢＣＨ符号、ハミング符号を用いた各種の誤り検出訂正回路を採用しても良い。
【００６６】
要するに、半導体装置１００としては、以下のメモリ、誤り検出訂正回路、メモリ検出回路を含むものであれば良い。
【００６７】
すなわち、メモリ（２０）は、書込指令（ＷＲ）を受けてアドレスバス（ＡＢＳ）上のアドレスで示される記憶領域にデータを書き込み、読出指令（ＲＤ）を受けてアドレスバス上のアドレスで示される記憶領域からデータを読み出しこれを読出データ片（ＲＤＤ）として出力する。
【００６８】
誤り検出訂正回路（３０）は、読出データ片に誤り検出処理を施し、ビット誤りが検出された場合に、ビット誤りが検出されたことを表す誤り検出信号（ＥＲＲ）、ビット誤りの位置を表す誤りビット位置情報（ＢＣ）、読出データ片のビット誤りを訂正した訂正データ片（ＲＤＣ）と、を生成する。
【００６９】
更に、メモリのハードエラー故障を検出するメモリ故障検出回路（４０）は、以下の第１及び第２の保持回路、書込読出制御回路、及び故障検出信号出力回路を含む。
【００７０】
すなわち、第１の保持回路（４３）は、アドレスバス（ＡＢＳ）上のアドレスを保持し、第２の保持回路（４４）は、誤り検出訂正回路で生成された誤りビット位置情報を保持する。
【００７１】
書込読出制御回路（４１、４２、４６〜５０）は、誤り検出信号（ＥＲＲ）に応じて、第１の保持回路に保持されているアドレス（ＡＤＤ）をメモリに供給しつつ、訂正データの書き込を促す書込信号（ＷＴ）及び読み出しを促す読出信号（ＲＥ）を順に生成してメモリに供給する。
【００７２】
故障検出信号出力回路（５１、５２）は、読出信号に応じてメモリから読み出された読出データ片を受けて誤り検出訂正回路が生成した誤りビット位置情報（ＢＣ）と、第２の保持回路に保持されている誤りビット位置情報（ＢＣＸ）とが一致する場合にハードエラー故障が生じていることを示すメモリ故障検出信号（ＭＢＤ）を出力する。
【符号の説明】
【００７３】
１０        ＣＰＵ
２０        メモリ
３０        ＥＣＣ回路
４０        メモリ故障検出回路
４２〜４４  保持回路
４５〜４７  オアゲート
４８        セレクタ
４９、５０  遅延回路
５１        一致判定回路
【図１】
2019149069.tif 000003
【図２】
2019149069.tif 000004