(57)【要約】【課題】ソフトエラーに対する信頼性を高めるとともに柔軟性の高いエラー訂正機能を実現する。【解決手段】半導体装置（１）はメモリ部（１１）と制御部（１０）とを有する。メモリ部は書き込み動作において書き込み対象のデータからエラー訂正コードを生成して前記データと共にスタティック型の記憶素子からなる記憶領域（１１０）に記憶するとともに、読み出し動作において読み出し対象のデータとそれに対応するエラー訂正コードを記憶領域から読み出して誤り訂正を行って出力する。制御部は、中央処理装置（１２）によってアクセス可能とされる第１記憶部（１００１）に第１の値が設定された場合には第２記憶部（１００２）で指示されたアドレス範囲の読み出し動作を指示するとともに、少なくともメモリ部で訂正されたデータの書き込み動作を指示し、第１記憶部に第２の値が設定された場合には中央処理装置からのアクセスを可能にする。【選択図】図１
2013143075.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、
スタティック型の記憶素子からなる記憶領域を備え、前記記憶領域に対するデータの書き込みと読み出しを行うメモリ部と、
前記メモリ部に対するデータの書き込みと読み出しを制御する制御部と、を有し、
前記メモリ部は、データの書き込み動作において書き込み対象のデータからエラー訂正コードを生成して、前記書き込み対象のデータと共に前記記憶領域に記憶するとともに、データの読み出し動作において読み出し対象のデータとそれに対応するエラー訂正コードを前記記憶領域から読み出して誤り訂正を行って出力し、
前記制御部は、
前記中央処理装置によってアクセス可能とされ、制御情報が設定される第１記憶部と、
前記中央処理装置によってアクセス可能とされ、前記メモリ部に記憶されたデータのエラーチェックを行うアドレス範囲を指示する値が設定される第２記憶部と、
前記第１記憶部及び前記第２記憶部の設定値に応じて、データの書き込み又は読み出しを前記メモリ部に対して指示するアクセス制御部と、を有し、
前記アクセス制御部は、前記第１記憶部に前記制御情報として第１の値が設定された場合には、前記第２記憶部に設定されたアドレス範囲のデータの読み出し動作を指示するとともに、少なくとも前記メモリ部で訂正されたデータの書き込み動作を指示し、前記第１記憶部に前記制御情報として第２の値が設定された場合には、前記中央処理装置からのアクセスを可能にする半導体装置。
【請求項２】
前記メモリ部における記憶領域の電源状態を制御する電源制御部を更に有し、
前記制御部は、前記中央処理装置によってアクセス可能とされる第３記憶部を更に有し、
前記電源制御部は、前記第３記憶部に第３の値が設定された場合には、前記記憶領域の電源電圧が第１の電圧となるように制御し、前記第３記憶部に第４の値が設定された場合には、前記記憶領域の電源電圧が前記第１の電源電圧と異なる第２の電圧となるように制御する請求項１の半導体装置。
【請求項３】
前記中央処理装置は、前記第１記憶部に前記第１の値を設定するとき、前記第３記憶部に前記第４の値を設定し、前記第１記憶部に前記第２の値を設定するとき、前記第３記憶部に前記第３の値を設定する請求項２の半導体装置。
【請求項４】
前記第２の電圧は、前記第１の電圧よりも小さい請求項２の半導体装置。
【請求項５】
前記アクセス制御部は、前記第１記憶部に前記第１の値が設定されているときに前記中央処理装置から前記メモリ部に対するアクセス要求があった場合には、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の停止を指示する請求項１の半導体装置。
【請求項６】
前記アクセス制御部は、前記第１記憶部に前記第１の値が設定されているときに前記中央処理装置から前記メモリ部に対するアクセス要求があった場合には、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の完了後、前記中央処理装置からのアクセスを可能にする請求項１の半導体装置。
【請求項７】
前記制御部は、前記中央処理装置によってアクセス可能とされる第４記憶部を更に有し、
前記第４記憶部は、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の完了後、当該読み出し動作及び書き込み動作が完了したことを示す値が格納される請求項１の半導体装置。
【請求項８】
前記第１記憶部に前記制御情報として第１の値が設定された場合の前記書き込み動作は、前記メモリ部で訂正されたデータのみを書き戻す動作である請求項１の半導体装置。
【請求項９】
前記第１記憶部に前記制御情報として第１の値が設定された場合の前記書き込み動作は、前記メモリ部で訂正されたデータ、及び前記メモリ部でエラーが発見されなかったデータを書き戻す動作である請求項１の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に高い信頼性が要求される半導体装置に搭載されたメモリのエラー訂正機能のための有効な技術に関する。
【背景技術】
【０００２】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリにおけるソフトエラー対策として、エラー訂正（ＥＣＣ：Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ））機能がある。
【０００３】
近年、プロセスの微細化に伴い、ＲＡＭではソフトエラーが発生し易くなっている。
【０００４】
従来のＲＡＭにおけるＥＣＣ機能の多くは、メモリアクセス時にエラーが発生していた場合にリードデータに対してエラー訂正を行う仕様であり、ＲＡＭには訂正データを書き戻さないため、ＲＡＭにエラーが残った状態となる。また、従来のＥＣＣ機能の多くは、１ビットのエラーが発生していた場合にエラー訂正を行う仕様であり、２ビット以上のエラーが発生した場合には正しく訂正することができない。近年の微細なプロセスで形成されたメモリでは、同一アドレス上で２ビット以上のデータ反転が起こる可能性も今まで以上に高まり、エラーの発生により正しく訂正することができない懸念がある。
【０００５】
特許文献１及び特許文献２には、リード動作発生時にＥＣＣでエラーを訂正したら、当該エラーがあったアドレスに対して訂正データを書き戻す技術が開示されている。これにより、経時的に起こる２ビット以上のエラーが発生する確率を下げることができる。
【０００６】
特許文献３及び特許文献４には、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）における読み出し又は書き込み処理を行わないメモリセルのビットエラーの累積を防ぐための従来技術として、ＤＲＡＭのメモリデータのリフレッシュ期間を利用して全メモリセルのエラー訂正を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−９１０２号公報
【特許文献２】特開２００６−２６０２８９号公報
【特許文献３】特開平１−２４３２９８号公報
【特許文献４】特開平９−９１２０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記特許文献１及び特許文献２では、リードアクセスが発生したアドレス以外はエラーチェックが行われないので、２ビット以上のデータ破壊が発生するリスクがある。
【０００９】
上記特許文献３及び特許文献４の技術は、ＤＲＡＭにおける同一アドレス上の２ビット以上のデータ破壊の確率を下げるための方法としては有効であるが、ＳＲＡＭのようにデータのリフレッシュが必要ないスタティック型の記憶素子から成るメモリに、当該技術をそのまま適用することはできない。
【００１０】
特許文献３及び特許文献４の技術では、リフレッシュ対象の全てのメモリセルがエラーチェックの対象となるため、エラーチェックの対象をユーザが選択することはできず、また、エラーチェックはＤＲＡＭのリフレッシュ動作のタイミングに依存するため、ユーザがリフレッシュタイミングとは別にエラーチェックを開始するタイミングを自由に決定することはできない。そのため、特許文献３及び特許文献４の技術では、エラー訂正機能に関してユーザがカスタマイズできる部分が少ない。
【００１１】
また、本発明者は、エラーの有無の判別のみならず、例えばデータの反転は起きてはいないがエラーが発生する蓋然性の高いデータについてもエラー訂正を行うことができれば、ソフトエラーに対する信頼性の向上のために有効であることを見出した。
【００１２】
本発明の目的は、スタティック型の記憶素子から成るメモリにおいて、ソフトエラーに対する信頼性を高めるとともに、柔軟性の高いエラー訂正機能を実現することにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、本半導体装置は、スタティック型の記憶素子からなる記憶領域に対するデータの書き込みと読み出しを行うメモリ部と、前記メモリ部に対するデータの書き込みと読み出しを制御する制御部と、を有する。前記メモリ部は、データの書き込み動作において書き込み対象のデータからエラー訂正コードを生成して、前記書き込み対象のデータと共に前記記憶領域に記憶するとともに、データの読み出し動作において読み出し対象のデータとそれに対応するエラー訂正コードを前記記憶領域から読み出して誤り訂正を行って出力する。前記制御部は、中央処理装置によってアクセス可能とされる第１記憶部に第１の値が設定された場合には、前記中央処理装置によってアクセス可能とされる第２記憶部で指示されたアドレス範囲のデータの読み出し動作を指示するとともに、少なくとも前記メモリ部で訂正されたデータの書き込み動作を指示し、前記第１記憶部に第２の値が設定された場合には、前記中央処理装置からのアクセスを可能にする。
【発明の効果】
【００１６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１７】
すなわち、本半導体装置によれば、ソフトエラーに対する信頼性を高めるとともに、柔軟性の高いエラー訂正機能を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施の形態１に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置を例示するブロック図である。
【図２】図２は、通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。
【図３】図３は、セルフチェックモードにおける具体的な処理の流れを例示するフロー図である。
【図４】図４は、セルフチェック中の処理タイミングを例示する説明図である。
【図５】図５は、実施の形態２に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置を例示するブロック図である。
【図６】図６は、半導体装置２におけるセルフチェック中の処理タイミングを例示する説明図である。
【図７】図７は、半導体装置２における通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。
【図８】図８は、実施の形態３に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置を例示するブロック図である。
【図９】図９は、半導体装置３における通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。
【発明を実施するための形態】
【００１９】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２０】
〔１〕（ＳＲＡＭのプログラマブルなセルフエラーチェック機能を備える半導体装置）
本発明の代表的な実施の形態に係る半導体装置（１〜３）は、中央処理装置（１２）と、スタティック型の記憶素子からなる記憶領域（１１０）を備え、前記記憶領域に対するデータの書き込みと読み出しを行うメモリ部（１１）と、前記メモリ部に対するデータの書き込みと読み出しを制御する制御部（１０）と、を有する。前記メモリ部は、データの書き込み動作において書き込み対象のデータからエラー訂正コードを生成して、前記書き込み対象のデータと共に前記記憶領域に記憶するとともに、データの読み出し動作において読み出し対象のデータとそれに対応するエラー訂正コードを前記記憶領域から読み出して誤り訂正を行って出力する。前記制御部は、前記中央処理装置によってアクセス可能とされ、制御情報が設定される第１記憶部（１００１）と、前記中央処理装置によってアクセス可能とされ、前記メモリ部に記憶されたデータのエラーチェックを行うアドレス範囲を指示する値が設定される第２記憶部（１００２、１００３）と、前記第１記憶部及び前記第２記憶部の設定値に応じて、データの書き込み又は読み出しを前記メモリ部に対して指示するアクセス制御部（１０１）と、を有する。前記アクセス制御部は、前記第１記憶部に前記制御情報として第１の値（セルフチェックの実行を指示する値）が設定された場合には、前記第２記憶部に設定されたアドレス範囲のデータの読み出し動作を指示するとともに、少なくとも前記メモリ部で訂正されたデータの書き込み動作を指示し、前記第１記憶部に前記制御情報として第２の値（セルフチェックの停止を指示する値）が設定された場合には、前記中央処理装置からのアクセスを可能にする。
【００２１】
これによれば、中央処理装置等からのリードアクセスが発生したアドレス以外のエラーチェックも行うことができるから、２ビット以上のデータ破壊が発生するリスクを減らし、ソフトエラーに対する信頼性を高めることができる。また、前記第１記憶部及び前記第２記憶部により、誤り訂正を行うタイミングと誤り訂正を行うアドレス範囲をプログラマブルに変更することができる。
【００２２】
〔２〕（電源電圧切り替え機能）
項１の半導体装置（３）は、前記メモリ部における記憶領域の電源状態を制御する電源制御部（３１）を更に有する。また、前記制御部は、前記中央処理装置によってアクセス可能とされる第３記憶部（１００４）を更に有する。更に、前記電源制御部は、前記第３記憶部に第３の値（第１電源電圧生成部３１０の電圧を指示する値）が設定された場合には、前記記憶領域の電源電圧が第１の電圧（ＶＤＤ）となるように制御し、前記第３記憶部に第４の値（第２電源電圧生成部３１１の電圧を指示する値）が設定された場合には、前記記憶領域の電源電圧が前記第１の電源電圧と異なる第２の電圧（ＶＤＤ＿Ｓ）となるように制御する。
【００２３】
これによれば、前記記憶領域の電源電圧をプログラマブルに変更することができる。例えば、ユーザの設定により、前記記憶領域における通常動作時の電源状態とエラーチェック時の電源状態を変えることができる。これによれば、例えば中間電位のような不定な値を保持している不安定なメモリセルがあり、通常動作時の電源状態ではエラーが発見できないような場合であっても、エラーチェック時に電源電圧を変えることで、そのようなメモリセルのエラーを検出し訂正を行うことが可能となり、ソフトエラーに対する信頼性をより高めることができる。
【００２４】
〔３〕（セルフチェック時は通常時と異なる電源電圧に設定）
項２の半導体装置において、前記中央処理装置は、前記第１記憶部に前記第１の値を設定するとき、前記第３記憶部に前記第４の値を設定し、前記第１記憶部に前記第２の値を設定するとき、前記第３記憶部に前記第３の値を設定する。
【００２５】
これによれば、エラーチェックの開始に連動して前記記憶領域の電源状態が変わるから、ユーザによる前記第３記憶部の設定が不要となり、且つ上記のように、ソフトエラーに対する信頼性をより高めることができる。
【００２６】
〔４〕（セルフチェック時は通常時より低い電源電圧に設定）
項２又は３の半導体装置において、前記第２の電圧は前記第１の電圧よりも小さい。
【００２７】
これによれば、エラーチェック中の消費電力を低減することができる。
【００２８】
〔５〕（セルフエラーチェック中にＣＰＵからのアクセスと競合したらＣＰＵ優先）
項１乃至４のいずれかの半導体装置において、前記アクセス制御部は、前記第１記憶部に前記第１の値が設定されているときに前記中央処理装置から前記メモリ部に対するアクセス要求があった場合には、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の停止を指示する。
【００２９】
これによれば、エラーチェックよりも中央処理装置によるアクセスを優先させることができるから、エラーチェックに伴うシステムのパフォーマンスの低下を防止することができる。
【００３０】
〔６〕（セルフエラーチェック中にＣＰＵからのアクセスと競合したら、チェック完了を待ってＣＰＵのアクセス受け入れ）
項１乃至４のいずれかの半導体装置において、前記アクセス制御部は、前記第１記憶部に前記第１の値が設定されているときに前記中央処理装置から前記メモリ部に対するアクセス要求があった場合には、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の完了後、前記中央処理装置からのアクセスを可能にする。
【００３１】
これによれば、中央処理装置によるアクセス要求があってもエラーチェックが中断されないから、前記第２記憶部で指定されたアドレス範囲のエラー訂正を確実に行うことができ、ソフトエラーに対する信頼性をより高めることができる。
【００３２】
〔７〕（セルフエラーチェックが完了したらエンドフラグを立てる）
項１乃至６のいずれかの半導体装置において、前記制御部は、前記中央処理装置によってアクセス可能とされる第４記憶部（１０２）を更に有する。また、前記第４記憶部は、前記設定されたアドレス範囲のデータの読み出し動作及び前記訂正されたデータの書き込み動作の完了後、当該読み出し動作及び書き込み動作が完了したことを示す値（エンドフラグ）が格納される。
【００３３】
これにより、エラーチェックが完了したことを中央処理装置が容易に判別することができる。
【００３４】
〔８〕（エラーの有無に応じてライトバック）
項１乃至７のいずれかの半導体装置（２）において、前記第１記憶部に前記制御情報として第１の値が設定された場合の前記書き込み動作は、前記メモリ部で訂正されたデータのみを書き込む動作である。
【００３５】
これによれば、エラーが有った場合のみ訂正データが書き戻されるから、エラーチェックに要する時間を短くすることができる。
【００３６】
〔９〕（エラーの有無に関わらずライトバック）
項１乃至７の半導体装置（１、３）において、前記第１記憶部に前記制御情報として第１の値が設定された場合の前記書き込み動作は、前記メモリ部で訂正されたデータ、及び前記メモリ部でエラーが発見されなかったデータを書き込む動作である。
【００３７】
これによれば、エラーが有った場合の処理とエラーがなかった場合の処理とを分ける必要がないから、前記書き込み動作を実現するための回路構成の単純化に資する。
【００３８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３９】
≪実施の形態１≫
図１に、実施の形態１に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置を例示する。
【００４０】
同図に示される半導体装置１は、例えば、車載用のマイクロコントローラである。半導体装置１は、ソフトエラーに対する信頼性を高めるため、ＣＰＵによるソフトウェア処理とは別に、メモリ部の記憶領域に記憶されたデータのエラーチェックとエラー訂正を行う処理（以下、「セルフチェック」とも称する。）を行う。
【００４１】
半導体装置１は、ＣＰＵ１２、メモリ部１１、メモリ制御部１０、周辺回路モジュール１３＿１〜１３＿ｎ（ｎは１以上の整数）、内部バス１４、エラーレジスタ１５、及びその他の図示されないインターフェース回路等から構成される。ＣＰＵ１２、メモリ部１１、メモリ制御部１０、及び周辺回路モジュール１３＿１〜１３＿ｎは、内部バス１４を介して共通接続される。ＣＰＵ１２及び周辺回路モジュール１３＿１〜１３＿ｎは、共通バス１４を介してメモリ部１１の記憶領域１１０に対してアクセス可能であり、前記記憶領域１１０に対するアクセスは、メモリ制御部１０によって制御される。図１には、共通バス１４として、代表的にコントロールバス１４１、アドレスバス１４２、及びデータバス１４３が例示されている。周辺回路モジュール１３＿１〜１３＿ｎは、特に制限されないが、ＲＯＭ（フラッシュメモリ）や低速系モジュールへ接続されるバスコントローラ等であり、ＣＰＵ１２によって内部バス１４を介してアクセス制御される。
【００４２】
メモリ部１１は、例えばＳＲＡＭであり、スタティック型の複数の記憶素子から構成される記憶領域（ＲＡＭ＿ＭＡＴ）１１０と、ＥＣＣコード生成回路１１１と、ＥＣＣ訂正回路１１２と、書き込みデータ生成部１１３と、を含んで構成される。
【００４３】
ＥＣＣコード生成回路１１１は、記憶領域１１０に対する書き込み対象のデータを入力し、ＥＣＣコードを生成して出力する。記憶領域１１０は、メモリインターフェース回路１０３からのライト制御信号に応じて、入力されたアドレス情報で指定されたメモリセルに前記書き込み対象のデータとそれに対応するＥＣＣコードを記憶する。他方、記憶領域１１０は、メモリインターフェース回路１０３からのリード制御信号に応じて、入力されたアドレス情報で指定されたメモリセルから読み出し対象のデータとそれに対応するＥＣＣコードを読み出して出力する。
【００４４】
ＥＣＣ訂正回路１１２は、記憶領域１１０から読み出されたリードデータ及びＥＣＣコードを入力し、エラーチェックとエラー訂正を行う。このとき、ＥＣＣ訂正回路１１２は、後述するセルフチェックモード信号に基づいて、ＣＰＵ１２等からのリードアクセスによるリードデータであるか、セルフチェックによるリードデータであるかを判別する。具体的には、ＣＰＵ１２又は周辺回路モジュール１３＿１〜１３＿ｎからのリードアクセスによるリードデータに対しては、ＥＣＣ訂正回路１１２は以下のように動作する。例えば、ＥＣＣ訂正回路１１２は、リードデータのエラーチェックを行い、リードデータにエラーがあった場合には、訂正データを生成し、生成した訂正データをリードデータとしてデータバス１４３に出力するとともに当該訂正データをライト訂正データとして書き込みデータ生成部１１３に出力する。エラーがなかった場合には、ＥＣＣ訂正回路１１２は、訂正データを生成することなく、リードデータをそのままデータバス１４３に出力する。他方、アクセス制御部１０１からのセルフチェックによるリードデータに対しては、ＥＣＣ訂正回路１１２は以下のように動作する。ＥＣＣ訂正回路１１２は、リードデータのエラーチェックを行い、リードデータにエラーがある場合には訂正データを生成し、生成した訂正データをライト訂正データとして書き込みデータ生成部１１３に出力する。リードデータにエラーが無かった場合にも、ＥＣＣ訂正回路１１２はリードデータと同一の訂正データを生成し、当該訂正データをライト訂正データとして書き込みデータ生成部１１３に出力する。
【００４５】
また、ＥＣＣ訂正回路１１２は、リードデータにエラーがあった場合、エラーレジスタ１５に所定の情報を設定する。前記所定の情報は、例えば、エラーがあったことを示す情報（エラーフラグ）、及びエラーが見つかったメモリセルのアドレス情報である。前記エラーフラグは、例えば、１ビットエラーがあったことを示す１ビットエラー訂正フラグと、２ビットエラーが有ったことを示す２ビットエラー検出フラグとがあり、前記１ビットエラー訂正フラグは、エラー訂正を行うことができたか否かを表す情報も含む。エラーレジスタ１５は、ＣＰＵ１２によってアクセス可能とされ、ＣＰＵ１２は当該レジスタを参照することで、所定のメモリセルのデータにソフトエラーが発生したことを知ることができる。
【００４６】
書き込みデータ生成部１１３は、ＣＰＵ１２又は周辺回路モジュール１３＿１〜１３＿ｎからデータバス１４３を介して出力された書き込み対象のデータと、ＥＣＣ訂正回路１１２から出力されたライト訂正データとを入力し、必要に応じてデータサイズを変換して出力する。例えば、記憶領域１１０が３２ビット（ＥＣＣコードを除く。）のデータサイズでアクセスが行われる仕様である場合に、ＣＰＵ１２から出力された書き込み対象のデータが８ビット又は１６ビットであったとき、書き込みデータ生成部１１３は、例えばリードモディファイライト形式にしたがって、前記８ビット又は１６ビットの書き込み対象のデータを３２ビットのライトデータに変換して出力する。書き込みデータ生成部１１３によってデータサイズが変換されたライトデータ又はライト訂正データは、記憶領域１１０及びＥＣＣコード生成回路１１１に入力され、ＥＣＣコードとともに指定されたアドレスのメモリセルに書き込まれる。なお、本実施の形態では、特に制限されないが、ＥＣＣ訂正回路１１２から出力されるライト訂正データは、例えば３２ビットのデータであり、書き込みデータ生成部１１３によるデータサイズの変換は行われないものとする。
【００４７】
メモリ制御部１０は、ＣＰＵ１２や周辺回路モジュール１３＿１〜１３＿ｎからのメモリ部１１に対するアクセスを制御するとともに、セルフチェックに係る制御を行う。メモリ制御部１０は、具体的には、セルフチェックレジスタ１００、アクセス制御部１０１、メモリインターフェース回路１０３、セレクタ１０４、１０５、及びセルフチェックエンドレジスタ１０２から構成される。
【００４８】
アクセス制御部１０１は、セルフチェックレジスタ１００の設定値に応じて、ＣＰＵ１２や周辺回路モジュール１３＿１〜１３＿ｎからのメモリアクセスを可能にする通常動作モードと、セルフチェックを行うセルフチェックモードとの切り替えを行うとともに、セルフチェックのための統括的な制御を行う。セルフチェックレジスタ１００は、具体的には、イネーブルレジスタ１００１と、スタートアドレスレジスタ１００２と、エンドアドレスレジスタ１００３とから構成される。イネーブルレジスタ１００１には、セルフチェックの実行と停止を指示する値が設定される。また、スタートアドレスレジスタ１００２には、セルフチェックにおいてエラーチェック及びエラー訂正を行うアドレス範囲の開始アドレスを指示するアドレス情報が設定され、エンドアドレスレジスタ１００３には、当該アドレス範囲の最終アドレスを指示するアドレス情報が設定される。夫々のレジスタ１００１〜１００３は、ＣＰＵ１２によってアクセス可能とされる。
【００４９】
アクセス制御部１０１は、セルフチェックアクセス要求信号ＲＥＱ＿Ｓ、セルフチェックモード信号、及びセルフチェックアドレスによって、セルフチェックに係る処理を制御する。前記セルフチェックアクセス要求信号ＲＥＱ＿Ｓは、メモリインターフェース回路１０３に対して、セルフチェックモードに応じたメモリ制御を指示する信号である。前記セルフチェックモード信号は、通常動作モード又はセルフチェックモードのいずれを指示する信号である。前記セルフチェックアドレスは、セルフチェックを行うメモリセルを指定するアドレス情報である。
【００５０】
アクセス制御部１０１は、例えばＣＰＵ１２によって、イネーブルレジスタ１００１にセルフチェックの停止を指示する値が設定された場合には、セルフチェックモード信号をネゲートするとともに、セルフチェックアクセス要求信号をネゲートする。他方、ＣＰＵ１２によって、イネーブルレジスタ１００１にセルフチェックの実行を指示する値が設定された場合には、セルフチェックモード信号をアサートするとともに、セルフチェックアクセス要求信号をアサートし、スタートアドレスレジスタ１００２に設定されたアドレス情報をセルフチェックアドレスとして出力する。セルフチェックモード中、アクセス制御部１０１は、セルフチェックアドレスの値がエンドアドレスレジスタ１００３の値と一致するまで、所定のクロックサイクル毎にセルフチェックアドレスをインクリメントして出力する。セルフチェックアドレスの値がエンドアドレスレジスタ１００３の値と一致したら、アクセス制御部１０１は、セルフチェックエンドレジスタ１０２にセルフチェックの完了を示す値（エンドフラグ）を設定し、イネーブルレジスタ１００１にセルフチェックの停止を指示する値を設定することで、セルフチェックモードを終了させて通常動作モードに切り替える。
【００５１】
セレクタ１０５は、ＣＰＵ１２又は周辺回路モジュール１３＿１〜１３＿ｎによってコントロールバス１４１上に出力されたアクセス対象のメモリセルを指定するアドレス情報ＡＤ＿Ｃと、アクセス制御部１０１から出力されたセルフチェックの対象となるメモリセルを指定するアドレス情報ＡＤ＿Ｓとを入力し、セルフチェックモード信号に応じていずれか一方を出力する。例えば、セルフチェックモード信号がネゲートされている場合には、アドレス情報ＡＤ＿Ｃを選択して出力し、セルフチェックモード信号がアサートされている場合には、アドレス情報ＡＤ＿Ｓを選択して出力する。
【００５２】
セレクタ１０４は、ＣＰＵ１２又は周辺回路モジュール１３＿１〜１３＿ｎからコントロールバス１４１上に出力されたメモリに対するアクセス要求信号ＲＥＱ＿Ｃと、アクセス制御部１０１から出力されたセルフチェックアクセス要求信号ＲＥＱ＿Ｓとを入力し、セルフチェックモード信号に応じていずれか一方を出力する。例えば、セルフチェックモード信号がネゲートされている場合には、アクセス要求信号ＲＥＱ＿Ｃを選択して出力し、セルフチェックモード信号がアサートされている場合には、セルフチェックアクセス要求信号ＲＥＱ＿Ｓを出力する。
【００５３】
メモリインターフェース回路１０３は、セレクタ１０４から出力されたアクセス要求信号に応じて、記憶領域１１０に対するデータの書き込みを制御する信号（ライト制御信号）と読み出しを制御する信号（リード制御信号）を出力する。例えば、メモリインターフェース回路１０３はアクセス要求信号ＲＥＱ＿Ｃが入力された場合には、アクセス要求信号ＲＥＱ＿Ｃがリードアクセスであるか又はライトアクセスであるかに応じて、所定のタイミングでライト制御信号又はリード制御信号を出力する。他方、セルフチェックアクセス要求信号ＲＥＱ＿Ｓが入力された場合には、メモリインターフェース回路１０３は所定のクロックサイクル毎にリード制御信号とライト制御信号を交互に出力する。これにより、セルフチェックモードにおいて、データを読み出してエラーチェックする処理と、エラーチェックしたデータのライト訂正データの書き込み処理が交互に実行される。
【００５４】
前述したように、半導体装置１は、メモリアクセスに関し、通常動作モードとセルフチェックモードの２つ動作モードを持つ。以下、通常動作モードとセルフチェックモードの切り替え方法について説明する。
【００５５】
図２は、通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。
【００５６】
先ず、通常動作モードで半導体装置１が動作しているとき、所定のタイミングで、ＣＰＵ１２がセルフチェックレジスタ１００に所定の値を設定することでセルフチェックの開始を指示する（Ｓ１１）。具体的には、前述したように、ＣＰＵ１２がスタートアドレスレジスタ１００２及びエンドアドレスレジスタ１００３にアドレス情報を設定することでセルフチェックを行うアドレス範囲を指定するとともに、イネーブルレジスタ１００１にセルフチェックの実行を指示する値を設定する。セルフチェックを行うタイミング及びセルフチェックの対象となるアドレス範囲は、ユーザがソフトウェアによって決定することができる。例えば、通常動作モード中のリードアクセスにおいて１ビット又は２ビット以上のエラーが発見されたタイミングや、周辺温度が変化したタイミング（例えば、所定の温度以上又は以下になったタイミング）でＣＰＵ１２がイネーブルレジスタ１００１を設定することで、セルフチェックを開始してもよい。また、例えば、半導体装置１がスタンバイ状態等の省電力状態に適宜遷移するが、電源が遮断されない状態が長時間続くような場合には、記憶領域１１０にデータが保持されている時間が長くなりソフトエラーの影響を受け易くなるため、スタンバイ状態に遷移する直前のタイミングやスタンバイ状態の解除後のタイミングでセルフチェックを開始してもよい。その他にも、タイマ等を利用して、一定時間毎にセルフチェックを実行することも可能である。また、セルフチェックの対象とするアドレス範囲は、記憶領域１１０の全アドレス範囲でも良いし、以下に例示する範囲でもよい。例えば、ＣＰＵ１２又は周辺回路モジュール１３＿１〜１３＿ｎによるリードアクセスにおいて１ビット又は２ビット以上のエラーが発生したタイミングでセルフチェックを実行する場合には、当該エラーが発生したアドレスに隣接するアドレスや同一のメモリマットの全アドレスについてセルフチェックを行ってもよい。その他、データの書き換えが頻繁に行われないメモリセルのみセルフチェックを行ってもよい。上記のようなタイミング及びアドレス範囲でエラーチェックを行うことで、２ビット以上のデータ破壊が発生する確率を下げ、ソフトエラーに対する信頼性を高めることができる。
【００５７】
図２において、ステップＳ１１でセルフチェックレジスタ１００１に所定の値が設定されると、半導体装置１はセルフチェックモードに移行する（Ｓ１２）。セルフチェックモード中の具体的な処理フローについては後述する。セルフチェックモードにおいて、指定されたアドレス範囲のセルフチェックが完了したら、アクセス制御部１０１は、セルフチェックエンドレジスタ１０２にエンドフラグを設定するとともに、イネーブルレジスタ１００１に設定された値を解除することで、セルフチェックモードを終了させる（Ｓ１３）。これにより、半導体装置１は通常動作モードに移行する。なお、ＣＰＵ１２はセルフチェックエンドレジスタ１０２にアクセス可能とされ、当該レジスタ１０２を参照することでセルフチェックが完了したことを判別することができる。
【００５８】
次に、セルフチェックの具体的な処理フローについて図３を用いて詳細に説明する。
【００５９】
図３は、セルフチェックモードにおける具体的な処理の流れを例示するフロー図である。先ず、前述のステップＳ１１においてＣＰＵ１２がセルフチェックレジスタ１００に所定の値を設定すると、アクセス制御部１０１が各種信号を出力する（Ｓ１２０）。例えば、アクセス制御部１０１は、セルフチェックアクセス要求信号ＲＥＱ＿Ｓをアサートするとともに、スタートアドレスレジスタ１００２に設定された先頭アドレスの情報をセルフチェックアドレスとして出力する。そして、アクセス制御部１０１はセルフチェックモード信号を切り替える（Ｓ１２１）。セルフチェックモード信号がネゲートされている間は、セレクタ１０４、１０５及びメモリインターフェース回路１０３は、前述のように、通常動作モードで動作する（Ｓ１２２）。セルフチェックモード選択信号がアサートされたら、セレクタ１０４、１０５及びメモリインターフェース回路１０３は、前述のように、セルフチェックモードで動作し、セルフチェックの実行が開始される（Ｓ１２３）。すなわち、セレクタ１０５はアクセス制御部１０１から出力されたセルフチェックアドレスＡＤ＿Ｓを記憶領域１１０に出力するとともに、セレクタ１０４はアクセス制御部１０１から出力されたセルフチェックアクセス要求信号ＲＥＱ＿Ｓをメモリインターフェース回路１０３に出力する。メモリインターフェース回路１０３は、セルフチェックアクセス要求信号ＲＥＱ＿Ｓに応じてリード制御信号を出力する。これにより、セルフチェックアドレスＡＤ＿Ｓで指定されたメモリセルのリードデータと対応するＥＣＣコードが読み出されるとともに、ＥＣＣ訂正回路１１２によってエラーチェックとエラー訂正が実行され、ライト訂正データが生成される。生成されたライト訂正データは、前述のようにＥＣＣコードとともに記憶領域１１０に入力される。その後、メモリインターフェース回路１０３がライト制御信号を出力することで、ライト訂正データとＥＣＣコードが記憶領域１１０に書き戻される（Ｓ１２４）。アクセス制御部１０１は、出力しているセルフチェックアドレスがエンドアドレスレジスタ１００３に設定された最終アドレスと一致するか否かを判別する（Ｓ１２５）。最終アドレスと一致した場合には、前述のステップＳ１３に移行し、セルフチェックモードが解除され、半導体装置１は通常動作モードに移行する。他方、一致しない場合には、アクセス制御部１０１は当該セルフチェックアドレスをインクリメントして、新たなアドレス情報をセレクタ１０５に出力する（Ｓ１２６）。その後は、最終アドレスの値と一致するまで、上記ステップＳ１２３〜Ｓ１２６が繰り返し実行される。
【００６０】
次に、セルフチェックにおける具体的な処理タイミングについて図４を用いて更に詳細に説明する。
【００６１】
図４は、セルフチェック中の処理タイミングを例示する説明図である。先ず、タイミングｔ０において、イネーブルレジスタ１００１にセルフチェックの実行を指示する値が設定されると、アクセス制御部１０１は、セルフチェックアクセス要求信号ＲＥＱ＿Ｓをアサートするとともに、セルフチェックモード信号を例えばロー（Ｌｏｗ）レベルからハイ（Ｈｉｇｈ）レベルに切り替えることで、セルフチェックモードに移行させる。また、アクセス制御部１０１は、スタートアドレスレジスタ１００２に設定された先頭アドレス（ｎ番地）の情報をセルフチェックアドレスとして出力する。これにより、メモリインターフェース回路１０３はリード制御信号を出力し、メモリ部１０のリードサイクルが開始される。
【００６２】
タイミングｔ１において、例えば３２ビット（ＥＣＣコードを除く。）のデータサイズでアクセスが行われる仕様である場合に、ｎ番地のリードデータ（Ｈ’００００００００）及びＥＣＣコードが読み出されると、ＥＣＣ訂正回路１１２がエラーチェックを行ってライト訂正データを生成し、ＥＣＣコード生成部１１１が当該ライト訂正データに基づいてＥＣＣコードを生成する。また、メモリインターフェース回路１０３はライト制御信号出力して、ライトサイクルを開始させる。
【００６３】
次に、タイミングｔ２において、記憶領域１１０のｎ番地にライト訂正データ及びＥＣＣコードが書き戻される。また、アクセス制御部１０１は、前記先頭アドレス（ｎ番地）をインクリメントし、（ｎ＋１）番地のアドレス情報をセルフチェックアドレスとして出力する。そして、メモリインターフェース回路１０３は、ライト制御信号に代えてリード制御信号を出力し、ライトサイクルからリードサイクルに移行させる。その後はタイミングｔ０〜ｔ２の処理と同様に、エラーチェックと訂正データの書き戻しとが繰り返し行われる。タイミングｔｍで、セルフチェック対象のアドレス範囲の最終アドレスに係るエラーチェックと訂正データの書き戻しが完了したら、アドレス制御部１０１はセルフチェックエンドレジスタ１０２にエンドフラグを設定するとともに、セルフチェックアクセス要求信号ＲＥＱ＿Ｓをネゲートし、セルフチェックモード信号をハイレベルからローレベルに切り替えてセルフチェックモードを解除して、通常動作モードに移行させる。
【００６４】
セルフチェック中にＣＰＵ１２等からメモリ部１１に対するアクセス要求があった場合には、アドレス制御部１０１はセルフチェックアクセス要求信号ＲＥＱ＿Ｓ及びセルフチェックモード信号をネゲートするとともに、イネーブルレジスタ１００１にセルフチェックの停止を指示する値を設定することで、セルフチェックを中断する。以降は、ＣＰＵ１２がイネーブルレジスタ１００１にセルフチェックの実行を指示する値を再設定しない限り、セルフチェックは再開されない。これにより、セルフチェック中であってもＣＰＵ１２からのアクセス要求を優先させることができるから、システムのパフォーマンス低下を防止することができる。
【００６５】
以上、実施の形態１によれば、ＣＰＵ１２等からリードアクセスが発生したメモリセルのみならず、リードアクセスが発生していないメモリセルのエラーチェックも行うことができるから、２ビット以上のデータ破壊が発生するリスクを減らし、ソフトエラーに対する信頼性を高めることができる。また、セルフチェックレジスタ１００により、誤り訂正を行うタイミングと誤り訂正を行うアドレス範囲をプログラマブルに変更することができるから、ユーザによるカスタマイズが可能な、柔軟性の高いエラー訂正機能を提供することができる。また、ＣＰＵ１２がセルフチェックレジスタ１００を設定した後は、メモリ制御部１０がセルフチェックに係る各種処理を制御するから、ＣＰＵ１２に負担をかけることなくセルフチェックを行うことができる。これにより、例えばセルフチェック中にＣＰＵ１２がメモリ部１１以外の周辺回路モジュール１３＿１〜１３＿ｎにアクセスすることが可能となるから、システムのパフォーマンスを低下させることなく、ソフトエラーに対する信頼性を高めることができる。また、セルフチェックモードでは、図４に示されるようにエラーの有無に関わらずライト訂正データを生成するから、エラーがあった場合の処理とエラーがなかった場合の処理とを分ける必要がなく、データの書き込み動作を実現するための回路構成を単純化することができる。
【００６６】
≪実施の形態２≫
図５は、実施の形態２に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置である。
【００６７】
半導体装置１と同一の構成要素には同一の符号を付して、その詳細な説明を省略する。
【００６８】
前述の半導体装置１は、セルフチェックにおいてエラーの有無に関わらずライト訂正データを記憶領域１１０に書き戻したが、同図に示される半導体装置２は、セルフチェックにおいて１ビットのエラーが発生した場合に書き戻し、エラーが発生しなかった場合は書き戻さない。
【００６９】
半導体装置２は、半導体装置１の構成要素に加え、ライト訂正データのライトタイミングを調整するためのフリップフロップ回路（ＦＦ）２０４、２０５と、セレクタ２０６とを備える。メモリ制御部２０は、エラーフラグを、アクセス制御部２０１及びメモリインターフェース回路２０３の制御信号として入力する。
【００７０】
図６は、半導体装置２におけるセルフチェック中の処理タイミングを例示する説明図である。
【００７１】
半導体装置１と同様に、タイミングｔ０でセルフチェック要求信号及びセルフチェックモード信号がアサートされると、半導体装置２はセルフチェックモードに移行する。セルフチェックモードにおいて、メモリインターフェース回路２０３はリード制御信号を１サイクル毎に繰り返し出力する。また、アドレス制御部２０１は１サイクル毎にアドレスをインクリメントして出力する。
【００７２】
次にタイミングｔ１１において、例えば３２ビット（ＥＣＣコードを除く。）のデータサイズでアクセスが行われる仕様である場合に、アドレス（ｎ＋２）番地から読み出したデータ（Ｈ’０００００００１）がエラーであった場合、エラー訂正回路１１２はエラー訂正を行ってライト訂正データ（Ｈ’００００００００）を生成するとともに、エラーフラグを設定する。ライト訂正データはフリップフロップ回路２０５によって１サイクル遅れてセレクタ２０６に入力され、セレクタ２０６はフリップフロップ回路２０４によって１サイクル遅れたエラーフラグを選択信号とする。これにより、１サイクル遅れたライト訂正データが記憶領域１１０に入力される。また、アクセス制御１０１はアドレスのインクリメントを１サイクル遅らせ、メモリインターフェース回路１０３はリード制御信号に代えて、ライト制御信号を出力する。これにより、タイミングｔ１２において、例えば記憶領域１１０が３２ビット（ＥＣＣコードを除く。）のデータサイズでアクセスが行われる仕様である場合に、（ｎ＋２）番地にエラー訂正データ（Ｈ’００００００００）が書き戻される。
【００７３】
図７は、半導体装置２における通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。
【００７４】
先ず、通常動作モードで半導体装置２が動作しているとき、所定のタイミングで、ＣＰＵ１２がセルフチェックレジスタ１００に所定の値を設定することでセルフチェックの開始を指示する（Ｓ１１）。ステップＳ１１における具体的な処理内容は半導体装置１と同様である。
【００７５】
ステップＳ１１でセルフチェックレジスタ１００に所定の値が設定されると、半導体装置２はセルフチェックモードに移行する（Ｓ２２）。ステップＳ１２１〜Ｓ１２３は、前述の半導体装置１と同様である。半導体装置２は、セルフチェックの実行中、エラーの有無を判別する（Ｓ２０４）。セルフチェック中にエラーが発生した場合には、前述の図６に示したように、エラーフラグに応じて、アクセス制御部２０１がアドレスのインクリメントを１サイクル遅らせるとともに、メモリインターフェース回路１０３がライト制御信号を出力することで、ライト訂正データとＥＣＣコードが記憶領域１１０に書き戻される（Ｓ２０５）。
【００７６】
エラーが発生しない場合には、アクセス制御部２０１は、出力しているセルフチェックアドレスがエンドアドレスレジスタ１００３に設定された最終アドレスと一致するか否かを判別する（Ｓ２０６）。一致しない場合には、アクセス制御部２０１は当該セルフチェックアドレスをインクリメントして、新たなアドレス情報をセレクタ１０５に出力する（Ｓ２０７）。その後は、上記ステップＳ１２３及びＳ２０４〜Ｓ２０７が繰り返し実行される。ステップＳ２０６において、最終アドレスと一致した場合には、前述のステップＳ１３に移行し、セルフチェックモードが解除され、半導体装置２は通常動作モードに移行する。
【００７７】
以上、実施の形態２によれば、実施の形態１と同様に、誤り訂正を行うタイミングと誤り訂正を行うアドレス範囲をプログラマブルに変更することができ、且つ２ビット以上のデータ破壊が発生するリスクを減らし、ソフトエラーに対する信頼性を高めることができる。また、セルフチェックモードでは、エラーが無かった場合には書き戻す処理を行わないから、セルフチェックに要する時間を短縮することができる。
【００７８】
≪実施の形態３≫
図８は、実施の形態３に係る、ＥＣＣ機能を備えたメモリを内蔵した半導体装置である。
【００７９】
半導体装置１、２と同一の構成要素には同一の符号を付して、その詳細な説明を省略する。
【００８０】
同図に示される半導体装置３は、前述の半導体装置１の機能に加え、通常動作モードとセルフチェックモードとの間で記憶領域１１０の電源電圧を切り替える機能を備える。
【００８１】
半導体装置３は、半導体装置１の構成要素に加え、ＣＰＵ１２によってアクセス可能な電源設定レジスタ１００４と、電源制御部（ＶＤＤ＿ＣＮＴ）３１とを備える。電源制御部３１は、電源設定レジスタ１００４の値に応じて、メモリ部１１の記憶領域１１０に供給する電源電圧を切り替える。電源制御部３１は、例えば、第１電源電圧生成部３１０と、第２電源電圧生成部３１１と、電源電圧セレクタ３１２とから構成される。第１電源生成部３１０は、例えば電源電圧ＶＤＤを生成するレギュレータである。第２電源生成部３１１は、例えば電源電圧ＶＤＤ＿Ｓを生成するレギュレータである。電源電圧ＶＤＤ＿Ｓは、電源電圧ＶＤＤとは異なる電圧であり、例えば電源電圧ＶＤＤよりも低い電圧である。電源電圧セレクタ３１２は、電源設定レジスタ１００４の値に応じて、電源電圧ＶＤＤ又は電源電圧ＶＤＤ＿Ｓのいずれか一方を選択し、メモリ部１１の記憶領域１１０に供給する。電源設定レジスタ１００４には、第１電源電圧生成部３１０の電圧又は第２電源電圧生成部３１１の電圧のいずれか一方を指示する値が設定される。特に制限されないが、電源設定レジスタ１００４の初期値として、例えば第１電源電圧生成部３１０を指示する値が設定される。電源電圧セレクタ３１２は、例えば、電源制御レジスタ１００４に第１電源電圧生成部３１０を指示する値が設定されたら電源電圧ＶＤＤを選択して出力し、電源制御レジスタ１００４に第２電源電圧生成部３１１を指示する値が設定されたら電源電圧ＶＤＤ＿Ｓを選択して出力する。
【００８２】
図９は、半導体装置３における通常動作モードとセルフチェックモードの切り替りの流れを例示するフロー図である。先ず、通常動作モードで半導体装置３が動作しているとき、所定のタイミングで、ＣＰＵ１２がセルフチェックレジスタ３００に所定の値を設定することでセルフチェックの開始を指示する（Ｓ２１）。具体的には、半導体装置１、２と同様にＣＰＵ１２がスタートアドレスレジスタ１００２及びエンドアドレスレジスタ１００３にアドレス情報を設定することでセルフチェックを行うアドレス範囲を指定するとともに、イネーブルレジスタ１００１にセルフチェックの実行を指示する値を設定する。更に、ＣＰＵ１２は、電源設定レジスタ１００４に第２電源電圧生成部３１１の電圧ＶＤＤ＿Ｓを指示する値を設定する。これにより、半導体装置３はセルフチェックモードに移行するとともに、記憶領域１１０の電源電圧はＶＤＤからＶＤＤ＿Ｓに切り替わる。以降の処理は図３と同様である。
【００８３】
以上、実施の形態３によれば、実施の形態１と同様に、誤り訂正を行うタイミングと誤り訂正を行うアドレス範囲をプログラマブルに変更することができ、且つ２ビット以上のデータ破壊が発生するリスクを減らし、ソフトエラーに対する信頼性を高めることができる。また、半導体装置３は、ユーザの設定によって、記憶領域１１０における通常動作時の電源状態とセルフチェック時の電源状態を切り替えることができる。これによれば、エラーが発生する蓋然性の高いメモリセルが存在する場合、すなわち中間電位のような不定な値を保持している不安定なメモリセルがあり通常動作時の電源状態ではエラーが発見できないような場合であっても、セルフチェック時に電源電圧を変えることで、そのようなメモリセルのエラーを検出し訂正を行うことが可能となり、ソフトエラーに対する信頼性をより高めることができる。更に、セルフチェック時の電源電圧ＶＤＤ＿Ｓを通常動作時の電源電圧ＶＤＤよりも低くすることで、セルフチェック中の消費電力を低減することができる。
【００８４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８５】
例えば、実施の形態３において、第２電源電圧生成部３１１の電圧ＶＤＤ＿Ｓを電源ＶＤＤよりも低い電圧としたが、これに限られず、電源電圧ＶＤＤよりも高い電圧としてもよい。これによれば、低い電圧とした場合と同様に、ソフトエラーに対する信頼性をより高めることができる。また、セルフチェックモードにおいて、電源電圧をＶＤＤよりも低い（高い）電源電圧に切り替えてエラーチェックを行ったあと、ＶＤＤよりも高い（低い）電源電圧に切り替えてエラーチェックを行ってもよい。これによれば、電源電圧を１回切り替える場合に比べて、エラーが発生する蓋然性の高いメモリセルを発見しエラー訂正を行うことができる可能性が高まるから、ソフトエラーに対する信頼性を更に高めることができる。
【００８６】
また、実施の形態３では、電源設定レジスタ１００４の値に応じて記憶領域１１０の電源電圧を切り替える方法を例示したがこれに限られない。例えば、電源設定レジスタ１００４を設けずに、セルフチェックモード信号に応じて電源電圧セレクタ３１２が電圧を切り替える方法でもよい。すなわち、電源電圧セレクタ３１２は、セルフチェックモード信号がネゲートされている場合には、電源電圧ＶＤＤを選択して出力し、セルフチェックモード信号がアサートされた場合には電源電圧ＶＤＤ＿Ｓを選択して出力する。これによれば、動作モードの切り替わりに連動して記憶領域１１０の電源状態が切り替わるから、ユーザによる電源電圧の切り替え制御が不要となる。また、この場合において、電源設定レジスタ１００４の代わりに、第２電源電圧生成部３１１の電圧値を指示するためのレジスタを別途設け、第２電源電圧生成部３１１が当該レジスタの値に応じた電圧を生成して出力してもよい。これによれば、ユーザがセルフチェック時の電源電圧を選択することができ、カスタマイズの幅を広げることができる。
【００８７】
実施の形態３において、実施の形態１に係る半導体装置１に電源電圧を切り替える機能を追加した構成を例示したが、これに限られず、実施の形態２に係る半導体装置２に電源制御部３１等を内蔵することで、電源電圧を切り替える機能を追加することも可能である。
【００８８】
実施の形態１乃至３において、セルフチェック中にＣＰＵ１２等からメモリ部１１に対するアクセス要求があった場合に、アドレス制御部１０１、２０１がセルフチェックを中断する方法を例示したがこれに限られない。例えば、アクセス制御部１０１、２０１は、セルフチェックが完了するまでウェイト信号をＣＰＵ１２等に出力し、セルフチェックが完了したら、ウェイト信号とイネーブルレジスタ１００１とを解除して、ＣＰＵ１２等からのアクセスを許可する方法でもよい。その他にも、セルフチェック中にＣＰＵ１２がメモリ部１１にアクセスしたい場合に、ＣＰＵ１２が直接、セルフチェックの停止を指示する値をイネーブルレジスタ１００１に設定してもよい。また、中断したセルフチェックを再開する場合には、中断したときのアドレスから再開してもよいし、セルフチェック対象のアドレス範囲の先頭アドレスからやり直してもよい。
【符号の説明】
【００８９】
１〜３  半導体装置
１０  メモリ制御部
１１  メモリ部
１２  ＣＰＵ
１３＿１〜１３＿ｎ  周辺回路モジュール（Ｐ＿ＭＤＬ）
１４  内部バス
１５  エラーレジスタ
１４１  コントロールバス
１４２  アドレスバス
１４３  データバス
１００  セルフチェックレジスタ
１００１  イネーブルレジスタ
１００２  スタートアドレスレジスタ
１００３  エンドアドレスレジスタ
１０１  アクセス制御部
１０２  セルフチェックエンドレジスタ
１０３  メモリインターフェース回路
１０４、１０５  セレクタ
１１０  記憶領域（ＲＡＭ＿ＭＡＴ）
１１１  ＥＣＣコード生成回路
１１２  ＥＣＣ訂正回路
１１３  書き込みデータ生成部
ＡＤ＿Ｃ  ＣＰＵ又は周辺回路モジュールからのアドレス情報
ＡＤ＿Ｓ  セルフチェックアドレス
ＲＥＱ＿Ｃ  ＣＰＵ又は周辺回路モジュールからのアクセス要求信号
ＲＥＱ＿Ｓ  セルフチェックアクセス要求信号
ｔ０〜ｔ２、ｔｍ、ｔ１１、ｔ１２  タイミング
２０  メモリ制御部
２０１  アクセス制御部
２０３  メモリインターフェース
２０４、２０５  フリップフロップ回路（ＦＦ）
２０６  セレクタ  
３０  メモリ制御部
３００  セルフチェックレジスタ
１００４  電源設定レジスタ
３１  電源制御部
３１０  第１電源電圧生成部
３１１  第２電源電圧生成部
３１２  電源電圧セレクタ
ＶＤＤ、ＶＤＤ＿Ｓ  電源電圧
【図１】
2013143075.tif 000003
【図２】
2013143075.tif 000004
【図３】
2013143075.tif 000005
【図４】
2013143075.tif 000006
【図５】
2013143075.tif 000007
【図６】
2013143075.tif 000008
【図７】
2013143075.tif 000009
【図８】
2013143075.tif 000010
【図９】
2013143075.tif 000011