(57)【要約】【課題】従来の半導体装置では、不具合再現性の高い解析処理を行うことができない問題があったる。【解決手段】一実施の形態によれば、半導体装置１は、第１のコード領域１２１に格納される第１のプログラムＵＰ１を第１のローカルメモリ領域１１１を用いて実行する第１の演算コア１０１と、第２のコード領域１２１に格納される第２のプログラムＵＰ２を第２のローカルメモリ領域１２１を用いて実行する第２の演算コア１０２と、を有し、解析モードにおいて、第１の演算コア１０１及び第２の演算コア１０２の両方に第１のプログラムＵＰ１を実行させる第１の解析処理と、第１の演算コア１０１及び第２の演算コア１０２の両方に第２のプログラムＵＰ２を実行させる第２の解析処理と、を行い、第１の解析処理と第２の解析処理とで得られた複数の演算結果データＡＤ１、ＡＤ２を比較することで不具合解析に用いる解析情報を得る。【選択図】図３
2019008700.tif 000002
【特許請求の範囲】
【請求項１】
第１のコード領域に格納される第１のプログラムを第１のローカルメモリ領域を用いて実行する第１の演算コアと、
前記第１のコード領域とは異なる第２のコード領域に格納される第２のプログラムを第２のローカルメモリ領域を用いて実行する第２の演算コアと、
解析制御プログラムが格納される解析用コード領域と、
前記解析制御プログラムの実行結果を保持する解析用ローカルメモリ領域と、
前記第１の演算コアと前記第２の演算コアとの不具合を解析する解析モードにおいて前記第１の演算コア又は前記第２の演算コアのプログラム実行状況を前記解析制御プログラムに基づき制御する解析コアと、
前記第１の演算コアと前記第２の演算コアとがそれぞれ独立して動作する通常動作モードにおいて、前記第１の演算コアによる前記第２のコード領域へのアクセス及び前記第２の演算コアによる前記第１のコード領域へのアクセスを防止するアクセス経路制御部と、を有し、
前記アクセス経路制御部は、前記解析モードの期間中、第１の解析処理において前記解析コアからの指示に基づき、前記第１のプログラムを前記第１の演算コア及び前記第２の演算コアに読み出すようにアクセス経路を切り替え、第２の解析処理において前記第２のプログラムを前記第１の演算コア及び前記第２の演算コアに読み出すようにアクセス経路を切り替え、
前記解析コアは、前記第１の解析処理において、前記第１のプログラムに基づき前記第１の演算コアにより生成された第１の演算結果データと、前記第１のプログラムに基づき前記第２の演算コアにより生成された第２の演算結果データとを比較し、かつ、前記第２の解析処理において、前記第２のプログラムに基づき前記第１の演算コアにより生成された第３の演算結果データと、前記第２のプログラムに基づき前記第２の演算コアにより生成された第４の演算結果データとを比較することで、前記第１の演算コア、前記第２の演算コア及びこれらに用いられる回路の不具合解析に用いる解析情報を生成する半導体装置。
【請求項２】
前記解析用コード領域には、前記第１の演算コア及び前記第２の演算コアに対して特定のテストシーケンスを実行するコア解析プログラムが格納され、
前記解析コアは、デバックモードにおいて、前記第１の演算コア及び前記第２の演算コアに前記コア解析プログラムを実行させ、前記コア解析プログラムに基づき生成された第５の演算結果データに基づき前記解析情報を生成する請求項１に記載の半導体装置。
【請求項３】
前記アクセス経路制御部は、前記解析コアから与えられる経路設定値を保持する経路設定レジスタを有し、前記経路設定値に基づき前記第１の演算コアと前記第２の演算コアのアクセス先となるコード領域を切り替える請求項１に記載の半導体装置。
【請求項４】
前記解析コアに前記解析制御プログラムに基づく動作を開始させる指示を行うデバッガを更に有する請求項１に記載の半導体装置。
【請求項５】
前記第１の演算コア及び前記第２の演算コアとバスを介して接続される複数の周辺回路を有し、
前記第１の演算コア及び前記第２の演算コアは、前記解析モードにおいて前記複数の周辺回路の少なくとも１つを利用しながら前記第１のプログラム又は前記第２のプログラムを実行する請求項１に記載の半導体装置。
【請求項６】
前記複数の周辺回路には、タイマ、アナログデジタル変換回路、コプロセッサ、メモリ、ダイレクメモリアクセスコントローラ、ＰＷＭ信号生成回路、通信インタフェース回路、入出力インタフェース回路の少なくとも１つが含まれる請求項５に記載の半導体装置。
【請求項７】
前記第１の演算コア及び前記第２の演算コアは、それぞれリングバッファを有し、
前記リングバッファは、前記第１の演算コア及び前記第２の演算コアに入出力される信号を時系列順に取得して、動作モニタ情報として保持し、
前記第１の演算結果データから前記第４の演算結果データには、前記リングバッファで保持された前記動作モニタ情報が含まれる請求項１に記載の半導体装置。
【請求項８】
前記第１のコード領域及び前記第２のコード領域とは異なる第３のコード領域に格納される第３のプログラムを第３のローカルメモリ領域を用いて実行する第３の演算コアと、
前記第１の演算コアから前記第３の演算コアに対して前記解析モードに基づく動作を行うか否かの指示を与えるデバッガと、をさらに有し、
前記第３の演算コアは、前記解析モードにおいて、前記デバッガの指示に基づき前記解析コアとして動作する請求項１に記載の半導体装置。
【請求項９】
前記アクセス経路制御部は、前記デバッガから与えられる解析マスタ設定値を保持する解析マスタ設定レジスタを有し、前記解析マスタ設定値に基づき前記第３の演算コアのアクセス先のコード領域を前記解析用コード領域に切り替える請求項８に記載の半導体装置。
【請求項１０】
前記解析用ローカルメモリ領域は、前記第１の演算コアから前記第３の演算コアのいずれの演算コアからもアクセス可能な周辺回路の１つであるグローバルメモリ領域であり、
前記第３の演算コアは、前記デバッガから与えられる解析マスタ設定値に基づき前記グローバルメモリ領域から前記解析制御プログラムをロードすることで前記解析コアとして機能する請求項８に記載の半導体装置。
【請求項１１】
前記第１の演算コア及び前記第２の演算コアは、それぞれ、
同一回路構成のマスタコア及びスレーブコアと、
前記マスタコア及び前記スレーブコアのそれぞれに対応して設けられる複数のリングバッファと、
前記第１の演算コア及び前記第２の演算コアが共用するローカルメモリ領域と、を有し、
比較対象とする前記リングバッファの出力値の組み合わせを指定するバッファ比較設定値が格納される比較設定レジスタと、
前記バッファ比較設定値に基づき指定される組み合わせで前記リングバッファの出力値を比較して、前記出力値間に不一致が発生した場合にエラー信号を出力するリングバッファ比較部と、を有し、
前記解析コアは、
前記解析モードにおいて、異なる演算コアに属する前記リングバッファの出力値を比較対象とするように前記バッファ比較設定値を書き換え、
前記解析モード終了時に、同一の演算コアに属する前記リングバッファの出力値を比較対象とするように前記バッファ比較設定値を書き戻す請求項１に記載の半導体装置。
【請求項１２】
前記通常動作モードにおいて、前記リングバッファ比較部から出力される前記エラー信号に基づき前記解析コアに前記解析モードによる動作の開始を指示するデバッガを更に有する請求項１１に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えば１つの半導体チップ上に複数のＣＰＵコアが設けられる半導体装置に関する。
【背景技術】
【０００２】
半導体装置は、工場出荷前に製品が仕様を満たしていることを確認するファイナルテストを全品に対して行う。しかしながら、このファイナルテストをパスした製品であっても顧客工程にて不具合が発覚することがある。この顧客不具合品については、再度ファイナルテストを実施してもパスしてしまうことあり、このような顧客不具合品をテストエスケープ品と称す。テストエスケープ品は、ファイナルテストはパスするものの顧客工程においては不具合品であり、このような製品を市場に流通させないためには、ファイナルテストにこの不具合を検出するためのテスト工程を組み込む必要がある。このようなことから、テストエスケープ品で生じている不具合の事象を解析する必要がある。このような解析手法の一例が特許文献１に開示されている。
【０００３】
特許文献１に記載の技術では、ホストＰＣ上でデバッガが動作し、デバッガの操作に応じて２つのマイクロプロセッサＡ、ＢがデバッグＩ／Ｆ装置Ａ、Ｂを介して同一のデバッグ動作を並行して実行し、マイクロプロセッサＡ、Ｂから得られた内部情報（ダンプ結果）はホストＰＣに転送され、ホストＰＣ１２０で比較し不良解析を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７６３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載の技術では、デバック処理に用いる環境がテストエスケープ品とは異なる問題がある。例えば、特許文献１に記載の技術では、良品サンプルとテストエスケープ品をそれぞれＩ／Ｆ装置によりホストＰＣと接続するためテストエスケープ品の実際の動作速度を再現できない、テストエスケープ品で実際に不具合が生じたプログラムを入手できない等の動作環境の違いがある。つまり、特許文献１に記載の技術では、不具合再現性が低いという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、第１のコード領域に格納される第１のプログラムを第１のローカルメモリ領域を用いて実行する第１の演算コアと、第２のコード領域に格納される第２のプログラムを第２のローカルメモリ領域を用いて実行する第２の演算コアと、を有し、解析モードにおいて、第１の演算コア及び第２の演算コアの両方に第１のプログラムを実行させる第１の解析処理と、第１の演算コア及び第２の演算コアの両方に第２のプログラムを実行させる第２の解析処理と、を行い、第１の解析処理と第２の解析処理とで得られた複数の演算結果データを比較することで不具合解析に用いる解析情報を得る。
【発明の効果】
【０００８】
前記一実施の形態によれば、不具合再現性の高い解析処理を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかる半導体装置の解析モードの処理フローを説明するフローチャートである。
【図３】実施の形態１にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図４】実施の形態１にかかる半導体装置の解析モードの第２の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図５】実施の形態１にかかる半導体装置の解析情報取得処理の処理フローを説明するフローチャートである。
【図６】実施の形態１にかかる半導体装置のデバッグモードの処理フローを説明するフローチャートである。
【図７】実施の形態１にかかる半導体装置のデバッグモードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図８】実施の形態１にかかる半導体装置の解析情報取得処理の処理フローの第１の例を説明するフローチャートである。
【図９】実施の形態１にかかる半導体装置の解析情報取得処理の処理フローの第２の例を説明するフローチャートである。
【図１０】実施の形態２にかかる半導体装置のブロック図である。
【図１１】実施の形態２にかかる半導体装置における演算コアとリングバッファとの関係を説明するブロック図である。
【図１２】実施の形態２にかかる半導体装置のリングバッファが取得する情報を説明するブロック図である。
【図１３】実施の形態３にかかる半導体装置のブロック図である。
【図１４】実施の形態３にかかる半導体装置の解析モードの処理フローを説明するフローチャートである。
【図１５】実施の形態３にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図１６】実施の形態４にかかる半導体装置のブロック図である。
【図１７】実施の形態４にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図１８】実施の形態５にかかる半導体装置のブロック図である。
【図１９】実施の形態５にかかる半導体装置の通常動作モードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【図２０】実施の形態５にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
実施の形態１
図１に実施の形態１にかかる半導体装置１のブロック図を示す。実施の形態１にかかる半導体装置１は、それぞれが独立してプログラムを実行可能な複数のＣＰＵコアを有する。そして、実施の形態１にかかる半導体装置１は、複数のＣＰＵコアが、それぞれのＣＰＵコアが占有するメモリに格納されたプログラムを独立して実行する通常動作モードに加えて解析モードとデバッグモードを有する。
【００１３】
解析モードでは、自ＣＰＵコアが通常動作モードではアクセスできない他のＣＰＵコアに対応したメモリ領域にアクセスを許可して自ＣＰＵコアと他のＣＰＵコアとで１つのメモリ領域に格納されたプログラムを実行する。
【００１４】
デバッグモードでは、通常動作モードにおいて用いられないコア解析プログラムをＣＰＵコアで実行する。また、このコア解析プログラムは、通常動作モードではＣＰＵコアがアクセスできないメモリ領域に格納される。
【００１５】
このような実施の形態１にかかる半導体装置１について以下で詳細に説明する。図１に示すように、実施の形態１にかかる半導体装置１は、ＣＰＵコア１０１〜１０ｎ（ｎはＣＰＵコアの数を示す整数）、ローカルＲＡＭ１１１〜１１ｎ、プログラム格納部１２１〜１２ｎ、解析コア２０、ローカル解析ＲＡＭ２１、解析用プログラム格納部２２、フラッシュバス３０、アクセス経路制御部３１、システムバス４０、デバッガ４１、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）４２、グローバルＲＡＭ４３、周辺回路インタフェース４４、周辺回路４５１〜４５ｎを有する。
【００１６】
なお、以下の説明では、第１の演算コアは、ＣＰＵコア１０１〜１０ｎのうちの１つであり、第２の演算コアは、ＣＰＵコア１０１〜１０ｎの他の１つであるが、第１の演算コアとしてＣＰＵコア１０１を用い、第２の演算コアとしてＣＰＵコア１０２を用いる例について説明する。
【００１７】
また、第１のローカルメモリ領域は、第１の演算コアに対応して設けられるローカルメモリ領域であり、第１の演算コアをＣＰＵコア１０１とした場合、ローカルＲＡＭ１１１となる。第２のローカルメモリ領域は、第２の演算コアに対応して設けられるローカルメモリ領域であり、第２の演算コアをＣＰＵコア１０２とした場合、ローカルＲＡＭ１１２となる。
【００１８】
また、第１のコード領域は、第１の演算コアに対応して設けられるコード領域であり、第１の演算コアをＣＰＵコア１０１とした場合、プログラム格納部１２１となる。第２のコード領域は、第２の演算コアに対応して設けられるコード領域であり、第２の演算コアをＣＰＵコア１０２とした場合、プログラム格納部１２２となる。
【００１９】
また、第１のプログラムは、第１の演算コアに対応して設けられる第１のコード領域に格納されるプログラムであって、第１の演算コアをＣＰＵコア１０１とした場合、プログラム格納部１２１に格納されるユーザープログラムＵＰ１である。第２のプログラムは、第２の演算コアに対応して設けられる第２のコード領域に格納されるプログラムであって、第２の演算コアをＣＰＵコア１０２とした場合、プログラム格納部１２２に格納されるユーザープログラムＵＰ２である。
【００２０】
ＣＰＵコア１０１〜１０ｎは、プログラムを実行する演算コアである。ＣＰＵコア１０１〜１０ｎは、それぞれ対応して設けられるプログラム格納部１２１〜１２ｎに格納されたプログラムを、ＣＰＵコア毎の占有メモリ領域として設けられたローカルＲＡＭ１１１〜１１ｎを用いて実行する。具体的には、ＣＰＵコア１０１を第１の演算コアとした場合、ＣＰＵコア１０１は、第１のコード領域（例えば、プログラム格納部１２１）に格納される第１のプログラム（例えば、ユーザープログラムＵＰ１）を第１のローカルメモリ領域（例えば、ローカルＲＡＭ１１１）を用いて実行する。また、ＣＰＵコア１０２を第２の演算コアとした場合、ＣＰＵコア１０２は、第２のコード領域（例えば、プログラム格納部１２２）に格納される第２のプログラム（例えば、ユーザープログラムＵＰ２）を第２のローカルメモリ領域（例えば、ローカルＲＡＭ１１２）を用いて実行する。
【００２１】
解析コア２０は、解析用コード領域（例えば、解析用プログラム格納部２２）に格納された解析制御プログラムＡＣＰを読み出して実行する。ローカル解析ＲＡＭ２１は、解析コア２０が占有するメモリ領域であって、解析コア２０が実行する解析制御プログラムの実行結果を保持する。また、実施の形態１では、解析用プログラム格納部２２には、解析制御プログラムＡＣＰに加えてコア解析プログラムＡＰが格納される。
【００２２】
解析コア２０は、通常動作モードにおいてはプログラムを実行しない停止状態を維持する。そして、解析コア２０は、解析モード及びデバッグモードにおいて、デバッガ４１から与えられる動作開始命令（例えば、解析モード開始命令及びデバッグモード開始命令）に基づき解析制御プログラムＡＣＰを実行することでＣＰＵコア１０１〜１０ｎのプログラム実行状況を制御する。
【００２３】
そして、解析コア２０は、解析モード中は、解析対象のＣＰＵコアに実行するプログラムを指定し、解析対象のＣＰＵコアがプログラムを実行することにより生成する演算結果データを収集する。そして、解析コア２０は、収集した演算結果データの差分情報から不具合解析に用いる解析情報を生成する。
【００２４】
具体的な一例を挙げると、解析コア２０は、解析モードで動作する期間中に行われる第１の解析処理において、ユーザープログラムＵＰ１に基づきＣＰＵコア１０１により生成された第１の演算結果データＡＤ１と、ユーザープログラムＵＰ１に基づきＣＰＵコア１０２により生成された第２の演算結果データＡＤ２とを比較する。また、解析コア２０は、解析モードで動作する期間中に行われる第２の解析処理において、ユーザープログラムＵＰ２に基づきＣＰＵコア１０１により生成された第３の演算結果データＡＤ１と、ユーザープログラムＵＰ２に基づきＣＰＵコア１０２により生成された第４の演算結果データＡＤ２とを比較する。そして、解析コア２０は、第１の解析処理及び第２の解析処理により取得された第１の演算結果データから第４の演算結果データを用いてＣＰＵコア１０１、１０２及びこれらに用いられる回路の不具合解析に用いる解析情報を生成する。
【００２５】
また、解析コア２０は、デバックモードにおいて、ＣＰＵコア１０１〜１０ｎの少なくとも１つにコア解析プログラムＡＰを実行させる。そして、解析コア２０は、コア解析プログラムＡＰに基づき生成された第５の演算結果データに基づき解析情報を生成する。
【００２６】
フラッシュバス３０は、ＣＰＵコア１０１〜１０ｎ及び解析コア２０と、プログラム格納部１２１〜１２ｎ及び解析用プログラム格納部２２と、のデータの送受信経路となるものであり、送受信されるデータの経路を制御する。具体的には、フラッシュバス３０は、ＣＰＵコア１０１〜１０ｎ及び解析コア２０から出力されるアドレス信号及びアクセス制御信号に基づきアクセス先として指定されたプログラム格納領域とアクセス要求元のコアとの間でデータを送受信する。
【００２７】
また、フラッシュバス３０は、ＣＰＵコア１０１〜１０ｎから出力されるアドレス信号及びアクセス制御信号に含まれるＣＰＵコアの識別子に基づき論理障壁ＬＷを形成する。そして、フラッシュバス３０は、論理障壁ＬＷに基づき１つのＣＰＵコアが自ＣＰＵコアに割り当てられたプログラム領域以外の領域にアクセスすることを禁止する。これにより、実施の形態１にかかる半導体装置１では、後述するアクセス経路制御部３１が通常動作モードの設定値に基づき動作している期間は、ＣＰＵコア１０１はプログラム格納部１２１にしかアクセスが許可されず、ＣＰＵコア１０２はプログラム格納部１２２にしかアクセスが許可されない状態となる。
【００２８】
アクセス経路制御部３１は、ＣＰＵコア１０１〜１０ｎがそれぞれ独立して動作する通常動作モードにおいて、第１の演算コア（例えば、ＣＰＵコア１０１）による第２のコード領域（例えば、プログラム格納部１２２）へのアクセス及び第２の演算コア（例えば、ＣＰＵコア１０２）による第１のコード領域（例えば、プログラム格納部１２１）へのアクセスを防止する。具体的には、アクセス経路制御部３１は、ＣＰＵコア１０１〜１０ｎから出力されたアドレス信号及びアクセス制御信号をそのままフラッシュバス３０に伝達することで、前述の通常動作モードの制御を行う。
【００２９】
一方、アクセス経路制御部３１は、解析モード或いはデバッグモードにおいては、フラッシュバス３０により形成される論理障壁ＬＷを超える範囲のメモリ領域に対してＣＰＵコア１０１〜１０ｎがアクセス可能になるようにアドレス信号及びアクセス制御信号の置き換えを行う。具体的には、アクセス経路制御部３１は、解析モード或いはデバッグモードにおいて、各ＣＰＵコアから出力されたアドレス信号及びアクセス制御信号に含まれる識別子をアクセス先のプログラム領域にアクセス可能なＣＰＵコアのものに置き換える。これにより、フラッシュバス３０は、置き換えられた識別子に基づき各ＣＰＵコアから置き換えられた識別子を有するＣＰＵコアにのみアクセス許可がされたプログラム領域へのアクセスを許可する。
【００３０】
具体的な一例を挙げると、アクセス経路制御部３１は、解析モードの期間中、第１の解析処理において解析コア２０からの指示に基づき、ユーザープログラムＵＰ１をＣＰＵコア１０１及びＣＰＵコア１０２に読み出すようにアクセス経路を切り替え、第２の解析処理においてユーザープログラムＵＰ２をＣＰＵコア１０１及びＣＰＵコア１０２に読み出すようにアクセス経路を切り替える。
【００３１】
また、具体的な別の例を挙げると、アクセス経路制御部３１は、デバックモードにおいて、ＣＰＵコア１０１及びＣＰＵコア１０２にコア解析プログラムが格納された解析用プログラム格納部２２へのアクセスが可能なようにアクセス経路を切り替える。
【００３２】
アクセス経路制御部３１は、経路設定レジスタ３２を有し、この経路設定レジスタ３２に格納された経路設定値ＡＣＳに基づき上記のようなアクセス経路の切り替えを行う。経路設定値ＡＣＳは、解析コア２０が解析制御プログラムＡＣＰを実行することで値が書き換えられるものである。また、解析コア２０は、デバッガ４１から与えられる動作開始指示中に含まれる制御パラメータに基づき経路設定値ＡＣＳの値を決定する。
【００３３】
システムバス４０は、ＣＰＵコア１０１〜１０ｎ及び解析コア２０と、デバッガ４１、ＤＭＡＣ４２及びグローバルＲＡＭ４３と、の間のデータ及び動作命令等の送受信を制御する。デバッガ４１は、解析コア２０に解析制御プログラムＡＣＰに基づく動作を開始させる指示を行う。このときデバッガ４１は、解析制御プログラムＡＣＰにより、解析コア２０が解析モードで動作するのか、デバッグモードで動作するのかを示す制御パラメータを解析コア２０に与える。また、この制御パラメータには、各モードでプログラムを実行するＣＰＵコアを指定する値及びＣＰＵコアが実行するプログラムが格納されるプログラム格納領域を指定する値が含まれるものとする。
【００３４】
なお、デバッガ４１が解析コア２０に与える制御パラメータは、半導体装置１が接続されたホストコンピュータからデバッガ４１に与えるものである。また、半導体装置１は、デバッガ４１を内蔵せずにデバッガ４１の機能を外部のホストコンピュータで代替することも可能である。
【００３５】
ＤＭＡＣ４２は、周辺回路の１つであって、グローバルＲＡＭ４３或いは、周辺回路４５１〜４５ｎの１つとして設けられるメモリとＣＰＵコア１０１〜１０ｎの間のデータ転送を制御する。グローバルＲＡＭ４３は、ＣＰＵコア１０１〜１０ｎ及び解析コア２０のいずれの演算コアからもアクセス可能な周辺回路の１つであるグローバルメモリ領域である。
【００３６】
周辺回路インタフェース４４は、ＣＰＵコア１０１〜１０ｎ及び解析コア２０と、周辺回路４５１〜４５ｎと、の間のデータ及び動作命令等の送受信を制御する。周辺回路４５１〜４５ｎは、ＣＰＵコア１０１〜１０ｎ及び解析コア２０から与えられる動作命令に基づき特定の機能を発揮する回路である。周辺回路４５１〜４５ｎとしては、例えば、タイマ、アナログデジタル変換回路、コプロセッサ、メモリ、ダイレクメモリアクセスコントローラ、ＰＷＭ（Pulse Width Modulation）信号生成回路、通信インタフェース回路、入出力インタフェース回路等の回路が考えられる。
【００３７】
また、実施の形態１にかかる半導体装置１では、ＣＰＵコア１０１〜１０ｎは、ユーザープログラムＵＰ１〜ＵＰｎを実行中にＤＭＡＣ４２、グローバルＲＡＭ４３及び周辺回路４５１〜４５ｎの少なくとも１つを用いた動作を行うものとする。
【００３８】
続いて、実施の形態１にかかる半導体装置１の動作について説明する。以下の説明では、ＣＰＵコア１０１、１０２の動作について説明するが、他のＣＰＵコアについてもＣＰＵコア１０１、１０２と同様の動作が可能である。
【００３９】
まず、実施の形態１にかかる半導体装置１では、通常動作モードにおいては、論理障壁ＬＷにより制限されたメモリ空間で各ＣＰＵコアが動作する。具体的には、通常動作モードでは、ＣＰＵコア１０１は、ローカルＲＡＭ１１１を用いてプログラム格納部１２１に格納されたユーザープログラムＵＰ１を実行し、ＣＰＵコア１０２は、ローカルＲＡＭ１１２を用いてプログラム格納部１２２に格納されたユーザープログラムＵＰ２を実行する。また、この通常動作モードでは、ＣＰＵコア１０１は、論理障壁ＬＷで隔てられたメモリ空間にあるプログラム格納部１２２〜１２ｎ及び解析用プログラム格納部２２にはアクセスが妨げられる。また、ＣＰＵコア１０２は、論理障壁ＬＷで隔てられたメモリ空間にあるプログラム格納部１２１、プログラム格納部１２３（不図示）〜１２ｎ及び解析用プログラム格納部２２へのアクセスが妨げられる。また、この通常動作モードにおいては、ＣＰＵコア１０１、１０２は、周辺回路４５１〜４５ｎ等の周辺回路を利用しながらプログラムを実行する。
【００４０】
続いて、実施の形態１にかかる半導体装置１の特徴の１つとなる解析モードとデバッグモードの動作を説明する。図２に実施の形態１にかかる半導体装置の解析モードの処理フローを説明するフローチャートを示す。なお、図２で示す例は、ＣＰＵコア１０１でユーザープログラムＵＰ１を実行した際に生じた不具合を解析するものであり、この解析にＣＰＵコア１０１、１０２の２つのＣＰコアと、ユーザープログラムＵＰ１、ＵＰ２と、を用いる例である。解析モードの動作で用いるＣＰＵコアの個数及びユーザープログラムは、生じた不具合に応じて適宜変更されるものである。また、不具合解析に用いるＣＰＵコアとユーザープログラムの組み合わせは１つの解析処理中で変更して複数の組み合わせで解析処理を行うことで、解析の精度を向上させることができるため好ましい。
【００４１】
図２に示すように、実施の形態１にかかる半導体装置１では、デバッガ４１が解析コア２０に対して解析モード開始命令を発行することで開始される（ステップＳ１）。この解析モード開始命令には、解析モードで解析対象とする複数のＣＰＵコア及び解析モードで利用するプログラムを指定する制御パラメータが含まれる。また、解析モード開始命令には、解析制御プログラムのロード開始位置を示すスタートフェッチアドレスが含まれる。
【００４２】
次いで、解析コア２０が、解析モード開始命令に基づき解析用プログラム格納部２２から解析制御プログラムＡＣＰをロードし、解析制御プログラムに基づく動作を開始する（ステップＳ２）。次いで、解析コア２０は、解析モード開始命令に含まれる制御パラメータに基づき第１の解析処理向けのアクセス経路を設定する第１の解析用経路設定値ＡＣＳを生成する。そして、解析コア２０は、アクセス経路制御部３１に第１の解析用経路設定値ＡＣＳを与えて、ＣＰＵコアからプログラム格納部へのアクセス経路を切り替える（ステップＳ３）。
【００４３】
ここで、ステップＳ３で形成されるアクセス経路を図３を参照して説明する。図３は実施の形態１にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図３に示すように、図２に示す例では、この第１の解析用経路設定値ＡＣＳにより、ＣＰＵコア１０１とＣＰＵコア１０２がプログラム格納部１２１にアクセスする経路が形成される。そして、ＣＰＵコア１０１とＣＰＵコア１０２は共にユーザープログラムＵＰ２をロードする。また、次のステップＳ４の処理で生成される演算結果ＡＤ１、ＡＤ２は共に解析コア２０のローカル解析ＲＡＭ２１に転送される。
【００４４】
次いで、実施の形態１にかかる半導体装置１は、第１の解析処理として解析情報取得処理を行う（ステップＳ４）。この第１の解析処理では、ＣＰＵコア１０１及びＣＰＵコア１０２が共にユーザープログラムＵＰ１を実行することで得られる演算結果ＡＤ１、ＡＤ２に基づき解析コア２０が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【００４５】
次いで、解析コア２０は、解析モード開始命令に含まれる制御パラメータに基づき第２の解析処理向けのアクセス経路を設定する第２の解析用経路設定値ＡＣＳを生成する。そして、解析コア２０は、アクセス経路制御部３１に第２の解析用経路設定値ＡＣＳを与えて、ＣＰＵコアからプログラム格納部へのアクセス経路を切り替える（ステップＳ５）。
【００４６】
ここで、ステップＳ５で形成されるアクセス経路を図４を参照して説明する。図４は実施の形態１にかかる半導体装置の解析モードの第２の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図５に示すように、図２に示す例では、この第２の解析用経路設定値ＡＣＳにより、ＣＰＵコア１０１とＣＰＵコア１０２がプログラム格納部１２２にアクセスする経路が形成される。そして、ＣＰＵコア１０１とＣＰＵコア１０２は共にユーザープログラムＵＰ２をロードする。また、次のステップＳ６の処理で生成される演算結果ＡＤ１、ＡＤ２は共に解析コア２０のローカル解析ＲＡＭ２１に転送される。
【００４７】
次いで、実施の形態１にかかる半導体装置１は、第２の解析処理として解析情報取得処理を行う（ステップＳ６）。この第２の解析処理では、ＣＰＵコア１０１及びＣＰＵコア１０２が共にユーザープログラムＵＰ２を実行することで得られる演算結果ＡＤ１、ＡＤ２に基づき解析コア２０が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【００４８】
次いで、解析コア２０は、経路設定値ＡＣＳを通常動作モードの状態にリセットして解析モードを終了する（ステップＳ７）。
【００４９】
続いて、図２のステップＳ４、Ｓ６で実施する解析情報取得処理について説明する。ステップＳ４の解析情報取得処理とステップＳ６の解析情報取得処理では、実行するユーザープログラムが異なるみであり、その他の動作は同じであるため、ここではステップＳ４の解析情報取得処理のみ説明する。
【００５０】
図５に実施の形態１にかかる半導体装置の解析情報取得処理の処理フローを説明するフローチャートを示す。図５に示すように、解析情報取得処理では、まず、解析コア２０が、ＣＰＵコア１０１、１０２に実行させるプログラムを指定するフェッチアドレスの番号ｋを初期化する（ステップＳ１）。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの１つとして指定されるものである。
【００５１】
次いで、解析コア２０は、ＣＰＵコア１０１、１０２のプログラムカウンタ情報ＰＣにフェッチアドレスＦＡ（ｋ）を設定する（ステップＳ１２）。これにより、ＣＰＵコア１０１、１０２はフェッチアドレスＦＡ（ｋ）により指定されるプログラムステップの処理を開始する。そして、ＣＰＵコア１０１、１０２は、開始したプログラムステップの最後の行までのプログラムを実行する（ステップＳ１３）。このステップＳ１３のプログラムの実行により、ＣＰＵコア１０１のローカルＲＡＭ１１１には演算結果ＡＤ１が生成され、ＣＰＵコア１０２のローカルＲＡＭ１１２には演算結果ＡＤ２が生成される。
【００５２】
次いで、解析コア２０が、ＣＰＵコア１０１のローカルＲＡＭ１１１に保持された演算結果ＡＤ１と、ＣＰＵコア１０２のローカルＲＡＭ１１２に保持された演算結果ＡＤ２と、を解析用プログラム格納部２２に転送する（ステップＳ１４）。次いで、解析コア２０は、解析用プログラム格納部２２に保持されている演算結果ＡＤ１、ＡＤ２の差分情報を抽出して、この差分情報を解析情報として生成する。
【００５３】
実施の形態１にかかる半導体装置１では、ステップＳ１２からステップＳ１５までの処理をフェッチアドレスの番号ｋを１つずつ増加させながら、フェッチアドレスの番号ｋが最終の番号であるｍに達するまで繰り返す（ステップＳ１６、Ｓ１７）。そして、フェッチアドレスの番号がｍとなるプログラムステップの実行により得られる演算結果ＡＤ１、ＡＤ２に基づく解析情報の生成処理が完了したことに応じて、解析コア２０は解析情報取得処理を終了する。
【００５４】
続いて、図６に実施の形態１にかかる半導体装置のデバッグモードの処理フローを説明するフローチャートを示す。なお、図６で示す例は、ＣＰＵコア１０１〜１０ｎでコア解析プログラムＡＰを実行することで、コア解析プログラムＡＰの不具合の有無を検証するするものである。デバッグモードの動作で用いるＣＰＵコアには、ユーザープログラムの実行により不具合が生じるＣＰＵコアが含まれていれば良く、利用するＣＰＵコアの個数は、適宜変更されるものである。また、今回は説明を省略するが、コア解析プログラムＡＰとして不具合が生じていると考えらえる特定箇所を検査するプログラムを使用し、コア解析プログラムＡＰによりＣＰＵコアで生じる不具合を解析することもできる。
【００５５】
図６に示すように、実施の形態１にかかる半導体装置１では、デバッガ４１が解析コア２０に対してデバッグモード開始命令を発行することで開始される（ステップＳ２１）。このデバッグモード開始命令には、デバッグモードでコア解析プログラムＡＰを事項させるＣＰＵコア及びコア解析プログラムＡＰを指定する制御パラメータが含まれる。また、デバッグモード開始命令には、解析制御プログラムのロード開始位置を示すスタートフェッチアドレスが含まれる。
【００５６】
次いで、解析コア２０が、解析モード開始命令に基づき解析用プログラム格納部２２から解析制御プログラムＡＣＰをロードし、解析制御プログラムに基づく動作を開始する（ステップＳ２２）。次いで、解析コア２０は、デバッグモード開始命令に含まれる制御パラメータに基づきデバッグ処理向けのアクセス経路を設定するデバッグ用経路設定値ＡＣＳを生成する。そして、解析コア２０は、アクセス経路制御部３１にデバッグ用経路設定値ＡＣＳを与えて、ＣＰＵコアから解析用プログラム格納部２２へのアクセス経路が形成されるようにアクセス経路を切り替える（ステップＳ２３）。
【００５７】
ここで、ステップＳ２３で形成されるアクセス経路を図７を参照して説明する。図７は実施の形態１にかかる半導体装置のデバッグモードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図７に示すように、図６に示す例では、このデバッグ用経路設定値ＡＣＳにより、ＣＰＵコア１０１〜１０ｎが解析用プログラム格納部２２にアクセスする経路が形成される。そして、ＣＰＵコア１０１〜１０ｎはコア解析プログラムＡＰをロードする。また、次のステップＳ２４の処理で生成される演算結果ＡＤ１〜ＡＤｎは解析コア２０のローカル解析ＲＡＭ２１に転送される。
【００５８】
次いで、実施の形態１にかかる半導体装置１は、解析情報取得処理を行う（ステップＳ２４）。解析情報取得処理では、ＣＰＵコア１０１〜１０ｎがコア解析プログラムＡＰを実行することで得られる演算結果ＡＤ１〜ＡＤｎに基づき解析コア２０が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【００５９】
次いで、解析情報取得処理が終了すると、解析コア２０は、経路設定値ＡＣＳを通常動作モードの状態にリセットして解析モードを終了する（ステップＳ２５）。
【００６０】
続いて、図６のステップＳ２４で実施する解析情報取得処理について説明する。なお、コア解析プログラムＡＰに複数のプログラムステップが含まれている場合、解析情報を得るタイミングは、２通り考えられる。そこで、以下では解析情報を得るタイミングが異なる２つの解析情報取得処理について説明する。
【００６１】
図８に実施の形態１にかかる半導体装置の解析情報取得処理の処理フローの第１の例を説明するフローチャートを示す。この第１の例は、１つのプログラムステップが終了する毎に解析情報を生成する例である。図８に示すように、解析情報取得処理の第１の例では、まず、解析コア２０が、ＣＰＵコアに実行させるプログラムを指定するフェッチアドレスの番号ｋを初期化する（ステップＳ３０）。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの１つとして指定されるものである。次いで、解析コア２０は、コア解析プログラムＡＰを実行させるＣＰＵコアの番号ｉを初期化する（ステップＳ３１）。
【００６２】
次いで、解析コア２０は、ＣＰＵコア（ｉ）のプログラムカウンタ情報ＰＣにフェッチアドレスＦＡ（ｋ）を設定する（ステップＳ３３）。これにより、ＣＰＵコア（ｉ）はフェッチアドレスＦＡ（ｋ）により指定されるプログラムステップの処理を開始する。そして、ＣＰＵコア（ｉ）は、開始したプログラムステップの最後の行までのプログラムを実行する（ステップＳ３４）。このステップＳ３４のプログラムの実行により、ＣＰＵコア（ｉ）のローカルＲＡＭ（ｉ）には演算結果ＡＤ（ｉ）が生成される。
【００６３】
次いで、解析コア２０が、ＣＰＵコア（ｉ）のローカルＲＡＭ（ｉ）に保持された演算結果ＡＤ（ｉ）を解析用プログラム格納部２２に転送する（ステップＳ３５）。次いで、解析コア２０は、コア解析プログラムＡＰを実行させるＣＰＵコアの番号ｉを１つ増加させる（ステップＳ３７）。その後、実施の形態１にかかる半導体装置１は、ＣＰＵコアの番号ｉがｎ（ｎはＣＰＵコアの数を示す整数）に達するまでステップＳ３３からステップＳ３６の処理を繰り返す。
【００６４】
そして、ＣＰＵコア１０１〜１０ｎ（図８中のＣＰＵコア（１）〜（ｎ））においてフェッチアドレスＦＡ（ｋ）で指定されるプログラムステップを実行したことにより得られる演算結果ＡＤ１〜ＡＤｎが全て揃ったところで、解析コア２０が演算結果ＡＤ１〜ＡＤｎに基づき解析情報を生成する。
【００６５】
その後、実施の形態１にかかる半導体装置１では、フェッチアドレスの番号ｋを１つずつ増加させながらステップＳ３１からステップＳ３７までの処理を、フェッチアドレスの番号ｋが最終の番号であるｍに達するまで繰り返す（ステップＳ３８、Ｓ３９）。そして、フェッチアドレスの番号がｍとなるプログラムステップの実行により得られる演算結果ＡＤ１〜ＡＤｎに基づく解析情報の生成処理が完了したことに応じて、解析コア２０は解析情報取得処理を終了する。
【００６６】
図９に実施の形態１にかかる半導体装置の解析情報取得処理の処理フローの第２の例を説明するフローチャートを示す。この第２の例は、コア解析プログラムＡＰの実行が指示された全てのＣＰＵコアにおいて全てのプログラムステップが終了した後に解析情報を生成する例である。図９に示すように、解析情報取得処理の第２の例では、まず、解析コア２０は、コア解析プログラムＡＰを実行させるＣＰＵコアの番号ｉを初期化する（ステップＳ４０）。次いで、解析コア２０が、ＣＰＵコアに実行させるプログラムを指定するフェッチアドレスの番号ｋを初期化する（ステップＳ４１）。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの１つとして指定されるものである。
【００６７】
次いで、解析コア２０は、ＣＰＵコア（ｉ）のプログラムカウンタ情報ＰＣにフェッチアドレスＦＡ（ｋ）を設定する（ステップＳ４２）。これにより、ＣＰＵコア（ｉ）はフェッチアドレスＦＡ（ｋ）により指定されるプログラムステップの処理を開始する。そして、ＣＰＵコア（ｉ）は、開始したプログラムステップの最後の行までのプログラムを実行する（ステップＳ４３）。このステップＳ３４のプログラムの実行により、ＣＰＵコア（ｉ）のローカルＲＡＭ（ｉ）には演算結果ＡＤ（ｉ）が生成される。
【００６８】
次いで、解析コア２０が、ＣＰＵコア（ｉ）のローカルＲＡＭ（ｉ）に保持された演算結果ＡＤ（ｉ）を解析用プログラム格納部２２に転送する（ステップＳ４４）。次いで、解析コア２０は、フェッチアドレスの番号ｋを１つ増加させる（ステップＳ４７）。その後、実施の形態１にかかる半導体装置１は、フェッチアドレスの番号ｋが最終の番号であるｍに達するまでステップＳ４２からステップＳ４４の処理を繰り返す（ステップＳ４５）。
【００６９】
また、第２の例では、ＣＰＵコアの番号ｉを１つずつ増加させながらステップＳ４１からステップＳ４７までの処理を、ＣＰＵコアの番号ｋがｎに達するまで繰り返す（ステップＳ４７、Ｓ４８）。
【００７０】
そして、ＣＰＵコア１０１〜１０ｎ（図９中のＣＰＵコア（１）〜（ｎ））においてフェッチアドレスＦＡ（ｋ）〜ＦＡ（ｍ）で指定されるプログラムステップを実行したことにより得られる演算結果ＡＤ１〜ＡＤｎが全て揃ったところで、解析コア２０が演算結果ＡＤ１〜ＡＤｎに基づき解析情報を生成する（ステップＳ４９）。その後、解析コア２０は解析情報取得処理を終了する。
【００７１】
上記説明より、実施の形態１にかかる半導体装置１は、解析モードにおいて、１つのユーザープログラムを複数のＣＰＵコアにて実行させ、２つのＣＰＵコアが１つのユーザープログラムに基づき生成した２つの演算結果の差分情報を解析情報として得る。例えば、解析モードにおいて、不具合が生じているＣＰＵコア及びユーザープログラムの組み合わせを含むコアとプログラムの組み合わせで解析を行うことで差分情報として不具合か箇所が明確に判断出来る解析情報を得ることができる。
【００７２】
ここで、実施の形態１にかかる半導体装置１では、解析モードでユーザープログラムに基づく解析処理を行うことで、解析担当者が自ら解析箇所を特定するコア解析プログラムを作成する必要がない。これにより、実施の形態１にかかる半導体装置１を用いた解析では、コア解析プログラムの作成時間を削減することができる。また、実施の形態１にかかる半導体装置１を用いた解析では、ユーザープログラムを用いて不具合再現性の高い解析処理を行うことができる。テストエスケープ品では、当初想定されていない箇所で故障が生じている可能性が高い。そのため、テストエスケープ品については、不具合箇所を特定するのは極めて困難であり、不具合を特定するためのプログラムの作成に膨大な時間がかかる上に不具合再現性が必ずしも高いとは言えない。そのため、実施の形態１にかかる半導体装置１の解析モードに基づく解析時間の短縮及び不具合再現性の高さの効果は非常に大きい。
【００７３】
また、実施の形態１にかかる半導体装置１では、テストエスケープ品の比較対象となる良品サンプルを用意する必要も無い。また、実施の形態１にかかる半導体装置１では、半導体装置内の処理のみで解析モードの動作を完結することができるため、半導体装置の動作速度に起因して発生する不具合についても高い再現性で再現することができる。
【００７４】
また、実施の形態１にかかる半導体装置１では、解析用プログラム格納部２２に格納したコア解析プログラムＡＰをＣＰＵコア１０１〜１０ｎの少なくとも１つで実行させるデバッグモードを有する。上記解析モードで特定した不具合箇所を検出するためのコア解析プログラムＡＰを作成し、このコア解析プログラムＡＰの良否をデバッグモードで検証することができる。
【００７５】
なお、実施の形態１にかかる半導体装置１では、デバッグモードの動作を用いてＣＰＵコアの解析を行うこともできる。この場合、解析モードで実行するプログラムとしてコア解析プログラムＡＰを用いる。つまり、実施の形態１にかかる半導体装置１では、ＣＰＵコアの解析に用いることができるプログラムの種類が多様であり、ユーザープログラムの実行によっても再現できない不具合を解析者が作成したコア解析プログラムＡＰにより行うこともできる。
【００７６】
実施の形態２
実施の形態２では、実施の形態１にかかる半導体装置１の変形例となる半導体装置２について説明する。図１０に実施の形態２にかかる半導体装置２のブロック図を示す。なお、実施の形態２の説明では、実施の形態１で説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００７７】
図１０に示すように、実施の形態２にかかる半導体装置２は、ＣＰＵコア１０１〜１０ｎに代えてＣＰＵコア５０１〜５０ｎを有する。ＣＰＵコア５０１〜５０ｎは、ＣＰＵコア１０１〜１０ｎにリングバッファ５１１〜５１ｎを追加したものである。そこで、図１１に実施の形態２にかかる半導体装置における演算コアとリングバッファとの関係を説明するブロック図を示す。なお、リングバッファ５１１〜５１ｎは、いずれも同じもの出るため、ここではリングバッファ５１１についてのみ図１１に示した。
【００７８】
図１１に示すように、リングバッファ５１１は、ＣＰＵコア５０１内においてプログラムに含まれる動作命令を実行する演算コアと並列接続されるように設けられる。そして、リングバッファ５１１は、演算コアからフラッシュバス３０、システムバス４０、周辺回路インタフェース４４に対して出力されるアドレス信号、データ信号を含む信号をモニタし、リングバッファ５１１に入出力される信号を時系列順に取得して動作モニタ情報として保持する。そこで、リングバッファ５１１がモニタする信号の例を図１２を参照して説明する。
【００７９】
図１２は実施の形態２にかかる半導体装置のリングバッファが取得する情報を説明するブロック図である。図１２に示すように、演算コアは、メモリ（グローバＲＡＭ、プログラム格納領域）、周辺回路、ＩＯインタフェース、あるいは他の処理ブロックのレジスタ等に対してアクセスを行う際にアドレス信号、データ信号、制御信号（リード命令、ライト命令等）、インタフェース信号（チップセレクト信号、アクノレッジ信号等）を出力する。リングバッファ５１１は、このような演算コアが他の回路ブロックに対するアクセスにおいて用いる信号を時系列に動作モニタ情報として取得する。そして、実施の形態２にかかる半導体装置２では、各ＣＰＵコアが生成する演算結果ＡＤにリングバッファで取得された動作モニタ情報を含める。
【００８０】
上記説明より、実施の形態２にかかる半導体装置２では、演算結果ＡＤにプログラムの実行により最終的に得られる演算結果のみならず、ＣＰＵコアが他の回路にアクセスする際に用いる信号の時系列情報を含む。そして、実施の形態２にかかる半導体装置２において生成される解析情報に基づき半導体装置の動作状況を検証することで、実施の形態１にかかる半導体装置１で生成される解析情報に基づき半導体装置の動作状況を検証した場合よりも詳細な検証を行うことが可能になる。具体的には、ＣＰＵコアの不具合の原因が周辺回路にアクセスする際に生成したアドレス値の誤りにあるような場合、実施の形態１にかかる半導体装置１により生成される解析情報からはそのような状況を知ることができないが、実施の形態２にかかる半導体装置２により生成される解析情報に基づき検証をおこなうことでこのような状況を知ることができる。
【００８１】
実施の形態３
実施の形態３では、実施の形態１にかかる半導体装置１の変形例となる半導体装置３について説明する。図１３に実施の形態３にかかる半導体装置３のブロック図を示す。なお、実施の形態３の説明では、実施の形態１で説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００８２】
図１３に示すように、実施の形態３にかかる半導体装置３では、実施の形態１にかかる半導体装置１の解析コア２０を削除したものである。実施の形態３では、解析モード或いはデバッグモードにおいてＣＰＵコア１０１〜１０ｎのいずれか１つを解析コアと同じ機能を果たす解析マスタとする。
【００８３】
また、実施の形態３にかかる半導体装置３では、実施の形態１にかかる半導体装置１のアクセス経路制御部３１がアクセス経路制御部６１に置き換えられる。アクセス経路制御部６１は、アクセス経路制御部３１に解析マスタ設定レジスタ６２を追加したものである。アクセス経路制御部６１は、デバッガ４１から与えられる解析マスタ設定値ＡＭＳに基づき解析マスタに指定されたＣＰＵコアが解析用プログラム格納部２２にアクセスする経路を形成する。
【００８４】
具体的には、実施の形態３にかかる半導体装置３を解析モード或いはデバッグモードで動作させる際には、デバッガ４１が解析マスタ設定レジスタ６２に解析マスタ設定値ＡＭＳを与えて解析マスタに指定するＣＰＵコアから解析用プログラム格納部２２へのアクセス経路を形成する。その後、実施の形態３にかかる半導体装置３は、デバッガ４１により解析マスタとするＣＰＵコアに解析モード開始命令或いはデバッグモード開始命令を与え、これらモード開始命令を受けたＣＰＵコアを解析マスタに切り替える。このような処理を経た後に実施の形態３にかかる半導体装置３は、実施の形態１と同様な解析処理或いはデバッグ処理を行う。なお、解析マスタに設定するＣＰＵコアは不具合が生じていないＣＰＵコアであることが好ましい。
【００８５】
そこで、図１４に実施の形態３にかかる半導体装置の解析モードの処理フローを説明するフローチャートを示す。図１４に示す例は、ＣＰＵコア１０１を解析マスタとする例である。
【００８６】
図１４に示すように、実施の形態３にかかる半導体装置３は、まず、デバッガ４１が解析マスタ設定レジスタ６２に解析マスタ設定値ＡＭＳを与えて、解析マスタに指定するＣＰＵコア１０１から解析用プログラム格納部２２へのアクセス経路を形成する（ステップＳ５１）。次いで、実施の形態３にかかる半導体装置は、デバッガ４１により解析マスタとするＣＰＵコアに解析モード開始命令を発行し、解析モード開始命令を受けたＣＰＵコアを解析マスタに切り替える（ステップＳ５２）。そして、ステップＳ５２以降のステップＳ５３〜Ｓ５８では、ＣＰＵコア１０２及びＣＰＵコア１０ｎを用いて図２で説明した実施の形態１のステップＳ２からＳ７の処理を行う。
【００８７】
ここで、図１５に実施の形態３にかかる半導体装置３の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図１５に示すように、実施の形態３にかかる半導体装置３では、ＣＰＵコア１０１を解析マスタとし、ＣＰＵコア１０２及びＣＰＵコア１０ｎを用いて解析処理を行う。この場合、解析制御プログラムＡＣＰがＣＰＵコア１０１に読み込まれ、ＣＰＵコア１０２、１０ｎにユーザープログラムＵＰ２が読み込まれる。そして、ＣＰＵコア１０２、１０ｎで生成された演算結果ＡＤ２、ＡＤｎはＣＰＵコア１０１のローカルＲＡＭ１１１に集められる。
【００８８】
上記説明では、実施の形態３にかかる半導体装置３を解析モードで動作させる場合について説明したが、解析コアとして機能させる解析マスタを指定するステップＳ５１、Ｓ５２を実行することで、実施の形態３にかかる半導体装置３をデバッグモードで動作させることが可能である。
【００８９】
上記説明より、実施の形態３にかかる半導体装置３では、解析コアを個別の回路として設けることなく、解析モード或いはデバッグモードで動作する場合に複数のＣＰＵコアの１つを解析コアと同等の機能を発揮する解析マスタに指定する。これにより、実施の形態３にかかる半導体装置３では、解析コアを設けるための回路面積を削減し、チップ面積を小さくすることができる。特に解析コアはＣＰＵコアと同等の回路規模を有するものであり、この解析コアに要する回路面積を削減する効果は大きい。
【００９０】
実施の形態４
実施の形態４では、実施の形態３にかかる半導体装置３の変形例となる半導体装置４について説明する。図１６に実施の形態４にかかる半導体装置４のブロック図を示す。なお、実施の形態４の説明では、実施の形態１、３で説明した構成要素については同じ構成要素については実施の形態１、３と同じ符号を付して説明を省略する。
【００９１】
図１６に示すように、実施の形態４にかかる半導体装置４は、実施の形態３にかかる半導体装置３から解析用プログラム格納部２２を削除したものである。また、実施の形態４にかかる半導体装置４では、アクセス経路制御部６３に代えてアクセス経路制御部３１が用いられる。つまり、実施の形態４にかかる半導体装置４は、実施の形態１にかかる半導体装置１から解析コア２０及び解析用プログラム格納部２２を削除したものと捉えることもできる。
【００９２】
また、実施の形態４にかかる半導体装置４では、解析制御プログラムＡＣＰをグローバルＲＡＭ４３に格納する。つまり、実施の形態４にかかる半導体装置４では、解析用ローカルメモリ領域（例えば、解析用プログラム格納部２２）として、ＣＰＵコア１０１〜１０ｎのいずれのＣＰＵコアからもアクセス可能な周辺回路の１つであるグローバルメモリ領域（グローバルＲＡＭ４３）を用いる。
【００９３】
そして、実施の形態４にかかる半導体装置４では、デバッガ４１により解析マスタとして機能するように指示された第３の演算コア（例えば、ＣＰＵコア）は、デバッガ４１から与えられる解析マスタ設定値ＡＭＳに基づきグローバルＲＡＭ４３から解析制御プログラムＡＣＰをロードすることで解析コアとして機能する。
【００９４】
ここで、図１７に実施の形態４にかかる半導体装置４の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図１７に示すように、実施の形態４にかかる半導体装置４では、ＣＰＵコア１０１を解析マスタとし、ＣＰＵコア１０２及びＣＰＵコア１０ｎを用いて解析処理を行う。この場合、解析制御プログラムＡＣＰは、グローバルＲＡＭ４３からＣＰＵコア１０１に読み込まれ、ＣＰＵコア１０２、１０ｎにユーザープログラムＵＰ２が読み込まれる。そして、ＣＰＵコア１０２、１０ｎで生成された演算結果ＡＤ２、ＡＤｎはＣＰＵコア１０１のローカルＲＡＭ１１１に集められる。
【００９５】
なお、グローバルＲＡＭ４３には、解析制御プログラムＡＣＰのみならず、コア解析プログラムＡＰを格納することも可能である。また、グローバルＲＡＭ４３への解析制御プログラムＡＣＰ及びコア解析プログラムＡＰの格納は、解析又はデバッグを行う際に外部に接続されるホストコンピュータから入れることが好ましい。このように必要なときにのみ解析制御プログラムＡＣＰ及びコア解析プログラムＡＰをグローバルＲＡＭ４３に格納することで、実際に半導体装置を利用するときのグローバルＲＡＭ４３の利用可能な容量を増やすことできる。
【００９６】
上記説明より、実施の形態４にかかる半導体装置４は、解析コア２０及び解析用プログラム格納部２２を設けることなく、実施の形態１にかかる半導体装置１と同様な解析処理或いはデバッグ処理を行うことができる。これにより、実施の形態４にかかる半導体装置４は、実施の形態３にかかる半導体装置３よりも更にチップ面積を小さくすることができる。
【００９７】
実施の形態５
実施の形態５では、実施の形態１にかかる半導体装置１の変形例となる半導体装置５について説明する。図１８に実施の形態５にかかる半導体装置５のブロック図を示す。なお、実施の形態５の説明では、実施の形態１で説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００９８】
図１８に示すように、実施の形態５にかかる半導体装置５は、ＣＰＵコア１０１〜１０ｎに代えてＣＰＵコア７０１〜７０ｎを有する。また、実施の形態５にかかる半導体装置５は、アクセス経路制御部３１に代えてアクセス制御部８１を有する。
【００９９】
ＣＰＵコア７０１〜７０ｎは、それぞれ、マスタＣＰＵコア（符号末尾にＭが付されたＣＰＵコア）と、スレーブＣＰＵコア（符号末尾にＳが付されたＣＰＵコア）を有する。マスタＣＰＵコアとスレーブＣＰＵコアは、同一の回路構成を有するものである。また、マスタＣＰＵコアとスレーブＣＰＵコアには、それぞれリングバッファ（図１８中の７２１Ｍ〜７２ｎＭ、及び、７２１Ｓ〜７２ｎＳ）が設けられる。また、各ＣＰＵコアは、マスタＣＰＵコアとスレーブＣＰＵコアとで共通に用いられるローカルＲＡＭ（図１８中の７１１〜７１ｎ）を有する。なお、リングバッファ７２１Ｍ〜７２ｎＭ、７２１Ｓ〜７２ｎＳは、実施の形態２で説明したリングバッファ５１１〜５１ｎと同じものである。
【０１００】
マスタＣＰＵコアとスレーブＣＰＵコアは、同率のクロックタイミングで同じプログラムステップを実行するロックステップ動作を行う。このロックステップ動作では、２つのＣＰＵコアが１つのプログラムを重複して実行することになる。そして、実施の形態５にかかる半導体装置５では、後述するリングバッファ比較部８３において１つのＣＰＵコアに属するリングバッファの出力値を比較し、２つのリングバッファの出力値に違いが有った場合にマスタＣＰＵコアとスレーブＣＰＵコアのいずれかで不具合が生じたと判断し、エラー信号ＥＲＲを出力する。
【０１０１】
アクセス制御部８１は、実施の形態１にかかる半導体装置１のアクセス経路制御部３１に比較設定レジスタ８２及びリングバッファ比較部８３を追加したものである。比較設定レジスタ８２は、リングバッファ比較部８３が比較対象とするリングバッファの出力値の組み合わせを指定するバッファ比較設定値ＢＣＳを格納する。リングバッファ比較部８３は、バッファ比較設定値ＢＣＳに基づき指定される組み合わせでリングバッファの出力値を比較して、出力値間に不一致が発生した場合にエラー信号ＥＲＲを出力する。
【０１０２】
このバッファ比較設定値ＢＣＳは、解析コア２０が解析制御プログラムＡＣＰを実行することで値が書き換えられる。具体的には、解析コア２０は、通常動作モードでは、１つのＣＰＵコア内に設けられるリングバッファ間の出力値を比較する（つまり、マスタＣＰＵコアのリングバッファの出力値とスレーブＣＰＵコアの出力値とを比較する）ように値を設定する。
【０１０３】
また、解析コア２０は、解析モード、或いは、デバッグモードにおいては、異なるＣＰＵコアに属するリングバッファの出力値を比較対象とするようにバッファ比較設定値ＢＣＳを書き換える。そして、解析コア２０は、解析モード終了時に、同一のＣＰＵコアに属するリングバッファの出力値を比較対象とするようにバッファ比較設定値ＢＣＳを書き戻す。
【０１０４】
また、実施の形態５にかかる半導体装置５では、通常動作モードにおいて、リングバッファ比較部８３から出力されるエラー信号ＥＲＲがデバッガ４１に通知された場合に、解析コア２０に解析モードによる動作の開始を解析コア２０に指示する。
【０１０５】
ここで、図１９に実施の形態５にかかる半導体装置の通常動作モードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図１９に示すように、通常動作モードでは、実施の形態５にかかる半導体装置５は、各ＣＰＵコアが、各ＣＰＵコアに対して占有メモリ領域として割り当てられたプログラム格納部に格納されたユーザープログラムをロードして、マスタＣＰＵコアとスレーブＣＰＵコアによるロックステップ動作によりユーザープログラムを実行する。そして、実施の形態５にかかる半導体装置５は、通常動作モードにおいては、１つのＣＰＵコアに属する複数のリングバッファの出力値を比較することでエラー信号ＥＲＲを出力する。
【０１０６】
また、図２０に実施の形態５にかかる半導体装置の解析モードの第１の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図１９に示すように、解析モードの第１の解析処理モードでは、実施の形態５にかかる半導体装置５は、ＣＰＵコア７０１、７０ｎが、ＣＰＵコア１０１に対して占有メモリ領域として割り当てられたプログラム格納部１２１に格納されたユーザープログラムＵＰ１をロードして、マスタＣＰＵコアとスレーブＣＰＵコアによるロックステップ動作によりユーザープログラムＵＰ１を実行する。そして、実施の形態５にかかる半導体装置５の解析モードの第１の解析処理においては、異なるＣＰＵコアに属する複数のリングバッァの出力値を比較することでエラー信号ＥＲＲを出力する。図１９に示す例では、リングバッファ比較部８３は、ＣＰＵコア７０１に属するリングバッファ７２１Ｍの出力値とＣＰＵコア７０ｎに属するリングバッファ７２ｎＭｎの出力値とを比較し、ＣＰＵコア７０１に属するリングバッファ７２１Ｓの出力値とＣＰＵコア７０ｎに属するリングバッファ７２ｎＳの出力値とを比較する。
【０１０７】
上記説明より、実施の形態５にかかる半導体装置５では、ロックステップ動作するマスタＣＰＵコアとスレーブＣＰＵコアにそれぞれ設けられたリングバッファの出力値を比較することで、ＣＰＵコアで生じた不具合を検出する。また、解析モードにおいては、異なるＣＰＵコアに属するリングバッファの出力値を比較することで不具合を検出する。この解析モードでは、比較対象とするリングバッファの出力値の組み合わせを変更しながら、複数回の比較処理を行うことで、不具合が発生しているＣＰＵコアを特定することができる。
【０１０８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１０９】
１〜５  半導体装置
１０１〜１０ｎ、５０１〜５０ｎ、７０１〜７０ｎ  ＣＰＵコア
１１１〜１１ｎ、７１１〜７１ｎ  ローカルＲＡＭ
１２１〜１２ｎ  プログラム格納部
２０  解析コア
２１  ローカル解析ＲＡＭ
２２  解析用プログラム格納部
３０  フラッシュバス
３１、６１、８１  アクセス経路制御部
３２  経路設定レジスタ
４０  システムバス
４１  デバッガ
４２  ＤＭＡＣ
４３  グローバルＲＡＭ
４４  周辺回路インタフェース
４５  周辺回路
５１１〜５１ｎ、７２１〜７２ｎ  リングバッファ
６２  解析マスタ設定レジスタ
７０１Ｍ〜７０ｎＭ  マスタＣＰＵコア
７０１Ｓ〜７０ｎＳ  スレーブＣＰＵコア
８２  比較設定レジスタ
８３  リングバッファ比較部
ＡＣＰ  解析制御プログラム
ＡＰ  コア解析プログラム
ＵＰ１〜ＵＰｎ  ユーザープログラム
ＡＣＳ  経路設定値
ＡＤ  演算結果
ＡＭＳ  解析マスタ設定値
ＢＣＳ  バッファ比較設定値
ＬＷ  論理障壁
【図１】
2019008700.tif 000003
【図２】
2019008700.tif 000004
【図３】
2019008700.tif 000005
【図４】
2019008700.tif 000006
【図５】
2019008700.tif 000007
【図６】
2019008700.tif 000008
【図７】
2019008700.tif 000009
【図８】
2019008700.tif 000010
【図９】
2019008700.tif 000011
【図１０】
2019008700.tif 000012
【図１１】
2019008700.tif 000013
【図１２】
2019008700.tif 000014
【図１３】
2019008700.tif 000015
【図１４】
2019008700.tif 000016
【図１５】
2019008700.tif 000017
【図１６】
2019008700.tif 000018
【図１７】
2019008700.tif 000019
【図１８】
2019008700.tif 000020
【図１９】
2019008700.tif 000021
【図２０】
2019008700.tif 000022