(58)【調査した分野】(Int.Cl.,DB名)
前記比較ユニットは、プログラム実行部から出力される動作指示の宛先を示すアドレス信号であって、前記解析対象周辺回路群に含まれる複数の周辺回路のそれぞれに与えられる前記アドレス信号を比較して、異なるアドレス値を示すビット値の場所を示すアドレスエラー情報を前記エラー情報として出力する請求項1に記載の半導体装置。
前記比較ユニットは、前記周辺回路群に与えられる動作クロックのうち前記解析対象周辺回路群に与えられる動作クロックに基づき動作する請求項1に記載の半導体装置。
前記プログラム実行部は、前記解析設定レジスタに前記解析対象周辺回路設定値、比較対象周辺回路設定値及び前記ユーザープログラム中の命令のうち実行対象の命令の場所を示すフェッチアドレスを少なくとも含む前記解析実行設定値を出力するCPUコアと、
前記CPUコアが前記解析設定レジスタに格納した前記解析実行設定値に含まれる前記フェッチアドレスに基づき前記ユーザープログラムを実行する解析コアと、を有する請求項1に記載の半導体装置。
前記CPUコアは、前記解析実行設定値に基づき前記解析コアが前記ユーザープログラムを実行する解析モード期間中、前記解析コアによる前記ユーザープログラムの実行が停止するまでの間前記ユーザープログラムの実行を停止する、又は、前記ユーザープログラムを実行して前記解析対象周辺回路群に含まれない周辺回路を動作させる請求項4に記載の半導体装置。
前記周辺回路に異常が発生した場合に複数の前記周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか1つを前記プログラム実行部に通知する割込アービタを有する請求項1に記載の半導体装置。
前記比較ユニットは、プログラム実行部から出力される動作指示の宛先を示すアドレス信号であって、前記解析対象周辺回路群に含まれる複数の前記周辺回路のそれぞれに与えられるアドレス信号を比較して、異なるアドレス値を示すビット値の場所を示すアドレスエラー情報を前記エラー情報として出力する請求項9に記載の半導体装置。
前記比較ユニットは、前記周辺回路群に与えられる動作クロックのうち前記解析対象周辺回路群に与えられる動作クロックに基づき動作する請求項9に記載の半導体装置。
前記周辺回路に異常が発生した場合に複数の前記周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか1つを前記第1のCPUコアに通知する割込アービタを有する請求項9に記載の半導体装置。
【発明を実施するための形態】
【0011】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0012】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0013】
また、実施の形態1にかかる半導体装置1では、CPUコア、解析コア等の演算装置においてプログラムを実行するが、以下の説明では、プログラム中に記述された命令を演算装置内のプログラムカウンタのカウント値であるフェッチアドレスに従ってフェッチ(或いは読み出し処理)し、フェッチした命令を実行する処理を「プログラムを実行する」と表現する。また、演算装置から周辺回路へは、演算回路内で命令を実行した結果生じた動作指示を発行することで、周辺回路が動作指示に基づく動作を行うものとする。つまり、CPUコア等の演算装置は、プログラムを実行したことによりアクセス信号(或いは、制御信号)を生成し、このアクセス信号により周辺回路に動作指示を与える。具体的には、周辺回路は、複数のレジスタを有し、これらのレジスタはアクセス信号により与えられた値を格納し、当該値に応じて周辺回路は各種動作を行う。
【0014】
まず、
図1に実施の形態1にかかる半導体装置1のブロック図を示す。
図1に示すように、実施の形態1にかかる半導体装置1は、CPUシステム10、内部メモリ21、プログラム格納部22、解析サブシステム30、周辺回路群40a〜40dを有する。この実施の形態1にかかる半導体装置1では、ユーザープログラムを実行するプログラム実行としてCPUコア11と解析コア37を有する。そして、CPUコア11は主に通常動作モード時にユーザープログラムを実行し、解析コア37は主に解析モードにおいてユーザープログラムを実行する。このCPUコア11の動作と解析コア37の動作とを含む実施の形態1にかかる半導体装置1について以下で詳細に説明する。
【0015】
内部メモリ21は、CPUシステム10内の第1のCPUコア(例えば、CPUコア11)がプログラム実行過程で生じるデータを保持する。また、内部メモリ21は、解析サブシステム30から出力されるエラー情報Error_Infoを保持する。
【0016】
プログラム格納部22は、CPUシステム10と同じ半導体チップ上に形成されたメモリでも良く、CPUシステム10とは異なる半導体チップ上に形成されたメモリでも良い。プログラム格納部22には、CPUシステム10で実行されるプログラムが格納される。
【0017】
CPUシステム10は、
図1に示す一例においては、第1のCPUコア(例えば、CPUコア11)、割込コントローラ12、内部バス13を有する。CPUシステム10は、CPUコア11によりプログラム格納部22に格納されているプログラムを実行する。実施の形態1にかかる半導体装置1でCPUコア11が実行するプログラムには、例えば、ユーザープログラムの管理を行うOS(Operating System)、ユーザーが作成したユーザープログラム等様々なプログラムがあるが、以下の説明では、CPUコア11がユーザープログラムを実行する例について説明する。
【0018】
割込コントローラ12は、解析サブシステム30内の解析コア37、或いは、周辺回路群40a〜40dから割り込み要求を受けて、CPUコア11に割り込み処理を指示する。CPUコア11は、割り込み処理の実行を指示されると、予め設定された例外処理を行い、処理の終了に伴い割込コントローラ12に割り込み要求のクリアを指示する。
【0019】
内部バス13は、半導体装置1内に複数あるバスの1つであり、アドレス信号及びデータ信号を他の回路に与える。アドレス信号は、CPUコア等のプログラム実行部が出力する動作指示及びデータの宛先となる値を示すものである。この内部バス13には、内部バス13aが含まれる。アドレスデコーダ13aは、CPUコア11から出力されるアクセスアドレスACS_addrをデコードしてアクセスアドレスACS_addrが示す宛先に与えるアドレス信号を生成する。
図1に示す例では、アドレスデコーダ13aは、アクセスアドレスACS_addrをデコードしてレジスタアドレス信号REG_addr及びモジュールアドレス信号Peri_SELを生成する。
【0020】
解析サブシステム30は、CPUコア11からの命令に従いユーザープログラムに基づく周辺回路群40a−40dの不具合解析を行う。解析サブシステム30は、解析設定レジスタ31、比較ユニット32、第2のCPUコア(例えば、解析コア37)を少なくとも含む。これらの回路ブロックを含む解析サブシステム30の詳細な構成は後述する。
【0021】
ここで、解析コア37が動作した際のアドレス信号及びデータの経路についてのみ説明する。解析コア37は、解析サブシステム30に含まれるプログラム実行部であって、CPUコア11と同一の構成を有する。解析コア37は、周辺回路群40a−40dに対する不具合解析を行う際に、プログラム格納部22に格納されているユーザープログラムを実行する。そして、解析コア37がユーザープログラムを実行した際には、解析アドレスAnalyze_addr及びデータDを出力する。この解析アドレスAnalyze_addr及びデータDについては、CPUシステム10内の内部バス13及び解析コア37を介して周辺回路群40a−40dに送信される。また、周辺回路群40a−40dが解析コア37から与えられたデータDに基づき行った処理によって生成したデータDについては、解析コア37及び内部バス13を介して解析コア37に送信される。
【0022】
周辺回路群40a−40d周辺回路群40a−40dは、それぞれが同一回路構成を有する複数の周辺回路をまとめたものである。また、異なる周辺回路群に属する周辺回路は互いに異なる回路構成を有する。周辺回路としては、例えば、コプロセッサ、タイマ、デジタルアナログ変換回路、アナログデジタル変換回路等が考えられる。
【0023】
実施の形態1にかかる半導体装置1では、アクセスアドレスACS_addrから生成されたモジュールアドレス信号Peri_SELに基づき特定の周辺回路が有効される。また、実施の形態1にかかる半導体装置1では、アクセスアドレスACS_addrから生成されたレジスタアドレス信号REG_addrに基づき有効になった周辺回路の特定のレジスタ(
図1中のreg)が有効になる。そして、有効になったレジスタにデータDが格納される。このデータDには、周辺回路にどのような動作を行うかの指示を与える動作指示と、演算対象の数値とが含まれる。
【0024】
また、実施の形態1にかかる半導体装置1では、解析サブシステム30が解析設定レジスタ31に与えられた解析実行設定値に基づき解析実行設定信号Analyze_SETをイネーブル状態とするかディスイネーブル状態とするかを切り替える。イネーブル状態の解析実行設定信号Analyze_SETが与えられた周辺回路群では、周辺回路群に含まれる少なくとも2つ以上の周辺回路が同時に有効になる。そして、同時に有効な状態となった周辺回路のレジスタには、等しくデータDが与えられる。
【0025】
ここで、実施の形態1にかかる半導体装置1の動作について簡単に説明する。実施の形態1にかかる半導体装置1は、CPUコア11によりユーザープログラムを実行する通常動作モードと、解析コア37によりユーザープログラムを実行して周辺回路の不具合を検証する不具合検証モードと、を有する。
【0026】
通常動作モードでは、CPUコア11がユーザープログラムに含まれる命令を実行した結果に基づき周辺回路に動作指示を発行する。つまり、通常動作モードでは、半導体装置1は、CPUコア11が周辺回路を利用しながらユーザープログラムにより実現される機能に関する処理を進める。
【0027】
一方、不具合解析モードでは、解析コア37がユーザープログラムに含まれる命令を実行した結果に基づき周辺回路に動作指示を発行する。また、不具合解析モードでは、解析サブシステム30が解析対象の周辺回路が含まれる周辺回路群に対応する解析実行設定信号Analyze_SETをイネーブル状態に切り替えて、解析対象の周辺回路と、解析対象の周辺回路と同一回路構成の複数の周辺回路と、を同じ動作指示で動作させる。そして、不具合解析モードでは、解析サブシステム30が同一動作指示で動作した複数の周辺回路から得られた処理結果を比較することで周辺回路の不具合を解析する。
【0028】
続いて、解析サブシステム30の詳細について説明する。そこで、
図2に実施の形態1にかかる解析サブシステム30のブロック図を示す。
図2に示すように、実施の形態1にかかる解析サブシステム30は、解析設定レジスタ31、比較ユニット32、モジュールセレクタ33、アービタ34、バッファRAM35、DMA回路36、解析コア37を有する。
【0029】
解析コア37は、解析実行設定値の1つとしてCPUコア11が解析設定レジスタ31に格納したフェッチアドレスに基づき、解析対象周辺回路群に含まれる比較対象周辺回路を用いてユーザープログラムを実行する。なお、解析対象周辺回路群及び比較対象周辺回路は、解析設定レジスタ31に格納される解析実行設定値により指定されるものである。また、CPUコア11は、フェッチアドレスを解析設定レジスタ31に格納した場合は、解析コア37によるユーザープログラムの実行が停止するまでの間ユーザープログラムの実行を停止する、又は、解析対象周辺回路群に含まれない周辺回路を用いてプログラムを実行する。実施の形態1にかかる半導体装置1では、解析コア37によるユーザープログラムの実行が停止するまでの間ユーザープログラムの実行を停止する例について説明する。
【0030】
解析設定レジスタ31は、CPUコア11から与えられる解析実行設定信号Analyze_SETにより与えられる各種設定値を保存する。具体的には、解析設定レジスタ31には、解析対象周辺回路設定値と比較対象周辺回路設定値とを少なくとも含む解析実行設定値と、解析コア37が実行するユーザープログラムの処理開始ポイントを示すスタートフェッチアドレスと、解析コア37が実行するユーザープログラムの処理終了ポイントを示すエンドフェッチアドレスと、が少なくとも格納される。
【0031】
ここで、解析対象周辺回路設定値は、周辺回路群40a−40dに含まれる周辺回路のうち不具合解析に用いる解析対象周辺回路が複数個含まれる解析対象周辺回路群を指定する設定値である。比較対象周辺回路設定値は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる比較対象周辺回路を指定する。この比較対象周辺回路は、解析対象となる周辺回路である。
【0032】
比較ユニット32は、解析対象周辺回路に入出力されるアドレス及びデータの少なくとも1つを含む解析情報に基づき解析対象周辺回路群に含まれる複数の周辺回路のそれぞれから得られた情報を比較して、異なる値を示すビットの場所を示すエラー情報を出力する。この比較ユニット32の詳細は後述する。
【0033】
モジュールセレクタ33は、解析設定レジスタ41に解析実行設定値が格納されていない通常動作モードにおいては、第1のCPUコア側から与えられるモジュールアドレス信号に基づき、複数の周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力する。具体的には、モジュールセレクタ33は、内部バス13内のアドレスデコーダ13aがアクセスアドレスACS_addrから生成するペリフェラルアドレス信号Peri_addrを、各周辺回路を個別に有効化するモジュールアドレス信号Peri_SELに変換する。モジュールセレクタ33は、ペリフェラルアドレス信号Peri_addrからモジュールアドレス信号Peri_SELへのアドレス変換処理は、所定のルールでアドレス値の変換を行うデコード処理により行われる。
【0034】
また、モジュールセレクタ33は、解析設定レジスタ31に解析実行設定値が格納されている不具合解析モードにおいては、モジュールアドレス信号によらず、解析対象周辺回路設定値に基づき、解析対象周辺回路群に含まれる少なくとも2つの解析対象周辺回路が動作するように動作指示を与える解析対象選択信号を出力する。実施の形態1にかかるモジュールセレクタ33は、解析対象周辺回路群に含まれる全ての解析対象周辺回路が動作するように周辺回路を制御する。具体的には、モジュールセレクタ33は、解析対象周辺回路設定値により指定される複数の周辺回路に対応する解析対象選択信号Analyze_SELをディスイネーブル状態からイネーブル状態に切り替える。
【0035】
アービタ34は、通常動作モードにおいては、複数の周辺回路に入力するレジスタアドレス信号REG_addrに基づき複数の周辺回路に入出力されるデータDの調停を行う。また、アービタ34は、不具合解析モードにおいては、解析対象周辺回路設定値に基づき、解析対象周辺回路に入出力されるアドレス及びデータの少なくとも1つを含む解析情報を抽出すると共に、比較対象周辺回路設定値に基づき比較対象周辺回路から出力されるデータを上流側(例えば、周辺回路に対する動作指示の発行元であるCPUコア11及び解析コア37側)に位置する回路に送信する。より具体的には、アービタ34は、比較対象周辺回路設定値と解析対象周辺回路設定値に基づき、比較対象周辺回路に対してプログラム実行部(例えば、CPUコア11又は解析コア37)が出力した動作指示を解析対象周辺回路に分配して与える。そして、アービタ34は、与えられた動作指示に対応して解析対象周辺回路群に含まれる複数の周辺回路から出力されるデータを解析情報として抽出する。また、アービタ34は、比較対象周辺回路から出力されるデータを動作指示の発行元であるCPUコア11又は解析コア37に送信する。
【0036】
バッファRAM35は、比較ユニット32で生成されたエラー情報を、生成された順番に保持する。DMA回路36は、解析コア37の指示に従い、バッファRAM35に保持されているエラー情報Error_Infoを内部メモリ21に出力する。
【0037】
続いて、比較ユニット32について詳細に説明する。そこで、
図3に実施の形態1にかかる比較ユニット32のブロック図を示す。なお、
図3では、比較ユニット32への情報入力元であるアービタ34、アービタ34に解析対象周辺回路設定値及び比較対象周辺回路設定値を与える解析設定レジスタ31、及び、比較ユニット32の情報出力先となるバッファRAM35も比較ユニット32と共に示した。
【0038】
図3に示すように、比較ユニット32は、リファレンスチャネルレジスタ50、ターゲットチャネルレジスタ510−514、コンパレータコア52、クロックセレクタ56を有する。リファレンスチャネルレジスタ50は、比較対象周辺回路に指定された周辺回路に関する解析情報が格納される。ターゲットチャネルレジスタ510−514は、比較対象周辺回路を除く解析対象周辺回路に関する解析情報がそれぞれ格納される。なお、解析情報には、周辺回路に入出力されるデータと、周辺回路を指定するアドレス情報と、が含まれる。
【0039】
コンパレータコア52には、ターゲットチャネルレジスタ510−514のそれぞれに対応してXOR回路(
図3中の530−534)、AND回路(
図3中の540−544)、Dフリップフロップ回路(
図3中の550−554)が設けられる。なお、XOR回路、AND回路及びラッチ回路の接続関係は、対応するターゲットチャネルレジスタ毎に同じである。そこで、以下の説明では、XOR回路、AND回路及びDフリップフロップ回路の接続関係は、ターゲットチャネルレジスタ510に対応するもののみ説明する。
【0040】
XOR回路530は、ターゲットチャネルレジスタ510に格納されたターゲット情報Tag0_infoとリファレンスチャネルレジスタ50に格納されたリファレンス情報Ref_infoとの排他的論理和演算結果を出力する。つまり、XOR回路530の出力値は、ターゲット情報Tag0_infoとリファレンス情報Ref_infoとが一致していれば“0”となり、不一致であれば“1”となる。
【0041】
AND回路540は、XOR回路530の出力値と値“1”との論理積演算結果を出力する。つまり、AND回路540は、XOR回路530の出力値が“1”であれば出力値として“1”を出力し、XOR回路530の出力値が“0”であれば出力値として“0”を出力する。
【0042】
Dフリップフロップ回路550は、AND回路540の出力値をクロック信号の立ち上がりエッジに応じて保持する。Dフリップフロップ回路550の出力値は、エラー情報Error_Infoとなる。Dフリップフロップ回路550の動作クロックは、クロックセレクタ56が周辺回路群40a〜40dに与えられる動作クロックから解析対象周辺回路が含まれる周辺回路群に与えられる動作クロックを選択することで決定される。具体的にはクロックセレクタ56は、解析設定レジスタ31に格納される解析対象周辺回路設定値に基づき選択する動作クロックを決定する。つまり、比較ユニット32は、周辺回路群に与えられる動作クロックのうち解析対象周辺回路群に与えられる動作クロックに基づき動作する。なお、Dフリップフロップ回路に代えて二相ラッチ回路を用いることも可能である。
【0043】
比較ユニット32は、上記回路構成により、比較対象周辺回路が故障していれば、解析対象周辺回路に対応するエラー情報Error_Infoがすべて“1”となるエラー情報を出力する。また、比較ユニット32は、いずれか1つの解析対象周辺回路が故障していれば、故障している解析対象周辺回路に対応するエラー情報Error_Infoが“1”となり、その他のエラー情報Error_Infoが“0”となるエラー情報を出力する。
【0044】
実施の形態1にかかる半導体装置1では、このようなエラー情報Error_Infoを生成して、内部メモリ21に格納する。そして、解析担当者がこのエラー情報Error_Infoを解析することで、不具合が生じている周辺回路を特定する。なお、生成されたエラー情報Error_InfoをCPUコア11が解析することで、不具合が生じた周辺回路をCPUコア11が認識し、後のユーザープログラムの実行で不具合が生じた周辺回路の利用を回避するような処理を行うこともできる。
【0045】
続いて、実施の形態1にかかる半導体装置1の動作のうち、実施の形態1にかかる半導体装置1において特徴的な動作となる解析モードの動作について説明する。そこで、
図4に実施の形態1にかかる半導体装置の解析処理の流れを示すフローチャートを示す。
【0046】
実施の形態1にかかる半導体装置1は、例えば、周辺回路から異常を通知する割り込み要求が発せられたこと、或いは、意図的に入力される解析モード開始命令が割り込み要求としてCPUコア11に対して発せられたこと等の事象をトリガとして解析モードを開始する。
図4に示すように、実施の形態1にかかる半導体装置1は、解析モードを開始すると、まず、解析サブシステム30に対して動作条件を設定する第1の解析ステップを実行する(ステップS1)。
【0047】
続いて、解析コア37を用いてユーザープログラム等の解析に用いる解析プログラムを実行する第2の解析ステップを実施する(ステップS2)。その後、ステップS2で実行した解析プログラムの実行結果を出力する第3の解析ステップを実施する(ステップS3)。
【0048】
続いて、第1の解析ステップから第3の解析ステップにおける詳細な処理の流れを説明する。
図5に実施の形態1にかかる半導体装置の第1の解析ステップの流れを示すフローチャートを示す。
【0049】
図5に示すように、第1の解析ステップでは、まず、CPUコア11が動作を開始する(ステップS10)。その後、CPUコア11が内部メモリ又は外部メモリから解析に用いる解析プログラム(例えば、ユーザープログラム)中の命令をフェッチすることで、ユーザープログラムの実行状態となる(ステップS11)。このユーザープログラムには、解析設定レジスタ31に格納する解析実行設定値を生成する命令が組み込まれているものとする。次いで、CPUコア11は、解析対象となる周辺回路群(例えば、解析対象周辺回路群)を示す解析対象周辺回路設定値を解析設定レジスタ31に格納する(ステップS12)。また、CPUコア11は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる周辺回路(比較対象周辺回路)を示す比較対象周辺回路設定値を解析設定レジスタ31に格納する(ステップS13)。このステップS12、S13の動作により、モジュールセレクタ33が、解析設定レジスタ31の解析実行設定値を参照し、解析対象周辺回路群に与える解析対象選択信号Analyze_SELをイネーブル状態に切り替える(ステップS14)。
図1を参照して具体例を説明すると、解析対象周辺回路設定値により指定された周辺回路が周辺回路群40aに含まれる周辺回路A0〜A3であった場合、モジュールセレクタ33は、解析対象選択信号Analyze_SEL[0]〜Analyze_SEL[3]のうち解析対象選択信号Analyze_SEL[0]をイネーブル状態(例えば、ハイレベル)とする。
【0050】
次いで、CPUコア11は、ユーザープログラム中の命令に基づき、解析に用いるユーザープログラムの開始点と終了点を指定するスタートフェッチアドレス及びエンドフェッチアドレスを解析設定レジスタ31に格納する(ステップS15)。その後、CPUコア11は、解析コア37に起動を指示し(ステップS16)、周辺回路又は解析コア37からの割込処理又はDMA回路の動作が終了するまで待機状態に移行する(ステップS17)。
【0051】
続いて、
図6に実施の形態1にかかる半導体装置の第2の解析ステップの流れを示すフローチャートを示す。
図6に示すように、実施の形態1にかかる半導体装置1の第2の解析ステップでは、第1の解析ステップのステップS16の解析コア37に対する起動指示に基づき解析コア37が動作を開始するところから処理が開始される(ステップS20)。
【0052】
解析コア37は、動作を開始すると解析設定レジスタ31に格納されたスタートフェッチアドレスに基づき内部メモリ21又はプログラム格納部22に格納されているユーザープログラムの命令をフェッチすることでユーザープログラムの実行を開始する(ステップS21)。そして、解析コア37は、ユーザープログラムに基づき比較対象周辺回路に対して動作指示(ユーザープログラム中の命令を実行することで生成される命令)を発行する(ステップS22)。このステップS22で比較対象周辺回路に対して発行された動作指示はアービタ34により解析対象周辺回路に指定された複数の周辺回路に分配される。
【0053】
そして、周辺回路が動作指示に従って動作した結果得られる結果を比較ユニット32により比較する(ステップS23)。このステップS23では、アービタ34が解析設定レジスタ31に格納された解析対象周辺回路設定値と比較対象周辺回路設定値とに基づき解析コア37と解析対象周辺回路群との間でやり取りされる信号を抽出し、比較ユニット32に与える。
【0054】
具体的には、解析情報がアドレス信号であった場合、アービタ34は、比較対象周辺回路設定値に基づき指定される比較対象周辺回路に与えられるアドレス信号を比較対象周辺回路に与えると共にターゲットチャネルレジスタ510に格納する。また、アービタ34は、比較対象周辺回路を除く解析対象周辺回路群に対しても比較対象周辺回路を指定するアドレス信号を与えると共に解析対象周辺回路群に与えられるアドレス信号をターゲットチャネルレジスタ511〜514に格納する。また、解析情報がデータであった場合、アービタ34は、比較対象周辺回路設定値に基づき指定される比較対象周辺回路と解析コア37との間で送受信されるデータが解析コア37との間で送受信されるようにデータの送受信先を制御すると共にターゲットチャネルレジスタ510に格納する。また、アービタ34は、比較対象周辺回路を除く解析対象周辺回路群に対しても比較対象周辺回路と同じデータを与えると共に解析対象周辺回路群に入出力されるデータをターゲットチャネルレジスタ511〜514に格納する。
【0055】
そして、ステップS23の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報が一致ししていると判断された場合(ステップS24のYESの枝)、解析コア37はユーザープログラムの実行を再開し、ステップS22からS28の動作を繰り返す(ステップS29)。
【0056】
一方、ステップS23の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報に他の比較結果と不一致になるビットが存在している判断された場合(ステップS24のNOの枝)、解析コア37は、ユーザープログラムの実行を停止して、割込コントローラ12に割り込み要求を発行することで、CPUコア11に異常の発生を通知する(ステップS25)。次いで、比較ユニット32は、エラービットの情報をエラー情報Error_InfoとしてバッファRAM35に書き込む(ステップS26)。その後、CPUコア11が解析コア37の割り込み要求をクリアすることで、解析コア37は動作を再開する(ステップS27)。これにより、解析コア37が動作を再開するため、解析コア37はユーザープログラムの実行を再開する(ステップS28)。そして、解析コア37は、ステップS22からS28までの動作をユーザープログラムの実行位置がエンドフェッチアドレスに達するまで継続する(ステップS29)。
【0057】
ステップS29で、解析コア37がユーザープログラムを実行する解析処理が終了したと判断されたことに応じて、解析コア37は、DMA回路36を起動する(ステップS30)。その後、解析コア37はスリープ状態に移行する(ステップS31)。
【0058】
続いて、
図7に実施の形態1にかかる半導体装置の第3の解析ステップの流れを示すフローチャートを示す。
図7に示すように、第3の解析ステップでは、第2の解析ステップのステップS30における解析コア37の指示に基づきDMA回路36を起動する(ステップS41)。そして、DMA回路36は、バッファRAM35に格納されている解析結果(例えば、エラー情報Error_Info)を格納された順に内部メモリ21に転送する(ステップS42)。そして、このエラー情報Error_InfoのバッファRAM35から内部メモリ21への転送処理が完了したことに応じて、CPUコア11は待機状態を解除する(ステップS43)。そして、CPUコア11は、出力インタフェース回路(不図示)を用いて内部メモリ21に格納されているエラー情報Error_Infoを外部に出力する(ステップS44)。
【0059】
上記説明より、実施の形態1にかかる半導体装置1は、解析モードにおいて、1つの比較対象周辺回路に与えるアドレス信号或いはデータを比較対象周辺回路と同じ構成の少なくとも1つの解析対象周辺回路に与え、比較対象周辺回路と解析対象周辺回路とを同じ動作指示で動作させる。そして、実施の形態1にかかる半導体装置1は、同じ動作指示で動作する周辺回路から得られる実行結果を比較することで周辺回路における不具合を解析するためのエラー情報Error_Infoを得る。また、実施の形態1にかかる半導体装置1では、解析モードにおいて周辺回路を動作させる動作指示をユーザープログラムに基づき発行する。これにより、実施の形態1にかかる半導体装置1では、スキャン回路、BIST(Built In Self-Test)回路等のテストの為の校正を準備することなく、周辺回路で顕現した不具合を解析することができる。
【0060】
ここで、スキャン回路やBIST回路を使用したテスト手法は、フリップフロップ間の信号伝搬経路中におけるCMOSトランジスタのスタック故障やメモリセル破壊の診断を行うためのDFT(Design For Test)パターンをスキャン回路やBIST回路に与えて不具合を解析するものであるため、具体的に故障しているレジスタやメモリのアドレスを特定することは困難である。
【0061】
他に、テスターを用いて機能評価や量産テストで用いるファンクションパターンを半導体装置に入力し、その挙動によって故障個所の推定、論理の絞り込みを行うテスト手法がある。この場合、既存のファンクションパターンでカバーできる配線や論理の故障である場合、容易に故障解析を行うことはできるが、ファンクションパターンでカバーできておらず、半導体装置の設計工程での論理検証でも動作確認ができていない故障が顕現した場合、故障解析用に新たなテストパターンを作成しなければならない問題が生じる。
【0062】
また、DFTパターンやファンクションパターンを増加させることで、回路中の不具合のカバー率の上昇傾向は緩やか、または飽和状態に近づく。カバー率が90%まで達成できたとして、そこからさらに1%の達成をしようとした場合、解析したい対象となる特定の配線を狙い撃ちにするようなパターンを作成しなければならず、現実的にそのようなパターンを作成することは出来ないという問題が生じる。
【0063】
しかしながら、実施の形態1にかかる半導体装置1を用いることで、不具合が顕現したユーザープログラムを用いて不具合検証処理を行うことで、テスト回路の追加或いはDFTパターンやファンクションパターンの追加をすることなく、周辺回路における不具合を検証することができる。実施の形態1にかかる半導体装置1を用いることで、テストに要する工数及び時間を大きく短縮することができる。
【0064】
また、実施の形態1にかかる半導体装置1では、周辺回路のレジスタ単位或いはレジスタ中のビット単位で不具合を検証することができる。これにより、実施の形態1にかかる半導体装置1では、不具合が顕現したレジスタを使用不可の状態にして、CPUシステム10におけるプログラムの実行を継続することもできる。
【0065】
実施の形態2
実施の形態2では、実施の形態1にかかる半導体装置1の解析モード中のCPUコア11の動作の別の形態について説明する。実施の形態1にかかる半導体装置1では、解析コア37が解析に用いるユーザープログラムを実行する解析モード中はCPUコア11が待機状態となりプログラムの実行は行わない。一方、実施の形態2にかかる半導体装置1では、解析モード中にCPUコア11を待機状態とせずにユーザープログラムの実行を行わせる。なお、実施の形態2にかかる動作を行う場合、実施の形態1にかかる半導体装置1と同じハードウェア構成を用い、ソフトウェアの構成を実施の形態1とは異なる構成とするのみであるので、実施の形態2では半導体装置の符号としては実施の形態1と同じ符号を用いる。
【0066】
そこで、
図8に実施の形態2にかかる半導体装置の解析処理の流れを示すフローチャートを示す。
図8に示すように、実施の形態2にかかる半導体装置1では、ステップS50としてCPUコア11が動作を開始する。そして、CPUコア11は、プログラム格納部22等に格納されているユーザープログラム中の命令をフェッチしながらユーザープログラムを実行する(ステップS51)。このステップS51でのユーザープログラムの実行では、周辺回路を用いるものとする。そして、周辺回路において異常がない限り、CPUコア11はユーザープログラムの実行を継続する(ステップS52)。
【0067】
一方、CPUコア11は、ユーザープログラムの実行中に周辺回路で異常が発生したことが割り込み要求により通知された場合、ステップS53の処理を例外処理の1つとして実行する。ステップS53では、異常が発生した周辺回路を含む周辺回路群から解析に用いない周辺回路を除く周辺回路を複数の周辺回路を解析対象周辺回路とする解析対象周辺回路設定値を生成する。なお、解析に用いない周辺回路とは、異常が無いと判断される周辺回路であって、以下の説明では解析除外周辺回路と称す。実施の形態2における解析対象周辺設定値には、1つの周辺回路群に含まれる周辺回路の一部のみが設定される。
【0068】
次いで、実施の形態2にかかる半導体装置1では、
図4で説明した第1の解析ステップから第3の解析ステップを実行するが、第2の解析ステップ及び第3の解析ステップと平行して、ステップS54の処理を行う。ステップS54の処理では、解析除外周辺回路を用いてユーザープログラムの実行を継続する。
【0069】
また、第3の解析ステップが完了した後に、実施の形態2にかかる半導体装置1は、異常があると判断された周辺回路を利用禁止に設定する(ステップS55)。一方、十の形態2にかかる半導体装置1は、異常がないと判断された周辺回路をユーザープログラムにより利用可能な周辺回路に組み込む(ステップS56)。
【0070】
上記説明より、実施の形態2にかかる半導体装置1では、比較対象周辺回路が含まれる周辺回路群の一部の周辺回路を解析動作から除外し、除外した周辺回路を用いてユーザープログラムの実行を継続する。また、実施の形態2にかかる半導体装置1では、解析動作により異常が発生していないと判断された周辺回路をユーザープログラムにより利用可能な状態に復帰させると共に、異常のある周辺回路をその後の動作で用いないとすることができる。このような処理を行うことで、実施の形態2にかかる半導体装置1は、半導体装置の動作継続性を高めることができる。
【0071】
実施の形態3
実施の形態3では、解析サブシステム30内のモジュールセレクタの別の形態について説明する。そこで、
図9に実施の形態3にかかる半導体装置3のブロック図を示し、
図10に実施の形態3にかかる解析サブシステム30aのブロック図を示す。
【0072】
図9に示すように、実施の形態3にかかる半導体装置3は、解析サブシステム30に代えて解析サブシステム30aを有する。
図9に示すように、解析サブシステム30aは、モジュールセレクタ33に代えて、モジュールセレクタ33bを有する。このモジュールセレクタ33とモジュールセレクタ33bとの違いについて、以下で詳細に説明する。
【0073】
まず、通常動作モード時のモジュールセレクタ33とモジュールセレクタ33bとの違いについて説明する。モジュールセレクタ33は、デコード処理により、周辺回路へのアドレス信号を生成する。モジュールセレクタ33bは、アドレス変換処理により周辺回路へのアドレスを生成する。
【0074】
具体的には、モジュールセレクタ33は、通常動作モードでは、CPUコア11側から与えられるモジュールアドレス信号Peri_SELに基づき、複数の記周辺回路を個別に動作状態とする個別モジュールアドレス信号を出力する。一方、モジュールセレクタ33bは、CPUコア11側から与えられるモジュールアドレス信号Peri_SELをアクセス先の周辺回路毎に定められたシフト量でシフトさせて周辺回路を個別に指定するペリフェラルアドレス信号Peri_addrを生成する。
【0075】
次いで、解析モード時のモジュールセレクタ33とモジュールセレクタ33bとの違いについて説明する。モジュールセレクタ33は、解析モードにおいては、モジュールアドレス信号Peri_addrによらず、解析対象周辺回路群に含まれる全ての解析対象周辺回路を動作状態とする解析対象選択信号を出力する。一方、モジュールセレクタ33bは、解析モードにおいては、ベースアドレス信号となるモジュールアドレス信号Peri_SELから解析対象周辺回路群に含まれる全ての解析対象周辺回路に対応する複数のモジュールアドレス信号Peri_addrを出力する。
【0076】
モジュールセレクタ33とモジュールセレクタ33bとのいずれを用いるかは、解析サブシステムと周辺回路との間に設けられるバスの回路形式により決定される。そこで、
図11に実施の形態3にかかる解析サブシステムと実施の形態1にかかる解析サブシステムの違いを説明する図を示す。
【0077】
図11に示すシステム構成図では、CPUコア61、解析コア62、内部メモリ63、I/Oインタフェース回路64、周辺回路65、66、内部バス71、第1のバス(例えば、サブ内部バス72)、第2のバス(例えば、サブ内部バス73)、解析サブシステム30、30aによりシステムが構成される。なお、ここで、I/Oインタフェース回路64には、例えば、USBインタフェース回路、車載通信インタフェース回路、無線通信インタフェース等の自半導体装置と他の装置との通信インタフェースが含まれる。また、周辺回路65、66には、AD変換回路、DA変換回路、タイマ、PWM信号生成回路、コプロセッサ等のCPUコアに用いられる特定用途向け回路が含まれる。
【0078】
内部バス71には、バスマス他となるCPUコア61、解析コア62と、バススレーブとなる内部メモリ63、I/Oインタフェース回路64が接続される。また、サブ内部バス72は、内部バス71に対するサブ内部バスであり、解析サブシステム30を介して内部バス71と接続される。また、サブ内部バス72にはバススレーブとしてのみ動作する周辺回路65が複数接続される。サブ内部バス73は、内部バス71に対するサブ内部バスであり、解析サブシステム30aを介して内部バス71と接続される。また、サブ内部バス73には、バススレーブとしての動作とバスマスタとしての動作との両方の動作を切替可能な周辺回路66が接続される。
【0079】
また、サブ内部バス72内には、アドレス信号のデコードを行うアドレスデコーダDEC_Aが設けられ、サブ内部バス73内には、アドレス信号のデコードを行うアドレスデコーダDEC_Bが設けられる。サブ内部バス72、73はいずれも内部に設けられるアドレスデコーダによりアクセス先とアクセス元との信号の送受信を制御する。また、デコーダDEC_A、DEC_Bはアドレスの生成方法に違いを有する。そこで、以下でデコーダDEC_Aの動作とデコーダDEC_Bの動作の違いについて説明する。
【0080】
まず、
図12に
図11に示した第1のバス(例えば、サブ内部バス72)のアドレスデコーダの動作を説明する図を示す。
図12に示す例では、サブ内部バス72にバスマスタとなる周辺回路81a〜81cと、バススレーブとなる周辺回路83a〜83cとが接続される。また、サブ内部バス72内にはアドレスデコーダ82a〜82cが設けられる。アドレスデコーダ82a〜82cは、バスマスタとなる周辺回路81a〜81cに対応して設けられる。アドレスデコーダ82a〜82cは、入力されるアドレス信号に基づき、アクセス先となる周辺回路83a〜83cのいずれか1つを指定するアドレス信号を生成する。例えば、アドレスデコーダ82cは、周辺回路83a〜83cのいずれに対応するアクセスアドレスも生成可能であるが、周辺回路81cが周辺回路83bを指定したアドレス信号をアドレスデコーダ82cに与えた場合、アドレスデコーダ82cは周辺回路83bを指定したアクセスアドレスを生成する。ここで、解析サブシステム30は、周辺回路81a〜81cとして機能するものである。
【0081】
続いて、
図13に
図11に示した第2のバス(例えば、サブ内部バス73)のアドレスデコーダの動作を説明する図を示す。
図13に示す例では、サブ内部バス73にバスマスタとバススレーブとを切り替えながら動作可能な周辺回路が接続される。また、
図13に示す例では、サブ内部バス73を挟んで周辺回路91a〜91cと、周辺回路93a〜93cとが互いに接続される。そして、サブ内部バス73内にはアドレスデコーダ92a〜92cが設けられる。そして、このアドレスデコーダ92a〜92cには、アクセス元の周辺回路からアドレス信号が入力される。そして、アドレスデコーダ92a〜93cは、アクセス先となる周辺回路に対応するアドレスデコーダのみが入力されたアクセスアドレスのみを通過させる。
【0082】
図13に示す例では、周辺回路91cから周辺回路93bにアクセスを行う場合には、周辺回路91cから発せられたアクセスアドレスがアドレスデコーダ92a〜92cに入力され、周辺回路93bに対応するアドレスデコーダ92bのみがアクセスアドレスを通す。また、周辺回路93bから周辺回路91cにアクセスを行う場合には、周辺回路93bから発せられたアクセスアドレスがアドレスデコーダ92a〜92cに入力され、周辺回路91cに対応するアドレスデコーダ92cのみがアクセスアドレスを通す。ここで、解析サブシステム30aは、周辺回路91a〜91cとして機能するものである。
【0083】
解析サブシステム30aを用いることで、例えば周辺回路93a〜93cを解析対象周辺回路に設定する場合には、モジュールセレクタ33bにより、周辺回路93a〜93cを指定する複数のアドレスを生成し、この複数のアドレスをそれぞれアドレスデコーダ92a〜92cに与えることができる。
【0084】
このように、バスの形式には様々な形式があり、モジュールセレクタ33bを有する解析サブシステム30aを用いることで、サブ内部バス72のタイプのみに限られず、サブ内部バス73のタイプのバスを有するシステムにおいても実施の形態1と同様の解析処理を行うことが可能になる。
【0085】
実施の形態4
実施の形態4では、実施の形態1にかかる半導体装置1の別の形態である半導体装置4について説明する。そこで、
図14に実施の形態4にかかる半導体装置のブロック図を示す。なお、
図14では、周辺回路群40b〜40dについての図示を省略した。
【0086】
図14に示すように、実施の形態4にかかる半導体装置4は、実施の形態1にかかる半導体装置1に割込アービタ14を追加してものである。割込アービタ14は、周辺回路に異常が発生した場合に複数の周辺回路からそれぞれ発せられる複数の割り込み要求の調停を行い、複数の割り込み要求のいずれか1つをCPUコア11に通知する。具体的には、割込アービタ14は、比較対象周辺回路から発せられた割り込み要求を選択してCPUコア11に通知する。また、割込アービタ14から割り込み要求の入力を受けた割込コントローラ12は、は、解析コア37に対して周辺回路から割り込み要求が発せられたことを知らせる割込通知信号INT_ntfを出力する。
【0087】
実施の形態1にかかる半導体装置1では、解析モードにおいて、複数の周辺回路を同じ期間に同じ動作指示で動作させる。そのため、例えば、周辺回路の不具合ではなく、ユーザープログラム上の問題に起因して周辺回路で異常が顕現した場合、複数の周辺回路から同時に割り込み要求が発生する。つまり、実施の形態1にかかる半導体装置1では、同時に同じ優先度の複数の割り込み要求が発生する可能性がある。
【0088】
このように同時に同じ優先度の複数の割り込み要求が発生した場合、CPUコア11は、いず割り込み要求に関する割込処理を実行したら良いのかを判断することができず、半導体装置1がプログラム実行状態のまま停止状態となるデッドロックが発生し、解析を行うことが出来なくなる問題がある。
【0089】
そこで、実施の形態4にかかる半導体装置4では、割込アービタ14を用いて同時に発生した複数の割り込み要求の調停を行い、比較対象周辺回路から発せられた割り込み要求のみを割込コントローラ12に出力する。これにより、CPUコア11は、比較対象周辺回路に1つの割り込み要求INTに応答して例外処理を実施することで割込フラグをクリアすることできる。また、割込コントローラ12は、割込通知信号INT_ntfにより解析コア37に周辺回路群において割り込み要求が発せられたことを知ることができ、この割込通知信号INT_nftに応じた例外処理を行うことができる。
【0090】
ここで、解析モード時に割込フラグをクリアする例外処理について説明する。実施の形態4にかかる半導体装置4では、割込通知信号INT_ntfが与えられた解析コア37は、あらかじめプログラム内部に定義されている例外処理を実行することで、比較対象周辺回路の割り込み要求をクリアする。このとき、実施の形態4にかかる半導体装置4では、モジュールセレクタ33の設定により比較対象周辺回路以外の解析対象周辺回路の割り込み要求をクリアすることができる。また、クリア制御を行う際に割り込み要求の出力インタフェースの状態が正しく変化していないチャンネルが存在した場合は、比較ユニット32で検出することができる。
【0091】
また、割込アービタ14を実装することで、ユーザーモード時にCPUコア11が割込フラグをクリアするという処理は短縮することが可能で、且つ、割込コントローラ12のチャンネルの増加を最小限に抑えることが可能になる。
【0092】
割込アービタ14を実装することで、実施の形態4にかかる半導体装置4では、比較対象周辺回路から発せられる割り込み要求のみが割込コントローラ12に通知される。そのため、実施の形態4にかかる半導体装置4では、解析対象周辺回路の割り込み要求を検知することはできないが、解析対象周辺回路で意図しない割り込みが発生した場合、インタフェースが比較ユニット32によって比較対象周辺回路の割り込み出力と比較されているため、そこで差分が検知されることで差分が発生したことによる割り込み要求が解析サブシステム30から発生する。
【0093】
また、割込アービタ14から通知される割り込み要求と解析サブシステム30から通知される割り込み要求では、解析サブシステム30から通知される割り込み要求の方が優先度を高くすることで、割込アービタ14が解析の妨げになることは無い。
【0094】
実施の形態5
実施の形態5では、実施の形態1にかかる解析サブシステム30の別の形態となる解析サブシステム30bについて説明する。そこで、解析サブシステム30bを有する実施の形態5にかかる半導体装置5のブロック図を
図15に示す。また、解析サブシステム30bのブロック図を
図16に示す。
【0095】
図15及び
図16に示すように解析サブシステム30bは、解析サブシステム30から解析コア37を削除したものである。実施の形態5にかかる半導体装置5では、解析モードにおけるユーザープログラムの実行をCPUコア11により行う。そこで、
図17から
図18を参照して実施の形態5にかかる半導体装置5の動作を説明する
【0096】
図17は、実施の形態5にかかる半導体装置の第1の解析ステップの流れを示すフローチャートである。
図17に示すように、第1の解析ステップでは、まず、CPUコア11が動作を開始する(ステップS60)。その後、CPUコア11が内部メモリ又は外部メモリから解析に用いる解析プログラム(例えば、ユーザープログラム)中の命令をフェッチすることで、ユーザープログラムの実行状態となる(ステップS61)。このユーザープログラムには、解析設定レジスタ31に格納する解析実行設定値を生成する命令が組み込まれているものとする。次いで、CPUコア61は、解析対象となる周辺回路群(例えば、解析対象周辺回路群)を示す解析対象周辺回路設定値を解析設定レジスタ31に格納する(ステップS62)。また、CPUコア11は、解析対象周辺回路群に含まれる周辺回路のうち比較対象となる周辺回路(比較対象周辺回路)を示す比較対象周辺回路設定値を解析設定レジスタ31に格納する(ステップS63)。このステップS62、S63の動作により、モジュールセレクタ33が、解析設定レジスタ31の解析実行設定値を参照し、解析対象周辺回路群に与える解析対象選択信号Analyze_SELをイネーブル状態に切り替える(ステップS64)。
【0097】
続いて、
図18に実施の形態5にかかる半導体装置の第2の解析ステップの流れを示すフローチャートを示す。
図18に示すように、実施の形態5にかかる半導体装置1の第2の解析ステップでは、CPUコア11が、スタートフェッチアドレスに基づき内部メモリ21又はプログラム格納部22に格納されているユーザープログラムの命令をフェッチすることでユーザープログラムの実行を開始し、ユーザープログラムに基づき比較対象周辺回路に対して動作指示を発行する(ステップS70)。
【0098】
そして、周辺回路が動作指示に従って動作した結果得られる結果を比較ユニット32により比較する(ステップS71)。このステップS71では、アービタ34が解析設定レジスタ31に格納された解析対象周辺回路設定値と比較対象周辺回路設定値とに基づき解析コア37と解析対象周辺回路群との間でやり取りされる信号を抽出し、比較ユニット32に与える。
【0099】
そして、ステップS71の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報が一致ししていると判断された場合(ステップS72のYESの枝)、解析コア37はユーザープログラムの実行を再開し(ステップS76)、ステップS71からS76の動作を繰り返す(ステップS77)。
【0100】
一方、ステップS71の比較動作により、解析対象周辺回路群に含まれる周辺回路から取得された解析情報に他の比較結果と不一致になるビットが存在している判断された場合(ステップS72のNOの枝)、比較ユニット32は、割込コントローラ12に割り込み要求を発行することで、CPUコア11に異常の発生を通知する(ステップS73)。次いで、比較ユニット32は、エラービットの情報をエラー情報Error_InfoとしてバッファRAM35に書き込む(ステップS74)。その後、CPUコア11が比較ユニット32から通知された割り込み要求をクリアした後に、CPUコア11は動作を再開する(ステップS76)。これにより、CPUコア11が動作を再開し、ユーザープログラムの実行を再開する(ステップS76)。そして、CPUコア11は、ステップS71からS76までの動作をユーザープログラムの実行位置がエンドフェッチアドレスに達するまで継続する(ステップS77)。
【0101】
ステップS77で、CPUコア11がユーザープログラムを実行する解析処理が終了したと判断されたことに応じて、CPUコア11は、DMA回路36を起動する(ステップS78)。
【0102】
続いて、
図19に実施の形態1にかかる半導体装置の第3の解析ステップの流れを示すフローチャートを示す。
図7に示すように、第3の解析ステップでは、第2の解析ステップのステップS30における解析コア37の指示に基づきDMA回路36を起動する(ステップS41)。そして、DMA回路36は、バッファRAM35に格納されている解析結果(例えば、エラー情報Error_Info)を格納された順に内部メモリ21に転送する(ステップS42)。そして、このエラー情報Error_InfoのバッファRAM35から内部メモリ21への転送処理が完了したことに応じて、CPUコア11は待機状態を解除する(ステップS43)。そして、CPUコア11は、出力インタフェース回路(不図示)を用いて内部メモリ21に格納されているエラー情報Error_Infoを外部に出力する(ステップS44)。
【0103】
上記説明より、解析コアを別途も設けずに解析モード時にCPUコア11がユーザープログラムを実行することでも実施の形態1と同様な周辺回路群の不具合解析を行うことできる。解析コア37は、CPUコア11と同じ回路構成を有する回路であり、チップ上の専有面積も大きい。そのため、解析コア37を設けないことでチップ面積を小さくすることができる。
【0104】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。