(57)【要約】      （修正有）【課題】集積回路設計をテストするための改良された技術を提供する。【解決手段】マイクロプロセッサ(322)のアーキテクト状態の変更を表すシグネチャ(334)を生成する技術が開示される。目標マイクロプロセッサの複数のアーキテクト状態を表す複数の信号を結合させて目標マイクロプロセッサの目標アーキテクト状態シグネチャを生成する。目標マイクロプロセッサを実際の又はシミュレートされたものとし、複数のアーキテクト状態を実際の又はシミュレートされた状態とすることが可能。テストマイクロプロセッサ(322)の複数のアーキテクト状態を表す複数の信号(324)を結合させてテストマイクロプロセッサ(322)のテストアーキテクト状態シグネチャ(334)を生成することが可能。目標シグネチャをテストシグネチャ(334)と比較して(336)テストマイクロプロセッサ(322)が故障しているか否かを判定可能。【選択図】図３Ｂ
2006139781.tif 000002
【特許請求の範囲】
【請求項１】
第１のマイクロプロセッサ(322)の第１の複数のアーキテクト状態を表す第１の複数の信号(324)を結合させて(208)、テストアーキテクト状態シグネチャ(334)を生成し、
前記テストアーキテクト状態シグネチャ(334)が、第２のマイクロプロセッサ(302)の第２の複数のアーキテクト状態を表す目標アーキテクト状態シグネチャ(312)と等価であるか否かを判定する(210)、
という各ステップを含む方法(200)。
【請求項２】
前記第１の複数の信号(324)を結合させる前に第２のマイクロプロセッサ(302)の第２の複数のアーキテクト状態を表す第２の複数の信号(308)を結合させて前記目標アーキテクト状態シグネチャ(312)を生成するステップを更に含む、請求項１に記載の方法(200)。
【請求項３】
前記第１の複数の信号(324)を結合させる前に第３の複数の信号(304)を入力として前記第１のマイクロプロセッサ(322)に供給して前記第１の複数の信号(324)を生成し、
前記第２の複数の信号(308)を結合させる前に前記第３の複数の信号(304)を入力として前記第２のマイクロプロセッサ(302)に供給して前記第２の複数の信号(308)を生成する、
という各ステップを更に含む、請求項２に記載の方法(200)。
【請求項４】
前記第１のマイクロプロセッサ(322)が実際のマイクロプロセッサからなり、前記第２のマイクロプロセッサ(302)がシミュレートされたマイクロプロセッサからなる、請求項１に記載の方法(200)。
【請求項５】
第１のマイクロプロセッサ(322)の第１の複数のアーキテクト状態を表す第１の複数の信号(324)を結合させてテストアーキテクト状態シグネチャ(334)を生成する手段(310)と、
前記テストアーキテクト状態シグネチャ(334)が、第２のマイクロプロセッサ(302)の第２の複数のアーキテクト状態を表す目標アーキテクト状態シグネチャ(312)と等価であるか否かを判定する手段(336)と
を備えているデバイス(320)。
【請求項６】
第３の複数の信号(304)を入力として前記第１のマイクロプロセッサ(322)に供給して前記第１の複数の信号(324)を生成する手段と、
前記第３の複数の信号(304)を入力として前記第２のマイクロプロセッサ(302)に供給して前記第２の複数の信号(308)を生成する手段(306)と
を更に備えている、請求項５に記載のデバイス(320)。
【請求項７】
マイクロプロセッサ(400)であって、
複数の書き込みポート(404a〜404d)を備えたレジスタファイル(402)であって、該複数の書き込みポート(404a〜404d)が、複数のレジスタ書き込みイネーブル入力(412a〜412d)及び複数のレジスタデータ入力(406a〜406d)を含む、レジスタファイル(402)と、
前記マイクロプロセッサのマイクロアーキテクチャの特徴を実施するマイクロアーキテクチャ回路(420)と、
複数のシグネチャ読み出し専用スキャンラッチ(ROSL)(414a〜414d)であって、前記複数のレジスタ書き込みイネーブル入力(412a〜412d)に接続された複数のROSL書き込みイネーブル入力(416a〜416d)と、前記複数のレジスタデータ入力(406a〜406d)に接続された複数のROSLデータ入力(418a〜418d)とを含み、前記複数のROSL書き込みイネーブル入力(416a〜416d)の何れも前記マイクロアーキテクチャ回路(420)に接続されず、前記複数のROSLデータ入力(418a〜418d)の何れも前記マイクロアーキテクチャ回路(420)に接続されない、複数のROSL(414a〜414d)と
を備えているマイクロプロセッサ(400)。
【請求項８】
第１の複数のノード(406a〜406d,422a)であって、
マイクロプロセッサ(400)のアーキテクチャ状態を実施する第２の複数のノード(406a〜406d)と、
該マイクロプロセッサ(400)の前記アーキテクチャ状態を実施しない第３の複数のノード(422a)と
を備えている、第１の複数のノード(406a〜406d,422a)と、
前記第２の複数のノード(406a〜406d)に接続され、該第２の複数のノード(406a〜406d)の信号に基づき、且つ前記第３の複数のノード(422a)の信号に基づかないで、アーキテクト状態シグネチャ(334)を生成する、アーキテクト状態シグネチャ手段(414a〜414d)と
を備えているマイクロプロセッサ(400)。
【請求項９】
前記アーキテクト状態シグネチャ手段が、前記第２の複数のノード(406a〜406d)に接続された複数の読み出し専用スキャンラッチ(ROSL)(414a〜414d)を備えている、請求項８に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路のテストに関し、より詳細にはマイクロプロセッサをテストするための技術に関するものである。
【背景技術】
【０００２】
マイクロプロセッサその他の集積回路等の電子部品は、設計段階及び製造段階の双方の期間中に重要なテストを受ける。マイクロプロセッサのハードウェアプロトタイプを組み立ててテストすることは、費用がかかり、多くの時間を要する。その結果として、マイクロプロセッサのソフトウェアモデルの正しさを確認し検証するためのソフトウェアツールが開発されてきた。このようなテストにより、ハードウェアプロトタイプを組み立ててテストすることを必要とせずに少なくとも幾つかの設計誤りを検出し訂正することが可能になり、それにより全体の設計コストが削減される。
【０００３】
通常、マイクロプロセッサのソフトウェアモデルは、RTL（register transfer language）でそのマイクロプロセッサを記述する。該ソフトウェアモデルをテストするために、「テストケース」と呼ばれる一組のテスト命令がマイクロプロセッサのマシン言語で記述され、シミュレータがマイクロプロセッサによるそれらの命令の実行をシミュレートする。ソフトウェア検証ツールは、該シミュレーションから得られた結果を、マイクロプロセッサが正しく機能している場合に得られるはずの結果と比較する。予測される結果が実際の結果と一致しない場合、その設計に誤りが存在する。これに応じて、識別された誤りを訂正するためにソフトウェアモデルを修正することができる。
【０００４】
シミュレートされたマイクロプロセッサにより生成された出力を単に検査するだけで該シミュレーションの終わりに特定の設計誤りを検出することは、困難又は不可能な場合がある。その結果として、ソフトウェア検証ツールの中には、シミュレータと同時に動作して、シミュレータの実行中にマイクロプロセッサの内部のマイクロアーキテクチャ状態（micro-architectural state）の変化を観察してその状態を表明するものがある。この手法を使用すると、マイクロプロセッサの外部ピンに伝わらないマイクロプロセッサ設計の誤りを発見することができる。上述した理由から、通常、マイクロプロセッサの組み立て前のソフトウェアモデルでこのような誤りを特定して訂正することは、ハードウェアプロトタイプを使用してそうする場合よりも費用を要せず、また多くの時間を要しない。
【０００５】
しかし、このようなソフトウェアシミュレーション／検証ツールは、マイクロプロセッサの製造後には使用することができない。このポストシリコン（post-silicon）設計段階では、ソフトウェアモデルではなくマイクロプロセッサのプロトタイプが物理的にテストされる。更に、ポストシリコン段階で実行されるテストの回数は、プリシリコン（pre-silicon）段階で実行される回数よりも一般に数桁多いものとなる。しかし、ポストシリコン段階では通常は、プリシリコン段階と同じ詳細度でマイクロプロセッサの中間的な内部状態を観察することはできない。実際に、多くの場合、マイクロプロセッサの中間的な内部状態はポストシリコンテスト中に全く観察できないことがある。それどころか、テストケースがマイクロプロセッサのプロトタイプで実行された後には、該マイクロプロセッサのプロトタイプの最終的な外部状態を観察することしかできない場合もある。したがって、このようなテストは、マイクロプロセッサの外部ピンに伝わらない中間的な内部誤りを検出できないことがあるという欠点を有するものとなる。
【０００６】
読み出し専用スキャンラッチ（ROSL）は、マイクロプロセッサ等のテスト対象回路（CUT（circuit under test））の状態の観察及び記憶に使用されてきた回路の一例である。ROSLは、回路の入力及び／又は出力に接続され、何らかのテスト回路機構によりトリガされた特定のクロックサイクルでその入力及び／又は出力の状態を記憶することができ、次いでスキャンチェーンシフトオペレーションを通じて読み出すことができる。各ROSLは1ビットのデータを記憶するので、通常、観察が望まれるビット数と同数のビットを記憶するために多数のROSLが回路に接続される。例えば、一群のROSLが回路の出力に接続されると、該一群のROSLに記憶された出力値は、テストの完了時に読み出して、予測された出力値と比較することができる。最も単純な形のROSLは、テスト中の回路の出力に生成された値の履歴を提供しない。
【０００７】
これとは対照的に、「シグネチャ（signature）ROSL」は、テスト終了時に回路の最終状態を観察するだけでなく、テスト中の様々な時点で回路の中間状態を観察するために使用することができる。従来のシグネチャROSLの動作を説明する前に、「シグネチャ」の概念を、図１Aに示す従来技術のシステム100を参照することにより説明する。このシステム100は、回路設計のソフトウェアモデル102を含む。この回路モデル102は、例えば、マイクロプロセッサの特定のインプリメンテーションのモデルとすることができる。また、システム100は、テストケース104も含む。このテストケース104は、回路モデル102によりモデル化された回路（本書では「モデル化回路」と称す）へ（シミュレーションで）提供されることになる一組の命令（入力）を含む。
【０００８】
回路シミュレータ106は、入力として、回路モデル102及びテストケース104を受け取り、モデル化回路によるテストケース104の実行をシミュレートする。このシミュレーションはテスト応答108を生成する。このテスト応答108は、シミュレーション中のモデル化回路の１つ又は２つ以上のシミュレートされた状態を表す。テスト応答108は、例えば、モデル化回路の複数の状態を含み、シミュレーション中にシミュレートされた連続的な各クロックサイクルにおけるモデル化回路の出力を表す。
【０００９】
目標シグネチャ生成手段110は、テスト応答108を圧縮してシグネチャ112を生成する。該シグネチャ112を「目標シグネチャ」と称す。詳細には、目標シグネチャ生成手段110は、ゼロ等のデフォルト値に初期化することができる実行シグネチャ（running signature）114を含む。シグネチャ生成手段110がテスト応答108で次の組の状態情報を受け取ると、シグネチャ生成手段110のシグネチャ機能116は、テスト応答状態情報を実行シグネチャ114の現在の値と結合させて、実行シグネチャ114の新たな値を生成する。シグネチャ機能116は、実行シグネチャ114の古い値をこの新たな値と取り替える。シグネチャ機能116は、例えば、XOR機能とすることができる。シグネチャ生成手段110は、これにより実行シグネチャ114の値をモデル化回路の連続的な各状態に関する状態情報で更新する。実行シグネチャ114の最終的な値（すなわち、シグネチャ機能116がテスト応答108からの最終的な状態情報を実行シグネチャ114に組み込んだ後の値）が目標シグネチャ112として提供される。
【００１０】
目標シグネチャ112は、その後、回路モデル102を実施するハードウェアプロトタイプの動作を確認するのに使用することができる。例えば、図１Bを参照すると、目標シグネチャ112を使用してマイクロプロセッサ等のテスト対象回路122（回路モデル102を実施するために設計されたもの）の動作を確認するための従来技術のシステム120が示されている。目標シグネチャ112を生成するために使用されたものと同じテストケース104がテスト対象回路122に提供される。
【００１１】
また、システム120はシグネチャROSL126も含む。該シグネチャROSL126は、テスト対象回路122に接続されている。図示を容易にするために、図１Bには、単一のシグネチャROSL126のみが示されているが、シグネチャROSL126は、マルチビットシグネチャROSLとすることができる。このマルチビットシグネチャROSLは、複数の1ビットシグネチャROSLを含み、したがって、計測されるテスト応答124の複数のビットに基づいてマルチビットシグネチャを生成することができる。例えば、計測されるテスト応答124が各クロックサイクル後のテスト対象回路122の出力を含むものと仮定する。
【００１２】
各クロックサイクルにおいて、シグネチャROSL126は、テスト応答124の対応する部分（例えば、対応する出力ビット）をテスト対象回路122から読み出す。シグネチャROSL126は、ゼロ等のデフォルト値に初期化することができる実行シグネチャ130を含む。次の状態値がテスト応答124からシグネチャROSL126にラッチされると、シグネチャROSL126内のテストシグネチャ生成手段128が、その状態値を実行シグネチャ130の現在の値と結合させて、実行シグネチャ130の新たな値を生成する。テストシグネチャ生成手段128は、ラッチ132を介して実行シグネチャ130の古い値をその新たな値と取り替える。シグネチャ生成手段128は、図１Aに示すシグネチャ機能116と同じ機能（例えば、XOR）を使用して、実行シグネチャ130の新たな値を生成する。シグネチャROSL126は、それにより、実行シグネチャ130の値を、連続的な各クロックサイクル毎にテスト応答124から得られた状態情報で更新する。
【００１３】
シグネチャROSL126は、実行シグネチャ130の最終値をテストシグネチャ134として提供する。テスト対象回路122が回路モデル102に従って正確に実施され、且つ、テスト対象回路122がテストケース104の実行時に正しく動作した場合には、テストシグネチャ134は、図１Aで生成された目標シグネチャ112と同じものとなる。このため、システム120は、目標シグネチャ112をテストシグネチャ134と比較して有効信号138を生成する比較器136を含む。該有効信号138は、２つのシグネチャ112,134が互いに等しいか否かを示すものである。該有効信号138は、テストシグネチャ134が目標シグネチャ112と等しくない場合に、適切な訂正動作を行うための誤り検出／訂正回路機構（図示せず）に提供することができる。
【００１４】
目標シグネチャ112及びテストシグネチャ134は、それぞれ回路モデル102及びテスト対象回路122の中間状態に関する情報を捕捉するので、図１A及び図１Bに関して上述した技術は、最終状態のみを観察して互いに比較しただけでは検出することができない回路製造における誤りを検出するのに使用することができる。
【００１５】
上記の例では、シグネチャROSLをテスト対象回路122の外部状態を捕捉するものとして説明したが、シグネチャROSLをテスト対象回路122の内部ノードに接続し、テストケース104が実行されている間に回路122の内部状態を観察することも可能である。しかし、シグネチャROSLを使用して回路122の内部状態を観察する場合には、回路122がテストケース104を正しく実行した場合であっても、状況によってはテストシグネチャ134が目標シグネチャ112と一致しない場合がある。例えば、テスト対象回路122がマイクロプロセッサである場合には、テスト対象回路122は、回路モデル102を正確に実施することができるが、特定のインプリメンテーションの細部において回路モデル102と異なることがあり、この細部によりテストシグネチャ134が目標シグネチャ112と異なることになる。
【００１６】
その結果として、シグネチャROSLは、回路の単一のインプリメンテーションの内部状態の目標シグネチャを生成する用途に一般に制限されていた。換言すれば、目標シグネチャ112は、一般に、回路モデル102の１つのインプリメンテーションをテストすることにしか使用することができない。同じ回路モデル102の別のインプリメンテーションをテストするには、別の目標シグネチャを生成する必要があった。このようなプロセスは効率的ではなく、誤りを起こしやすいものである。なぜなら、このようなプロセスでは、特定の目標シグネチャが、不注意で、間違った回路のインプリメンテーションと共に使用されることがあり、これによりテスト対象回路122に障害があることを比較器136が誤って示し、このためテスト対象回路122及び／又は回路モデル112の不必要な検査及び／又は修正が生じるからである。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
したがって、集積回路の設計をテストするための改良された技術が必要とされている。
【課題を解決するための手段】
【００１８】
マイクロプロセッサのアーキテクト状態（architected state）に対する変更を表すシグネチャを生成するための技術が開示される。目標マイクロプロセッサの複数のアーキテクト状態を表す複数の信号を結合して、目標マイクロプロセッサの目標アーキテクト状態シグネチャを生成することができる。前記目標マイクロプロセッサは、実際のもの又はシミュレートされたものとすることが可能であり、前記複数のアーキテクト状態は、実際の状態又はシミュレートされた状態とすることが可能である。テストマイクロプロセッサの複数のアーキテクト状態を表す複数の信号を結合して、該テストマイクロプロセッサのテストアーキテクト状態シグネチャを生成することができる。目標シグネチャをテストシグネチャと比較して、テストマイクロプロセッサに障害があるか否かを判定することができる。
【００１９】
本発明の一態様において提供される方法は、（Ａ）第１の複数の信号が入力として提供された際に第１のマイクロプロセッサの動作をシミュレーションして、該第１のマイクロプロセッサの第１の複数のアーキテクト状態を表す第２の複数の信号を生成する、アーキテクチャシミュレータに、第１の複数の信号を入力として提供し、（Ｂ）前記第２の複数の信号を結合させて目標アーキテクトシグネチャを生成し、（Ｃ）第３の複数の信号を入力として第２の実際のマイクロプロセッサに供給して、該第２のマイクロプロセッサの第２の複数のアーキテクト状態を表す第４の複数の信号を生成し、（Ｄ）該第４の複数の信号を結合させてテストアーキテクト状態シグネチャを生成し、（Ｅ）テストアーキテクト状態シグネチャが目標アーキテクト状態シグネチャと等価であるか否かを判定し、及び（Ｆ）目標アーキテクト状態シグネチャがテストアーキテクト状態シグネチャと等価であるか否かを示す信号を生成する、という各ステップを含む。
【００２０】
本発明の様々な態様及び実施形態の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかとなろう。
【発明を実施するための最良の形態】
【００２１】
マイクロプロセッサのアーキテクト状態に対する変更を表すシグネチャを生成するための技術が開示される。目標マイクロプロセッサの複数のアーキテクト状態を表す複数の信号を結合して、目標マイクロプロセッサの目標アーキテクト状態シグネチャを生成することができる。前記目標マイクロプロセッサは、実際のもの又はシミュレートされたものとすることが可能であり、前記複数のアーキテクト状態は、実際の状態又はシミュレートされた状態とすることが可能である。テストマイクロプロセッサの複数のアーキテクト状態を表す複数の信号を結合して、該テストマイクロプロセッサのテストアーキテクト状態シグネチャを生成することができる。目標シグネチャを前記テストシグネチャと比較して、テストマイクロプロセッサに障害があるか否かを判定することができる。
【００２２】
マイクロプロセッサの「アーキテクチャ状態（architectural state）」（又は「アーキテクト状態（architected state）」は、プロセッサの命令セットにより動作されるマイクロプロセッサの状態のサブセットを指すものである。したがって、マイクロプロセッサのアーキテクト状態は、マイクロプロセッサの命令セットアーキテクチャ（ＩＳＡ）とも呼ばれる。マイクロプロセッサのアーキテクチャ状態は、例えば、マイクロプロセッサのレジスタ及びメモリの状態を含むことができる。
【００２３】
アーキテクチャ状態は、一般に、マイクロプロセッサのインプリメンテーションに依存する特徴の状態を含まない。このような状態は、「マイクロアーキテクチャ状態」と呼ばれる。マイクロアーキテクチャ状態は、例えば、マイクロプロセッサ内の個々のトランジスタ又は論理ゲートの状態を含むことができる。マイクロアーキテクチャ状態の別の例は、マイクロプロセッサに記憶された分岐予測履歴である。マイクロプロセッサの命令セットアーキテクチャが一旦定義されると、該命令セットアーキテクチャに従って挙動する設計である限り、様々な異なるマイクロプロセッサ設計で該命令セットアーキテクチャを実施することができる。同じ命令セットアーキテクチャを有するマイクロプロセッサであっても、インプリメンテーションが異なると、そのマイクロアーキテクチャの特徴が異なることがあり、このため、同じ命令ストリームを実行している間にそのマイクロアーキテクチャ状態が異なることがある。
【００２４】
例えば、Intel(R)のItanium(R)プロセッサファミリ（IPF）マイクロプロセッサアーキテクチャの命令セットアーキテクチャが、「Intel(R) Itanium(R) Architecture Software Developer's Manual」の改訂第2.1版の第1巻第3章（「Execution Environment」）に定義されている。この文献は、Intel社により2002年10月に発刊されたものである。詳細には、IPF命令セットアーキテクチャは、特定の命令が実行された時にプロセッサレジスタ及びメモリの状態がどのように変化するかを定義している。
【００２５】
IPF命令セットアーキテクチャは以下のレジスタを定義している。
【００２６】
汎用レジスタ（GR）。これらは、汎用の64ビットレジスタであり、GR0〜GR127のラベルが付けられている。
【００２７】
浮動小数点レジスタ（FR）。これらは浮動小数点レジスタであり、FR0〜FR127のラベルが付けられている。
【００２８】
述語レジスタ（PR）。これらは述語及び分岐で使用される単一ビットレジスタであり、PR0〜PR63のラベルが付けられている。
【００２９】
分岐レジスタ（BR）。これらのレジスタは分岐で使用され、BR0〜BR7のラベルが付けられている。
【００３０】
命令ポインタ（IP）。このレジスタは現在実行中の命令のバンドル（bundle）アドレスを保持する。
【００３１】
カレントフレームマーカ（CFM）。このレジスタは、現在の汎用レジスタスタックフレーム及びFR／PR循環（rotation）を記述する状態を保持する。
【００３２】
アプリケーションレジスタ（AR）。これらは専用レジスタの集合である。
【００３３】
性能モニタデータレジスタ（PMD）。これらは性能監視ハードウェア用のデータレジスタである。
【００３４】
ユーザマスク（UM）。これは、アラインメントトラップ及び性能モニタに使用され、及び浮動小数点レジスタの使用を監視するのに使用される、一組の単一ビット値である。
【００３５】
プロセッサ識別子（CPUID）。これらのレジスタは、プロセッサのインプリメンテーションに依存する特徴を記述する。
【００３６】
これらのレジスタは、上記で参照したSoftware Developer's Manualの第3.1節により詳細に定義されている。このようなレジスタの状態は、あらゆるIPFプロセッサのアーキテクチャ状態の一部であり、したがって、あらゆるIPFマイクロプロセッサで実行されているアプリケーションプログラムにとってアクセス可能である。上述したIPFアーキテクチャ及び特定の一組のレジスタは、本書では単なる例として提供されたものであり、本発明の限定を構成するものではない。それとは逆に、本書に開示した技術は、様々なレジスタを有する様々なプロセッサアーキテクチャと共に使用することができる。
【００３７】
上述したように、メモリの状態（内容）は、プロセッサのアーキテクチャ状態に含めることができる。例えば、上記で参照したSoftware Developer's ManualのパートIの第3.2節、第4節、及び第10.6節は、IPFメモリモデルを記載している。命令セットアーキテクチャ内に含まれるメモリには、例えば、メインメモリ、キャッシュメモリ、又はその双方が含まれ得る。更に、キャッシュメモリがマイクロプロセッサのアーキテクチャ状態の一部を形成する場合であっても、キャッシュエントリの「プライベート」状態や「無効」状態といったキャッシュ状態の特定の特徴をアーキテクチャ状態から除外することが可能である。
【００３８】
マイクロプロセッサの命令セットの命令を実行することにより、マイクロプロセッサのアーキテクチャ状態が既定の態様で変更される。例えば、加算及び減算を実行するための命令等の算術命令は、その算術命令の結果が記憶されるレジスタ又はメモリロケーションの状態を変更する。例えば、レジスタr6の内容及びレジスタr7の内容を加算して、その結果をレジスタr5に記憶するr5＝r6＋r7等の加算命令を考える。レジスタr5の状態はマイクロプロセッサのアーキテクチャ状態の一部であるので、レジスタr5の状態に対するこの変更は、アーキテクチャ状態の更新の一例である。
【００３９】
本発明の一実施形態では、マイクロプロセッサのアーキテクチャ状態に基づいてテストシグネチャを生成し、該テストシグネチャを、マイクロプロセッサの目標アーキテクチャ状態に基づいて生成された目標シグネチャと比較することにより、マイクロプロセッサがテストされる。例えば、図２を参照すると、本発明の一実施形態で実行されて本発明の一実施形態によるマイクロプロセッサをテストする方法200のフローチャートが示されている。図３Ａ及び図３Ｂを参照すると、図２に示す方法200を実行するのに使用できるシステム300,320が図示されている。
【００４０】
システム300は、マイクロプロセッサ等の回路のモデル302、及び該モデル302によりモデル化された回路による実行に適した命令を含むテストケース304を含む。回路モデル302及びテストケース304は、例えば、図１に示すモデル102及びテストケース104に関して上述したように実施することができる。
【００４１】
システム300はまた、アーキテクチャシミュレータ306を含む。該アーキテクチャシミュレータ306は、命令セットアーキテクチャに従って挙動する一種のシミュレータである。結果的に、アーキテクチャシミュレータ306によりシミュレートされた状態変更のみが、このモデル化回路のアーキテクチャ状態に対する変更となる。このため、アーキテクチャシミュレータ306は、モデル化回路のマイクロアーキテクチャ状態に対する変更をシミュレートしない。そのシミュレーションを行う際には、アーキテクチャシミュレータ306は、マイクロアーキテクチャシミュレータよりも高速に動作する。
【００４２】
方法200は、アーキテクチャシミュレータ306にテストケース304を提供する（ステップ202）。これに応じて、アーキテクチャシミュレータ306は、モデル化回路上でのテストケース304の実行をシミュレートする。
【００４３】
方法200は、モデル化回路上でのテストケース304のシミュレートされた実行時におけるモデル化回路のシミュレートされたアーキテクチャ状態のみに基づいて、目標シグネチャ312を生成する（ステップ204）。目標シグネチャ312は例えば以下のようにして生成することができる。アーキテクチャシミュレータ306は、回路モデル302におけるテストケース304の実行のシミュレート時に、アーキテクトテスト応答308を生成する。このアーキテクトテスト応答308は、回路シミュレータ106（図１Ａ）により生成されたテスト応答108と同様のものであるが、アーキテクト状態テスト応答324が、シミュレーション中のレジスタの値といったモデル化回路のアーキテクト状態に関する状態情報しか含まない点では異なる。
【００４４】
システム300はまた、目標シグネチャ生成手段310を含む。この目標シグネチャ生成手段310は、シグネチャ機能316及び実行シグネチャ314を含み、図１Ａに示す目標シグネチャ生成手段110が目標シグネチャ112を生成するのと同様にして、目標シグネチャ312を生成することができる。しかし、図３Ａに示す目標シグネチャ生成手段310は、アーキテクチャ状態応答308に含まれるアーキテクチャ状態情報のみに基づいて目標シグネチャ312を生成するので、目標シグネチャ312は、テストケース304のシミュレートされた実行中におけるモデル化回路のアーキテクチャ状態に対する変更のみを反映する。これとは対照的に、従来技術の目標シグネチャ112は、アーキテクチャ状態及びマイクロアーキテクチャ状態の双方に対する変更を反映する。
【００４５】
図３Ｂを参照すると、システム320は、回路モデル302を実施するテスト対象回路322（マイクロプロセッサ等）を含む。方法200は、このテスト対象回路322にテストケース304を提供し（ステップ206）、これにより、テスト対象回路322にテストケース304の命令を実行させる。
【００４６】
方法200は、テストケース304の実行中における回路322のアーキテクチャ状態のみに基づいてテストシグネチャ334を生成する（ステップ208）。方法200は、以下のようにしてテストシグネチャ334を生成することができる。テスト対象回路322は、図１Ａのテスト応答108に関して上述した態様でテスト応答342を提供する。テスト応答342は、テストケース304の実行中におけるテスト対象回路322のアーキテクチャ状態及びマイクロアーキテクチャ状態の双方に関する情報を含むことができる。システム320はまた、テスト対象回路322に接続されたアーキテクト状態フィルタ340を含む。該アーキテクト状態フィルタ340は、回路322がテストケース304を実行している間に回路322からテスト応答342を受け取る。該アーキテクト状態フィルタ340は、回路322のマイクロアーキテクチャ状態に関するあらゆる情報をフィルタリング除去して、アーキテクト状態テスト応答324を生成する。このアーキテクト状態テスト応答324は、テストケース304の実行中における回路322のアーキテクト状態のみに関する状態情報を含む。換言すれば、アーキテクト状態テスト応答324は、テストケース304の実行中における回路322のマイクロアーキテクチャ状態に対する変更に関する情報を含まない。アーキテクト状態フィルタ340を実施するために使用することができる回路の例を図４に関して以下で説明する。
【００４７】
システム320はまたシグネチャROSL326を含む。該シグネチャROSL326は、テストシグネチャ生成手段328、及びラッチ332を介してテストシグネチャ生成手段328に接続された実行シグネチャ330を含み、図１Ｂに示すシグネチャROSL126がテストシグネチャ124を生成するのと同様にして、テストシグネチャ334を生成することができる。しかし、図３Ｂに示すシグネチャROSL326は、アーキテクト状態応答324に含まれるアーキテクチャ状態情報のみに基づいてテストシグネチャ334を生成するので、テストシグネチャ334は、テストケース304の実行中における回路322のアーキテクチャ状態に対する変更のみを反映する。これとは対照的に、従来技術のテストシグネチャ124は、アーキテクチャ状態及びマイクロアーキテクチャ状態の双方に対する変更を反映する。
【００４８】
方法200は、テストシグネチャ334が目標シグネチャ312と等しいか否かを判定する（ステップ210）。テストシグネチャ334が目標シグネチャ312と等しい場合には、方法200は、成功を信号で伝え（ステップ212）、そうでない場合には、方法200は、不成功を信号で伝える（ステップ214）。ステップ210〜214は、例えば、比較器336により実施することができる。この比較器336は、テストシグネチャ334を目標シグネチャ312と比較して、２つのシグネチャ312,334が互いに等しいか否かを示す有効信号338を生成する。
【００４９】
図４を参照すると、アーキテクト状態変化が捕捉されて本発明の一実施形態によるアーキテクト状態シグネチャが生成されるマイクロプロセッサ400が図示されている。該マイクロプロセッサ400はレジスタファイル402を含む。該レジスタファイル402は、任意の種類の任意の個数のレジスタを含むことができるが、以下の説明の例では、レジスタファイル402はIPFレジスタファイルであり、このIPFレジスタファイルは128個の64ビットレジスタを含むものと仮定する。IPFアーキテクチャのレジスタファイルは12個の読み出しポートを有する。これら12個の読み出しポートは、図４に示す本発明の実施形態には関連しないので図４には示されていない。
【００５０】
IPFアーキテクチャのレジスタファイルはまた、８個の書き込みポートを含む。図示を容易にするために、このような書き込みポートのうちの４つの書き込みポート404aが図４に示されている。しかし、本書に開示した技術は任意の個数の書き込みポートと共に使用することができる。書き込みポート404aは４つの入力、すなわち、（1）レジスタファイル402のレジスタの１つに書き込まれる64ビット値を受け取るためのデータ入力406a、（2）書き込まれているレジスタの内容が有効でないか否かを示すのに使用される1ビットの「not a thing」（NaT）入力408a、（3）レジスタファイルの128個のレジスタの何れが、データ入力406aで提供されたデータで書き込まれるかを特定する7ビットレジスタIDを受け取るためのレジスタID入力410a、及び（4）入力406aのデータが、入力410aのレジスタIDにより特定されたレジスタに書き込まれる時にアサートされる1ビット書き込みイネーブル入力412aを有する。書き込みポート404b〜404dも、同様に、データ入力406b〜406d、NaT入力408b〜408d、レジスタID入力410b〜410d、及び書き込みイネーブル入力412b〜412dをそれぞれ含む。
【００５１】
図４の特定の書き込みポート入力は単なる例として示されている。以下の説明から明らかなように、本発明の実施形態は、他の種類の入力を有する書き込みポートと共に使用することができる。
【００５２】
マイクロプロセッサ400はまた、シグネチャROSL414a〜414dを含む。これらのシグネチャROSL414a〜414dは、書き込みポート404a〜404dにそれぞれ対応する。ROSL414aは、書き込みイネーブル入力416aを有し、該書き込みイネーブル入力416aは、対応する書き込みポート404aの書き込みイネーブル入力412aに接続されている。また、ROSL414aはデータ入力418aも有し、該データ入力418aは、書き込みポート404aのデータ入力406a、NAT入力408a、及びレジスタID入力410aに接続されている。この例では、データ入力418aは72ビット入力（入力406aのデータ用に64ビット、入力408aのNAT信号用に1ビット、及び書き込みポート404aの入力412aのレジスタID用に7ビット）である。
【００５３】
書き込みポート404aの入力412aに提供される書き込みイネーブル信号は、ROSL414aの書き込みイネーブル入力416aにも提供されるので、ROSL414aは、新たなデータが書き込みポート404aに書き込まれた時、及び書き込まれた時にのみ、シグネチャチェーンを（当該チェーンへの入力としての上述の72ビットのデータを使用して）更新する。更に、プロセッサレジスタの内容に対する変更が一種のアーキテクチャ状態変更であることを想起されたい。ROSL414aがレジスタファイルの書き込みポートに接続され、該書き込みポートがマイクロプロセッサのレジスタに記憶される新たなデータを受け取るので、ROSL414aは、アーキテクチャ状態に対する変更を表すデータのみを受け取る。その結果として、ROSL414aは、アーキテクチャ状態情報にのみ基づいてシグネチャチェーン（シグネチャのサブセット）を生成する。
【００５４】
シグネチャROSL414b〜414dも、同様に、書き込みポート404b〜404dにそれぞれ接続され、したがって、シグネチャROSL414aと同様に動作する。より具体的には、ROSL414bは、書き込みポート404bに書き込まれたアーキテクチャ状態変更を記録し、ROSL414cは、書き込みポート404cに書き込まれたアーキテクチャ状態変更を記録し、ROSL414dは、書き込みポート404dに書き込まれたアーキテクチャ状態変更を記録する。シグネチャROSL414a〜414dにより生成されたシグネチャチェーンは、組み合わせて単一のテストシグネチャ（図３Ｂに示すテストシグネチャ334等）として取り扱うことができる。
【００５５】
マイクロプロセッサ400はまた、マイクロアーキテクチャ回路420を含む。該マイクロアーキテクチャ回路部420は、図示の容易化のためにブロック形式で示されている。該マイクロアーキテクチャ回路部420は、分岐予測履歴を記憶するための回路といった、マイクロプロセッサ400のマイクロアーキテクチャの特徴を実施する任意の回路とすることができる。かかる回路420は、任意の個数の入力及び出力を有することができる。例として、単一のデータ入力422a及び書き込みイネーブル入力422bが図４に示されている。ROSL414a〜414dの何れも、マイクロアーキテクチャ回路420への入力422a,422bに接続されておらず、これにより、ROSL414a〜414dがマイクロプロセッサ400のアーキテクト状態変更のみに基づいてシグネチャを生成することが更に示されていることに留意されたい。
【００５６】
再び図３Ｂを参照し、シグネチャROSL310は、図４に示すように実施されるものと仮定する。この場合、シグネチャROSL414a〜414dを結合したものが、図３Ｂに示す単一のシグネチャROSL310の機能を実行する。この場合、アーキテクト状態フィルタ322は、ROSL414a〜414dを、データ入力406a〜406d、NAT入力408a〜408d、及びレジスタID入力410a〜410dにそれぞれ接続することにより実施される。この接続により、アーキテクト状態変更情報のみがROSL414a〜414dに提供され、これによりマイクロアーキテクチャ状態変更に関する情報が効率的にフィルタリング除去される。
【００５７】
再び図３Ｂを参照する。本発明の一実施形態では、アーキテクト状態変更情報は、アーキテクト状態に対する変更が行われた時にのみテストシグネチャ生成手段328に提供されることを想起されたい。この効果は、図４のマイクロプロセッサ400において、書き込みポート404a〜404dの書き込みイネーブル入力412a〜412dをROSL414a〜414dの書き込みイネーブル入力416a〜416dにそれぞれ接続することにより達成される。かかる構成では、シグネチャは、アーキテクト状態変更を表すデータが、書き込みポート404a〜404dの対応する１つに提供された時に、ROSL414a〜414dにのみ更新される。
【００５８】
本発明の利点は、以下のものの１つ又は２つ以上となる。本書に開示した技術は、アーキテクト状態変更の予測可能なシグネチャの生成及び収集に使用して、ポストシリコン機能的／電気的検証時における内部マイクロプロセッサ状態の観察可能性の増大を可能にすることができるものである。詳細には、アーキテクト状態のみに基づいて目標シグネチャを生成することにより、単一のマイクロプロセッサアーキテクチャの複数のインプリメンテーションのポストシリコンテストを、単一の目標シグネチャを使用して実行することが可能になり、これにより、各インプリメンテーション毎に別個の目標シグネチャを生成する必要がなくなり、また、特定のマイクロプロセッサのインプリメンテーションが、それとは異なるマイクロプロセッサのインプリメンテーションを使用して生成された目標シグネチャでテストされた場合に、該特定のマイクロプロセッサのインプリメンテーションが障害があるものとして誤って認定される可能性が低減され又は除去される。
【００５９】
本書に開示した技術の別の利点は、チップシミュレータ（「サイクル精度シミュレータ（cycle-accurate simulator）」とも呼ばれる）ではなく、アーキテクチャシミュレータを使用して、回路の動作をシミュレーションして目標シグネチャを生成することができることにある。アーキテクチャシミュレータは、回路のアーキテクチャの挙動のみをシミュレートし、より詳細で複雑なマイクロアーキテクチャの挙動はシミュレートしない。その結果として、アーキテクチャシミュレータは、マイクロアーキテクチャシミュレータよりもはるかに高速にシミュレーションを実行し、このため、マイクロアーキテクチャシミュレータよりもはるかに高速に目標シグネチャを生成するのに使用することができ、これにより、全体的な設計時間が削減される。
【００６０】
更に、本書に開示した技術を実施するのに必要な回路は、マイクロアーキテクチャ状態の変更を監視して記録する回路よりも簡単で且つ少ない費用で実施することが可能なものである。状態変更のサブセットのみ、すなわちアーキテクト状態に対する変更を表す状態変更のサブセットのみが、本発明の実施形態で監視され記録されるので、テストシグネチャを生成するのに必要なROSLその他の回路を、マイクロアーキテクチャ状態の変更を監視して記録するインプリメンテーションよりも少なくすることができる。
【００６１】
本発明を特定の実施形態に関して上述してきたが、上記実施形態は単なる例示として提供されているにすぎず、本発明の範囲を限定するものでも画定するものでもないことが理解されるべきである。他の様々な実施形態も特許請求の範囲内に含まれる。かかる他の様々な実施形態には、以下のものが含まれるが、これに限定されるものではない。例えば、本書で説明した要素及びコンポーネントは、更に多くのコンポーネントに分割することもできるし、互いにを結合させて同じ機能を実行する一層少ないコンポーネントを形成することもできる。
【００６２】
上記説明では、XOR機能がシグネチャ機能の例として提供されているが、これは、単なる一例であって、本発明の限定を構成するものではない。しかし、シグネチャ機能は冪等でないことが望ましい。すなわち、シグネチャ機能の複数回の適用により同じシグネチャが生じないことが望ましい。より形式的には、これは数１に示すように表すことができる。
【００６３】
【数１】
2006139781.tif 000003
【００６４】
ここで、
【外１】
【００６５】
2006139781.tif 000004
【００６６】
はシグネチャ機能、Ａはシグネチャ機能への入力（アーキテクト状態変更）、Ｓは累積された（実行又は最終）シグネチャである。シグネチャ機能はまた、非可換となるよう選択することも可能である。より形式的には、これは数２に示すように表すことができる。
【００６７】
【数２】
2006139781.tif 000005
【００６８】
ここで、ＢはＡとは異なる入力である。
【００６９】
上記例では、テスト対象回路は、アーキテクチャシミュレータを使用してシミュレートされるが、これは本発明の要件ではない。回路モデルは、あらゆる種類の回路シミュレータを使用してシミュレートすることができる。例えば、チップシミュレータを使用して回路モデルをシミュレートすることができる。この場合、アーキテクチャ状態に対する変更をチップシミュレータの出力から選択して目標シグネチャを生成することができる。
【００７０】
図３Ｂには、アーキテクチャ状態フィルタが示されているが、本書に開示した技術は、かかるフィルタと共に使用されることに限定されるものではない。例えば、該フィルタは、その入力のサブセットを選択することによりアーキテクチャ状態応答を生成するが、アーキテクチャ状態応答は、このようにして生成される必要はない。システム320は、アーキテクチャ状態に対する変更のみを受け取るよう構成された図４に示すROSL414a〜414d等の１つ又は２つ以上のコンポーネントを含むことが可能であり、この場合には、明示的なフィルタリングを行う必要はない。
【００７１】
本書に開示したアーキテクト状態の特定の例は、単なる例にすぎず、本発明の限定を構成するものではない。例えば、マイクロプロセッサに接続された外部メモリ（例えばRAM又はROM）の状態を、そのマイクロプロセッサのアーキテクト状態の一部と考えることができる。アーキテクト状態として特徴付けることができるメモリロケーションの特徴には、例えば、メモリロケーションの物理アドレス、メモリロケーションのMESI（変更（modified）、排他的（exclusive）、共有（shared）、無効（invalid））状態、及びメモリロケーションに記憶される新たなデータの値が含まれる。当業者には、本書に開示した技術を、外部メモリを含むアーキテクト状態にどのように適用するかが理解されよう。
【００７２】
更に、他のマイクロプロセッサのアーキテクチャとの関連で考えると、上記例でアーキテクチャ状態として特徴付けられる特定の種類の状態（図４の入力408a〜408dに供給されるNaT信号等）をマイクロアーキテクチャ状態と考えることができる。加えて、全てのアーキテクチャ状態変更を監視し及び／又は記録する必要はない。本書に開示した技術は、回路のアーキテクチャ状態変更のサブセットを監視し及び／又は記録するために使用することが可能である。
【００７３】
上記説明では、比較器336がテストシグネチャ334を目標シグネチャ312と比較してそれら２つのシグネチャ334及びシグネチャ312が互いに等しいか否かを判定することが述べられているが、比較器336は、シグネチャ334及びシグネチャ312が厳密に等しいか否かを判定する必要はない。より一般的には、比較器336は、シグネチャ334及びシグネチャ312の双方が同じ一組のアーキテクト状態変更を表すという意味で該シグネチャ334及びシグネチャ312が互いに等価であるか否かを判定することが可能である。実際には、テストシグネチャ334及び目標シグネチャ312は、それらが互いに等しくなくても、上記の意味で等価であるとすることができる。これら２つのシグネチャ334,312は、例えば、異なるフォーマットで状態情報を表すことが可能であり、この場合には、それらが等価であっても互いに等しくはないことになる。
【００７４】
本書では、用語「シミュレートされた回路」は、図３Ａに関して上述した回路モデル302といった回路のソフトウェアモデルを指すものである。本書では、用語「実際の回路」は、図３Ｂに関して上述したテスト対象回路322といった回路の物理的な実施形態を指すものである。
【００７５】
図４のROSL414a〜414dは、書き込みポート404a〜404dに接続されてアーキテクト状態情報を捕捉するが、これは本発明の要件ではない。ROSL414a〜414dは、書き込みポート404a〜404dに加えて又は書き込みポート404a〜404dに代えて、他の回路素子に接続することにより、アーキテクト状態情報を捕捉することが可能である。例えば、ROSL414a〜414dは、レジスタファイル402内の個々のレジスタ又は数群のレジスタに直接接続されて、それらレジスタ又は数群のレジスタに対するアーキテクト状態変更を捕捉することが可能である。
【図面の簡単な説明】
【００７６】
【図１Ａ】回路のテストに使用される目標シグネチャを生成するための従来技術のシステムを示すブロック図である。
【図１Ｂ】図１Ａで生成された目標シグネチャを使用して回路をテストするための従来技術のシステムを示すブロック図である。
【図２】本発明の一実施形態によるマイクロプロセッサをテストするための方法を示すフローチャートである。
【図３Ａ】図２の方法を実行するために使用することができるシステムを示すブロック図である。
【図３Ｂ】図２の方法を実行するために使用することができるシステムを示すブロック図である。
【図４】アーキテクチャ状態の変更を捕捉して本発明の一実施形態によるアーキテクチャ状態シグネチャを生成するマイクロプロセッサを示す回路図である。
【符号の説明】
【００７７】
302  第２のマイクロプロセッサ
304  第３の複数の信号
308  第２の複数の信号
312  目標アーキテクト状態シグネチャ
322  第１のマイクロプロセッサ
324  第１の複数の信号
334  テストアーキテクト状態シグネチャ
400  マイクロプロセッサ
402  レジスタファイル
404a〜404d  書き込みポート
406a〜406d  レジスタデータ入力
412a〜412d  レジスタ書き込みイネーブル入力
414a〜414d  シグネチャROSL
416a〜416d  ROSL書き込みイネーブル入力
418a〜418d  ROSLデータ入力
420  マイクロアーキテクチャ回路
【図１Ａ】
2006139781.tif 000006
【図１Ｂ】
2006139781.tif 000007
【図２】
2006139781.tif 000008
【図３Ａ】
2006139781.tif 000009
【図３Ｂ】
2006139781.tif 000010
【図４】
2006139781.tif 000011