(57)【要約】【課題】回路規模の増大を抑制しつつ、故障検出率を向上させることが可能な半導体装置及びそれを備えた半導体システムを提供すること。【解決手段】一実施の形態によれば、半導体装置は、データＤ１のエラー検出コードＣ１を用いて、データＤ１の診断を行うＥＣＣデコーダ１３１と、データＤ１を構成する複数ビットのうちの一部のビットの値によって表されるデータＤ１１、のエラー検出コードＣ１１を生成するとともに、残りのビットの値によって表されるデータＤ１２、のエラー検出コードＣ１２を生成するＥＣＣエンコーダ１３２と、ＥＣＣデコーダ１３１によってデータＤ１のエラーが検出されなかった場合に、データＤ１のデータＤ１１部分と、エラー検出コードＣ１１の生成に用いられたデータＤ１１と、を比較し、かつ、データＤ１のデータＤ１２部分と、エラー検出コードＣ１２の生成に用いられたデータＤ１２と、を比較する、診断回路１４と、を備える。【選択図】図１
2019087020.tif 000002
【特許請求の範囲】
【請求項１】
送信回路から送信されたデータのエラー検出コードを用いて、当該データにエラーが発生しているか否かを診断するＥＣＣ(Error Correction Code)デコーダと、
前記データを構成する複数ビットのうちの一部のビットの値によって表される第１分割データ、の第１エラー検出コードを生成するとともに、前記データを構成する前記複数ビットのうちの残りのビットの値によって表される第２分割データ、の第２エラー検出コードを生成するＥＣＣエンコーダと、
前記ＥＣＣデコーダによって前記データのエラーが検出されなかった場合に、前記データの前記第１分割データ部分と、前記ＥＣＣエンコーダにおいて前記第１エラー検出コードの生成に用いられた前記第１分割データと、を比較するとともに、前記データの前記第２分割データ部分と、前記ＥＣＣエンコーダにおいて前記第２エラー検出コードの生成に用いられた前記第２分割データと、を比較する、診断回路と、
を備えた、半導体装置。
【請求項２】
前記診断回路は、前記ＥＣＣデコーダによって前記データのエラーが検出された場合には、比較を行わないように構成されている、
請求項１に記載の半導体装置。
【請求項３】
前記ＥＣＣエンコーダは、前記第１分割データ及び前記第１エラー検出コードの組み合わせ、及び、前記第２分割データ及び前記第２エラー検出コードの組み合わせ、のうち、何れか一方の組み合わせを出力した後に、他方の組み合わせを出力するように構成されている、
請求項１に記載の半導体装置。
【請求項４】
前記ＥＣＣエンコーダは、
前記第１分割データ及び前記第１エラー検出コードを出力する第１ＥＣＣエンコーダと、
前記第２分割データ及び前記第２エラー検出コードを出力する第２ＥＣＣエンコーダと、
を有する、請求項１に記載の半導体装置。
【請求項５】
前記データを送信する送信回路と、
前記送信回路から送信された前記データを分割して前記第１及び前記第２分割データを生成するとともに、それらのエラー検出コードである前記第１及び前記第２エラー検出コードを生成する、請求項１に記載の半導体装置と、
前記第１及び前記第２分割データと、前記第１及び前記第２エラー検出コードと、を受信する受信回路と、
を備えた、半導体システム。
【請求項６】
送信回路から送信されたデータのエラー検出コードを用いて、当該データにエラーが発生している否かを診断するＥＣＣ(Error Correction Code)デコーダと、
前記データを構成する複数ビットのうちの一部のビットの値によって表される第１分割データ、の第１エラー検出コードを生成するとともに、前記データを構成する前記複数ビットのうちの残りのビットの値によって表される第２分割データ、の第２エラー検出コードを生成するＥＣＣエンコーダと、
前記ＥＣＣエンコーダにおいて前記第１エラー検出コードの生成に用いられた前記第１分割データ、及び、前記ＥＣＣエンコーダにおいて前記第２エラー検出コードの生成に用いられた前記第２分割データ、のそれぞれにエラーが発生しているか否かを、前記データの前記エラー検出コードを用いて診断する診断回路と、
を備えた、半導体装置。
【請求項７】
前記診断回路は、前記ＥＣＣデコーダによって前記データのエラーが検出されなかった場合にのみ、診断を行うように構成されている、
請求項６に記載の半導体装置。
【請求項８】
前記診断回路は、
前記ＥＣＣデコーダと同一の回路構成を含む、
請求項６に記載の半導体装置。
【請求項９】
前記ＥＣＣエンコーダは、前記第１分割データ及び前記第１エラー検出コードの組み合わせ、及び、前記第２分割データ及び前記第２エラー検出コードの組み合わせ、のうち、何れか一方の組み合わせを出力した後に、他方の組み合わせを出力するように構成されている、
請求項６に記載の半導体装置。
【請求項１０】
前記ＥＣＣエンコーダは、
前記第１分割データ及び前記第１エラー検出コードを出力する第１ＥＣＣエンコーダと、
前記第２分割データ及び前記第２エラー検出コードを出力する第２ＥＣＣエンコーダと、
を有する、請求項６に記載の半導体装置。
【請求項１１】
前記データを送信する送信回路と、
前記送信回路から送信された前記データを分割して前記第１及び前記第２分割データを生成するとともに、それらのエラー検出コードである前記第１及び前記第２エラー検出コードを生成する、請求項６に記載の半導体装置と、
前記第１及び前記第２分割データと、前記第１及び前記第２エラー検出コードと、を受信する受信回路と、
を備えた、半導体システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びそれを備えた半導体システムに関し、例えば回路規模の増大を抑制しつつ、故障検出率を向上させるのに適した半導体装置及びそれを備えた半導体システムに関する。
【背景技術】
【０００２】
バス間のデータの橋渡しを行うバスブリッジは、異なるバス幅を持つバス間のデータの橋渡しを行う場合、橋渡しの前後でデータのビット幅を変更する。ここで、データのビット幅が変わると、そのＥＣＣ(Error Correction Code；エラー検出コード)のビット幅も変わるため、橋渡しの前後でＥＣＣの付け替えが必要になる。しかしながら、ＥＣＣの付け替え時には、ＥＣＣを用いたデータのエラー検出を行うことができないため、このバスブリッジでは故障検出率が低下してしまうという問題があった。
【０００３】
このような問題に対する解決策が特許文献１に開示されている。特許文献１に開示された構成は、インターフェース回路の構成を二重化して、２つのインターフェース回路のそれぞれの出力結果を比較することにより、インターフェース時におけるデータのエラー検出を行って故障検出率を向上させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８２８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の構成では、インターフェース回路（バスブリッジ）の構成が二重化されるため、回路規模が増大してしまうという問題があった。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、半導体装置は、送信回路から送信されたデータのエラー検出コードを用いて、当該データにエラーが発生しているか否かを診断するＥＣＣ(Error Correction Code)デコーダと、前記データを構成する複数ビットのうちの一部のビットの値によって表される第１分割データ、の第１エラー検出コードを生成するとともに、前記データを構成する前記複数ビットのうちの残りのビットの値によって表される第２分割データ、の第２エラー検出コードを生成するＥＣＣエンコーダと、前記ＥＣＣデコーダによって前記データのエラーが検出されなかった場合に、前記データの前記第１分割データ部分と、前記ＥＣＣエンコーダにおいて前記第１エラー検出コードの生成に用いられた前記第１分割データと、を比較するとともに、前記データの前記第２分割データ部分と、前記ＥＣＣエンコーダにおいて前記第２エラー検出コードの生成に用いられた前記第２分割データと、を比較する、診断回路と、を備える。
【０００７】
一実施の形態によれば、半導体装置は、送信回路から送信されたデータのエラー検出コードを用いて、当該データにエラーが発生している否かを診断するＥＣＣ(Error Correction Code)デコーダと、前記データを構成する複数ビットのうちの一部のビットの値によって表される第１分割データ、の第１エラー検出コードを生成するとともに、前記データを構成する前記複数ビットのうちの残りのビットの値によって表される第２分割データ、の第２エラー検出コードを生成するＥＣＣエンコーダと、前記ＥＣＣエンコーダにおいて前記第１エラー検出コードの生成に用いられた前記第１分割データ、及び、前記ＥＣＣエンコーダにおいて前記第２エラー検出コードの生成に用いられた前記第２分割データ、のそれぞれにエラーが発生しているか否かを、前記データの前記エラー検出コードを用いて診断する診断回路と、を備える。
【発明の効果】
【０００８】
前記一実施の形態によれば、回路規模の増大を抑制しつつ、故障検出率を向上させることが可能な半導体装置及びそれを備えた半導体システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる半導体システムの構成例を示す図である。
【図２】図１に示す半導体システムに設けられた半導体装置の他の具体的な構成例を示す図である。
【図３】図２に示す半導体装置の動作を示すフローチャートである。
【図４】実施の形態２にかかる半導体システムの構成例を示す図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
＜実施の形態１＞
図１は、実施の形態１にかかる半導体システムＳＹＳ１の構成例を示す図である。本実施の形態にかかる半導体システムＳＹＳ１は、バスブリッジによる橋渡し前のデータＤ１にエラーが無い場合に、橋渡し前のデータＤ１と、橋渡し後の分割データＤ１１，Ｄ１２と、を比較して、橋渡し中のデータにエラーが発生しているか否かを診断する。それにより、本実施の形態にかかる半導体システムＳＹＳ１は、単にバスブリッジを二重化する場合よりも回路規模の増大を抑制しつつ、故障検出率を向上させることができる。以下、具体的に説明する。
【００１３】
図１に示すように、半導体システムＳＹＳ１は、送信回路１１と、受信回路１２と、バスＢ１１と、バスＢ１２と、バスブリッジ１３と、診断回路１４と、を備える。なお、バスブリッジ１３及び診断回路１４によって半導体装置１が構成されている。
【００１４】
送信回路１１は、データＤ１及びそのエラー検出コードＣ１を送信する回路である。送信回路１１は、例えばメモリであって、リードモードにおいて当該メモリの記憶領域に記憶されたデータＤ１及びそのエラー検出コードＣ１を出力する。データＤ１及びそのエラー検出コードＣ１は、バスＢ１１に供給される。
【００１５】
本実施の形態では、データＤ１のビット幅が２５６ビット、そのエラー検出コードＣ１のビット幅が１０ビットである場合を例に説明する。なお、データＤ１［ａ：ｂ］とは、データＤ１の第ａビットから第ｂビットまでの値によって表されたａ−ｂ＋１ビット幅のデータを示している（ａ≧ｂかつａ，ｂは何れも整数）。
【００１６】
バスブリッジ１３は、バスＢ１１，Ｂ１２間のデータの橋渡しを行う。例えば、バスブリッジ１３は、送信回路１１からバスＢ１１を介して供給された２５６ビット幅のデータＤ１を、バスＢ１２のバス幅に合わせて、１２８ビット幅のデータＤ１１，Ｄ１２に分割し、順番にバスＢ１２に出力する。また、バスブリッジ１３は、エラー検出コードＣ１を用いてデータＤ１のエラー検出（及び可能な場合には訂正）を行うとともに、１２８ビット幅のデータＤ１１，Ｄ１２のそれぞれに対して９ビット幅のエラー検出コードＣ１１，Ｃ１２を生成し、データＤ１１，Ｄ１２とともにバスＢ１２に出力する。
【００１７】
本実施の形態では、データＤ１１が、データＤ１の上位１２８ビットの値によって表される１２８ビット幅のデータ（即ち、データＤ１［２５５：１２８］）に対応し、データＤ１２が、データＤ１の下位１２８ビットの値によって表される１２８ビット幅のデータ（即ち、データＤ１［１２７：０］）に対応する場合を例に説明する。
【００１８】
具体的には、バスブリッジ１３は、ＥＣＣデコーダ１３１と、ＥＣＣエンコーダ１３２と、を有する。ＥＣＣエンコーダ１３２は、ＥＣＣエンコーダ１３２ａ及びＥＣＣエンコーダ１３２ｂを有する。なお、ＥＣＣエンコーダ１３２ａ，１３２ｂは、一つのＥＣＣエンコーダによって共用されてもよい。
【００１９】
ＥＣＣデコーダ１３１は、送信回路１１から送信されたデータＤ１のエラー検出コードＣ１を用いて、当該データＤ１にエラーが発生しているか否かを診断する。例えば、データＤ１にエラーが発生していない場合、ＥＣＣデコーダ１３１は、データＤ１をそのまま出力するとともに、イネーブル信号ＥＮをアクティブ（Ｈレベル）にする。それに対し、データＤ１にエラーが発生している場合、ＥＣＣデコーダ１３１は、データＤ１を訂正したうえで出力するとともに、イネーブル信号ＥＮをインアクティブ（Ｌレベル）にする。なお、データＤ１を訂正できない場合、イネーブル信号ＥＮはインアクティブに固定される。
【００２０】
ＥＣＣエンコーダ１３２ａは、データＤ１の上位１２８ビットの値によって表される１２８ビット幅のデータＤ１１、の９ビット幅のエラー検出コードＣ１１を生成する。ＥＣＣエンコーダ１３２ｂは、データＤ１の下位１２８ビットの値によって表される１２８ビット幅のデータＤ１２、の９ビット幅のエラー検出コードＣ１２を生成する。データＤ１１及びそのエラー検出コードＣ１１の組み合わせ、及び、データＤ１２及びそのエラー検出コードＣ１２の組み合わせは、順番に、バスＢ１２に出力される。
【００２１】
受信回路１２は、バスＢ１２に供給されたデータＤ１１，Ｄ１２、及び、それらのエラー検出コードＣ１１，Ｃ１２を受信する回路である。受信回路１２は、例えばＣＰＵ(Central Processing Unit)であって、送信回路１１から送信されたデータＤ１の分割データＤ１１，Ｄ１２、及び、それらのエラー検出コードＣ１１，Ｃ１２を受信する。
【００２２】
診断回路１４は、バスブリッジ１３による橋渡し前のデータＤ１にエラーが発生していない場合（イネーブル信号ＥＮがアクティブの場合）にのみ、バスブリッジ１３によって橋渡し中のデータにエラーが発生しているか否かを診断する。例えば、診断回路１４は、橋渡し中のデータにエラーが発生している場合、エラー検出信号ＥＲをアクティブ（Ｈレベル）にし、それ以外の場合、エラー検出信号ＥＲをインアクティブ（Ｌレベル）にする。
【００２３】
具体的には、診断回路１４は、コンパレータ１４１と、コンパレータ１４２と、論理和回路（以下、ＯＲ回路と称す）１４３と、を有する。
【００２４】
コンパレータ１４１は、イネーブル信号ＥＮがアクティブの場合にのみ駆動され、データＤ１の上位１２８ビット（即ち、データＤ１［２５５：１２８］）と、エラー検出コードＣ１１の生成に用いられた１２８ビット幅のデータＤ１１と、を比較する。例えば、コンパレータ１４１は、データＤ１［２５５：１２８］とデータＤ１１とが一致する場合、比較結果をインアクティブ（Ｌレベル）に維持し、不一致の場合、比較結果をアクティブ（Ｈレベル）にする。
【００２５】
コンパレータ１４２は、イネーブル信号ＥＮがアクティブの場合にのみ駆動され、データＤ１の下位１２８ビット（即ち、データＤ１［１２７：０］）と、エラー検出コードＣ１２の生成に用いられた１２８ビット幅のデータＤ１２と、を比較する。例えば、コンパレータ１４２は、データＤ１［１２７：０］とデータＤ１２とが一致する場合、比較結果をインアクティブ（Ｌレベル）に維持し、不一致の場合、比較結果をアクティブ（Ｈレベル）にする。
【００２６】
ＯＲ回路１４５は、コンパレータ１４１，１４２のそれぞれの比較結果の論理和を、エラー検出信号ＥＲとして出力する。例えば、ＯＲ回路１４５は、コンパレータ１４１，１４２による比較結果が何れもデータの一致を示している場合、エラー検出信号ＥＲをインアクティブ（Ｌレベル）にし、コンパレータ１４１，１４２による比較結果の何れかがデータの不一致を示している場合、エラー検出信号ＥＲをアクティブ（Ｈレベル）にする。
【００２７】
このように、本実施の形態にかかる半導体システムＳＹＳ１は、バスブリッジ１３による橋渡し前のデータＤ１にエラーが無い場合にのみ、橋渡し前のデータＤ１と、橋渡し後の分割データＤ１１，Ｄ１２と、を比較して、橋渡し中のデータにエラーが発生しているか否かを診断する。それにより、本実施の形態にかかる半導体システムＳＹＳ１は、単にバスブリッジを二重化する場合よりも回路規模の増大を抑制しつつ、故障検出率を向上させることができる。また、回路規模の増大を抑制することができるため、回路配置や信号配線に余裕を持たせることができ、その結果、タイミング制約を満たす設計を容易にすることができる。
【００２８】
本実施の形態では、バスブリッジ１３が２５６ビット幅のデータＤ１を２つの１２８ビット幅のデータＤ１１，Ｄ１２に分割する場合を例に説明したが、これに限られない。バスブリッジ１３は、データＤ１を３個以上に分割する構成に適宜変更可能である。
【００２９】
また、バスブリッジ１３及び診断回路１４からなる半導体装置１の構成は、図１に示す構成に限られず、趣旨を逸脱しない範囲で適宜変更可能である。以下、図２を用いて、半導体装置１の他の具体的な構成例について説明する。
【００３０】
（半導体装置１の他の具体的な構成例）
図２は、半導体装置１の他の具体的な構成例を半導体装置１ａとして示す図である。なお、図２には、送信回路１１及び受信回路１２も示されている。半導体装置１ａにおいて、半導体装置１と同じ構成要素については、同一の符号が付されている。
【００３１】
図２に示すように、半導体装置１ａは、ＥＣＣデコーダ１３１、ＥＣＣエンコーダ１３２、及び、診断回路１４に対応する診断回路１４ａに加えて、レジスタ１６１〜１６３、セレクタ１６４，１６５及びバリッド信号出力部１６６をさらに備える。なお、半導体装置１ａの構成要素のうち、診断回路１４ａ以外の構成要素によって、バスブリッジ１３ａが構成されている。
【００３２】
レジスタ１６１は、送信回路１１からのデータＤ１及びそのエラー検出コードＣ１をクロック信号に同期して取り込む。レジスタ１６１は、データＤ１及びエラー検出コードＣ１を正常に取り込むと、バリッド信号ＶＡをアクティブ（Ｈレベル）にする。
【００３３】
ＥＣＣデコーダ１３１は、レジスタ１６１によって取り込まれたエラー検出コードＣ１を用いて、レジスタ１６１によって取り込まれたデータＤ１にエラーが発生しているか否かを診断する。例えば、データＤ１にエラーが発生していない場合、ＥＣＣデコーダ１３１は、データＤ１をそのまま出力するとともに、イネーブル信号ＥＮをアクティブ（Ｈレベル）にする。それに対し、データＤ１にエラーが発生している場合、ＥＣＣデコーダ１３１は、データＤ１を訂正したうえで出力するとともに、イネーブル信号ＥＮをインアクティブ（Ｌレベル）にする。なお、データＤ１を訂正できない場合、イネーブル信号ＥＮはインアクティブに固定される。
【００３４】
バリッド信号出力部１６６は、例えば論理積回路（ＡＮＤ回路）であって、バリッド信号ＶＡ及びイネーブル信号ＥＮの論理積を、バリッド信号ＶＡ＿ＯＵＴとして出力する。例えば、バリッド信号出力部１６６は、バリッド信号ＶＡ及びイネーブル信号ＥＮが何れもアクティブの場合に、バリッド信号ＶＡ＿ＯＵＴをアクティブ（Ｈレベル）にし、何れか一つでもインアクティブの場合に、バリッド信号ＶＡ＿ＯＵＴをインアクティブ（Ｌレベル）にする。
【００３５】
なお、受信回路１２は、バリッド信号ＶＡ＿ＯＵＴがアクティブの場合、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２が有効であると判断し、バリッド信号ＶＡ＿ＯＵＴがインアクティブの場合、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２が無効であると判断する。
【００３６】
レジスタ１６２は、ＥＣＣデコーダ１３１から出力された訂正不要のデータＤ１又は訂正後のデータＤ１、及び、イネーブル信号ＥＮ、をクロック信号に同期して取り込む。また、このとき、レジスタ１６３は、レジスタ１６１によって取り込まれたデータＤ１をクロック信号に同期して取り込む。
【００３７】
セレクタ１６４は、レジスタ１６２によって取り込まれた訂正後のデータＤ１を２分割することにより生成されたデータＤ１１、データＤ１２、レジスタ１６１によって取り込まれたデータＤ１を２分割することにより生成されたデータＤ１１及びデータＤ１２の何れか、を選択的に出力する。
【００３８】
セレクタ１６５は、レジスタ１６３によって取り込まれたデータＤ１の上位１２８ビットのデータＤ１［２５５：１２８］、下位１２８ビットのデータＤ１［１２７：０］、レジスタ１６１によって取り込まれたデータＤ１の上位１２８ビットのデータＤ１［２５５：１２８］、及び、下位１２８ビットのデータＤ１［１２７：０］の何れか、を選択的に出力する。
【００３９】
ＥＣＣエンコーダ１３２は、セレクタ１６４から順番に出力される１２８ビット幅のデータＤ１１，Ｄ１２、の９ビット幅のエラー検出コードＣ１１，Ｃ１２を生成する。
【００４０】
診断回路１４ａは、イネーブル信号ＥＮがアクティブの場合にのみ、バスブリッジ１３ａによる橋渡し中のデータにエラーが発生しているか否かを診断する。
【００４１】
具体的には、診断回路１４ａは、コンパレータ１４４及び論理積回路（以下、ＡＮＤ回路と称す）１４５を有する。コンパレータ１４４は、セレクタ１６４，１６５のそれぞれ出力データを比較する。例えば、コンパレータ１４４は、セレクタ１６４，１６５のそれぞれの出力データが一致する場合、比較結果をインアクティブ（Ｌレベル）に維持し、不一致の場合、比較結果をアクティブ（Ｈレベル）にする。ＡＮＤ回路１４５は、イネーブル信号ＥＮ及びバリッド信号ＶＡ＿ＯＵＴが何れもアクティブの場合、コンパレータ１４４の比較結果をそのままエラー検出信号ＥＲとして出力し、イネーブル信号ＥＮ及びバリッド信号ＶＡ＿ＯＵＴの何れかがインアクティブの場合、コンパレータ１４４の比較結果に関わらずエラー検出信号ＥＲをインアクティブにする。
【００４２】
なお、受信回路１２は、バリッド信号ＶＡ＿ＯＵＴがアクティブの場合において、エラー検出信号ＥＲがインアクティブの場合にのみ、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２を正式なデータとして採用する。他方、バリッド信号ＶＡ＿ＯＵＴがアクティブであっても、エラー検出信号ＥＲがアクティブの場合である場合には、受信回路１２は、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２を正式なデータとして採用しない。
【００４３】
（半導体装置１ａの動作）
続いて、図３を用いて半導体装置１ａの動作について説明する。
図３は、半導体装置１ａの動作を示すフローチャートである。
【００４４】
まず、レジスタ１６１は、送信回路１１からのデータＤ１及びそのエラー検出コードＣ１をクロック信号に同期して取り込む（ステップＳ１０１）。レジスタ１６１は、データＤ１及びエラー検出コードＣ１を正常に取り込むと、バリッド信号ＶＡをアクティブ（Ｈレベル）にする。
【００４５】
セレクタ１６４は、レジスタ１６１によって取り込まれた２５６ビット幅のデータＤ１を２分割することによって生成された１２８ビット幅のデータＤ１１，Ｄ１２を順番に選択して出力する。また、このとき、セレクタ１６５は、レジスタ１６１によって取り込まれたデータＤ１の上位１２８ビットのデータＤ１［２５５：１２８］、下位１２８ビットのデータＤ１［１２７：０］を順番に選択して出力する。
【００４６】
ＥＣＣエンコーダ１３２は、セレクタ１６４から順番に出力された１２８ビット幅のデータＤ１１，Ｄ１２、のそれぞれの９ビット幅のエラー検出コードＣ１１，Ｃ１２を順番に生成する。
【００４７】
セレクタ１６４から順番に出力されたＥＣＣチェック前のデータＤ１１，Ｄ１２は、順番に受信回路１２に転送される。また、ＥＣＣエンコーダ１３２によって生成されたエラー検出コードＣ１１，Ｃ１２も、データＤ１１，Ｄ１２とともに順番に受信回路１２に転送される（ステップＳ１０２）。
【００４８】
なお、受信回路１２へのデータ転送と並行して、ＥＣＣデコーダ１３１は、バスブリッジ１３ａによる橋渡し前のデータＤ１の診断を行う（ステップＳ１０３）。
【００４９】
具体的には、ＥＣＣデコーダ１３１は、レジスタ１６１によって取り込まれたエラー検出コードＣ１を用いて、レジスタ１６１によって取り込まれたデータＤ１にエラーが発生しているか否かを診断する。例えば、データＤ１にエラーが発生していない場合、ＥＣＣデコーダ１３１は、データＤ１をそのまま出力するとともに、イネーブル信号ＥＮをアクティブ（Ｈレベル）にする。それに対し、データＤ１にエラーが発生している場合、ＥＣＣデコーダ１３１は、データＤ１を訂正したうえで出力するとともに、イネーブル信号ＥＮをインアクティブ（Ｌレベル）にする。なお、データＤ１を訂正できない場合、イネーブル信号ＥＮはインアクティブに固定される。
【００５０】
まず、ＥＣＣデコーダ１３１によって橋渡し前のデータＤ１にエラーが発生していると診断された場合（ステップＳ１０４のＮＯ）、即ち、ＥＣＣデコーダ１３１のイネーブル信号ＥＮがインアクティブになった場合、バリッド信号出力部１６６のバリッド信号ＶＡ＿ＯＵＴはインアクティブになる。それにより、受信回路１２は、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２が無効であると判断する（ステップＳ１０９）。
【００５１】
その後、セレクタ１６４は、レジスタ１６２によって取り込まれた訂正後のデータＤ１の分割データＤ１１，Ｄ１２に選択を切り替えて順番に出力する。ＥＣＣエンコーダ１３２は、セレクタ１６４から順番に出力された１２８ビット幅の訂正後のデータＤ１１，Ｄ１２、のそれぞれの９ビット幅のエラー検出コードＣ１１，Ｃ１２を順番に生成する。
【００５２】
セレクタ１６４から順番に出力された訂正後のデータＤ１１，Ｄ１２は、順番に受信回路１２に転送される。また、ＥＣＣエンコーダ１３２によって生成されたエラー検出コードＣ１１，Ｃ１２も、訂正後のデータＤ１１，Ｄ１２とともに順番に受信回路１２に転送される（ステップＳ１１０）。
【００５３】
つまり、ＥＣＣデコーダ１３１によって橋渡し前のデータＤ１にエラーが発生している診断された場合、ＥＣＣデコーダ１３１による診断と並行して行われたデータ転送は受信回路１２において無効と判断され、その後、ＥＣＣデコーダ１３１による訂正後のデータＤ１１，Ｄ１２が有効なデータとして受信回路１２に転送される。
【００５４】
なお、このとき、イネーブル信号ＥＮがインアクティブであることにより、バリッド信号ＶＡ＿ＯＵＴがインアクティブとなるため、診断回路１４ａは、バスブリッジ１３ａによる橋渡し中のデータの診断を行わない。それにより、診断回路１４ａのエラー検出信号ＥＲはインアクティブに維持される。
【００５５】
次に、ＥＣＣデコーダ１３１によって橋渡し前のデータＤ１にエラーが発生していないと診断された場合（ステップＳ１０４のＹＥＳ）、即ち、ＥＣＣデコーダ１３１のイネーブル信号ＥＮがアクティブになった場合、バリッド信号出力部１６６のバリッド信号ＶＡ＿ＯＵＴはアクティブになる。それにより、受信回路１２は、バスブリッジ１３ａから受信したデータＤ１１，Ｄ１２が有効であると判断する（ステップＳ１０５）。
【００５６】
ここで、イネーブル信号ＥＮがアクティブであるため、診断回路１４ａは、バスブリッジ１３ａによる橋渡し中のデータの診断を行う（ステップＳ１０６）。具体的には、診断回路１４ａは、セレクタ１６４から順番に出力されるＥＣＣチェック前のデータＤ１１，Ｄ１２と、セレクタ１６５から順番に出力されるレジスタ１６１からのデータＤ１［２５５：１２８］，Ｄ１［１２７：０］と、をそれぞれ比較することにより、バスブリッジ１３ａによる橋渡し中のデータにエラーが発生しているか否かを診断する。
【００５７】
例えば、診断回路１４ａによって橋渡し中のデータにエラーが発生していると診断された場合（ステップＳ１０７のＮＯ）、即ち、診断回路１４ａのエラー検出信号ＥＲがアクティブになった場合、受信回路１２は、バリッド信号ＶＡ＿ＯＵＴの値に関わらず、受信したデータＤ１１，Ｄ１２を正式なデータとして採用しない（ステップＳ１１１）。
【００５８】
それに対し、診断回路１４ａによって橋渡し中のデータにエラーが発生していないと診断された場合（ステップＳ１０７のＹＥＳ）、即ち、診断回路１４ａのエラー検出信号ＥＲがインアクティブになった場合、受信したデータＤ１１，Ｄ１２を正式なデータとして採用する（ステップＳ１０８）。
【００５９】
このように、半導体システムＳＹＳ１は、半導体装置１ａが適用された場合でも、半導体装置１が適用された場合と同様に、バスブリッジ１３ａによる橋渡し前のデータＤ１にエラーが無い場合にのみ、橋渡し前のデータＤ１と、橋渡し後の分割データＤ１１，Ｄ１２と、を比較して、橋渡し中のデータにエラーが発生しているか否かを診断する。それにより、半導体装置１ａが適用された半導体システムＳＹＳ１は、単にバスブリッジを二重化する場合と比較して、ＥＣＣデコーダ及びＥＣＣエンコーダを追加で設ける必要が無いため、回路規模の増大を抑制することができる。
【００６０】
また、半導体装置１ａは、ＥＣＣデコーダ１３１による橋渡し前のデータＤ１の診断と、バスブリッジ１３ａによる送信回路１１から受信回路１２へのデータの橋渡しと、を並行して行っている。そして、半導体装置１ａは、ＥＣＣデコーダ１３１によって橋渡し前のデータＤ１にエラーが発生していると診断された場合のみ、既に受信回路１２に転送されたデータを無効にしたうえで、訂正後のデータを新たに受信回路１２に転送している。それにより、半導体装置１ａは、送信回路１１から受信回路１２のデータの橋渡しを速やかに行うことができる。
【００６１】
＜実施の形態２＞
図４は、実施の形態２にかかる半導体システムＳＹＳ２の構成例を示す図である。本実施の形態にかかる半導体システムＳＹＳ２は、バスブリッジによる橋渡し前のデータＤ１のエラー検出コードＣ１を用いて、橋渡し後の分割データＤ１１，Ｄ１２にエラーが発生しているか否かを診断する。それにより、本実施の形態にかかる半導体システムＳＹＳ１は、単にバスブリッジを二重化する場合よりも回路規模の増大を抑止しつつ、故障検出率を向上させることができる。以下、具体的に説明する。
【００６２】
図４に示すように、半導体システムＳＹＳ２は、送信回路２１と、受信回路２２と、バスＢ２１，Ｂ２２と、バスブリッジ２３と、診断回路２４と、を備える。なお、バスブリッジ２３及び診断回路２４によって半導体装置２が構成されている。
【００６３】
送信回路２１は、２５６ビット幅のデータＤ１、及び、その１０ビット幅のエラー検出コードＣ１を送信する。送信回路２１は、例えばメモリであって、リードモードにおいて当該メモリの記憶領域に記憶されたデータＤ１及びそのエラー検出コードＣ１を出力する。データＤ１及びそのエラー検出コードＣ１は、バスＢ１１に供給される。
【００６４】
バスブリッジ２３は、バスＢ２１，Ｂ２２間のデータの橋渡しを行う。例えば、バスブリッジ２３は、送信回路２１からバスＢ２１を介して供給された２５６ビット幅のデータＤ１を、バスＢ２２のバス幅に合わせて、１２８ビット幅のデータＤ１１，Ｄ１２に分割し、順番にバスＢ２２に出力する。また、バスブリッジ２３は、エラー検出コードＣ１を用いてデータＤ１のエラー検出（及び可能な場合には訂正）を行うとともに、１２８ビット幅のデータＤ１１，Ｄ１２のそれぞれに対して９ビット幅のエラー検出コードＣ１１，Ｃ１２を生成し、データＤ１１，Ｄ１２とともにバスＢ２２に出力する。
【００６５】
本実施の形態では、データＤ１１が、データＤ１の上位１２８ビットの値によって表される１２８ビット幅のデータ（即ち、データＤ１［２５５：１２８］）に対応し、データＤ１２が、データＤ１の下位１２８ビットの値によって表される１２８ビット幅のデータ（即ち、データＤ１［１２７：０］）に対応する場合を例に説明する。
【００６６】
具体的には、バスブリッジ２３は、ＥＣＣデコーダ２３１と、ＥＣＣエンコーダ２３２と、を有する。ＥＣＣエンコーダ２３２は、ＥＣＣエンコーダ２３２ａ及びＥＣＣエンコーダ２３２ｂを有する。なお、ＥＣＣエンコーダ２３２ａ，２３２ｂは、一つのＥＣＣエンコーダによって共用されてもよい。
【００６７】
ＥＣＣデコーダ２３１は、送信回路２１から送信されたデータＤ１のエラー検出コードＣ１を用いて、当該データＤ１にエラーが発生しているか否かを診断する。例えば、データＤ１にエラーが発生していない場合、ＥＣＣデコーダ２３１は、データＤ１をそのまま出力するとともに、イネーブル信号ＥＮをアクティブ（Ｈレベル）にする。それに対し、データＤ１にエラーが発生している場合、ＥＣＣデコーダ２３１は、可能な限りデータＤ１を訂正したうえで出力するとともに、イネーブル信号ＥＮをインアクティブ（Ｌレベル）にする。
【００６８】
ＥＣＣエンコーダ２３２ａは、データＤ１の上位１２８ビットの値によって表される１２８ビット幅のデータＤ１１、の９ビット幅のエラー検出コードＣ１１を生成する。ＥＣＣエンコーダ２３２ｂは、データＤ１の下位１２８ビットの値によって表される１２８ビット幅のデータＤ１２、の９ビット幅のエラー検出コードＣ１２を生成する。データＤ１１及びそのエラー検出コードＣ１１の組み合わせ、及び、データＤ１２及びそのエラー検出コードＣ１２の組み合わせは、順番に、バスＢ２２に出力される。
【００６９】
受信回路２２は、バスＢ２２に供給されたデータＤ１１，Ｄ１２、及び、それらのエラー検出コードＣ１１，Ｃ１２を受信する回路である。受信回路１２は、例えばＣＰＵであって、送信回路２１から送信されたデータＤ１を分割したデータＤ１１，Ｄ１２、及び、それらのエラー検出コードＣ１１，Ｃ１２を受信する。
【００７０】
診断回路２４は、バスブリッジ２３による橋渡し前のデータＤ１にエラーが発生していない場合（イネーブル信号ＥＮがアクティブの場合）にのみ、バスブリッジ２３によって橋渡し中のデータにエラーが発生しているか否かを診断する。例えば、診断回路２４は、橋渡し中のデータにエラーが発生している場合、エラー検出信号ＥＲをアクティブ（Ｈレベル）にし、それ以外の場合、エラー検出信号ＥＲをインアクティブ（Ｌレベル）にする。
【００７１】
具体的には、診断回路２４は、ＥＣＣデコーダ２３１と同様の回路構成を有する。ここで、診断回路２４は、バスブリッジ２３による橋渡し前のデータＤ１のエラー検出コードＣ１を用いて、橋渡し後の分割データＤ１１，Ｄ１２にエラーが発生しているか否かを診断する。そして、診断回路２４は、データＤ１１，Ｄ１２にエラーが発生していない場合、エラー検出信号ＥＲをインアクティブ（Ｌレベル）にし、データＤ１１，Ｄ１２にエラーが発生している場合、エラー検出信号ＥＲをアクティブ（Ｈレベル）にする。
【００７２】
このように、本実施の形態にかかる半導体システムＳＹＳ２は、バスブリッジ２３による橋渡し前のデータＤ１のエラー検出コードＣ１を用いて、橋渡し後の分割データＤ１１，Ｄ１２にエラーが発生しているか否かを診断する。それにより、本実施の形態にかかる半導体システムＳＹＳ２は、単にバスブリッジを二重化する場合よりも回路規模の増大を抑制しつつ、故障検出率を向上させることができる。また、回路規模の増大を抑制することができるため、回路配置や信号配線に余裕を持たせることができ、その結果、タイミング制約を満たす設計を容易にすることができる。
【００７３】
なお、半導体システムＳＹＳ２は、半導体システムＳＹＳ１の場合と比較して、２５６ビット幅のデータ同士を比較するためのコンパレータを設ける必要がないため、回路規模をさらに縮小させることができる。一方で、半導体システムＳＹＳ１は、ＥＣＣチェックの代わりに、２５６ビット幅のデータ同士を比較しているため、より故障検出率を向上させることができる。
【００７４】
本実施の形態では、バスブリッジ２３が２５６ビット幅のデータＤ１を２つの１２８ビット幅のデータＤ１１，Ｄ１２に分割する場合を例に説明したが、これに限られない。バスブリッジ２３は、データＤ１を３個以上に分割する構成に適宜変更可能である。
【００７５】
また、バスブリッジ１３及び診断回路１４からなる半導体装置２の構成は、図４に示す構成に限られず、趣旨を逸脱しない範囲で適宜変更可能である。
【００７６】
以上のように、上記実施の形態１に係る半導体システムＳＹＳ１は、バスブリッジによる橋渡し前のデータＤ１にエラーが無い場合に、橋渡し前のデータＤ１と、橋渡し後の分割データＤ１１，Ｄ１２と、を比較して、橋渡し中のデータにエラーが発生しているか否かを診断する。また、上記実施の形態２に係る半導体システムＳＹＳ２は、バスブリッジによる橋渡し前のデータＤ１のエラー検出コードＣ１を用いて、橋渡し中のデータにエラーが発生しているか否かを診断する。それにより、上記実施の形態１，２に係る半導体システムＳＹＳ１，ＳＹＳ２は、単にバスブリッジを二重化する場合よりも回路規模の増大を抑制しつつ、故障検出率を向上させることができる。
【００７７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７８】
１  半導体装置
１ａ  半導体装置
２  半導体装置
１１  送信回路
１２  受信回路
１３  バスブリッジ
１４  診断回路
１４ａ  診断回路
２１  送信回路
２２  受信回路
２３  バスブリッジ
２４  診断回路
１３１  ＥＣＣデコーダ
１３２  ＥＣＣエンコーダ
１３２ａ  ＥＣＣエンコーダ
１３２ｂ  ＥＣＣエンコーダ
１４１  コンパレータ
１４２  コンパレータ
１４３  論理和回路（ＯＲ回路）
１４４  コンパレータ
１４５  論理積回路（ＡＮＤ回路）
１６１  レジスタ
１６２  レジスタ
１６３  レジスタ
１６４  セレクタ
１６５  セレクタ
１６６  バリッド信号出力部
２３１  ＥＣＣデコーダ
２３２  ＥＣＣエンコーダ
２３２ａ  ＥＣＣエンコーダ
２３２ｂ  ＥＣＣエンコーダ
ＳＹＳ１  半導体システム
ＳＹＳ２  半導体システム
【図１】
2019087020.tif 000003
【図２】
2019087020.tif 000004
【図３】
2019087020.tif 000005
【図４】
2019087020.tif 000006