特許第6786448号(P6786448)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧
<>
  • 特許6786448-半導体装置 図000002
  • 特許6786448-半導体装置 図000003
  • 特許6786448-半導体装置 図000004
  • 特許6786448-半導体装置 図000005
  • 特許6786448-半導体装置 図000006
  • 特許6786448-半導体装置 図000007
  • 特許6786448-半導体装置 図000008
  • 特許6786448-半導体装置 図000009
  • 特許6786448-半導体装置 図000010
  • 特許6786448-半導体装置 図000011
  • 特許6786448-半導体装置 図000012
  • 特許6786448-半導体装置 図000013
  • 特許6786448-半導体装置 図000014
  • 特許6786448-半導体装置 図000015
  • 特許6786448-半導体装置 図000016
  • 特許6786448-半導体装置 図000017
  • 特許6786448-半導体装置 図000018
  • 特許6786448-半導体装置 図000019
  • 特許6786448-半導体装置 図000020
  • 特許6786448-半導体装置 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6786448
(24)【登録日】2020年10月30日
(45)【発行日】2020年11月18日
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 11/22 20060101AFI20201109BHJP
   G06F 15/78 20060101ALI20201109BHJP
   G06F 11/16 20060101ALI20201109BHJP
【FI】
   G06F11/22 636
   G06F11/22 673A
   G06F15/78 516
   G06F11/16 629
