(57)【要約】【課題】ソフトエラーが発生した場合にも正常な動作を継続することができる半導体集積回路を提供することを課題とする。【解決手段】半導体集積回路は、入力信号に応じたステート値及びステート値のパリティ値を出力する組合せ回路（１０３）と、組合せ回路により出力されるステート値及びパリティ値を記憶する第１及び第２のフリップフロップ回路（１１１，１１３，１２１，１２３）と、第１及び第２のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第１及び第２のパリティエラーを出力する第１及び第２のパリティチェック回路（１１２，１２２）と、第１及び第２のパリティエラーに応じて第１又は第２のフリップフロップ回路に記憶されているステート値を組合せ回路に出力するセレクタ（１０４）とを有し、組合せ回路は、そのステート値及び入力信号に応じて今回のステート値を出力する。【選択図】図１
2015001774.tif 000002
【特許請求の範囲】
【請求項１】
入力信号に応じたステート値及び前記ステート値のパリティ値を出力する第１の組合せ回路と、
前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第１のフリップフロップ回路と、
前記第１のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第１のパリティエラーを出力する第１のパリティチェック回路と、
前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第２のフリップフロップ回路と、
前記第２のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第２のパリティエラーを出力する第２のパリティチェック回路と、
前記第１のパリティエラーが出力されずに前記第２のパリティエラーが出力された場合には前記第１のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力し、前記第１のパリティエラーが出力されて前記第２のパリティエラーが出力されない場合には前記第２のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力するセレクタとを有し、
前記第１の組合せ回路は、前記セレクタにより出力されたステート値及び前記入力信号に応じて今回のステート値を出力することを特徴とする半導体集積回路。
【請求項２】
前記セレクタは、前記第１のパリティエラー及び前記第２のパリティエラーが出力されない場合は、前記第１のフリップフロップ回路又は第２のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記セレクタは、前記第１のパリティエラー及び前記第２のパリティエラーが出力された場合は、前記第１のフリップフロップ回路又は第２のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力することを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
さらに、前記第１のパリティエラー及び前記第２のパリティエラーが出力された場合にパリティエラーを出力するパリティエラー出力回路を有することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記セレクタは、前記第２のパリティエラーが出力された場合には前記第１のフリップフロップ回路に記憶されているパリティ値を前記第１の組合せ回路に出力し、前記第１のパリティエラーが出力された場合には前記第２のフリップフロップ回路に記憶されているパリティ値を前記第１の組合せ回路に出力し、
前記第１の組合せ回路は、前記セレクタにより出力されたパリティ値を用いて今回のパリティ値を生成して出力することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路。
【請求項６】
前記第１の組合せ回路は、
今回出力するステート値の１のビット数を２で割った余りと前記セレクタにより出力されたステート値の１のビット数を２で割った余りとが同じ場合には、前記セレクタにより出力されたパリティ値を今回のパリティ値として出力し、
今回出力するステート値の１のビット数を２で割った余りと前記セレクタにより出力されたステート値の１のビット数を２で割った余りとが異なる場合には、前記セレクタにより出力されたパリティ値の論理反転値を今回のパリティ値として出力することを特徴とする請求項５記載の半導体集積回路。
【請求項７】
さらに、前記第１のパリティエラー及び前記第２のパリティエラーが出力された場合にパリティエラーを出力するパリティエラー出力回路を有し、
前記第１のパリティエラー及び前記第２のパリティエラーが出力された場合は、前記第１のパリティチェック回路は次回も第１のパリティエラーを出力し、前記第２のパリティチェック回路は次回も第２のパリティエラーを出力することを特徴とする請求項５又は６記載の半導体集積回路。
【請求項８】
さらに、前記第１のフリップフロップ回路に記憶されているステート値を基に出力信号を出力する第２の組合せ回路と、
前記第２のフリップフロップ回路に記憶されているステート値を基に出力信号を出力する第３の組合せ回路とを有し、
前記セレクタは、前記第１のパリティエラーが出力されずに前記第２のパリティエラーが出力された場合には前記第２の組合せ回路により出力される出力信号を出力し、前記第１のパリティエラーが出力されて前記第２のパリティエラーが出力されない場合には前記第３の組合せ回路により出力される出力信号を出力することを特徴とする請求項１〜７のいずれか１項に記載の半導体集積回路。
【請求項９】
入力信号に応じたステート値及び前記ステート値のパリティ値を出力する第１の組合せ回路と、
前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第１のフリップフロップ回路と、
前記第１のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第１のパリティエラーを出力する第１のパリティチェック回路と、
前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第２のフリップフロップ回路と、
前記第２のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第２のパリティエラーを出力する第２のパリティチェック回路とを有する半導体集積回路の処理方法であって、
セレクタにより、前記第１のパリティエラーが出力されずに前記第２のパリティエラーが出力された場合には前記第１のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力し、
セレクタにより、前記第１のパリティエラーが出力されて前記第２のパリティエラーが出力されない場合には前記第２のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力し、
前記第１の組合せ回路により、前記セレクタにより出力されたステート値及び前記入力信号に応じて今回のステート値を出力することを特徴とする半導体集積回路の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及びその処理方法に関する。
【背景技術】
【０００２】
正確なマシン状態を維持するためのカスケード型遅延実行パイプラインが知られている（例えば、特許文献１参照）。エラー検出及び回復を容易にするために、各パイプラインのステージを書き戻す前に１サイクル又は複数サイクルの遅延が挿入される。正確なマシン状態が維持されるので、エラー検出及び回復機構がシステムのレジスタ・ファイルに直接組み込まれる。エラーが検出される場合、そのエラーに関連した命令及びすべての後続の命令の実行が再開される。
【０００３】
また、二重化したメモリ装置が知られている（例えば、特許文献２参照）。パリティ回路は、読み出し時に、１ビットエラーを検出する。選択回路は、１ビットエラーを検出したら二重化したメモリ装置の内、正常な方のメモリ装置のデータを使用して処理を継続する。２ビット以上のエラーを検出する為の二重化データ比較回路を持つメモリ装置に、初期診断時に、二重化メモリ装置の片系の２ビット以上の固定障害を検出したとき、対応するメモリ装置のアドレスのみ無効／有効を指示する。アドレスの無効信号により、二重化データ比較回路を無効にする。アドレスのみ無効／有効を指示する手段が有効を指示しており、且つパリティエラーを検出していないアドレスを持つ系のデータを使用することを指示する。
【０００４】
また、メモリ部のソフトエラーの蓄積による２ビットエラーなどの発生を未然に防止し、より信頼性の高い二重化メモリ装置が知られている（例えば、特許文献３参照）。タイマーは、所定の時間間隔が設定される。バス・アービターは、タイマーから所定の時間間隔ごとに出力されるチェック要求を受けＣＰＵ部から二重化された第１，第２のメモリ部へのアクセスを禁止する。アドレス発生器は、タイマーからのチェック要求に基づいて起動され第１，第２のメモリ部の全領域を掃引するアドレスを発生する。パリティチェック手段は、第１，第２のメモリ部の該当アドレスから読み出されたデータのパリティチェックを行う。エラー訂正手段は、パリティチェック手段でエラーが検出された場合、正しいデータをエラーが発生した側のメモリ部のエラー領域に書き込む。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−９５７０号公報
【特許文献２】特開平７−１６０５８７号公報
【特許文献３】特開平５−８８９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ステートマシン内のメモリ部にソフトエラー等が要因のビットエラーが発生した場合、パリティチェックによりビットエラーを検出することができるが、エラーを訂正することはできない。そのため、一度エラーが発生してしまうとステートマシンの動作を継続させることができないという課題がある。
【０００７】
また、特許文献２では、正常動作しているメモリ装置に切り替えても、さらにそのメモリ装置に異常が発生してしまうと処理を継続させることができなくなってしまう課題がある。
【０００８】
また、特許文献３では、メモリ部を２重化し、所定の時間間隔でパリティチェック及びエラー訂正を行う場合、パリティチェックの周期の間にエラーが発生した場合、次のパリティチェックまでの間、メモリ部はエラー状態のままとなる。そのため、メモリ部は常に正常な値とはならず、エラー発生から訂正されるまでの間にメモリ部を読み出した場合、異常値を処理してしまうことになる。
【０００９】
本発明の目的は、ソフトエラー等のビットエラーが発生した場合にも正常な動作を継続することができる半導体集積回路及びその処理方法を提供することである。
【課題を解決するための手段】
【００１０】
半導体集積回路は、入力信号に応じたステート値及び前記ステート値のパリティ値を出力する第１の組合せ回路と、前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第１のフリップフロップ回路と、前記第１のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第１のパリティエラーを出力する第１のパリティチェック回路と、前記第１の組合せ回路により出力されるステート値及びパリティ値を記憶する第２のフリップフロップ回路と、前記第２のフリップフロップ回路に記憶されるステート値及びパリティ値を基にパリティチェックを行い、エラーの場合には第２のパリティエラーを出力する第２のパリティチェック回路と、前記第１のパリティエラーが出力されずに前記第２のパリティエラーが出力された場合には前記第１のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力し、前記第１のパリティエラーが出力されて前記第２のパリティエラーが出力されない場合には前記第２のフリップフロップ回路に記憶されているステート値を前記第１の組合せ回路に出力するセレクタとを有し、前記第１の組合せ回路は、前記セレクタにより出力されたステート値及び前記入力信号に応じて今回のステート値を出力する。
【発明の効果】
【００１１】
ソフトエラー等により第１又は第２のパリティエラーが出力された場合、セレクタは正常なステート値を第１の組合せ回路に出力するので、第１及び第２のフリップフロップ回路に記憶されるステート値は正常値に回復され、正常な動作を継続することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施形態による半導体集積回路の構成例を示す図である。
【図２】図２は、図１のメインステートマシンフリップフロップ回路の構成例を示す図である。
【図３】図３は、図１のセレクタの構成例を示す図である。
【図４】図４は、図１の半導体集積回路の処理方法を示すフローチャートである。
【図５】図５は、図１の半導体集積回路の動作例を示すタイミングチャートである。
【図６】図６は、図１の半導体集積回路をシーケンサとして用いる例を示す図である。
【発明を実施するための形態】
【００１３】
図１は、本実施形態による半導体集積回路の構成例を示す図である。半導体集積回路は、ステートマシンであり、第１の組合せ回路１０３と、メインステートマシン部１０１と、サブステートマシン部１０２と、セレクタ１０４とを有する。半導体集積回路は、入力信号ＩＮを入力し、出力信号ＯＵＴ及びパリティエラーＰｅを出力する。入力信号ＩＮは、複数ビットの入力信号ＩＮ＿Ａ〜ＩＮ＿Ｘを有する。出力信号ＯＵＴは、複数ビットの出力信号ＯＵＴ＿Ａ〜ＯＵＴ＿Ｘを有する。
【００１４】
第１の組合せ回路１０３は、複数ビット入力信号ＩＮの組合せに応じた複数ビットステート値Ｆａ及び１ビットパリティ値Ｐａをメインステートマシン部１０１及びサブステートマシン部１０２に出力する。奇数パリティの場合、第１の組合せ回路１０３は、複数ビットステート値Ｆａのうちの「１」のビット数が、偶数の場合には「１」のパリティ値Ｐａを出力し、奇数の場合には「０」のパリティ値Ｐａを出力する。また、偶数パリティの場合、第１の組合せ回路１０３は、複数ビットステート値Ｆａのうちの「１」のビット数が、奇数の場合には「１」のパリティ値Ｐａを出力し、偶数の場合には「０」のパリティ値Ｐａを出力する。
【００１５】
メインステートマシン部１０１は、メインステートマシンフリップフロップ回路１１１、メインパリティチェック回路１１２及びメインステートマシンパリティフリップフロップ回路１１３を有する。メインステートマシンフリップフロップ回路１１１及びメインステートマシンパリティフリップフロップ回路１１３は、第１のフリップフロップ回路である。メインステートマシンフリップフロップ回路１１１は、複数ビットステート値Ｆａを入力し、複数ビットステート値Ｆａｍ及び複数ビット出力信号ＯＵＴｍを出力する。
【００１６】
図２は、図１のメインステートマシンフリップフロップ回路１１１の構成例を示す図である。複数ビットステート値Ｆａ［０］〜Ｆａ［ｎ］は、図１の複数ビットステート値Ｆａに対応する。複数ビットステート値Ｆａｍ［０］〜Ｆａｍ［ｎ］は、図１の複数ビットステート値Ｆａｍに対応する。メインステートマシンフリップフロップ回路１１１は、複数のフリップフロップ２０１及び第２の組合せ回路２０２を有する。複数のフリップフロップ２０１は、それぞれ、クロック信号ＣＬＫ（図４）に同期して、複数ビットステート値Ｆａ［０］〜Ｆａ［ｎ］をラッチ及び記憶し、その記憶しているステート値を複数ビットステート値Ｆａｍ［０］〜Ｆａｍ［ｎ］として出力する。第２の組合せ回路２０２は、複数ビットステート値Ｆａｍ［０］〜Ｆａｍ［ｎ］の組合せに応じた複数ビット出力信号ＯＵＴｍを出力する。出力信号ＯＵＴｍは、例えばメモリのライトイネーブル信号等を含む。
【００１７】
図１において、メインステートマシンパリティフリップフロップ回路１１３は、クロック信号ＣＬＫ（図４）に同期して、１ビットパリティ値Ｐａをラッチ及び記憶し、その記憶しているパリティ値を１ビットパリティ値Ｐａｍとして出力する。
【００１８】
メインパリティチェック回路１１２は、第１のパリティチェック回路であり、メインステートマシンフリップフロップ回路１１１に記憶される複数ビットステート値Ｆａｍ及びメインステートマシンパリティフリップフロップ回路１１３に記憶される１ビットパリティ値Ｐａｍを基にパリティチェックを行い、エラーの場合には「１」の第１のパリティエラーＰｍを出力する。奇数パリティの場合、メインパリティチェック回路１１２は、排他的論理和回路であり、複数ビットステート値Ｆａｍ及び１ビットパリティ値Ｐａｍのうちの「１」のビット数が、奇数の場合にはエラーなしとして「０」の第１のパリティエラーＰｍを出力し、偶数の場合にはエラーありとして「１」の第１のパリティエラーＰｍを出力する。これに対し、偶数パリティの場合、メインパリティチェック回路１１２は、複数ビットステート値Ｆａｍ及び１ビットパリティ値Ｐａｍのうちの「１」のビット数が、偶数の場合にはエラーなしとして「０」の第１のパリティエラーＰｍを出力し、奇数の場合にはエラーありとして「１」の第１のパリティエラーＰｍを出力する。
【００１９】
メインステートマシンフリップフロップ回路１１１に記憶されている複数ビットステート値Ｆａｍ又はメインステートマシンパリティフリップフロップ回路１１３に記憶されている１ビットパリティ値Ｐａｍは、ソフトエラー等のビットエラーにより、値が論理反転してしまうことがある。ソフトエラーの場合、宇宙線等の放射線がフリップフロップ回路１１１又は１１３に衝突し、フリップフロップ回路１１１又は１１３のメモリセルに蓄積されている電荷量が変化し、記憶している値が書き換わってしまう一時的なエラーが発生する。ソフトエラー等のビットエラーにより、複数ビットステート値Ｆａｍ及び１ビットパリティ値Ｐａｍのうちの１ビットの値が書き換わってしまう場合がある。その場合、メインパリティチェック回路１１２は、エラーを検出し、「１」の第１のパリティエラーＰｍを出力する。
【００２０】
サブステートマシン部１０２は、サブステートマシンフリップフロップ回路１２１、サブパリティチェック回路１２２及びサブステートマシンパリティフリップフロップ回路１２３を有する。サブステートマシンフリップフロップ回路１２１及びサブステートマシンパリティフリップフロップ回路１２３は、第２のフリップフロップ回路である。サブステートマシンフリップフロップ回路１２１は、複数ビットステート値Ｆａを入力し、複数ビットステート値Ｆａｓ及び複数ビット出力信号ＯＵＴｓを出力する。
【００２１】
サブステートマシンフリップフロップ回路１２１は、図２のメインステートマシンフリップフロップ回路１１１と同様に、複数のフリップフロップ２０１及び第３の組合せ回路２０２を有する。サブステートマシンフリップフロップ回路１２１内の組合せ回路２０２は、メインステートマシンフリップフロップ回路１１１内の組合せ回路２０２と同じ構成を有する。複数のフリップフロップ２０１は、それぞれ、クロック信号ＣＬＫ（図４）に同期して、複数ビットステート値Ｆａ［０］〜Ｆａ［ｎ］をラッチ及び記憶し、その記憶しているステート値を複数ビットステート値Ｆａｓ［０］〜Ｆａｓ［ｎ］として出力する。第３の組合せ回路２０２は、複数ビットステート値Ｆａｓ［０］〜Ｆａｓ［ｎ］の組合せに応じた複数ビット出力信号ＯＵＴｓを出力する。出力信号ＯＵＴｓは、例えばメモリのライトイネーブル信号等を含む。
【００２２】
図１において、サブステートマシンパリティフリップフロップ回路１２３は、クロック信号ＣＬＫ（図４）に同期して、１ビットパリティ値Ｐａをラッチ及び記憶し、その記憶しているパリティ値を１ビットパリティ値Ｐａｓとして出力する。
【００２３】
サブパリティチェック回路１２２は、第２のパリティチェック回路であり、サブステートマシンフリップフロップ回路１２１に記憶される複数ビットステート値Ｆａｓ及びサブステートマシンパリティフリップフロップ回路１２３に記憶される１ビットパリティ値Ｐａｓを基にパリティチェックを行い、エラーの場合には「１」の第２のパリティエラーＰｓを出力する。奇数パリティの場合、サブパリティチェック回路１２２は、排他的論理和回路であり、複数ビットステート値Ｆａｓ及び１ビットパリティ値Ｐａｓのうちの「１」のビット数が、奇数の場合にはエラーなしとして「０」の第２のパリティエラーＰｓを出力し、偶数の場合にはエラーありとして「１」の第２のパリティエラーＰｓを出力する。これに対し、偶数パリティの場合、サブパリティチェック回路１２２は、複数ビットステート値Ｆａｓ及び１ビットパリティ値Ｐａｓのうちの「１」のビット数が、偶数の場合にはエラーなしとして「０」の第２のパリティエラーＰｓを出力し、奇数の場合にはエラーありとして「１」の第２のパリティエラーＰｓを出力する。ソフトエラー等のビットエラーにより、複数ビットステート値Ｆａｓ及び１ビットパリティ値Ｐａｓのうちの１ビットの値が書き換わってしまう場合がある。その場合、サブパリティチェック回路１２２は、エラーを検出し、「１」の第２のパリティエラーＰｓを出力する。
【００２４】
セレクタ１０４は、メインステートマシン部１０１から複数ビットステート値Ｆａｍ、複数ビット出力信号ＯＵＴｍ、第１のパリティエラーＰｍ及び１ビットパリティ値Ｐａｍを入力し、サブステートマシン部１０２から複数ビットステート値Ｆａｓ、複数ビット出力信号ＯＵＴｓ、第２のパリティエラーＰｓ及び１ビットパリティ値Ｐａｓを入力し、複数ビットステート値Ｆｂ及び１ビットパリティ値Ｐｂを第１の組合せ回路１０３に出力し、複数ビット出力信号ＯＵＴ及びパリティエラーＰｅを外部に出力する。
【００２５】
図３は、図１のセレクタ１０４の構成例を示す図である。セレクタ１０４は、セレクタ３０１〜３０３及び論理積（ＡＮＤ）回路３０４を有する。セレクタ３０１〜３０３は、第１のパリティエラーＰｍが「０」の場合には、メインステートマシン部１０１にエラーがないので、メインステートマシン部１０１の複数ビットステート値Ｆａｍ、１ビットパリティ値Ｐａｍ及び複数ビット出力信号ＯＵＴｍを選択し、それぞれ、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。これに対し、セレクタ３０１〜３０３は、第１のパリティエラーＰｍが「１」の場合には、メインステートマシン部１０１にエラーがあるので、サブステートマシン部１０２の複数ビットステート値Ｆａｓ、１ビットパリティ値Ｐａｓ及び複数ビット出力信号ＯＵＴｓを選択し、それぞれ、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。
【００２６】
なお、パリティエラーＰｍ及びＰｓが共に「０」である場合には、メインステートマシン部１０１及びサブステートマシン部１０２は共にエラーなしであるので、セレクタ３０１〜３０３は、メインステートマシン部１０１及びサブステートマシン部１０２のいずれの出力信号を選択してもよい。
【００２７】
また、パリティエラーＰｍ及びＰｓが共に「１」である場合には、メインステートマシン部１０１及びサブステートマシン部１０２は共にエラーありであるので、セレクタ３０１〜３０３は、メインステートマシン部１０１及びサブステートマシン部１０２のいずれの出力信号を選択してもよい。
【００２８】
以上のように、セレクタ１０４は、第１のパリティエラーＰｍが「０」でありかつ第２のパリティエラーＰｓが「１」である場合には、複数ビットステート値Ｆａｍ、１ビットパリティ値Ｐａｍ及び複数ビット出力信号ＯＵＴｍを選択し、それぞれ、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。
【００２９】
また、セレクタ１０４は、第１のパリティエラーＰｍが「１」でありかつ第２のパリティエラーＰｓが「０」である場合には、複数ビットステート値Ｆａｓ、１ビットパリティ値Ｐａｓ及び複数ビット出力信号ＯＵＴｓを選択し、それぞれ、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。
【００３０】
また、セレクタ１０４は、第１のパリティエラーＰｍが「０」でありかつ第２のパリティエラーＰｓが「０」である場合には、メインステートマシン部１０１又は１０２の出力信号を選択し、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。
【００３１】
また、セレクタ１０４は、第１のパリティエラーＰｍが「１」でありかつ第２のパリティエラーＰｓが「１」である場合には、メインステートマシン部１０１又は１０２の出力信号を選択し、複数ビットステート値Ｆｂ、１ビットパリティ値Ｐｂ及び複数ビット出力信号ＯＵＴとして出力する。
【００３２】
論理積回路３０４は、パリティエラー出力回路であり、第１のパリティエラーＰｍ及び第２のパリティエラーＰｓの論理積をパリティエラーＰｅとして出力する。すなわち、論理積回路３０４は、第１のパリティエラーＰｍが「１」かつ第２のパリティエラーＰｓが「１」である場合に「１」のパリティエラーＰｅを出力し、それ以外の場合には「０」のパリティエラーＰｅを出力する。パリティエラーＰｅが「１」の場合にはエラーありであり、パリティエラーＰｅが「０」の場合にはエラーなしである。
【００３３】
第１の組合せ回路１０３は、セレクタ１０４により出力された前回の複数ビットステート値Ｆｂ及び前回のパリティ値Ｐｂ並びに入力信号ＩＮに応じて、今回の複数ビットステート値Ｆａ及び今回の１ビットパリティ値Ｐａをメインステートマシン部１０１及びサブステートマシン部１０２に出力する。
【００３４】
例えば、ソフトエラー等によりメインステートマシンフリップフロップ回路１１１の複数ビットステート値Ｆａｍにビットエラーが発生した場合には、セレクタ１０４は、エラーがないサブステートマシンフリップフロップ回路１２１の複数ビットステート値Ｆａｓを選択し、第１の組合せ回路１０３に出力する。第１の組合せ回路１０３は、正しい前回の複数ビットステート値Ｆｂを入力するので、正しい今回の複数ビットステート値Ｆａをメインステートマシンフリップフロップ回路１１１及びサブステートマシンフリップフロップ回路１２１に出力する。これにより、メインステートマシンフリップフロップ回路１１１及びサブステートマシンフリップフロップ回路１２１は、正しい今回の複数ビットステート値Ｆａを、それぞれ複数ビットステート値Ｆａｍ及びＦａｓとして記憶することができる。すなわち、メインステートマシンフリップフロップ回路１１１は、ソフトエラーが解消され、正常状態に戻ることになる。
【００３５】
同様に、ソフトエラー等によりサブステートマシンフリップフロップ回路１２１の複数ビットステート値Ｆａｓにビットエラーが発生した場合には、セレクタ１０４は、エラーがないメインステートマシンフリップフロップ回路１１１の複数ビットステート値Ｆａｍを選択し、第１の組合せ回路１０３に出力する。第１の組合せ回路１０３は、正しい前回の複数ビットステート値Ｆｂを入力するので、正しい今回の複数ビットステート値Ｆａをメインステートマシンフリップフロップ回路１１１及びサブステートマシンフリップフロップ回路１２１に出力する。これにより、メインステートマシンフリップフロップ回路１１１及びサブステートマシンフリップフロップ回路１２１は、正しい今回の複数ビットステート値Ｆａを、それぞれ複数ビットステート値Ｆａｍ及びＦａｓとして記憶することができる。すなわち、サブステートマシンフリップフロップ回路１２１は、ソフトエラーが解消され、正常状態に戻ることになる。
【００３６】
例えば、セレクタ１０４が第１の組合せ回路１０３に正しい複数ビットステート値Ｆｂをフィードバックしない場合には、メインステートマシンフリップフロップ回路１１１にソフトエラーが発生すると、メインステートマシンフリップフロップ回路１１１はエラーを修復することができない。その後、サブステートマシンフリップフロップ回路１２１にもソフトエラーが発生すると、メインステートマシンフリップフロップ回路１１１及びサブステートマシンフリップフロップ回路１２１はエラー状態になり、正常動作を行うことができなくなってしまう。
【００３７】
これに対し、本実施形態は、セレクタ１０４が第１の組合せ回路１０３に正しい複数ビットステート値Ｆｂをフィードバックするので、メインステートマシンフリップフロップ回路１１１にソフトエラーが発生しても、メインステートマシンフリップフロップ回路１１１は正常状態に回復することができる。したがって、その後、サブステートマシンフリップフロップ回路１２１にソフトエラーが発生しても、メインステートマシンフリップフロップ回路１１１は正常状態に回復されているので、正常動作を維持することができる。
【００３８】
ただし、第１のパリティエラーＰｍ及び第２のパリティエラーＰｓが共に「１」になった場合には、メインステートマシン部１０１及びサブステートマシン部１０２が共にエラー状態であるので、メインステートマシン部１０１及びサブステートマシン部１０２は回復不能であり、パリティエラーＰｅは「１」になる。セレクタ１０４は、エラー状態の複数ビットステート値Ｆｂ及び１ビットパリティ値Ｐｂを第１の組合せ回路１０３に出力するので、以降の動作はエラー状態であり、回復不能である。
【００３９】
第１の組合せ回路１０３は、入力信号ＩＮ及び前回の複数ビットステート値Ｆｂを基に今回の複数ビットステート値Ｆａを生成し、今回の複数ビットステート値Ｆａのみから今回の１ビットパリティ値Ｐａを生成することもできる。しかし、その場合、パリティエラーＰｅが「１」になった後でも、メインパリティチェック回路１１１及びサブパリティチェック回路１２１は、それぞれ、「０」の第１のパリティエラーＰｍ及び「０」の第２のパリティエラーＰｓを出力してしまう。その結果、パリティエラーＰｅは「１」から「０」に戻ってしまう。しかし、上記のように、パリティエラーＰｅが「１」になった後は、回復不能であり、エラー状態が維持される。それにもかかわらず、パリティエラーＰｅが「１」から「０」に戻ってしまうと、外部ではエラーがないものとして誤認識し、誤った処理をしてしまう場合がある。そこで、パリティエラーＰｅは、一度、「１」になったら、その後も「１」を維持する機能が望まれる。以下、その機能を説明する。
【００４０】
第１の組合せ回路１０３は、セレクタ１０４により出力された前回のパリティ値Ｐｂを用いて今回のパリティ値Ｐａを生成して出力する。以下、その生成方法を説明する。
【００４１】
第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数を２で割った余りとセレクタ１０４により出力された前回の複数ビットステート値Ｆｂの「１」のビット数を２で割った余りとが同じ場合には、セレクタ１０４により出力された前回の１ビットパリティ値Ｐｂを今回の１ビットパリティ値Ｐａとして出力する。
【００４２】
また、第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数を２で割った余りとセレクタ１０４により出力された複数ビットステート値Ｆｂの「１」のビット数を２で割った余りとが異なる場合には、セレクタ１０４により出力された１ビットパリティ値Ｐｂの論理反転値を今回の１ビットパリティ値Ｐａとして出力する。
【００４３】
すなわち、第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数が奇数であり、かつセレクタ１０４により出力された前回の複数ビットステート値Ｆｂの「１」のビット数が奇数である場合には、セレクタ１０４により出力された前回の１ビットパリティ値Ｐｂを今回の１ビットパリティ値Ｐａとして出力する。
【００４４】
また、第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数が偶数であり、かつセレクタ１０４により出力された前回の複数ビットステート値Ｆｂの「１」のビット数が偶数である場合には、セレクタ１０４により出力された前回の１ビットパリティ値Ｐｂを今回の１ビットパリティ値Ｐａとして出力する。
【００４５】
また、第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数が奇数であり、かつセレクタ１０４により出力された前回の複数ビットステート値Ｆｂの「１」のビット数が偶数である場合には、セレクタ１０４により出力された前回の１ビットパリティ値Ｐｂの論理反転値を今回の１ビットパリティ値Ｐａとして出力する。
【００４６】
また、第１の組合せ回路１０３は、今回出力する複数ビットステート値Ｆａの「１」のビット数が偶数であり、かつセレクタ１０４により出力された前回の複数ビットステート値Ｆｂの「１」のビット数が奇数である場合には、セレクタ１０４により出力された前回の１ビットパリティ値Ｐｂの論理反転値を今回の１ビットパリティ値Ｐａとして出力する。
【００４７】
これにより、第１のパリティエラーＰｍ及び第２のパリティエラーＰｓが共に「１」になった場合は、メインパリティチェック回路１１２は次回も「１」の第１のパリティエラーＰｍを出力し、サブパリティチェック回路１２２は次回も「１」の第２のパリティエラーＰｓを出力する。
【００４８】
すなわち、パリティエラーＰｅが「１」になった後、メインパリティチェック回路１１２及びサブパリティチェック回路１２２は、それぞれ、「１」の第１のパリティエラーＰｍ及び「１」の第２のパリティエラーＰｓを出力し続けることができる。その結果、パリティエラーＰｅは、「１」から「０」に戻ることはなく、「１」を維持する。これにより、外部では、エラー状態が維持しているものとして正しい認識を行うことができる。
【００４９】
図４は、図１の半導体集積回路の処理方法を示すフローチャートである。ステップ４０１では、メインパリティチェック回路１１２及びサブパリティチェック回路１２２がパリティチェックを行う。次に、ステップ４０２では、セレクタ１０４は、第１のパリティエラーＰｍが「１」か否かをチェックする。第１のパリティエラーＰｍが「１」である場合には、メインステートマシン部１０１がエラー状態であるので、ステップ４０４に進み、第１のパリティエラーＰｍが「０」である場合には、メインステートマシン部１０１がエラー状態でないので、ステップ４０３に進む。ステップ４０３では、セレクタ１０４は、メインステートマシン部１０１の複数ビットステート値Ｆａｍ、１ビットパリティ値Ｐａｍ及び複数ビット出力信号ＯＵＴｍを選択して出力する。その後、ステップ４０１に戻る。
【００５０】
ステップ４０４では、セレクタ１０４は、第２のパリティエラーＰｓが「１」か否かをチェックする。第２のパリティエラーＰｓが「１」である場合には、サブステートマシン部１０２がエラー状態であるので、ステップ４０６に進み、第２のパリティエラーＰｓが「０」である場合には、サブステートマシン部１０２がエラー状態でないので、ステップ４０５に進む。ステップ４０５では、セレクタ１０４は、サブステートマシン部１０２の複数ビットステート値Ｆａｓ、１ビットパリティ値Ｐａｓ及び複数ビット出力信号ＯＵＴｓを選択して出力する。これにより、メインステートマシン部１０１は、正常状態に修復される。その後、ステップ４０１に戻る。ステップ４０６では、セレクタ１０４は、パリティエラーＰｅを「１」にして出力し、外部にエラー通知する。
【００５１】
図５は、図１の半導体集積回路の動作例を示すタイミングチャートである。半導体集積回路は、クロック信号ＣＬＫに同期して、動作する。まず、メインステートマシン部１０１は、複数ビットステート値Ｆａｍとして正常値「Ｓ１」を出力し、正常な１ビットパリティ値Ｐａｍを出力する。サブステートマシン部１０２は、複数ビットステート値Ｆａｓとして正常値「Ｓ１」を出力し、正常な１ビットパリティ値Ｐａｓを出力する。第１のパリティエラーＰｍは「０」になり、第２のパリティエラーＰｓも「０」になる。セレクタ１０４は、メインステートマシン部１０１の複数ビットステート値Ｆａｍ（正常値「Ｓ１」）及び１ビットパリティ値Ｐａｍを選択し、複数ビットステート値Ｆｂ（正常値「Ｓ１」）及び１ビットパリティ値Ｐｂとして出力する。パリティエラーＰｅは、「０」になる。
【００５２】
次に、メインステートマシン部１０１は、複数ビットステート値Ｆａｍとして正常値「Ｓ２」を出力し、正常な１ビットパリティ値Ｐａｍを出力する。サブステートマシン部１０２は、複数ビットステート値Ｆａｓとして正常値「Ｓ２」を出力し、正常な１ビットパリティ値Ｐａｓを出力する。第１のパリティエラーＰｍは「０」になり、第２のパリティエラーＰｓも「０」になる。セレクタ１０４は、メインステートマシン部１０１の複数ビットステート値Ｆａｍ（正常値「Ｓ２」）及び１ビットパリティ値Ｐａｍを選択し、複数ビットステート値Ｆｂ（正常値「Ｓ２」）及び１ビットパリティ値Ｐｂとして出力する。パリティエラーＰｅは、「０」になる。
【００５３】
次に、メインステートマシン部１０１は、ソフトエラー等により、複数ビットステート値Ｆａｍとして異常値「Ｓ１」を出力し、正常な１ビットパリティ値Ｐａｍを出力する。サブステートマシン部１０２は、複数ビットステート値Ｆａｓとして正常値「Ｓ３」を出力し、正常な１ビットパリティ値Ｐａｓを出力する。第１のパリティエラーＰｍは「１」になり、第２のパリティエラーＰｓは「０」になる。セレクタ１０４は、正常なサブステートマシン部１０２の複数ビットステート値Ｆａｓ（正常値「Ｓ３」）及び１ビットパリティ値Ｐａｓを選択し、複数ビットステート値Ｆｂ（正常値「Ｓ３」）及び１ビットパリティ値Ｐｂとして出力する。パリティエラーＰｅは、「０」になる。
【００５４】
次に、メインステートマシン部１０１は、正常状態に回復され、複数ビットステート値Ｆａｍとして正常値「Ｓ４」を出力し、正常な１ビットパリティ値Ｐａｍを出力する。サブステートマシン部１０２は、複数ビットステート値Ｆａｓとして正常値「Ｓ４」を出力し、正常な１ビットパリティ値Ｐａｓを出力する。第１のパリティエラーＰｍは「０」になり、第２のパリティエラーＰｓも「０」になる。セレクタ１０４は、メインステートマシン部１０１の複数ビットステート値Ｆａｍ（正常値「Ｓ４」）及び１ビットパリティ値Ｐａｍを選択し、複数ビットステート値Ｆｂ（正常値「Ｓ４」）及び１ビットパリティ値Ｐｂとして出力する。パリティエラーＰｅは、「０」になる。
【００５５】
次に、メインステートマシン部１０１は、複数ビットステート値Ｆａｍとして正常値「Ｓ５」を出力し、正常な１ビットパリティ値Ｐａｍを出力する。サブステートマシン部１０２は、複数ビットステート値Ｆａｓとして正常値「Ｓ５」を出力し、正常な１ビットパリティ値Ｐａｓを出力する。第１のパリティエラーＰｍは「０」になり、第２のパリティエラーＰｓも「０」になる。セレクタ１０４は、メインステートマシン部１０１の複数ビットステート値Ｆａｍ（正常値「Ｓ５」）及び１ビットパリティ値Ｐａｍを選択し、複数ビットステート値Ｆｂ（正常値「Ｓ５」）及び１ビットパリティ値Ｐｂとして出力する。パリティエラーＰｅは、「０」になる。
【００５６】
図６は、図１の半導体集積回路をシーケンサ６０１として用いる例を示す図である。シーケンサ６０１は、転送制御信号６０２により、メモリ６０３の記憶領域Ａから記憶領域Ｂにデータを転送することができる。シーケンサ６０１は、図１の半導体集積回路に対応する。転送制御信号６０２は、図１の出力信号ＯＵＴに対応する。
【００５７】
シーケンサ６０１がサブステートマシン部１０２を有しない場合、シーケンサ６０１がエラー状態になると、管理者は、エラー状態を認識した段階で、リセットをかけ、転送を停止させる。シーケンサ６０１がエラー状態にある間、シーケンサ６０１の出力信号６０２は異常な状態を出力している。そのため、記憶領域Ａから記憶領域Ｂに正常なデータが転送されないだけでなく、転送に関係ない記憶領域Ｃ，Ｄ，Ｅに異常な書き込みを実施してしまっている可能性もある。そのため、管理者は、シーケンサ６０１がアクセスする可能性がある全領域Ａ〜Ｅが正常な動作をしているか、チェックする必要が発生する。このチェックは膨大な作業を要する。チェック完了後、管理者は再度転送をシーケンサ６０１に実行させる。
【００５８】
シーケンサ６０１が図１の半導体集積回路の構成を有する場合、シーケンサ６０１は、エラーが発生しても、自動修復されるため、転送は正常に完了する。転送とは関係ない記憶領域Ｃ，Ｄ，Ｅに、異常データが書き込まれる可能性も無いため、管理者は、特に領域をチェックする必要は発生しない。
【００５９】
また、複数のパーソナルコンピュータがサーバに接続されたシステムにおいて、サーバ内に図１のステートマシンを用いることができる。その場合、ステートマシンは、複数のパーソナルコンピュータ間のデータ転送を制御することができる。
【００６０】
ステートマシンがサブステートマシン部１０２を有しない場合、サーバ及びパーソナルコンピュータを起動後、第１のパーソナルコンピュータからサーバ経由で第２のパーソナルコンピュータにデータ転送しているときに、ステートマシンでエラーが発生した場合、自動修復できないため、これ以上転送を継続させることができない。そのため、転送を途中で停止する必要がある。停止後は、管理者がエラー発生箇所を調査し、必要に応じてエラー発生のステートマシン搭載の基盤交換をするなどして不良部品を交換する。その後、サーバを再起動し、転送停止箇所を調査し、転送停止箇所から転送再開して転送を完了させる必要がある。エラーの原因がソフトエラーの場合は、上記の基盤交換が不要になる場合もあるが、その場合でも、サーバを再起動する必要がある。
【００６１】
ステートマシンが図１の構成を有する場合、ステートマシン内でソフトエラーなどのビットエラーが発生しても、自動修復されるため、処理を中断することなく、滞りなく転送を完了させることができる。そのため、ステートマシン内でエラーが発生しても、転送停止、調査、基盤交換、サーバ再起動、調査、転送再開の作業を行う必要がなくなり、転送効率が大幅に向上する。
【００６２】
以上のように、本実施形態によれば、ソフトエラー等により第１又は第２のパリティエラーＰｍ又はＰｓが出力された場合、セレクタ１０４は正常なステート値Ｆｂを第１の組合せ回路１０３に出力するので、メインステートマシン部１０１及びサブステートマシン部１０２に記憶されるステート値は正常値に回復され、正常な動作を継続することができる。
【００６３】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６４】
１０１  メインステートマシン部
１０２  サブステートマシン部
１０３  第１の組合せ回路
１０４  セレクタ
１１１  メインステートマシンフリップフロップ回路
１１２  メインパリティチェック回路
１１３  メインステートマシンパリティフリップフロップ回路
１２１  サブステートマシンフリップフロップ回路
１２２  サブパリティチェック回路
１２３  サブステートマシンパリティフリップフロップ回路
【図１】
2015001774.tif 000003
【図２】
2015001774.tif 000004
【図３】
2015001774.tif 000005
【図４】
2015001774.tif 000006
【図５】
2015001774.tif 000007
【図６】
2015001774.tif 000008