(57)【要約】【課題】オンチップデバッガが正常に動作しない場合でも、外部から正しく動作しているかどうかの監視が可能な半導体処理装置および半導体処理システムを提供する。【解決手段】内部マスタバス１８は、ＣＰＵ４の命令に基づく信号を伝送する。ＯＣＤ５は、デバッガ３からの指示に基づいて、ＣＰＵ４のプログラム実行および内部マスタバス１８上の信号の伝送を制御するとともに、内部マスタバス１８を流れる信号をトレースして生成した第１のトレース情報として監視制御装置２へ出力する。第３バスバスタ８は、内部マスタバス１８を流れる信号をトレースして生成した第２のトレース情報として監視制御装置２へ出力する。【選択図】図１
2011155066.tif 000002
【特許請求の範囲】
【請求項１】
外部のデバッガ、および監視制御装置と接続可能な半導体処理装置であって、
プログラムを記憶する記憶部と、
前記プログラムを実行するプロセッサと、
前記プロセッサの命令に従って信号が伝送される内部マスタバスと、
前記デバッガからの指示に基づいて、前記プロセッサによる前記プログラムの実行動作を制御し、前記内部マスタバス上の信号の伝送を制御するとともに、前記内部マスタバスに伝送される信号をトレースして生成した第１のトレース情報を前記監視制御装置へ出力する第１のインタフェース回路と、
前記内部マスタバスを流れる信号をトレースして生成した第２のトレース情報を前記監視制御装置へ出力する第２のインタフェース回路とを備えた、半導体処理装置。
【請求項２】
前記第２のインタフェース回路は、さらに、前記内部マスタバスを制御する、請求項１記載の半導体処理装置。
【請求項３】
前記第１のインタフェース回路は、第１のプロトコルに従って、前記第１のトレース情報を出力し、
前記第２のインタフェース回路は、第２のプロトコルに従って、前記第２のトレース情報を出力し、
前記第２のプロトコルで送信される前記第２のトレース情報のビット数は、前記第１のプロトコルで送信される前記第１のトレース情報のビット数よりも少ない、請求項１記載の半導体処理装置。
【請求項４】
前記第１のトレース情報は、スタートビット、インストラクションビット、パリティビット、およびストップビットを含み、
前記第２のトレース情報は、前記スタートビット、前記インストラクションビット、前記パリティビット、および前記ストップビットのうちの少なくとも１つを含まない、請求項３記載の半導体処理装置。
【請求項５】
複数の半導体処理装置を備えた半導体処理システムであって、
各半導体処理装置は、対応のデバッガ、および共通の監視制御装置と接続可能であり、
各半導体処理装置は、
プログラムを記憶する記憶部と、
前記プログラムを実行するプロセッサと、
前記プロセッサの命令に従って信号が伝送される内部マスタバスと、
前記デバッガからの指示に基づいて、前記プロセッサによる前記プログラムの実行動作を制御し、前記内部マスタバス上の信号の伝送を制御するとともに、前記内部マスタバスに伝送される信号をトレースして生成した第１のトレース情報を前記監視制御装置へ出力する第１のインタフェース回路と、
前記内部マスタバスを流れる信号をトレースして生成した第２のトレース情報を前記監視制御装置へ出力する第２のインタフェース回路とを備えた、半導体処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体処理装置および半導体処理システムに関し、特に、オンチップデバッガを有する半導体処理装置および半導体処理システムに関する。
【背景技術】
【０００２】
従来から、ＣＰＵ（Central Processing Unit)を第１バスマスタとし、オンチップデバッガを第２バスマスタとした半導体チップが知られている。オンチップデバッガが果たす役割の一つに、ＣＰＵトレース機能がある。たとえば、ＣＰＵが内部メモリに格納されてあるコードをインストラクションフェッチして、デコードして、そのデコード結果に基づき周辺回路に対して命令を実行したり、外部メモリをアクセスしたりするときに、マスタバスを伝送される信号をオンチップデバッガがトレースして、外部に接続されたデバッガにトレースした結果を出力する。
【０００３】
このようなＣＰＵをトレースする機能は、一般には、プログラムをデバックする場合に使用されるが、その他に、たとえば車載品のような高信頼性が要求される分野においては、半導体チップが正しく動作しているかどうかを監視する用途にも使用される。特許文献１には、デバッグサポートユニットで採取したＣＰＵ動作トレース情報を外部に出力し、ＣＰＵコアが正常に動作しているか否かの判定を行い、異常動作を行っていると判定された場合はＣＰＵ動作トレースに基づいてデバッグが行われることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３３２２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＰＵ動作トレースによる半導体チップが正しく動作するかの監視は、「オンチップデバッガが正常動作する」ことを前提としており、オンチップデバッガが正常に動作しない場合は、半導体チップが正しく動作するかを監視することができない。関連する公知の技術としては、複数のコンピュータシステムにより同じ動作を行い、得られた結果の異同により、いずれか一方のコンピュータシステムにおいて障害が生じたと判断する、デュアルシステムも存在する。しかしながら、オンチップデバッガは主にプログラムの動作判定を行うために用いられており、得られた結果が異常であることの原因追求の結果として、オンチップデバッガ自体の不良を含む半導体チップに不良が存在していることが判明することが一般的である。すなわち、オンチップデバッガにおいても半導体チップの他の機能モジュールと同程度に事後的に不良が発生する可能性が存在するが、特にオンチップデバッガにおいて事後的に不良が発生したことを検出することは、考慮されていない。
【０００６】
それゆえに、本発明の目的は、オンチップデバッガが正常に動作しない場合でも、外部から正しく動作しているかどうかの監視が可能な半導体処理装置および半導体処理システムを提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一実施形態の半導体装置は、外部のデバッガ、および監視制御装置と接続可能な半導体処理装置であって、プログラムを記憶する記憶部と、プログラムを実行するプロセッサと、プロセッサの命令に従って信号が伝送される内部マスタバスと、デバッガからの指示に基づいて、プロセッサによるプログラムの実行動作を制御し、内部マスタバス上の信号の伝送を制御するとともに、内部マスタバスに伝送される信号をトレースして生成した第１のトレース情報を監視制御装置へ出力する第１のインタフェース回路と、内部マスタバスを流れる信号をトレースして生成した第２のトレース情報を監視制御装置へ出力する第２のインタフェース回路とを備える。
【発明の効果】
【０００８】
本発明の一実施形態によれば、オンチップデバッガが正常に動作しない場合でも、外部から正しく動作しているかどうかの監視ができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の監視システムの構成を表わす図である。
【図２】第１の実施形態の監視制御の動作の概要を説明するための図である。
【図３】第２のトレース情報を外部へ出力する動作のタイミングチャートである。
【図４】第３バスマスタへのデータを伝送する動作のタイミングチャートである。
【図５】第２の実施形態の監視制御の動作の概要を説明するための図である。
【図６】第３の実施形態の監視システムの構成を表わす図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
［第１の実施形態］
（構成）
図１は、第１の実施形態の監視システムの構成を表わす図である。
【００１１】
図１を参照して、この監視システムは、監視制御装置２と、デバッガ３と、半導体チップ１（半導体処理装置）と、外部メモリ１４とを備える。半導体チップ１は、ＣＰＵ(Central Processing Unit)４と、ＯＣＤ(On-Chip Debugger)５と、第３バスマスタ８と、内部マスタバス１８と、ＭＢＩＵ(Memory Bus Interface Unit)９と、内部メモリ１０と、内部メモリバス１５と、ＰＢＩＵ(Peripheral Bus Interface Unit)１１と、周辺回路１２と、周辺バス１６と、ＥＸＢＩＵ(Extension Bus Interface Unit)１３と、外部メモリバス１７とを備える。
【００１２】
監視制御装置２は、ＯＣＤ５からの監視結果と第３バスマスタ８からの監視結果を受信する。
【００１３】
デバッガ３は、ＯＣＤ５を通じて、ＣＰＵ４によるプログラムの実行の制御、内部メモリ１０のデータの読出し／書込み、ＣＰＵ４内のレジスタの読出し／書込み、ブレークポイントの設定／解除、内部マスタバス１８のトレースなどを実行する。
【００１４】
ＣＰＵ４は、内部メモリ１０に記憶されたプログラムに従って動作する。ＣＰＵ４は、内部マスタバス１８上の信号の伝送を制御する第１バスマスタとして機能する。
【００１５】
ＯＣＤ５は、外部のデバッガ３および監視制御装置２と接続可能なインタフェース回路である。具体的には、ＯＣＤ５は、ＪＴＡＧ（Joint Test Action Group）プロトコル（IEEE 1149.1）に従って動作するＪＴＡＧインタフェース回路である。ＯＣＤ５は、外部のデバッガ３から制御信号およびシリアルデータを受信し、外部のデバッガ３の指示に基づいて、ＣＰＵ５によるプログラムの実行動作を制御する。また、ＯＣＤ５は、外部のデバッガ３および監視制御装置２へ内部マスタバス１８のトレース情報を表わすシリアルデータを送信する。また、ＯＣＤ５は、内部マスタバス１８上の信号の伝送を制御する第２バスマスタとして機能する。
【００１６】
ＯＣＤ５は、外部との通信のために５端子（TCLK/TRST/TMS/TDI/TDO）を有する。ＴＤＩ(Test Data In)は、デバッガ３からのシリアルのテストデータの入力ピンである。ＴＤＯ(Test Data Out)は、半導体チップ１からデバッガ３および監視制御装置２へのシリアルのテストデータの出力ピンである。ＴＣＫ(Test Clock)は、デバッガ３からのクロックの入力ピンである。ＴＭＳ(Test Mode Select)は、デバッガ３からのモード選択の入力ピンである。ＴＣＫおよびＴＭＳによって、ステートマシンであるＴＡＰコントローラのステートが遷移し、バウンダリスキャン機能を実現する。ＴＲＳＴ(Test Reset)は、ＴＡＰコントローラを初期化するためのリセット信号の入力ピンである。
【００１７】
第３バスマスタ８は、外部の監視制御装置２から制御信号およびシリアルデータを受信し、外部の監視制御装置２へ内部マスタバス１８のトレース情報を表わすシリアルデータを送信する。また、第３バスマスタ８は、内部マスタバス１８上の信号の伝送を制御する。
【００１８】
第３バスマスタ８は、ある単位時間内においてＯＣＤ５（第２バスマスタ）よりも多くの情報を伝送できる能力を有する。そのためには、以下の方法が考えられる。
【００１９】
（１）第２バスマスタ５と第３バスマスタ８のデータ転送レートが同一であり、第３バスマスタ８のデータバス幅を第２バスマスタ５のデータバス幅より大きくする。
【００２０】
（２）第２バスマスタ５と第３バスマスタ８のデータバス幅が同一であり、第３バスマスタ８のデータ転送レートを第２バスマスタ５のデータ転送レートよりも高くする。
【００２１】
（３）第２バスマスタ５と第３バスマスタ８のデータバス幅が同一であり、かつ、第２バスマスタ５のデータ転送レートと第３バスマスタ８のデータ転送レートが同一であり、第３バスマスタ８の通信プロトコルを第２バスマスタ５の通信プロトコルよりも簡素にする。
【００２２】
（１）の方法では、データバス幅が増大した分の端子を第３バスマスタ８に付与しなければならなくなるというデメリットがある。また、（２）の方法では、ユーザが異なる２つの周波数（データ転送レート）をオンボード上で管理しなければならず、制御が複雑化するというデメリットがある。
【００２３】
したがって、本発明の実施形態では、（３）を採用する。すなわち、第２バスマスタ５と第３バスマスタ８とは、同一データバス幅、同一データ転送レートでデータを伝送する。また、第３バスマスタ８の通信プロトコルは、第２バスマスタ５のＪＴＡＧプロトコルよりも簡素とする。つまり、第３バスマスタ８は、内部マスタバス１８のトレース結果を第２バスマスタ５より少ないサイクル数で監視制御装置２に伝える。ここでは、第３バスマスタ８の通信プロトコルをＤＡＸＳ（Direct Access by eXtreme Serial Bus）と呼ぶことにする。
【００２４】
第３バスマスタ８は、監視制御装置２との通信のための２つの端子（ＤＡＸＳ＿ＤＡＴＡ端子およびＤＡＸＳ＿ＳＴＡＴＥ端子）を有する。ＤＡＸＳ＿ＤＡＴＡ端子は、シリアルデータバス端子である。ＤＡＸＳ＿ＳＴＡＴＥ端子は、シリアルデータ通信を制御する通信制御端子である。
【００２５】
第３バスマスタ８と第２バスマスタ５の転送レートが同一のため、第３バスマスタ８は、第２バスマスタ５のＴＣＫに入力されたクロックを用いる。また、第３バスマスタ８は、リセット信号も、第２バスマスタのＴＲＳＴに入力されたリセット信号を用いる。
【００２６】
内部マスタバス１８は、バスマスタであるＣＰＵ４（第１バスマスタ）、ＯＣＤ５（第２バスマスタ）、および第３バスマスタ８と接続されるバスである。内部マスタバス１８には、ＣＰＵ４の命令に従って信号が伝送される。
【００２７】
内部メモリ１０は、プログラム、および各種のデータを記憶する。
内部メモリバス１５は、内部メモリ１０と接続されるバスである。
【００２８】
ＭＢＩＵ９は、内部メモリ１０への信号の伝送制御、内部メモリ１０からの信号の伝送制御を実行する。
【００２９】
周辺回路１２は、この半導体チップ１の専用の機能を実現するための回路を含む。
周辺バス１６は、周辺回路と接続されるバスである。
【００３０】
ＰＢＩＵ１１は、周辺回路１２への信号の伝送制御を実行する。
外部メモリ１４は、半導体チップ１の外部に設けられたメモリである。
【００３１】
外部メモリバス１７は、外部メモリ１４と接続されるバスである。
ＥＸＢＩＵ１３は、外部メモリ１４へ信号の伝送制御、外部メモリ１４からの信号の伝送制御を実行する。
【００３２】
（監視制御の動作）
図２は、第１の実施形態の監視制御の動作の概要を説明するための図である。
【００３３】
図２を参照して、ＯＣＤ５は、ＣＰＵ４の命令に従って、内部マスタバス１８を伝送する信号をトレースして（すなわち取得して）、そのトレースした信号から作成したＪＴＡＧプロトコル（第１の通信プロトコル）に準拠した第１のトレース情報を監視制御装置２にシリアルで送信する。この第１のトレース情報は、たとえば、内部マスタバス１８を伝送する信号を表わすビット（Ｓ）に加えてスタートビット（Ｂ）、インストラクションビット（Ｉ）、パリティビット（Ｐ）、ストップビット（Ｅ）を含む。
【００３４】
一方、第３バスマスタ８は、内部バスマスタを伝送する信号をトレースして、そのトレースした信号から作成したＤＡＸＳプロトコル（第２の通信プロトコル）に従う第２のトレース情報を監視制御装置２にシリアルで送信する。この第２のトレース情報は、たとえば、内部マスタバス１８を伝送する信号を表わすビット（Ｓ）を含むが、スタートビット（Ｂ）、インストラクションビット（Ｉ）、パリティビット（Ｐ）およびストップビット（Ｅ）を含まない。
【００３５】
たとえば、図２の例では、ＯＣＤ５からの第１のトレース情報は（Ｎ＋４）ビットで構成されるため、第１のトレース情報を受信するために（Ｎ＋４）サイクルを要するのに対して、第３バスマスタ８から第２のトレース情報はＮビットで構成されるため、第２のトレース情報を受信するためにＮサイクルを要する。つまり、第３バスマスタ８は、少ないサイクル数でトレース結果を外部に伝えることが可能である。
【００３６】
監視制御装置２は、第３バスマスタ８からの第２のトレース情報を受信すると、ＯＣＤ５から第１のトレース情報を受信するまでの間に、第２のトレース情報をＪＴＡＧプロトコルに従った形式に変換する（符号変換）。その後、監視制御装置２は、ＯＣＤ５から第１のトレース情報を受信すると、受信した第１のトレース情報と、変換された第２のトレース情報とが一致するか否かを判定する。監視制御装置２は、一致している場合には、第３バスマスタ８とＯＣＤ５の両方が正常に動作していると推定する。一方、監視制御装置２は、不一致の場合には、第３バスマスタ８と、ＯＣＤ５のいずれか一方が異常動作していると判断する。このように、監視制御装置２は、先に到着する第２のトレース情報をＪＴＡＧプロトコルの形式に変換することによって、ＯＣＤ５が異常動作しているか否かをリアルタイムで監視することができる。
【００３７】
なお、上述の符号変換および一致／不一致の判定処理は、専用のハードウエアによって実現してもよいし、ＣＰＵ４がプログラムを実行することによって実現してもよい。
【００３８】
（第３バスマスタのデータ出力動作）
図３は、第２のトレース情報を外部へ出力する動作のタイミングチャートである。
【００３９】
図３を参照して、監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「１」に設定することによって、転送モードにエントリする。その後、監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「１」から「０」に立下げたことをトリガとして、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」の期間、監視制御装置２は、ＤＡＸＳ＿ＤＡＴＡ端子にシリアルデータｂ３１〜ｂ０を出力する。
【００４０】
ビットｂ３１に「１」、ビットｂ３０に「１」が設定されることにより、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」から「１」に立上がった後の２つ目のクロックエッジで、第３バスマスタ８は、出力(リード）モードに設定される（つまり、内部状態データＤＸＥＮＴ＝「１」、内部状態データＤＸＲＷ＝「１」となる）とともに、内部状態データＤＸＡＤＲ［２９：０］の値が入力されたｂ２９〜ｂ０の値に設定される。
【００４１】
第３バスマスタ８は、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」から「１」に立上がってから３つ目のクロックエッジに同期して、バスリクエスト信号をアサートに設定する（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「１」にする）。第３バスマスタ８は、バスリクエストが許可されるまで、つまりＤＸ＿ＢＵＳＡＣＫ端子の入力が「１」になるまで、バスリクエスト信号をアサートした状態を維持する（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「１」に保持）。第３バスマスタ８は、バスリクエストが許可されたら、つまりＤＸ＿ＢＵＳＡＣＫ端子の入力が「１」となったら、バスリクエスト信号をネゲートする（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「０」にする）。
【００４２】
以上の結果、ＤＸ＿ＡＤＲ［２９：０］端子から出力されるアドレスに格納されたデータ（つまり、トレース情報）が内部マスタバス１８のＤＡＴＡＯ［３１：０］に読み出される。ここで、読出し先を表わすＤＸ＿ＡＤＲ［２９：０］端子の出力アドレスには、内部状態データＤＸＡＤＲ［２９：０］の値が用いられる。内部状態データＤＸＡＤＲ［２９：０］は、エントリ時に、前述のようにｂ２９〜ｂ０の値に設定される。したがって、最初の転送では、ＤＸ＿ＡＤＲ［２９：０］端子が出力するアドレスは、エントリ時に設定した後となる。その後、第３バスマスタ８は、バスリクエスト完了信号が返送されてきたとき、つまりＤＸ＿ＢＵＳＥＮＤ端子の入力が「１」となった次のクロックに同期して、内部状態データＤＸＡＤＲ［２９：０］の値が１ずつインクリメントし、その結果、ＤＸ＿ＡＤＲ［２９：０］端子の出力するアドレスも１ずつインクリメントする。
【００４３】
内部マスタバス１８は、読出しを完了すると、完了信号を第３バスマスタ８へ送信し、ＤＸ＿ＢＵＳＥＮＤ端子の入力が「１」となる。
【００４４】
第３バスマスタ８は、ＤＸ＿ＢＵＳＥＮＤ端子が「１」となったときのクロックエッジで、内部マスタバス１８のＤＡＴＡＯ［３１：０］の値をＤＸ＿ＤＡＴＡＯ［３１：０］端子に取込み、その後、３２ビットのシリアル/パラレル変換を行う。
【００４５】
その後、監視制御装置２は、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「０」に立下げる。第３バスマスタ８は、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」に立下がった次のクロックエッジから、３２ビットのシリアルデータ列の監視制御装置２への転送を開始する。ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」の期間に、３２ビットのシリアルデータ列が転送される。
【００４６】
上述の処理において、バスリクエスト発行、バスリクエスト許可、バスのデータ読出しといった一連のバスアクセスは内部マスタバス１８のバスプロトコルである。したがって、このバスアクセスに要するサイクル数は、トレース情報の転送主体がＯＣＤ５でも、第３バスマスタ８でも同じである。しかし、ＯＣＤ５は、ＪＴＡＧプロトコルに従って、トレース情報を監視制御装置２へ伝送するので、３２ビットのデータに加えて、ＪＴＡＧプロトコルが必要とするインストラクションビット、およびデバッガが必要とするスタートビット、ストップビット、パリティビットなども送信する必要があるのに対して、第３バスマスタ８は、上述のように、３２ビットのデータのみを監視制御装置２へ転送する。したがって、監視制御装置２は、ＯＣＤ５からのトレース情報の受信が完了するまでの間に、受信した第３バスマスタ８からのトレース情報を符号変換することができる。
【００４７】
（第３バスマスタのデータ入力動作）
図４は、第３バスマスタへのデータを伝送する動作のタイミングチャートである。
【００４８】
図４を参照して、監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「１」に設定することによって、転送モードにエントリする。その後、監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「１」から「０」に立下げたことをトリガとして、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」の期間、監視制御装置２は、ＤＡＸＳ＿ＤＡＴＡ端子にシリアルデータｂ３１〜ｂ０を出力する。
【００４９】
ビットｂ３１に「１」、ビットｂ３０に「０」が設定されることにより、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」から「１」に立上がった後の２つ目のクロックエッジで、第３バスマスタ８は、入力(ライト）モードに設定される（つまり、内部状態データＤＸＥＮＴ＝「１」、内部状態データＤＸＲＷ＝「０」となる）とともに、内部状態データＤＸＡＤＲ［２９：０］の値が入力されたｂ２９〜ｂ０の値に設定される。
【００５０】
その後、監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「１」から「０」に立下げ、その次のクロックエッジから、ＤＡＸＳ＿ＤＡＴＡ端子にシリアルデータｂ３１〜ｂ０を出力する。監視制御装置２が、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力を「０」から「１」に立上げた後、さらに「１」から「０」に立下げることによって、シリアルデータの転送が終了する。
【００５１】
第３バスマスタ８は、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「１」から「０」に立下げられてから１つの目のクロックエッジで、データｂ０を取込み、取込んだシリアルデータｂ３１〜ｂ０をパラレルデータに変換して、２つ目のクロックエッジで、パラレルデータをＤＸ＿ＤＡＴＡＩ［３１：０］端子に出力する。
【００５２】
第３バスマスタ８は、ＤＡＸＳ＿ＳＴＡＴＥ端子の入力が「０」から「１」に立上がってから３つ目のクロックエッジに同期して、バスリクエスト信号をアサートに設定する（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「１」にする）。第３バスマスタ８は、バスリクエストが許可されるまで、つまりＤＸ＿ＢＵＳＡＣＫ端子の入力が「１」になるまで、バスリクエスト信号をアサートした状態を維持する（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「１」に保持）。第３バスマスタ８は、バスリクエストが許可されたら、つまりＤＸ＿ＢＵＳＡＣＫ端子の入力が「１」となったら、バスリクエスト信号をネゲートする（ＤＸ＿ＢＵＳＲＥＱ端子の出力を「０」にする）。
【００５３】
以上の結果、ＤＸ＿ＡＤＲ［２９：０］端子から出力されるアドレスにＤＸ＿ＤＡＴＡＩ［３１：０］端子のデータが書き込まれる。
【００５４】
ここで、書込み先を表わすＤＸ＿ＡＤＲ［２９：０］端子の出力アドレスには、内部状態データＤＸＡＤＲ［２９：０］の値が用いられる。内部状態データＤＸＡＤＲ［２９：０］は、エントリ時に、前述のようにｂ２９〜ｂ０の値に設定される。したがって、最初の転送では、ＤＸ＿ＡＤＲ［２９：０］端子が出力するアドレスは、エントリ時に設定した後となる。その後、第３バスマスタ８は、バスリクエスト完了信号が返送されてきたとき、つまりＤＸ＿ＢＵＳＥＮＤ端子の入力が「１」となった次のクロックに同期して、内部状態データＤＸＡＤＲ［２９：０］の値が１ずつインクリメントし、その結果、ＤＸ＿ＡＤＲ［２９：０］端子の出力するアドレスも１ずつインクリメントする。
【００５５】
内部マスタバス１８は、書込みが完了すると、完了信号を第３バスマスタ８へ送信し、ＤＸ＿ＢＵＳＥＮＤ端子の入力が「１」となる。
【００５６】
以上のように、第１の実施形態によれば、ＯＣＤが、内部マスタバス１８を流れる信号をトレースして生成した第１のトレース情報を外部の監視制御装置２へ出力するのに加えて、第３バスマスタも、内部マスタバス１８を流れる信号をトレースして生成した第２のトレース情報を外部の監視制御装置２へ出力する。ＯＣＤが正常に動作していない場合には、受信した第１のトレース情報と第２のトレース情報が異なる可能性が高いので、監視制御装置２は、第１のトレース情報と第２のトレース情報が一致するか否かを判定することによって、ＯＣＤが正常に動作しているか否かを判断することができる。
【００５７】
［第２の実施形態］
第２の実施形態は、監視制御装置によるトレース情報の判定の仕方が、第１の実施形態と相違する。
【００５８】
（監視制御の動作）
図５は、第２の実施形態の監視制御の動作の概要を説明するための図である。
【００５９】
図５を参照して、ＯＣＤ５は、ＣＰＵ４の命令に従って、内部マスタバス１８を伝送する信号をトレースして、そのトレースした信号から作成したＪＴＡＧプロトコル（第１の通信プロトコル）に準拠した第１のトレース情報を監視制御装置２にシリアルで送信する。この第１のトレース情報は、たとえば、内部マスタバス１８を伝送する信号を表わすビット（Ｓ）に加えてスタートビット（Ｂ）、インストラクションビット（Ｉ）、パリティビット（Ｐ）、ストップビット（Ｅ）を含む。
【００６０】
一方、第３バスマスタ８は、内部バスマスタを伝送する信号をトレースして、そのトレースした信号から作成したＤＡＸＳプロトコル（第２の通信プロトコル）に従う第２のトレース情報を監視制御装置２をシリアルで送信する。この第２のトレース情報は、たとえば、内部マスタバス１８を伝送する信号を表わすビット（Ｓ）を含むが、スタートビット（Ｂ）、インストラクションビット（Ｉ）、パリティビット（Ｐ）およびストップビット（Ｅ）を含まない。
【００６１】
監視制御装置２は、ＯＣＤ５からの第１のトレース情報を受信すると、第１のトレース情報をＤＡＸＳプロトコルに従う形式に変換する（符号変換）。その後、監視制御装置２は、受信した第２のトレース情報と、変換された第１のトレース情報とが一致するか否かを判定する。監視制御装置２は、一致している場合には、第３バスマスタ８とＯＣＤ５の両方が正常に動作していると推定する。一方、監視制御装置２は、不一致の場合には、第３バスマスタ８と、ＯＣＤ５のいずれか一方が異常動作していると判断する。なお、上述の符号変換および一致／不一致の判定処理は、専用のハードウエアによって実現してもよいし、ＣＰＵ４がプログラムを実行することによって実現してもよい。
【００６２】
［第３の実施形態］
第３の実施形態は、複数の半導体チップを含み、これらのチップの異常動作を監視する監視システムに関する。
【００６３】
図６は、第３の実施形態の監視システムの構成を表わす図である。
図６を参照して、この監視システムは、半導体処理システム１００と、監視制御装置５２と、第１デバッガ３ａと、第２デバッガ３ｂとを備える。
【００６４】
半導体処理システム１００は、第１の実施形態の半導体チップ１と同様の第１半導体チップ１ａおよび第２半導体チップ１ｂを備える。
【００６５】
第１半導体チップ１ａは、第１の実施形態のデバッガ３と同様の第１デバッガ３ａと接続される。
【００６６】
第２半導体チップ１ｂは、第２の実施形態のデバッガ３と同様の第２デバッガ３ｂと接続される。
【００６７】
第１半導体チップ１ａ内のＯＣＤ５ａおよび第３バスマスタ８ａ、第２半導体チップ１ｂ内のＯＣＤ５ｂおよび第３バスマスタ８ｂは、共通の監視制御装置５２と接続される。
【００６８】
つまり、監視制御装置５２は、第１半導体チップ１ａ内のＯＣＤ５ａからの第１のトレース情報と、第１半導体チップ１ａ内の第３バスマスタ８ａからの第２のトレース情報と、第２半導体チップ１ｂ内のＯＣＤ５ｂからの第３のトレース情報と、第２半導体チップ１ｂ内の第３バスマスタ８ｂからの第４のトレース情報とを受信する。
【００６９】
監視制御装置５２は、受信した第１〜第４のトレース情報が一致しているか否かを判定する。
【００７０】
監視制御装置５２は、第１〜第４のトレース情報のすべてが一致している場合には、第１半導体チップ１ａ内の第３バスマスタ８ａとＯＣＤ５ａ、第２半導体チップ１ｂ内の第３バスマスタ８ｂとＯＣＤ５ｂがすべて正常に動作していると推定する。一方、監視制御装置５２は、第４のトレース情報が第１〜第３のトレース情報と異なる場合には、第２半導体チップ１ｂ内の第３バスマスタ８ｂが異常動作していると判断する。一方、監視制御装置５２は、第１のトレース情報が第２〜第４のトレース情報と異なる場合には、第１半導体チップ１ａ内のＯＣＤ５ａが異常動作していると判断する。一方、監視制御装置５２は、第１のトレース情報と第２のトレース情報が一致し、かつ第３のトレース情報と第４のトレース情報と一致し、かつ第１のトレース情報と第３のトレース情報が相違する場合には、第１半導体チップ１ａまたは第２半導体チップ１ｂのいずれかの構成要素（第３バスマスタおよびＯＣＤを除く）が異常動作していると判断する。
【００７１】
（変形例）
本発明は、上記実施形態に限定されるものではなく、本発明にはたとえば以下のような変形例も含まれる。
【００７２】
（１）  第３バスマスタ
本発明の実施形態の第３バスマスタは、独自のプロトコルＤＡＸＳに基づいて動作するものとしたが、これに限定するものではない。たとえば、第３バスマスタは、ＪＴＡＧプロトコルに従って動作するＯＣＤと同じものであってもよい。また、第３バスマスタは、内部マスタバスからのデータを監視制御装置に転送する機能（第１の機能）と監視制御装置からのデータを内部マスタバスに転送する機能（第２の機能）とをを有したが、第１の機能のみを有するものとしてもよい。さらに、第３バスマスタは、内部マスタバス上の信号の伝送を制御する機能を有さず、内部マスタバスを流れる信号をトレースした結果を監視制御装置へ単に転送するインタフェース回路であってもよい。
【００７３】
（２）  第２のトレース情報
本発明の実施形態では、第２のトレース情報は、スタートビット、インストラクションビット、パリティビット、およびストップビットのすべてを含まないこととしたが、監視制御装置での符号変換の速度が早い場合には、これらのビットのうち少なくとも１つのビットを含まないこととしてもよい。
【００７４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００７５】
１  半導体チップ１、１ａ  第１半導体チップ１、１ｂ  第２半導体チップ１、２，５２  監視制御装置、３  デバッガ、３ａ  第１デバッガ、３ｂ  第２デバッガ、４，４ａ，４ｂ  ＣＰＵ、５，５ａ，５ｂ  ＯＣＤ、８，８ａ，８ｂ  第３バスマスタ、９，９ａ，９ｂ  ＭＢＩＵ、１０，１０ａ，１０ｂ  内部メモリ、１１，１１ａ，１１ｂ  ＰＢＩＵ、１２，１２ａ，１２ｂ  周辺回路、１３，１３ａ，１３ｂ  ＥＸＢＩＵ、１４，１４ａ，１４ｂ  外部メモリ、１５，１５ａ，１５ｂ  内部メモリバス、１６，１６ａ，１６ｂ  周辺バス、１７，１７ａ，１７ｂ  外部メモリバス、１８，１８ａ，１８ｂ  内部マスタバス、１００  半導体処理システム。
【図１】
2011155066.tif 000003
【図２】
2011155066.tif 000004
【図３】
2011155066.tif 000005
【図４】
2011155066.tif 000006
【図５】
2011155066.tif 000007
【図６】
2011155066.tif 000008