(57)【要約】【課題】比較的小さい回路でレジスタのエラー訂正を行えるようにする。【解決手段】行番地と列番地が割り当てられており、それぞれ０または１の１ビットの値を格納するレジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２を有する。行番地ごとに設けられた誤り検出回路ｐａ〜ｐｃは、同一行番地のレジスタ群の何れかの値が変化したときに第１のエラー検出信号を出力する。列番地ごとに設けられた誤り検出回路ｐ０〜ｐ２は、同一列番地のレジスタ群の何れかの値が変化したときに第２のエラー検出信号を出力する。正常値書き込み部２は、第１のエラー検出信号及び第２のエラー検出信号に基づき、エラーが発生したレジスタｃ１を特定して、レジスタｃ１の格納値を１から０または０から１に反転させる。【選択図】図１
2016018569.tif 000002
【特許請求の範囲】
【請求項１】
行番地と列番地が割り当てられており、それぞれ０または１の１ビットの値を格納する複数のレジスタと、
前記複数のレジスタのうち、同一行番地の第１のレジスタ群の何れかの値が変化したときに第１のエラー検出信号を出力する、前記行番地ごとに設けられた第１の誤り検出回路と、
前記複数のレジスタのうち、同一列番地の第２のレジスタ群の何れかの値が変化したときに第２のエラー検出信号を出力する、前記列番地ごとに設けられた第２の誤り検出回路と、
前記第１のエラー検出信号及び前記第２のエラー検出信号に基づき、エラーが発生した第１のレジスタを特定して、前記第１のレジスタの第１の格納値を１から０または０から１に反転させる正常値書き込み部と、
を有することを特徴とする半導体集積回路。
【請求項２】
前記第１のエラー検出信号及び前記第２のエラー検出信号に基づき、エラーが発生した前記第１のレジスタから出力される値を、１から０または０から１に反転し、エラー発生前の前記第１のレジスタの第２の格納値の出力状態を保持する正常値保持部、を有することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記複数のレジスタのそれぞれは、前記正常値書き込み部から供給される選択信号に基づいて、自身が保持している値を反転させる回路を有している、ことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記第１の誤り検出回路または前記第２の誤り検出回路は、前記第１のレジスタ群または前記第２のレジスタ群が正常時のパリティビットを保持しており、エラーによって前記パリティビットが第１の値から第２の値に変化したとき、クロック信号に同期して、前記パリティビットを、前記第１のレジスタ群または前記第２のレジスタ群の値に基づき生成される前記第１の値に更新する、ことを特徴とする請求項１乃至３の何れか一項に記載の半導体集積回路。
【請求項５】
前記正常値書き込み部は、前記第１のエラー検出信号及び前記第２のエラー検出信号に基づき、エラーが発生した前記第１のレジスタから出力される値を、１から０または０から１に反転し、エラー発生前の前記第１のレジスタに格納される値の出力状態を保持する、ことを特徴とする請求項３または４に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関する。
【背景技術】
【０００２】
宇宙からのアルファ線や中性子線により、メモリに記憶されているビットの値が反転してしまうソフトエラーと呼ばれる現象が知られている。ソフトエラーで発生したエラーを訂正する手法として、ＥＣＣ（Error Correcting Code）を用いる技術があった。
【０００３】
一方で、微細化が進む大規模ロジック回路においても、設定値等を格納するレジスタ群に対するソフトエラーの影響が懸念されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−５５０７７号公報
【特許文献２】特開２００７−２４８３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
レジスタのソフトエラー対策のためにＥＣＣを適用しようとすると、データ書き込み時にＥＣＣを生成して格納するため、その格納領域等により回路面積が増加してしまう。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、行番地と列番地が割り当てられており、それぞれ０または１の１ビットの値を格納する複数のレジスタと、前記複数のレジスタのうち、同一行番地の第１のレジスタ群の何れかの値が変化したときに第１のエラー検出信号を出力する、前記行番地ごとに設けられた第１の誤り検出回路と、前記複数のレジスタのうち、同一列番地の第２のレジスタ群の何れかの値が変化したときに第２のエラー検出信号を出力する、前記列番地ごとに設けられた第２の誤り検出回路と、前記第１のエラー検出信号及び前記第２のエラー検出信号に基づき、エラーが発生した第１のレジスタを特定して、前記第１のレジスタの第１の格納値を１から０または０から１に反転させる正常値書き込み部と、を有する半導体集積回路が提供される。
【発明の効果】
【０００７】
開示の半導体集積回路によれば、比較的小さい回路でレジスタのエラー訂正が行える。
【図面の簡単な説明】
【０００８】
【図１】第１の実施の形態の半導体集積回路の一例を示す図である。
【図２】第２の実施の形態の半導体集積回路の一例を示す図である。
【図３】第２の実施の形態のレジスタ群及び誤り検出部の一例を示す図である。
【図４】レジスタの一例を示す図である。
【図５】レジスタのエラー訂正時の動作例を示すタイミングチャートである。
【図６】誤り検出回路の一例を示す図である。
【図７】正常値保持部の一例を示す図である。
【図８】レジスタ群に含まれるレジスタにエラーが発生した際の誤り検出回路及び正常値保持部の動作の一例を示すタイミングチャートである。
【図９】誤り検出回路のレジスタにエラーが発生した際の誤り検出回路及び正常値保持回路の動作の一例を示すタイミングチャートである。
【図１０】エラー発生時の半導体集積回路の動作の一例の流れを示すフローチャートである。
【図１１】第３の実施の形態の半導体集積回路の一例を示す図である。
【図１２】第３の実施の形態の半導体集積回路の動作例を示すタイミングチャートである（その１）。
【図１３】第３の実施の形態の半導体集積回路の動作例を示すタイミングチャートである（その２）。
【発明を実施するための形態】
【０００９】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の半導体集積回路の一例を示す図である。
【００１０】
半導体集積回路１は、レジスタａ０，ａ１，ａ２，ｂ０，ｂ１，ｂ２，ｃ０，ｃ１，ｃ２、誤り検出回路ｐａ，ｐｂ，ｐｃ，ｐ０，ｐ１，ｐ２、正常値書き込み部２を有する。
レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２は、それぞれ０または１の１ビットの値を格納する。格納される値は、半導体集積回路１の動作に用いられる設定値等である。
【００１１】
また、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２は、行番地と列番地が割り当てられている。
以下の説明では、行番地をａ，ｂ，ｃとして、レジスタａ０，ａ１，ａ２には同一の行番地ａが、レジスタｂ０，ｂ１，ｂ２には同一の行番地ｂが、レジスタｃ０，ｃ１，ｃ２には同一の行番地ｃが割り当てられているものとする。また、列番地を０，１，２として、レジスタａ０，ｂ０，ｃ０には同一の列番地０が、レジスタａ１，ｂ１，ｃ１には同一の列番地１が、レジスタａ２，ｂ２，ｃ２には同一の列番地２が割り当てられているものとする。
【００１２】
なお、行番地と列番地の一方はビット位置を示すものであってもよい。例えば、列番地０〜２がビット位置を示すとすると、レジスタａ０は、行番地ａのデータの最下位ビットを格納するレジスタ、レジスタａ２は、行番地ａのデータの最上位ビットを格納するレジスタ、となる。
【００１３】
なお、図１の例では、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２は、行列状に配置されているが、どのように配置されていてもよく、物理配置にかかわらず、行番地ａ，ｂ，ｃと列番地０，１，２が割り当てられる。例えば、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２は、１列に配置されていてもよい。また、図１では、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２に供給されるクロック信号については図示が省略されている。
【００１４】
誤り検出回路ｐａ，ｐｂ，ｐｃは、各行番地ａ，ｂ，ｃに対応して設けられている。誤り検出回路ｐａは、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２のうち、行番地ａのレジスタａ０〜ａ２の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。誤り検出回路ｐｂは、行番地ｂのレジスタｂ０〜ｂ２の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。誤り検出回路ｐｃは、行番地ｃのレジスタｃ０〜ｃ２の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。
【００１５】
一方、誤り検出回路ｐ０，ｐ１，ｐ２は、各列番地０，１，２に対応して設けられている。誤り検出回路ｐ０は、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２のうち、列番地０のレジスタａ０，ｂ０，ｃ０の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。誤り検出回路ｐ１は、列番地１のレジスタａ１，ｂ１，ｃ１の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。誤り検出回路ｐ２は、列番地２のレジスタａ２，ｂ２，ｃ２の何れかの値が変化したときに、エラーを検出したことを示すエラー検出信号を出力する。
【００１６】
なお、誤り検出回路ｐａ，ｐｂ，ｐｃ，ｐ０，ｐ１，ｐ２で、各行番地または各列番地のレジスタ群の値の変化を検出する方法として、例えば、以下の方法がある。
誤り検出回路ｐａを例にして説明する。誤り検出回路ｐａは、例えば、レジスタａ０，ａ１，ａ２の値のＸＯＲ演算を行うことによりパリティビットを生成する。そして、誤り検出回路ｐａは、生成したパリティビットと、予め格納している正常時のパリティビットとを比較することにより、レジスタａ０，ａ１，ａ２の何れかの値が変化したか否かを検出できる。生成したパリティビットと正常時のパリティビットが異なれば、誤り検出回路ｐａは、エラーを検出したことを示すエラー検出信号を出力する。
【００１７】
正常値書き込み部２は、誤り検出回路ｐａ，ｐｂ，ｐｃからのエラー検出信号と、誤り検出回路ｐ０，ｐ１，ｐ２からのエラー検出信号に基づき、エラーが発生した（値が反転した）レジスタを特定する。誤り検出回路ｐａ，ｐｂ，ｐｃ，ｐ０，ｐ１，ｐ２は、行番地ａ，ｂ，ｃまたは列番地０，１，２に対応しているため、誤り検出回路ｐａ，ｐｂ，ｐｃから出力されるエラー検出信号から、エラーが発生したレジスタの行番地が特定される。また、誤り検出回路ｐ０，ｐ１，ｐ２から出力されるエラー検出信号から、エラーが発生したレジスタの列番地が特定される。これによって、エラーが発生したレジスタが特定される。
【００１８】
さらに、正常値書き込み部２は、特定したレジスタに書き込む値を１から０または０から１に反転させる。これによって、エラー訂正が行われる。
なお、正常値書き込み部２は、プロセッサ（例えば、ＣＰＵ（Central Processing Unit））であってもよい。プロセッサを用いた場合、誤り検出回路ｐａ〜ｐｃ，ｐ０〜ｐ２から出力されるエラー検出信号に基づき、プロセッサへの割り込みがアサートされ、プロセッサはエラーが発生したレジスタの値を反転させる。
【００１９】
（半導体集積回路の動作例）
以下、半導体集積回路１によるエラー検出／訂正時の動作例を説明する。なお、以下では、レジスタｃ１でエラー（例えば、ソフトエラー）が発生し、値（ビット）が０から１または１から０に反転した例を用いて説明する。
【００２０】
レジスタｃ１の値が反転したとき、誤り検出回路ｐｃは、レジスタｃ０〜ｃ２の値の変化を受けて、エラーが発生した旨を示すエラー検出信号を出力する。一方、誤り検出回路ｐ１も、レジスタａ１，ｂ１，ｃ１の値の変化を受けて、エラーが発生した旨を示すエラー検出信号を出力する。
【００２１】
正常値書き込み部２は、誤り検出回路ｐｃ，ｐ１からのエラー検出信号を受けて、誤り検出回路ｐｃが属する行番地ｃと、誤り検出回路ｐ１が属する列番地１から、エラーが発生したレジスタｃ１を特定する。そして、正常値書き込み部２は、レジスタｃ１の格納値を反転させ、レジスタｃ１に発生したエラーを訂正する。
【００２２】
以上のように、半導体集積回路１は、行番地と列番地をレジスタに割当て、同一行番地及び同一列番地ごとのレジスタ群の値の変化を検出して、検出結果から特定したエラーが発生したレジスタの格納値を反転してエラー訂正を行う。これによって、例えば、ＥＣＣを用いた際に行われる読み出し動作や、ＥＣＣの格納領域も不要となるので、レジスタのエラー検出／訂正を、比較的小さい回路で行える。
【００２３】
なお、誤り検出回路ｐａ〜ｐｃまたは誤り検出回路ｐ０〜ｐ２の一方は、１つであってもよい。例えば、各レジスタに１行ｎ（ｎ≧２）列の番地が割当てられたときには、行番地に対応した誤り検出回路は１つとなる。
【００２４】
（第２の実施の形態）
図２は、第２の実施の形態の半導体集積回路の一例を示す図である。
第２の実施の形態の半導体集積回路３は、プロセッサ４、レジスタ群５、誤り検出部６、正常値保持部７、割り込み制御部８、回路部９を有する。
【００２５】
プロセッサ４は、例えば、クロック信号ＣＬＫ、アドレス信号ＡＤＤ、バイトイネーブル信号ＢＥ、ライト信号Ｗをレジスタ群５等に出力する。また、プロセッサ４は、レジスタ群５や誤り検出部６と、例えば、データバスにより接続されている。また、プロセッサ４は、割り込み制御部８から出力される割り込み信号Ｉｎｔがアサートされると、誤り検出部６からのエラー検出信号に基づき、レジスタ群５内のエラーが発生したレジスタを特定し、そのレジスタの格納値を反転させることで、エラー訂正を行う。すなわち、プロセッサ４は、第１の実施の形態の半導体集積回路１の正常値書き込み部２の機能を行う。
【００２６】
なお、プロセッサ４は、例えば、ＣＰＵ、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）である。また、プロセッサ４は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。また、プロセッサ４は、マルチプロセッサであってもよい。
【００２７】
レジスタ群５に含まれる各レジスタには、行番地と列番地が割り当てられており、それぞれ０または１の１ビットの値を格納する。
誤り検出部６は、行番地及び列番地ごとに設けられた複数の誤り検出回路を有しており、レジスタ群５に含まれる行番地または列番地ごとのレジスタ群の値の変化を検出したときに、エラーを検出した旨のエラー検出信号を出力する。
【００２８】
正常値保持部７は、誤り検出部６でエラーが検出されても、回路部９に対しては正常値（エラー発生前のレジスタの格納値）の出力状態が保持（維持）されるようにする。正常値保持部７は、エラー検出信号に基づき、エラーが発生したレジスタの値を反転して回路部９に出力する。このため、エラーによって、あるレジスタの値が反転しても、回路部９に供給されるレジスタの値は正常値のままとなる。また、正常値保持部７は、誤り検出部６がエラーを検出した場合、割り込み制御部８に対して、割り込み信号Ｉｎｔの発生を指示する。
【００２９】
割り込み制御部８は、正常値保持部７から割り込み信号Ｉｎｔの発生が指示されると、プロセッサ４に供給する割り込み信号Ｉｎｔをアサートする。また、割り込み制御部８は、正常値保持部７からの割り込み信号Ｉｎｔの発生の指示がないとき、割り込み信号Ｉｎｔをネゲートする。
【００３０】
回路部９は、半導体集積回路１の特定の機能を実行する回路部である。回路部９は、レジスタ群５で保持されている値に基づき、特定の機能を実行する。回路部９に供給される値は、前述の正常値保持部７の機能により正常値が維持される。
【００３１】
（レジスタ群及び誤り検出部の例）
以下、レジスタ群５及び誤り検出部６の一例を説明する。
図３は、第２の実施の形態のレジスタ群及び誤り検出部の一例を示す図である。
【００３２】
なお、図１に示す要素と同一の要素には、同一の符号を付し、その説明を一部省略する。また、レジスタ群５において、プロセッサ４から入力されるライト信号Ｗ等については図示を省略している。
【００３３】
レジスタ群５は、行番地と列番地が割り当てられた９個のレジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２を有する。なお、レジスタの数は、特にこの数に限定されるものではない。
【００３４】
なお、第１の実施の形態の半導体集積回路１で示したレジスタ群と同様に、行番地をａ，ｂ，ｃとして、レジスタａ０，ａ１，ａ２には同一の行番地ａが、レジスタｂ０，ｂ１，ｂ２には同一の行番地ｂが、レジスタｃ０，ｃ１，ｃ２には同一の行番地ｃが割り当てられているものとする。また、列番地を０，１，２として、レジスタａ０，ｂ０，ｃ０には同一の列番地０が、レジスタａ１，ｂ１，ｃ１には同一の列番地１が、レジスタａ２，ｂ２，ｃ２には同一の列番地２が割り当てられているものとする。
【００３５】
また、以下の説明では、行番地ａ，ｂ，ｃは、図２に示したようにプロセッサ４が出力するアドレス信号ＡＤＤで指定され、列番地０，１，２はビット位置を示し、プロセッサ４が出力する複数ビットのデータで指定されるものとする。ここで、列番地０が最下位ビットを示し、列番地２が最上位ビットとすると、例えば、３ビットのデータ“０１０”がプロセッサ４から出力された場合、列番地１が指定される。
【００３６】
以下の説明では、レジスタａ０〜ａ２の出力信号を信号ｄａ０，ｄａ１，ｄａ２、レジスタｂ０〜ｂ２の出力信号を信号ｄｂ０，ｄｂ１，ｄｂ２、レジスタｃ０〜ｃ２の出力信号を信号ｄｃ０，ｄｃ１，ｄｃ２と表記する。
【００３７】
誤り検出部６は、行番地及び列番地ごとに設けられた誤り検出回路ｐａ〜ｐｃ，ｐ０〜ｐ２を有する。誤り検出回路ｐａ〜ｐｃ，ｐ０〜ｐ２の各々は、行番地ａ，ｂ，ｃまたは列番地０，１，２に属するレジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２の値の変化を検出する。以下、誤り検出回路ｐａ〜ｐｃから出力されるエラー検出信号を信号ｘａｐ，ｘｂｐ，ｘｃｐ、誤り検出回路ｐ０〜ｐ２から出力されるエラー検出信号を信号ｘ０ｐ，ｘ１ｐ，ｘ２ｐと表記する。信号ｘａｐ，ｘｂｐ，ｘｃｐ，ｘ０ｐ，ｘ１ｐ，ｘ２ｐは、例えば、値が“１”のとき、エラーが発生したことを表す。
【００３８】
（レジスタの一例）
以下、レジスタａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２の一例を説明する。
図４は、レジスタの一例を示す図である。
【００３９】
なお、以下では、レジスタｃ１の一例を示すが、他のレジスタについても同様の回路構成で実現できる。
レジスタｃ１は、例えばエラーにより反転された値を、プロセッサ４の制御のもとさらに反転する機能を有する。レジスタｃ１は、フリップフロップ１０、ＮＯＴ回路１１、セレクタ１２を有する。
【００４０】
フリップフロップ１０は、クロック信号ＣＬＫの立ち上り（または立ち下がり）に同期して、セレクタ１２から出力される値を保持し、また、保持した値を信号ｄｃ１として出力する。また、フリップフロップ１０は、フリップフロップ１０の初期値設定の際に使用される非同期セット端子１０ａ、非同期リセット端子１０ｂを有する。例えば、電源投入時等の初期状態において、フリップフロップ１０の初期値を１とする場合は非同期セット端子１０ａに、初期値を０とする場合は非同期リセット端子１０ｂに、初期値設定のための信号がプロセッサ４から供給される。
【００４１】
ＮＯＴ回路１１は、信号ｄｃ１の値を反転させ、セレクタ１２に出力する。
セレクタ１２は、選択信号に基づき、信号ｄｃ１と、ＮＯＴ回路１１で反転された信号ｄｃ１の何れかを選択し、フリップフロップ１０に出力する。
【００４２】
選択信号は、アドレス信号ＡＤＤ、バイトイネーブル信号ＢＥ、ライト信号Ｗ、データ（例えば、前述した３ビットのデータ）に基づいて生成される。レジスタｃ１に入力される選択信号は、アドレス信号ＡＤＤで行番地ｃが指定され、バイトイネーブル信号ＢＥが有効であり、ライト信号Ｗが“１”で、データで列番地１が指定されたときに、“１”となる。このとき、フリップフロップ１０に格納される値が０から１または１から０に反転される。
【００４３】
以下、プロセッサ４から出力される各種信号に基づくレジスタｃ１の動作例を説明する。
（レジスタの動作例）
図５は、レジスタのエラー訂正時の動作例を示すタイミングチャートである。
【００４４】
図５には、書き戻し処理の際、プロセッサ４から出力されるクロック信号ＣＬＫ、アドレス信号ＡＤＤ、バイトイネーブル信号ＢＥ、ライト信号Ｗ、データバスに流れるデータの一例が示されている。
【００４５】
さらに、レジスタｃ１から出力される信号ｄｃ１と、レジスタｃ１のセレクタ１２に入力される選択信号の一例の様子が示されている。なお、図５では、タイミングｔ０より前にレジスタｃ１にエラーが発生し、レジスタｃ１（フリップフロップ１０）に格納されている値が“１”に反転されている、すなわち、信号ｄｃ１が“１”となっているものとする。
【００４６】
レジスタｃ１にエラーが発生すると、割り込み制御部８によりプロセッサ４への割り込み信号Ｉｎｔがアサートされる。そして、プロセッサ４は、誤り検出部６から出力されるエラー検出信号に基づき、エラーが発生したレジスタｃ１を特定する。そしてプロセッサ４は、タイミングｔ０で、アドレス信号ＡＤＤでレジスタｃ１の属する行番地ｃを指定し、“０１０”という３ビットのデータにより、列番地１を指定する。
【００４７】
タイミングｔ０では、さらに、レジスタｃ１の値の書き換えが可能となるように、プロセッサ４は、バイトイネーブル信号ＢＥを有効にする。
タイミングｔ１では、プロセッサ４により、ライト信号Ｗが、クロック信号ＣＬＫの立ち上りに同期して、“１”に立ち上り、選択信号も“１”になる。このとき、セレクタ１２は、ＮＯＴ回路１１で“０”に反転された信号ｄｃ１を選択し、フリップフロップ１０に出力する。
【００４８】
タイミングｔ２では、クロック信号ＣＬＫの立ち上りに同期して、信号ｄｃ１が“０”に立ち下がる。これにより、レジスタｃ１で発生したエラーが訂正される。また、クロック信号ＣＬＫの立ち上りに同期して、ライト信号Ｗが立ち下り、選択信号も立ち下る。
【００４９】
レジスタｃ１から正常値が出力されると割り込み制御部８によるプロセッサ４への割り込み信号Ｉｎｔがネゲートされる。これにより、プロセッサ４からの行番地ｃの指定や、列番地１を指定するためのデータ出力が停止され、バイトイネーブル信号ＢＥも無効となる。
【００５０】
上記のように、プロセッサ４は、エラー発生レジスタの属する列番地をビット位置として、複数ビット（上記の例では３ビット）のデータで指定する。複数ビットのうち値が“０”のビット位置に相当する列番地のレジスタではエラー訂正が行われず、値が“１”のビット位置に相当する列番地のレジスタではエラー訂正が行われる。これにより、レジスタ１つごと（１ビット単位）の訂正が可能である。
【００５１】
なお、上記の例では、プロセッサ４は、ライト信号Ｗを１クロック周期の間（タイミングｔ１〜ｔ２間）だけ“１”としている。ライト信号Ｗが、偶数クロック周期の間、例えば、２クロック周期の間“１”であると、選択信号も２クロック周期の間、“１”になる。そうすると、１クロック目で“１”から“０”に反転した信号ｄｃ１が、２クロック目で、さらに“０”から“１”と反転し、元の状態に戻ってしまう。これを防止するために、プロセッサ４は、上記のように、ライト信号Ｗを奇数クロック周期の間、例えば、１クロック周期の間だけ、“１”になるようにしている。
【００５２】
他のレジスタについても同様の動作により、エラー訂正が行われる。
（誤り検出回路の一例）
以下、誤り検出回路ｐａ〜ｐｃ，ｐ０〜ｐ２の一例を説明する。
【００５３】
図６は、誤り検出回路の一例を示す図である。以下では、誤り検出回路ｐｃを例にとって説明するが、他の誤り検出回路についても同様の回路構成で実現できる。
誤り検出回路ｐｃは、偶数パリティ方式により、行番地ｃのレジスタｃ０，ｃ１，ｃ２の値の変化を検出する回路である。
【００５４】
誤り検出回路ｐｃは、ＸＯＲ回路１３，１４、レジスタ１５、ＸＯＲ回路１６を有する。
ＸＯＲ回路１３は、レジスタｃ１から出力される信号ｄｃ１とレジスタｃ２から出力される信号ｄｃ２とのＸＯＲ演算を行い、その演算結果をＸＯＲ回路１４に出力する。ＸＯＲ回路１４は、ＸＯＲ回路１３から出力されるＸＯＲ演算結果と、レジスタｃ０から出力される信号ｄｃ０のＸＯＲ演算を行い、その演算結果を、レジスタ１５とＸＯＲ回路１６に出力する。ＸＯＲ回路１４から出力されるＸＯＲ演算結果が、信号ｄｃ０〜ｄｃ２の偶数パリティ方式により生成されたパリティビットとなる。
【００５５】
レジスタ１５は、ＸＯＲ回路１４から出力されたパリティビットを、クロック信号ＣＬＫの立ち上り（または立ち下り）に同期して保持し、また、保持したパリティビットをＸＯＲ回路１６に出力する。
【００５６】
ＸＯＲ回路１６は、ＸＯＲ回路１４から出力されたパリティビットと、レジスタ１５に保持されたパリティビットのＸＯＲ演算を行い、その演算結果を信号ｘｐｃとして、図２に示した正常値保持部７に出力する。図６に示す例では、ＸＯＲ回路１４から出力されたパリティビットと、レジスタ１５に保持されたパリティビットが一致しないときに、信号ｘｐｃは、エラーの発生を示す“１”となる。
【００５７】
なお、信号ｘｐｃはプロセッサ４にも出力するようにしてもよい。プロセッサ４は、信号ｘｐｃと、誤り検出回路ｐ１が出力する信号ｘｐ１の値が両方“１”のときに、レジスタｃ１がエラー発生レジスタであることを特定する。
【００５８】
なお、誤り検出回路ｐｃでは、レジスタ１５でエラーが発生し、保持しているパリティビットの値が反転してしまう可能性がある。しかしながら、レジスタ１５は、クロック信号ＣＬＫに同期してパリティビットを更新しているため、レジスタｃ０，ｃ１，ｃ２から供給される信号ｄｃ０〜ｄｃ２が正しいものであれば、パリティビットは自動的に正常な値に書き戻され、エラーが訂正される。
【００５９】
（正常値保持部の一例）
以下、正常値保持部７の一例を説明する。
図７は、正常値保持部の一例を示す図である。なお、図７では、エラーが発生してレジスタｃ１が出力する信号ｄｃ１が変化したときに、回路部９に正常な値を供給する回路部分が示されている。他のレジスタに関する部分については図示が省略されているが、同様の回路となる。
【００６０】
正常値保持部７は、ＡＮＤ回路１７、レジスタ１８、ＮＯＴ回路１９、セレクタ２０を有する。
ＡＮＤ回路１７は、図３に示した誤り検出回路ｐｃから出力される信号ｘｐｃと、誤り検出回路ｐ１から出力される信号ｘｐ１のＡＮＤ演算を行う。ＡＮＤ演算結果はレジスタ１８のクロック入力端子に供給される。
【００６１】
レジスタ１８のデータ入力端子には、レジスタ１８の保持する値を反転させ出力する反転出力端子が接続される。レジスタ１８は、ＡＮＤ回路１７から供給されるＡＮＤ演算結果の立ち上り（または立ち下がり）に同期して、保持している値を反転し、セレクタ２０の選択信号として出力する。選択信号は、後述のようにレジスタｃ１でエラーが発生したときに“１”となる。
【００６２】
ＮＯＴ回路１９は、図３に示したレジスタｃ１が出力する信号ｄｃ１の値を反転し、セレクタ２０に出力する。
セレクタ２０は、レジスタ１８から供給される選択信号が“０”のときは、レジスタｃ１から出力される信号ｄｃ１を選択して信号Ｄｃ１として出力する。選択信号が“１”のときは、セレクタ２０は、ＮＯＴ回路１９により反転された信号ｄｃ１を選択して信号Ｄｃ１として出力する。
【００６３】
なお、第２の実施の形態の半導体集積回路３では、レジスタ１８からセレクタ２０に供給される選択信号は、図２に示した割り込み制御部８に割り込み信号Ｉｎｔの発生を指示する信号を生成する際にも用いられる。例えば、割り込み信号Ｉｎｔの発生を指示する信号は、レジスタ群５のレジスタごとに生成される選択信号のＯＲをとったものである。
【００６４】
また、選択信号は、後述のようにレジスタｃ１でエラーが発生したときに“１”となる。この選択信号は、レジスタ群５のレジスタごとに生成されるため、プロセッサ４は、割り込み信号Ｉｎｔが発生したとき、“１”となっている選択信号から、エラー発生レジスタを特定するようにしてもよい。
【００６５】
（誤り検出回路及び正常値保持部の動作例１）
以下、誤り検出回路及び正常値保持部の動作例を説明する。
図８は、レジスタ群に含まれるレジスタにエラーが発生した際の誤り検出回路及び正常値保持部の動作の一例を示すタイミングチャートである。図８では、レジスタｃ１でエラーが発生した場合の例が示されており、クロック信号ＣＬＫ、レジスタｃ１から出力される信号ｄｃ１、誤り検出回路ｐｃ，ｐ１の各部の信号と、正常値保持部７の各部の信号の一例の様子が示されている。
【００６６】
なお、誤り検出回路ｐ１と、図６に示した誤り検出回路ｐｃは同様の回路であるため、図８では便宜上対応する要素に同じ符号を付して説明する。
また、誤り検出回路ｐｃのレジスタ１５の出力であるパリティビット及びＸＯＲ回路１４の出力の初期値は“０”、誤り検出回路ｐ１のレジスタ１５の出力であるパリティビット及びＸＯＲ回路１４の出力の初期値は“１”であるものとする。
【００６７】
図８の例では、タイミングｔ３で、レジスタｃ１にエラーが発生し、レジスタｃ１の出力する信号ｄｃ１の値が“０”から“１”に反転している。信号ｄｃ１の値の変化に伴い、誤り検出回路ｐｃのＸＯＲ回路１４の出力が“１”に立ち上る。このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しなくなるため、信号ｘｐｃが“１”に立ち上る。また、信号ｄｃ１の値の変化に伴い、誤り検出回路ｐ１のＸＯＲ回路１４の出力が“０”に立ち下る。これにより、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しないため信号ｘｐ１が“１”に立ち上る。
【００６８】
また、タイミングｔ３で、信号ｘｐｃ，ｘｐ１が“１”に立ち上ることにより、正常値保持部７のＡＮＤ回路１７の出力が“１”に立ち上る。また、ＡＮＤ回路１７の出力の立ち上りに同期して、レジスタ１８は、保持している値を“０”から“１”に反転するため、レジスタ１８の出力が“１”に立ち上る。また、信号ｄｃ１が“１”に立ち上ることにより、正常値保持部７のＮＯＴ回路１９の出力は、“０”に立ち下がる。
【００６９】
また、タイミングｔ３で、正常値保持部７のレジスタ１８の出力が“１”に立ち上ることにより、セレクタ２０は、ＮＯＴ回路１９からの出力を選択し、信号Ｄｃ１として出力する。これにより、タイミングｔ３で、レジスタｃ１にエラーが発生し、信号ｄｃ１の値が“１”に反転しても、回路部９には、信号ｄｃ１の正常値である“０”が信号Ｄｃ１として出力され続ける。
【００７０】
タイミングｔ４では、誤り検出回路ｐｃのレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力する“１”を保持する。そのため、誤り検出回路ｐｃのレジスタ１５の出力は“１”に立ち上る。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値は“１”で一致するため、信号ｘｐｃは“０”に立ち下がる。
【００７１】
また、タイミングｔ４で、誤り検出回路ｐ１のレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力する“０”を保持する。そのため、誤り検出回路ｐ１のレジスタ１５の出力は“０”に立ち下がる。また、このとき、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値は“０”で一致するため、信号ｘｐ１は“０”に立ち下がる。
【００７２】
また、タイミングｔ４で、信号ｘｐｃ，ｘｐ１が“０”に立ち下がることにより、正常値保持部７のＡＮＤ回路１７の出力が“０”に立ち下がる。
タイミングｔ５では、プロセッサ４による書き戻し（正常値書き込み）処理が行われる。前述の図５に示したレジスタｃ１の動作により、信号ｄｃ１が“０”に立ち下がる。
【００７３】
また、信号ｄｃ１の値の変化に伴い、誤り検出回路ｐｃのＸＯＲ回路１４の出力が“０”に立ち下がる。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４とレジスタ１５の出力の値が一致しないため、信号ｘｐｃが“１”に立ち上る。また、信号ｄｃ１の値の変化に伴い、誤り検出回路ｐ１のＸＯＲ回路１４の出力が“１”に立ち下がる。また、このとき、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しないため、信号ｘｐ１が“１”に立ち上る。
【００７４】
また、タイミングｔ５で、信号ｘｐｃ，ｘｐ１が“１”に立ち上ることにより、正常値保持部７のＡＮＤ回路１７の出力が“１”に立ち上る。また、ＡＮＤ回路１７の出力の立ち上りに同期して、レジスタ１８は、“１”を反転させて“０”を保持する。そのため、レジスタ１８の出力が“０”に立ち下がる。また、信号ｄｃ１が“０”に立ち下がることにより、正常値保持部７のＮＯＴ回路１９の出力は、“１”に立ち上る。
【００７５】
また、正常値保持部７のレジスタ１８の出力が“０”に立ち下がることにより、セレクタ２０は、信号ｄｃ１を選択し、信号Ｄｃ１として出力する。これにより、タイミングｔ５で、エラー訂正により正常値となった信号ｄｃ１の“０”が信号Ｄｃ１として出力される。
【００７６】
タイミングｔ６では、誤り検出回路ｐｃのレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力する“０”を保持するため、誤り検出回路ｐｃのレジスタ１５の出力は“０”に立ち下がる。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値は“０”で一致するため、信号ｘｐｃは“０”に立ち下がる。
【００７７】
また、タイミングｔ６で、誤り検出回路ｐ１のレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力する“１”を保持するため、誤り検出回路ｐ１のレジスタ１５の出力は“１”に立ち上る。また、このとき、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値は“１”で一致するため、信号ｘｐ１は“０”に立ち下がる。
【００７８】
また、タイミングｔ６で、信号ｘｐｃ，ｘｐ１が“０”に立ち下がることにより、正常値保持部７のＡＮＤ回路１７の出力が“０”に立ち下がる。
以上のような動作によって、レジスタｃ１にエラーが発生して、信号ｄｃ１の値が変わっても、回路部９へは正常値を供給し続けることができる。
【００７９】
以下、誤り検出回路ｐｃのレジスタ１５でエラーが生じた際の動作例を説明する。
（誤り検出回路及び正常値保持回路の動作例２）
図９は、誤り検出回路のレジスタにエラーが発生した際の誤り検出回路及び正常値保持回路の動作の一例を示すタイミングチャートである。
【００８０】
図８に示した各種信号の、誤り検出回路ｐｃのレジスタ１５でエラーが生じた際の一例の様子が図９に示されている。
なお、初期状態では、誤り検出回路ｐｃのレジスタ１５には、正常なパリティビットとして“０”が保持されているものとする。
【００８１】
図９の例では、タイミングｔ７で、誤り検出回路ｐｃのレジスタ１５にエラーが発生し、そのレジスタ１５の出力が“０”から“１”に反転している。このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しなくなるため、信号ｘｐｃが“１”に立ち上る。
【００８２】
タイミングｔ７では、信号ｘｐｃが“１”に立ち上っても、信号ｘｐ１は“０”を維持するため、正常値保持部７のＡＮＤ回路１７の出力も“０”を維持する。これにより、正常値保持部７のレジスタ１８の出力（セレクタ２０の選択信号）も“０”を維持するため、この選択信号に基づいて生成される割り込み信号Ｉｎｔの発生を指示する信号はネゲートされ、割り込みは発生しない。
【００８３】
また、正常値保持部７のレジスタ１８の出力が“０”を維持することにより、セレクタ２０も正常値である信号ｄｃ１を選択し続けるため、信号Ｄｃ１も正常値である信号ｄｃ１を維持し続ける。
【００８４】
一方、タイミングｔ８で、誤り検出回路ｐｃのレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力（正常なパリティビット）を保持する。これにより、レジスタ１５の出力は“０”に立ち下がる。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力が“０”となり一致するため、信号ｘｐｃが“０”に立ち下がる。
【００８５】
以下、エラー発生時の半導体集積回路１の動作についてまとめる。
図１０は、エラー発生時の半導体集積回路の動作の一例の流れを示すフローチャートである。
【００８６】
レジスタ群５に含まれるレジスタにエラーが発生した場合、回路部９への出力が、正常値保持部７により、正常値に保持される（ステップＳ１）。例えば、レジスタｃ１にエラーが発生し、レジスタｃ１が出力する信号ｄｃ１の値が反転しても、セレクタ２０（図７）は、ＮＯＴ回路１９（図７）で信号ｄｃ１の値を反転して信号Ｄｃ１として出力するため、回路部９への出力は、正常値に保持される。
【００８７】
一方、エラーが発生すると、前述のようにプロセッサ４への割り込み信号Ｉｎｔがアサートされる（ステップＳ２）。
その後、プロセッサ４はエラー発生レジスタを特定して、図５に示したように、そのレジスタへの正常値の書き戻し（エラー訂正）処理が行われる（ステップＳ３）。
【００８８】
以上の処理により、レジスタのエラーが訂正されると、パリティビットは、正常値となる（ステップＳ４）。
また、正常値保持部７により、正常値となったレジスタの値が選択され、回路部９に出力される（ステップＳ５）。
【００８９】
その後、プロセッサ４への割り込み信号Ｉｎｔがネゲートされる（ステップＳ６）。
以上のような、第２の実施の形態の半導体集積回路３では、第１の実施の形態の半導体集積回路１と同様の効果が得られる。
【００９０】
さらに、第２実施の形態の半導体集積回路３では、正常値保持部７が、エラー発生レジスタが出力する信号の値を０から１または１から０に反転して、回路部９に出力することで、回路部９に供給される値を正常値に維持することができる。これにより、レジスタ群５でのエラーにより回路部９で誤動作が生じることを抑制できる。
【００９１】
さらに、第２の実施の形態の半導体集積回路３では、レジスタ群５に含まれる複数のレジスタは、プロセッサ４の制御のもと、エラー発生時、保持している値を反転する機能を有する。これにより、正常値の複製をミラーリング等によりメモリ等に保持しておくことが不要となるため、より小面積の回路構成で、レジスタのエラー訂正を行うことができる。
【００９２】
（第３の実施の形態）
図１１は、第３の実施の形態の半導体集積回路の一例を示す図である。なお、図３、図４に示した要素と同一の要素には、同一の符号を付し、その説明を一部省略する。
【００９３】
第３の実施の形態の半導体集積回路３ａは、プロセッサ４の代わりにエラー発生レジスタの格納値を反転させる正常値書き込み部７ａを有している。この正常値書き込み部７ａは、第２の実施の形態の半導体集積回路３の正常値保持部７の機能も有する。なお、図１１では、正常値書き込み部７ａは、レジスタｃ１でエラーが発生したときに、レジスタｃ１の格納値を反転させる部分と、レジスタｃ１のエラー発生前の格納値（正常値）を回路部９に出力する部分が示されている。他のレジスタに関する部分については図示が省略されているが、同様の回路となる。
【００９４】
正常値書き込み部７ａは、ＡＮＤ回路２１、レジスタ２２、ＮＯＴ回路２３、ＡＮＤ回路２４、ＮＯＴ回路２５、セレクタ２６を有する。
ＡＮＤ回路２１は、誤り検出回路ｐｃから出力される信号ｘｐｃと、誤り検出回路ｐｃから出力される信号ｘｐ１のＡＮＤ演算を行い、その演算結果を、レジスタ２２とＡＮＤ回路２４に出力する。
【００９５】
レジスタ２２は、ＡＮＤ回路２１から出力された演算結果を、入力されるクロック信号ＣＬＫの立ち上り（または立ち下がり）に同期して保持し、また、その保持した値を、ＮＯＴ回路２３に出力する。
【００９６】
ＮＯＴ回路２３は、レジスタ２２から出力された値を反転し、ＡＮＤ回路２４に出力する。
ＡＮＤ回路２４は、ＡＮＤ回路２１から出力された演算結果と、ＮＯＴ回路２３から出力された値のＡＮＤ演算を行い、その演算結果を、セレクタ２６と、レジスタｃ１に含まれるセレクタ１２とに対する選択信号として出力する。選択信号は、レジスタｃ１でエラーが発生したときに“１”となる。
【００９７】
ＮＯＴ回路１９は、図３に示したレジスタｃ１が出力する信号ｄｃ１の値を反転し、セレクタ２０に出力する。
セレクタ２０は、レジスタ１８から供給される選択信号が“０”のときは、レジスタｃ１から出力される信号ｄｃ１を選択して信号Ｄｃ１として出力する。選択信号が“１”のときは、セレクタ２０は、ＮＯＴ回路１９により反転された信号ｄｃ１を選択して信号Ｄｃ１として出力する。
【００９８】
ＮＯＴ回路２５は、レジスタｃ１から出力される信号ｄｃ１の値を反転させ、セレクタ２６に出力する。
セレクタ２６は、ＡＮＤ回路２４から供給される選択信号が“０”のときは、レジスタｃ１から出力される信号ｄｃ１を選択して信号Ｄｃ１として出力する。選択信号が“１”のときは、セレクタ２６は、ＮＯＴ回路２５により反転された信号ｄｃ１を選択して信号Ｄｃ１として出力する。
【００９９】
以下、第３の実施の形態の半導体集積回路３ａの動作例を説明する。
（半導体集積回路の動作例１）
図１２は、第３の実施の形態の半導体集積回路の動作例を示すタイミングチャートである。図１２では、レジスタｃ１でエラーが発生した場合の例が示されており、クロック信号ＣＬＫ、レジスタｃ１から出力される信号ｄｃ１、誤り検出回路ｐｃ，ｐ１の各部の信号と、正常値書き込み部７ａの各部の信号の一例の様子が示されている。
【０１００】
なお、誤り検出回路ｐ１と、図６に示した誤り検出回路ｐｃは同様の回路であるため、図１２では便宜上対応する要素に同じ符号を付して説明する。
また、誤り検出回路ｐｃのレジスタ１５の出力であるパリティビット及びＸＯＲ回路１４の出力の初期値は“０”、誤り検出回路ｐ１のレジスタ１５の出力であるパリティビット及びＸＯＲ回路１４の出力の初期値は“１”であるものとする。
【０１０１】
図１２の例では、タイミングｔ９で、レジスタｃ１にエラーが発生し、レジスタｃ１の出力する信号ｄｃ１が“０”から“１”に反転している。信号ｄｃ１の値の変化に伴い、誤り検出回路ｐｃのＸＯＲ回路１４の出力が“１”に立ち上る。このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しなくなるため、信号ｘｐｃが“１”に立ち上る。また、信号ｄｃ１の値の変化に伴い、誤り検出回路ｐ１のＸＯＲ回路１４の出力が“０”に立ち下がる。これにより、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しないため、信号ｘｐ１が“１”に立ち上る。
【０１０２】
また、タイミングｔ９で、信号ｘｐｃ，ｘｐ１が“１”に立ち上ることにより、正常値書き込み部７ａのＡＮＤ回路２１の出力が“１”に立ち上る。このとき、ＡＮＤ回路２４の出力は、“１”に立ち上る。また、信号ｄｃ１が“１”に立ち上ることにより、正常値書き込み部７ａのＮＯＴ回路２５の出力は、“０”に立ち下がる。
【０１０３】
また、タイミングｔ９で、正常値書き込み部７ａのＡＮＤ回路２４の出力（選択信号）が“１”に立ち上ることにより、セレクタ２６は、ＮＯＴ回路２５からの出力を選択し、信号Ｄｃ１として出力する。これにより、タイミングｔ９で、レジスタｃ１にエラーが発生し、信号ｄｃ１の値が“１”に反転しても、正常値書き込み部７ａは、正常値である“０”を信号Ｄｃ１として出力し続ける。
【０１０４】
また、タイミングｔ９で、正常値書き込み部７ａのＡＮＤ回路２４の出力が“１”に立ち上るため、レジスタｃ１のセレクタ１２は、ＮＯＴ回路１１により“０”に反転された信号ｄｃ１を選択し、フリップフロップ１０に出力する。
【０１０５】
信号ｄｃ１が“１”に反転した後のクロック信号ＣＬＫの最初の立ち上がりタイミング（タイミングｔ１０）に同期して、信号ｄｃ１が“０”に立ち下がる。これは、フリップフロップ１０が、クロック信号ＣＬＫの立ち上りに同期して、セレクタ１２から出力されるＮＯＴ回路１１で“０”に反転された信号ｄｃ１を保持するためである。これにより、レジスタｃ１に発生したエラーは訂正される。
【０１０６】
また、タイミングｔ１０で、信号ｄｃ１の値の変化に伴い、誤り検出回路ｐｃのＸＯＲ回路１４の出力が“０”に立ち下がる。また、誤り検出回路ｐｃのレジスタ１５は、タイミングｔ１０において、タイミングｔ９で“１”に立ち上ったＸＯＲ回路１４の出力を保持するため、誤り検出回路ｐｃのレジスタ１５の出力は、“１”に立ち上る。また、タイミングｔ１０では、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しないため、信号ｘｐｃは“１”を維持する。
【０１０７】
また、タイミングｔ１０での信号ｄｃ１の値の変化に伴い、誤り検出回路ｐ１のＸＯＲ回路１４の出力が“１”に立ち上る。また、誤り検出回路ｐ１のレジスタ１５は、タイミングｔ９で“０”に立ち下がったＸＯＲ回路１４の出力を保持するため、誤り検出回路ｐ１のレジスタ１５の出力は、“０”に立ち下がる。また、タイミングｔ１０では、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しないため、信号ｘｐ１は“１”を維持する。
【０１０８】
上記のように信号ｘｐｃ，ｘｐ１は“１”を維持するため、正常値書き込み部７ａのＡＮＤ回路２１の出力は、“１”を維持する。また、このとき、ＡＮＤ回路２４は、ＡＮＤ回路２１の出力と、ＮＯＴ回路２３の出力とのＡＮＤ演算を行う。ＮＯＴ回路２３の出力は、タイミングｔ１０でレジスタ２２に保持された値を反転した値（“０”）となる。これにより、ＡＮＤ回路２４の出力は、“０”に立ち下がる。
【０１０９】
また、信号ｄｃ１が“０”に立ち下がることにより、正常値書き込み部７ａのＮＯＴ回路２５の出力は、“１”に立ち上る。
このときセレクタ２６に供給される選択信号であるＡＮＤ回路２４の出力は“０”であるため、セレクタ２６は、信号ｄｃ１を選択し、信号Ｄｃ１として出力する。これにより、エラー訂正で正常値となった信号ｄｃ１が信号Ｄｃ１として出力される。
【０１１０】
クロック信号ＣＬＫの次の立ち上がりタイミング（タイミングｔ１１）に同期して、誤り検出回路ｐｃのレジスタ１５は、ＸＯＲ回路１４の出力を保持するため、レジスタ１５の出力は“０”に立ち下がる。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値は“０”で一致するため、信号ｘｐｃは“０”に立ち下がる。
【０１１１】
一方、誤り検出回路ｐ１のレジスタ１５は、クロック信号ＣＬＫの立ち上りに同期して、ＸＯＲ回路１４の出力を保持するため、レジスタ１５の出力は“１”に立ち上る。また、このとき、誤り検出回路ｐ１のＸＯＲ回路１４の出力とレジスタ１５の出力の値は“１”で一致するため、信号ｘｐ１は“０”に立ち下がる。
【０１１２】
このように、信号ｘｐｃ，ｘｐ１が“０”に立ち下がることにより、正常値書き込み部７ａのＡＮＤ回路２１の出力は“０”に立ち下がる。
以上のような動作によって、レジスタｃ１にエラーが発生して、信号ｄｃ１の値が変わっても、回路部９へは正常値を供給し続けることができる。また、プロセッサ４への割り込みをアサートしなくても、正常値書き込み部７ａが、レジスタｃ１に発生したエラーを訂正することができる。
【０１１３】
以下、誤り検出回路ｐｃのレジスタ１５でエラーが生じた際の動作例を説明する。
（半導体集積回路の動作例２）
図１３は、第３の実施の形態の半導体集積回路の動作例を示すタイミングチャートである。図１２に示した各種信号の、誤り検出回路ｐｃのレジスタ１５でエラーが生じた際の一例の様子が図１３に示されている。
【０１１４】
なお、初期状態では、誤り検出回路ｐｃのレジスタ１５には、正常なパリティビットとして“０”が保持されているものとする。
図１３の例では、タイミングｔ１２で、誤り検出回路ｐｃのレジスタ１５にエラーが発生し、誤り検出回路ｐｃのレジスタ１５の出力が“０”から“１”に反転している。このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が一致しなくなるため、信号ｘｐｃが“１”に立ち上る。
【０１１５】
しかし、信号ｘｐｃが“１”に立ち上っても、信号ｘｐ１は“０”を維持するため、正常値書き込み部７ａのＡＮＤ回路２１の出力も“０”を維持する。これにより、正常値書き込み部７ａのＡＮＤ回路２４の出力も“０”を維持するため、レジスタｃ１のセレクタ１２もフリップフロップ１０から出力される信号ｄｃ１の選択を維持する。また、正常値書き込み部７ａのＡＮＤ回路２４の出力が“０”を維持することにより、セレクタ２６も信号Ｄｃ１として、信号ｄｃ１を出力し続ける。
【０１１６】
エラー発生後のクロック信号ＣＬＫの最初の立ち上がりタイミング（タイミングｔ１３）に同期して、誤り検出回路ｐｃのレジスタ１５は、ＸＯＲ回路１４の出力である正常なパリティビット値を保持する。これにより、誤り検出回路ｐｃのレジスタ１５の出力は“０”に立ち下がり、正常値に書き戻される。また、このとき、誤り検出回路ｐｃのＸＯＲ回路１４の出力とレジスタ１５の出力の値が“０”となり一致するため、信号ｘｐｃが“０”に立ち下がる。
【０１１７】
その他の動作については、第２の実施の形態の半導体集積回路３と同様であり、第２の実施の形態の半導体集積回路３と同様の効果が得られる。
以上、実施の形態に基づき、本発明の半導体集積回路の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１１８】
１  半導体集積回路
２  正常値書き込み部
ａ０〜ａ２，ｂ０〜ｂ２，ｃ０〜ｃ２  レジスタ
ｐ０〜ｐ２，ｐａ〜ｐｃ  誤り検出回路
【図１】
2016018569.tif 000003
【図２】
2016018569.tif 000004
【図３】
2016018569.tif 000005
【図４】
2016018569.tif 000006
【図５】
2016018569.tif 000007
【図６】
2016018569.tif 000008
【図７】
2016018569.tif 000009
【図８】
2016018569.tif 000010
【図９】
2016018569.tif 000011
【図１０】
2016018569.tif 000012
【図１１】
2016018569.tif 000013
【図１２】
2016018569.tif 000014
【図１３】
2016018569.tif 000015