(57)【要約】【課題】従来の半導体装置では、故障個所の絞り込みのために多くの時間を要するという問題があった。【解決手段】一実施の形態によれば、半導体装置は、通常モードで利用されるユーザープログラムを解析プログラムとして用い、かつ、複数の周辺回路に同一動作をさせるロックステップ動作を同一の機能を有する複数の周辺回路に行わせながらユーザープログラムに基づく処理を行い、ロックステップ動作をしている複数の周辺回路のそれぞれから得られる複数の解析情報の一致・不一致を判定することで周辺回路の故障を診断する。【選択図】図１
2019012319.tif 000002
【特許請求の範囲】
【請求項１】
ユーザープログラムを実行するプログラム実行部と、
同一の回路構成であって、前記プログラム実行部により制御される周辺回路が複数個含まれる周辺回路群と、
前記プログラム実行部からの動作指示に従い前記ユーザープログラムに基づく前記周辺回路群の不具合解析を行う解析サブシステムと、を有し、
前記解析サブシステムは、
前記周辺回路群に含まれる周辺回路のうち前記不具合解析に用いる解析対象周辺回路が複数個含まれる解析対象周辺回路群を指定する解析対象周辺回路設定値と、前記解析対象周辺回路群に含まれる前記周辺回路のうち比較対象となる比較対象周辺回路を指定する比較対象周辺回路設定値と、を少なくとも含む解析実行設定値が格納される解析設定レジスタと、
前記解析対象周辺回路設定値に基づき、前記解析対象周辺回路群に含まれる全ての解析対象周辺回路が動作するように前記周辺回路群の動作状態を制御するモジュールセレクタと、
前記比較対象周辺回路設定値と前記解析対象周辺回路設定値に基づき、前記比較対象周辺回路に対して前記プログラム実行部が出力した前記動作指示を前記解析対象周辺回路群に含まれる複数の前記周辺回路に分配して与え、与えられた前記動作指示に対応して前記解析対象周辺回路群に含まれる複数の前記周辺回路から出力されるデータを解析情報として抽出すると共に、前記比較対象周辺回路から出力されるデータを前記プログラム実行部へ送信するアービタと、
前記解析情報に基づき前記解析対象周辺回路群に含まれる複数の周辺回路のそれぞれから得られた情報を比較して、異なる値を示すビットの場所を示すエラー情報を出力する比較ユニットと、を有する半導体装置。
【請求項２】
前記比較ユニットは、プログラム実行部から出力される動作指示の宛先を示すアドレス信号であって、前記解析対象周辺回路群に含まれる複数の周辺回路のそれぞれに与えられる前記アドレス信号を比較して、異なるアドレス値を示すビット値の場所を示すアドレスエラー情報を前記エラー情報として出力する請求項１に記載の半導体装置。
【請求項３】
前記比較ユニットは、前記周辺回路群に与えられる動作クロックのうち前記解析対象周辺回路群に与えられる動作クロックに基づき動作する請求項１に記載の半導体装置。
【請求項４】
前記プログラム実行部は、前記解析設定レジスタに前記解析対象周辺回路設定値、比較対象周辺回路設定値及び前記ユーザープログラム中の命令のうち実行対象の命令の場所を示すフェッチアドレスを少なくとも含む前記解析実行設定値を出力するＣＰＵコアと、
前記ＣＰＵコアが前記解析設定レジスタに格納した前記解析実行設定値に含まれる前記フェッチアドレスに基づき前記ユーザープログラムを実行する解析コアと、を有する請求項１に記載の半導体装置。
【請求項５】
前記ＣＰＵコアは、前記解析実行設定値に基づき前記解析コアが前記ユーザープログラムを実行する解析モード期間中、前記解析コアによる前記ユーザープログラムの実行が停止するまでの間前記ユーザープログラムの実行を停止する、又は、前記ユーザープログラムを実行して前記解析対象周辺回路群に含まれない周辺回路を動作させる請求項４に記載の半導体装置。
【請求項６】
前記モジュールセレクタは、
前記解析設定レジスタに前記解析実行設定値が格納されていない通常動作モードにおいては、前記プログラム実行部から与えられるモジュールアドレス信号に基づき、複数の前記周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力し、
前記解析設定レジスタに前記解析実行設定値が格納されている解析モードにおいては、前記モジュールアドレス信号によらず、前記解析対象周辺回路群に含まれる全ての前記解析対象周辺回路を動作状態とする解析対象選択信号を出力する請求項１に記載の半導体装置。
【請求項７】
前記モジュールセレクタは、
前記解析設定レジスタに前記解析実行設定値が格納されていない通常動作モードにおいては、前記プログラム実行部から与えられるモジュールアドレス信号をアクセス先の前記周辺回路毎に定められたシフト量でシフトさせて前記周辺回路を個別に指定するペリフェラルアドレス信号を生成し、
前記解析設定レジスタに前記解析実行設定値が格納されている解析モードにおいては、前記モジュールアドレス信号から前記解析対象周辺回路群に含まれる全ての前記周辺回路に対応する複数のモジュールアドレス信号を出力する請求項１に記載の半導体装置。
【請求項８】
前記周辺回路に異常が発生した場合に複数の前記周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか１つを前記プログラム実行部に通知する割込アービタを有する請求項１に記載の半導体装置。
【請求項９】
ユーザープログラムを実行する第１のＣＰＵコアと、
同一の回路構成であって、前記第１のＣＰＵコアにより制御される周辺回路が複数個含まれる周辺回路群と、
前記第１のＣＰＵコアからの指示に従い前記ユーザープログラムに基づく前記周辺回路群の不具合解析を行う解析サブシステムと、を有し、
前記解析サブシステムは、
前記周辺回路群に含まれる周辺回路のうち前記不具合解析に用いる解析対象周辺回路が複数個含まれる解析対象周辺回路群を指定する解析対象周辺回路設定値と、前記解析対象周辺回路群に含まれる前記周辺回路のうち比較対象となる比較対象周辺回路を指定する比較対象周辺回路設定値と、を少なくとも含む解析実行設定値が格納される解析設定レジスタと、
前記解析対象周辺回路設定値に基づき、前記解析対象周辺回路群に含まれる全ての解析対象周辺回路が動作するように前記周辺回路群の動作状態を制御するモジュールセレクタと、
前記解析対象周辺回路設定値に基づき、前記解析対象周辺回路群に含まれる複数の前記周辺回路に入出力されるアドレス及びデータの少なくとも１つを含む解析情報を抽出すると共に、前記比較対象周辺回路設定値に基づき比較対象周辺回路から出力されるデータを上流側に位置する回路に送信するアービタと、
前記解析情報に基づき前記解析対象周辺回路群に含まれる複数の前記周辺回路のそれぞれから得られた情報を比較して、異なる値を示すビットの場所を示すエラー情報を出力する比較ユニットと、を有する半導体装置。
【請求項１０】
前記比較ユニットは、プログラム実行部から出力される動作指示の宛先を示すアドレス信号であって、前記解析対象周辺回路群に含まれる複数の前記周辺回路のそれぞれに与えられるアドレス信号を比較して、異なるアドレス値を示すビット値の場所を示すアドレスエラー情報を前記エラー情報として出力する請求項９に記載の半導体装置。
【請求項１１】
前記比較ユニットは、前記周辺回路群に与えられる動作クロックのうち前記解析対象周辺回路群に与えられる動作クロックに基づき動作する請求項９に記載の半導体装置。
【請求項１２】
前記解析サブシステムは、
前記解析実行設定値の１つとして前記第１のＣＰＵコアが前記解析設定レジスタに格納したフェッチアドレスに基づき、前記解析対象周辺回路群に含まれる比較対象周辺回路を用いて前記ユーザープログラムを実行する第２のＣＰＵコアを更に有し、
前記第１のＣＰＵコアは、前記フェッチアドレスを前記解析設定レジスタに格納した場合は、前記第２のＣＰＵコアによる前記ユーザープログラムの実行が停止するまでの間前記ユーザープログラムの実行を停止する、又は、前記解析対象周辺回路群に含まれない周辺回路を用いてプログラムを実行する請求項９に記載の半導体装置。
【請求項１３】
前記モジュールセレクタは、
前記解析設定レジスタに前記解析実行設定値が格納されていない通常動作モードにおいては、前記第１のＣＰＵコア側から与えられるモジュールアドレス信号に基づき、複数の前記周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力し、
前記解析設定レジスタに前記解析実行設定値が格納されている解析モードにおいては、前記モジュールアドレス信号によらず、前記解析対象周辺回路群に含まれる全ての前記周辺回路を動作状態とする解析対象選択信号を出力する請求項９に記載の半導体装置。
【請求項１４】
前記モジュールセレクタは、
前記解析設定レジスタに前記解析実行設定値が格納されていない通常動作モードにおいては、前記第１のＣＰＵコア側から与えられるモジュールアドレス信号をアクセス先の前記周辺回路毎に定められたシフト量でシフトさせて前記周辺回路を個別に指定するペリフェラルアドレス信号を生成し、
前記解析設定レジスタに前記解析実行設定値が格納されている解析モードにおいては、前記モジュールアドレス信号から前記解析対象周辺回路群に含まれる全ての前記周辺回路に対応する複数のモジュールアドレス信号を出力する請求項９に記載の半導体装置。
【請求項１５】
前記周辺回路に異常が発生した場合に複数の前記周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか１つを前記第１のＣＰＵコアに通知する割込アービタを有する請求項９に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えばＣＰＵコアとＣＰＵコアに用いられる複数の周辺回路とを有する半導体装置に関する。
【背景技術】
【０００２】
近年、車載制御システムにおいては、部品単体で機能安全設計がなされていることが求められている。特に、自動車制御用ＭＣＵ（Micro Controller Unit）では、故障自己診断機能の向上が求められている。故障自己診断機能の例としては、ＤＦＴ（Design For Test）回路を半導体装置単体で動作させることによってＣＭＯＳ破壊などの故障が存在するかどうかを検出する機能（Field-BIST：顧客環境で使用できるＤＦＴ回路）が挙げられる。このような故障自己診断機能の別の例が、特許文献１、２に開示されている。
【０００３】
特許文献１に記載のマイクロプロセッサでは、テストパターン発生回路で発生された同一のテストパターンを複数のマイクロプロセッサに同時に供給し、それぞれのマイクロプロセッサで得られたテスト結果が全て同一か否かを比較回路により比較判別し、全て同一であるならば、全てのマイクロプロセッサが正常に動作しているとものと判定する。
【０００４】
特許文献２に記載のマイクロコンピュータは、通常動作モードでメインコア及びチェッカーコアのそれぞれの出力を比較する出力比較部と、不一致箇所特定モードでメインコア及びチェッカーコアのそれぞれのスキャンチェーンの出力を比較するシフト結果比較部と、複数のフリップフロップと複数の機能ブロックとの情報が格納されたテーブルを記憶するテーブル記憶部と、通常動作モードにて、出力比較部により不一致が検出された場合に不一致箇所特定モードにモードを切り替えるとともに、不一致箇所特定モードにて、シフト結果比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出し、当該機能ブロックの機能を停止させる制御部と、を備える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３２５９４６号公報
【特許文献２】特開２０１４−１３２３８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１、２に記載の技術を用いても、プログラムを実行するＣＰＵコアにより利用される周辺回路を含むチップ全体について、機能を動的に制御しながら故障診断を行うことはできない。このような機能を動的に制御して行う故障診断によればテストパターン等を用いることなく故障したレジスタのアドレスやビットを特定することができる。しかし、特許文献１、２に記載の技術では、テストパターンが必要となるため、機能を動的に制御しながら故障診断を行うことができず、故障個所の絞り込みのために多くの時間を要するという問題があった。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、通常モードで利用されるユーザープログラムを解析プログラムとして用い、かつ、複数の周辺回路に同一動作をさせるロックステップ動作を同一の機能を有する複数の周辺回路に行わせながらユーザープログラムに基づく処理を行い、ロックステップ動作をしている複数の周辺回路のそれぞれから得られる複数の解析情報の一致・不一致を判定することで周辺回路の故障を診断する。
【発明の効果】
【０００９】
前記一実施の形態によれば、故障個所の絞り込みのために要する時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかる解析サブシステムのブロック図である。
【図３】実施の形態１にかかる比較ユニットのブロック図である。
【図４】実施の形態１にかかる半導体装置の解析処理の流れを示すフローチャートである。
【図５】実施の形態１にかかる半導体装置の第１の解析ステップの流れを示すフローチャートである。
【図６】実施の形態１にかかる半導体装置の第２の解析ステップの流れを示すフローチャートである。
【図７】実施の形態１にかかる半導体装置の第３の解析ステップの流れを示すフローチャートである。
【図８】実施の形態２にかかる半導体装置の解析処理の流れを示すフローチャートである。
【図９】実施の形態３にかかる半導体装置のブロック図である。
【図１０】実施の形態３にかかる解析サブシステムのブロック図である。
【図１１】実施の形態３にかかる解析サブシステムと実施の形態１にかかる解析サブシステムの違いを説明する図である。
【図１２】図１１に示した第１のバスのアドレスデコーダの動作を説明する図である。
【図１３】図１１に示した第２のバスのアドレスデコーダの動作を説明する図である。
【図１４】実施の形態４にかかる半導体装置のブロック図である。
【図１５】実施の形態５にかかる半導体装置のブロック図である。
【図１６】実施の形態５にかかる解析サブシステムのブロック図である。
【図１７】実施の形態５にかかる半導体装置の第１の解析ステップの流れを示すフローチャートである。
【図１８】実施の形態５にかかる半導体装置の第２の解析ステップの流れを示すフローチャートである。
【図１９】実施の形態５にかかる半導体装置の第３の解析ステップの流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１３】
また、実施の形態１にかかる半導体装置１では、ＣＰＵコア、解析コア等の演算装置においてプログラムを実行するが、以下の説明では、プログラム中に記述された命令を演算装置内のプログラムカウンタのカウント値であるフェッチアドレスに従ってフェッチ（或いは読み出し処理）し、フェッチした命令を実行する処理を「プログラムを実行する」と表現する。また、演算装置から周辺回路へは、演算回路内で命令を実行した結果生じた動作指示を発行することで、周辺回路が動作指示に基づく動作を行うものとする。つまり、ＣＰＵコア等の演算装置は、プログラムを実行したことによりアクセス信号（或いは、制御信号）を生成し、このアクセス信号により周辺回路に動作指示を与える。具体的には、周辺回路は、複数のレジスタを有し、これらのレジスタはアクセス信号により与えられた値を格納し、当該値に応じて周辺回路は各種動作を行う。
【００１４】
まず、図１に実施の形態１にかかる半導体装置１のブロック図を示す。図１に示すように、実施の形態１にかかる半導体装置１は、ＣＰＵシステム１０、内部メモリ２１、プログラム格納部２２、解析サブシステム３０、周辺回路群４０ａ〜４０ｄを有する。この実施の形態１にかかる半導体装置１では、ユーザープログラムを実行するプログラム実行としてＣＰＵコア１１と解析コア３７を有する。そして、ＣＰＵコア１１は主に通常動作モード時にユーザープログラムを実行し、解析コア３７は主に解析モードにおいてユーザープログラムを実行する。このＣＰＵコア１１の動作と解析コア３７の動作とを含む実施の形態１にかかる半導体装置１について以下で詳細に説明する。
【００１５】
内部メモリ２１は、ＣＰＵシステム１０内の第１のＣＰＵコア（例えば、ＣＰＵコア１１）がプログラム実行過程で生じるデータを保持する。また、内部メモリ２１は、解析サブシステム３０から出力されるエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを保持する。
【００１６】
プログラム格納部２２は、ＣＰＵシステム１０と同じ半導体チップ上に形成されたメモリでも良く、ＣＰＵシステム１０とは異なる半導体チップ上に形成されたメモリでも良い。プログラム格納部２２には、ＣＰＵシステム１０で実行されるプログラムが格納される。
【００１７】
ＣＰＵシステム１０は、図１に示す一例においては、第１のＣＰＵコア（例えば、ＣＰＵコア１１）、割込コントローラ１２、内部バス１３を有する。ＣＰＵシステム１０は、ＣＰＵコア１１によりプログラム格納部２２に格納されているプログラムを実行する。実施の形態１にかかる半導体装置１でＣＰＵコア１１が実行するプログラムには、例えば、ユーザープログラムの管理を行うＯＳ（Operating System）、ユーザーが作成したユーザープログラム等様々なプログラムがあるが、以下の説明では、ＣＰＵコア１１がユーザープログラムを実行する例について説明する。
【００１８】
割込コントローラ１２は、解析サブシステム３０内の解析コア３７、或いは、周辺回路群４０ａ〜４０ｄから割り込み要求を受けて、ＣＰＵコア１１に割り込み処理を指示する。ＣＰＵコア１１は、割り込み処理の実行を指示されると、予め設定された例外処理を行い、処理の終了に伴い割込コントローラ１２に割り込み要求のクリアを指示する。
【００１９】
内部バス１３は、半導体装置１内に複数あるバスの１つであり、アドレス信号及びデータ信号を他の回路に与える。アドレス信号は、ＣＰＵコア等のプログラム実行部が出力する動作指示及びデータの宛先となる値を示すものである。この内部バス１３には、内部バス１３ａが含まれる。アドレスデコーダ１３ａは、ＣＰＵコア１１から出力されるアクセスアドレスＡＣＳ＿ａｄｄｒをデコードしてアクセスアドレスＡＣＳ＿ａｄｄｒが示す宛先に与えるアドレス信号を生成する。図１に示す例では、アドレスデコーダ１３ａは、アクセスアドレスＡＣＳ＿ａｄｄｒをデコードしてレジスタアドレス信号ＲＥＧ＿ａｄｄｒ及びモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬを生成する。
【００２０】
解析サブシステム３０は、ＣＰＵコア１１からの命令に従いユーザープログラムに基づく周辺回路群４０ａ−４０ｄの不具合解析を行う。解析サブシステム３０は、解析設定レジスタ３１、比較ユニット３２、第２のＣＰＵコア（例えば、解析コア３７）を少なくとも含む。これらの回路ブロックを含む解析サブシステム３０の詳細な構成は後述する。
【００２１】
ここで、解析コア３７が動作した際のアドレス信号及びデータの経路についてのみ説明する。解析コア３７は、解析サブシステム３０に含まれるプログラム実行部であって、ＣＰＵコア１１と同一の構成を有する。解析コア３７は、周辺回路群４０ａ−４０ｄに対する不具合解析を行う際に、プログラム格納部２２に格納されているユーザープログラムを実行する。そして、解析コア３７がユーザープログラムを実行した際には、解析アドレスＡｎａｌｙｚｅ＿ａｄｄｒ及びデータＤを出力する。この解析アドレスＡｎａｌｙｚｅ＿ａｄｄｒ及びデータＤについては、ＣＰＵシステム１０内の内部バス１３及び解析コア３７を介して周辺回路群４０ａ−４０ｄに送信される。また、周辺回路群４０ａ−４０ｄが解析コア３７から与えられたデータＤに基づき行った処理によって生成したデータＤについては、解析コア３７及び内部バス１３を介して解析コア３７に送信される。
【００２２】
周辺回路群４０ａ−４０ｄ周辺回路群４０ａ−４０ｄは、それぞれが同一回路構成を有する複数の周辺回路をまとめたものである。また、異なる周辺回路群に属する周辺回路は互いに異なる回路構成を有する。周辺回路としては、例えば、コプロセッサ、タイマ、デジタルアナログ変換回路、アナログデジタル変換回路等が考えられる。
【００２３】
実施の形態１にかかる半導体装置１では、アクセスアドレスＡＣＳ＿ａｄｄｒから生成されたモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬに基づき特定の周辺回路が有効される。また、実施の形態１にかかる半導体装置１では、アクセスアドレスＡＣＳ＿ａｄｄｒから生成されたレジスタアドレス信号ＲＥＧ＿ａｄｄｒに基づき有効になった周辺回路の特定のレジスタ（図１中のｒｅｇ）が有効になる。そして、有効になったレジスタにデータＤが格納される。このデータＤには、周辺回路にどのような動作を行うかの指示を与える動作指示と、演算対象の数値とが含まれる。
【００２４】
また、実施の形態１にかかる半導体装置１では、解析サブシステム３０が解析設定レジスタ３１に与えられた解析実行設定値に基づき解析実行設定信号Ａｎａｌｙｚｅ＿ＳＥＴをイネーブル状態とするかディスイネーブル状態とするかを切り替える。イネーブル状態の解析実行設定信号Ａｎａｌｙｚｅ＿ＳＥＴが与えられた周辺回路群では、周辺回路群に含まれる少なくとも２つ以上の周辺回路が同時に有効になる。そして、同時に有効な状態となった周辺回路のレジスタには、等しくデータＤが与えられる。
【００２５】
ここで、実施の形態１にかかる半導体装置１の動作について簡単に説明する。実施の形態１にかかる半導体装置１は、ＣＰＵコア１１によりユーザープログラムを実行する通常動作モードと、解析コア３７によりユーザープログラムを実行して周辺回路の不具合を検証する不具合検証モードと、を有する。
【００２６】
通常動作モードでは、ＣＰＵコア１１がユーザープログラムに含まれる命令を実行した結果に基づき周辺回路に動作指示を発行する。つまり、通常動作モードでは、半導体装置１は、ＣＰＵコア１１が周辺回路を利用しながらユーザープログラムにより実現される機能に関する処理を進める。
【００２７】
一方、不具合解析モードでは、解析コア３７がユーザープログラムに含まれる命令を実行した結果に基づき周辺回路に動作指示を発行する。また、不具合解析モードでは、解析サブシステム３０が解析対象の周辺回路が含まれる周辺回路群に対応する解析実行設定信号Ａｎａｌｙｚｅ＿ＳＥＴをイネーブル状態に切り替えて、解析対象の周辺回路と、解析対象の周辺回路と同一回路構成の複数の周辺回路と、を同じ動作指示で動作させる。そして、不具合解析モードでは、解析サブシステム３０が同一動作指示で動作した複数の周辺回路から得られた処理結果を比較することで周辺回路の不具合を解析する。
【００２８】
続いて、解析サブシステム３０の詳細について説明する。そこで、図２に実施の形態１にかかる解析サブシステム３０のブロック図を示す。図２に示すように、実施の形態１にかかる解析サブシステム３０は、解析設定レジスタ３１、比較ユニット３２、モジュールセレクタ３３、アービタ３４、バッファＲＡＭ３５、ＤＭＡ回路３６、解析コア３７を有する。
【００２９】
解析コア３７は、解析実行設定値の１つとしてＣＰＵコア１１が解析設定レジスタ３１に格納したフェッチアドレスに基づき、解析対象周辺回路群に含まれる比較対象周辺回路を用いてユーザープログラムを実行する。なお、解析対象周辺回路群及び比較対象周辺回路は、解析設定レジスタ３１に格納される解析実行設定値により指定されるものである。また、ＣＰＵコア１１は、フェッチアドレスを解析設定レジスタ３１に格納した場合は、解析コア３７によるユーザープログラムの実行が停止するまでの間ユーザープログラムの実行を停止する、又は、解析対象周辺回路群に含まれない周辺回路を用いてプログラムを実行する。実施の形態１にかかる半導体装置１では、解析コア３７によるユーザープログラムの実行が停止するまでの間ユーザープログラムの実行を停止する例について説明する。
【００３０】
解析設定レジスタ３１は、ＣＰＵコア１１から与えられる解析実行設定信号Ａｎａｌｙｚｅ＿ＳＥＴにより与えられる各種設定値を保存する。具体的には、解析設定レジスタ３１には、解析対象周辺回路設定値と比較対象周辺回路設定値とを少なくとも含む解析実行設定値と、解析コア３７が実行するユーザープログラムの処理開始ポイントを示すスタートフェッチアドレスと、解析コア３７が実行するユーザープログラムの処理終了ポイントを示すエンドフェッチアドレスと、が少なくとも格納される。
【００３１】
ここで、解析対象周辺回路設定値は、周辺回路群４０ａ−４０ｄに含まれる周辺回路のうち不具合解析に用いる解析対象周辺回路が複数個含まれる解析対象周辺回路群を指定する設定値である。比較対象周辺回路設定値は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる比較対象周辺回路を指定する。この比較対象周辺回路は、解析対象となる周辺回路である。
【００３２】
比較ユニット３２は、解析対象周辺回路に入出力されるアドレス及びデータの少なくとも１つを含む解析情報に基づき解析対象周辺回路群に含まれる複数の周辺回路のそれぞれから得られた情報を比較して、異なる値を示すビットの場所を示すエラー情報を出力する。この比較ユニット３２の詳細は後述する。
【００３３】
モジュールセレクタ３３は、解析設定レジスタ４１に解析実行設定値が格納されていない通常動作モードにおいては、第１のＣＰＵコア側から与えられるモジュールアドレス信号に基づき、複数の周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力する。具体的には、モジュールセレクタ３３は、内部バス１３内のアドレスデコーダ１３ａがアクセスアドレスＡＣＳ＿ａｄｄｒから生成するペリフェラルアドレス信号Ｐｅｒｉ＿ａｄｄｒを、各周辺回路を個別に有効化するモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬに変換する。モジュールセレクタ３３は、ペリフェラルアドレス信号Ｐｅｒｉ＿ａｄｄｒからモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬへのアドレス変換処理は、所定のルールでアドレス値の変換を行うデコード処理により行われる。
【００３４】
また、モジュールセレクタ３３は、解析設定レジスタ３１に解析実行設定値が格納されている不具合解析モードにおいては、モジュールアドレス信号によらず、解析対象周辺回路設定値に基づき、解析対象周辺回路群に含まれる少なくとも２つの解析対象周辺回路が動作するように動作指示を与える解析対象選択信号を出力する。実施の形態１にかかるモジュールセレクタ３３は、解析対象周辺回路群に含まれる全ての解析対象周辺回路が動作するように周辺回路を制御する。具体的には、モジュールセレクタ３３は、解析対象周辺回路設定値により指定される複数の周辺回路に対応する解析対象選択信号Ａｎａｌｙｚｅ＿ＳＥＬをディスイネーブル状態からイネーブル状態に切り替える。
【００３５】
アービタ３４は、通常動作モードにおいては、複数の周辺回路に入力するレジスタアドレス信号ＲＥＧ＿ａｄｄｒに基づき複数の周辺回路に入出力されるデータＤの調停を行う。また、アービタ３４は、不具合解析モードにおいては、解析対象周辺回路設定値に基づき、解析対象周辺回路に入出力されるアドレス及びデータの少なくとも１つを含む解析情報を抽出すると共に、比較対象周辺回路設定値に基づき比較対象周辺回路から出力されるデータを上流側（例えば、周辺回路に対する動作指示の発行元であるＣＰＵコア１１及び解析コア３７側）に位置する回路に送信する。より具体的には、アービタ３４は、比較対象周辺回路設定値と解析対象周辺回路設定値に基づき、比較対象周辺回路に対してプログラム実行部（例えば、ＣＰＵコア１１又は解析コア３７）が出力した動作指示を解析対象周辺回路に分配して与える。そして、アービタ３４は、与えられた動作指示に対応して解析対象周辺回路群に含まれる複数の周辺回路から出力されるデータを解析情報として抽出する。また、アービタ３４は、比較対象周辺回路から出力されるデータを動作指示の発行元であるＣＰＵコア１１又は解析コア３７に送信する。
【００３６】
バッファＲＡＭ３５は、比較ユニット３２で生成されたエラー情報を、生成された順番に保持する。ＤＭＡ回路３６は、解析コア３７の指示に従い、バッファＲＡＭ３５に保持されているエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを内部メモリ２１に出力する。
【００３７】
続いて、比較ユニット３２について詳細に説明する。そこで、図３に実施の形態１にかかる比較ユニット３２のブロック図を示す。なお、図３では、比較ユニット３２への情報入力元であるアービタ３４、アービタ３４に解析対象周辺回路設定値及び比較対象周辺回路設定値を与える解析設定レジスタ３１、及び、比較ユニット３２の情報出力先となるバッファＲＡＭ３５も比較ユニット３２と共に示した。
【００３８】
図３に示すように、比較ユニット３２は、リファレンスチャネルレジスタ５０、ターゲットチャネルレジスタ５１０−５１４、コンパレータコア５２、クロックセレクタ５６を有する。リファレンスチャネルレジスタ５０は、比較対象周辺回路に指定された周辺回路に関する解析情報が格納される。ターゲットチャネルレジスタ５１０−５１４は、比較対象周辺回路を除く解析対象周辺回路に関する解析情報がそれぞれ格納される。なお、解析情報には、周辺回路に入出力されるデータと、周辺回路を指定するアドレス情報と、が含まれる。
【００３９】
コンパレータコア５２には、ターゲットチャネルレジスタ５１０−５１４のそれぞれに対応してＸＯＲ回路（図３中の５３０−５３４）、ＡＮＤ回路（図３中の５４０−５４４）、Ｄフリップフロップ回路（図３中の５５０−５５４）が設けられる。なお、ＸＯＲ回路、ＡＮＤ回路及びラッチ回路の接続関係は、対応するターゲットチャネルレジスタ毎に同じである。そこで、以下の説明では、ＸＯＲ回路、ＡＮＤ回路及びＤフリップフロップ回路の接続関係は、ターゲットチャネルレジスタ５１０に対応するもののみ説明する。
【００４０】
ＸＯＲ回路５３０は、ターゲットチャネルレジスタ５１０に格納されたターゲット情報Ｔａｇ０＿ｉｎｆｏとリファレンスチャネルレジスタ５０に格納されたリファレンス情報Ｒｅｆ＿ｉｎｆｏとの排他的論理和演算結果を出力する。つまり、ＸＯＲ回路５３０の出力値は、ターゲット情報Ｔａｇ０＿ｉｎｆｏとリファレンス情報Ｒｅｆ＿ｉｎｆｏとが一致していれば“０”となり、不一致であれば“１”となる。
【００４１】
ＡＮＤ回路５４０は、ＸＯＲ回路５３０の出力値と値“１”との論理積演算結果を出力する。つまり、ＡＮＤ回路５４０は、ＸＯＲ回路５３０の出力値が“１”であれば出力値として“１”を出力し、ＸＯＲ回路５３０の出力値が“０”であれば出力値として“０”を出力する。
【００４２】
Ｄフリップフロップ回路５５０は、ＡＮＤ回路５４０の出力値をクロック信号の立ち上がりエッジに応じて保持する。Ｄフリップフロップ回路５５０の出力値は、エラー情報Ｅｒｒｏｒ＿Ｉｎｆｏとなる。Ｄフリップフロップ回路５５０の動作クロックは、クロックセレクタ５６が周辺回路群４０ａ〜４０ｄに与えられる動作クロックから解析対象周辺回路が含まれる周辺回路群に与えられる動作クロックを選択することで決定される。具体的にはクロックセレクタ５６は、解析設定レジスタ３１に格納される解析対象周辺回路設定値に基づき選択する動作クロックを決定する。つまり、比較ユニット３２は、周辺回路群に与えられる動作クロックのうち解析対象周辺回路群に与えられる動作クロックに基づき動作する。なお、Ｄフリップフロップ回路に代えて二相ラッチ回路を用いることも可能である。
【００４３】
比較ユニット３２は、上記回路構成により、比較対象周辺回路が故障していれば、解析対象周辺回路に対応するエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏがすべて“１”となるエラー情報を出力する。また、比較ユニット３２は、いずれか１つの解析対象周辺回路が故障していれば、故障している解析対象周辺回路に対応するエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏが“１”となり、その他のエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏが“０”となるエラー情報を出力する。
【００４４】
実施の形態１にかかる半導体装置１では、このようなエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを生成して、内部メモリ２１に格納する。そして、解析担当者がこのエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを解析することで、不具合が生じている周辺回路を特定する。なお、生成されたエラー情報Ｅｒｒｏｒ＿ＩｎｆｏをＣＰＵコア１１が解析することで、不具合が生じた周辺回路をＣＰＵコア１１が認識し、後のユーザープログラムの実行で不具合が生じた周辺回路の利用を回避するような処理を行うこともできる。
【００４５】
続いて、実施の形態１にかかる半導体装置１の動作のうち、実施の形態１にかかる半導体装置１において特徴的な動作となる解析モードの動作について説明する。そこで、図４に実施の形態１にかかる半導体装置の解析処理の流れを示すフローチャートを示す。
【００４６】
実施の形態１にかかる半導体装置１は、例えば、周辺回路から異常を通知する割り込み要求が発せられたこと、或いは、意図的に入力される解析モード開始命令が割り込み要求としてＣＰＵコア１１に対して発せられたこと等の事象をトリガとして解析モードを開始する。図４に示すように、実施の形態１にかかる半導体装置１は、解析モードを開始すると、まず、解析サブシステム３０に対して動作条件を設定する第１の解析ステップを実行する（ステップＳ１）。
【００４７】
続いて、解析コア３７を用いてユーザープログラム等の解析に用いる解析プログラムを実行する第２の解析ステップを実施する（ステップＳ２）。その後、ステップＳ２で実行した解析プログラムの実行結果を出力する第３の解析ステップを実施する（ステップＳ３）。
【００４８】
続いて、第１の解析ステップから第３の解析ステップにおける詳細な処理の流れを説明する。図５に実施の形態１にかかる半導体装置の第１の解析ステップの流れを示すフローチャートを示す。
【００４９】
図５に示すように、第１の解析ステップでは、まず、ＣＰＵコア１１が動作を開始する（ステップＳ１０）。その後、ＣＰＵコア１１が内部メモリ又は外部メモリから解析に用いる解析プログラム（例えば、ユーザープログラム）中の命令をフェッチすることで、ユーザープログラムの実行状態となる（ステップＳ１１）。このユーザープログラムには、解析設定レジスタ３１に格納する解析実行設定値を生成する命令が組み込まれているものとする。次いで、ＣＰＵコア１１は、解析対象となる周辺回路群（例えば、解析対象周辺回路群）を示す解析対象周辺回路設定値を解析設定レジスタ３１に格納する（ステップＳ１２）。また、ＣＰＵコア１１は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる周辺回路(比較対象周辺回路)を示す比較対象周辺回路設定値を解析設定レジスタ３１に格納する（ステップＳ１３）。このステップＳ１２、Ｓ１３の動作により、モジュールセレクタ３３が、解析設定レジスタ３１の解析実行設定値を参照し、解析対象周辺回路群に与える解析対象選択信号Ａｎａｌｙｚｅ＿ＳＥＬをイネーブル状態に切り替える（ステップＳ１４）。図１を参照して具体例を説明すると、解析対象周辺回路設定値により指定された周辺回路が周辺回路群４０ａに含まれる周辺回路Ａ０〜Ａ３であった場合、モジュールセレクタ３３は、解析対象選択信号Ａｎａｌｙｚｅ＿ＳＥＬ［０］〜Ａｎａｌｙｚｅ＿ＳＥＬ［３］のうち解析対象選択信号Ａｎａｌｙｚｅ＿ＳＥＬ［０］をイネーブル状態（例えば、ハイレベル）とする。
【００５０】
次いで、ＣＰＵコア１１は、ユーザープログラム中の命令に基づき、解析に用いるユーザープログラムの開始点と終了点を指定するスタートフェッチアドレス及びエンドフェッチアドレスを解析設定レジスタ３１に格納する（ステップＳ１５）。その後、ＣＰＵコア１１は、解析コア３７に起動を指示し（ステップＳ１６）、周辺回路又は解析コア３７からの割込処理又はＤＭＡ回路の動作が終了するまで待機状態に移行する（ステップＳ１７）。
【００５１】
続いて、図６に実施の形態１にかかる半導体装置の第２の解析ステップの流れを示すフローチャートを示す。図６に示すように、実施の形態１にかかる半導体装置１の第２の解析ステップでは、第１の解析ステップのステップＳ１６の解析コア３７に対する起動指示に基づき解析コア３７が動作を開始するところから処理が開始される（ステップＳ２０）。
【００５２】
解析コア３７は、動作を開始すると解析設定レジスタ３１に格納されたスタートフェッチアドレスに基づき内部メモリ２１又はプログラム格納部２２に格納されているユーザープログラムの命令をフェッチすることでユーザープログラムの実行を開始する（ステップＳ２１）。そして、解析コア３７は、ユーザープログラムに基づき比較対象周辺回路に対して動作指示（ユーザープログラム中の命令を実行することで生成される命令）を発行する（ステップＳ２２）。このステップＳ２２で比較対象周辺回路に対して発行された動作指示はアービタ３４により解析対象周辺回路に指定された複数の周辺回路に分配される。
【００５３】
そして、周辺回路が動作指示に従って動作した結果得られる結果を比較ユニット３２により比較する（ステップＳ２３）。このステップＳ２３では、アービタ３４が解析設定レジスタ３１に格納された解析対象周辺回路設定値と比較対象周辺回路設定値とに基づき解析コア３７と解析対象周辺回路群との間でやり取りされる信号を抽出し、比較ユニット３２に与える。
【００５４】
具体的には、解析情報がアドレス信号であった場合、アービタ３４は、比較対象周辺回路設定値に基づき指定される比較対象周辺回路に与えられるアドレス信号を比較対象周辺回路に与えると共にターゲットチャネルレジスタ５１０に格納する。また、アービタ３４は、比較対象周辺回路を除く解析対象周辺回路群に対しても比較対象周辺回路を指定するアドレス信号を与えると共に解析対象周辺回路群に与えられるアドレス信号をターゲットチャネルレジスタ５１１〜５１４に格納する。また、解析情報がデータであった場合、アービタ３４は、比較対象周辺回路設定値に基づき指定される比較対象周辺回路と解析コア３７との間で送受信されるデータが解析コア３７との間で送受信されるようにデータの送受信先を制御すると共にターゲットチャネルレジスタ５１０に格納する。また、アービタ３４は、比較対象周辺回路を除く解析対象周辺回路群に対しても比較対象周辺回路と同じデータを与えると共に解析対象周辺回路群に入出力されるデータをターゲットチャネルレジスタ５１１〜５１４に格納する。
【００５５】
そして、ステップＳ２３の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報が一致ししていると判断された場合（ステップＳ２４のＹＥＳの枝）、解析コア３７はユーザープログラムの実行を再開し、ステップＳ２２からＳ２８の動作を繰り返す（ステップＳ２９）。
【００５６】
一方、ステップＳ２３の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報に他の比較結果と不一致になるビットが存在している判断された場合（ステップＳ２４のＮＯの枝）、解析コア３７は、ユーザープログラムの実行を停止して、割込コントローラ１２に割り込み要求を発行することで、ＣＰＵコア１１に異常の発生を通知する（ステップＳ２５）。次いで、比較ユニット３２は、エラービットの情報をエラー情報Ｅｒｒｏｒ＿ＩｎｆｏとしてバッファＲＡＭ３５に書き込む（ステップＳ２６）。その後、ＣＰＵコア１１が解析コア３７の割り込み要求をクリアすることで、解析コア３７は動作を再開する（ステップＳ２７）。これにより、解析コア３７が動作を再開するため、解析コア３７はユーザープログラムの実行を再開する（ステップＳ２８）。そして、解析コア３７は、ステップＳ２２からＳ２８までの動作をユーザープログラムの実行位置がエンドフェッチアドレスに達するまで継続する（ステップＳ２９）。
【００５７】
ステップＳ２９で、解析コア３７がユーザープログラムを実行する解析処理が終了したと判断されたことに応じて、解析コア３７は、ＤＭＡ回路３６を起動する（ステップＳ３０）。その後、解析コア３７はスリープ状態に移行する（ステップＳ３１）。
【００５８】
続いて、図７に実施の形態１にかかる半導体装置の第３の解析ステップの流れを示すフローチャートを示す。図７に示すように、第３の解析ステップでは、第２の解析ステップのステップＳ３０における解析コア３７の指示に基づきＤＭＡ回路３６を起動する（ステップＳ４１）。そして、ＤＭＡ回路３６は、バッファＲＡＭ３５に格納されている解析結果（例えば、エラー情報Ｅｒｒｏｒ＿Ｉｎｆｏ）を格納された順に内部メモリ２１に転送する（ステップＳ４２）。そして、このエラー情報Ｅｒｒｏｒ＿ＩｎｆｏのバッファＲＡＭ３５から内部メモリ２１への転送処理が完了したことに応じて、ＣＰＵコア１１は待機状態を解除する（ステップＳ４３）。そして、ＣＰＵコア１１は、出力インタフェース回路（不図示）を用いて内部メモリ２１に格納されているエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを外部に出力する（ステップＳ４４）。
【００５９】
上記説明より、実施の形態１にかかる半導体装置１は、解析モードにおいて、１つの比較対象周辺回路に与えるアドレス信号或いはデータを比較対象周辺回路と同じ構成の少なくとも１つの解析対象周辺回路に与え、比較対象周辺回路と解析対象周辺回路とを同じ動作指示で動作させる。そして、実施の形態１にかかる半導体装置１は、同じ動作指示で動作する周辺回路から得られる実行結果を比較することで周辺回路における不具合を解析するためのエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを得る。また、実施の形態１にかかる半導体装置１では、解析モードにおいて周辺回路を動作させる動作指示をユーザープログラムに基づき発行する。これにより、実施の形態１にかかる半導体装置１では、スキャン回路、ＢＩＳＴ（Built In Self-Test）回路等のテストの為の校正を準備することなく、周辺回路で顕現した不具合を解析することができる。
【００６０】
ここで、スキャン回路やＢＩＳＴ回路を使用したテスト手法は、フリップフロップ間の信号伝搬経路中におけるＣＭＯＳトランジスタのスタック故障やメモリセル破壊の診断を行うためのＤＦＴ（Design For Test）パターンをスキャン回路やＢＩＳＴ回路に与えて不具合を解析するものであるため、具体的に故障しているレジスタやメモリのアドレスを特定することは困難である。
【００６１】
他に、テスターを用いて機能評価や量産テストで用いるファンクションパターンを半導体装置に入力し、その挙動によって故障個所の推定、論理の絞り込みを行うテスト手法がある。この場合、既存のファンクションパターンでカバーできる配線や論理の故障である場合、容易に故障解析を行うことはできるが、ファンクションパターンでカバーできておらず、半導体装置の設計工程での論理検証でも動作確認ができていない故障が顕現した場合、故障解析用に新たなテストパターンを作成しなければならない問題が生じる。
【００６２】
また、ＤＦＴパターンやファンクションパターンを増加させることで、回路中の不具合のカバー率の上昇傾向は緩やか、または飽和状態に近づく。カバー率が９０％まで達成できたとして、そこからさらに１％の達成をしようとした場合、解析したい対象となる特定の配線を狙い撃ちにするようなパターンを作成しなければならず、現実的にそのようなパターンを作成することは出来ないという問題が生じる。
【００６３】
しかしながら、実施の形態１にかかる半導体装置１を用いることで、不具合が顕現したユーザープログラムを用いて不具合検証処理を行うことで、テスト回路の追加或いはＤＦＴパターンやファンクションパターンの追加をすることなく、周辺回路における不具合を検証することができる。実施の形態１にかかる半導体装置１を用いることで、テストに要する工数及び時間を大きく短縮することができる。
【００６４】
また、実施の形態１にかかる半導体装置１では、周辺回路のレジスタ単位或いはレジスタ中のビット単位で不具合を検証することができる。これにより、実施の形態１にかかる半導体装置１では、不具合が顕現したレジスタを使用不可の状態にして、ＣＰＵシステム１０におけるプログラムの実行を継続することもできる。
【００６５】
実施の形態２
実施の形態２では、実施の形態１にかかる半導体装置１の解析モード中のＣＰＵコア１１の動作の別の形態について説明する。実施の形態１にかかる半導体装置１では、解析コア３７が解析に用いるユーザープログラムを実行する解析モード中はＣＰＵコア１１が待機状態となりプログラムの実行は行わない。一方、実施の形態２にかかる半導体装置１では、解析モード中にＣＰＵコア１１を待機状態とせずにユーザープログラムの実行を行わせる。なお、実施の形態２にかかる動作を行う場合、実施の形態１にかかる半導体装置１と同じハードウェア構成を用い、ソフトウェアの構成を実施の形態１とは異なる構成とするのみであるので、実施の形態２では半導体装置の符号としては実施の形態１と同じ符号を用いる。
【００６６】
そこで、図８に実施の形態２にかかる半導体装置の解析処理の流れを示すフローチャートを示す。図８に示すように、実施の形態２にかかる半導体装置１では、ステップＳ５０としてＣＰＵコア１１が動作を開始する。そして、ＣＰＵコア１１は、プログラム格納部２２等に格納されているユーザープログラム中の命令をフェッチしながらユーザープログラムを実行する（ステップＳ５１）。このステップＳ５１でのユーザープログラムの実行では、周辺回路を用いるものとする。そして、周辺回路において異常がない限り、ＣＰＵコア１１はユーザープログラムの実行を継続する（ステップＳ５２）。
【００６７】
一方、ＣＰＵコア１１は、ユーザープログラムの実行中に周辺回路で異常が発生したことが割り込み要求により通知された場合、ステップＳ５３の処理を例外処理の１つとして実行する。ステップＳ５３では、異常が発生した周辺回路を含む周辺回路群から解析に用いない周辺回路を除く周辺回路を複数の周辺回路を解析対象周辺回路とする解析対象周辺回路設定値を生成する。なお、解析に用いない周辺回路とは、異常が無いと判断される周辺回路であって、以下の説明では解析除外周辺回路と称す。実施の形態２における解析対象周辺設定値には、１つの周辺回路群に含まれる周辺回路の一部のみが設定される。
【００６８】
次いで、実施の形態２にかかる半導体装置１では、図４で説明した第１の解析ステップから第３の解析ステップを実行するが、第２の解析ステップ及び第３の解析ステップと平行して、ステップＳ５４の処理を行う。ステップＳ５４の処理では、解析除外周辺回路を用いてユーザープログラムの実行を継続する。
【００６９】
また、第３の解析ステップが完了した後に、実施の形態２にかかる半導体装置１は、異常があると判断された周辺回路を利用禁止に設定する（ステップＳ５５）。一方、十の形態２にかかる半導体装置１は、異常がないと判断された周辺回路をユーザープログラムにより利用可能な周辺回路に組み込む（ステップＳ５６）。
【００７０】
上記説明より、実施の形態２にかかる半導体装置１では、比較対象周辺回路が含まれる周辺回路群の一部の周辺回路を解析動作から除外し、除外した周辺回路を用いてユーザープログラムの実行を継続する。また、実施の形態２にかかる半導体装置１では、解析動作により異常が発生していないと判断された周辺回路をユーザープログラムにより利用可能な状態に復帰させると共に、異常のある周辺回路をその後の動作で用いないとすることができる。このような処理を行うことで、実施の形態２にかかる半導体装置１は、半導体装置の動作継続性を高めることができる。
【００７１】
実施の形態３
実施の形態３では、解析サブシステム３０内のモジュールセレクタの別の形態について説明する。そこで、図９に実施の形態３にかかる半導体装置３のブロック図を示し、図１０に実施の形態３にかかる解析サブシステム３０ａのブロック図を示す。
【００７２】
図９に示すように、実施の形態３にかかる半導体装置３は、解析サブシステム３０に代えて解析サブシステム３０ａを有する。図９に示すように、解析サブシステム３０ａは、モジュールセレクタ３３に代えて、モジュールセレクタ３３ｂを有する。このモジュールセレクタ３３とモジュールセレクタ３３ｂとの違いについて、以下で詳細に説明する。
【００７３】
まず、通常動作モード時のモジュールセレクタ３３とモジュールセレクタ３３ｂとの違いについて説明する。モジュールセレクタ３３は、デコード処理により、周辺回路へのアドレス信号を生成する。モジュールセレクタ３３ｂは、アドレス変換処理により周辺回路へのアドレスを生成する。
【００７４】
具体的には、モジュールセレクタ３３は、通常動作モードでは、ＣＰＵコア１１側から与えられるモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬに基づき、複数の記周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力する。一方、モジュールセレクタ３３ｂは、ＣＰＵコア１１側から与えられるモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬをアクセス先の周辺回路毎に定められたシフト量でシフトさせて周辺回路を個別に指定するペリフェラルアドレス信号Ｐｅｒｉ＿ａｄｄｒを生成する。
【００７５】
次いで、解析モード時のモジュールセレクタ３３とモジュールセレクタ３３ｂとの違いについて説明する。モジュールセレクタ３３は、解析モードにおいては、モジュールアドレス信号Ｐｅｒｉ＿ａｄｄｒによらず、解析対象周辺回路群に含まれる全ての解析対象周辺回路を動作状態とする解析対象選択信号を出力する。一方、モジュールセレクタ３３ｂは、解析モードにおいては、ベースアドレス信号となるモジュールアドレス信号Ｐｅｒｉ＿ＳＥＬから解析対象周辺回路群に含まれる全ての解析対象周辺回路に対応する複数のモジュールアドレス信号Ｐｅｒｉ＿ａｄｄｒを出力する。
【００７６】
モジュールセレクタ３３とモジュールセレクタ３３ｂとのいずれを用いるかは、解析サブシステムと周辺回路との間に設けられるバスの回路形式により決定される。そこで、図１１に実施の形態３にかかる解析サブシステムと実施の形態１にかかる解析サブシステムの違いを説明する図を示す。
【００７７】
図１１に示すシステム構成図では、ＣＰＵコア６１、解析コア６２、内部メモリ６３、Ｉ／Ｏインタフェース回路６４、周辺回路６５、６６、内部バス７１、第１のバス（例えば、サブ内部バス７２）、第２のバス（例えば、サブ内部バス７３）、解析サブシステム３０、３０ａによりシステムが構成される。なお、ここで、Ｉ／Ｏインタフェース回路６４には、例えば、ＵＳＢインタフェース回路、車載通信インタフェース回路、無線通信インタフェース等の自半導体装置と他の装置との通信インタフェースが含まれる。また、周辺回路６５、６６には、ＡＤ変換回路、ＤＡ変換回路、タイマ、ＰＷＭ信号生成回路、コプロセッサ等のＣＰＵコアに用いられる特定用途向け回路が含まれる。
【００７８】
内部バス７１には、バスマス他となるＣＰＵコア６１、解析コア６２と、バススレーブとなる内部メモリ６３、Ｉ／Ｏインタフェース回路６４が接続される。また、サブ内部バス７２は、内部バス７１に対するサブ内部バスであり、解析サブシステム３０を介して内部バス７１と接続される。また、サブ内部バス７２にはバススレーブとしてのみ動作する周辺回路６５が複数接続される。サブ内部バス７３は、内部バス７１に対するサブ内部バスであり、解析サブシステム３０ａを介して内部バス７１と接続される。また、サブ内部バス７３には、バススレーブとしての動作とバスマスタとしての動作との両方の動作を切替可能な周辺回路６６が接続される。
【００７９】
また、サブ内部バス７２内には、アドレス信号のデコードを行うアドレスデコーダＤＥＣ＿Ａが設けられ、サブ内部バス７３内には、アドレス信号のデコードを行うアドレスデコーダＤＥＣ＿Ｂが設けられる。サブ内部バス７２、７３はいずれも内部に設けられるアドレスデコーダによりアクセス先とアクセス元との信号の送受信を制御する。また、デコーダＤＥＣ＿Ａ、ＤＥＣ＿Ｂはアドレスの生成方法に違いを有する。そこで、以下でデコーダＤＥＣ＿Ａの動作とデコーダＤＥＣ＿Ｂの動作の違いについて説明する。
【００８０】
まず、図１２に図１１に示した第１のバス（例えば、サブ内部バス７２）のアドレスデコーダの動作を説明する図を示す。図１２に示す例では、サブ内部バス７２にバスマスタとなる周辺回路８１ａ〜８１ｃと、バススレーブとなる周辺回路８３ａ〜８３ｃとが接続される。また、サブ内部バス７２内にはアドレスデコーダ８２ａ〜８２ｃが設けられる。アドレスデコーダ８２ａ〜８２ｃは、バスマスタとなる周辺回路８１ａ〜８１ｃに対応して設けられる。アドレスデコーダ８２ａ〜８２ｃは、入力されるアドレス信号に基づき、アクセス先となる周辺回路８３ａ〜８３ｃのいずれか１つを指定するアドレス信号を生成する。例えば、アドレスデコーダ８２ｃは、周辺回路８３ａ〜８３ｃのいずれに対応するアクセスアドレスも生成可能であるが、周辺回路８１ｃが周辺回路８３ｂを指定したアドレス信号をアドレスデコーダ８２ｃに与えた場合、アドレスデコーダ８２ｃは周辺回路８３ｂを指定したアクセスアドレスを生成する。ここで、解析サブシステム３０は、周辺回路８１ａ〜８１ｃとして機能するものである。
【００８１】
続いて、図１３に図１１に示した第２のバス（例えば、サブ内部バス７３）のアドレスデコーダの動作を説明する図を示す。図１３に示す例では、サブ内部バス７３にバスマスタとバススレーブとを切り替えながら動作可能な周辺回路が接続される。また、図１３に示す例では、サブ内部バス７３を挟んで周辺回路９１ａ〜９１ｃと、周辺回路９３ａ〜９３ｃとが互いに接続される。そして、サブ内部バス７３内にはアドレスデコーダ９２ａ〜９２ｃが設けられる。そして、このアドレスデコーダ９２ａ〜９２ｃには、アクセス元の周辺回路からアドレス信号が入力される。そして、アドレスデコーダ９２ａ〜９３ｃは、アクセス先となる周辺回路に対応するアドレスデコーダのみが入力されたアクセスアドレスのみを通過させる。
【００８２】
図１３に示す例では、周辺回路９１ｃから周辺回路９３ｂにアクセスを行う場合には、周辺回路９１ｃから発せられたアクセスアドレスがアドレスデコーダ９２ａ〜９２ｃに入力され、周辺回路９３ｂに対応するアドレスデコーダ９２ｂのみがアクセスアドレスを通す。また、周辺回路９３ｂから周辺回路９１ｃにアクセスを行う場合には、周辺回路９３ｂから発せられたアクセスアドレスがアドレスデコーダ９２ａ〜９２ｃに入力され、周辺回路９１ｃに対応するアドレスデコーダ９２ｃのみがアクセスアドレスを通す。ここで、解析サブシステム３０ａは、周辺回路９１ａ〜９１ｃとして機能するものである。
【００８３】
解析サブシステム３０ａを用いることで、例えば周辺回路９３ａ〜９３ｃを解析対象周辺回路に設定する場合には、モジュールセレクタ３３ｂにより、周辺回路９３ａ〜９３ｃを指定する複数のアドレスを生成し、この複数のアドレスをそれぞれアドレスデコーダ９２ａ〜９２ｃに与えることができる。
【００８４】
このように、バスの形式には様々な形式があり、モジュールセレクタ３３ｂを有する解析サブシステム３０ａを用いることで、サブ内部バス７２のタイプのみに限られず、サブ内部バス７３のタイプのバスを有するシステムにおいても実施の形態１と同様の解析処理を行うことが可能になる。
【００８５】
実施の形態４
実施の形態４では、実施の形態１にかかる半導体装置１の別の形態である半導体装置４について説明する。そこで、図１４に実施の形態４にかかる半導体装置のブロック図を示す。なお、図１４では、周辺回路群４０ｂ〜４０ｄについての図示を省略した。
【００８６】
図１４に示すように、実施の形態４にかかる半導体装置４は、実施の形態１にかかる半導体装置１に割込アービタ１４を追加してものである。割込アービタ１４は、周辺回路に異常が発生した場合に複数の周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか１つをＣＰＵコア１１に通知する。具体的には、割込アービタ１４は、比較対象周辺回路から発せられた割り込み要求を選択してＣＰＵコア１１に通知する。また、割込アービタ１４から割り込み要求の入力を受けた割込コントローラ１２は、は、解析コア３７に対して周辺回路から割り込み要求が発せられたことを知らせる割込通知信号ＩＮＴ＿ｎｔｆを出力する。
【００８７】
実施の形態１にかかる半導体装置１では、解析モードにおいて、複数の周辺回路を同じ期間に同じ動作指示で動作させる。そのため、例えば、周辺回路の不具合ではなく、ユーザープログラム上の問題に起因して周辺回路で異常が顕現した場合、複数の周辺回路から同時に割り込み要求が発生する。つまり、実施の形態１にかかる半導体装置１では、同時に同じ優先度の複数の割り込み要求が発生する可能性がある。
【００８８】
このように同時に同じ優先度の複数の割り込み要求が発生した場合、ＣＰＵコア１１は、いず割り込み要求に関する割込処理を実行したら良いのかを判断することができず、半導体装置１がプログラム実行状態のまま停止状態となるデッドロックが発生し、解析を行うことが出来なくなる問題がある。
【００８９】
そこで、実施の形態４にかかる半導体装置４では、割込アービタ１４を用いて同時に発生した複数の割り込み要求の調停を行い、比較対象周辺回路から発せられた割り込み要求のみを割込コントローラ１２に出力する。これにより、ＣＰＵコア１１は、比較対象周辺回路に１つの割り込み要求ＩＮＴに応答して例外処理を実施することで割込フラグをクリアすることできる。また、割込コントローラ１２は、割込通知信号ＩＮＴ＿ｎｔｆにより解析コア３７に周辺回路群において割り込み要求が発せられたことを知ることができ、この割込通知信号ＩＮＴ＿ｎｆｔに応じた例外処理を行うことができる。
【００９０】
ここで、解析モード時に割込フラグをクリアする例外処理について説明する。実施の形態４にかかる半導体装置４では、割込通知信号ＩＮＴ＿ｎｔｆが与えられた解析コア３７は、あらかじめプログラム内部に定義されている例外処理を実行することで、比較対象周辺回路の割り込み要求をクリアする。このとき、実施の形態４にかかる半導体装置４では、モジュールセレクタ３３の設定により比較対象周辺回路以外の解析対象周辺回路の割り込み要求をクリアすることができる。また、クリア制御を行う際に割り込み要求の出力インタフェースの状態が正しく変化していないチャンネルが存在した場合は、比較ユニット３２で検出することができる。
【００９１】
また、割込アービタ１４を実装することで、ユーザーモード時にＣＰＵコア１１が割込フラグをクリアするという処理は短縮することが可能で、且つ、割込コントローラ１２のチャンネルの増加を最小限に抑えることが可能になる。
【００９２】
割込アービタ１４を実装することで、実施の形態４にかかる半導体装置４では、比較対象周辺回路から発せられる割り込み要求のみが割込コントローラ１２に通知される。そのため、実施の形態４にかかる半導体装置４では、解析対象周辺回路の割り込み要求を検知することはできないが、解析対象周辺回路で意図しない割り込みが発生した場合、インタフェースが比較ユニット３２によって比較対象周辺回路の割り込み出力と比較されているため、そこで差分が検知されることで差分が発生したことによる割り込み要求が解析サブシステム３０から発生する。
【００９３】
また、割込アービタ１４から通知される割り込み要求と解析サブシステム３０から通知される割り込み要求では、解析サブシステム３０から通知される割り込み要求の方が優先度を高くすることで、割込アービタ１４が解析の妨げになることは無い。
【００９４】
実施の形態５
実施の形態５では、実施の形態１にかかる解析サブシステム３０の別の形態となる解析サブシステム３０ｂについて説明する。そこで、解析サブシステム３０ｂを有する実施の形態５にかかる半導体装置５のブロック図を図１５に示す。また、解析サブシステム３０ｂのブロック図を図１６に示す。
【００９５】
図１５及び図１６に示すように解析サブシステム３０ｂは、解析サブシステム３０から解析コア３７を削除したものである。実施の形態５にかかる半導体装置５では、解析モードにおけるユーザープログラムの実行をＣＰＵコア１１により行う。そこで、図１７から図１８を参照して実施の形態５にかかる半導体装置５の動作を説明する
【００９６】
図１７は、実施の形態５にかかる半導体装置の第１の解析ステップの流れを示すフローチャートである。図１７に示すように、第１の解析ステップでは、まず、ＣＰＵコア１１が動作を開始する（ステップＳ６０）。その後、ＣＰＵコア１１が内部メモリ又は外部メモリから解析に用いる解析プログラム（例えば、ユーザープログラム）中の命令をフェッチすることで、ユーザープログラムの実行状態となる（ステップＳ６１）。このユーザープログラムには、解析設定レジスタ３１に格納する解析実行設定値を生成する命令が組み込まれているものとする。次いで、ＣＰＵコア６１は、解析対象となる周辺回路群（例えば、解析対象周辺回路群）を示す解析対象周辺回路設定値を解析設定レジスタ３１に格納する（ステップＳ６２）。また、ＣＰＵコア１１は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる周辺回路(比較対象周辺回路)を示す比較対象周辺回路設定値を解析設定レジスタ３１に格納する（ステップＳ６３）。このステップＳ６２、Ｓ６３の動作により、モジュールセレクタ３３が、解析設定レジスタ３１の解析実行設定値を参照し、解析対象周辺回路群に与える解析対象選択信号Ａｎａｌｙｚｅ＿ＳＥＬをイネーブル状態に切り替える（ステップＳ６４）。
【００９７】
続いて、図１８に実施の形態５にかかる半導体装置の第２の解析ステップの流れを示すフローチャートを示す。図１８に示すように、実施の形態５にかかる半導体装置１の第２の解析ステップでは、ＣＰＵコア１１が、スタートフェッチアドレスに基づき内部メモリ２１又はプログラム格納部２２に格納されているユーザープログラムの命令をフェッチすることでユーザープログラムの実行を開始し、ユーザープログラムに基づき比較対象周辺回路に対して動作指示を発行する（ステップＳ７０）。
【００９８】
そして、周辺回路が動作指示に従って動作した結果得られる結果を比較ユニット３２により比較する（ステップＳ７１）。このステップＳ７１では、アービタ３４が解析設定レジスタ３１に格納された解析対象周辺回路設定値と比較対象周辺回路設定値とに基づき解析コア３７と解析対象周辺回路群との間でやり取りされる信号を抽出し、比較ユニット３２に与える。
【００９９】
そして、ステップＳ７１の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報が一致ししていると判断された場合（ステップＳ７２のＹＥＳの枝）、解析コア３７はユーザープログラムの実行を再開し（ステップＳ７６）、ステップＳ７１からＳ７６の動作を繰り返す（ステップＳ７７）。
【０１００】
一方、ステップＳ７１の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報に他の比較結果と不一致になるビットが存在している判断された場合（ステップＳ７２のＮＯの枝）、比較ユニット３２は、割込コントローラ１２に割り込み要求を発行することで、ＣＰＵコア１１に異常の発生を通知する（ステップＳ７３）。次いで、比較ユニット３２は、エラービットの情報をエラー情報Ｅｒｒｏｒ＿ＩｎｆｏとしてバッファＲＡＭ３５に書き込む（ステップＳ７４）。その後、ＣＰＵコア１１が比較ユニット３２から通知された割り込み要求をクリアした後に、ＣＰＵコア１１は動作を再開する（ステップＳ７６）。これにより、ＣＰＵコア１１が動作を再開し、ユーザープログラムの実行を再開する（ステップＳ７６）。そして、ＣＰＵコア１１は、ステップＳ７１からＳ７６までの動作をユーザープログラムの実行位置がエンドフェッチアドレスに達するまで継続する（ステップＳ７７）。
【０１０１】
ステップＳ７７で、ＣＰＵコア１１がユーザープログラムを実行する解析処理が終了したと判断されたことに応じて、ＣＰＵコア１１は、ＤＭＡ回路３６を起動する（ステップＳ７８）。
【０１０２】
続いて、図１９に実施の形態１にかかる半導体装置の第３の解析ステップの流れを示すフローチャートを示す。図７に示すように、第３の解析ステップでは、第２の解析ステップのステップＳ３０における解析コア３７の指示に基づきＤＭＡ回路３６を起動する（ステップＳ４１）。そして、ＤＭＡ回路３６は、バッファＲＡＭ３５に格納されている解析結果（例えば、エラー情報Ｅｒｒｏｒ＿Ｉｎｆｏ）を格納された順に内部メモリ２１に転送する（ステップＳ４２）。そして、このエラー情報Ｅｒｒｏｒ＿ＩｎｆｏのバッファＲＡＭ３５から内部メモリ２１への転送処理が完了したことに応じて、ＣＰＵコア１１は待機状態を解除する（ステップＳ４３）。そして、ＣＰＵコア１１は、出力インタフェース回路（不図示）を用いて内部メモリ２１に格納されているエラー情報Ｅｒｒｏｒ＿Ｉｎｆｏを外部に出力する（ステップＳ４４）。
【０１０３】
上記説明より、解析コアを別途も設けずに解析モード時にＣＰＵコア１１がユーザープログラムを実行することでも実施の形態１と同様な周辺回路群の不具合解析を行うことできる。解析コア３７は、ＣＰＵコア１１と同じ回路構成を有する回路であり、チップ上の専有面積も大きい。そのため、解析コア３７を設けないことでチップ面積を小さくすることができる。
【０１０４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１０５】
１、３〜５  半導体装置
１０  ＣＰＵシステム
１１  ＣＰＵコア
１２  割込コントローラ
１３  内部バス
１３ａ  アドレスデコーダ
１４  割込アービタ
２１  内部メモリ
２２  プログラム格納部
３０  解析サブシステム
３１  解析設定レジスタ
３２  比較ユニット
３３  モジュールセレクタ
３４  アービタ
３５  バッファＲＡＭ
３６  ＤＭＡ回路
３７  解析コア
４０  周辺回路群
５０  リファレンスチャネルレジスタ
５１０〜５１４  ターゲットチャネルレジスタ
５２  コンパレータコア
５３０〜５３４  ＸＯＲ回路
５４０〜５４４  ＡＮＤ回路
５５０〜５５４  Ｄフリップフロップ回路
５６  クロックセレクタ
６１  ＣＰＵコア
６２  解析コア
６３  内部メモリ
６４  Ｉ／Ｏインタフェース回路
６５、６６、８１、８３、９１、９３  周辺回路
７１  内部バス
７２、７３  サブ内部バス
８２、９２  アドレスデコーダ
ＡＣＳ＿ａｄｄｒ  アクセスアドレス
Ｄ  データ
ＲＥＧ＿ａｄｄｒ  レジスタアドレス信号
Ｐｅｒｉ＿ＳＥＬ  モジュールアドレス信号
Ｐｅｒｉ＿ａｄｄｒ  ペリフェラルアドレス信号
Ａｎａｌｙｚｅ＿ＳＥＴ  解析実行設定信号
Ａｎａｌｙｚｅ＿ＳＥＬ  解析対象選択信号
ＩＮＴ  割り込み要求
Ｒｅｆ＿ｉｎｆｏ  リファレンス情報
Ｔａｇ０＿ｉｎｆｏ  ターゲット情報
Ｅｒｒｏｒ＿ｉｎｆｏエラー情報
Ａｎａｌｙｚｅ＿ａｄｄｒ  解析アドレス
【図１】
2019012319.tif 000003
【図２】
2019012319.tif 000004
【図３】
2019012319.tif 000005
【図４】
2019012319.tif 000006
【図５】
2019012319.tif 000007
【図６】
2019012319.tif 000008
【図７】
2019012319.tif 000009
【図８】
2019012319.tif 000010
【図９】
2019012319.tif 000011
【図１０】
2019012319.tif 000012
【図１１】
2019012319.tif 000013
【図１２】
2019012319.tif 000014
【図１３】
2019012319.tif 000015
【図１４】
2019012319.tif 000016
【図１５】
2019012319.tif 000017
【図１６】
2019012319.tif 000018
【図１７】
2019012319.tif 000019
【図１８】
2019012319.tif 000020
【図１９】
2019012319.tif 000021