(57)【要約】【課題】２種類のＴＡＰコントローラを使用したマルチコアプロセッサシステムにおける誤動作を防止すること。【解決手段】チップ１は、ｍビット長（ｍ≧２）を有するグループ１内のビット列のうち、総数ｍより少ないｎビットを制御対象に対して処理を行う命令として解釈するとともに、ｎビット長を有する少なくとも２以上のビット列からなるグループ１内の各々のビット列に一の所定のビット列を付加してなるｍビット長を有する各ビット列を制御対象に対して処理を行わない命令として解釈する第１のＴＡＰコントローラ１０と、グループ２内の各々のビット列を命令として解釈するとともに、グループ１内のビット列のうち、ＴＡＰコントローラ１０が制御対象に対して処理を行う命令として解釈する各ビット列から、ｎビット長を有し制御対象に対して処理を行わない命令を示す一のビット列を抽出して解釈する第２のＴＡＰコントローラ２０と有する。【選択図】図１
2008304986.tif 000002
【特許請求の範囲】
【請求項１】
第１ビット長を有する少なくとも２以上のビット列からなる第１ビット列グループ内のビット列のうち、前記第１ビット列グループに含まれるビット列の総数より少ない数のビット列を制御対象に対して処理を行う命令として解釈するとともに、前記第１ビット長より短い第２ビット長を有する少なくとも２以上のビット列からなる第２ビット列グループ内の各々のビット列に一の所定のビット列を付加してなる前記第１ビット長を有する各ビット列を制御対象に対して処理を行わない命令として解釈する第１コントローラと、
前記第２ビット列グループ内の各々のビット列を命令として解釈するとともに、前記第１ビット列グループ内のビット列のうち、前記第１コントローラが制御対象に対して処理を行う命令として解釈する各ビット列から、前記第２ビット長を有し制御対象に対して処理を行わない命令を示す一のビット列を抽出して解釈する第２コントローラと有する半導体集積回路。
【請求項２】
前記第１コントローラが制御対象に処理を行う命令として解釈する各ビット列の最上位ビットから前記第２ビット長の範囲までに位置するビット列に対し、前記第２コントローラが制御対象に処理を行わない命令を示すビット列を割り当てる
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記第１コントローラが制御対象に処理を行う命令として解釈する各ビット列の最下位ビットから前記第１ビット長と前記第２ビット長の差分に相当するビット長の範囲までに位置するビット列は、前記所定のビット列以外のビット列を有する
ことを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記第１コントローラは前記第１ビット長のビット列を記憶する第１シフトレジスタおよび第１レジスタを含み、前記第１コントローラは、制御対象に処理を行う命令として解釈する一のビット列を最下位ビットから最上位ビットまで前記第１シフトレジスタに記憶し、前記第１シフトレジスタに記憶した前記一のビット列を前記第１レジスタに記憶し、前記第１レジスタに記憶した前記一のビット列を命令として解釈する
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
前記第１コントローラは、前記所定のビット列を前記第１シフトレジスタに記憶した後、加えて前記第２ビット列グループ内の一のビット列を最下位ビットから最上位ビットまで前記第１シフトレジスタに記憶し、前記第１シフトレジスタに記憶したビット列を前記第１レジスタに記憶し、前記第１レジスタに記憶したビット列を命令として解釈する
ことを特徴とする請求項４に記載の半導体集積回路。
【請求項６】
前記第２コントローラは、第２ビット長のビット列を記憶する第２シフトレジスタおよび第２レジスタを含み、前記第２コントローラは、前記第２ビット列グループ内の一のビット列を最下位ビットから最上位ビットまで前記第２シフトレジスタに記憶し、前記第２シフトレジスタに記憶した前記一のビット列を前記第２レジスタに記憶し、前記第２レジスタに記憶した前記一のビット列を命令として解釈する
ことを特徴とする請求項５に記載の半導体集積回路。
【請求項７】
前記第２コントローラは、前記第１コントローラが制御対象に処理を行う命令として解釈する一のビット列を最下位ビットから最上位ビットまで順に前記第２シフトレジスタに入力し、前記第２シフトレジスタに記憶した前記第１コントローラが制御対象に処理を行う命令として解釈するビット列のうちの最上位ビットから前記第２ビット長までの範囲に位置するビット列を前記第２レジスタに記憶し、前記第２レジスタに記憶したビット列を命令として解釈する
ことを特徴とする請求項６に記載の半導体集積回路。
【請求項８】
前記第１および第２コントローラが各々の制御対象に処理を行わない命令は、前記第１および第２のコントローラのそれぞれに入力される各ビットの各々を前記第１および第２のそれぞれの制御対象に入力することなく出力するバイパス命令である
ことを特徴とする請求項１乃至７のいずれか１項記載の半導体集積回路。
【請求項９】
前記バイパス命令を示すビット列は全て１である
ことを特徴とする請求項１乃至８のいずれか１項記載の半導体集積回路。
【請求項１０】
データ列が入力される入力端と、
前記入力端に接続されると共に前記入力端に入力された第１のビット長を有する第１のビット列に応答して動作する第１コントローラと、
前記入力端に前記第１コントローラと共通接続されると共に前記入力端に入力された第２のビット長を有する第２のビット列に応答して被制御回路を動作させる第２コントローラであって、前記第１コントローラに対して供給された第１のビット列を受け取ったときには前記被制御回路を動作させないデータ列として解釈する第２コントローラとを有する半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサをデバッグするマルチコアデバッグの半導体集積回路に関し、特にＪＴＡＧポートをパラレルに接続し、その接続先のコアを例えばスイッチ制御等で切り替える半導体集積回路に関する。
【背景技術】
【０００２】
マルチコアのデバッグにおいて、各コア間のＪＴＡＧの接続方式として、（１）シリアル（デイジーチェイン、カスケード）接続と（２）パラレルスイッチ（スター型）接続がある。一般的に広く使われている（１）のシリアル接続に対し、（２）のパラレルスイッチ接続は、ＣＰＵコアごとの電源オフへの対応、ＪＴＡＧ通信経路が短い、及び動作周波数が低いコアがあってもボトルネックにならず最適化できる等の利点がある。
【０００３】
図７は、パラレルスイッチ接続において、対象となるコアの選択制御回路をＬＳＩに内蔵する構成を有するマルチプロセッサシステムを示す図である（特許文献１参照）。チップ３０１は、複数のＣＰＵ３０７０、３０７１と、ＣＰＵ３０７０、３０７１のデバッグを実行するデバッグ実行部３０８０、３０８１とを有する。さらに、チップ３０１は、デバッグ実行部３０８０、３０８１を制御するＴＡＰコントローラ３０９０、３０９１と、ＣＰＵ３０７０、３０７１の中から、デバッグを実行すべき少なくとも一つのＣＰＵを選択する選択回路３１０と、端子３０２〜３０６を含む一組の端子群とを備えている。ＣＰＵ３０７０、３０７１は、それぞれデバッグ実行部３０８０、３０８１に接続されており、デバッグ実行部３０８０、３０８１は、それぞれＴＡＰコントローラ３０９０、３０９１に接続されている。選択回路３１０は、ＴＡＰコントローラ３０９０、３０９１と端子３０２〜３０６との間に接続されている。端子３０２〜３０６には、ＪＴＡＧ規格に準拠したＩＣＥ等のデバッグ装置（図示しない）が接続される。
【０００４】
選択回路３１０は、第１のＴＡＰコントローラ４００、レジスタ４０１、ＡＮＤ回路４０２〜４０５、及びセレクタ４０６、４０７を備えている。ＡＮＤ回路４０２の一方の入力端子は端子３０４に、他方の入力端子はレジスタ４０１に、出力端子はＴＡＰコントローラ３０９０のＴＭＳ端子に、それぞれ接続されている。ＡＮＤ回路４０３の一方の入力端子は端子３０５に、他方の入力端子はレジスタ４０１に、出力端子はＴＡＰコントローラ３０９０のＴＤＩ端子に、それぞれ接続されている。ＡＮＤ回路４０４の一方の入力端子は端子３０４に、他方の入力端子はレジスタ４０１に、出力端子はＴＡＰコントローラ３０９１のＴＭＳ端子に、それぞれ接続されている。ＡＮＤ回路４０５の一方の入力端子は端子３０５に、他方の入力端子はレジスタ４０１に、出力端子はＴＡＰコントローラ３０９１のＴＤＩ端子に、それぞれ接続されている。セレクタ４０６の一方の入力端子はＴＡＰコントローラ３０９０のＴＤＯ端子に、他方の入力端子はＴＡＰコントローラ３０９１のＴＤＯ端子に、出力端子はセレクタ４０７を介して端子３０６に、それぞれ接続されている。
【０００５】
この構成においては、第１のＴＡＰコントローラ４００の制御に基づき、選択回路３１０がデバッグ対象となるＣＰＵ３０７０、３０７１を選択する。第１のＴＡＰコントローラ４００はＪＴＡＧ端子信号に常に接続され動作する。各ＴＡＰコントローラ３０９０、３０９１は、第１のＴＡＰコントローラ４００で生成されたセレクト信号に基づいて許可されたＴＡＰコントローラを動作させる。
【０００６】
この場合、第１のＴＡＰコントローラ４００は、ＩＲレジスタ（命令レジスタ）によりマルチコア用拡張レジスタ４０１を指定する。そして、第１のＴＡＰコントローラ４００は、ＤＲレジスタ経由で拡張レジスタ４０１にＣＰＵ３０７１、３０７２のいずれか又は両方をデバッグするための値をセットする。これにより、ＣＰＵ３０７０、若しくはＣＰＵ３０７１を選択してデバッグを行なうか、又はＣＰＵ３０７０、３０７１を同時にデバッグすることができる。
【特許文献１】特開２００４−１６４３６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載のチップ３０１においては、拡張レジスタ４０１を指定するために第１のＴＡＰコントローラ４００に入力するＩＲコードは、各ＴＡＰコントローラ３０９０、３０９１で未使用のコードを割り振らなければならない。以下、このＩＲコードを選択用ＩＲコードという。選択用ＩＲコードは、そのとき指定されているＴＡＰコントローラ３０９０、３０９１にも入力されるため、ＴＡＰコントローラ３０９０、３０９１で未使用のＩＲコードでないと、ＴＡＰコントローラ３０９０、３０９１が誤動作するためである。
【０００８】
この場合、新規にチップ１を構成する場合には、ＴＡＰコントローラ３０９１、３０９２のＩＲコードとは別に、第１のＴＡＰコントローラ４００で使用する選択用ＩＲコードを決定すればよいが、ＴＡＰコントローラを有する既存のプロセッサコア（ＣＰＵ、デバッグ実行部及びＴＡＰコントローラ）を新たに選択回路３１０接続する場合には問題が生じる。
【０００９】
以下、この問題点について説明する。ＩＥＥＥ１１４９．１ではＪＴＡＧのＩＲコード（命令コード）は、そのコードサイズ（ビット長）を含めバイナリコードを規定していない。しかし、ただ１つ規定しているのがバイパスレジスタアクセス（バイパス命令）のバイナリコードは、そのＩＲコードサイズによらず全ビット１（{ｍ{１'ｂ１}}：ｍはＩＲコードサイズ）と規定されている。その他の命令コードを規定していないため、既存のプロセッサコアに含まれるＴＡＰコントローラにおいて、ＩＲコードにどのようなサイズ及びバイナリコードを適用しているかは各プロセッサコアにおいて異なる。ＬＳＩが大規模になり、そこに搭載されるプロセッサの数も種類も多くなっている中で、その各プロセッサ間で異なるＩＲコードにおいて、未使用のコードを見つけるのは非常に困難である。
【００１０】
さらに、ＩＲコードサイズが異なるＴＡＰコントローラに対して、定義されているＩＲコードサイズと違ったサイズのＩＲコードが入力されるときがあり、ＩＲコードとして意図しないコードと認識されることによる誤動作を生じてしまう場合がある。
【００１１】
これを説明するために、図８にマルチコア用拡張ＩＲコードを入力したときの、第１のＴＡＰコントローラとプロセッサコアのＴＡＰコントローラ（第２のＴＡＰコントローラ）のＩＲシフトレジスタの状態の一例を示す。第２のＴＡＰコントローラのＩＲコードのサイズは４ビットに対し、第１のＴＡＰコントローラのＩＲコードは５ビットとする。ここで、ＬＳＩに搭載するプロセッサはＡの他にもあり（図示せず）、その中でＴＡＰコントローラのＩＲコード長の最大が５ビットであるため、第１のＴＡＰコントローラのＩＲコードサイズも５ビットにしていると仮定する。
【００１２】
このＩＲコードの例において、第２ＴＡＰコントローラが選択されている状態から他のプロセッサコアＢを選択するように切替えたい場合、図８（ａ）に示すように、第１のＴＡＰコントローラのＩＲシフトレジスタに５ビットのＭＣ＿ＳＥＬ（１０００１）のコードを入力する。ＩＲコードのシフトレジスタは、ＩＲバイナリコードの最下位ビットから、図の左より1ビットずつ入力され右にシフトするものとする。このとき第１のＴＡＰコントローラの他に現在選択されている第２ＴＡＰコントローラのＩＲシフトレジスタにもＩＲコードが入力される。本例においては、プロセッサＡのＩＲコードは４ビットであるので、５ビットのＩＲコードが入力されると、図８（ｂ）に示すように、最下位の１ビットはシフトアウトし、プロセッサＡでは、１０００の命令として認識される。この１０００のＩＲコードが第２ＴＡＰコントローラのＩＲコードとして使用されている場合、何かしらの命令と認識されることになり誤動作を引き起こす可能性がある。
【００１３】
一方、第２ＴＡＰコントローラにデバッガからＩＲコードを入力する場合、第１のＴＡＰコントローラは常にデバッガに接続されているので第１のＴＡＰコントローラにもＩＲコードが入力される。図８（ｃ）に示すようにＩＲシフトレジスタは、シフトが始まる前の初期状態としてＴＡＰステートがＣａｐｔｕｒｅＩＲのときに、最下位２ビットが２'ｂ０１であってそれ以外の任意のビット列が入力されるようにＩＥＥＥ１１４９．１で規定されている。当該任意のビットの値は特に規格上は規定されないので、ここでは仮に０とする。第２ＴＡＰコントローラのＩＲコードサイズは、図８（ｄ）に示すように４ビットなので、第１のＴＡＰコントローラは５ビット全て埋まらず、図８（ｃ）に示すように最下位１ビットは０となる。このときのＩＲコードが第１のＴＡＰコントローラで使用されているＩＲコードであると、上述と同様、何かしらの命令と認識されてしまうため、当該ＩＲコードが第１のＴＡＰコントローラで使用されていないことを保障しなければならない。
【００１４】
このように第１のＴＡＰのＩＲコードを決める場合、対象となるプロセッサコアのＴＡＰコントローラで誤認識されないことを保障しなければならない。また、対象となるプロセッサコアのＴＡＰコントローラのＩＲコードが第１のＴＡＰコントローラに入力された場合、そのコードが第１のＴＡＰコントローラで誤認識されないようにＩＲコードを決めなければならない。
【００１５】
さらに、第１のＴＡＰコントローラの流用性を考えると、将来接続されたプロセッサコアにおいてもこの条件を満たすように第１のＴＡＰコントローラのＩＲコードを決定しておく必要がある。このように、各プロセッサコアのＴＡＰコントローラで使用されるＪＴＡＧのＩＲコードにはバイパスレジスタアクセス以外規定がなく、ＩＲコードとしては、各プロセッサ間で全く異なるサイズ、及びコードが使用されている。このため、第１のＴＡＰコントローラ４００でも、ＴＡＰコントローラ３０９０、３０９１でも誤動作が起きないようＩＲコードを適切に決定しなければならない。
【課題を解決するための手段】
【００１６】
本発明に係る半導体集積回路は、第１ビット長を有する少なくとも２以上のビット列からなる第１ビット列グループ内のビット列のうち、前記第１ビット列グループに含まれるビット列の総数より少ない数のビット列を制御対象に対して処理を行う命令として解釈するとともに、前記第１ビット長より短い第２ビット長を有する少なくとも２以上のビット列からなる第２ビット列グループ内の各々のビット列に一の所定のビット列を付加してなる前記第１ビット長を有する各ビット列を制御対象に対して処理を行わない命令として解釈する第１コントローラと、前記第２ビット列グループ内の各々のビット列を命令として解釈するとともに、前記第１ビット列グループ内のビット列のうち、前記第１コントローラが制御対象に対して処理を行う命令として解釈する各ビット列から、制御対象に対して処理を行わない命令を示す前記第２ビット長を有する一のビット列を抽出して解釈する第２コントローラと有する。
【００１７】
本発明においては、第１コントローラは、第２ビット列グループ内の各々のビット列に一の所定のビット列を付加してなる第１ビット長を有する各ビット列を制御対象に対して処理を行わない命令として解釈し、第２コントローラは、第２ビット列グループ内の各々のビット列を命令として解釈するとともに、第１ビット列グループ内のビット列のうち、第１コントローラが制御対象に対して処理を行う命令として解釈する各ビット列から、制御対象に対して処理を行わない命令を示す第２ビット長を有する一のビット列を抽出して解釈することにより、第１コントローラと第２コントローラとの命令が干渉することがない。
【発明の効果】
【００１８】
本発明によれば、２種類以上のＴＡＰコントローラを使用したマルチコアシステムにおける誤動作を防止することができる半導体集積回路を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、各プロセッサコアのＪＴＡＧをパラレルに接続し、その選択信号の切替制御をそれとは別のＪＴＡＧ  ＴＡＰコントローラ（第１のＴＡＰコントローラ）で行なう構成のマルチコアデバッグシステム（デバッグ回路）に適用したものである。
【００２０】
本実施の形態においては、第１のＴＡＰコントローラのＩＲコードにバイパスレジスタアクセスコード：全ビット１{ｍ（１'ｂ１）}（ｍは対象となるプロセッサコアの最大ＩＲコード長）を拡張したものを使用する。このため、各プロセッサコアのＴＡＰコントローラは、第１のＴＡＰコントローラ用のＩＲコードをバイパスレジスタアクセスのＩＲコードと認識する。このことにより、各回路での誤動作を防止し、汎用性、及び拡張性にすぐれた回路オーバーヘッドが少ないシンプルな回路構成のマルチコアデバッグシステムを実現することができる。
【００２１】
図１は、本発明の実施の形態にかかるマルチコアデバッグシステムを示す図である。チップ１は、ＩＣＥなどのデバッガ１００に接続される端子２〜６と、第１のＴＡＰコントローラ１０、セレクタ７、８、プロセッサコア２０、３０、４０を有する。セレクタ７により、第１のＴＡＰコントローラ１０又はセレクタ７からのＴＤＯが選択され出力される。
【００２２】
第１のＴＡＰコントローラ１０は、常にデバッガ１００と接続され、デバッガ１００によって制御可能である。そして、例えば６ビットなどの第１ビット長を有する少なくとも２以上のビット列からなる第１ビット列グループ内のビット列のうち、第１ビット列グループに含まれるビット列の総数より少ない数のビット列を制御対象であるセレクタ８に対して処理を行う命令として解釈する。さらに、第１ビット長より短い例えば４ビットの第２ビット長を有する少なくとも２以上のビット列からなる第２ビット列グループ内の各々のビット列に一の所定のビット列、例えば"００"を付加してなる６ビットを有する各ビット列をセレクタ８に対して処理を行わない命令として解釈する。
【００２３】
セレクタ８は、第１のＴＡＰコントローラ１０からの制御信号により制御される制御対象回路であり、その制御信号に基づきデバッガ１００とプロセッサコア２０、３０、４０のうちのいずれか一とを接続する。
【００２４】
プロセッサコア２０、３０、４０は、セレクタ８にパラレルに接続され、いずれも同様の構成を有する。例えばプロセッサコア２０は、ＴＡＰコントローラ（以下、第２のＴＡＰコントローラという。）２１及びこの第２のＴＡＰコントローラによりデバッグされるＣＰＵ２２を有する。プロセッサコア３０、４０もそれぞれ第２のＴＡＰコントローラ３１、４１及びＣＰＵ３２、４２を有する。
【００２５】
第２のＴＡＰコントローラ３１は、上述の第２ビット列グループ内の各々のビット列を命令として解釈する。さらに、第１ビット列グループ内のビット列のうち、第１のＴＡＰコントローラ１０がＣＰＵ３２に対して処理を行う命令として解釈する各ビット列から、セレクタ７に対して処理を行わない命令を示す４ビットの一のビット列を抽出して解釈する。
【００２６】
このチップ１は、第１のＴＡＰコントローラ１０により、デバッグ対象となるコアを選択する。第１のＴＡＰコントローラ１０は、ＪＴＡＧ端子信号に常に接続されて許可された一のプロセッサコアの第２のＴＡＰコントローラを動作させる。
【００２７】
次に、ＴＡＰコントローラのステートについて簡単に説明する。図２は、ＴＡＰコントローラの１６のステートを示す図である。ステート間の遷移は、ＴＣＫの立ち上がりエッジでのみ発生する。ＴＡＰコントローラは、ＩＲシフトレジスタとＩＲレジスタ（命令レジスタ）及びＤＲシフトレジスタとＤＲレジスタ（データレジスタ）を有しＤＲレジスタは、図２に示すＤＲで終わるステートで動作し、ＩＲレジスタは図２に示すＩＲで終わるステートで動作する。各ステートの動作について説明する。
【００２８】
Test-Logic-Resetでは、全てのテストロジックがディスエーブルにされ、ＩＣの通常動作がイネーブルにされる。ＴＡＰコントローラのステートマシンは、コントローラの初期ステートにかかわらず、ＴＭＳをＨｉｇｈにしてＴＣＫを５回発生させることで Test-Logic-Resetステートになるように設計されている。このため、テストリセット（ＴＲＳＴ）ピンはオプションである。なお、ステートマシンにおける状態遷移の方向を表す０又は１は、デバッガから出力されるＪＴＡＧ信号のうちの、ＴＭＳ信号である。ＴＭＳ信号は、後述するTAP State Machineの中に、ＴＣＫの立ち上がりに応じて取り込まれ、その結果としてステートマシンの状態が遷移する。
【００２９】
Run-Test-Idleでは、特定の命令が存在するときのみＩＣ内のテストロジックがアクティブになる。それ以外のときはＩＣ内のテストロジックはアイドル状態になる。
【００３０】
Select-DR-Scanでは、データパスステート又はSelect-IR-Scanステートのどちらに進むかを制御する。
【００３１】
Select-IR-Scanでは、命令パスに進むか否かを制御する。進まない場合は、コントローラはTest-Logic-Resetステートに戻る。
【００３２】
Capture-IRでは、ＴＣＫの立ち上がりエッジで、ＩＲレジスタに含まれるシフトレジスタにより固定値のパターンがパラレルに読み込まれる。このときの固定値は、最下位ビットが１でそれ以外のビットは０である。
【００３３】
Shift-IRでは、データがＴＣＫの立ち上がり毎に、ＴＤＩからＩＲシフトレジスタ１０６へ取り込まれ、シフトされていく。
【００３４】
Exit1-IRでは、Pause-IRステート又はUpdate-IRステートのいずれに進むかを制御する。
【００３５】
Pause-IRでは、ＩＲシフトレジスタでのシフトを一時的に停止することができる。
【００３６】
Exit2-DRでは、Shift-IRステート又はUpdate-IRステートのいずれに進むかを制御する。
【００３７】
Update-IRでは、ＩＲシフトレジスタに含まれる命令がＩＲレジスタに格納される。この命令は格納されると、現在の命令になる。
【００３８】
Capture-DRでは、ＴＣＫの立ち上がりエッジで、ＤＲシフトレジスタにより現在の命令で選択されたＤＲレジスタにパラレルに読み込まれる。
【００３９】
Shift-DR、Exit1-DR、Pause-DR、Exit2-DR、及びUpdate-DRは、命令パスのShift-IR、Exit1-IR、Pause-IR、Exit2-IR、及びUpdate-IR ステートと同様である。
【００４０】
次に、ＴＡＰコントローラについて説明する。図３は、ＴＡＰコントローラを示す図である。第１のＴＡＰコントローラ及び第２のＴＡＰコントローラも同様の構成を有する。なお、この構成は、一般的なＴＡＰコントローラの構成である。ここでは、第１のＴＡＰコントローラ１０として説明する。
【００４１】
第１のＴＡＰコントローラ１０は、ＴＡＰコントローラ１０ａ及びデバッグ実行部１０ｂを有する。ＴＡＰコントローラ１０ａは、ＴＡＰステートマシン１０１、ＯＲ回路１０２、ＡＮＤ回路１０３、１０４、セレクタ１０５、ＩＲシフトレジスタ１０６、ＩＲレジスタ（Instruction Register）１０７を有する。デバック実行部１０ｂは、ＯＲ回路１１１、ＡＮＤ回路１０９、１１２、１１３、セレクタ１１４、１１７、１１９、バイパスレジスタ１１０、ＤＲシフトレジスタ１１５、ＤＲレジスタ１１６、デコーダ１０８、１１８を有する。
【００４２】
ＴＡＰステートマシン１０１は、ｎＴＥＳＴ、ＴＭＳ、ＴＣＫ、ＴＤＩ信号が入力され、ＴＡＰコントローラの上述の各ステートが制御され、ＳｈｉｆｔＩＲステート、ＣａｐｔｕｒｅＩＲステート、ＵｐｄａｔｅＩＲステート、ＳｔａｔｅＲｅｓｅｔステート、ＳｈｉｆｔＤＲステート、ＣａｐｔｕｒｅＤＲステート、ＵｐｄａｔｅＤＲステートに遷移する。ＳｈｉｆｔＩＲステートでは、ＩＲシフトレジスタ１０６がシフトしアップデートＩＲのタイミングでシフトレジスタ１０６のデータがＩＲレジスタ１０７に取り込まれる。
【００４３】
このＩＲレジスタ１０７に格納された命令がバイパスアクセスであれば、データは、バイパスレジスタ１１０を介して出力される。また、ＩＲレジスタ１０７に格納された命令に基づきいずれかのＤＲレジスタ１１６が選択され、これがＣａｐｔｕｒｅＤＲステートでＤＲシフトレジスタ１１５に取り込まれた後、ＳｈｉｆｔＤＲステートでセレクタ１１７を介して１ビットずつＴＤＯとして出力される。
【００４４】
ここで、本実施の形態においては、デバッガ１００から第１のＴＡＰコントローラ１０に入力されるＩＲコードは、プロセッサコアにおける第２のＴＡＰコントローラに対してデバッガ１００から入力されるＩＲコードとは干渉せずそのＩＲコード長が長いものとなっている。
【００４５】
次に、この第１のＴＡＰコントローラ１０のＩＲコードについて説明する。第１のＴＡＰコントローラ１０は、上述したように、デバッガ１００から入力されたＩＲコードに基づき制御信号をセレクタ８に出力し、セレクタ８は、制御信号に基づきデバッガ１００と複数の第２のＴＡＰコントローラのいずれか一とを接続する。このときの第１のＴＡＰコントローラに入力されるＩＲコードを選択用ＩＲコードということする。すなわち、第１のＴＡＰコントローラはこの選択用ＩＲコードを、制御対象であるセレクタ８を第２のＴＡＰコントローラ２０、３０、４０のうちの一と接続させるという処理を行う命令として解釈する。この選択用ＩＲコードは、第２のＴＡＰコントローラに対する特定のＩＲコードであるバイパスレジスタアクセスを拡張したものである。具体的には、第２のＴＡＰコントローラのＩＲコードの最大長をｍ（ｍ≧１の整数）ビットとしたとき、第１のＴＡＰコントローラの選択用ＩＲコードは、ｍ＋ｎ（ｎ≧２の整数）ビットからなり、上位ｍビットは第２のＴＡＰコントローラのバイパスレジスタアクセス（バイパス命令）のＩＲコード（全ビット１）である。
【００４６】
すなわち、選択用ＩＲコードを構成するビット列の内の上位ｍビットは、第２のＴＡＰコントローラが制御対象である一のＣＰＵに対して処理を行わない命令である。さらに、選択用ＩＲコードの下位ｎビットは、所定のビット列ではないものとする。例えばｍ＋ｎビットのビット列を命令として解釈する第１のＴＡＰコントローラが、ｍビットのビット列を受信した後、当該ｍビットに対してｎビットを付加してなるｍ＋ｎビット長のビット列を命令として解釈する場合には当該付加したｎビットを所定のビット列とする。例えば後述する本実施の形態の動作説明では、６ビットのビット列を命令として解釈する第１のＴＡＰコントローラが４ビットのビット列を受信する。この場合において、Capture-IRステートで第１のＴＡＰコントローラに入力されたビット列の内で最終的にＩＲシフトレジスタに残存する下位２ビット"００"が所定のビット列となる。さらに、本実施の形態の如くＪＴＡＧ規格に従った命令をビット列に割り当てる場合、各ビットが全て"１"であるｎビットのビット列も前記所定のビット列とする。なぜなら、上位ｍビットが全て１であって下位ｎビットも全て１である場合にはｍ＋ｎビットの全てが１となり、各ビットの全てが１であるｍ＋ｎビットのビット列はＪＴＡＧの規格上バイパス命令となるからである。このように、上位ｍビットは第２のＴＡＰコントローラが制御対象に処理を行わない命令であり、下位ｎビットは前記所定のビット列ではないビット列を、第１のＴＡＰコントローラの選択用ＩＲコード、一般的には制御対象に処理を行わない命令とする。
【００４７】
ここで、上述の選択用ＩＲコードが割り当てられたビット列以外のビット列は、第１のＴＡＰコントローラが制御対象であるセレクタ８に処理を行わない命令とする。まず、上位ｍビットが全て１とならないｍ＋ｎ（ｎ≧２の整数）ビット長のビット列は、第１のＴＡＰコントローラが制御対象であるセレクタ８に対して処理を行わない命令とする。例えば本実施の形態のようにＪＴＡＧ規格を採用する場合には、かかるビット列はバイパス命令とすることができる。さらに、上位ｍビットが全て１であっても、下位ｎビットが前記所定のビット列である場合、係るビット列は第１のＴＡＰコントローラが制御対象であるセレクタ８に対して処理を行わない命令とする。ＪＴＡＧ規格においては、同様に、かかる命令はバイパス命令とすることができる。
【００４８】
図４の上段は第１のＴＡＰコントローラが解釈する命令と、ｍ＋ｎビット長のビット列からなるビット列グループ内の各ビット列との対応関係を示している。図４の下段は第２のＴＡＰコントローラが解釈する命令と、ｍビット長のビット列からなるビット列グループ内の各ビット列との対応関係を示している。図４の上段にあるように、上位ｍビットが第２のＴＡＰコントローラが制御対象に処理を行わないバイパス命令を示すビット列であり、かつ下位ｎビットが所定のビット列ではない、ｍ＋ｎビットのビット列をＴＡＰ有効コードとする。例えば当該ＴＡＰ有効コードは上述の選択用ＩＲコードであるとすることができる。ここで、図４上段では、上述のように、"０"のみで構成されるｎビットのビット列または"１"のみで構成されるｎビットのビット列を所定のビット列としている。そして上位ｍビットが全て１ではないｍ＋ｎビットのビット列及び上位ｍビットが全て１であっても下位ｎビットが係る所定のビット列であるｍ＋ｎビットのビット列はバイパス命令であるとしている。
【００４９】
デバッガ１００は、第１のＴＡＰコントローラに対し、ＴＡＰ有効コードであるｍ＋ｎビットのビット列をＩＲコードとして送信する。またデバッガ１００は、第２のＴＡＰコントローラに対し、図４下段にあるｍビットのビット列グループ内のビット列をＩＲコードとして送信する。以下、デバッガ１００がｍ＋ｎビットのＩＲコードまたはｍビットのＩＲコードを送信した場合における第１のＴＡＰコントローラと第２のＴＡＰコントローラの動作を具体的に説明する。
【００５０】
図５は、本実施の形態において、第１ＴＡＰコントローラ１０および第２ＴＡＰコントローラが受信して解釈するＩＲコードを具体例として示す図である。ここでは図４に示すｍを４とし、ｎを２とする。例えば対象プロセッサコアにおける第２のＴＡＰコントローラが解釈する最大のＩＲコード長、ｍは４ビットであるので、第１のＴＡＰコントローラ１０のプロセッサコア選択用ＩＲコード（コアセレクト）を６'ｂ１１１１０１とする。対象となるプロセッサコアをプロセッサコア２０から、プロセッサコア３０へ切り替える場合、デバッガ１００は常時アクセス可能な第１のＴＡＰコントローラ１０に対し、図５（ａ）に示すように、選択用ＩＲコード６'ｂ１１１１０１を送信する。第１のTAPコントローラ１０は受信した当該選択用IRコード６'ｂ１１１１０１をＵｐｄａｔｅＩＲステートでIRレジスタに書き込むとともに、制御対象であるセレクタ８に制御信号を送信する。セレクタ８はプロセッサコア３０を選択する。これ以降、プロセッサコア２０の第２ＴＡＰコントローラのステートマシンはＩｄｌｅステートで止まっていることになる。
【００５１】
一方、上記の選択用ＩＲコードは第１のＴＡＰコントローラ１０だけではなく、プロセッサコア２０の第２ＴＡＰコントローラ２１にも入力される。しかしプロセッサコア２０の第２ＴＡＰコントローラ２１の最大ＩＲコード長は４ビットであるので、図５（ｂ）に示すように、第２のＴＡＰコントローラ２１に入力された６ビットの選択用ＩＲコードの内の下位２ビットはシフトアウトする。したがって、上記の選択用ＩＲコードの内の上位４ビットである４'ｂ１１１１が、ＵｐｄａｔｅＩＲステートにおいてＩＲレジスタに書き込まれる。この場合、第２のTAPコントローラ２１はバイパス命令を実行する。
【００５２】
すなわち、４ビットのＩＲコードを解釈する第２ＴＡＰコントローラ２１は、６ビットの選択用ＩＲコードの中からバイパス命令を示す４ビットのビット列を抽出して解釈するという動作を行うことになる。具体的には第２ＴＡＰコントローラ２１はバイパス命令を示す上位４ビットを抽出して解釈する。したがって、第１のＴＡＰコントローラに６ビットの選択用ＩＲコードが入力された際、当該第２ＴＡＰコントローラが制御対象であるCPU２２に処理を行うことを防止できる。
【００５３】
ＪＴＡＧのＩＥＥＥ１１４９．１規定として、ＩＲコードは、コードサイズによらず、全ビット１の場合はバイパスレジスタアクセスの命令とし実装することが規定されている。よって、プロセッサコア２０は図３に示すバイパスレジスタ１１０にアクセスするバイパスレジスタアクセスを行なう。すなわち、他のＪＴＡＧ命令を実行しないことが保証されている。
【００５４】
また、プロセッサコア２０、３０、４０に含まれる第２ＴＡＰコントローラのいずれかに対して４ビットのＩＲコードが入力される場合、第１のＴＡＰコントローラ１０は常時デバッガに接続されているため、同様に当該第１のＴＡＰコントローラ１０にも当該４ビットのＩＲコードが入力される。この場合、各プロセッサコア２０、３０、４０のＩＲコードサイズは４ビット以下なのに対し、第１のＴＡＰコントローラ１０のＩＲコードサイズは６ビットなので、ＩＲシフトレジスタは全て埋まらない。このとき本実施の形態においては、第１のＴＡＰコントローラ１０のＩＲシフトレジスタにはＪＴＡＧのＩＥＥＥ１１４９．１規定に従いＩＲシフト前のＣａｐｔｕｒｅＩＲステートで、例えば６'ｂ０００００１が入力される。よって、例えば図５（ｃ）に示すように、プロセッサコア２０、３０、４０に含まれる第２のＴＡＰコントローラのいずれかに、ＩＲコードとして、例えばバイパスアクセスコード４'ｂ１１１１を入力した場合、図５（ｄ）に示すように、第１のＴＡＰコントローラ１０のＩＲシフトレジスタが記憶するＩＲコードの内の下位２ビットは２'ｂ０が保証される。したがって、第１のＴＡＰコントローラ１０が解釈する６ビットの命令のうち、下位２ビットが０であるＩＲコードには制御対象であるセレクタ８に処理を行う命令を割り当てず、例えばバイパスアクセスコードを割り当てる。各プロセッサコア２０、３０、４０に含まれるいずれかの第２ＴＡＰコントローラが解釈する命令が第１のＴＡＰコントローラ１０に入力された場合には、第１のＴＡＰコントローラは制御対象であるセレクタ８に対して処理を行わず、バイパスレジスタアクセス命令を認識することになる。また、プロセッサコア２０、３０、４０に含まれる第２のＴＡＰコントローラのいずれかにバイパスアクセスコード４'ｂ１１１１以外のビット列が入力された場合にも第１のＴＡＰコントローラはバイパスレジスタアクセス命令を認識する。なぜならば、第１のＴＡＰコントローラは、図４に示した例からもわかるように、ＩＲコードとして認識する６ビットのビット列のうち上位４ビットが全て１でないビット列をバイパスレジスタアクセス命令として認識するからである。
【００５５】
CaptureIRステートでＩＲレジスタに入力される値は、最下位２ビットが２'ｂ０１にすることがＩＥＥＥ１１４９．１で規定されているが、それ以外のビット任意である。本実施の形態においては、第１のＴＡＰコントローラ１０においては、この最下位２ビット以外のビットは、全て０もしくは全て1としている。全て０の場合は、上記のように第１のＴＡＰコントローラ１０の最下位２ビットが０である場合は特定の命令を割り当てなければ良い。全て１の場合は、最下位２ビットは２'ｂ１１が保障されるので必ずバイパスレジスタアクセスと認識する。
【００５６】
ここで、新たなプロセッサコアを追加する場合でも、追加するプロセッサコアに含まれるＴＡＰコントローラのＩＲコードサイズがｍビットを超えない場合は、第１のＴＡＰコントローラのＩＲコードはそのまま使用することができる。また、拡張性をも考えて、ある程度大きなＩＲコードサイズを想定して第１のＴＡＰコントローラのＩＲコードを決めておくと流用性が高まる。
【００５７】
また、異なるＩＲコードにも対応できるため、一部のＪＴＡＧ接続をシリアル接続にすることも可能である。
【００５８】
さらに、この上位階層において同様なシステムを構築することによって、階層的に拡張することも可能である。
【００５９】
図６は、本実施の形態にかかる変形例を示す図である。図６に示すように、デバッガ１００に接続されたチップ２０１は、上述同様、第１のＴＡＰコントローラ２１０、セレクタ２０７、２０８及びプロセッサコア２２０、２３０、２４０を有する。さらに、プロセッサコア２４０にはシリアルにプロセッサコア２５０が接続されている。そしてさらに、セレクタ２０８には、プロセッサコア２２０、２３０、２４０と同様パラレルに下位階層部２６０が接続されている。下位階層部２６０は、上位階層と同様に、第１のＴＡＰコントローラ２７０、セレクタ２７７、２７８、及びプロセッサコア２８０、２９０を有する。
【００６０】
第１のＴＡＰコントローラ２７０は、第１のＴＡＰコントローラ２１０と同様、デバッガと接続されデバッガから選択用ＩＲコードを受け取る。これによりＤＲレジスタを選択し、プロセッサコア選択のための制御信号を出力する。セレクタ２７８は、この制御信号に基づきセレクタ２０８を介してデバッガ１００とプロセッサコア２８０又はプロセッサコア２９０のいずれかを接続する。選択されたプロセッサコアは、上位階層のプロセッサコア２２０、２３０、２４０と同様、デバッガ１００の制御のもとＣＰＵ２８２、２９２のデバッグを行なう。
【００６１】
ここで、第２のＴＡＰコントローラ２２１、２３１、２４１、２５１、２８１、２９１が解釈するＩＲコードのビット長を４ビットとする。第２のＴＡＰコントローラ２４１、２５１は、シリアルに接続されているため、第２のＴＡＰコントローラ２４１に入力されるＩＲコードのビット長は８ビットとなる。また、下位階層部２６０における第２のＴＡＰコントローラ２８１、２９１はパラレルに接続されているため、第２のＴＡＰコントローラ２８１および２９１のそれぞれに入力されるＩＲコードのビット長は４ビットとなる。この場合には、第１のＴＡＰコントローラ２７０のＩＲコードのビット長を最小で４＋２＝６ビット、第１のＴＡＰコントローラ２１０のＩＲコードのビット長を最小で８＋２＝１０ビットとすることができる。
【００６２】
第１のＴＡＰコントローラ２１０が解釈する１０ビットのＩＲコードの内、上位８ビットが全て１であって下位２ビットが全て０又は全て１のＩＲコードを、第１のＴＡＰコントローラ２１０におけるバイパス命令とする。また、第１のＴＡＰコントローラ２７０が解釈する６ビットのＩＲコードの内、上位４ビットが全て１であって下位２ビットが全て０または全て１のＩＲコードを第１のＴＡＰコントローラ２７０におけるバイパス命令に割り当てる。また、第１のＴＡＰコントローラ２１０が解釈する１０ビットのＩＲコードの内、上位８ビットが１であって下位２ビットが０１のＩＲコードを第１ＴＡＰコントローラ２１０における選択用ＩＲコードとする。この選択用ＩＲコードによりプロセッサコア２２０が選択されると、その際、先に選択されていた例えばプロセッサコア２３０の第２のＴＡＰコントローラ２３１にもこの１０ビットの選択用ＩＲコードが入力される。しかし、下位６ビットは係る第２のＴＡＰコントローラ２３１内にあるＩＲシフトレジスタからシフトアウトし、一方で当該ＩＲシフトレジスタに残存する上位４ビットは全て１であるため、当該第２のＴＡＰコントローラ２３１はバイパス命令を実行する。
【００６３】
また、プロセッサコア２４０に上記１０ビットの選択用ＩＲコードが入力された場合、第２のＴＡＰコントローラ２４１内のＩＲシフトレジスタから上記１０ビットのＩＲコードの内の下位６ビットはシフトアウトし、第２のＴＡＰコントローラ２４１内のＩＲシフトレジスタに残存する上位４ビットは全て１となる。ゆえに第２のＴＡＰコントローラ２４１は、Update-IRステートでＩＲシフトレジスタからＩＲレジスタにＩＲコードを取り込んだ際、バイパス命令を認識する。また、第２のTAPコントローラ２４１内のＩＲシフトレジスタからシフトアウトした上記６ビットのビット列がプロセッサコア２５０に入力される。当該６ビットのビット列の内の下位２ビットは第２のＴＡＰコントローラ２５１内のIRシフトレジスタからシフトアウトする。したがって、第２のＴＡＰコントローラ２５１内のＩＲシフトレジスタに残存する４ビットのビット列は全て１となり、当該第２のTAPコントローラ２５１はバイパス命令を認識する。
【００６４】
また、下位階層部２６０に上記１０ビットの選択用ＩＲコードが入力された場合、第１のＴＡＰコントローラ２７０が解釈するＩＲコードのビット長は６ビットであることから、当該６ビットの内の下位４ビットは第１のＴＡＰコントローラ内のＩＲシフトレジスタからシフトアウトする。ここで、上記１０ビットの選択用ＩＲコードの内の上位６ビットは全て１であるため、係る第１のＴＡＰコントローラ２７０は当該６ビットのビット列からなるＩＲコードをバイパス命令と認識する。
【００６５】
第１のＴＡＰコントローラ２１０が１０ビットの選択ＩＲコードを実行し、セレクタ２０８が下位階層２６０を選択したとする。その後、デバッガ１００が下位階層部２６０の
第１のＴＡＰコントローラ２７０に６ビットの選択用ＩＲコードを送信したとする。ここで第１のＴＡＰコントローラ２７０に対する６ビット選択用ＩＲコードは、上位４ビットが全て１であって下位２ビットが"００"または"１１"以外であるとする。上記６ビットの選択用ＩＲコードを受けて、第１のＴＡＰコントローラは制御信号をセレクタ２７８に出力する。セレクタ２７８は当該制御信号に応じて例えばプロセッサコア２９０を選択する。この場合、セレクタ２７８が先に選択していたプロセッサコア２８０には上記６ビットの選択用ＩＲコードが入力されるが、第２のＴＡＰコントローラ２８１内のＩＲシフトレジスタから下位６ビットはシフトアウトし、上位４ビットが当該ＩＲシフトレジスタ内に残存する。ここで第２のＴＡＰコントローラ２８１内のＩＲシフトレジスタに残存した４ビットは全て１であるため、第２のＴＡＰコントローラ２８１は、Update-IRステートでＩＲシフトレジスタからＩＲレジスタに当該４ビットを取り込みバイパス命令を認識する。
【００６６】
本実施の形態においては、第１のＴＡＰコントローラのＩＲコードをＪＴＡＧ規定のバイパスレジスタアクセスコード（全ビット１）の拡張として定義するため、第１のＴＡＰコントローラに対するＩＲコードがプロセッサコアに対してバイパスレジスタアクセスとして認識される。このことにより、各プロセッサコアに対して意図しないＪＴＡＧ命令が実行されないことを保証する。
【００６７】
また、プロセッサコアに対するＩＲコードが第１のＴＡＰコントローラに対してバイパスアクセスと認識されることにより、第１のＴＡＰコントローラに対して意図しないＪＴＡＧ命令が実行されないことを保証する。これにより、第１のＴＡＰコントローラに対応していないＩＣＥデバッガ等も第１のＴＡＰコントローラを搭載していない場合と同様に使用することもができる。
【００６８】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態にかかるマルチコアデバッグシステムを示す図である。
【図２】ＴＡＰコントローラの１６のステートを示す図である。
【図３】ＴＡＰコントローラを示す図である。
【図４】本発明の実施の形態におけるＩＲコードを示す図である。
【図５】本発明の実施の形態における第１のＴＡＰコントローラのＩＲコードを示す図である。
【図６】本発明の実施の形態にかかる変形例を示す図である。
【図７】パラレルスイッチ接続において、対象となるコアの選択制御回路をＬＳＩに内蔵する構成を有するマルチプロセッサシステムを示す図である
【図８】第１のＴＡＰコントローラのマルチコア用拡張レジスタとＩＲコードのマッピングの一例を示す図である。
【符号の説明】
【００７０】
２〜６  端子
７、８．２０７、２０８、２７７、２７８  セレクタ
８  セレクタ
１０，２１０、２７０  第１のＴＡＰコントローラ
２０、３０、４０、２２０、２３０、２４０、２５０、２８０、２９０  プロセッサコア
２１、３１、４２、２２１、２３１、２４１、２５１、２８１、２９１  第２のＴＡＰコントローラ
１００  デバッガ
１０１  ＴＡＰステートマシン
１０２、１１１  ＯＲ回路
１０３、１０４、１０９、１１２、１１４  ＡＮＤ回路
１０５、１１４、１１７、１１９  セレクタ
１０６  ＩＲシフトレジスタ
１０７  ＩＲレジスタ
１０８、１１８  デコーダ
１１０  バイパスレジスタ
１１５  ＤＲシフトレジスタ
１１６  ＤＲレジスタ
２６０  下位階層部
【図１】
2008304986.tif 000003
【図２】
2008304986.tif 000004
【図３】
2008304986.tif 000005
【図４】
2008304986.tif 000006
【図５】
2008304986.tif 000007
【図６】
2008304986.tif 000008
【図７】
2008304986.tif 000009
【図８】
2008304986.tif 000010