(57)【要約】【課題】プロセッサの機能検査に必要な命令コードを漏れなく自動的に生成し、かつ、この命令コードを実行してもプロセッサが暴走することなく、かつ、短時間でプロセッサの機能検査を終えることのできるプロセッサ検査装置及びその方法を提供すること。【解決手段】パターン生成部１０１によって自動的に生成された同一の命令コードを期待値発生部１０４とプロセッサ１０３とで並行に実行して、それぞれの実行結果を比較部１０５で比較することによってプロセッサの不具合を検出する。【選択図】      図１
2005011031.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令コードを自動的に生成するパターン生成手段と、
前記命令コードを実行して期待値を生成する期待値発生手段と、
前記命令コードを実行してその実行結果を出力するプロセッサと、
前記期待値発生手段により生成された前記期待値と前記プロセッサによる前記実行結果とを比較して、同一の前記命令コードについての前記期待値と前記実行結果との差異を検出する比較手段と、を具備することを特徴とするプロセッサ検査装置。
【請求項２】
前記パターン生成手段により生成された前記命令コードを前記プロセッサ及び前記期待値発生手段にダウンロードし、かつ、前記比較手段により同一の前記命令コードについての前記期待値と前記実行結果とに差異が検出されたときに前記プロセッサを初期化するダウンロード制御手段を具備することを特徴とする請求項１記載のプロセッサ検査装置。
【請求項３】
前記比較手段により同一の前記命令コードについての前記期待値と前記実行結果とに差異が検出されたときに、この差異が生じた命令コードを特定する情報を記録する不具合検出位置格納手段を具備することを特徴とする請求項１又は請求項２に記載のプロセッサ検査装置。
【請求項４】
前記パターン生成手段は、前記命令コードの領域毎にコードテーブル又はカウンタを有し、前記コードテーブルに含まれるコード又は前記カウンタのカウント値を読み出して命令コードを自動的に生成することを特徴とする請求項１から請求項３のいずれかに記載のプロセッサ検査装置。
【請求項５】
前記パターン生成手段は、
複数の前記命令コードをその生成された時刻別に保持する保持手段と、
前記保持手段に保持された生成時刻が異なる二つの前記命令コードを対比して、前記命令コード間にプロセッサでパイプラインハザードを発生させる関係を検出する対比手段と、
前記パイプラインハザードを発生させる関係が検出されたときに、対比された二つの命令コードの内いずれかを他の命令コードに置き換えて出力する選択手段と、を具備することを特徴とする請求項１から請求項４のいずれかに記載のプロセッサ検査装置。
【請求項６】
前記パターン生成手段は、
複数の前記命令コードをその生成された時刻別に保持する保持手段と、
前記保持手段に保持された生成時刻が異なる二つの前記命令コードを対比して、前記命令コード間にプロセッサでパイプラインハザードを発生させる関係を検出する対比手段と、
前記パイプラインハザードを発生させる関係が検出されたときに、対比された二つの命令コードの内いずれかの出力されるタイミングを調整する選択手段と、を具備することを特徴とする請求項１から請求項４のいずれかに記載のプロセッサ検査装置。
【請求項７】
前記パターン生成手段は、
複数の文字列を格納する複数のテーブルと、
前記テーブルに格納される前記文字列を選択して合成し命令コードを生成する命令コード生成手段と、
前記命令コードにアセンブリを行うことによって前記命令コードがプロセッサで実行可能か判定し、実行可能と判定された場合に限り、アセンブリを施された前記命令コードを出力するアセンブラ手段と、を具備することを特徴とする請求項１から請求項６のいずれかに記載のプロセッサ検査装置。
【請求項８】
前記プロセッサは、実行される命令コードに応じて、出力される実行結果が格納されるレジスタを選択するテスト回路を具備することを特徴とする請求項１から請求項７のいずれかに記載のプロセッサ検査装置。
【請求項９】
前記プロセッサは、前記命令コードの実行結果と伴にクロックトリガーを出力し、
前記期待値発生手段は、入力されてくる前記クロックトリガーが変化するタイミングに基づいて前記期待値を出力する、ことを特徴とする請求項１から請求項８のいずれかに記載のプロセッサ検査装置。
【請求項１０】
複数の命令コードを自動的に生成するパターン生成ステップと、
前記命令コードを実行して期待値を生成する期待値発生ステップと、
前記期待値発生ステップと並行して前記命令コードをプロセッサで実行し、その実行結果を出力する実行結果出力ステップと、
前記期待値と前記実行結果とを比較して、同一の前記命令コードに対する前記期待値と前記実行結果との差異を検出する比較ステップと、を具備することを特徴とするプロセッサ検査方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサの機能検査のための検査装置及びその方法に関する。
【０００２】
【従来の技術】
従来、半導体デバイスの機能検査では、複数の命令の組み合わせで構成される命令コードが複数パターン用意され、このテストパターンが半導体デバイスで実際に実行されることにより、半導体デバイスの不具合点が検出される。このテストパターンは、通常は半導体デバイスの構成に応じて設計者の経験に基づいて作成される。
【０００３】
しかし、半導体デバイスが大規模になるに従って、機能検査を行うべき命令コードの数が多くなるため、設計者の経験に基づいてテストパターンを作成する場合には、必要な命令コードを網羅することが困難となり、検査漏れを生じる可能性が高くなる。
【０００４】
そこで、乱数発生モジュールを用いてランダムなテストパターンを自動的に生成するパターン生成器を具備する半導体デバイスの検査装置が開発されている（例えば、特許文献１参照）。
【０００５】
【特許文献１】
特開平１１−１８４６７８号公報
【０００６】
【発明が解決しようとする課題】
ところが、特許文献１に記載の半導体デバイスの検査装置では、乱数発生モジュールによってランダムな命令コードが生成されるため、半導体デバイスで定義されていない命令コードが生成されて実行されることになる。その結果、半導体デバイスが暴走してしまう問題がある。
【０００７】
また、特許文献１に記載の半導体デバイスの検査装置では、多数の命令コードに対する期待値が生成され蓄積された後に、半導体デバイスで前記命令コードが実行され、その実行結果が蓄積された前記期待値と逐次比較されることによって半導体デバイスの機能検査が行われる。そのため、特許文献１に記載の半導体デバイスの検査装置では、機能検査に膨大な時間を要する問題がある。
【０００８】
本発明はかかる点に鑑みてなされたものであり、プロセッサの機能検査に必要な命令コードを漏れなく自動的に生成し、かつ、この命令コードを実行してもプロセッサが暴走することなく、かつ、短時間でプロセッサの機能検査を終えることのできるプロセッサ検査装置及びその方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明に係るプロセッサ検査装置は、複数の命令コードを自動的に生成するパターン生成手段と、前記命令コードを実行して期待値を生成する期待値発生手段と、前記命令コードを実行してその実行結果を出力するプロセッサと、前記期待値発生手段により生成された前記期待値と前記プロセッサによる前記実行結果とを比較して、同一の前記命令コードについての前記期待値と前記実行結果との差異を検出する比較手段と、を具備する構成を採る。
【００１０】
この構成によれば、検査対象であるプロセッサと比較対象である期待値発生手段とにおいて命令コードが並行して実行され、かつ、プロセッサによる実行結果と期待値発生手段による期待値とが比較手段により比較されるため、検査に要する時間を短縮することができる。
【００１１】
本発明に係るプロセッサ検査装置は、前記発明において、前記パターン生成手段により生成された前記命令コードを前記プロセッサ及び前記期待値発生手段にダウンロードし、かつ、前記比較手段により同一の前記命令コードについての前記期待値と前記実行結果とに差異が検出されたときに前記プロセッサを初期化するダウンロード制御手段を具備する構成を採る。
【００１２】
この構成によれば、前記発明による効果に加えて、プロセッサに不具合が検出されたときに、ダウンロード制御手段によってプロセッサが自動的に初期化されるため、この不具合点の検出によってもプロセッサが暴走することなく、次の命令コードがプロセッサで自動的に実行されることから、テストパターンに含まれる全ての命令コードを中断することなく自動的に実行することができる。
【００１３】
本発明に係るプロセッサ検査装置は、前記発明において、前記比較手段により同一の前記命令コードについての前記期待値と前記実行結果とに差異が検出されたときに、この差異が生じた命令コードを特定する情報を記録する不具合検出位置格納手段を具備する構成を採る。
【００１４】
この構成によれば、前記発明による効果に加えて、プロセッサで実行されたときに不具合を生じた命令コードについての情報が不具合検出位置格納手段に自動的に蓄積されるため、プロセッサの不具合点を容易に特定することができる。
【００１５】
本発明に係るプロセッサ検査装置は、前記発明において、前記パターン生成手段は、前記命令コードの領域毎にコードテーブル又はカウンタを有し、前記コードテーブルに含まれるコード又は前記カウンタのカウント値を読み出して命令コードを自動的に生成する構成を採る。
【００１６】
この構成によれば、前記発明による効果に加えて、命令コードの領域毎にコードテーブル又はカウンタが用意され、これらを用いて各領域に当て嵌められる命令が総当りで組み合わされて命令コードが生成されるため、プロセッサで実行可能な命令コードが漏れなく生成される。さらに、この構成によれば、複数のコードテーブルからコードを読み出して又は複数のカウンタからカウンタ値を読み出して合成することによって命令コードを生成する、即ちランダムな命令コードが生成されないため、プロセッサで定義されていない命令コードが生成されることを防止でき、その結果プロセッサの暴走を効果的に抑制することができる。
【００１７】
本発明に係るプロセッサ検査装置は、前記発明において、前記パターン生成手段は、複数の前記命令コードをその生成された時刻別に保持する保持手段と、前記保持手段に保持された生成時刻が異なる二つの前記命令コードを対比して、前記命令コード間にプロセッサでパイプラインハザードを発生させる関係を検出する対比手段と、前記パイプラインハザードを発生させる関係が検出されたときに、対比された二つの命令コードの内いずれかを他の命令コードに置き換えて出力する選択手段と、を具備する構成を採る。
【００１８】
この構成によれば、前記発明による効果に加えて、選択手段によりパイプラインハザードを発生させる要因が取り除かれた命令コードのみがプロセッサに出力されるため、プロセッサでのパイプラインハザードの発生を根絶することができる。
【００１９】
本発明に係るプロセッサ検査装置は、前記発明において、前記パターン生成手段は、複数の前記命令コードをその生成された時刻別に保持する保持手段と、前記保持手段に保持された生成時刻が異なる二つの前記命令コードを対比して、前記命令コード間にプロセッサでパイプラインハザードを発生させる関係を検出する対比手段と、前記パイプラインハザードを発生させる関係が検出されたときに、対比された二つの命令コードの内いずれかの出力されるタイミングを調整する選択手段と、を具備する構成を採る。
【００２０】
この構成によれば、前記発明による効果に加えて、パターン生成手段からプロセッサで実行可能な全ての命令コードがパイプラインハザードを発生させる関係を解消された上で出力されるため、プロセッサでのパイプラインハザードの発生を根絶しつつ、プロセッサの機能検査漏れも回避することができる。
【００２１】
本発明に係るプロセッサ検査装置は、前記発明において、前記パターン生成手段は、複数の文字列を格納する複数のテーブルと、前記テーブルに格納される前記文字列を選択して合成し命令コードを生成する命令コード生成手段と、前記命令コードにアセンブリを行うことによって前記命令コードがプロセッサで実行可能か判定し、実行可能と判定された場合に限り、アセンブリを施された前記命令コードを出力するアセンブラ手段と、を具備する構成を採る。
【００２２】
この構成によれば、前記発明による効果に加えて、アセンブラ手段によってプロセッサで実行可能な命令コードのみが選択されるため、プロセッサの暴走を効果的に抑制することができる。
【００２３】
本発明に係るプロセッサ検査装置は、前記発明において、前記プロセッサは、実行される命令コードに応じて、出力される実行結果が格納されるレジスタを選択するテスト回路を具備する構成を採る。
【００２４】
この構成によれば、前記発明による効果に加えて、命令コードの実行結果が格納されるレジスタをテスト回路が常時把握しているため、プロセッサに不具合を生じさせた命令コードを容易に特定できる。
【００２５】
本発明に係るプロセッサ検査装置は、前記発明において、前記プロセッサは、前記命令コードの実行結果と伴にクロックトリガーを出力し、前記期待値発生手段は、入力されてくる前記クロックトリガーが変化するタイミングに基づいて前記期待値を出力する構成を採る。
【００２６】
この構成によれば、期待値発生手段において生成された期待値がその内部メモリに一時格納され、プロセッサが実行結果を出力する予告信号となるクロックトリガーの変化に応じてこの期待値が期待値発生手段から読み出されるため、プロセッサのクロック周波数と期待値発生手段のクロック周波数とが非同期であっても、プロセッサからの実行結果の出力タイミングと期待値発生手段からの期待値の出力タイミングとを同期させることができる。
【００２７】本発明に係るプロセッサ検査方法は、複数の命令コードを自動的に生成するパターン生成ステップと、前記命令コードを実行して期待値を生成する期待値発生ステップと、前記期待値発生ステップと並行して前記命令コードをプロセッサで実行し、その実行結果を出力する実行結果出力ステップと、前記期待値と前記実行結果とを比較して、同一の前記命令コードに対する前記期待値と前記実行結果との差異を検出する比較ステップと、を具備するようにした。
【００２８】
この方法によれば、期待値発生ステップと実行結果出力ステップが並行して実行されるため、プロセッサの機能検査に要する時間を短縮することができる。
【００２９】
【発明の実施の形態】
本発明の骨子は、パターン生成手段によって自動的に生成された同一の命令コードを期待値発生手段とプロセッサとで並行に実行して、それぞれの実行結果を比較手段で比較することによってプロセッサの不具合を検出することである。
【００３０】
以下、本発明の実施の形態について、図面を参照しつつ詳細に説明する。
【００３１】
（実施の形態１）
図１は、本発明の実施の形態１に係るプロセッサ検査装置１００の構成を示すブロック図である。
【００３２】
このプロセッサ検査装置１００は、パターン生成部１０１、ダウンロード制御部１０２、プロセッサ１０３、期待値発生部１０４、比較部１０５及び不具合検出位置格納部１０６を具備する。
【００３３】
パターン生成部１０１は、プロセッサ１０３において実行可能な全ての命令コードを生成する。パターン生成部１０１の具体的構成及び機能については後述する。
【００３４】
ダウンロード制御部１０２は、パターン生成部１０１で生成された命令コードを取得して、この命令コードをプロセッサ１０３及び期待値発生部１０４に出力する。
【００３５】
プロセッサ１０３は、ダウンロード制御部１０２から出力されてくる命令コードを実行し、その実行結果を比較部１０５に出力する。
【００３６】
期待値発生部１０４は、市販の命令シミュレータ等で構成され、ダウンロード制御部１０２から出力されてくる命令コードを実行して、その実行結果である期待値を生成して出力する。
【００３７】
比較部１０５は、同一の命令コードについてのプロセッサ１０３の実行結果と期待値発生部１０４の期待値とを比較し、これらの差異を検出して出力する。
【００３８】
不具合検出位置格納部１０６は、比較部１０５において同一の命令コードについての前記実行結果と前記期待値とに差異が検出されたときに、その命令コード及び命令コードについての情報を格納する。
【００３９】
図２は、プロセッサ１０３の具体的構成を示すブロック図である。
【００４０】
プロセッサ１０３は、命令メモリ２０１、命令レジスタ２０２、ＩＰ（インストラクションポインタ）レジスタ２０３、命令デコーダ２０４、レジスタファイル２０５、ソース１レジスタ２０６、ソース２レジスタ２０７、演算器２０８、メモリステージレジスタ２０９、メモリ入力レジスタ２１０、データメモリ２１１、レジスタライトステージ・データレジスタ２１２を具備する。
【００４１】
プロセッサ１０３は、命令フェッチ（ＰＦ）ステージ、デコード（ＤＥＣ）ステージ、実行（ＥＸ）ステージ、メモリアクセス（ＭＡ）ステージ及びレジスタライト（ＲＷ）ステージの５段のパイプラインで命令コードを構成する各命令を実行する。
【００４２】
ＰＦステージでは、ＩＰレジスタ２０３に従って命令メモリ２０１から命令コードが読み出され、この命令コードが命令レジスタ２０２に格納される。ＤＥＣステージでは、ＰＦステージで読み出された命令コードが命令デコーダ２０４でデコードされ、そのデコード結果に従って各命令で使用されるレジスタがレジスタファイル２０５から選択されて、それぞれソース１レジスタ２０６とソース２レジスタ２０７に前記選択されたレジスタの値が格納される。ＥＸステージでは、ＤＥＣステージでデコードされた制御情報に従ってレジスタファイル２０５から選択されたレジスタの値（命令に相当する）を演算器２０８で実行し、実行結果をメモリステージレジスタ２０９に格納すると伴に、データメモリ２１１にアクセスするデータロード命令とデータストア命令との場合には、演算器２０８の出力をデータメモリ２１１にアクセスするためのアドレスとしてメモリ入力レジスタ２１０に出力する。ＭＡステージでは、メモリロードの場合には、データメモリ２１１から読み出されたレジスタの値が次のクロックでレジスタライトステージ・データレジスタ２１２に格納され、その他の命令の場合には、メモリステージレジスタ２０９の値が次のクロックでレジスタライトステージ・データレジスタ２１２に格納され、ストア命令の場合には、データメモリ２１１にアクセスする。ＲＷステージでは、ディスティネーションレジスタへの書き込みが有効な場合には、命令デコーダ２０４でデコードされたレジスタファイル２０５内のディスティネーションレジスタ番号で指定されるレジスタにレジスタライトステージ・データレジスタ２１２の値が書き込まれる。
【００４３】
次いで、プロセッサ１０３の動作について説明する。以下、プロセッサ１０３の代表的な命令として、加算命令（ａｄｄ）、乗算命令（ｍｕｌ）、データメモリロード命令（ｌｏａｄ）、データメモリストア命令（ｓｔｏｒｅ）及びジャンプ命令（ｊｕｍｐ）が用意されている場合について説明する。
【００４４】
図３に、１２ビットで構成されるプロセッサ１０３の命令フィールドを示す。命令フィールドの内訳は、１１〜９ビットが命令領域、８〜６ビットはディスティネーション（ｄｓｔ）領域、５〜３ビットがソース１（ｓｒｃ１）領域、２〜０ビットがソース２（ｓｒｃ２）領域である。なお、本実施の形態では、ソース２領域、ソース１領域及びディスティネーション領域で指定可能なレジスタをＲ０、Ｒ１、Ｒ２及びＲ３とする。
【００４５】
加算命令（ａｄｄ）即ち命令領域が｛００１｝のときには、プロセッサ１０３は、ｓｒｃ１領域で指定されるレジスタの値とｓｒｃ２領域で指定されるレジスタの値とを加算して、この加算値をｄｓｔ領域で指定されるレジスタへ書き込む。
【００４６】
乗算命令（ｍｕｌ）即ち命令領域が｛０１１｝のときには、プロセッサ１０３は、ｓｒｃ１領域で指定されるレジスタの値とｓｒｃ２領域で指定されるレジスタの値とを乗算して、この乗算値をｄｓｔ領域で指定されるレジスタへ書き込む。
【００４７】
データメモリロード命令（ｌｏａｄ）即ち命令領域が｛１０１｝のときには、プロセッサ１０３は、ｓｒｃ１領域で指定されるレジスタの値をアドレスとするデータメモリ２１１中のデータを読み出し、この読み出されたデータをｄｓｔ領域で指定されるレジスタへ書き込む。
【００４８】
データメモリストア命令（ｓｔｏｒｅ）即ち命令領域が｛１１０｝のときには、プロセッサ１０３は、ｓｒｃ１領域で指定されるレジスタの値をアドレスとするデータメモリ２１１中のデータを読み出し、この読み出されたデータをｓｒｃ２領域で指定されるレジスタの値をアドレスとするデータメモリ２１１のレジスタへ書き込む。
【００４９】
ジャンプ命令（ｊｕｍｐ）即ち命令領域が｛１１１｝のときには、プロセッサ１０３は、ｓｒｃ１領域で指定されるレジスタの値を読み出し、このレジスタの値をジャンプ先アドレスとしてジャンプを行う。
【００５０】
図４に、パターン生成部１０１の具体的構成を示す。パターン生成部１０１は、プロセッサ１０３の命令フィールド毎に使用されるコードが格納される４つのテーブル４０１、４０２、４０３及び４０４、並びにｄｓｔ出力用命令コード生成部４０６を具備する。
【００５１】
命令テーブル４０１には、各命令（ａｄｄ、ｍｕｌ、ｌｏａｄ、ｓｔｏｒｅ又はｊｕｍｐ）に対応する３ビットのコードパターンが格納される。ｄｓｔテーブル４０２には、ディスティネーションとして指定可能なレジスタＲ０からＲ３に対応する３ビットのコードパターンが、ｓｒｃ１テーブル４０３には、ｓｒｃ１領域として指定可能なＲ０からＲ３に対応する３ビットのコードパターンが、ｓｒｃ２テーブル４０４には、ｓｒｃ２領域として指定可能なＲ０からＲ３に対応する３ビットのコードパターンがそれぞれ格納される。
【００５２】
次いで、命令コードが生成される際のパターン生成部１０１の動作について説明する。
【００５３】
先ず、命令テーブル４０１にポインタｐ０を、ｄｓｔテーブル４０２にポインタｐ１を、ｓｒｃ１テーブル４０３にポインタｐ２を、並びにｓｒｃ２テーブル４０４にポインタｐ３をそれぞれ設定する。
【００５４】
次に、下記式１で表される動作に従って順次ポインタが更新されることによって各テーブルから命令フィールドの領域毎に命令が読み出される。そして、領域毎に読み出されたコードが合成されることによって１２ビットの命令コードが生成される。
【００５５】
2005011031.tif 000003
【００５６】
初期状態においては、ｐ０＝０、ｐ１＝０、ｐ２＝０及びｐ３＝０であるため、生成される１２ビットの命令コードは、｛００１  ００１  ００１  ００１｝となる。次の状態では、ｐ０＝０、ｐ１＝０、ｐ２＝０及びｐ３＝１となるため、生成される１２ビットの命令コードは、｛００１  ００１  ００１  ０１０｝となる。このように、ｐ０＝４、ｐ１＝３、ｐ２＝３及びｐ３＝３となるまで各領域のコードが更新されれば、全ての命令コードが生成されることになる。なお、ｄｓｔ領域乃至ｓｒｃ２領域が使用されない命令の場合は、その使用されない領域に全て｛０｝を入力して各テーブルのポインタが更新されないように制御してもよい。また、ポインタの更新方法は、全ての命令コードが生成されるように各テーブルからコードが出力されれば、特に限定されるものではない。
【００５７】
この１２ビットの命令コードは、生成され次第パターン生成部１０１からダウンロード制御部１０２に逐次出力される。この１２ビットの命令コードの出力に際して、命令コードがｄｓｔ領域を使用する場合には、ｄｓｔ出力用命令コード生成部４０６において、この命令コードの実行結果を外部レジスタに出力させるための命令（以下、この命令を「ｄｓｔ出力用命令コード」という）が生成される。具体的には、「ａｄｄ  Ｒ０，Ｒ１，Ｒ２」の１２ビットの命令コードが生成された場合に、この命令コードのｄｓｔ領域で選択されたＲ０に対応する外部レジスタに出力するために、ｄｓｔ出力用命令コード生成部４０６において「ｓｔｏｒｅ  （外部レジスタ），Ｒ０」のｄｓｔ出力用命令コードが生成される。
【００５８】
ｄｓｔ出力用命令コードは、対応する１２ビットの命令コードと伴にパターン生成部１０１からダウンロード制御部１０２に出力される。１２ビットの命令コードとｄｓｔ出力用命令コードは、ダウンロード制御部１０２からプロセッサ１０３及び期待値発生部１０４に出力され、プロセッサ１０３及び期待値発生部１０４においてそれぞれ実行された後に、１２ビットの命令コードの実行結果がプロセッサ１０３及び期待値発生部１０４それぞれからｄｓｔ出力用命令コードに従って外部レジスタ例えば比較部１０５に出力される。そして、プロセッサ１０３における１２ビットの命令コードの実行結果と、期待値発生部１０４における１２ビットの命令コードの実行結果即ち期待値と、がｄｓｔ出力用命令コードで指定された比較部１０５において比較されることによってプロセッサ１０３の機能検査が行われる。
【００５９】
また、図５に、パターン生成部１０１における４つのテーブル４０１、４０２、４０３及び４０４に相当する構成部がそれぞれ、カウンタ５０１、５０２、５０３及び５０４である場合の例を示す。この場合は、１２ビットの命令コードにおける各領域が各カウンタのカウント値で表現される。５進カウンタ５０１は命令テーブル４０１と同等の機能を発揮し、同様に４進カウンタ５０２はｄｓｔテーブル４０２、４進カウンタ５０３はｓｒｃ１テーブル４０３、並びに４進カウンタ５０４はｓｒｃ２テーブル４０４と同等の機能を発揮する。そして、これらカウンタのカウント値を合成することにより１２ビット命令コード５０５が生成される。
【００６０】
次いで、図５に示すカウンタを具備するパターン生成部５００の動作について説明する。先ず、５進カウンタ５０１、４進カウンタ５０２、４進カウンタ５０３及び４進カウンタ５０４のカウント値がそれぞれ｛０００  ０００  ０００  ０００｝であるときに、４進カウンタ５０４のカウント値が｛０００｝から｛００１｝→｛０１０｝→｛０１１｝へと順次変化する。そして、４進カウンタ５０４がオーバーフローすると、４進カウンタ５０４のカウント値は初期状態｛０００｝に戻り、これに伴い４進カウンタ５０３のカウント値が｛００１｝に変化する。さらに、４進カウンタ５０４がオーバーフローする毎に、４進カウンタ５０３のカウント値が｛００１｝から｛０１０｝さらには｛０１１｝へと順次変化する。このように４進カウンタ５０４から５進カウンタ５０１に向かって各カウンタのカウント値が順次繰り上がり、５進カウンタ５０１がオーバーフローするまで各カウンタのカウント値が変化すれば、各カウンタのカウント値が全て表現されて、１２ビットの命令コードの全種類が生成されることになる。
【００６１】
次に、プロセッサ１０３の命令フィールドの各領域における命令の組み合わせによってはプロセッサ１０３においてパイプラインハザードが発生するおそれがあるため、その回避方法について図６及び図７を用いて説明する。
【００６２】
図６に、プロセッサ１０３における各パイプラインで実行される命令についてのタイムチャートを示す。先ず、ある時刻ｎにおいて命令コード「ａｄｄ  Ｒ０，Ｒ１，Ｒ２」がプロセッサ１０３の各パイプラインで実行されるものとする。この命令コードでは、パイプラインのＤＥＣステージでディスティネーションとしてレジスタＲ０に格納された値が選択され、同様にソース１及びソース２にそれぞれレジスタＲ１に格納された値及びレジスタＲ２に格納された値が選択される。そして、レジスタＲ１の値とレジスタＲ２の値との加算結果がパイプラインのＲＷステージ（図６の矢印で示すタイミング）でレジスタＲ０に格納される。
【００６３】
次に、時刻ｎ＋１において命令コード「ｌｏａｄ  Ｒ４，（Ｒ０）」が実行されるものとする。この命令コードでは、パイプラインのＭＡステージにおいてソースとして選択されたレジスタＲ０に格納された値をアドレスとするデータメモリ２１１にアクセスが行われ、このアクセスによって読み出された結果がパイプラインのＲＷステージにおいてディスティネーションとして選択されたレジスタＲ４に格納される。ここで、時刻ｎ＋１の命令コードにおけるソースとして選択されたレジスタＲ０の値は、前記時刻ｎにおける命令コードの実行により更新された後の値であるべきだが、この時刻ｎにおける命令コードの実行によるレジスタＲ０の更新タイミングがパイプラインのＲＷステージであるため、時刻ｎ＋１の命令コードが実行されるときには、レジスタＲ０の値が未だ更新前の値である。そのため、時刻ｎ＋１の命令コードが実行されると、更新前のレジスタＲ０の値が示すアドレスに基づいてメモリアクセスが行われることになる。また、時刻ｎ＋２及び時刻ｎ＋３における命令コードのソースとしてレジスタＲ０が選択される場合も同様に、時刻ｎにおける命令コードの実行によるレジスタＲ０の更新タイミング（ＲＷステージの最後の上がりエッジ）より前にそれぞれの命令コードのＤＥＣステージが現れることから、レジスタＲ０の更新前の値に基づいてそれぞれの命令コードが実行されることとなる。従って、時刻ｎにおける命令コードのｄｓｔ領域で選択されたレジスタについて、そのレジスタの更新後の値を命令コードのソースとして利用できるのは、時刻ｎ＋４における命令コードからとなる。即ち、時刻ｎにおける命令コードのｄｓｔ領域で指定されたレジスタを命令コードのソースとして利用する場合には、時刻ｎにおける命令コードと時刻ｎ＋１から時刻ｎ＋３までにおける命令コードとの間にパイプラインハザードが発生することになる。
【００６４】
図７は、前記パイプラインハザードを回避するためのパターン生成部７００の構成を示すブロック図である。また、図８に、パターン生成部７００の各構成部に入力される命令コードのタイムチャートと、各構成部間で命令コードを対比したときの信号入出力のタイムチャートとを示す。
【００６５】
以下、時刻ｎにおける命令コードと後続の命令コードとの間でパイプラインハザードが発生した場合の回避方法について、時刻ｎから時刻ｎ＋４までの命令コードが下記「表１」の構成であるとして説明する。
【００６６】
2005011031.tif 000004
【００６７】
先ず、時刻ｎでは、プロセッサ１０３の命令フィールド毎に用意されたコードテーブルに基づいて生成された１２ビットの命令コードｎが１２ビット命令コードレジスタ７０１に格納される。
【００６８】
続いて、時刻ｎ＋１では、命令コードｎと時刻ｎ＋１で生成される命令コードｎ＋１との間で発生するパイプラインハザードの検出が行なわれる。時刻ｎ＋１では、命令コードｎが第１のレジスタ７０２に転送されると伴に、命令コードｎ＋１が１２ビット命令コードレジスタ７０１に格納される。このとき対比部７６１では、命令コードｎ＋１のｓｒｃ１領域の｛０１１｝と命令コードｎのｄｓｔ領域の｛００１｝とが対比され、また対比部７６２では、命令コードｎ＋１のｓｒｃ２領域の｛ｘｘｘ｝と命令コードｎのｄｓｔ領域の｛００１｝とが対比される。対比される前記コードが一致すれば、その対比部は｛１｝を出力する。しかし、前記２組のコードはどちらも一致しないため、対比部７６１及び対比部７６２はそれぞれ｛０｝を出力する。これらの出力値｛０｝は共に、ＯＲゲート７７１を介して３段シフトレジスタ（ＳＲ）７８１に入力される。
【００６９】
続いて、時刻ｎ＋２では、命令コードｎと時刻ｎ＋２で生成される命令コードｎ＋２との間で発生するパイプラインハザードの検出が行われる。時刻ｎ＋２では、命令コードｎが第２のレジスタ７０３に転送されると伴に、命令コードｎ＋２が１２ビット命令コードレジスタ７０１に格納される。このとき、対比部７６３では、命令コードｎ＋２のｓｒｃ１領域の｛００１｝と命令コードｎのｄｓｔ領域の｛００１｝とが比較される。また、対比部７６４では、命令コードｎ＋２のｓｒｃ２領域の｛ｘｘｘ｝と命令コードｎのｄｓｔ領域の｛００１｝とが対比される。ここで、対比部７６３において、命令コードｎ＋２のｓｒｃ１領域の｛００１｝と命令コードｎのｄｓｔ領域の｛００１｝とが一致するため、命令コードｎと命令コードｎ＋２との間ではパイプラインハザードが生じることになる。そこで、対比部７６３から｛１｝が出力されて、この出力値｛１｝がＯＲゲート７７２に入力される。また、対比部７６４から｛０｝が出力されて、この出力値｛０｝もＯＲゲート７７２に入力される。
【００７０】
続いて、時刻ｎ＋３では、命令コードｎと時刻ｎ＋３で生成される命令コードｎ＋３との間で発生するパイプラインハザードの検出が行われる。時刻ｎ＋３では、命令コードｎが第３のレジスタ７０４に転送され、また命令コードｎ＋３が１２ビット命令コードレジスタ７０１に格納される。また時刻ｎ＋３では、時刻ｎ＋２においてＯＲゲート７７２に入力された出力値｛１｝が２段ＳＲ７８２の１段目に入力される。このとき、対比部７６５では、命令コードｎ＋３のｓｒｃ１領域の｛０１１｝と命令コードｎのｄｓｔ領域の｛００１｝とが対比され、また対比部７６６では、命令コードｎ＋２のｓｒｃ２領域の｛０１０｝と命令コードｎのｄｓｔ領域の｛００１｝とが対比される。対比される前記コードが一致すれば、その比較部から｛１｝が出力されるが、前記２組のコードはどちらも一致しないため、対比部７６５、７６６からは共に｛０｝が出力される。そして、これらの出力値｛０｝は、ＯＲゲート７７３を介して１段ＳＲ７８３に入力される。
【００７１】
続いて、時刻ｎ＋４では、命令コードｎが第４のレジスタ７０５に格納された後にセレクタ７１１に出力される。この命令コードｎの出力と並行して、ＮＯＰ（Ｎｏ−ＯＰｅｒａｔｉｏｎ）命令コードがレジスタ７１０からセレクタ７１１に入力される。このとき、２段ＳＲ７８２の２段目には、時刻ｎ＋２において検出されたパイプラインハザード信号が入力される。そして、このパイプラインハザード信号は、２段ＳＲ７８２からＯＲゲート７０９に出力される。ＯＲゲート７０９では、命令コードｎと後続する３つの命令コードｎ＋１、命令コードｎ＋２及び命令コードｎ＋３との間にパイプラインハザードが検出されると、信号｛１｝が生成され、この信号｛１｝がセレクタ選択信号としてセレクタ７１１に出力される。このセレクタ選択信号が入力されたとき、セレクタ７１１は、命令コードｎではなくレジスタ７１０のＮＯＰ命令コードをダウンロード制御部１０２に出力する。従って、上記の例では、命令コードｎと命令コードｎ＋２との間にパイプラインハザードが生じているため、セレクタ７１１から出力される命令コードは、命令コードｎ「ａｄｄ  Ｒ０，Ｒ１，Ｒ２」ではなく、ＮＯＰ命令コード｛０００  ０００  ０００  ０００｝となる。このようにパターン生成部１０１が命令コードを選択して出力すれば、プロセッサ１０３におけるパイプラインハザードの発生を確実に防止することができる。
【００７２】
命令コードｎに後続する命令コードについても、上記の手順を繰り返すことにより、プロセッサ１０３におけるパイプラインハザードの発生を確実に回避することができる。
【００７３】
次いで、プロセッサ検査装置１００の動作について、図９に示すフロチャートを用いて説明する。
【００７４】
先ず、ステップＳ９１０では、パターン生成部１０１において命令コードが順次生成され、この命令コードがダウンロード制御部１０２に逐次出力される（Ｓ９１０）。
【００７５】
続いて、ステップＳ９２０では、ダウンロード制御部１０２がプロセッサ１０３の命令メモリ２０１と期待値発生部１０４とに同一の命令コードを所定サイズ分ダウンロードする。また、ステップＳ９２０では、ダウンロード制御部１０２がプロセッサ１０３内の全メモリ領域とレジスタを初期化する（Ｓ９２０）。
【００７６】
続いて、ステップＳ９３０では、命令コードのダウンロードが完了すると同時に、プロセッサ１０３及び期待値発生部１０４においてそれぞれ命令コードが実行される（Ｓ９３０）。
【００７７】
続いて、ステップＳ９４０では、命令コードのｄｓｔ領域で外部レジスタとして指定された比較部１０５に、プロセッサ１０３及び期待値発生部１０４から命令コードの実行結果がそれぞれ出力される。そして、比較部１０５において、プロセッサ１０３の実行結果と期待値発生部１０４の期待値とが比較され、これらに差異が生じているかが検査される（Ｓ９４０）。
【００７８】
続いて、ステップＳ９５１では、ステップＳ９４０での比較検査の結果、プロセッサ１０３の実行結果と期待値発生部１０４の期待値とに差異が生じていない場合に、ステップＳ９３０に戻って引き続き命令コードが実行される（Ｓ９５１）。
【００７９】
一方、ステップＳ９５２では、ステップＳ９４０での比較検査の結果、プロセッサ１０３の実行結果と期待値発生部１０４の期待値とに差異が生じている場合に、前記差異を生じた命令コードを不具合検出位置格納部１０６に格納するように比較部１０５が期待値発生部１０４に要求する。この要求を受けた期待値発生部１０４は、該当する命令コードを不具合検出位置格納部１０６に格納する。不具合検出位置格納部１０６は、期待値発生部１０４からの命令コードをその出力されてくる時刻やＩＰと共に蓄積する。また、ステップＳ９５２では、プロセッサ１０３内の全メモリ領域とレジスタを初期化するように、期待値発生部１０４がダウンロード制御部１０２に要求する。そして、プロセッサ１０３が初期化された後、ステップＳ９３０に戻って再び命令コードが実行される。
【００８０】
続いて、ステップＳ９６０では、ステップＳ９１０において生成された全ての命令コードが実行された後に、期待値発生部１０４が実行終了フラグをパターン生成部１０１に出力する。また、ステップＳ９６０では、この実行終了フラグを入力されたパターン生成部１０１がさらに実行すべき命令コードがあると判定する場合には、ステップＳ９１０に戻って新たな命令コードが生成される。一方、新たに実行すべき命令コードがない場合には、上記一連の検査が終了する。
【００８１】
このように本実施の形態に係るプロセッサ検査装置１００によれば、パターン生成部１０１で生成された同一の命令コードが、検査対象であるプロセッサ１０３と、命令コードの実行結果の比較対象である期待値を生成する期待値発生部１０４と、にそれぞれ入力され、プロセッサ１０３と期待値発生部１０４とにおいて前記同一の命令コードが並行して実行されるため、プロセッサ１０３の不具合を迅速に検出することができる。
【００８２】
また、本実施の形態に係るプロセッサ検査装置１００によれば、同一の命令コードについてのプロセッサ１０３の実行結果と期待値発生部１０４の期待値とに差異が生じたときに、その命令コード及びその命令コードについてのＩＰ情報等が不具合検出位置格納部１０６に逐次蓄積されるため、プロセッサ１０３の不具合点を容易、かつ、迅速に特定することができる。
【００８３】
また、本実施の形態に係るプロセッサ検査装置１００によれば、パターン生成部１０１において、具備されるテーブルに格納されるコードが総当りで組み合わされたり、具備されるカウンタのカウント値が順次繰り上げられて全てのカウント値が表現されたりして、命令コードが生成されるため、プロセッサ１０３で実行可能な命令コードが漏れなく全て生成される。さらに、本実施の形態に係るプロセッサ検査装置１００によれば、パターン生成部１０１において、プロセッサ１０３でパイプラインハザードを発生させる命令コードがシミュレーションによって検出されて予め取り除かれるため、パイプラインハザードに起因するプロセッサ１０３の暴走を根絶することができる。
【００８４】
なお、本実施の形態に係るプロセッサ検査装置及びプロセッサ検査方法を、以下のように変形したり、応用したりしてもよい。
【００８５】
本実施の形態では、命令コードが３つの命令又は４つの命令の組み合わせで構成される場合について説明したが、本発明はこの場合に限定されるものではなく、例えば命令コードがＭ個の命令の組み合わせで構成されていてもよい。なお、Ｍ個の命令からなる命令コードを生成する場合には、Ｍ個のテーブル又はＭ個のカウンタを用いることが好ましい。
【００８６】
また、本実施の形態では、図５に示す複数のカウンタを具備するパターン生成部５００の動作について、４進カウンタ５０４から５進カウンタ５０１に向かってカウント値が順次繰り上がる場合について説明したが、本発明はこの場合に限定されるものではなく、５進カウンタ５０１から４進カウンタ５０４に向かってカウント値が順次繰り上がるようにしてもよい。その他、各カウンタのカウント値が順次繰り上がるように設定されれば、どのカウンタからカウントを開始してもよい。
【００８７】
また、本実施の形態では、パターン生成部７００において命令コードｎと命令コードｎ＋２との間にパイプラインハザードを発生させる関係が検出されたときに、セレクタ７１１によって命令コードの「命令コードｎ」が「ＮＯＰ命令コード」に置き換えられる場合（図８の「出力命令コード」を参照）について説明したが、本発明はこの場合に限定されるものではなく、例えばセレクタ７１１が命令コードｎを出力した後に、ＮＯＰ命令コードを複数回挿入する等して、命令コードｎ＋２を出力するタイミングを調整してから出力するようにしてもよい。このようにすれば、プロセッサ１０３でのパイプラインハザードの発生を回避しつつ、命令コードｎと命令コードｎ＋２とを共に出力できるため、プロセッサ１０３で実行可能な全ての命令コードを実行させることができる。
【００８８】
（実施の形態２）
図１０に、本発明の実施の形態２に係るプロセッサ検査装置に具備されるパターン生成部１０００の構成を示す。パターン生成部１０００では、３つの命令の組み合わせによって命令コードを生成する。
【００８９】
以下、本実施の形態に係るプロセッサ検査装置について、適宜図を参照しつつ説明するが、実施の形態１において示した構成要素と同様の機能を発揮する構成要素については、同一の参照符号を附してその説明を省略する。
【００９０】
本実施の形態に係るプロセッサ検査装置は、前記実施の形態１に係るプロセッサ検査装置１００において、パターン生成部１０１の代わりにパターン生成部１０００を具備するものである。
【００９１】
パターン生成部１０００は、命令生成部Ａ１００１、命令生成部Ｂ１００２、命令生成部Ｃ１００３、カウンタＡ１００４、カウンタＢ１００５、カウンタＣ１００６及びセレクタ１００７を具備する。
【００９２】
命令生成部Ａ１００１、命令生成部Ｂ１００２又は命令生成部Ｃ１００３はいずれも、パターン生成部１０１における各テーブル４０２、４０３及び４０４と同様の機能を発揮するものである。また、命令生成部Ａ１００１はカウンタＡ１００４からトリガーを入力され、同様に命令生成部Ｂ１００２はカウンタＢ１００５から、命令生成部Ｃ１００３はカウンタＣ１００６からトリガーを入力される。また、カウンタＡ１００４、カウンタＢ１００５又はカウンタＣ１００６は、それぞれがトリガーを入力する各命令生成部で生成される全ての命令の数を任意の整数Ｎとする場合に、０〜Ｎ−１までカウントするＮ進カウンタである。また、セレクタ１００７は、各命令生成部から出力されてくる命令を命令生成部Ａ１００１、命令生成部Ｂ１００２及び命令生成部Ｃ１００３の順に逐次選択してダウンロード制御部１０２に出力し、命令コードの最終的な構成を決定する。
【００９３】
図１１に、命令コードが生成される際のパターン生成部１０００における各構成部の動作のタイムチャートを示す。
【００９４】
先ず、カウンタＡ１００４、カウンタＢ１００５及びカウンタＣ１００６から同じタイミングでそれぞれ対応する各命令生成部にトリガーが供給される。続いて、各命令生成部では、供給されたトリガーに従って命令が生成され、この命令がセレクタ１００７に逐次出力される。セレクタ１００７では、基準パルスの立ち上がりタイミングに同期して、命令生成部Ａ１００１、命令生成部Ｂ１００２及び命令生成部Ｃ１００３の順番で各命令生成部から出力されてくる命令Ａ、命令Ｂ及び命令Ｃが選択され、この選択された各命令がダウンロード制御部１０２に逐次連続的に出力される。従って、セレクタ１００７から最初に出力される命令コード即ち命令の組み合わせは、命令Ａ、命令Ｂ及び命令Ｃの順に選択されることから「命令Ａ＃０  命令Ｂ＃０  命令Ｃ＃０」となる。
【００９５】
続いて、基準パルスに基づいて予め設定されたタイミングでカウンタＣ１００６のカウント値が変更され、このときカウンタＣ１００６から命令生成部Ｃ１００３にトリガーが供給される。命令生成部Ｃ１００３では、このトリガーの供給によって出力される命令Ｃが次のものに変更される。従って、このときセレクタ１００７から出力される命令コードの構成は、「命令Ａ＃０  命令Ｂ＃０  命令Ｃ＃１」となる。
【００９６】
続いて、カウンタＣ１００６のカウント値がＮ−１になるまで前記同様に命令生成部Ｃ１００３から出力される命令Ｃが順次変更される。そして、このカウント値がＮ−１を超えてオーバーフローすると、カウンタＣ１００６のカウント値は｛０｝に初期化され、この初期化の事実がカウンタＢに通知される。この通知によりカウンタＢ１００５のカウント値が次の値に変更され、これに伴いカウンタＢ１００５から命令生成部Ｂ１００２にトリガーが供給されて、命令生成部Ｂ１００２から出力される命令が次のものに変更される。従って、このときセレクタ１００７から出力される命令コードの構成は、「命令Ａ＃０  命令Ｂ＃１  命令Ｃ＃０」となる。このように、カウンタＣ１００６がオーバーフローする度にカウンタＢ１００５のカウント値が更新されて、命令生成部Ｂ１００２から次の命令が出力されるようになる。
【００９７】
さらに、カウンタＢ１００５のカウント値がＮ−１まで進んでカウンタＢ１００５がオーバーフローすると、カウンタＢ１００５のカウント値は｛０｝に初期化され、この初期化の事実がカウンタＢ１００５からカウンタＡ１００４に通知される。この通知によりカウンタＡ１００４のカウント値が次の値に変更され、これに伴いカウンタＡ１００４から命令生成部Ａ１００１にトリガーが供給されて、命令生成部Ａ１００１から出力される命令が次のものに変更される。従って、このときセレクタ１００７から出力される命令コードの構成は、「命令Ａ＃１
命令Ｂ＃０  命令Ｃ＃０」となる。
【００９８】
このように、パターン生成部１０００では、カウンタＣ１００６がオーバーフローする度にカウンタＢ１００５のカウンタ値が更新され、同様にカウンタＢ１００５がオーバーフローする度にカウンタＡ１００４のカウンタ値が更新される。従って、カウンタＡ１００４がオーバーフローするまで命令コードを生成し続ければ、パターン生成部１０００において生成可能な全ての命令コードがダウンロード制御部１０２に出力されることになる。なお、命令Ａ、命令Ｂ及び命令Ｃの全てを組み合わせることができれば、どのような順番で各カウンタを動作させてもよい。
【００９９】
このように本実施の形態に係るプロセッサ検査装置によれば、実施の形態１に係るプロセッサ検査装置１００と同様の効果を奏することができる。
【０１００】
（実施の形態３）
図１２に、本発明の実施の形態３に係るプロセッサ検査装置に具備されるパターン生成部１２００の構成を示す。
【０１０１】
以下、本実施の形態に係るプロセッサ検査装置について、適宜図を参照しつつ説明するが、実施の形態１において示した構成要素と同様の機能を発揮する構成要素については、同一の参照符号を附してその説明を省略する。
【０１０２】
本実施の形態に係るプロセッサ検査装置は、前記実施の形態１に係るプロセッサ検査装置１００において、パターン生成部１０１の代わりにパターン生成部１２００を具備するものである。
【０１０３】
パターン生成部１２００は、命令テーブル１２０１、ｄｓｔテーブル１２０２、ｓｒｃ１テーブル１２０３、ｓｒｃ２テーブル１２０４、命令コード生成部１２０５及びアセンブラ部１２０６を具備する。
【０１０４】
命令テーブル１２０１は、プロセッサ１０３の命令フィールドの命令領域に当て嵌めて用いられる文字列を複数具備する。また、ｄｓｔテーブル１２０２は、同ｄｓｔ領域に当て嵌めて用いられる文字列を複数具備する。また、ｓｒｃ１テーブル１２０３は、同ｓｒｃ１領域に当て嵌めて用いられる文字列を複数具備する。ｓｒｃ２テーブル１２０４は、同ｓｒｃ２領域に当て嵌めて用いられる文字列を複数具備する。命令コード生成部１２０５は、各テーブルから選択され出力されてくる文字列を合成して、合成された文字列をニーモニック形式で表現される命令コードに変換する。アセンブラ部１２０６は、命令コード生成部１２０５で生成される命令コードに対してアセンブリを行う。
【０１０５】
次いで、パターン生成部１２００の動作について説明する。各テーブルからの文字列の読み出しにおいては、実施の形態１と同様の制御を行う。命令コード生成部１２０５では、各テーブルから出力されてくる文字列が合成され、この合成された文字列がニーモニック形式で表現される命令コードに変換される。例えば、各文字列をニーモニック形式で表現して、命令テーブル１２０１から「ａｄｄ」、ｄｓｔテーブル１２０２から「Ｒ０」、ｓｒｃ１テーブル１２０３から「Ｒ１」、並びにｓｒｃ２テーブル１２０４から「Ｒ２」がそれぞれ選択されて出力されてくると、命令コード生成部１２０５では、これらの文字列を合成して「ａｄｄ  Ｒ０，Ｒ１，Ｒ２」の命令コードを生成する。
【０１０６】
続いて、アセンブラ部１２０６では、命令コード生成部１２０５で生成された命令コードにアセンブリが施され、アセンブリを施された命令コードが禁止命令に該当するか否かが判定される。そして、禁止命令に該当しないと判定された場合に限り、アセンブリを施された命令コードがアセンブラ部１２０６からダウンロード制御部１０２に出力される。なお、各テーブルから出力されてくる文字列の組み合わせによっては、生成された命令コード間でパイプラインハザードが発生することもあるため、アセンブラ部１２０６では、パイプラインハザードによるエラーの発生が検出されたときには、前記命令コードの間にＮＯＰ命令コードを挿入する機能を具備する。ちなみに、ｊｕｍｐ命令のようにｄｓｔ領域やｓｒｃ２領域を使わない命令については、アセンブラ部１２０６は、これらの領域に当て嵌められる文字列を無視して命令コードにアセンブリを施し出力する。
【０１０７】
従って、本実施の形態に係るプロセッサ検査装置によれば、パターン生成部１２００によって禁止命令に該当する命令コードが出力されなくなり、またパイプラインハザードを生じさせる命令コード間にＮＯＰ命令コードが適宜挿入されるため、プロセッサ１０３におけるエラーの発生を効果的に抑制することができる。
【０１０８】
（実施の形態４）
図１３に、本発明の実施の形態４に係るプロセッサ検査装置に具備されるプロセッサ１３００の構成を示す。
【０１０９】
以下、本実施の形態に係るプロセッサ検査装置について、適宜図を参照しつつ説明するが、実施の形態１において示した構成要素と同様の機能を発揮する構成要素については、同一の参照符号を附してその説明を省略する。
【０１１０】
本実施の形態に係るプロセッサ検査装置は、前記実施の形態１に係るプロセッサ検査装置１００において、プロセッサ１０３の代わりにプロセッサ１３００を具備するものである。
【０１１１】
プロセッサ１３００は、プロセッサ１０３の全構成部に加えてさらにテスト回路１３０１を具備するものである。テスト回路１３０１は、命令コードを実行する毎に、その実行結果が格納されるプロセッサ１０３内のレジスタ即ちレジスタファイル２０５内のレジスタ、メモリ入力レジスタ２１０乃至ＩＰレジスタ２０３の中から適切なレジスタを選択し、選択されたレジスタに格納される値を比較部１０５に出力する。なお、テスト回路１３０１がレジスタを選択するための情報は、命令デコーダ２０４から入力されてくる。
【０１１２】
プロセッサ１３００では、実行される命令が「ａｄｄ」の場合、その実行結果は命令コードのｄｓｔ領域の値で指定されるレジスタに格納される。そのため、テスト回路１３０１が前記ｄｓｔ領域の値を取得して前記レジスタを選択し、このレジスタに格納される値を比較部１０５に出力すれば、その命令が正しく動作したかを確認することができる。なお、期待値発生部１０４からも前記命令コードを実行した結果が期待値として比較部１０５に出力されてくる。
【０１１３】
また、プロセッサ１３００では、実行される命令が「ｍｕｌ」及び「ｌｏａｄ」の場合も、テスト回路１３０１から命令コードの実行結果が比較部１０５に出力される。さらに、期待値発生部１０４から命令コードの期待値が比較部１０５に出力される。
【０１１４】
また、プロセッサ１３００では、実行される命令が「ｓｔｏｒｅ」の場合、命令コードのｓｒｃ２領域の値で指定されたデータメモリ２１１のレジスタに格納された値がテスト回路１３０１から比較部１０５に出力される。なお、メモリ入力レジスタ２１０からデータメモリ２１１への実際の書き込み動作についての検査は、プロセッサ１０３の出荷前にメモリテスト用の命令コードパターンが必ず実行されるため、メモリ入力レジスタ２１０にデータが正しく書き込まれることが確認されれば、それ以上詳細に行う必要はない。
【０１１５】
また、プロセッサ１３００では、実行される命令が「ｊｕｍｐ」の場合、分岐先のＩＰが正しく更新されているか確認するために、ＩＰレジスタ２０３に格納される値がテスト回路１３０１によって選択され比較部１０５に出力される。
【０１１６】
また、プロセッサ１３００に具備される複数のレジスタに格納される値と、期待値発生部１０４の期待値と、を比較する場合には、前記複数のレジスタに格納される値を加算してその加算値を命令コードの実行結果として使用することが好ましい。この加算値を使用することにより、プロセッサ１３００における期待値比較用のデバック端子を増加させる必要がなくなる。なお、プロセッサの種類又は構造によって命令コードの実行結果が格納されるレジスタが異なるため、プロセッサの種類又は構造に応じて適宜テスト回路の接続を調整する必要がある。
【０１１７】
このように本実施の形態に係るプロセッサ検査装置によれば、テスト回路１３０１によって命令コードの実行結果が格納されるレジスタが適宜選択されるため、比較部１０５において前記実行結果と対応する期待値とに差異が検出されたときに、前記差異を生じた命令コードを容易、かつ、迅速に特定することができる。
【０１１８】
また、本実施の形態に係るプロセッサ検査装置によれば、プロセッサ１３００に具備される複数のレジスタに格納される値の加算値と期待値発生部１０４の期待値とを比較できるため、プロセッサ１３００のデバック端子を増加させることなく、具備される複数のレジスタについて同時に検査を行うことができる。
【０１１９】
（実施の形態５）
図１４に、本発明の実施の形態５に係るプロセッサ検査装置１４００の構成を示す。
【０１２０】
以下、本実施の形態に係るプロセッサ検査装置１４００について、適宜図を参照しつつ説明するが、実施の形態１において示した構成要素と同様の機能を発揮する構成要素については、同一の参照符号を附してその説明を省略する。
【０１２１】
本実施の形態に係るプロセッサ検査装置１４００は、前記実施の形態１に係るプロセッサ検査装置１００において、プロセッサ１０３の代わりにプロセッサ１４０３を、期待値発生部１０４の代わりに期待値発生部１４０４を具備するものである。
【０１２２】
プロセッサ１４０３は、プロセッサ１０３の全構成部の機能に加えて、さらにクロックトリガーを生成して期待値発生部１４０４に入力する機能を備える。このクロックトリガーは、通常はいわゆるクロック信号であって、期待値発生部１４０４には周期的なパルス信号として観測される。しかし、プロセッサ１４０３において命令コードが実行されてその実行結果が出力される段階に至ると、クロックトリガーの周期、振幅又は位相が変化する。即ち、クロックトリガーは、プロセッサ１４０３が実行結果を出力するタイミングを期待値発生部１４０４に知らせるトリガーとして機能する。期待値発生部１４０４は、このクロックトリガーを観測し、その変化を検知することにより、プロセッサ１４０３が命令コードの実行結果を出力するタイミングを知ることができる。そして、期待値発生部１４０４は、このクロックトリガーの変化が検知されたタイミングで、予め命令コードを実行して生成しておいた期待値を比較部１０５に入力する。
【０１２３】
このように本実施の形態に係るプロセッサ検査装置１４００によれば、期待値発生部１４０４において生成された期待値がその内部メモリに一時格納され、プロセッサ１４０３が実行結果を出力するタイミングでこの期待値も読み出されるため、プロセッサ１４０３のクロック周波数と期待値発生部１４０４のクロック周波数とが非同期であっても、プロセッサ１４０３からの実行結果の出力タイミングと期待値発生部１４０４からの期待値の出力タイミングとを同期させることができる。その結果、本実施の形態に係るプロセッサ検査装置１４００によれば、比較部１０５においてプロセッサ１４０３による実行結果と期待値発生部１４０４による期待値との比較を迅速に行うことができる。また、本実施の形態に係るプロセッサ検査装置１４００によれば、検査対象であるプロセッサのクロック周波数を選ばないため、その汎用性を高めることができる。
【０１２４】
【発明の効果】
以上説明したように、本発明によれば、複数の命令を総当りで組み合わせて命令コードを生成するパターン生成部と、この命令コードを同期して並行に実行するプロセッサ及び期待値発生部と、この命令コードの実行結果及びこの実行結果に対応する期待値とを比較する比較部と、を具備するため、プロセッサの機能検査に必要な命令コードを漏れなく自動的に生成し、かつ、この命令コードを実行させてもプロセッサを暴走させることなく、かつ、短時間でプロセッサの機能検査を終えることのできるプロセッサ検査装置及びその方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係るプロセッサ検査装置の構成を示すブロック図
【図２】実施の形態１におけるプロセッサの構成を示すブロック図
【図３】実施の形態１において生成される命令コードのビットパターンを示す図
【図４】実施の形態１におけるパターン生成部の構成を示すブロック図
【図５】実施の形態１におけるパターン生成部の構成を示すブロック図
【図６】実施の形態１におけるプロセッサの各パイプラインで実行される命令についてのタイムチャートを示す図
【図７】実施の形態１におけるパターン生成部の構成を示すブロック図
【図８】実施の形態１におけるパターン生成部の各構成部に入力される命令コードのタイムチャートと、各構成部間で命令コードを対比したときの信号入出力のタイムチャートと、を示す図
【図９】実施の形態１に係るプロセッサ検査方法を示すフロー図
【図１０】実施の形態２におけるパターン生成部の構成を示すブロック図
【図１１】実施の形態２におけるパターン生成部で命令コードが生成される様子を示す図
【図１２】実施の形態３におけるパターン生成部の構成を示すブロック図
【図１３】実施の形態４におけるプロセッサの構成を示すブロック図
【図１４】実施の形態５に係るプロセッサ検査装置の構造を示すブロック図
【符号の説明】
１００、１４００  プロセッサ検査装置
１０１、５００、７００、１０００、１２００  パターン生成部
１０２  ダウンロード制御部
１０３、１３００、１４０３  プロセッサ
１０４、１４０４  期待値発生部
１０５  比較部
１０６  不具合検出位置格納部
２０１  命令メモリ
２０２  命令レジスタ
２０３  ＩＰレジスタ
２０４  命令デコーダ
２０５  レジスタファイル
２０６  ソース１レジスタ
２０７  ソース２レジスタ
２０８  演算器
２０９  メモリステージレジスタ
２１０  メモリ入力レジスタ
２１１  データメモリ
２１２  レジスタライトステージ・データレジスタ
４０１、１２０１  命令テーブル
４０２、１２０２  ｄｓｔテーブル
４０３、１２０３  ｓｒｃ１テーブル
４０４、１２０４  ｓｒｃ２テーブル
４０６  ｄｓｔ出力用命令コード生成部
７１０  レジスタ
７１１  セレクタ
１２０５  命令コード生成部
１２０６  アセンブラ部
１３０１  テスト回路
【図１】
2005011031.tif 000005
【図２】
2005011031.tif 000006
【図３】
2005011031.tif 000007
【図４】
2005011031.tif 000008
【図５】
2005011031.tif 000009
【図６】
2005011031.tif 000010
【図７】
2005011031.tif 000011
【図８】
2005011031.tif 000012
【図９】
2005011031.tif 000013
【図１０】
2005011031.tif 000014
【図１１】
2005011031.tif 000015
【図１２】
2005011031.tif 000016
【図１３】
2005011031.tif 000017
【図１４】
2005011031.tif 000018