(57)【要約】【課題】プロセッサの内部状態の故障検出の範囲を広げ、故障発生から故障検出まで時間を短縮するシステムの提供。【解決手段】互いに同一構成とされたＪＴＡＧ準拠の第１、第２のプロセッサ（１０１Ａ、１０１Ｂ）と、通常動作時、プロセッサ監視用のＪＴＡＧ信号を生成するプロセッサ監視用ＪＴＡＧコントローラ（１０５）を備え、前記コントローラ（１０５）は、監視用ＴＤＩ信号を、第１、第２のプロセッサ（１０１Ａ、１０１Ｂ）に対して，共通に且つ並列に入力し、第１、第２のプロセッサ（１０１Ａ、１０１Ｂ）から並列に出力されるＴＤＯ信号を入力してこれらを比較し、不一致検出時、プロセッサ故障通知信号を活性状態とするＴＤＯ信号比較回路（１０３）を備える。【選択図】図２０
2013242746.tif 000002
【特許請求の範囲】
【請求項１】
互いに同一構成とされた、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）準拠の複数のプロセッサと、
通常動作時に、監視用のＪＴＡＧ信号を生成するプロセッサ監視用ＪＴＡＧプロセッサ監視用ＪＴＡＧコントローラと、
を備え、
前記プロセッサ監視用ＪＴＡＧコントローラより出力される監視用のＪＴＡＧ信号のうち監視用のテストデータインプット（ＴＤＩ）信号は、前記複数のプロセッサの複数のテストデータインプット（ＴＤＩ）端子に、共通に且つ並列に供給され、
前記監視用のテストデータインプット（ＴＤＩ）信号の入力に対応して前記複数のプロセッサの複数のテストデータアウトプット（ＴＤＯ）端子から並列に出力されるテストデータアウトプット（ＴＤＯ）信号を入力してこれらを比較し、不一致を検出した場合、プロセッサ故障通知信号を活性状態として出力するＴＤＯ信号比較回路をさらに備えた、ことを特徴とする故障検出システム。
【請求項２】
前記プロセッサ監視用ＪＴＡＧコントローラは、前記プロセッサに含まれる複数の内部回路に対して、各内部回路の状態を読み出して前記プロセッサのテストデータアウトプット（ＴＤＯ）端子から出力させるＪＴＡＧ命令コマンドを順次生成して、前記監視用のテストデータインプット（ＴＤＩ）信号として出力し、最後の前記内部回路の読み出しが終了すると、最初に読み出しを行った前記内部回路に戻り再び読み出しを行う反復処理を繰り返す、ことを特徴とする請求項１記載の故障検出システム。
【請求項３】
前記プロセッサ監視用ＪＴＡＧコントローラは、
システムの起動時に、入力されるデバッグ指示信号の状態を確認し、前記デバッグ指示信号が非活性状態の場合、通常モードでの起動と判断し、監視開始指示信号を活性化させるデバッグモード判定回路と、
前記監視開始指示信号の活性化に応答して活性化され、入力されるクロック信号をカウントし、カウント値がそれぞれ予め定められた所定値になると、監視用のテストリセット（ＴＲＳＴ）信号のリセット解除のタイミング、監視用のテストクロック（ＴＣＫ）信号の供給を許可するクロックイネーブル信号の活性化、及び、制御開始指示信号を活性化するイニシャライズ制御カウンタと、
前記イニシャライズ制御カウンタから活性化された前記制御開始指示信号が出力されると、以降の前記クロック信号をカウントし、予め定められた所定のカウント値に応じてカウントアップ指示信号を生成するＪＴＡＧ信号制御カウンタと、
前記ＪＴＡＧ信号制御カウンタから出力される前記カウントアップ指示信号に応答してカウントアップ動作し、カウント値をＪＴＡＧ命令コマンドとして出力する命令コマンドカウンタと、
前記ＪＴＡＧ信号制御カウンタのカウント値を基に、監視用のテストモードセットセレクト（ＴＭＳ）信号を生成するＴＭＳ制御回路と、
前記ＪＴＡＧ信号制御カウンタのカウント値と、前記命令コマンドカウンタのカウント値とに基づき、前記監視用のテストデータインプット（ＴＤＩ）信号を生成するＴＤＩ制御回路と、
前記イニシャライズ制御カウンタからの前記クロックイネーブル信号が活性化されると、前記クロック信号を、前記監視用テストクロック（ＴＣＫ）信号として出力するクロックゲート回路と、
を備えた、ことを特徴とする請求項２記載の故障検出システム。
【請求項４】
前記ＴＤＯ信号比較回路は、
前記複数のプロセッサの複数のテストデータアウトプット（ＴＤＯ）端子から並列に出力される複数のテストデータアウトプット（ＴＤＯ）信号の一致・不一致を検出する検出回路と、
出力信号を前記プロセッサ故障通知信号とする保持回路と、
前記検出回路での検出結果を選択制御信号として入力し、前記検出結果の一致、又は不一致に応じて、前記保持回路の出力信号、又は、前記プロセッサ故障通知信号の活性状態に対応する固定論理値を選択して出力するセレクタと、
を備え、
前記保持回路は、前記セレクタの出力信号を、前記プロセッサ監視用ＪＴＡＧコントローラから出力される監視用のテストクロック（ＴＣＫ）信号に応答してサンプルしサンプルした値を出力する保持回路と、
前記検出回路で不一致を検出すると、前記セレクタは、前記固定論理値を選択し、以降、前記保持回路で保持出力される前記プロセッサ故障通知信号は活性状態を維持する、ことを特徴とする請求項１乃至３のいずれか１項に記載の故障検出システム。
【請求項５】
デバッグモードでシステムが起動した場合、前記プロセッサ監視用ＪＴＡＧコントローラは活性化されず、前記監視用のＪＴＡＧ信号は出力されず、デバッグ装置からのデバッグ用のＪＴＡＧ信号が前記プロセッサに供給される、ことを特徴とする請求項１乃至４のいずれか１項に記載の故障検出システム。
【請求項６】
前記監視用ＪＴＡＧ信号、又は前記デバッグ用ＪＴＡＧ信号を、前記デバッグ指示信号の値に基づき、切り替えるＪＴＡＧセレクタを備え、
前記デバッグ指示信号が非活性状態のとき、
前記ＪＴＡＧセレクタは、
前記プロセッサ監視用ＪＴＡＧコントローラからの前記監視用ＪＴＡＧ信号のテストデータインプット（ＴＤＩ）信号、テストクロック（ＴＣＫ）信号、テストモードセレクト（ＴＭＳ）信号、テストリセット(ＴＲＳＴ)信号をそれぞれ、前記複数のプロセッサに、共通に且つ並列に供給し、
前記デバッグ指示信号が活性状態のとき、
前記ＪＴＡＧセレクタは、
前記デバッグ装置からの前記デバッグ用のＪＴＡＧ信号のうちテストクロック（ＴＣＫ）信号、テストモードセレクト（ＴＭＳ）信号、テストリセット(ＴＲＳＴ)信号をそれぞれ、前記複数のプロセッサに、共通に且つ並列に供給し、テストデータインプット（ＴＤＩ）信号は前記複数のプロセッサ間でチェーン接続し、最後段のプロセッサのテストデータアウトプット（ＴＤＯ）端子から順次出力される前記複数のプロセッサのテストデータアウトプット（ＴＤＯ）信号を、デバッグ用のテストデータアウトプット（ＴＤＯ）信号として前記デバッグ装置に送信する、ことを特徴とする請求項５記載の故障検出システム。
【請求項７】
前記ＴＤＯ信号比較回路からの前記プロセッサ故障通知信号に関して、
システム外部に出力する、
前記複数のプロセッサに割り込み信号として供給する、
周辺回路に入力する、
前記プロセッサ監視用ＪＴＡＧコントローラに入力する、
の少なくとも１つを行う、ことを特徴とする請求項１乃至６のいずれか１項に記載の故障検出システム。
【請求項８】
請求項１乃至７のいずれか１項に記載の故障検出システムを備えた半導体装置。
【請求項９】
互いに同一構成とされた、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）準拠の複数のプロセッサを備えたシステムの通常動作時に、プロセッサ監視用ＪＴＡＧコントローラより出力される監視用のＪＴＡＧ信号のうち、監視用のテストデータインプット（ＴＤＩ）信号を、前記複数のプロセッサの複数のテストデータインプット（ＴＤＩ）端子に、共通に且つ並列に供給し、
前記監視用のテストデータインプット（ＴＤＩ）信号の入力に対応して、前記複数のプロセッサの複数のテストデータアウトプット（ＴＤＯ）端子から、並列に出力されるテストデータアウトプット（ＴＤＯ）信号を比較し、不一致を検出した時、プロセッサ故障通知信号を出力する、ことを特徴とする故障検出方法。
【請求項１０】
通常動作時、前記プロセッサ監視用ＪＴＡＧコントローラは、前記プロセッサに含まれる複数の内部回路に対して、各内部回路の状態を読み出して前記プロセッサのテストデータアウトプット（ＴＤＯ）端子から出力させるＪＴＡＧ命令コマンドを順次生成して前記監視用のテストデータインプット（ＴＤＩ）信号として出力し、
最後の前記内部回路の読み出しが終了すると、最初に読み出しを行った前記内部回路に戻り再び読み出しを行う反復処理を繰り返す、ことを特徴とする請求項９記載の故障検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障検出技術に関し、特に、プロセッサの故障の検出に好適な故障検出システムと方法並びに半導体装置に関する。
【背景技術】
【０００２】
プロセッサ等半導体装置の機能安全（Functional Safety）の向上又は要求される機能安全規格の確保のために、プロセッサ等半導体装置を実装したシステム製品の運用中にプロセッサ等半導体装置の故障を、いち早く且つ高精度に検出することが求められている。ここで、機能安全とは、安全機能が正しく動作することによって実現される安全性をいう。なお、電気・電子・プログラマブル電子安全関連系の機能安全規格は、例えばＩＥＣ６１５０８に標準化されている（IEC：International Electro-technical Commission：国際電気標準会議）。ＩＥＣ６１５０８では安全レベル（SIL: Safety Integrity Level）を４段階に規定している。安全関連系は、安全機能を実行する主体をいう。また、車載装置等、自動車の安全規格として例えばＩＳＯ２６２６２がある（ISO: International Organization for Standardization：国際標準化機構）。
【０００３】
＜デュアルプロセッサのロックステップ方式＞
フェールセーフ機能を実現するための構成として、例えばデュアルプロセッサのロックステップ・システム（lockstep system）が知られている。デュアルプロセッサのロックステップ・システムは、２つのプロセッサで同一の処理を実行しその差を検出することで故障を検出する。図１は、デュアルプロセッサ・ロックステップ方式を説明する図である（例えば非特許文献１のFigure 1参照）。なお、デュアルプロセッサはデュアルコアともいう。
【０００４】
図１を参照すると、半導体装置（半導体チップ）１０（SOC(System On Chip：システム・オン・チップ）：必要なシステム機能を１チップに集積化したデバイス）に搭載されるプロセッサ＃０（１１Ａ）とプロセッサ＃１（１１Ｂ）は同一構成とされ、共通のクロック信号で駆動され、互いに同一のプログラム（命令）を同時に実行する。
【０００５】
比較回路１３は、プロセッサ＃０からプロセッサ＃０バス信号１２Ａに出力されたプログラム処理結果＃０と、プロセッサ＃１からプロセッサ＃１バス信号１２Ｂに出力されるプログラム処理結果＃１を受け取り、これらを比較して、一致・不一致を検出する。比較回路１３は、プログラム処理結果＃０、＃１が不一致の場合、プロセッサ故障発生と判定し、図示されないプロセッサ故障通知信号を、例えば周辺回路制御バス１４あるいは半導体装置１０の外部に出力する。なお、プロセッサ＃０（１１Ａ）からのプログラム処理結果＃０と、プロセッサ＃１（１１Ｂ）からのプログラム処理結果＃０とは互いに同期して比較回路１３に入力され比較される必要がある。このため、プロセッサ＃０とプロセッサ＃１を同期化させる同期化手段（不図示）が設けられている。
【０００６】
このように、製品等の応用等に対応したプログラムが、二つのプロセッサ＃０（１１Ａ）とプロセッサ＃１（１１Ｂ）で同時に実行され、処理結果を監視することで故障を検出する。
【０００７】
なお、特に制限されないが、プロセッサ＃０（１１Ａ）とプロセッサ＃１（１１Ｂ）は、周辺回路制御バス１４を介して、不図示のメモリ（プログラム命令を記憶保持するＤＲＡＭ（Dynamic Random Access Memory）等のメモリ）から命令をフェッチして実行する。また、特に制限されないが、プロセッサ＃０（１１Ａ）とプロセッサ＃１（１１Ｂ）のデュアルプロセッサの一方を制御用プロセッサとし、他方を監視用プロセッサとする構成も用いられる。この場合、例えば制御用プロセッサに該当するプロセッサのプログラム処理結果が周辺回路制御バス１４等を介して、不図示のメモリあるいは不図示の入出力（ＩＯ）装置等に出力される。
【０００８】
図１に例示したデュアルプロセッサのロックステップ方式では、基本的に、プロセッサが出力した信号から判別できる範囲の故障しか検出できない。このため、プロセッサから信号が出力されない場合には、故障の検出は困難である（故障によっては検出できない場合もある）。以下説明する。
【０００９】
図２は、図１において、プロセッサ＃０とプロセッサ＃１から汎用レジスタ＃０の値をプロセッサ＃１バス信号とプロセッサ＃１バス信号に出力するプログラムを実行した場合の動作を説明する図（参考図）である。なお、図２には、プロセッサ動作クロック信号（プロセッサに供給されるシステムクロック信号）（図１では図示されない）と、プロセッサ＃０の汎用レジスタ＃０の値と、プロセッサ＃０の汎用レジスタ＃１の値と、プロセッサ＃０バス信号と、プロセッサ＃１の汎用レジスタ＃０の値と、プロセッサ＃１の汎用レジスタ＃１の値と、プロセッサ＃１バス信号と、比較回路１３によるプロセッサ＃０バス信号とプロセッサ＃１バス信号の比較結果の時間推移の一例（本発明者により作成された参考図）が示されている。
【００１０】
図２において、（１）（丸で囲んだ番号１）のタイミングで、図１に示したプロセッサ＃０の汎用レジスタ＃１に故障が発生している。このためタイミング（１）以降、プロセッサ＃０の汎用レジスタ＃１には、その期待値：０ｘ００００＿０００２（０ｘＨｅｘａｄｅｃｉｍａｌを表す、３２ビットデータ）ではなく、０ｘ００００＿０００３がセットされている状態となっている。しかしながら、プロセッサ＃０バス信号には、プロセッサ＃０の汎用レジスタ＃０の値０ｘ００００＿０００８が出力されている。
【００１１】
このプロセッサ＃０バス信号の値は、正常動作をしているプロセッサ＃１から出力されるプロセッサ＃１バス信号の値（プロセッサ＃１の汎用レジスタ＃０の値）と一致している。
【００１２】
このため、実際にはプロセッサ＃０の汎用レジスタ＃１に故障が発生しているにもかかわらず、比較回路１３では、プロセッサ＃０の故障（汎用レジスタ＃１の故障）を検出することができない。
【００１３】
＜ＪＴＡＧ方式＞
半導体集積回路や基板の検査（バウンダリスキャンテスト）を規格化したＪＴＡＧ（Joint Test Action Group）は、その機能から、プロセッサ等の内部へのアクセスを可能としており、例えばシステムに組み込まれるプロセッサ上で動作するソフトウェア（プログラム）のデバッグ等にも利用されている。なお、ＪＴＡＧによるソフトウェア・デバッグ機能は、「JTAG-ICE」（ICE：In-Circuit Emulator）、あるいは「ＪＴＡＧデバッガ」とも呼ばれる。ＪＴＡＧを用いたソフトウェア・デバッグでは、プロセッサのコアの内部にアクセスして、例えばブレークポイント設定／解除、ステップ実行、メモリ／レジスタのダンプ、トレース等が行われる。
【００１４】
ＪＴＡＧを用いてプロセッサ内のレジスタ等の内部信号を読み出す場合の構成例について説明する。図３に、デュアルプロセッサ構成の半導体装置（SOC）を備えたシステムのソフトウェア・デバッグ用のＪＴＡＧの接続構成の一例を示す（例えば非特許文献１のFigure 2参照）。
【００１５】
図３において、半導体装置（チップ）（SOC）１０’上のプロセッサ１１’Ａ、１１’Ｂは、IEEE (the Institute of Electrical and Electronics Engineers, Inc) Std 1149.1準拠のＪＴＡＧアーキテクチャとして構成され、内部に、プロセッサの本来の機能を実現するロジック（コアロジック）（不図示）に加え、ＪＴＡＧ回路（不図示）を備えている。
【００１６】
図３において、プロセッサ１１’Ａ、１１’Ｂ内に実装されるＪＴＡＧ回路は、
・命令レジスタ（ＩＲ（インストラクション・レジスタ））と、
・データレジスタ（ＤＲ）（BSR（Boundary Scan Register：バウンダリスキャン・レジスタ）、ＢＹＰＡＳＳ（１ビット構成のバイパス・レジスタ）、IDCODES（デバイスＩＤとリビジョン番号を保持するレジスタ）、その他のオプション・レジスタ）と、
・デコーダ（命令レジスタの命令をデコードする）と、
・第１のマルチプレクサ（MUX）（デコーダの出力に基づきデータレジスタの１つを選択して出力する）と、
・ＴＡＰコントローラ（１６種のステートを有するステートマシン、ＴＭＳとＴＣＫにより状態遷移し、命令レジスタ、データレジスタ等を制御する）と、
・第２のマルチプレクサ（MUX）（ＴＡＰコントローラの出力に基づき、命令レジスタ又は第１のＭＵＸ（マルチプレクサ）の出力を選択する）
を備える。
【００１７】
ＴＡＰ（Test Access Port：テストアクセスポート）（ＪＴＡＧインタフェース）は、以下の信号（ＪＴＡＧ信号」という）を含む。
【００１８】
・ＴＣＫ（Test Clock：テストクロック）：テストオペレーション及びバウンダリスキャン動作を同期して行うためのテストクロック信号である（入力端子）。
・ＴＭＳ（Test Mode Select：テストモードセレクト）：ＴＡＰコントローラでデコードされ、テストオペレーションの制御を行う信号である（入力端子）。
・ＴＤＩ（Test Data Input：テストデータインプット）：テストロジックに命令やデータをシリアルに入力する信号である（入力端子）。ＴＤＩはデコーダで選択されたレジスタにＴＣＫの立ち上がりエッジに同期してキャプチャされる。
・ＴＤＯ（Test Data Output：テストデータアウトプット）：テストロジックからのデータをシリアルに出力する信号である（出力端子）。ＴＤＯはデコーダで選択されたレジスタからＴＣＫの立ち上がりエッジに同期してシフトアウトされ（読み出され）、ＴＣＫの立ち下がりエッジまで変化しない。ＴＤＯ端子は、シフトオペレーション以外は、ハイインピーダンス状態とされる。
・ＴＲＳＴ（Test Reset：テストリセット）：オプション信号。ＴＡＰコントローラの非同期リセットに用いられる信号である（入力端子）。ＴＲＳＴのＬｏｗを受け、ＴＡＰコントローラはステートマシンをリセットする（Test-Logic-Reset）。
【００１９】
ＪＴＡＧデバイスのＴＤＩ端子にシリアルに入力された信号は、ＴＡＰコントローラの状態によってデータレジスタ又は命令レジスタのシフトレジスタを通過し、ＴＤＯ端子から出力される。
【００２０】
図３に示すように、ＰＣ（Personal Computer）２０からのデバッグ用ＴＤＩ、ＴＭＳ、ＴＣＫ、ＴＲＳＴのうち、デバッグ用ＴＭＳ、ＴＣＫ、ＴＲＳＴの各信号は、プロセッサ＃０、＃１のＴＭＳ端子、ＴＣＫ端子、ＴＲＳＴ端子にそれぞれ並列に入力される。
【００２１】
一方、デバッグ用ＴＤＩはシリアル・チェーン接続（デイジー・チェーン接続）される。すなわち、ＰＣ２０からのデバッグ用ＴＤＩ信号は、プロセッサ＃０のＴＤＩ端子にシリアルに入力され、プロセッサ＃０のＴＤＯ端子からシリアルに出力される信号が、プロセッサ＃１のＴＤＩ端子にシリアルに入力され、プロセッサ＃１のＴＤＯ端子からシリアルに出力される信号が、デバック用ＴＤＯ信号として、ＰＣ２０に入力される。このように、プロセッサ＃０とプロセッサ＃１を個別にデバッグできるように、ＴＤＩ信号は、シリアル・チェーン接続されている。なお、図３では、簡単のため、デバッグ用ＴＭＳ、ＴＤＩ、ＴＤＯ、ＴＲＳＴにそれぞれ接続されるプルアップ抵抗は省略されている。
【００２２】
図４（Ａ）と図４（Ｂ）は、図３において、ＪＴＡＧ命令コマンド設定時と、プロセッサ内部信号読み出し時のアクセスとをそれぞれ説明する図（本発明者により作成された参考図）である。
【００２３】
図４（Ａ）に示すように、プロセッサ＃１向けのデバック用ＴＤＩ信号（命令コマンド）を、プロセッサ＃０のＴＤＩ端子にシリアルに入力したのち、プロセッサ＃０のＴＤＩ端子に、デバック用ＴＤＩ信号（命令コマンド）をシリアルに入力している。この場合、先に、プロセッサ＃０のＴＤＩ端子にＴＣＫに同期してシリアルに入力されたデバック用ＴＤＩ信号（命令コマンド）はプロセッサ＃０内のＪＴＡＧ回路において例えば１ビットのバイパス・レジスタを経由して（バウンダリスキャン・レジスタをバイパスする）、ＴＤＯ端子からシリアルに出力され、プロセッサ＃１のＴＤＩ端子にＴＣＫに同期してシリアルに入力され、例えばプロセッサ＃１内のＪＴＡＧ回路の命令レジスタに設定される。後からプロセッサ＃０のＴＤＩ端子にＴＣＫに同期してシリアルに入力されるデバック用ＴＤＩ信号は、プロセッサ＃０内のＪＴＡＧ回路の命令レジスに設定される。
【００２４】
プロセッサの内部信号の読み出し時には、図４（Ｂ）に示すように、デバック用ＴＤＯ信号として、プロセッサ＃１のＪＴＡＧ回路の選択されたレジスタ（例えばバウンダリスキャン・レジスタ）からテストクロックＴＣＫに同期してシリアルにシフトアウトされた信号（プロセッサ＃１内部信号）が、ＴＤＯ端子から出力され後に、プロセッサ＃０のＪＴＡＧ回路の選択されたレジスタ（例えばバウンダリスキャン・レジスタ）からテストクロックＴＣＫに同期してシリアルにシフトアウトされた信号（プロセッサ＃０内部信号）が、デバッグ用ＴＤＯ信号として、プロセッサ＃１のＴＤＯ端子から出力される。この場合、プロセッサ＃０のＪＴＡＧ回路の選択されたレジスタ（例えばバウンダリスキャン・レジスタ）からＴＣＫに同期してシリアルにＴＤＯ端子にシフトアウトされる信号（プロセッサ＃０内部信号）は、プロセッサ＃１のＴＤＩ端子に入力され、プロセッサ＃１内のＪＴＡＧ回路の例えば１ビットのバイパス・レジスタを介してプロセッサ＃１のＴＤＯ端子からＴＣＫに同期してシリアルに出力される。
【００２５】
なお、図４（Ｂ）のプロセッサ＃１内部信号は、プロセッサ＃１へ入力されるデバッグ用ＴＤＩ信号による命令コマンドをプロセッサ＃１（１１’Ｂ）内のＪＴＡＧ回路の命令レジスタに設定し（後述される図１０の命令コマンド参照）、プロセッサ＃１（１１’Ｂ）内の汎用レジスタ＃０（図３では不図示）等の値をバウンダリスキャン・セルに設定し、ＴＤＯ端子からシリアルにシフトアウトされたものである。
【００２６】
また、図４（Ｂ）のプロセッサ＃０内部信号は、プロセッサ＃０へ入力されるデバッグ用ＴＤＩ信号による命令コマンドをプロセッサ＃０（１１’Ａ）内のＪＴＡＧ回路の命令レジスタに設定し、プロセッサ＃０（１１’Ａ）内の汎用レジスタ＃０（図３では不図示）等の値をバウンダリスキャン・セルに設定し、ＴＤＯ端子からシリアルにシフトアウトし、プロセッサ＃１（１１’Ｂ）のＴＤＩ端子、ＪＴＡＧ回路のバイパス・レジスタ、ＴＤＯ端子を介して出力されたものである。
【００２７】
図３の構成の場合、プロセッサ＃０とプロセッサ＃１に対して、同時（並列）に、ＪＴＡＧの命令コマンドを書き込むことはできない。また、プロセッサ＃０とプロセッサ＃１から、同時（並列）に、内部データを読み出すことはできない。その結果、アクセス時間が長くなる。
【００２８】
なお、複数のデバイスへＴＤＩ信号を、並列に書き込みを行う構成が特許文献１等に開示されている。特許文献１には、ＴＤＩ信号が複数のデバイスのすべてに直列に通過するようにスキャンパスを形成する構成に対して、複数のデバイスのＴＤＩ端子にＴＤＩ信号を並列に接続している。また特許文献１では、ＴＤＩ信号を並列入力する複数のデバイスのそれぞれのＴＤＯ端子に、複数の入力が接続されたセレクタを備え、セレクタで選択されたＴＤＯ信号を出力する構成とされている。
【先行技術文献】
【特許文献】
【００２９】
【特許文献１】特開２００１−３４３４３２号公報
【非特許文献】
【００３０】
【非特許文献１】Harn Hua Ng "PPC405 Lockstep System on ML310", XAPP564 (v1.0.2)January 29, 2007、［２０１２年３月２２日検索］、インターネット＜ＵＲＬ：http://www.eetasia.com/ARTICLES/2004DEC/A/2004DEC09_PL_MPR_AN.PDF?SOURCES=DOWNLOAD＞
【発明の概要】
【発明が解決しようとする課題】
【００３１】
関連技術の分析を以下に示す。
【００３２】
図１の構成の場合、プロセッサ＃０の汎用レジスタ＃１が故障したとき、該故障による影響がプロセッサ＃０バス信号に出力されない場合には、プロセッサ＃０バス信号をプロセッサ＃１バス信号と比較しても、両者が一致するため、プロセッサ＃０の故障（汎用レジスタ＃１の故障）を検出することはできない。
【００３３】
図３の構成の場合、ＴＤＩ信号は、複数のプロセッサ間でシリアル・チェーン接続されている。このため、複数のプロセッサへの命令コマンドの同時書き込みや、データの同時読み出しができない。例えばｎ個（ｎは２以上の正整数）のプロセッサ構成のシステムにおいて、ｎ個のプロセッサの書き込み時間と読み出し時間は、それぞれ、１つのプロセッサの書き込み時間と、読み出し時間のｎ倍となる。プロセッサの内部信号の読み出し時間の長大化により、プロセッサの内部回路の故障発生から故障検出までに要する時間が、予め定められた仕様を満たさない場合も起こり得る。したがって、ＪＴＡＧを用いたソフトウェア・デバッグ用の図３の構成は、プロセッサの監視には不向きであり、機能安全の向上や要求される機能安全規格等に対応するための監視・診断には適用できない。
【００３４】
したがって、本発明は、上記問題点の少なくとも１つを解消するために創案されたものであって、その目的は、プロセッサの内部状態の故障検出範囲の拡大を可能とし故障発生から故障検出まで時間を短縮可能とするシステムと方法と装置を提供することにある。
【課題を解決するための手段】
【００３５】
本発明によれば、互いに同一構成とされ、互いに同一構成とされた、ＪＴＡＧ（Joint Test Action Group）準拠の複数のプロセッサと、
通常動作時に、監視用のＪＴＡＧ信号を生成するプロセッサ監視用ＪＴＡＧプロセッサ監視用ＪＴＡＧコントローラと、
を備え、
前記プロセッサ監視用ＪＴＡＧコントローラより出力される監視用のＪＴＡＧ信号のうち監視用のテストデータインプット（ＴＤＩ）信号は、前記複数のプロセッサの複数のテストデータインプット（ＴＤＩ）端子に、共通に且つ並列に供給され、
前記監視用のテストデータインプット（ＴＤＩ）信号の入力に対応して前記複数のプロセッサの複数のテストデータアウトプット（ＴＤＯ）端子から並列に出力されるテストデータアウトプット（ＴＤＯ）信号を入力してこれらを比較し、不一致を検出した場合、プロセッサ故障通知信号を活性状態として出力するＴＤＯ信号比較回路をさらに備えた故障検出システムが提供される。
【００３６】
本発明によれば、互いに同一構成とされた、ＪＴＡＧ（Joint Test Action Group）準拠の複数のプロセッサを備えたシステムの通常動作時に、プロセッサ監視用ＪＴＡＧコントローラより出力される監視用のＪＴＡＧ信号のうち、監視用のテストデータインプット（ＴＤＩ）信号を、前記複数のプロセッサの複数のテストデータインプット（ＴＤＩ）端子に、共通に且つ並列に供給し、
前記監視用のテストデータインプット（ＴＤＩ）信号の入力に対応して、前記複数のプロセッサの複数のテストデータアウトプット（ＴＤＯ）端子から、並列に出力されるテストデータアウトプット（ＴＤＯ）信号を比較し、不一致を検出した時、プロセッサ故障通知信号を出力する、故障検出方法が提供される。
【発明の効果】
【００３７】
本発明によれば、プロセッサの内部状態の故障検出範囲を広げ、故障発生から故障検出まで時間を短縮することができる。
【図面の簡単な説明】
【００３８】
【図１】デュアルプロセッサのロックステップの構成を説明する図である。
【図２】図１の構成の問題点を説明するための図である。
【図３】ＪＴＡＧを用いた構成例を説明するための図である。
【図４】（Ａ）、（Ｂ）は、図３においてＪＴＡＧ命令コマンド設定時、プロセッサ内部信号読み出し時のアクセスを説明する図である。
【図５】本発明の一実施形態の構成の一例を示す図である。
【図６】図５のＪＴＡＧセレクタを説明する図である。
【図７】（Ａ）、（Ｂ）は本実施形態のＪＴＡＧ命令コマンド設定時、プロセッサ内部信号読み出し時のアクセスを説明する図である。
【図８】図５のプロセッサ監視用ＪＴＡＧコントローラの構成例を示す図である。
【図９】図５のＴＤＯ信号比較回路の構成例を示す図である。
【図１０】プロセッサに設定する命令コマンドの例を示す図である。
【図１１】本発明の一実施形態におけるプロセッサ監視処理を説明するためのフローチャートである。
【図１２】本発明の一実施形態におけるプロセッサ監視用ＪＴＡＧコントローラの初期処理の一例を説明するためのタイムチャートである。
【図１３】本発明の一実施形態におけるプロセッサ監視用ＪＴＡＧコントローラのＪＴＡＧ命令コマンドの書込動作の一例を説明するためのタイムチャートである。
【図１４】本発明の一実施形態におけるプロセッサ監視用ＪＴＡＧコントローラのプロセッサ内部信号の読出動作の一例を説明するためのタイムチャートである。
【図１５】本発明の一実施形態におけるＴＤＯ信号比較回路の動作の一例を説明するためのタイムチャートである。
【図１６】本発明の一実施形態においてプロセッサ＃０の汎用レジスタ＃１に故障発生時の動作の一例を説明するためのタイムチャートである。
【図１７】本発明の一実施形態に変形例１を説明するための図である。
【図１８】本発明の一実施形態に変形例２を説明するための図である。
【図１９】本発明の一実施形態に変形例３を説明するための図である。
【図２０】本発明の一形態を説明するための図である。
【発明を実施するための形態】
【００３９】
本発明の実施形態を説明する。いくつかの形態（modes）の１つによれば、図２０に示すように、半導体装置（システム）１００は、例えばIEEE Std. 1149.1準拠のＪＴＡＧ回路を備えた第１、第２のプロセッサ１０１Ａ、１０１Ｂと、通常動作時に、プロセッサ監視用のＪＴＡＧ信号を生成するＪＴＡＧコントローラ１０５を備えている。ＪＴＡＧコントローラ１０５からの監視用のＪＴＡＧ信号のうちＴＤＩ信号は、第１、第２のプロセッサ１０１Ａ、１０１ＢのＴＤＩ端子に、共通且つ並列に供給される（図３のように、デイジー・チェーン接続ではない）。ＪＴＡＧコントローラ１０５からの監視用のＪＴＡＧ信号のうちＴＣＫは、第１、第２のプロセッサ１０１Ａ、１０１ＢのＴＣＫ端子に、共通に且つ並列に供給される。同様に、ＴＭＳ、ＴＲＳＴも、第１、第２のプロセッサ１０１Ａ、１０１ＢのＴＭＳ端子、ＴＲＳＴ端子に、共通に且つ並列に供給される。
【００４０】
さらに、半導体装置（システム）１００は、監視用のＴＤＩ信号の入力に対応して第１、第２の１０１Ａ、１０１ＢのＴＤＯ端子から並列に出力されるＴＤＯ信号を入力してこれらを比較し、不一致を検出した場合、プロセッサ故障通知信号を活性状態として出力するＴＤＯ信号比較回路１０３を備えている。
【００４１】
プロセッサ監視用ＪＴＡＧコントローラ１０５は、第１、第２のプロセッサ１０１Ａ、１０１Ｂの各々に含まれる複数の内部回路（汎用レジスタ）に対して、各内部回路の状態を読み出して前記プロセッサのテストデータアウトプット（ＴＤＯ）端子から出力させるＪＴＡＧ命令コマンド（レジスタ・リード（プロセッサ診断用））を順次生成して、前記テストデータインプット（ＴＤＩ）信号として出力し、最後の前記内部回路の状態の読み出しが終了すると、最初に読み出しを行った前記内部回路に戻り、再びその状態の読み出しを行う反復処理を、通常動作中、繰り返す構成としてもよい。
【００４２】
このような構成とすることで、例えば図１に例示したデュアルプロセッサのロックステップ方式と比べて、故障発生から故障検出までの時間を短縮可能としている。また、本実施形態においては、図３に例示した構成と比べても、命令コマンドの書き込み、内部信号読み出しの時間をしている。
【００４３】
なお、本実施形態においては、システム開発時等において、デバッグモードでシステムが起動した場合、プロセッサ監視用ＪＴＡＧコントローラ１０５は活性化されず、ＰＣ等のデバッグ装置からのデバッグ用のＪＴＡＧ信号が第１、第２のプロセッサ１０１Ａ、１０１Ｂに供給される。以下、例示的な実施形態について図面を参照して説明する。
【００４４】
＜実施形態１＞
図５は、ＪＴＡＧを用いたシステム（デバイス）に、本発明を適用した一例を示す図である。
【００４５】
図５を参照すると、半導体装置（ＳＯＣ）１００は、プロセッサ内のＪＴＡＧ回路を制御するプロセッサ監視用ＪＴＡＧコントローラ１０５（図２０の１０５と同一）と、デバッグ用のＪＴＡＧ信号（デバッグ用ＴＤＩ、ＴＭＳ、ＴＲＳＴ、ＴＣＫ）と、プロセッサ監視用ＪＴＡＧコントローラ１０５から出力される監視用ＪＴＡＧ信号（監視用ＪＴＤＩ、ＴＭＳ、ＴＲＳＴ、ＴＣＫ）の２セットのＪＴＡＧ信号のうちの一方のセットを選択し、選択したセットのＪＴＡＧ信号を、プロセッサ＃０とプロセッサ＃１に供給するＪＴＡＧセレクタ１０６を備えている。
【００４６】
デバッグ用のＪＴＡＧ信号（デバッグ用ＴＤＩ、ＴＭＳ、ＴＲＳＴ、ＴＣＫ、ＴＤＯ）は、不図示のＰＣ等（図６のＰＣ２００参照）に接続される。デバッグ用のＪＴＡＧ信号は、システム開発時に、プロセッサ１０１Ａ、１０１Ｂのソフトウェアのデバッグに用いられる。
【００４７】
半導体装置（ＳＯＣ）１００の外部端子（ピン）から入力され、プロセッサ監視用ＪＴＡＧコントローラ１０５に供給される制御信号であるデバッグ指示信号は、システムの通常運用時、非活性状態（非デバッグモード、システム通常運用）に設定される。このとき、プロセッサ監視用ＪＴＡＧコントローラ１０５は、プロセッサ＃０、プロセッサ＃１から内部信号を読み出すために、監視用のＴＣＫ、ＴＲＳＴ、ＴＭＳ、ＴＤＩを生成する。
【００４８】
ＪＴＡＧセレクタ１０６は、デバッグ指示信号が活性状態（デバッグモード）であるか、非活性状態（非デバッグモード）であるかに応じて、デバッグ用のＪＴＡＧ信号のセット、又は、監視用のＪＴＡＧ信号のセットを選択する。
【００４９】
なお、埋め込みシステム等のシステム開発時のソフトウェア・デバッグ工程では、半導体装置１００は、デバッグ指示信号は活性状態（デバッグモード）に設定されて起動される。デバッグモード時、ＪＴＡＧセレクタ１０６は、デバッグ用のＪＴＡＧ信号セットを選択する。この場合、デバッグ用ＴＤＩは、図３と同様、ＪＴＡＧ回路を備えたプロセッサ＃０、＃１間でデイジー・チェーン接続される。デバッグ用ＴＣＫ、デバッグ用ＴＭＳ、デバッグ用ＴＲＳＴはそれぞれ、プロセッサ＃０、＃１に並列に供給される。すなわち、ＪＴＡＧセレクタ１０６は、デバッグ用ＴＤＩを入力して、プロセッサ＃０用ＴＤＩとして、プロセッサ＃０のＴＤＩ端子にシリアルに供給し、プロセッサ＃０のＴＤＯ端子からのシリアル出力ＴＤＯ＃０を受け、このＴＤＯ＃０をプロセッサ＃１用ＴＤＩとしてプロセッサ＃１のＴＤＩ端子にシリアルに入力し、プロセッサ＃１のＴＤＯ端子からのシリアル出力ＴＤＯ＃１を受け、デバッグ用ＴＤＯ信号としてシリアルに出力する。なお、デバッグ用ＴＭＳ、ＴＣＫ、ＴＲＳＴはそれぞれプロセッサ＃０、＃１のＴＭＳ、ＴＣＫ、ＴＲＳＴ端子に並列に供給される。
【００５０】
ＪＴＡＧを用いたソフトウェア・デバッグ等によるシステム開発が完了し、例えば実機製品として通常動作させる時には、監視用のＪＴＡＧ信号を用いてプロセッサの監視が行われる。すなわち、通常モードで起動する場合、デバッグ指示信号は、非デバッグモードに設定される。ＪＴＡＧセレクタ１０６は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＪＴＡＧ信号を選択する。ＪＴＡＧセレクタ１０６は、監視用ＪＴＡＧ信号のうち、監視用ＴＤＩを、プロセッサ＃０用ＴＤＩ、プロセッサ＃１用ＴＤＩとして、プロセッサ＃０と、プロセッサ＃１のＴＤＩ端子に並列（同時）に供給する。ＪＴＡＧセレクタ１０６で選択された監視用ＴＣＫ、監視用ＴＭＳ、監視用ＴＲＳＴは、プロセッサ＃０、＃１のＴＣＫ端子、ＴＭＳ端子、ＴＲＳＴ端子に並列（同時）に供給される。
【００５１】
プロセッサ＃０、＃１から同時に出力されるＴＤＯ信号ＴＤＯ＃、ＴＤＯ＃１は、ＴＤＯ信号比較回路１０３に入力されて比較される。なお、通常動作時（非デバッグモード時）に、プロセッサ＃０からのＴＤＯ端子からシリアルに出力されるＴＤＯ＃０は、ＪＴＡＧセレクタ１０６にシリアルに入力されるが、ＪＴＡＧセレクタ１０６では選択されない（セレクタ１０６はプロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＤＩを選択して、プロセッサ１０１Ｂに出力する）。
【００５２】
ＴＤＯ信号比較回路１０３は、ＴＤＯ＃、ＴＤＯ＃１の比較の結果、不一致の場合、プロセッサ故障通知信号を出力する。ＴＤＯ信号比較回路１０３は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＣＫ、監視用ＴＲＳＴを入力する。
【００５３】
このように、本実施形態によれば、システムの開発時等に用いられるソフトウェア・デバッグ機能を具備するとともに、ソフトウェア・デバッグ機能を用いて開発されたシステム製品の通常運用時には、監視用のＪＴＡＧ信号及びプロセッサ内のＪＴＡＧ回路を用いてプロセッサの故障検出のための監視（診断）を行うことができる。すなわち、本実施形態においては、プロセッサ内のＪＴＡＧ回路を、システム開発時のソフトウェア・デバッグ用と、システム開発後の実機製品等で行われる監視用の二つの用途に利用している。
【００５４】
なお、図５において、プロセッサ＃０バス信号１０２Ａ、プロセッサ＃１バス信号１０２Ｂに接続されたプロセッサ同期化回路１０４は、プロセッサ＃０とプロセッサ＃１からそれぞれプロセッサ＃０バス信号１０２Ａ、プロセッサ＃１バス信号１０２Ｂに出力されるプログラム処理結果を同期化させ、一方を、周辺回路制御バス１１４に出力する。周辺回路制御バス１１４は図１の周辺回路制御バスと基本的に同一である。
【００５５】
＜ＪＴＡＧセレクタ＞
図６は、図５に示した構成においてＪＴＡＧセレクタ１０６の構成を説明する図である。図６を参照すると、ＪＴＡＧセレクタ１０６は、デバッグ指示信号が非活性状態のとき、第１入力、デバッグ指示信号が活性状態のとき、第２入力を選択するセレクタ１０７、１０８、１０９、１１０、１１１を備えている。
【００５６】
セレクタ１０７の第１、第２入力は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＤＩと、ＰＣ２００からのデバッグ用ＴＤＩにそれぞれ接続され、出力がプロセッサ＃０のＴＤＩ端子に接続されている。
【００５７】
セレクタ１０８の第１、第２入力は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＤＩとプロセッサ＃０のＴＤＯ端子にそれぞれ接続され、出力がプロセッサ＃１のＴＤＩ端子に接続されている。
【００５８】
セレクタ１０９の第１、第２入力は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＭＳと、ＰＣ２００からのデバッグ用ＴＭＳにそれぞれ接続され、出力がプロセッサ＃０、＃１のＴＭＳ端子に接続されている。
【００５９】
セレクタ１１０の第１、第２入力は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＣＫと、ＰＣ２００からのデバッグ用ＴＣＫにそれぞれ接続され、出力がプロセッサ＃０、＃１のＴＣＫ端子に接続されている。
【００６０】
セレクタ１１１の第１、第２入力は、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＲＳＴと、ＰＣ２００からのデバッグ用ＴＲＳＴにそれぞれ接続され、出力がプロセッサ＃０、＃１のＴＲＳＴ端子に接続されている。
【００６１】
プロセッサ＃０、＃１のＴＤＯ端子は、ＴＤＯ信号比較回路１０３に入力されている。プロセッサ＃１のＴＤＯ端子は、デバッグ用ＴＤＯ信号としてＰＣ２００に出力される。
【００６２】
監視用ＪＴＡＧ信号を選択する時、デバッグ指示信号は、非活性状態に設定され、セレクタ１０７、１０８は、ともに第１入力を選択し、プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＤＩを、プロセッサ＃０のＴＤＩ端子とプロセッサ＃１のＴＤＩ端子に並列に供給する。
【００６３】
デバッグ用ＪＴＡＧ信号を選択する時は、デバッグ指示信号は活性状態に設定され、セレクタ１０７、１０８はともに第２入力を選択する。セレクタ１０７は、プロセッサ監視用ＪＴＡＧコントローラ１０５からのデバッグ用ＴＤＩをプロセッサ＃０のＴＤＩ端子に供給し、セレクタ１０８はプロセッサ＃０のＴＤＯ端子からの出力信号を、プロセッサ＃１のＴＤＩ端子に供給する。プロセッサ＃１からのＴＤＯ信号（デバッグ用ＴＤＯ）は、デバッグ用ＴＤＯとして外部のＰＣ等に出力される。
【００６４】
本実施形態によれば、通常動作時には、監視用ＴＤＩを、プロセッサ＃０とプロセッサ＃１のＴＤＩ端子に並列（同時）に供給し、プロセッサ＃０とプロセッサ＃１から並列に出力されるＴＤＯ＃０、ＴＤＯ＃１をＴＤＯ信号比較回路１０３で比較する。
【００６５】
＜命令コマンド設定／プロセッサ内部信号読み出し・アクセス＞
図７は、本実施形態のＪＴＡＧ信号のアクセスの一例を示す図であり、図７（Ａ）は命令コマンド設定時の命令コマンド、図７（Ｂ）はプロセッサ内部信号読み出し時である。本実施形態において、命令コマンド、プロセッサ内部信号は、プロセッサ＃０、＃１に関してＴＤＯ端子からそれぞれ並列にシリアル入力、シリアル出力される。
【００６６】
図４（Ａ）、図４（Ｂ）に示した、アクセス時間（プロセッサ＃０と＃１への命令コマンド設定に要する時間と、プロセッサ＃０と＃１の内部信号の読み出し時間）と、図７（Ａ）、図７（Ｂ）のアクセス時間との比較からも明らかなように、図７（Ａ）、図７（Ｂ）のアクセス時間は、それぞれ、図４（Ａ）、図４（Ｂ）のアクセス時間の約半分である。
【００６７】
上記の通り、本実施形態によれば、プロセッサ監視用ＪＴＡＧコントローラ１０５と、ＪＴＡＧセレクタ１０６を備え、デバッグモード時以外のシステムの通常運用中（プロセッサの監視モード時）には、プロセッサ＃０のからの内部信号とプロセッサ＃１からの内部信号をそれぞれＴＤＯ＃０とＴＤＯ＃１に同時にＴＤＯ信号比較回路１０３に出力することができる。
【００６８】
本実施形態において、通常動作時にプロセッサ＃０とプロセッサ＃１は、不図示の主メモリからフェッチした同一の命令（プログラム）を同時に実行している。このため、２つのプロセッサが正常に動作している場合には、プロセッサ＃０のＴＤＯ＃０とプロセッサ＃１のＴＤＯ＃１から同一の値（ビット信号）がシリアルに出力される。
【００６９】
プロセッサ＃０のＴＤＯ＃０とプロセッサ＃１のＴＤＯ＃１の値を比較するＴＤＯ信号比較回路１０３において、ＴＤＯ＃０とＴＤＯ＃１の対応するシリアルビット信号に不一致が検出された場合、プロセッサ故障信号を半導体装置外部に出力する。
【００７０】
かかる構成の本実施形態によれば、プロセッサ＃０のＴＤＯ＃０とプロセッサ＃１の汎用レンジスタの値を順次ＴＤＯ端子から出力するＪＴＡＧ命令（コマンド）を設定することで、図２を参照して説明した故障（プロセッサ＃０の汎用レジスタ０の故障等、プロセッサバスの出力に影響を与えない故障）の検出を可能としている。前述したように、図１に例示したデュアルプロセッサ・ロックステップ方式では、この種の故障は検出できない。
【００７１】
＜プロセッサ監視用ＪＴＡＧコントローラ＞
図８は、図５及び図６に示したプロセッサ監視用ＪＴＡＧコントローラ１０５の構成の一例を示す図である。図８に示すように、プロセッサ監視用ＪＴＡＧコントローラ１０５は、デバッグモード判定回路１２１と、イニシャライズ制御カウンタ１２２と、ＪＴＡＧ信号制御カウンタ１２３と、命令コマンドカウンタ１２４と、クロックゲート（ClockGate）１２５と、ＴＭＳ制御回路１２６と、ＴＤＩ制御回路１２７を備えている。
【００７２】
デバッグモード判定回路１２１は、例えばシステムのリセット解除時に、デバッグ指示信号の状態を確認し、デバッグ指示信号が非活性状態（非デバッグモード、通常動作時）の場合、プロセッサ監視用ＪＴＡＧコントローラ１０５を起動するため、監視開始指示信号を活性状態（例えばHigh）にして、イニシャライズ制御カウンタ１２２に出力する。特に制限されないが、監視開始指示信号は、クロック信号（Clock）の１サイクルのパルス幅のワンショットパルス（Highパルス）からなる。
【００７３】
イニシャライズ制御カウンタ１２２は、
・監視用ＴＲＳＴのリセット解除のタイミング、
・監視用ＴＣＫのクロック供給タイミング（クロックイネーブル信号）、及び、
・ＪＴＡＧ信号制御カウンタ１２３の制御開始指示信号を制御する。
【００７４】
ＪＴＡＧ信号制御カウンタ１２３は、
・ＴＭＳ制御回路１２６、
・ＴＤＩ制御回路１２７、及び、
・命令コマンドカウンタ１２４のカウントアップ指示信号を制御する。
【００７５】
ＪＴＡＧ信号制御カウンタ１２３は、イニシャライズ制御カウンタ１２２から出力される制御開始指示信号の活性化を受け、クロック信号のカウント動作を開始し、そのカウント値をＴＭＳ制御回路１２６、ＴＤＩ制御回路１２７に入力する。また、ＪＴＡＧ信号制御カウンタ１２３は、カウントアップ指示信号を生成し、命令コマンドカウンタ１２４に供給する。
【００７６】
命令コマンドカウンタ１２４は、プロセッサ＃０とプロセッサ＃１に出力するＪＴＡＧの命令コマンドを生成する。命令コマンドカウンタ１２４は、ＪＴＡＧ信号制御カウンタ１２３からのカウントアップ指示信号を受けてカウント値を１つカウントアップさせる。命令コマンドカウンタ１２４のカウント値はＴＤＩ制御回路１２７に入力される。
【００７７】
ＴＭＳ制御回路１２６は、ＪＴＡＧ信号制御カウンタ１２３のカウント値を基に、監視用ＴＭＳ信号を生成する。
【００７８】
ＴＤＩ制御回路１２７は、ＪＴＡＧ信号制御カウンタ１２３のカウント値と、命令コマンドカウンタ１２４のカウント値を基に、監視用ＴＤＩ信号を生成してシリアルに出力する。ＴＤＩ制御回路１２７からの監視用ＴＤＩ信号（命令コマンド）は、プロセッサ＃０、＃１のＪＴＡＧ回路の命令レジスタにセットされる。
【００７９】
＜ＴＤＯ信号比較回路＞
図９は、図５、図６に示したＴＤＯ信号比較回路１０３の構成の一例を示す図である。図９を参照すると、ＴＤＯ信号比較回路１０３は、排他的論理和回路１３１と、セレクタ１３２と、リセット機能付きのフリップフロップ１３３と、Ｈｉｇｈ固定回路（Ｃｌｕｍｐ  Ｈ）１３４を備えている。
【００８０】
排他的論理和回路１３１は、プロセッサ＃０の出力信号であるＴＤＯ＃０と、プロセッサ＃１の出力信号であるＴＤＯ＃１の排他的論理和（Exclusive OR）をとり、一致・不一致を検出する。排他的論理和回路１３１は、一致のとき（ＴＤＯ＃０＝ＴＤＯ＃１のとき）、Ｌｏｗ、不一致のとき（ＴＤＯ＃０≠ＴＤＯ＃１のとき）、Ｈｉｇｈを出力する。
【００８１】
セレクタ１３２は、フリップフロップ１３３の出力とＨｉｇｈ固定回路１３４のＨｉｇｈ電位とを第１、第２の入力に入力し、排他的論理和回路１３１の出力を選択制御信号として、選択制御信号がＬｏｗのとき（ＴＤＯ＃０＝ＴＤＯ＃１のとき）、第１入力（フリップフロップ１３３の出力）を選択し、選択した信号を、フリップフロップ１３３のデータ端子に供給する。セレクタ１３２は、選択制御信号がＨｉｇｈのとき（ＴＤＯ＃０≠ＴＤＯ＃１のとき）、第２入力（High固定電位）を選択し、フリップフロップ１３３のデータ端子に供給する。
【００８２】
フリップフロップ（D-FF）１３３は、セレクタ１３２の出力をデータ端子Ｄに受け、監視用ＴＣＫの立ち上がりエッジに応答してデータ端子Ｄの信号をサンプルして出力端子Ｑに出力するＤ型フリップフロップで構成される。フリップフロップ（D-FF）１３３の出力端子Ｑの出力信号は、プロセッサ故障通信信号として出力される（Highのとき、故障有り）。
【００８３】
排他的論理和回路１３１で不一致（出力がHigh）が検出されると、セレクタ１３２は第２入力のＨｉｇｈ固定電位を選択し、フリップフロップ１３３は、監視用ＴＣＫの立ち上がりエッジに同期して、出力端子Ｑ（プロセッサ故障通知信号）を活性状態（High）とする。
【００８４】
プロセッサ故障通知信号は、ひとたび、活性状態（High）に設定されると、フリップフロップ１３３が、リセット信号Ｒｅｓｅｔによってリセットされるまで、活性状態（Ｈｉｇｈ）に保持される。すなわち、排他的論理和回路１３１で、ひとたび、不一致（ＴＤＯ＃０≠ＴＤＯ＃１）が検出されると、それ以降、たとえ排他的論理和回路１３１で一致（ＴＤＯ＃０＝ＴＤＯ＃１）が検出され続けても、プロセッサ故障通知信号はＨｉｇｈに維持される。より詳細には、排他的論理和回路１３１で一致が検出されると、セレクタ１３２は、第１入力であるフリップフロップ１３３の出力端子Ｑの出力信号（Ｈｉｇｈ）を選択してフリップフロップ１３３のデータ端子Ｄに帰還入力し、フリップフロップ１３３で監視用ＴＣＫに応答してサンプルされるが、フリップフロップ１３３の出力端子Ｑの前のサンプル値がＨｉｇｈであるため、フリップフロップ１３３は、Ｈｉｇｈをサンプルし続けることになり、その結果、プロセッサ故障通知信号はＨｉｇｈに維持される。そして、リセット信号Ｒｅｓｅｔが活性化された時点でプロセッサ故障通知信号はＬｏｗに設定される。
【００８５】
なお、排他的論理和回路１３１で不一致がこれまで一度も検出されない状態では、排他的論理和回路１３１の出力信号はＬｏｗであることから、セレクタ１３２を介して、フリップフロップ１３３の出力信号がフリップフロップ１３３のデータ端子Ｄに帰還入力され、監視用ＴＣＫの立ち上がりエッジに応答してサンプルされる。フリップフロップ１３３は、初期化時等のリセット時に、出力端子ＱがＬｏｗにリセットされているため、プロセッサ故障通知信号はＬｏｗに維持される。
【００８６】
ＴＤＯ信号比較回路１０３は、プロセッサ監視用ＪＴＡＧコントローラ１０５が出力する監視用ＴＣＫに同期して動作する。このため、プロセッサ監視用ＪＴＡＧコントローラ１０５が起動する通常モード時にのみ動作する（図８のプロセッサ監視用ＪＴＡＧコントローラ１０５のクロックゲート回路１２５から監視用ＴＣＫの供給が開始されて動作する）。
【００８７】
デバッグモード時には、ＴＤＯ信号比較回路１０３は動作しない。この場合、フリップフロップ１３３は、初期化時等のリセット時に、リセット信号Ｒｅｓｅｔによりリセットされ、その出力端子Ｑ（プロセッサ故障通知信号）はＬｏｗとされ、監視用ＴＣＫの供給がないため、プロセッサ故障通知信号はＬｏｗに維持される。以上、デバッグモード時におけるプロセッサ故障通知信号の扱いを、図９の回路構成の範囲で説明したが、上記以外の任意の方法で、デバッグモードにおけるプロセッサ故障通知信号Ｌｏｗに固定する構成としてもよいことは勿論である。
【００８８】
本実施形態におけるプロセッサ１０１Ａ、１０１Ｂの内部回路の故障検出（図５等では不図示の汎用レジスタの読み出し）の手順を説明する。前提として、通常モード時に、プロセッサ＃０とプロセッサ＃１は互いに同一の処理を実行する。
【００８９】
＜命令コマンドの一例＞
図１０に示すように、プロセッサ１０１Ａ、１０１Ｂ（図５、図６）内の不図示のＪＴＡＧ回路の命令レジスタ（６ビット）の値として、０ｂ００００００〜０ｂ０１１１１１（ただし、０ｂは２進表示を表す）には、プロセッサ監視用の命令コマンド（プロセッサ内の汎用レジスタ＃０〜＃３１のリード（診断用）が割り当てられている。リード（診断用）は、汎用レジスタの値を、バウンダリスキャン・レジスタを介してＴＤＯ端子から読み出すためのＪＴＡＧ命令コマンドである。０ｂ１０００００〜０ｂ１１１１００は、デバッグ用の命令コマンドに割当てられる。０ｂ１１１１０１、０ｂ１１１１１０、０ｂ１１１１１１は、それぞれＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ、ＥＸＴＥＳＴ、ＢＹＰＡＳＳとされる。図１０において、データシフトレジスタは、プロセッサ内部のＪＴＡＧ回路のデータレジスタを表している。
【００９０】
ＥＸＴＥＳＴ、ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ、ＢＹＰＡＳＳは必須命令である。ＥＸＴＥＳＴはユーザが与えたビット列を各端子から出力し、デバイス外部の物理的接続をテストする（通常動作を停止しテストモードに入る）。
【００９１】
ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤは、通常動作中のデバイスのピンからデータの取り込みテストし、指定パターンをデバイスピンに出力させることができる。ＢＹＰＡＳＳは、ＴＤＩとＴＤＯ間に１ビットのバイパス・レジスタを配置することによって、当該デバイスをバイパスし、選択されたデバイスにＴＣＫに同期して転送することができる。ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ、ＢＹＰＡＳＳはデバイスは通用動作を続ける。
【００９２】
図１０の命令コマンドの汎用レジスタ＃０〜＃３１のリード（診断用）コマンドは、監視用ＪＴＡＧ信号の監視用ＴＤＩ信号（シリアルビット信号）として、プロセッサ＃０（１０１Ａ）とプロセッサ＃１（１０１Ｂ）に供給され、プロセッサ＃０（１０１Ａ）とプロセッサ＃１（１０１Ｂ）内のＪＴＡＧ回路の命令レジスタに設定される。通常モードで起動時、プロセッサ監視用ＪＴＡＧコントローラ１０５のＴＤＩ制御回路１２７（図８参照）は、ＪＴＡＧ信号制御カウンタ１２３（図８参照）のカウント値と、命令コマンドカウンタ１２４（図８参照）のカウント値に基づき、監視用ＴＤＩ信号を生成し、６ビット信号：０ｂ００００００、０ｂ０００００１、・・・０ｂ０１１１１１を、例えばこの順で繰り返し生成し、プロセッサ＃０（１０１Ａ）とプロセッサ＃１（１０１Ｂ）の汎用レジスタ＃０〜＃３１の値をＴＤＯ＃０、ＴＤＯ＃１として読み出すことを、例えばシステムが停止するまで繰り返す。なお、図１１では、プロセッサ＃０（１０１Ａ）とプロセッサ＃１（１０１Ｂ）の汎用レジスタの個数を３２個としたが、かかる構成に制限されるものでない。
【００９３】
＜故障検出手順＞
図１１は、本実施形態におけるプロセッサの内部故障検出の手順を説明する流れ図（フローチャート）である。システムが起動すると（ステップＳ１）、プロセッサ監視用ＪＴＡＧコントローラ１０５は、デバッグ指示信号の値に基づき、通常モード起動か、デバッグモード起動であるかを判定する（ステップＳ２）。
【００９４】
デバッグ指示信号が非活性状態（非デバッグモード、すなわち通常モード）の場合、プロセッサ監視用ＪＴＡＧコントローラ１０５は、監視開始指示信号を活性状態として、プロセッサ監視のための初期処理を行う（ステップＳ３）。
【００９５】
ステップＳ２において、デバッグ指示信号が活性状態（デバッグモード）の場合、プロセッサ監視用ＪＴＡＧコントローラ１０５は、監視処理は行わない（ステップＳ６）。
【００９６】
通常モードの場合、プロセッサ監視用ＪＴＡＧコントローラ１０５は、監視用ＴＤＩから、プロセッサ＃０とプロセッサ＃１に対して、ＪＴＡＧ命令コマンド（例えば汎用レジスタ＃０読出命令）の書き込みを並列に行う（ステップＳ４）。
【００９７】
次に、プロセッサ＃０とプロセッサ＃１の汎用レジスタ＃０の値のＴＤＯ端子からの読み出し処理を並列に行う（ステップＳ５）。プロセッサ＃０とプロセッサ＃１のＴＤＯ端子から出力されたＴＤＯ＃０、ＴＤＯ＃１はＴＤＯ信号比較回路１０３に入力されて比較される。
【００９８】
次に、プロセッサ監視用ＪＴＡＧコントローラ１０５は、プロセッサ＃０とプロセッサ＃１の汎用レジスタ＃１の値を読み出すため、プロセッサ＃０とプロセッサ＃１に対してＪＴＡＧ命令コマンド書き込みを並列に行い（ステップＳ４）、プロセッサ＃０とプロセッサ＃１の汎用レジスタ＃１の値のＴＤＯ端子からの読み出し処理（ＴＤＯ＃０、ＴＤＯ＃１）を並列に行う（ステップＳ５）。
【００９９】
以降、ステップＳ４とＳ５の処理を、汎用レジスタ＃２から汎用レジスタ＃３１まで順次行う（プロセッサ＃０とプロセッサ＃１の汎用レジスタの個数を３２個とする）。ステップＳ５で、プロセッサ＃０とプロセッサ＃１のＴＤＯ端子から並列に読み出されたＴＤＯ＃０、ＴＤＯ＃１は、ＴＤＯ信号比較回路で比較され、一致・不一致が判定される。
【０１００】
プロセッサ＃０とプロセッサ＃１の汎用レジスタ＃３１のＴＤＯ端子からの並列読み出し処理が完了すると、再び、プロセッサ＃０とプロセッサ＃１の汎用レジスタ＃０のＴＤＯ端子からの並列読み出し処理に戻り、システムが停止するまで、汎用レジスタ＃０〜＃３１の値を読み出しが繰り返される。
【０１０１】
プロセッサの汎用レジスタの故障の検出処理は、プロセッサ監視の初期処理の完了後、システムが停止するまで、図１１のステップＳ４とＳ５のループにおいて、ＴＤＯ信号比較回路１０３が、プロセッサ＃０とプロセッサ＃１から出力されるＴＤＯ＃０とＴＤＯ＃１を比較することで行われる。
【０１０２】
＜プロセッサ監視用ＪＴＡＧコントローラ：初期動作＞
図１２は、プロセッサ監視用ＪＴＡＧコントローラ１０５の初期動作の一例を示すタイミングチャートである。図１２には、通常モードでの起動の判定処理（図１１のステップＳ２）から、プロセッサ監視初期処理（図１１のＳ３）までの動作の一例が例示されている。図１２には、図８に示したプロセッサ監視用ＪＴＡＧコントローラ１０５における、クロック信号（Ｃｌｏｃｋ）、リセット信号Ｒｅｓｅｔ、デバッグ指示信号、監視開始制御信号、イニシャライズ制御カウンタ１２３のカウント値、監視用ＴＲＳＴ、クロックイネーブル、監視用ＴＣＫ、制御開始信号、ＪＴＡＧ制御カウンタ１２３のカウント値の時間推移が例示されている。なお、図１２において、各動作タイミングを制御しているカウント値はあくまで一例であり、かかる構成に制限されるものでないことは勿論である。以下、図８、図１２を参照して、プロセッサ監視用ＪＴＡＧコントローラ１０５の初期動作を説明する。
【０１０３】
システムが起動すると、パワーオンリセットが行われたのち、プロセッサ監視用ＪＴＡＧコントローラ１０５へ供給するシステムリセット信号Ｒｅｓｅｔ（Lowでリセット状態）を、リセット解除状態（High：非活性状態）とする。
【０１０４】
プロセッサ監視用ＪＴＡＧコントローラ１０５のデバッグモード判定回路１２１は、システムリセット信号ＲｅｓｅｔのＬｏｗからＨｉｇｈへの立ち上がりエッジを検出し、リセット状態から解除状態への変化を検出する。デバッグモード判定回路１２１は、システムリセット信号Ｒｅｓｅｔの立ち上がり時のデバッグ指示信号の状態（値）を確認し、デバッグ指示信号が、非デバッグモード（Low、通常モード）の場合、監視開始指示信号を、例えば１クロックサイクル分（クロック信号Clockの１サイクル期間）、活性状態（High）として、出力する（図１２のタイミング（１））。
【０１０５】
デバッグモード判定回路１２１からの監視開始指示信号のＨｉｇｈパルスの立ち下がりに応答して、イニシャライズ制御カウンタ１２２のカウント値は「０」にクリアされる。監視用ＴＲＳＴは、イニシャライズ制御カウンタ１２２のカウント値が「０」のときに、リセット解除（High）に設定する。監視用ＴＲＳＴは、システムリセットでのみ、リセット状態（Low：活性状態）に切り換えることができる。
【０１０６】
イニシャライズ制御カウンタ１２２は、クロック信号ＣｌｏｃｋのＨｉｇｈパルス（立ち上がりエッジ）に応答してカウントアップし、カウント値が「７」となると（図１２のタイミング（４））、以降、クロック信号ＣｌｏｃｋのＨｉｇｈパルスが入力されても、イニシャライズ制御カウンタ１２２は値「７」を保持する。
【０１０７】
イニシャライズ制御カウンタ１２２の値が、クロック信号Ｃｌｏｃｋの立ち上がりに応答して、「０」から「１」となると（図１２のタイミング（２））、監視用ＴＲＳＴを、リセット状態（Low）からリセット解除状態（High）とする。監視用ＴＲＳＴはプロセッサ＃０（１０１Ａ）とプロセッサ＃１（１０１Ｂ）とＴＤＯ信号比較回路１０３に供給される。
【０１０８】
次に、イニシャライズ制御カウンタ１２２のカウント値が、クロック信号Ｃｌｏｃｋの立ち上がりに応答して「４」から「５」となると（図１２のタイミング（３））、イニシャライズ制御カウンタ１２２は、クロックイネーブル信号を、非活性状態（Low）から活性状態（High）に切り替える。
【０１０９】
クロックイネーブル信号が非活性状態（Low）から活性状態（High）に切り替えられると、クロックゲート１２５は、オフ（遮断）状態からオン状態となり、クロック信号Clockを通過させ、監視用ＴＣＫとして出力する。プロセッサ監視用ＪＴＡＧコントローラ１０５からの監視用ＴＣＫは、プロセッサ＃０とプロセッサ＃１に共通に供給される。
【０１１０】
イニシャライズ制御カウンタ１２２のカウント値が、クロック信号Ｃｌｏｃｋの立ち上がりに応答して、「６」から「７」になると（図１２のタイミング（４））、イニシャライズ制御カウンタ１２２は、制御開始指示信号を、例えばクロック信号Ｃｌｏｃｋの１クロックサイクル期間、活性状態（High）として、ＪＴＡＧ信号制御カウンタ１２３に供給する。
【０１１１】
制御開始指示信号のＨｉｇｈパルスに応答して、ＪＴＡＧ信号制御カウンタ１２３のカウント値は「０」にクリアされる。ＪＴＡＧ信号制御カウンタ１２３は、制御開始指示信号のＨｉｇｈパルスがＬｏｗに立ち下がった後のクロック信号Ｃｌｏｃｋからカウントアップする。特に制限されないが、図１２の例では、ＪＴＡＧ信号制御カウンタ１２３は６ビットカウンタで構成される。
【０１１２】
＜プロセッサ監視用ＪＴＡＧコントローラ：命令レジスタ書き込み動作＞
図１３は、プロセッサ＃０とプロセッサ＃１へのＪＴＡＧ命令コマンドの書き込み処理（図１１のＳ４）の詳細動作を説明するタイムチャートである。図１３には、図８に示したプロセッサ監視用ＪＴＡＧコントローラ１０５における監視用ＴＣＫ、ＪＴＡＧ制御カウンタ１２３のカウント値、監視用ＴＭＳ、命令コマンドカウンタ１２４のカウント値、監視用ＴＤＩ、プロセッサ＃０、プロセッサ＃１の内部のＴＡＰコントローラ（図５、図６等では不図示）の状態の時間推移の一例を例示している。図８、図１３を参照して、命令レジスタへの書き込み動作を説明する。
【０１１３】
プロセッサ＃０とプロセッサ＃１にＪＴＡＧ命令コマンド書込処理は、プロセッサ監視用ＪＴＡＧコントローラ１０５におけるＪＴＡＧ信号制御カウンタ１２３のカウント値（８ビット）が「０ｘ００〜０ｘ０Ｃ」の間で行われ、プロセッサ＃０とプロセッサ＃１の内部のＪＴＡＧ回路のＴＡＰコントローラの状態（state）が、Run-Test/Idle、Select-DR、Select-IR、Capture-IR、Shift-IR、Exit-IR、Update-IRとなるように、図８のＴＭＳ制御回路１２６が監視用ＴＭＳ信号を制御する。以下、ＴＡＰコントローラの１６の状態を概説する。
【０１１４】
ＴＡＰコントローラの状態として、安定なTest-Logic-Reset（テスト・ロジック・リセット）状態のとき、テストロジックはリセットされ、デバイスの通常ロジック機能が行われる。
【０１１５】
Run-Test/Idle（ラン・テスト／アイドル）は、テストロジックが動作又はアイドルとなり得る状態である。
【０１１６】
Select-DR、Select-IR（セレクトＤＲスキャン、セレクトＩＲスキャン）状態では、特別な機能は実行されない。ＴＡＰコントローラは次のＴＣＫでこの状態を抜ける。この状態はデータレジスタをスキャン又は命令レジスタをスキャンするかの選択を可能としている。
【０１１７】
Capture-DR（キャプチャＤＲ）状態では、選択されたデータレジスタが、現在の命令で指定されたデータをキャプチャする。キャプチャ操作はＴＣＫの立ち上がりエッジで行われる。
【０１１８】
Shift-DR（シフトＤＲ）状態に入ると、選択されたデータレジスタが、ＴＤＩとＴＤＯ間のスキャンパスに配置される。ＴＣＫの最初の立ち下がりエッジで、ＴＤＯはハイインピーダンス状態から活性状態となり、ＴＤＯは選択されたデータレジスタの最下位ビットの論理レベルを出力する。Shift-DR状態において、データは選択されたデータレジスタを、ＴＣＫ毎に、シリアルにシフトされる。
【０１１９】
Exit1-DR、Exit2-DR（エグジット１ＤＲ、エグジット２ＤＲ）状態は、データレジスタのスキャンを終了するテンポラリ状態である。Exit1-DR、Exit2-DRからShift-DRへ戻ることも可能である。Exit1-DR、Exit2-DRに入ったあとのＴＣＫの最初の立ち下がりエッジでＴＤＯはハイインピーダンス状態となる。
【０１２０】
Pause-DR（ポーズＤＲ）状態では、特別な機能は行われず、データレジスタのスキャン操作をサスペンド、レジュームする。
【０１２１】
Update-DR（アップデートＤＲ）状態は、現在の命令が、選択されたデータレジスタを現在のデータで更新することを要求するものである場合、アップデートＤＲ状態へエントリ後のＴＣＫの立ち下がりエッジで当該更新が行われる。
【０１２２】
Capture-IR（キャプチャＩＲ）状態では、命令レジスタが現在の状態値をＴＣＫの立ち上がりエッジでキャプチャする。
【０１２３】
Shift-IR（シフトＩＲ）状態に入ると、命令レジスタが、ＴＤＩとＴＤＯ間のスキャンパスに配置される。ＴＣＫの最初の立ち下がりエッジで、ＴＤＯはハイインピーダンス状態から活性状態となり、ＴＤＯは、命令レジスタの最下位ビットの論理レベルを出力する。Ｓｈｉｆｔ−ＩＲ状態において、データ（６ビットの命令コマンド）は、ＴＣＫ毎、命令レジスタ（６ビット）をシリアルにシフトされる。
【０１２４】
Exit1-IR、Exit2-IR（エグジット１ＩＲ、エグジット２ＩＲ）状態は、命令レジスタのスキャンを終了するテンポラリ状態である。Exit1-IR、Exit2-IRからShift-IRへ戻ることも可能である。Exit1-IR、Exit2-IRに入ったあとのＴＣＫの最初の立ち下がりエッジでＴＤＯはハイインピーダンス状態となる。
【０１２５】
Pause-IR（ポーズＩＲ）状態では、特別な機能は行われない。ＴＡＰコントローラはこの状態にいつまでもいられる。命令レジスタのスキャン操作をサスペンド、レジュームする。
【０１２６】
Update-IR（アップデートＩＲ）状態は、命令レジスタを更新する。アップデートＩＲ状態へエントリ後のＴＣＫの立ち下がりエッジで当該更新が行われる。
【０１２７】
図１３において、プロセッサ＃０とプロセッサ＃１の内部のＪＴＡＧ状態が、「Shift-DR」になるタイミング（（１）〜（６））で、ＴＤＩ制御回路１２７は、命令コマンドカウンタ１２４のカウント値（ＪＴＡＧ命令コマンド）を、パラレル・シリアル変換し、シリアルビット信号を、監視用ＴＤＩ信号として出力する。
【０１２８】
ＪＴＡＧ命令コマンドの監視用ＴＤＩへの出力が完了したタイミング（図１３の（７））で、命令コマンドカウンタ１２４（図８）はカウント値を１つカウントアップし（カウント値は０ｂ０００００１）、次に出力するＪＴＡＧ命令コマンドの準備をする。
【０１２９】
命令コマンドカウンタ１２４のカウント値が、０ｂ０１１１１１（汎用レジスタ＃３１のリード命令：図１０参照）の場合には、次の命令コマンドカウンタ１２４は、０ｂ００００００（汎用レジスタ＃０の立ち上がり命令：図１０参照）に設定される。
【０１３０】
＜プロセッサ監視用ＪＴＡＧコントローラ：汎用レジスタの読み出し動作＞
次に、プロセッサ＃０とプロセッサ＃１から汎用レジスタの値の読み出し処理（図１１のステップＳ５）の詳細動作を説明する。図１４は、プロセッサ＃０とプロセッサ＃１から汎用レジスタの値の読み出し処理の一例を示すタイムチャートである。図１４には、図８のプロセッサ監視用ＪＴＡＧコントローラ１０５における監視用ＴＣＫ、ＪＴＡＧ信号制御カウンタ１２３のカウント値、監視用ＴＭＳと、図５、図６のプロセッサ＃０のＴＤＯ信号ＴＤＯ＃０、プロセッサ＃１のＴＤＯ信号ＴＤＯ＃１、図５、図６のプロセッサ＃０内部のＪＴＡＧ状態、プロセッサ＃１内部のＪＴＡＧ状態の時間推移が模式的に示されている。図５、図８、図１４を参照して、汎用レジスタの読み出し動作を説明する。
【０１３１】
プロセッサ＃０とプロセッサ＃１から汎用レジスタ（３２ビット幅）の値の読み出し処理は、ＪＴＡＧ信号制御カウンタ１２３のカウント値が０ｘ０Ｄ〜０ｘ３０の間で行われ、プロセッサ＃０とプロセッサ＃１のＴＡＰコントローラの状態が、「Run-Test/Idle」から「Update-DR」になるように、ＴＭＳ制御回路１２６が、監視用ＴＭＳ信号を生成する。
【０１３２】
プロセッサ＃０とプロセッサ＃１の内部のＪＴＡＧ状態が、「Shift-DR」になるタイミング（図１４の（１）〜（６））にて、プロセッサ＃０のＴＤＯ＃０とプロセッサ＃１のＴＤＯ＃１から、汎用レジスタの値が同時にシリアル出力される。
【０１３３】
ＪＴＡＧ信号制御カウンタ１２３はそのカウント値が「０ｘ３０」になると、カウント値を「０ｘ００」にクリア（オートクリア）する。このため、「プロセッサ＃０とプロセッサ＃１にＪＴＡＧ命令コマンド書込処理」と「プロセッサ＃０とプロセッサ＃１から汎用レジスタの値の読み出し処理」は、システムの動作中に、繰り返される。
【０１３４】
ＴＤＯ信号比較回路１０３は、プロセッサ監視用ＪＴＡＧコントローラ１０５から出力される監視用ＴＣＫに同期して、システムの通常モードで起動中常に、プロセッサ＃０から出力されるＴＤＯ＃０とプロセッサ＃１から出力されるＴＤＯ＃１の比較を行う。
【０１３５】
＜ＴＤＯ信号比較回路の動作例＞
図１５は、ＴＤＯ信号比較回路１０３の動作の一例を示すタイミングチャートである。図１５には、図９のＴＤＯ信号比較回路１０３における監視用ＣＬＫと、ＴＤＯ＃０、ＴＤＯ＃１、プロセッサ故障検出信号の時間推移が例示されている。図９、図１５を参照して、比較動作（故障検出動作）を説明する。なお、プロセッサ＃０とプロセッサ＃１から汎用レジスタ＃０（３２ビット）の値をＴＤＯ＃０とＴＤＯ＃１から同時にシリアル（ＬＳＢ（Least Significant Bit）からＭＳＢ（Most Significant Biｔ）の順）に出力している。
【０１３６】
汎用レジスタ＃０の２ビット目を出力するタイミングで、ＴＤＯ＃０とＴＤＯ＃１の値に差分が発生していることを検出したＴＤＯ信号比較回路１０３のフリップフロップ１３３は、監視用ＴＣＫの立ち上がりエッジに応答して、プロセッサ故障通知信号を非活性状態（Low）から活性状態（High）として出力し、以降、プロセッサ故障通知信号はＨｉｇｈに維持される。
【０１３７】
＜故障検出の動作例＞
【０１３８】
図１６は、図５乃至図１５を参照して説明した本実施形態の故障検出の動作例を説明するタイミングチャートである。図１６には、クロック信号（Clock）、監視用ＴＣＫ、プロセッサ＃０の汎用レジスタ＃０、プロセッサ＃０の汎用レジスタ＃１、プロセッサ＃０バス信号、プロセッサ＃０の出力信号ＴＤＯ＃０、プロセッサ＃１の汎用レジスタ＃０、プロセッサ＃１の汎用レジスタ＃１、プロセッサ＃１バス信号、プロセッサ＃１の出力信号ＴＤＯ＃１、プロセッサ＃０バス信号とプロセッサ＃１バス信号の比較結果、ＴＤＯの比較結果が例示されている。図１６に示す例では、プロセッサ＃０の汎用レジスタ＃１上のタイミング（１）で、プロセッサ＃０の汎用レジスタ＃１の０ビット目に故障が発生している。
【０１３９】
図１６において、タイミング（１）で、プロセッサ＃０とプロセッサ＃１の処理が汎用レジスタ＃０の値をプロセッサバスに出力している場合、プロセッサ＃０バス信号の出力値は、故障した汎用レジスタ＃１の影響を受けない。このため、正常動作をしているプロセッサ＃１バス信号の出力値と一致する（「プロセッサ＃０バス信号とプロセッサ＃１バス信号の比較結果」は「一致」）。
【０１４０】
プロセッサ＃０とプロセッサ＃１の各ＴＤＯから、それぞれの汎用レジスタ＃１の値を出力させ、ＴＤＯ信号比較回路１０３でＴＤＯ＃０とＴＤＯ＃１を比較する。
【０１４１】
図１６のタイミング（２）において、プロセッサ＃０の汎用レジスタ＃１の０ビット目に故障が発生している場合には、ＴＤＯ＃０とＴＤＯ＃１の比較結果が不一致となり、ＴＤＯ信号比較回路１０３は、プロセッサ故障通知信号を活性状態（High）に設定する。すなわち、プロセッサの汎用レジスタの故障を、デュアルプロセッサのロックステップ方式と比べて、早期に検出することが可能になる。
【０１４２】
＜作用効果＞
本実施形態の作用効果を以下に説明する。
【０１４３】
図１６に示すように、システム通常運用中に、プロセッサ＃０、＃１から同時に内部信号を読み出し、比較回路で比較することにより、プロセッサの故障ｎ検出できるようになるため、プロセッサのバス出力にプロセッサの内部故障の影響が出る前にプロセッサの故障が検出することを可能としている。
【０１４４】
デュアルプロセッサのロックステップ方式と比べて、故障発生から故障検出までの時間を短縮可能としている。その結果、システム全体を安全性の高い状態に移行するまでの時間を短縮することができるため、システムの安全性が高くなる。
【０１４５】
プロセッサ監視用ＪＴＡＧコントローラ１０５は、ＪＴＡＧ命令コマンドとして、汎用レジスタのリード命令（診断用）を内部のカウンタ回路等を用いて生成しており、プロセッサのどの汎用レジスタの読み出し信号を監視しているかを把握することできる。このため、故障した汎用レジスタを特定可能とし、故障検出の精度を向上することができる。
【０１４６】
図１のデュアルプロセッサのロックステップ方式では、プロセッサが故障したことしか検出できない。本実施形態によれば、プロセッサのどの汎用レジスタの何ビット目で故障が発生したかを特定することも可能である。このため、実機評価でのトラブルシューティングの時間が短縮することができる。
【０１４７】
ところで、一般に、監視機能を向上させると、システムの性能低下や、通常機能を停止させる必要等が生じる場合がある。しかしながら、本実施形態によれば、以下の理由により、システムの性能低下や通常機能を停止させる必要はない。
【０１４８】
プロセッサ監視用ＪＴＡＧコントローラ１０５は、ハードウェア回路で構成され、制御信号（システムリセット信号Ｒｅｓｅｔ、デバッグ指示信号）とクロック信号Ｃｌｏｃｋに基づき、自律的に、監視用ＪＴＡＧ信号（ＴＤＩ（ＪＴＡＧ命令コマンド）、ＴＣＫ、ＴＭＳ、ＴＲＳＴ）を生成する構成されており、ソフトウェア制御が不要とされている。このため、システムの通常運用中に、ソフトウェアの処理性能を低下させることなく、プロセッサの故障検出を行うことができる。
【０１４９】
ＪＴＡＧ回路のＴＤＯ信号を用いてプロセッサの内部信号を読み出しているため、システムの通常機能への影響を回避してプロセッサの故障検出を行うことができる。
【０１５０】
＜変形例１＞
図１７に示すように、ＴＤＯ信号比較回路１０３から外部に出力していたプロセッサ故障通知信号を、プロセッサ＃０とプロセッサ＃１の割込信号として入力する構成としてもよい。活性状態の割込信号（活性状態のプロセッサ故障通知信号）を受け取ったプロセッサ＃０とプロセッサ＃１では、当該割込に対応した割込処理（ISR: Interrupt Service Routine）を実行する。割込処理としては、予め定められたフェールセーフ機能が実行される。あるいは、例えば汎用レジスタの故障が検出された一方のプロセッサを停止させ、他のプロセッサのみでプログラムを実行するようにしてもよい。
【０１５１】
＜変形例２＞
前記実施形態及び変形例１では、ＴＤＯ信号比較回路１０３からのプロセッサ故障通知信号を半導体装置外部に出力していたが、変形例２では、図１８に示すように、ＴＤＯ信号比較回路１０３からのプロセッサ故障通知信号を周辺回路１４０に送信する。
【０１５２】
活性状態のプロセッサ故障通知信号を受信した周辺回路１４０は、例えば、強制的に処理を停止させ、安全性の高い状態に移行するフェールセーフ機能を実現するようにしてもよい。
【０１５３】
図１７、図１８の変形例は、デュアルプロセッサのロックステップ方式に比べて、故障発生からシステムの安全状態に移行するまでの時間を短縮することができる。
【０１５４】
＜変形例３＞
図１９に示すように、ＴＤＯ信号比較回路１０３からのプロセッサ故障通知信号をプロセッサ監視用ＪＴＡＧコントローラ１０５に入力する構成としてもよい。活性状態のプロセッサ故障通知信号を受信したプロセッサ監視用ＪＴＡＧコントローラ１０５は、
・命令コマンドカウンタ１２４（図８）の値から故障が発生した汎用レジスタ番号、
・ＪＴＡＧ信号制御カウンタ１２３（図８）のカウント値から、故障が発生したビット番号を検出し、プロセッサ故障発生箇所通知信号として、半導体装置の外部に出力する。このような構成とすることで、プロセッサの故障発生箇所の特定精度が、デュアルプロセッサのロックステップ方式よりも高くなる。
【０１５５】
あるいは、プロセッサの汎用レジスタ以外の箇所の故障検出を行うようにしてもよい。ＪＴＡＧ回路を用いてプロセッサの内部信号を読み出しているため、ユーザが、命令コマンドを割り当てることにより、汎用レジスタ以外の所望の箇所（バウンダリスキャンで信号の設定と読み出しが可能な回路）の信号を読み出すことが可能になる。
【０１５６】
なお、前記実施形態では、説明の簡単のため、プロセッサの数を２つとしているが、プロセッサ数は３以上であってもよい。３つ以上のプロセッサにした場合も、プロセッサが２つの時と同様に、プロセッサ監視時には、ＪＴＡＧ信号を全てのプロセッサにパラレル接続することにより、各プロセッサのＴＤＯ信号から、同時に同一のプロセッサ内部信号として出力させることができる。ＴＤＯ信号比較回路で、プロセッサのＴＤＯ信号を比較することにより、プロセッサの故障を検出することが可能になる。
【０１５７】
また、図５等の実施形態では、デュアルプロセッサを備えた半導体装置（ＳＯＣ）の同一チップ上に本発明を実施した例が示されているが、デュアルプロセッサを実装した基板等に対して本発明が適用できることは勿論である。
【０１５８】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１５９】
１０、１０’、１００  半導体装置（ＳＯＣ）
１１Ａ、１１Ｂ、１１’Ａ、１１’Ｂ、１０１Ａ、１０１Ｂ  プロセッサ
１２Ａ、１０２Ａ  プロセッサ＃０バス信号
１２Ｂ、１０２Ｂ    プロセッサ＃１バス信号
１３  比較回路
１４、１１４  周辺回路制御バス
２０、２００  ＰＣ
１０３  ＴＤＯ信号比較回路
１０４  プロセッサ同期化回路
１０５  プロセッサ監視用ＪＴＡＧコントローラ
１０６  ＪＴＡＧセレクタ
１０７〜１１１  セレクタ
１２１  デバッグモード判定回路
１２２  イニシャライズ制御カウンタ
１２３  ＪＴＡＧ信号制御カウンタ
１２４  命令コマンドカウンタ
１２５  クロックゲート
１２６  ＴＭＳ制御回路
１２７  ＴＤＩ制御回路
１３１  排他的論理和回路（Exclusive OR）
１３２  セレクタ
１３３  フリップフロップ（Ｄ型フリップフロップ）
１３４  Ｈｉｇｈ固定回路（Clump H）
１４０  周辺回路
【図１】
2013242746.tif 000003
【図２】
2013242746.tif 000004
【図３】
2013242746.tif 000005
【図４】
2013242746.tif 000006
【図５】
2013242746.tif 000007
【図６】
2013242746.tif 000008
【図７】
2013242746.tif 000009
【図８】
2013242746.tif 000010
【図９】
2013242746.tif 000011
【図１０】
2013242746.tif 000012
【図１１】
2013242746.tif 000013
【図１２】
2013242746.tif 000014
【図１３】
2013242746.tif 000015
【図１４】
2013242746.tif 000016
【図１５】
2013242746.tif 000017
【図１６】
2013242746.tif 000018
【図１７】
2013242746.tif 000019
【図１８】
2013242746.tif 000020
【図１９】
2013242746.tif 000021
【図２０】
2013242746.tif 000022