【請求項の数】12
【全頁数】25
(21)【出願番号】特願2017-126170(P2017-126170)
(22)【出願日】2017年6月28日
(65)【公開番号】特開2019-8700(P2019-8700A)
(43)【公開日】2019年1月17日
【審査請求日】2019年11月15日
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】塩澤 健治
(72)【発明者】
【氏名】中村 好秀
(72)【発明者】
【氏名】李 拓也
(72)【発明者】
【氏名】中臺 浩
(72)【発明者】
【氏名】国分 徹也
(72)【発明者】
【氏名】佐々木 宏幸
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2010−176392(JP,A)
【文献】 特開平5−53854(JP,A)
【文献】 特開2007−172430(JP,A)
【文献】 特開2006−146412(JP,A)
【文献】 特開2012−198805(JP,A)
【文献】 国際公開第2008/053709(WO,A1)
【文献】 特開2016−42336(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 11/16
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
第1のコード領域に格納される第1のプログラムを第1のローカルメモリ領域を用いて実行する第1の演算コアと、
前記第1のコード領域とは異なる第2のコード領域に格納される第2のプログラムを第2のローカルメモリ領域を用いて実行する第2の演算コアと、
解析制御プログラムが格納される解析用コード領域と、
前記解析制御プログラムの実行結果を保持する解析用ローカルメモリ領域と、
前記第1の演算コアと前記第2の演算コアとの不具合を解析する解析モードにおいて前記第1の演算コア又は前記第2の演算コアのプログラム実行状況を前記解析制御プログラムに基づき制御する解析コアと、
前記第1の演算コアと前記第2の演算コアとがそれぞれ独立して動作する通常動作モードにおいて、前記第1の演算コアによる前記第2のコード領域へのアクセス及び前記第2の演算コアによる前記第1のコード領域へのアクセスを防止するアクセス経路制御部と、を有し、
前記アクセス経路制御部は、前記解析モードの期間中、第1の解析処理において前記解析コアからの指示に基づき、前記第1のプログラムを前記第1の演算コア及び前記第2の演算コアに読み出すようにアクセス経路を切り替え、第2の解析処理において前記第2のプログラムを前記第1の演算コア及び前記第2の演算コアに読み出すようにアクセス経路を切り替え、
前記解析コアは、前記第1の解析処理において、前記第1のプログラムに基づき前記第1の演算コアにより生成された第1の演算結果データと、前記第1のプログラムに基づき前記第2の演算コアにより生成された第2の演算結果データとを比較し、かつ、前記第2の解析処理において、前記第2のプログラムに基づき前記第1の演算コアにより生成された第3の演算結果データと、前記第2のプログラムに基づき前記第2の演算コアにより生成された第4の演算結果データとを比較することで、前記第1の演算コア、前記第2の演算コア及びこれらに用いられる回路の不具合解析に用いる解析情報を生成する半導体装置。
【請求項2】
前記解析用コード領域には、前記第1の演算コア及び前記第2の演算コアに対して特定のテストシーケンスを実行するコア解析プログラムが格納され、
前記解析コアは、デバックモードにおいて、前記第1の演算コア及び前記第2の演算コアに前記コア解析プログラムを実行させ、前記コア解析プログラムに基づき生成された第5の演算結果データに基づき前記解析情報を生成する請求項1に記載の半導体装置。
【請求項3】
前記アクセス経路制御部は、前記解析コアから与えられる経路設定値を保持する経路設定レジスタを有し、前記経路設定値に基づき前記第1の演算コアと前記第2の演算コアのアクセス先となるコード領域を切り替える請求項1に記載の半導体装置。
【請求項4】
前記解析コアに前記解析制御プログラムに基づく動作を開始させる指示を行うデバッガを更に有する請求項1に記載の半導体装置。
【請求項5】
前記第1の演算コア及び前記第2の演算コアとバスを介して接続される複数の周辺回路を有し、
前記第1の演算コア及び前記第2の演算コアは、前記解析モードにおいて前記複数の周辺回路の少なくとも1つを利用しながら前記第1のプログラム又は前記第2のプログラムを実行する請求項1に記載の半導体装置。
【請求項6】
前記複数の周辺回路には、タイマ、アナログデジタル変換回路、コプロセッサ、メモリ、ダイレクメモリアクセスコントローラ、PWM信号生成回路、通信インタフェース回路、入出力インタフェース回路の少なくとも1つが含まれる請求項5に記載の半導体装置。
【請求項7】
前記第1の演算コア及び前記第2の演算コアは、それぞれリングバッファを有し、
前記リングバッファは、前記第1の演算コア及び前記第2の演算コアに入出力される信号を時系列順に取得して、動作モニタ情報として保持し、
前記第1の演算結果データから前記第4の演算結果データには、前記リングバッファで保持された前記動作モニタ情報が含まれる請求項1に記載の半導体装置。
【請求項8】
前記第1のコード領域及び前記第2のコード領域とは異なる第3のコード領域に格納される第3のプログラムを第3のローカルメモリ領域を用いて実行する第3の演算コアと、
前記第1の演算コアから前記第3の演算コアに対して前記解析モードに基づく動作を行うか否かの指示を与えるデバッガと、をさらに有し、
前記第3の演算コアは、前記解析モードにおいて、前記デバッガの指示に基づき前記解析コアとして動作する請求項1に記載の半導体装置。
【請求項9】
前記アクセス経路制御部は、前記デバッガから与えられる解析マスタ設定値を保持する解析マスタ設定レジスタを有し、前記解析マスタ設定値に基づき前記第3の演算コアのアクセス先のコード領域を前記解析用コード領域に切り替える請求項8に記載の半導体装置。
【請求項10】
前記解析用ローカルメモリ領域は、前記第1の演算コアから前記第3の演算コアのいずれの演算コアからもアクセス可能な周辺回路の1つであるグローバルメモリ領域であり、
前記第3の演算コアは、前記デバッガから与えられる解析マスタ設定値に基づき前記グローバルメモリ領域から前記解析制御プログラムをロードすることで前記解析コアとして機能する請求項8に記載の半導体装置。
【請求項11】
前記第1の演算コア及び前記第2の演算コアは、それぞれ、
同一回路構成のマスタコア及びスレーブコアと、
前記マスタコア及び前記スレーブコアのそれぞれに対応して設けられる複数のリングバッファと、
前記第1の演算コア及び前記第2の演算コアが共用するローカルメモリ領域と、を有し、
比較対象とする前記リングバッファの出力値の組み合わせを指定するバッファ比較設定値が格納される比較設定レジスタと、
前記バッファ比較設定値に基づき指定される組み合わせで前記リングバッファの出力値を比較して、前記出力値間に不一致が発生した場合にエラー信号を出力するリングバッファ比較部と、を有し、
前記解析コアは、
前記解析モードにおいて、異なる演算コアに属する前記リングバッファの出力値を比較対象とするように前記バッファ比較設定値を書き換え、
前記解析モード終了時に、同一の演算コアに属する前記リングバッファの出力値を比較対象とするように前記バッファ比較設定値を書き戻す請求項1に記載の半導体装置。
【請求項12】
前記通常動作モードにおいて、前記リングバッファ比較部から出力される前記エラー信号に基づき前記解析コアに前記解析モードによる動作の開始を指示するデバッガを更に有する請求項11に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体装置に関し、例えば1つの半導体チップ上に複数のCPUコアが設けられる半導体装置に関する。
【背景技術】
【0002】
半導体装置は、工場出荷前に製品が仕様を満たしていることを確認するファイナルテストを全品に対して行う。しかしながら、このファイナルテストをパスした製品であっても顧客工程にて不具合が発覚することがある。この顧客不具合品については、再度ファイナルテストを実施してもパスしてしまうことあり、このような顧客不具合品をテストエスケープ品と称す。テストエスケープ品は、ファイナルテストはパスするものの顧客工程においては不具合品であり、このような製品を市場に流通させないためには、ファイナルテストにこの不具合を検出するためのテスト工程を組み込む必要がある。このようなことから、テストエスケープ品で生じている不具合の事象を解析する必要がある。このような解析手法の一例が特許文献1に開示されている。
【0003】
特許文献1に記載の技術では、ホストPC上でデバッガが動作し、デバッガの操作に応じて2つのマイクロプロセッサA、BがデバッグI/F装置A、Bを介して同一のデバッグ動作を並行して実行し、マイクロプロセッサA、Bから得られた内部情報(ダンプ結果)はホストPCに転送され、ホストPC120で比較し不良解析を行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−176392号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載の技術では、デバック処理に用いる環境がテストエスケープ品とは異なる問題がある。例えば、特許文献1に記載の技術では、良品サンプルとテストエスケープ品をそれぞれI/F装置によりホストPCと接続するためテストエスケープ品の実際の動作速度を再現できない、テストエスケープ品で実際に不具合が生じたプログラムを入手できない等の動作環境の違いがある。つまり、特許文献1に記載の技術では、不具合再現性が低いという問題があった。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
一実施の形態によれば、半導体装置は、第1のコード領域に格納される第1のプログラムを第1のローカルメモリ領域を用いて実行する第1の演算コアと、第2のコード領域に格納される第2のプログラムを第2のローカルメモリ領域を用いて実行する第2の演算コアと、を有し、解析モードにおいて、第1の演算コア及び第2の演算コアの両方に第1のプログラムを実行させる第1の解析処理と、第1の演算コア及び第2の演算コアの両方に第2のプログラムを実行させる第2の解析処理と、を行い、第1の解析処理と第2の解析処理とで得られた複数の演算結果データを比較することで不具合解析に用いる解析情報を得る。
【発明の効果】
【0008】
前記一実施の形態によれば、不具合再現性の高い解析処理を行うことができる。
【図面の簡単な説明】
【0009】
図1】実施の形態1にかかる半導体装置のブロック図である。
図2】実施の形態1にかかる半導体装置の解析モードの処理フローを説明するフローチャートである。
図3】実施の形態1にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図4】実施の形態1にかかる半導体装置の解析モードの第2の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図5】実施の形態1にかかる半導体装置の解析情報取得処理の処理フローを説明するフローチャートである。
図6】実施の形態1にかかる半導体装置のデバッグモードの処理フローを説明するフローチャートである。
図7】実施の形態1にかかる半導体装置のデバッグモードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図8】実施の形態1にかかる半導体装置の解析情報取得処理の処理フローの第1の例を説明するフローチャートである。
図9】実施の形態1にかかる半導体装置の解析情報取得処理の処理フローの第2の例を説明するフローチャートである。
図10】実施の形態2にかかる半導体装置のブロック図である。
図11】実施の形態2にかかる半導体装置における演算コアとリングバッファとの関係を説明するブロック図である。
図12】実施の形態2にかかる半導体装置のリングバッファが取得する情報を説明するブロック図である。
図13】実施の形態3にかかる半導体装置のブロック図である。
図14】実施の形態3にかかる半導体装置の解析モードの処理フローを説明するフローチャートである。
図15】実施の形態3にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図16】実施の形態4にかかる半導体装置のブロック図である。
図17】実施の形態4にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図18】実施の形態5にかかる半導体装置のブロック図である。
図19】実施の形態5にかかる半導体装置の通常動作モードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
図20】実施の形態5にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。
【発明を実施するための形態】
【0010】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0011】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(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)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0012】
実施の形態1
図1に実施の形態1にかかる半導体装置1のブロック図を示す。実施の形態1にかかる半導体装置1は、それぞれが独立してプログラムを実行可能な複数のCPUコアを有する。そして、実施の形態1にかかる半導体装置1は、複数のCPUコアが、それぞれのCPUコアが占有するメモリに格納されたプログラムを独立して実行する通常動作モードに加えて解析モードとデバッグモードを有する。
【0013】
解析モードでは、自CPUコアが通常動作モードではアクセスできない他のCPUコアに対応したメモリ領域にアクセスを許可して自CPUコアと他のCPUコアとで1つのメモリ領域に格納されたプログラムを実行する。
【0014】
デバッグモードでは、通常動作モードにおいて用いられないコア解析プログラムをCPUコアで実行する。また、このコア解析プログラムは、通常動作モードではCPUコアがアクセスできないメモリ領域に格納される。
【0015】
このような実施の形態1にかかる半導体装置1について以下で詳細に説明する。図1に示すように、実施の形態1にかかる半導体装置1は、CPUコア101〜10n(nはCPUコアの数を示す整数)、ローカルRAM111〜11n、プログラム格納部121〜12n、解析コア20、ローカル解析RAM21、解析用プログラム格納部22、フラッシュバス30、アクセス経路制御部31、システムバス40、デバッガ41、DMAC(ダイレクトメモリアクセスコントローラ)42、グローバルRAM43、周辺回路インタフェース44、周辺回路451〜45nを有する。
【0016】
なお、以下の説明では、第1の演算コアは、CPUコア101〜10nのうちの1つであり、第2の演算コアは、CPUコア101〜10nの他の1つであるが、第1の演算コアとしてCPUコア101を用い、第2の演算コアとしてCPUコア102を用いる例について説明する。
【0017】
また、第1のローカルメモリ領域は、第1の演算コアに対応して設けられるローカルメモリ領域であり、第1の演算コアをCPUコア101とした場合、ローカルRAM111となる。第2のローカルメモリ領域は、第2の演算コアに対応して設けられるローカルメモリ領域であり、第2の演算コアをCPUコア102とした場合、ローカルRAM112となる。
【0018】
また、第1のコード領域は、第1の演算コアに対応して設けられるコード領域であり、第1の演算コアをCPUコア101とした場合、プログラム格納部121となる。第2のコード領域は、第2の演算コアに対応して設けられるコード領域であり、第2の演算コアをCPUコア102とした場合、プログラム格納部122となる。
【0019】
また、第1のプログラムは、第1の演算コアに対応して設けられる第1のコード領域に格納されるプログラムであって、第1の演算コアをCPUコア101とした場合、プログラム格納部121に格納されるユーザープログラムUP1である。第2のプログラムは、第2の演算コアに対応して設けられる第2のコード領域に格納されるプログラムであって、第2の演算コアをCPUコア102とした場合、プログラム格納部122に格納されるユーザープログラムUP2である。
【0020】
CPUコア101〜10nは、プログラムを実行する演算コアである。CPUコア101〜10nは、それぞれ対応して設けられるプログラム格納部121〜12nに格納されたプログラムを、CPUコア毎の占有メモリ領域として設けられたローカルRAM111〜11nを用いて実行する。具体的には、CPUコア101を第1の演算コアとした場合、CPUコア101は、第1のコード領域(例えば、プログラム格納部121)に格納される第1のプログラム(例えば、ユーザープログラムUP1)を第1のローカルメモリ領域(例えば、ローカルRAM111)を用いて実行する。また、CPUコア102を第2の演算コアとした場合、CPUコア102は、第2のコード領域(例えば、プログラム格納部122)に格納される第2のプログラム(例えば、ユーザープログラムUP2)を第2のローカルメモリ領域(例えば、ローカルRAM112)を用いて実行する。
【0021】
解析コア20は、解析用コード領域(例えば、解析用プログラム格納部22)に格納された解析制御プログラムACPを読み出して実行する。ローカル解析RAM21は、解析コア20が占有するメモリ領域であって、解析コア20が実行する解析制御プログラムの実行結果を保持する。また、実施の形態1では、解析用プログラム格納部22には、解析制御プログラムACPに加えてコア解析プログラムAPが格納される。
【0022】
解析コア20は、通常動作モードにおいてはプログラムを実行しない停止状態を維持する。そして、解析コア20は、解析モード及びデバッグモードにおいて、デバッガ41から与えられる動作開始命令(例えば、解析モード開始命令及びデバッグモード開始命令)に基づき解析制御プログラムACPを実行することでCPUコア101〜10nのプログラム実行状況を制御する。
【0023】
そして、解析コア20は、解析モード中は、解析対象のCPUコアに実行するプログラムを指定し、解析対象のCPUコアがプログラムを実行することにより生成する演算結果データを収集する。そして、解析コア20は、収集した演算結果データの差分情報から不具合解析に用いる解析情報を生成する。
【0024】
具体的な一例を挙げると、解析コア20は、解析モードで動作する期間中に行われる第1の解析処理において、ユーザープログラムUP1に基づきCPUコア101により生成された第1の演算結果データAD1と、ユーザープログラムUP1に基づきCPUコア102により生成された第2の演算結果データAD2とを比較する。また、解析コア20は、解析モードで動作する期間中に行われる第2の解析処理において、ユーザープログラムUP2に基づきCPUコア101により生成された第3の演算結果データAD1と、ユーザープログラムUP2に基づきCPUコア102により生成された第4の演算結果データAD2とを比較する。そして、解析コア20は、第1の解析処理及び第2の解析処理により取得された第1の演算結果データから第4の演算結果データを用いてCPUコア101、102及びこれらに用いられる回路の不具合解析に用いる解析情報を生成する。
【0025】
また、解析コア20は、デバックモードにおいて、CPUコア101〜10nの少なくとも1つにコア解析プログラムAPを実行させる。そして、解析コア20は、コア解析プログラムAPに基づき生成された第5の演算結果データに基づき解析情報を生成する。
【0026】
フラッシュバス30は、CPUコア101〜10n及び解析コア20と、プログラム格納部121〜12n及び解析用プログラム格納部22と、のデータの送受信経路となるものであり、送受信されるデータの経路を制御する。具体的には、フラッシュバス30は、CPUコア101〜10n及び解析コア20から出力されるアドレス信号及びアクセス制御信号に基づきアクセス先として指定されたプログラム格納領域とアクセス要求元のコアとの間でデータを送受信する。
【0027】
また、フラッシュバス30は、CPUコア101〜10nから出力されるアドレス信号及びアクセス制御信号に含まれるCPUコアの識別子に基づき論理障壁LWを形成する。そして、フラッシュバス30は、論理障壁LWに基づき1つのCPUコアが自CPUコアに割り当てられたプログラム領域以外の領域にアクセスすることを禁止する。これにより、実施の形態1にかかる半導体装置1では、後述するアクセス経路制御部31が通常動作モードの設定値に基づき動作している期間は、CPUコア101はプログラム格納部121にしかアクセスが許可されず、CPUコア102はプログラム格納部122にしかアクセスが許可されない状態となる。
【0028】
アクセス経路制御部31は、CPUコア101〜10nがそれぞれ独立して動作する通常動作モードにおいて、第1の演算コア(例えば、CPUコア101)による第2のコード領域(例えば、プログラム格納部122)へのアクセス及び第2の演算コア(例えば、CPUコア102)による第1のコード領域(例えば、プログラム格納部121)へのアクセスを防止する。具体的には、アクセス経路制御部31は、CPUコア101〜10nから出力されたアドレス信号及びアクセス制御信号をそのままフラッシュバス30に伝達することで、前述の通常動作モードの制御を行う。
【0029】
一方、アクセス経路制御部31は、解析モード或いはデバッグモードにおいては、フラッシュバス30により形成される論理障壁LWを超える範囲のメモリ領域に対してCPUコア101〜10nがアクセス可能になるようにアドレス信号及びアクセス制御信号の置き換えを行う。具体的には、アクセス経路制御部31は、解析モード或いはデバッグモードにおいて、各CPUコアから出力されたアドレス信号及びアクセス制御信号に含まれる識別子をアクセス先のプログラム領域にアクセス可能なCPUコアのものに置き換える。これにより、フラッシュバス30は、置き換えられた識別子に基づき各CPUコアから置き換えられた識別子を有するCPUコアにのみアクセス許可がされたプログラム領域へのアクセスを許可する。
【0030】
具体的な一例を挙げると、アクセス経路制御部31は、解析モードの期間中、第1の解析処理において解析コア20からの指示に基づき、ユーザープログラムUP1をCPUコア101及びCPUコア102に読み出すようにアクセス経路を切り替え、第2の解析処理においてユーザープログラムUP2をCPUコア101及びCPUコア102に読み出すようにアクセス経路を切り替える。
【0031】
また、具体的な別の例を挙げると、アクセス経路制御部31は、デバックモードにおいて、CPUコア101及びCPUコア102にコア解析プログラムが格納された解析用プログラム格納部22へのアクセスが可能なようにアクセス経路を切り替える。
【0032】
アクセス経路制御部31は、経路設定レジスタ32を有し、この経路設定レジスタ32に格納された経路設定値ACSに基づき上記のようなアクセス経路の切り替えを行う。経路設定値ACSは、解析コア20が解析制御プログラムACPを実行することで値が書き換えられるものである。また、解析コア20は、デバッガ41から与えられる動作開始指示中に含まれる制御パラメータに基づき経路設定値ACSの値を決定する。
【0033】
システムバス40は、CPUコア101〜10n及び解析コア20と、デバッガ41、DMAC42及びグローバルRAM43と、の間のデータ及び動作命令等の送受信を制御する。デバッガ41は、解析コア20に解析制御プログラムACPに基づく動作を開始させる指示を行う。このときデバッガ41は、解析制御プログラムACPにより、解析コア20が解析モードで動作するのか、デバッグモードで動作するのかを示す制御パラメータを解析コア20に与える。また、この制御パラメータには、各モードでプログラムを実行するCPUコアを指定する値及びCPUコアが実行するプログラムが格納されるプログラム格納領域を指定する値が含まれるものとする。
【0034】
なお、デバッガ41が解析コア20に与える制御パラメータは、半導体装置1が接続されたホストコンピュータからデバッガ41に与えるものである。また、半導体装置1は、デバッガ41を内蔵せずにデバッガ41の機能を外部のホストコンピュータで代替することも可能である。
【0035】
DMAC42は、周辺回路の1つであって、グローバルRAM43或いは、周辺回路451〜45nの1つとして設けられるメモリとCPUコア101〜10nの間のデータ転送を制御する。グローバルRAM43は、CPUコア101〜10n及び解析コア20のいずれの演算コアからもアクセス可能な周辺回路の1つであるグローバルメモリ領域である。
【0036】
周辺回路インタフェース44は、CPUコア101〜10n及び解析コア20と、周辺回路451〜45nと、の間のデータ及び動作命令等の送受信を制御する。周辺回路451〜45nは、CPUコア101〜10n及び解析コア20から与えられる動作命令に基づき特定の機能を発揮する回路である。周辺回路451〜45nとしては、例えば、タイマ、アナログデジタル変換回路、コプロセッサ、メモリ、ダイレクメモリアクセスコントローラ、PWM(Pulse Width Modulation)信号生成回路、通信インタフェース回路、入出力インタフェース回路等の回路が考えられる。
【0037】
また、実施の形態1にかかる半導体装置1では、CPUコア101〜10nは、ユーザープログラムUP1〜UPnを実行中にDMAC42、グローバルRAM43及び周辺回路451〜45nの少なくとも1つを用いた動作を行うものとする。
【0038】
続いて、実施の形態1にかかる半導体装置1の動作について説明する。以下の説明では、CPUコア101、102の動作について説明するが、他のCPUコアについてもCPUコア101、102と同様の動作が可能である。
【0039】
まず、実施の形態1にかかる半導体装置1では、通常動作モードにおいては、論理障壁LWにより制限されたメモリ空間で各CPUコアが動作する。具体的には、通常動作モードでは、CPUコア101は、ローカルRAM111を用いてプログラム格納部121に格納されたユーザープログラムUP1を実行し、CPUコア102は、ローカルRAM112を用いてプログラム格納部122に格納されたユーザープログラムUP2を実行する。また、この通常動作モードでは、CPUコア101は、論理障壁LWで隔てられたメモリ空間にあるプログラム格納部122〜12n及び解析用プログラム格納部22にはアクセスが妨げられる。また、CPUコア102は、論理障壁LWで隔てられたメモリ空間にあるプログラム格納部121、プログラム格納部123(不図示)〜12n及び解析用プログラム格納部22へのアクセスが妨げられる。また、この通常動作モードにおいては、CPUコア101、102は、周辺回路451〜45n等の周辺回路を利用しながらプログラムを実行する。
【0040】
続いて、実施の形態1にかかる半導体装置1の特徴の1つとなる解析モードとデバッグモードの動作を説明する。図2に実施の形態1にかかる半導体装置の解析モードの処理フローを説明するフローチャートを示す。なお、図2で示す例は、CPUコア101でユーザープログラムUP1を実行した際に生じた不具合を解析するものであり、この解析にCPUコア101、102の2つのCPコアと、ユーザープログラムUP1、UP2と、を用いる例である。解析モードの動作で用いるCPUコアの個数及びユーザープログラムは、生じた不具合に応じて適宜変更されるものである。また、不具合解析に用いるCPUコアとユーザープログラムの組み合わせは1つの解析処理中で変更して複数の組み合わせで解析処理を行うことで、解析の精度を向上させることができるため好ましい。
【0041】
図2に示すように、実施の形態1にかかる半導体装置1では、デバッガ41が解析コア20に対して解析モード開始命令を発行することで開始される(ステップS1)。この解析モード開始命令には、解析モードで解析対象とする複数のCPUコア及び解析モードで利用するプログラムを指定する制御パラメータが含まれる。また、解析モード開始命令には、解析制御プログラムのロード開始位置を示すスタートフェッチアドレスが含まれる。
【0042】
次いで、解析コア20が、解析モード開始命令に基づき解析用プログラム格納部22から解析制御プログラムACPをロードし、解析制御プログラムに基づく動作を開始する(ステップS2)。次いで、解析コア20は、解析モード開始命令に含まれる制御パラメータに基づき第1の解析処理向けのアクセス経路を設定する第1の解析用経路設定値ACSを生成する。そして、解析コア20は、アクセス経路制御部31に第1の解析用経路設定値ACSを与えて、CPUコアからプログラム格納部へのアクセス経路を切り替える(ステップS3)。
【0043】
ここで、ステップS3で形成されるアクセス経路を図3を参照して説明する。図3は実施の形態1にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図3に示すように、図2に示す例では、この第1の解析用経路設定値ACSにより、CPUコア101とCPUコア102がプログラム格納部121にアクセスする経路が形成される。そして、CPUコア101とCPUコア102は共にユーザープログラムUP2をロードする。また、次のステップS4の処理で生成される演算結果AD1、AD2は共に解析コア20のローカル解析RAM21に転送される。
【0044】
次いで、実施の形態1にかかる半導体装置1は、第1の解析処理として解析情報取得処理を行う(ステップS4)。この第1の解析処理では、CPUコア101及びCPUコア102が共にユーザープログラムUP1を実行することで得られる演算結果AD1、AD2に基づき解析コア20が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【0045】
次いで、解析コア20は、解析モード開始命令に含まれる制御パラメータに基づき第2の解析処理向けのアクセス経路を設定する第2の解析用経路設定値ACSを生成する。そして、解析コア20は、アクセス経路制御部31に第2の解析用経路設定値ACSを与えて、CPUコアからプログラム格納部へのアクセス経路を切り替える(ステップS5)。
【0046】
ここで、ステップS5で形成されるアクセス経路を図4を参照して説明する。図4は実施の形態1にかかる半導体装置の解析モードの第2の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図5に示すように、図2に示す例では、この第2の解析用経路設定値ACSにより、CPUコア101とCPUコア102がプログラム格納部122にアクセスする経路が形成される。そして、CPUコア101とCPUコア102は共にユーザープログラムUP2をロードする。また、次のステップS6の処理で生成される演算結果AD1、AD2は共に解析コア20のローカル解析RAM21に転送される。
【0047】
次いで、実施の形態1にかかる半導体装置1は、第2の解析処理として解析情報取得処理を行う(ステップS6)。この第2の解析処理では、CPUコア101及びCPUコア102が共にユーザープログラムUP2を実行することで得られる演算結果AD1、AD2に基づき解析コア20が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【0048】
次いで、解析コア20は、経路設定値ACSを通常動作モードの状態にリセットして解析モードを終了する(ステップS7)。
【0049】
続いて、図2のステップS4、S6で実施する解析情報取得処理について説明する。ステップS4の解析情報取得処理とステップS6の解析情報取得処理では、実行するユーザープログラムが異なるみであり、その他の動作は同じであるため、ここではステップS4の解析情報取得処理のみ説明する。
【0050】
図5に実施の形態1にかかる半導体装置の解析情報取得処理の処理フローを説明するフローチャートを示す。図5に示すように、解析情報取得処理では、まず、解析コア20が、CPUコア101、102に実行させるプログラムを指定するフェッチアドレスの番号kを初期化する(ステップS1)。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの1つとして指定されるものである。
【0051】
次いで、解析コア20は、CPUコア101、102のプログラムカウンタ情報PCにフェッチアドレスFA(k)を設定する(ステップS12)。これにより、CPUコア101、102はフェッチアドレスFA(k)により指定されるプログラムステップの処理を開始する。そして、CPUコア101、102は、開始したプログラムステップの最後の行までのプログラムを実行する(ステップS13)。このステップS13のプログラムの実行により、CPUコア101のローカルRAM111には演算結果AD1が生成され、CPUコア102のローカルRAM112には演算結果AD2が生成される。
【0052】
次いで、解析コア20が、CPUコア101のローカルRAM111に保持された演算結果AD1と、CPUコア102のローカルRAM112に保持された演算結果AD2と、を解析用プログラム格納部22に転送する(ステップS14)。次いで、解析コア20は、解析用プログラム格納部22に保持されている演算結果AD1、AD2の差分情報を抽出して、この差分情報を解析情報として生成する。
【0053】
実施の形態1にかかる半導体装置1では、ステップS12からステップS15までの処理をフェッチアドレスの番号kを1つずつ増加させながら、フェッチアドレスの番号kが最終の番号であるmに達するまで繰り返す(ステップS16、S17)。そして、フェッチアドレスの番号がmとなるプログラムステップの実行により得られる演算結果AD1、AD2に基づく解析情報の生成処理が完了したことに応じて、解析コア20は解析情報取得処理を終了する。
【0054】
続いて、図6に実施の形態1にかかる半導体装置のデバッグモードの処理フローを説明するフローチャートを示す。なお、図6で示す例は、CPUコア101〜10nでコア解析プログラムAPを実行することで、コア解析プログラムAPの不具合の有無を検証するするものである。デバッグモードの動作で用いるCPUコアには、ユーザープログラムの実行により不具合が生じるCPUコアが含まれていれば良く、利用するCPUコアの個数は、適宜変更されるものである。また、今回は説明を省略するが、コア解析プログラムAPとして不具合が生じていると考えらえる特定箇所を検査するプログラムを使用し、コア解析プログラムAPによりCPUコアで生じる不具合を解析することもできる。
【0055】
図6に示すように、実施の形態1にかかる半導体装置1では、デバッガ41が解析コア20に対してデバッグモード開始命令を発行することで開始される(ステップS21)。このデバッグモード開始命令には、デバッグモードでコア解析プログラムAPを事項させるCPUコア及びコア解析プログラムAPを指定する制御パラメータが含まれる。また、デバッグモード開始命令には、解析制御プログラムのロード開始位置を示すスタートフェッチアドレスが含まれる。
【0056】
次いで、解析コア20が、解析モード開始命令に基づき解析用プログラム格納部22から解析制御プログラムACPをロードし、解析制御プログラムに基づく動作を開始する(ステップS22)。次いで、解析コア20は、デバッグモード開始命令に含まれる制御パラメータに基づきデバッグ処理向けのアクセス経路を設定するデバッグ用経路設定値ACSを生成する。そして、解析コア20は、アクセス経路制御部31にデバッグ用経路設定値ACSを与えて、CPUコアから解析用プログラム格納部22へのアクセス経路が形成されるようにアクセス経路を切り替える(ステップS23)。
【0057】
ここで、ステップS23で形成されるアクセス経路を図7を参照して説明する。図7は実施の形態1にかかる半導体装置のデバッグモードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図である。図7に示すように、図6に示す例では、このデバッグ用経路設定値ACSにより、CPUコア101〜10nが解析用プログラム格納部22にアクセスする経路が形成される。そして、CPUコア101〜10nはコア解析プログラムAPをロードする。また、次のステップS24の処理で生成される演算結果AD1〜ADnは解析コア20のローカル解析RAM21に転送される。
【0058】
次いで、実施の形態1にかかる半導体装置1は、解析情報取得処理を行う(ステップS24)。解析情報取得処理では、CPUコア101〜10nがコア解析プログラムAPを実行することで得られる演算結果AD1〜ADnに基づき解析コア20が解析情報を生成する。この解析情報取得処理についての詳細は後述する。
【0059】
次いで、解析情報取得処理が終了すると、解析コア20は、経路設定値ACSを通常動作モードの状態にリセットして解析モードを終了する(ステップS25)。
【0060】
続いて、図6のステップS24で実施する解析情報取得処理について説明する。なお、コア解析プログラムAPに複数のプログラムステップが含まれている場合、解析情報を得るタイミングは、2通り考えられる。そこで、以下では解析情報を得るタイミングが異なる2つの解析情報取得処理について説明する。
【0061】
図8に実施の形態1にかかる半導体装置の解析情報取得処理の処理フローの第1の例を説明するフローチャートを示す。この第1の例は、1つのプログラムステップが終了する毎に解析情報を生成する例である。図8に示すように、解析情報取得処理の第1の例では、まず、解析コア20が、CPUコアに実行させるプログラムを指定するフェッチアドレスの番号kを初期化する(ステップS30)。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの1つとして指定されるものである。次いで、解析コア20は、コア解析プログラムAPを実行させるCPUコアの番号iを初期化する(ステップS31)。
【0062】
次いで、解析コア20は、CPUコア(i)のプログラムカウンタ情報PCにフェッチアドレスFA(k)を設定する(ステップS33)。これにより、CPUコア(i)はフェッチアドレスFA(k)により指定されるプログラムステップの処理を開始する。そして、CPUコア(i)は、開始したプログラムステップの最後の行までのプログラムを実行する(ステップS34)。このステップS34のプログラムの実行により、CPUコア(i)のローカルRAM(i)には演算結果AD(i)が生成される。
【0063】
次いで、解析コア20が、CPUコア(i)のローカルRAM(i)に保持された演算結果AD(i)を解析用プログラム格納部22に転送する(ステップS35)。次いで、解析コア20は、コア解析プログラムAPを実行させるCPUコアの番号iを1つ増加させる(ステップS37)。その後、実施の形態1にかかる半導体装置1は、CPUコアの番号iがn(nはCPUコアの数を示す整数)に達するまでステップS33からステップS36の処理を繰り返す。
【0064】
そして、CPUコア101〜10n(図8中のCPUコア(1)〜(n))においてフェッチアドレスFA(k)で指定されるプログラムステップを実行したことにより得られる演算結果AD1〜ADnが全て揃ったところで、解析コア20が演算結果AD1〜ADnに基づき解析情報を生成する。
【0065】
その後、実施の形態1にかかる半導体装置1では、フェッチアドレスの番号kを1つずつ増加させながらステップS31からステップS37までの処理を、フェッチアドレスの番号kが最終の番号であるmに達するまで繰り返す(ステップS38、S39)。そして、フェッチアドレスの番号がmとなるプログラムステップの実行により得られる演算結果AD1〜ADnに基づく解析情報の生成処理が完了したことに応じて、解析コア20は解析情報取得処理を終了する。
【0066】
図9に実施の形態1にかかる半導体装置の解析情報取得処理の処理フローの第2の例を説明するフローチャートを示す。この第2の例は、コア解析プログラムAPの実行が指示された全てのCPUコアにおいて全てのプログラムステップが終了した後に解析情報を生成する例である。図9に示すように、解析情報取得処理の第2の例では、まず、解析コア20は、コア解析プログラムAPを実行させるCPUコアの番号iを初期化する(ステップS40)。次いで、解析コア20が、CPUコアに実行させるプログラムを指定するフェッチアドレスの番号kを初期化する(ステップS41)。このフェッチアドレスは、解析モード開始命令に含まれる制御パラメータの1つとして指定されるものである。
【0067】
次いで、解析コア20は、CPUコア(i)のプログラムカウンタ情報PCにフェッチアドレスFA(k)を設定する(ステップS42)。これにより、CPUコア(i)はフェッチアドレスFA(k)により指定されるプログラムステップの処理を開始する。そして、CPUコア(i)は、開始したプログラムステップの最後の行までのプログラムを実行する(ステップS43)。このステップS34のプログラムの実行により、CPUコア(i)のローカルRAM(i)には演算結果AD(i)が生成される。
【0068】
次いで、解析コア20が、CPUコア(i)のローカルRAM(i)に保持された演算結果AD(i)を解析用プログラム格納部22に転送する(ステップS44)。次いで、解析コア20は、フェッチアドレスの番号kを1つ増加させる(ステップS47)。その後、実施の形態1にかかる半導体装置1は、フェッチアドレスの番号kが最終の番号であるmに達するまでステップS42からステップS44の処理を繰り返す(ステップS45)。
【0069】
また、第2の例では、CPUコアの番号iを1つずつ増加させながらステップS41からステップS47までの処理を、CPUコアの番号kがnに達するまで繰り返す(ステップS47、S48)。
【0070】
そして、CPUコア101〜10n(図9中のCPUコア(1)〜(n))においてフェッチアドレスFA(k)〜FA(m)で指定されるプログラムステップを実行したことにより得られる演算結果AD1〜ADnが全て揃ったところで、解析コア20が演算結果AD1〜ADnに基づき解析情報を生成する(ステップS49)。その後、解析コア20は解析情報取得処理を終了する。
【0071】
上記説明より、実施の形態1にかかる半導体装置1は、解析モードにおいて、1つのユーザープログラムを複数のCPUコアにて実行させ、2つのCPUコアが1つのユーザープログラムに基づき生成した2つの演算結果の差分情報を解析情報として得る。例えば、解析モードにおいて、不具合が生じているCPUコア及びユーザープログラムの組み合わせを含むコアとプログラムの組み合わせで解析を行うことで差分情報として不具合か箇所が明確に判断出来る解析情報を得ることができる。
【0072】
ここで、実施の形態1にかかる半導体装置1では、解析モードでユーザープログラムに基づく解析処理を行うことで、解析担当者が自ら解析箇所を特定するコア解析プログラムを作成する必要がない。これにより、実施の形態1にかかる半導体装置1を用いた解析では、コア解析プログラムの作成時間を削減することができる。また、実施の形態1にかかる半導体装置1を用いた解析では、ユーザープログラムを用いて不具合再現性の高い解析処理を行うことができる。テストエスケープ品では、当初想定されていない箇所で故障が生じている可能性が高い。そのため、テストエスケープ品については、不具合箇所を特定するのは極めて困難であり、不具合を特定するためのプログラムの作成に膨大な時間がかかる上に不具合再現性が必ずしも高いとは言えない。そのため、実施の形態1にかかる半導体装置1の解析モードに基づく解析時間の短縮及び不具合再現性の高さの効果は非常に大きい。
【0073】
また、実施の形態1にかかる半導体装置1では、テストエスケープ品の比較対象となる良品サンプルを用意する必要も無い。また、実施の形態1にかかる半導体装置1では、半導体装置内の処理のみで解析モードの動作を完結することができるため、半導体装置の動作速度に起因して発生する不具合についても高い再現性で再現することができる。
【0074】
また、実施の形態1にかかる半導体装置1では、解析用プログラム格納部22に格納したコア解析プログラムAPをCPUコア101〜10nの少なくとも1つで実行させるデバッグモードを有する。上記解析モードで特定した不具合箇所を検出するためのコア解析プログラムAPを作成し、このコア解析プログラムAPの良否をデバッグモードで検証することができる。
【0075】
なお、実施の形態1にかかる半導体装置1では、デバッグモードの動作を用いてCPUコアの解析を行うこともできる。この場合、解析モードで実行するプログラムとしてコア解析プログラムAPを用いる。つまり、実施の形態1にかかる半導体装置1では、CPUコアの解析に用いることができるプログラムの種類が多様であり、ユーザープログラムの実行によっても再現できない不具合を解析者が作成したコア解析プログラムAPにより行うこともできる。
【0076】
実施の形態2
実施の形態2では、実施の形態1にかかる半導体装置1の変形例となる半導体装置2について説明する。図10に実施の形態2にかかる半導体装置2のブロック図を示す。なお、実施の形態2の説明では、実施の形態1で説明した構成要素と同じ構成要素については実施の形態1と同じ符号を付して説明を省略する。
【0077】
図10に示すように、実施の形態2にかかる半導体装置2は、CPUコア101〜10nに代えてCPUコア501〜50nを有する。CPUコア501〜50nは、CPUコア101〜10nにリングバッファ511〜51nを追加したものである。そこで、図11に実施の形態2にかかる半導体装置における演算コアとリングバッファとの関係を説明するブロック図を示す。なお、リングバッファ511〜51nは、いずれも同じもの出るため、ここではリングバッファ511についてのみ図11に示した。
【0078】
図11に示すように、リングバッファ511は、CPUコア501内においてプログラムに含まれる動作命令を実行する演算コアと並列接続されるように設けられる。そして、リングバッファ511は、演算コアからフラッシュバス30、システムバス40、周辺回路インタフェース44に対して出力されるアドレス信号、データ信号を含む信号をモニタし、リングバッファ511に入出力される信号を時系列順に取得して動作モニタ情報として保持する。そこで、リングバッファ511がモニタする信号の例を図12を参照して説明する。
【0079】
図12は実施の形態2にかかる半導体装置のリングバッファが取得する情報を説明するブロック図である。図12に示すように、演算コアは、メモリ(グローバRAM、プログラム格納領域)、周辺回路、IOインタフェース、あるいは他の処理ブロックのレジスタ等に対してアクセスを行う際にアドレス信号、データ信号、制御信号(リード命令、ライト命令等)、インタフェース信号(チップセレクト信号、アクノレッジ信号等)を出力する。リングバッファ511は、このような演算コアが他の回路ブロックに対するアクセスにおいて用いる信号を時系列に動作モニタ情報として取得する。そして、実施の形態2にかかる半導体装置2では、各CPUコアが生成する演算結果ADにリングバッファで取得された動作モニタ情報を含める。
【0080】
上記説明より、実施の形態2にかかる半導体装置2では、演算結果ADにプログラムの実行により最終的に得られる演算結果のみならず、CPUコアが他の回路にアクセスする際に用いる信号の時系列情報を含む。そして、実施の形態2にかかる半導体装置2において生成される解析情報に基づき半導体装置の動作状況を検証することで、実施の形態1にかかる半導体装置1で生成される解析情報に基づき半導体装置の動作状況を検証した場合よりも詳細な検証を行うことが可能になる。具体的には、CPUコアの不具合の原因が周辺回路にアクセスする際に生成したアドレス値の誤りにあるような場合、実施の形態1にかかる半導体装置1により生成される解析情報からはそのような状況を知ることができないが、実施の形態2にかかる半導体装置2により生成される解析情報に基づき検証をおこなうことでこのような状況を知ることができる。
【0081】
実施の形態3
実施の形態3では、実施の形態1にかかる半導体装置1の変形例となる半導体装置3について説明する。図13に実施の形態3にかかる半導体装置3のブロック図を示す。なお、実施の形態3の説明では、実施の形態1で説明した構成要素と同じ構成要素については実施の形態1と同じ符号を付して説明を省略する。
【0082】
図13に示すように、実施の形態3にかかる半導体装置3では、実施の形態1にかかる半導体装置1の解析コア20を削除したものである。実施の形態3では、解析モード或いはデバッグモードにおいてCPUコア101〜10nのいずれか1つを解析コアと同じ機能を果たす解析マスタとする。
【0083】
また、実施の形態3にかかる半導体装置3では、実施の形態1にかかる半導体装置1のアクセス経路制御部31がアクセス経路制御部61に置き換えられる。アクセス経路制御部61は、アクセス経路制御部31に解析マスタ設定レジスタ62を追加したものである。アクセス経路制御部61は、デバッガ41から与えられる解析マスタ設定値AMSに基づき解析マスタに指定されたCPUコアが解析用プログラム格納部22にアクセスする経路を形成する。
【0084】
具体的には、実施の形態3にかかる半導体装置3を解析モード或いはデバッグモードで動作させる際には、デバッガ41が解析マスタ設定レジスタ62に解析マスタ設定値AMSを与えて解析マスタに指定するCPUコアから解析用プログラム格納部22へのアクセス経路を形成する。その後、実施の形態3にかかる半導体装置3は、デバッガ41により解析マスタとするCPUコアに解析モード開始命令或いはデバッグモード開始命令を与え、これらモード開始命令を受けたCPUコアを解析マスタに切り替える。このような処理を経た後に実施の形態3にかかる半導体装置3は、実施の形態1と同様な解析処理或いはデバッグ処理を行う。なお、解析マスタに設定するCPUコアは不具合が生じていないCPUコアであることが好ましい。
【0085】
そこで、図14に実施の形態3にかかる半導体装置の解析モードの処理フローを説明するフローチャートを示す。図14に示す例は、CPUコア101を解析マスタとする例である。
【0086】
図14に示すように、実施の形態3にかかる半導体装置3は、まず、デバッガ41が解析マスタ設定レジスタ62に解析マスタ設定値AMSを与えて、解析マスタに指定するCPUコア101から解析用プログラム格納部22へのアクセス経路を形成する(ステップS51)。次いで、実施の形態3にかかる半導体装置は、デバッガ41により解析マスタとするCPUコアに解析モード開始命令を発行し、解析モード開始命令を受けたCPUコアを解析マスタに切り替える(ステップS52)。そして、ステップS52以降のステップS53〜S58では、CPUコア102及びCPUコア10nを用いて図2で説明した実施の形態1のステップS2からS7の処理を行う。
【0087】
ここで、図15に実施の形態3にかかる半導体装置3の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図15に示すように、実施の形態3にかかる半導体装置3では、CPUコア101を解析マスタとし、CPUコア102及びCPUコア10nを用いて解析処理を行う。この場合、解析制御プログラムACPがCPUコア101に読み込まれ、CPUコア102、10nにユーザープログラムUP2が読み込まれる。そして、CPUコア102、10nで生成された演算結果AD2、ADnはCPUコア101のローカルRAM111に集められる。
【0088】
上記説明では、実施の形態3にかかる半導体装置3を解析モードで動作させる場合について説明したが、解析コアとして機能させる解析マスタを指定するステップS51、S52を実行することで、実施の形態3にかかる半導体装置3をデバッグモードで動作させることが可能である。
【0089】
上記説明より、実施の形態3にかかる半導体装置3では、解析コアを個別の回路として設けることなく、解析モード或いはデバッグモードで動作する場合に複数のCPUコアの1つを解析コアと同等の機能を発揮する解析マスタに指定する。これにより、実施の形態3にかかる半導体装置3では、解析コアを設けるための回路面積を削減し、チップ面積を小さくすることができる。特に解析コアはCPUコアと同等の回路規模を有するものであり、この解析コアに要する回路面積を削減する効果は大きい。
【0090】
実施の形態4
実施の形態4では、実施の形態3にかかる半導体装置3の変形例となる半導体装置4について説明する。図16に実施の形態4にかかる半導体装置4のブロック図を示す。なお、実施の形態4の説明では、実施の形態1、3で説明した構成要素については同じ構成要素については実施の形態1、3と同じ符号を付して説明を省略する。
【0091】
図16に示すように、実施の形態4にかかる半導体装置4は、実施の形態3にかかる半導体装置3から解析用プログラム格納部22を削除したものである。また、実施の形態4にかかる半導体装置4では、アクセス経路制御部63に代えてアクセス経路制御部31が用いられる。つまり、実施の形態4にかかる半導体装置4は、実施の形態1にかかる半導体装置1から解析コア20及び解析用プログラム格納部22を削除したものと捉えることもできる。
【0092】
また、実施の形態4にかかる半導体装置4では、解析制御プログラムACPをグローバルRAM43に格納する。つまり、実施の形態4にかかる半導体装置4では、解析用ローカルメモリ領域(例えば、解析用プログラム格納部22)として、CPUコア101〜10nのいずれのCPUコアからもアクセス可能な周辺回路の1つであるグローバルメモリ領域(グローバルRAM43)を用いる。
【0093】
そして、実施の形態4にかかる半導体装置4では、デバッガ41により解析マスタとして機能するように指示された第3の演算コア(例えば、CPUコア)は、デバッガ41から与えられる解析マスタ設定値AMSに基づきグローバルRAM43から解析制御プログラムACPをロードすることで解析コアとして機能する。
【0094】
ここで、図17に実施の形態4にかかる半導体装置4の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図17に示すように、実施の形態4にかかる半導体装置4では、CPUコア101を解析マスタとし、CPUコア102及びCPUコア10nを用いて解析処理を行う。この場合、解析制御プログラムACPは、グローバルRAM43からCPUコア101に読み込まれ、CPUコア102、10nにユーザープログラムUP2が読み込まれる。そして、CPUコア102、10nで生成された演算結果AD2、ADnはCPUコア101のローカルRAM111に集められる。
【0095】
なお、グローバルRAM43には、解析制御プログラムACPのみならず、コア解析プログラムAPを格納することも可能である。また、グローバルRAM43への解析制御プログラムACP及びコア解析プログラムAPの格納は、解析又はデバッグを行う際に外部に接続されるホストコンピュータから入れることが好ましい。このように必要なときにのみ解析制御プログラムACP及びコア解析プログラムAPをグローバルRAM43に格納することで、実際に半導体装置を利用するときのグローバルRAM43の利用可能な容量を増やすことできる。
【0096】
上記説明より、実施の形態4にかかる半導体装置4は、解析コア20及び解析用プログラム格納部22を設けることなく、実施の形態1にかかる半導体装置1と同様な解析処理或いはデバッグ処理を行うことができる。これにより、実施の形態4にかかる半導体装置4は、実施の形態3にかかる半導体装置3よりも更にチップ面積を小さくすることができる。
【0097】
実施の形態5
実施の形態5では、実施の形態1にかかる半導体装置1の変形例となる半導体装置5について説明する。図18に実施の形態5にかかる半導体装置5のブロック図を示す。なお、実施の形態5の説明では、実施の形態1で説明した構成要素と同じ構成要素については実施の形態1と同じ符号を付して説明を省略する。
【0098】
図18に示すように、実施の形態5にかかる半導体装置5は、CPUコア101〜10nに代えてCPUコア701〜70nを有する。また、実施の形態5にかかる半導体装置5は、アクセス経路制御部31に代えてアクセス制御部81を有する。
【0099】
CPUコア701〜70nは、それぞれ、マスタCPUコア(符号末尾にMが付されたCPUコア)と、スレーブCPUコア(符号末尾にSが付されたCPUコア)を有する。マスタCPUコアとスレーブCPUコアは、同一の回路構成を有するものである。また、マスタCPUコアとスレーブCPUコアには、それぞれリングバッファ(図18中の721M〜72nM、及び、721S〜72nS)が設けられる。また、各CPUコアは、マスタCPUコアとスレーブCPUコアとで共通に用いられるローカルRAM(図18中の711〜71n)を有する。なお、リングバッファ721M〜72nM、721S〜72nSは、実施の形態2で説明したリングバッファ511〜51nと同じものである。
【0100】
マスタCPUコアとスレーブCPUコアは、同率のクロックタイミングで同じプログラムステップを実行するロックステップ動作を行う。このロックステップ動作では、2つのCPUコアが1つのプログラムを重複して実行することになる。そして、実施の形態5にかかる半導体装置5では、後述するリングバッファ比較部83において1つのCPUコアに属するリングバッファの出力値を比較し、2つのリングバッファの出力値に違いが有った場合にマスタCPUコアとスレーブCPUコアのいずれかで不具合が生じたと判断し、エラー信号ERRを出力する。
【0101】
アクセス制御部81は、実施の形態1にかかる半導体装置1のアクセス経路制御部31に比較設定レジスタ82及びリングバッファ比較部83を追加したものである。比較設定レジスタ82は、リングバッファ比較部83が比較対象とするリングバッファの出力値の組み合わせを指定するバッファ比較設定値BCSを格納する。リングバッファ比較部83は、バッファ比較設定値BCSに基づき指定される組み合わせでリングバッファの出力値を比較して、出力値間に不一致が発生した場合にエラー信号ERRを出力する。
【0102】
このバッファ比較設定値BCSは、解析コア20が解析制御プログラムACPを実行することで値が書き換えられる。具体的には、解析コア20は、通常動作モードでは、1つのCPUコア内に設けられるリングバッファ間の出力値を比較する(つまり、マスタCPUコアのリングバッファの出力値とスレーブCPUコアの出力値とを比較する)ように値を設定する。
【0103】
また、解析コア20は、解析モード、或いは、デバッグモードにおいては、異なるCPUコアに属するリングバッファの出力値を比較対象とするようにバッファ比較設定値BCSを書き換える。そして、解析コア20は、解析モード終了時に、同一のCPUコアに属するリングバッファの出力値を比較対象とするようにバッファ比較設定値BCSを書き戻す。
【0104】
また、実施の形態5にかかる半導体装置5では、通常動作モードにおいて、リングバッファ比較部83から出力されるエラー信号ERRがデバッガ41に通知された場合に、解析コア20に解析モードによる動作の開始を解析コア20に指示する。
【0105】
ここで、図19に実施の形態5にかかる半導体装置の通常動作モードにおけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図19に示すように、通常動作モードでは、実施の形態5にかかる半導体装置5は、各CPUコアが、各CPUコアに対して占有メモリ領域として割り当てられたプログラム格納部に格納されたユーザープログラムをロードして、マスタCPUコアとスレーブCPUコアによるロックステップ動作によりユーザープログラムを実行する。そして、実施の形態5にかかる半導体装置5は、通常動作モードにおいては、1つのCPUコアに属する複数のリングバッファの出力値を比較することでエラー信号ERRを出力する。
【0106】
また、図20に実施の形態5にかかる半導体装置の解析モードの第1の解析処理におけるプログラムの読み出し経路及び演算結果の読み出し経路を説明する図を示す。図19に示すように、解析モードの第1の解析処理モードでは、実施の形態5にかかる半導体装置5は、CPUコア701、70nが、CPUコア101に対して占有メモリ領域として割り当てられたプログラム格納部121に格納されたユーザープログラムUP1をロードして、マスタCPUコアとスレーブCPUコアによるロックステップ動作によりユーザープログラムUP1を実行する。そして、実施の形態5にかかる半導体装置5の解析モードの第1の解析処理においては、異なるCPUコアに属する複数のリングバッァの出力値を比較することでエラー信号ERRを出力する。図19に示す例では、リングバッファ比較部83は、CPUコア701に属するリングバッファ721Mの出力値とCPUコア70nに属するリングバッファ72nMnの出力値とを比較し、CPUコア701に属するリングバッファ721Sの出力値とCPUコア70nに属するリングバッファ72nSの出力値とを比較する。
【0107】
上記説明より、実施の形態5にかかる半導体装置5では、ロックステップ動作するマスタCPUコアとスレーブCPUコアにそれぞれ設けられたリングバッファの出力値を比較することで、CPUコアで生じた不具合を検出する。また、解析モードにおいては、異なるCPUコアに属するリングバッファの出力値を比較することで不具合を検出する。この解析モードでは、比較対象とするリングバッファの出力値の組み合わせを変更しながら、複数回の比較処理を行うことで、不具合が発生しているCPUコアを特定することができる。
【0108】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0109】
1〜5 半導体装置
101〜10n、501〜50n、701〜70n CPUコア
111〜11n、711〜71n ローカルRAM
121〜12n プログラム格納部
20 解析コア
21 ローカル解析RAM
22 解析用プログラム格納部
30 フラッシュバス
31、61、81 アクセス経路制御部
32 経路設定レジスタ
40 システムバス
41 デバッガ
42 DMAC
43 グローバルRAM
44 周辺回路インタフェース
45 周辺回路
511〜51n、721〜72n リングバッファ
62 解析マスタ設定レジスタ
701M〜70nM マスタCPUコア
701S〜70nS スレーブCPUコア
82 比較設定レジスタ
83 リングバッファ比較部
ACP 解析制御プログラム
AP コア解析プログラム
UP1〜UPn ユーザープログラム
ACS 経路設定値
AD 演算結果
AMS 解析マスタ設定値
BCS バッファ比較設定値
LW 論理障壁
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20