(57)【要約】【課題】シミュレーション実行後の比較検証に要する時間を削減し、プロセッサの検証効率を向上する。【解決手段】試験パターンを実行するソフトウエアシミュレータおよびハードウエアシミュレータは、同期制御され、プロセッサが実行する命令毎にそれぞれ動作する。この後、シミュレーション結果が比較され、ソフトウエアシミュレータおよびハードウエアシミュレータの記述が一致しているか否かが、少なくとも１命令単位で判定される。一度に比較されるシミュレーション結果の量が少なくなる．ため、エラーの発生した場所を迅速に特定できる。この結果、シミュレーションの実行後の比較検証を効率よく実施できる。動作検証が効率よく実行できるため、プロセッサの開発期間を短縮できる。【選択図】　　　図１
2004086406.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを試験するための試験仕様から生成される試験パターンをソフトウエアシミュレータおよびハードウエアシミュレータに与えてシミュレーションをそれぞれ実行し、両シミュレーション結果を比較することで、動作を検証するプロセッサの動作検証方法であって、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、同期制御し、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、プロセッサが実行する命令毎にそれぞれ動作させ、
両シミュレーション結果を比較することで、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの記述が一致しているか否かを、少なくとも１命令単位で判定することを特徴とするプロセッサの動作検証方法。
【請求項２】
請求項１記載のプロセッサの動作検証方法において、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータに記述されたメモリ領域およびレジスタ領域の少なくともいずれかに対するデータの書き込みを監視し、
メモリ領域およびレジスタ領域のうち、予め設定された所定の領域にデータが書き込まれたことを検出したときに、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証方法。
【請求項３】
請求項１記載のプロセッサの動作検証方法において、
前記ハードウエアシミュレータの状態を監視し、
前記ハードウエアシミュレータの状態が、予め設定された外部割り込みを発生させる状態になったときに、前記ハードウエアシミュレータに対して外部割り込みを要求し、
前記ハードウエアシミュレータが前記外部割り込み要求を受け付けたときに、前記ソフトウエアシミュレータに対して前記外部割り込みを要求することを特徴とするプロセッサの動作検証方法。
【請求項４】
請求項１記載のプロセッサの動作検証方法において、
前記プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループをランダムに選択し、
前記命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループを選択し、
選択した命令グループの中から、命令コードをランダムに選択し、
選択したオペランドグループの中から、少なくとも１つのオペランドをランダムに選択し、
選択した命令コードと選択したオペランドとからなる１つの命令セットを前記試験パターンとして生成することを特徴とするプロセッサの動作検証方法。
【請求項５】
プロセッサを試験するための試験仕様から生成される試験パターンをソフトウエアシミュレータおよびハードウエアシミュレータに与えてシミュレーションをそれぞれ実行し、両シミュレーション結果を比較することで、動作を検証するプロセッサの動作検証システムであって、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、同期制御し、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、プロセッサが実行する命令毎にそれぞれ動作させ、両シミュレーション結果を比較することで、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの記述が一致しているか否かを、少なくとも１命令単位で判定するシミュレーション制御部を備えていることを特徴とするプロセッサの動作検証システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令をフェッチして動作するプロセッサの動作検証方法およびプロセッサの動作検証システムに関する。
【０００２】
【従来の技術】
一般に、プロセッサ等の集積回路を開発する場合、試作品を製造する前にシミュレータ等を使用して動作が検証される。小規模回路におけるシミュレータを使用した動作検証方法は、例えば、特開平５−１２０３６９号公報に開示されている。
この公報の動作検証方法では、ハードウエアモデル（ハードウエアシミュレータ）とソフトウエアモデル（ソフトウエアシミュレータ）とに共通の試験パターンが与えられ、シミュレーションがそれぞれ独立に実行される。この後、両モデルのシミュレーション結果が比較され、設計した回路が正しく動作するか否かが検証される。シミュレーション結果は、１ピン毎に比較される。
【０００３】
【発明が解決しようとする課題】
近時、トランジスタ構造等の微細化により、１チップに集積される素子数は、年々増加している。このため、論理回路の規模は大きくなり、論理回路で実現される機能は複雑になってきている。試験パターンは、論理回路の規模に依存して増加する。上述した公報では、ハードウエアシミュレータおよびソフトウエアシミュレータは、試験パターンをそれぞれ独立に実行する。このため、試験パターンが増加した場合、比較結果の出力量が膨大になってしまう。この結果、エラーが発生した場所の特定が困難になり、検証効率が低下するという問題があった。
【０００４】
この問題は、上記公報の対象である回路ライブラリ等の小規模回路の検証では、それほど深刻ではない。しかし、プロセッサ等のＬＳＩでは、回路規模が膨大であるため、深刻な問題である。例えば、論理検証が完了した後でなければプロセッサの試作は開始できないため、検証が長引くとプロセッサの開発期間は長くなってしまう。この結果、開発コストは増加してしまう。また、出荷時期が遅れると、ビジネスチャンスを失ってしまうおそれがある。
【０００５】
さらに、命令をフェッチして動作するプロセッサ固有の問題として、分岐命令や割り込み処理に伴う試験パターンの増加がある。従来、この種の試験パターンは、手作業で作成していた。分岐命令および割り込み処理により、試験パターンは、大幅に増加する。これ等試験パターンを人手作業で全てを網羅することは困難であった。このため、試験パターンがプロセッサの動作をどれだけ網羅しているかの指標であるカバレッジが低下してしまうという問題があった。
【０００６】
このように、回路規模が大きく、動作パターンが複雑なプロセッサの論理検証では、ハードウエアシミュレータとソフトウエアシミュレータとを、単に組み合わせただけでは、検証期間は大幅に増加してしまう。また、プロセッサ固有の複雑な試験パターンを生成するために長時間を要してしまう。
本発明の目的は、シミュレーション実行後の比較検証に要する時間を削減し、プロセッサの検証効率を向上することにある。
【０００７】
本発明の別の目的は、プロセッサ固有の試験パターンの作成期間を短縮し、検証効率を向上することにある。
【０００８】
【課題を解決するための手段】
請求項１のプロセッサの動作検証方法および請求項５プロセッサの動作検証システムでは、まず、プロセッサを試験するための試験仕様から生成される試験パターンが、ソフトウエアシミュレータおよびハードウエアシミュレータに与えられ、シミュレーションがそれぞれ実行される。この際、ソフトウエアシミュレータおよびハードウエアシミュレータは、同期制御され、プロセッサが実行する命令毎にそれぞれ動作する。次に、両シミュレーション結果が比較され、ソフトウエアシミュレータおよびハードウエアシミュレータの記述が一致しているか否かが、少なくとも１命令単位で判定される。
【０００９】
ソフトウエアシミュレータおよびハードウエアシミュレータを同期制御して、命令毎にそれぞれ動作させることで、一度に比較されるシミュレーション結果の量が少なくなる。このため、エラーの発生した場所を迅速に特定できる。この結果、シミュレーションの実行後の比較検証を効率よく実施できる。動作検証が効率よく実行できるため、プロセッサの開発期間を短縮できる。
【００１０】
請求項２のプロセッサの動作検証方法では、ソフトウエアシミュレータおよびハードウエアシミュレータに記述されたメモリ領域およびレジスタ領域の少なくともいずれかに対するデータの書き込みが監視される。そして、メモリ領域およびレジスタ領域のうち、予め設定された所定の領域にデータが書き込まれたことを検出したときに、両シミュレーション結果が比較される。特定のイベントが発生したときにシミュレーション結果を比較することで、そのイベントに着目した動作検証ができる。この結果、シミュレーションの実行後の比較検証を効率よく実施でき、プロセッサの開発期間を短縮できる。
【００１１】
請求項３のプロセッサの動作検証方法では、ハードウエアシミュレータの状態が監視され、ハードウエアシミュレータの状態が、予め設定された外部割り込みを発生させる状態になったときに、ハードウエアシミュレータに対して外部割り込みが要求される。そしてハードウエアシミュレータが外部割り込み要求を受け付けたときに、ソフトウエアシミュレータに対して外部割り込みが要求される。ハードウエアシミュレータからの割り込みアクノリッジに同期して、ソフトウエアシミュレータに割り込み要求することで、ハードウエアシミュレータとソフトウエアシミュレータの割り込みタイミングを同期させることができる。この結果、ランダムに発生するイベントである外部割り込みに対するプロセッサの動作検証を確実かつ正確に実行できる。
【００１２】
請求項４のプロセッサの動作検証方法では、プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループがランダムに選択される。また、命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループが選択される。次に、選択した命令グループの中から、命令コードがランダムに選択され、選択したオペランドグループの中から、少なくとも１つのオペランドがランダムに選択される。そして、選択した命令コードと選択したオペランドとからなる１つの命令セットが試験パターンとして生成される。このように、予めグループ分けされた命令グループおよびオペランドグループの中からランダムに命令セットを生成することで、従来人手で行っていた試験パターンを自動生成できる。この結果、シミュレーション環境の立ち上げ期間を短縮でき、プロセッサの開発期間を短縮できる。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態を図面を用いて説明する。
図１は、本発明の第１の実施形態を示している。この実施形態は、請求項１、請求項２、請求項４、請求項５に対応している。
図中の一点鎖線は、ワークステーションＷＳを示している。ワークステーションＷＳは、マイクロコンピュータ等の命令をフェッチして動作するプロセッサの動作検証（論理シミュレーション）に利用される。検証対象のプロセッサは、マイクロコンピュータに限らず、例えば、ＤＳＰ（Ｄｉｇｉｔａｌ　Ｓｉｇｎａｌ　Ｐｒｏｃｅｓｓｏｒ）あるいはシステムＬＳＩに搭載されるＣＰＵコアでもよい。
【００１４】
ワークステーションＷＳは、試験パターン発生部１０、命令発生テーブル１２、アセンブラソースファイル１４、アセンブラ／リンカ１６、オブジェクトファイル１８、ソフトウエアシミュレータ（ｓ／ｗ　Ｓｉｍ）２０、シミュレーション制御部２２、フォーマット変換部２４、メモリファイル２６、ハードウエアモデルファイル（Ｈ／Ｗモデル）２８、およびハードウエアシミュレータ（Ｈ／Ｗ　Ｓｉｍ）３０を有している。ワークステーションＷＳには、キーボード等の入力装置３２、ＣＲＴディスプレイ等の表示装置３４、およびプリンタ等の出力装置３６が接続されている。
【００１５】
試験パターン発生部１０、アセンブラ／リンカ１６、ソフトウエアシミュレータ２０、シミュレーション制御部２２、フォーマット変換部２４、およびハードウエアシミュレータ３０は、ワークステーションＷＳが実行するプログラム（ソフトウエア）として構成されており、ワークステーションＷＳ内のメモリに格納されている。後述するように、シミュレーション制御部２２が中心となって、これ等プログラムが実行されることで、プロセッサの動作が検証される。命令発生テーブル１２、アセンブラソースファイル１４、オブジェクトファイル１６、メモリファイル２６、ハードウエアモデルファイル２８は、ワークステーションＷＳに内蔵されたハードディスク等の外部記憶装置に格納されている。
【００１６】
この実施形態では、プロセッサの動作検証の前に、予め、プロセッサ仕様からソフトウエアシミュレータ２０およびハードウエアモデル２８が形成される。ハードウエアモデル２８は、ＲＴＬ（ｒｅｇｉｓｔｅｒ　ｔｒａｎｓｉｓｔｏｒ　ｌｅｖｅｌ）で記述される。ハードウエアモデル２８からハードウエアシミュレータ３０が形成される。
また、予めプロセッサ仕様から試験仕様書が作成され、試験シナリオが作成される。試験シナリオには、動作検証試験のおおまかな順序、試験の組み合わせ、試験の制約事項等が記載される。すなわち、試験シナリオは、試験仕様書の内容に基づいて生成される試験パターンの生成規則である。試験パターン発生部１０は、試験シナリオに記載された生成規則に基づいて形成されている。図中の破線の矢印を出力するブロックは、本発明を実施するために事前に準備が必要な事項である。このため、これ等ブロックについては、詳細な説明は省略する。
【００１７】
試験パターン発生部１０は、乱数生成部１０ａを有している。試験パターン発生部１０は、乱数生成部１０ａが生成する乱数に応じて命令発生テーブル１２を参照し、試験パターンを作成する。命令発生テーブル１２の詳細および試験パターンの生成方法については、図２および図３で説明する。
アセンブラソースファイル１４には、試験パターン発生部１０が生成した試験パターンが、アセンブラソースとして格納される。アセンブラ／リンカ１６は、アセンブラソースファイル１４をアセンブルおよびリンクし、試験パターンのオブジェクトファイル１８を生成する。オブジェクトファイル１８は、ソフトウエアシミュレータ２０が実行する試験パターンである。
【００１８】
フォーマット変換部２４は、オブジェクトファイル１８をハードウエアシミュレータ３０が読み取り可能なフォーマットに変換し、変換したファイル（試験パターン）をメモリファイル２６に格納する。メモリファイル２６は、ハードウエアシミュレータ３０が実行する試験パターンである。メモリファイル２６は、オブジェクトファイル１８から生成される。このため、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０に供給される試験パターンは、形式が異なるものの同じものである。
【００１９】
ソフトウエアシミュレータ２０は、一般にＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ　Ｓｅｔ　Ｓｉｍｕｌａｔｏｒ）と称されているもので、プロセッサが実行する命令を１命令ずつシミュレーションする。
シミュレーション制御部２２は、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０を同期制御し、プロセッサの動作検証を実施する。シミュレーション制御部２２は、プロセッサの動作検証を実施するための中枢部である。従来、プロセッサの動作検証において、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０を同期制御する手法はなく、シミュレーション制御部２２は存在していなかった。
【００２０】
シミュレーション制御部２２は、ワークステーションＷＳの操作者が操作する入力装置３２からのシミュレーション起動要求を受け、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０を順次起動し、これ等シミュレータ２０、３０に少なくとも１命令を実行させる。
シミュレーション制御部２２は、判定部２２ａを有している。判定部２２ａは、シミュレータ２０、３０の実行結果を比較し、比較結果を表示装置３４および出力装置３６の少なくともいずれかに出力する。
【００２１】
シミュレーション制御部２２は、シミュレーションの起動前に、ソフトウエアシミュレータ２０の記述が正しいとするか、ハードウエアシミュレータ３０の記述が正しいとするかを、入力装置３２から受ける。すなわち、ワークステーションＷＳの操作者により、ソフトウエアシミュレータ２０のシミュレーション結果を期待値とするか、ハードウエアシミュレータ３０のシミュレーション結果を期待値とするかが、予め指定される。
【００２２】
例えば、ソフトウエアシミュレータ２０のシミュレーション結果を期待値とする場合、シミュレーション制御部２２は、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０のシミュレーション結果が異なるときに、ハードウエアシミュレータ３０の回路記述に誤りがあることを、表示装置３４または出力装置３６に出力する。
【００２３】
図２は、図１に示した命令発生テーブル１２の詳細を示している。
命令発生テーブル１２には、複数の命令グループ（ＩＮＳ−Ｇｒ．１、ＩＮＳ−Ｇｒ．２、ＩＮＳ−Ｇｒ．３、．．．）と命令グループにそれぞれ対応する複数のオペランドグループＯＰ−Ｇｒ．１、ＯＰ−Ｇｒ．２、ＯＰ−Ｇｒ．３、．．．）とが記載されている。命令グループは、動作種別毎（加算命令、乗算命令、転送命令など）に分類されている。各命令グループには、複数の命令コードが記載されている。例えば、命令グループＩＮＳ−Ｇｒ．１には、３つの命令コードＩＮＳ１−１、ＩＮＳ１−２、ＩＮＳ１−３が記載されている。
【００２４】
各オペランドグループには、対応する命令グループ内の命令コードに付加できるオペランド（ＯＰ１〜ＯＰ９のいずれか）が記載されている。例えば、オペランドグループＯＰ−Ｇｒ．１には、５つのオペランドＯＰ１、ＯＰ２、ＯＰ３、ＯＰ４、ＯＰ９が記載されている。
図３は、図１に示した試験パターン発生部１０の動作を示している。なお、試験パターン発生部１０は、ワークステーションＷＳの操作者により、プロセッサの動作検証をする前に起動され、試験パターンを生成する。換言すれば、プロセッサの動作検証時には、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０に入力される試験パターンは生成されている。
【００２５】
まず、ステップＳ１１において、試験パターン発生部１０は、乱数発生部１０ａにより乱数１を発生する。ここで発生する乱数１は、図２に示した命令グループの番号（例えば、ＩＮＳ−Ｇｒ．１の”１”）である。なお、命令グループの番号に対応しない乱数は、発生しない。
ステップＳ１２において、試験パターン発生部１０は、乱数１にしたがって命令グループを決定する。例えば、乱数１＝２のとき、命令グループＩＮＳ−Ｇｒ．２が選択される。
【００２６】
次に、ステップＳ１３において、試験パターン発生部１０は、乱数発生部１０ａにより乱数２を発生する。ここで発生する乱数２は、ステップＳ１２で選択された命令グループにおける命令コードの番号（例えば、ＩＮＳ２−１の”１”）である。なお、命令コードの番号に対応しない乱数は、発生しない。
ステップＳ１４において、試験パターン発生部１０は、乱数２にしたがって命令コードを決定する。例えば、乱数２＝３のとき、命令グループＩＮＳ２−−３が選択される。
【００２７】
次に、ステップＳ１５において、試験パターン発生部１０は、選択した命令コードに必要なオペランドの数を求める。命令コードに対応するオペランドの数は、試験パターン発生部１０内に記憶してもよく、命令発生テーブル１２に記載してもよい。
ステップＳ１６において、試験パターン発生部１０は、乱数発生部１０ａにより乱数３を発生する。ここで発生する乱数３は、ステップＳ１４で選択された命令コードに必要な最初のオペランドの番号（例えば、ＯＰ２の”２”）である。なお、オペランドの番号に対応しない乱数は、発生しない。
【００２８】
ステップＳ１７において、試験パターン発生部１０は、乱数３にしたがって最初のオペランドを決定する。例えば、乱数３＝２のとき、オペランドＯＰ３が選択される。
ステップＳ１６、１７は、選択された命令コードに必要なオペランドが全て選択されるまで実行される。そして、命令コードおよびオペランドからなる１つの命令セットが生成される。ステップＳ１６、１７の繰り返し回数は、ステップＳ１８により制御される。
【００２９】
次に、ステップＳ１９において、ワークステーションＷＳの操作者により指定された数の命令セットが生成されたか否かが判定される。シミュレーションに必要な命令セット（試験パターン）が全て生成された場合、試験パターンの生成処理は終了する。シミュレーションに必要な命令セット（試験パターン）が全て生成されていない場合、処理は、再びステップＳ１に移行する。
【００３０】
図４は、第１の実施形態の検証動作を示している。図に示したフローは、シミュレーション制御部２２の基本的な動作を示している。このフローは、ワークステーションＷＳの操作者が入力装置３２を介して、シミュレーションの実行開始指示をしたときに開始される。
まず、ステップＳ２１において、シミュレーション制御部２２は、ハードウエアシミュレータ３０およびソフトウエアシミュレータ２０を初期化する。
【００３１】
次に、ステップＳ２２において、シミュレーション制御部２２と、ハードウエアシミュレータ３０およびソフトウエアシミュレータ２０との通信回線が確立される。ここまでは、シミュレーションを実行するための準備である。
次に、ステップＳ２３において、シミュレーション制御部２２は、ソフトウエアシミュレータ２０を起動し、ソフトウエアシミュレータ２０に試験パターンの１命令を実行させる。ここで、ソフトウエアシミュレータ２０に内蔵される実行カウンタは、命令セットを示している。このため、ソフトウエアシミュレータ２０は、１命令を実行する毎に実行カウンタを更新する。
【００３２】
ステップＳ２４において、シミュレーション制御部２２は、ソフトウエアシミュレータ２０からシミュレーション結果を受信する。
この後、ステップＳ２５において、シミュレーション制御部２２は、ハードウエアシミュレータ３０を起動し、ハードウエアシミュレータ３０にソフトウエアシミュレータ２０が直前に実行した１命令を実行させる。ここで、ハードウエアシミュレータ３０に内蔵される実行カウンタは、プログラムカウンタまたはプロセッサのサイクルカウンタに対応している。すなわち、ソフトウエアシミュレータ２０の実行カウンタの１カウントは、ハードウエアシミュレータ３０の実行カウンタの複数カウント（カウント数は命令コードによって異なる）に対応する。
【００３３】
そして、ハードウエアシミュレータ３０は、１命令を実行する毎に実行カウンタを更新する。実行カウンタの更新制御は、シミュレーション制御部２２によって行われる。シミュレーション制御部２２は、ソフトウエアシミュレータ２０の実行カウンタのカウンタ値と、ハードウエアシミュレータ３０の実行カウンタのカウンタ値との差を計測し、両カウンタ値が一致するまで、このカウンタ値を調整する。なお、カウンタ値の差を計測する際に、ハードウエアシミュレータ３０のカウンタ値は、ソフトウエアシミュレータ２０のカウンタ値に対応するように変換される。
【００３４】
このように、シミュレーション制御部２２が、両シミュレータ２０、３０のカウンタ値を一致させるように同期制御することで、パイプライン処理機能を有するプロセッサにおいても、ハードウエアシミュレータ３０とソフトウエアシミュレータ２０との動作を、確実に同期させることができ、精度の高い動作検証を実行できる。
【００３５】
ステップＳ２６において、シミュレーション制御部２２は、ハードウエアシミュレータ３０からシミュレーション結果を受信する。
ステップＳ２７において、シミュレーション制御部２２は、ハードウエアシミュレータ３０およびソフトウエアシミュレータ２０のシミュレーション結果（１命令分）を比較する。
【００３６】
ステップＳ２８において、シミュレーション制御部２２は、比較結果を表示装置３４に出力する。出力装置３６が選択されている場合、比較結果は、表示装置３４とともに出力装置３６にも出力される。
ステップＳ２９において、次の命令の実行要求がある場合、処理は、ステップＳ２３に移行する。次の命令の実行要求がない場合、処理は、ステップＳ３０に移行する。
【００３７】
ステップＳ３０において、シミュレーションの終了要求がある場合、処理を終了する。シミュレーションの終了要求がない場合、処理はステップＳ２９に移行する。
この例では、シミュレーション制御部２２は、ハードウエアシミュレータ３０およびソフトウエアシミュレータ２０を同期制御し、１命令ずつシミュレーションを実行し、比較結果を１命令ずつ表示装置３４等に出力する。シミュレーションの実行結果が１命令毎に出力されるため、比較検証を容易にできる。この結果、比較検証に要する時間を削減できる。
【００３８】
図５は、第１の実施形態の検証動作の別の例を示している。上述した図４と同じ動作については詳細な説明を省略する。
この例では、シミュレーション制御部２２は、予め設定されたブレークポイントを検出するまで１命令ずつシミュレーションを実行し、ブレークポイントを検出した時点で、それまでのシミュレーション結果を比較する。ブレークポイントは、ワークステーションＷＳの操作者が、入力装置３２を介して設定する。
【００３９】
ブレークポイントとして、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０に記述されたメモリ領域およびレジスタ領域が設定される。具体的なブレークポイントとして、特定のメモリアドレス、プロセッサのレジスタＲ０、メモリマップトＩ／Ｏ等がある。
まず、ステップＳ３１において、シミュレーション制御部２２は、入力装置３２から設定されたブレークポイントを読み込む。次に、図４のステップＳ２１〜Ｓ２６と同様に、ステップＳ３２、Ｓ３３、Ｓ３４、Ｓ３５、Ｓ３６、Ｓ３７が実行される。
【００４０】
ステップＳ３８において、シミュレーション制御部２２は、ブレークポイントに対応する領域にデータが書き込まれたか否かを判断する。データが書き込まれていない場合、処理はステップＳ３４に戻る。データが書き込まれた場合、処理はステップＳ３９に移行する。
ステップＳ３９、Ｓ４０では、図４のステップＳ２７、Ｓ２８と同様に、シミュレーション結果が比較され、比較結果が出力される。
【００４１】
図６は、第１の実施形態の検証動作の別の例を示している。上述した図４と同じ動作については詳細な説明を省略する。
この例では、シミュレーション制御部２２は、予め設定された実行カウンタのカウンタ値（ブレークポイント）を検出するまで１命令ずつシミュレーションを実行し、設定されたカウンタ値を検出した時点で、それまでのシミュレーション結果を比較する。カウンタ値は、ワークステーションＷＳの操作者が、入力装置３２を介して設定する。ここで、実行カウンタは、プロセッサのプログラムカウンタに対応する。
【００４２】
まず、ステップＳ４１において、シミュレーション制御部２２は、入力装置３２から設定されたカウンタ値（ブレークポイント）を読み込む。次に、図４のステップＳ２１〜Ｓ２６と同様に、ステップＳ４２、Ｓ４３、Ｓ４４、Ｓ４５、Ｓ４６、Ｓ４７が実行される。
ステップ４８において、シミュレーション制御部２２は、実行カウンタのカウンタ値が設定されたカウンタ値になったか否かを判定する。カウンタ値が一致しない場合、処理はステップＳ４４に戻る。カウンタ値が一致した場合、処理はステップＳ４９に移行する。
【００４３】
ステップＳ４９、Ｓ５０では、図４のステップＳ２７、Ｓ２８と同様に、シミュレーション結果が比較され、比較結果が出力される。
なお、シミュレーション制御部２２は、ブレークポイント等、入力装置３２を介して設定された内容に応じて、図４〜図６に示したフローのいずれかを実施する。
【００４４】
以上、本実施形態では、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０を同期制御することで、命令毎に動作させたので、シミュレーションの比較結果を命令単位で出力させることができる。シミュレーションの比較結果の出力量を細分化できるため、エラーの発生した場所を迅速に特定でき、エラーに対するフィードバック（デバッグ）を効率よく実施できる。プロセッサが実行する命令毎にシミュレーション結果を比較することで、プロセッサの動作を一命令毎に着実に検証できる。プロセッサが実行する複数の命令毎にシミュレーション結果を比較することで、検証時間を短縮できる。この結果、シミュレーションの実行後の比較検証を効率よく実施できる。動作検証が効率よく実行できるため、プロセッサの開発期間を短縮できる。
【００４５】
予めブレークポイントが設定されたメモリ領域またはレジスタに対するデータの書き込みが発生したときに、両シミュレーション結果を比較する。あるいは、実行カウンタのカウンタ値が、予めブレークポイントとして設定されカウンタ値と一致したときに、両シミュレーション結果を比較する。特定のイベントが発生したときにシミュレーション結果を比較することで、そのイベントに着目した動作検証ができる。この結果、シミュレーションの実行後の比較検証を効率よく実施でき、プロセッサの開発期間を短縮できる。
【００４６】
シミュレーション制御部２２は、ソフトウエアシミュレータ２０およびハードウエアシミュレータ３０における実行カウンタのカウンタ値が一致するまで、このカウンタ値を調整する。このため、パイプライン処理を行っているプロセッサにおいても、ハードウエアシミュレータ３０とソフトウエアシミュレータ２０との動作を、確実に同期させることができ、精度の高いシミュレーションが実行できる。
【００４７】
プロセッサの動作種別に対応して予め分類された命令グループおよびオペランドグループから選択して命令セットを作成し、これを繰り返すことで試験パターンを生成する。このため、従来人手で行っていた試験パターンを自動生成できる。この結果、シミュレーション環境の立ち上げ期間を短縮でき、プロセッサの開発期間を短縮できる。
【００４８】
図７は、本発明の第２の実施形態を示している。この実施形態は、請求項１、請求項２、請求項４、請求項５に対応している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態では、第１の実施形態の命令発生テーブル１２の代わりに命令発生テーブル１２Ａが形成されている。その他の構成は、第１の実施形態と同じである。すなわち、ワークステーションＷＳは、命令をフェッチして動作するプロセッサの動作検証に利用される。
【００４９】
図８は、図７に示した命令発生テーブル１２Ａの詳細を示している。
命令発生テーブル１２Ａは、第１の実施形態の命令発生テーブル１２の各命令グループに重み付けを記載する領域を追加して形成されている。その他の構成は、命令発生テーブル１２と同じである。
重み付けは、命令グループの発生頻度を表している。例えば、命令グループが１００回選択されるとき、命令グループＩＮＳ−Ｇｒ．１は２回選択され、命令グループＩＮＳ−Ｇｒ．２は５回選択される。重み付けの数値は、システムに搭載されたプロセッサの実際の動作に基づいて統計的に求められている。
【００５０】
このように、乱数を単に用いて命令グループを選択するのではなく、命令グループの発生頻度を重み付けとして設定することで、プロセッサの実使用状態により近いシミュレーションを実行できる。
以上、この実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。さらに、この実施形態では、命令発生テーブル１２Ａに各命令グループの重み付けを記載する領域を形成したので、命令グループの発生頻度を、システムに搭載されたプロセッサの実際の動作に近づけることができ、プロセッサの実使用状態により近いシミュレーションを実行できる。
【００５１】
図９は、本発明の第３の実施形態を示している。この実施形態は、請求項１〜請求項５に対応している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態では、第１の実施形態に外部割り込みの検証機能が付加されている。外部割り込みとは、プロセッサの割り込み端子を使用した割り込みを示しており、例えば、ＤＭＡ転送など、アドレスバス、データバスをプロセッサから開放させたいときに使用される。
【００５２】
外部割り込みの検証機能以外の基本的な構成は、第１の実施形態と同じである。すなわち、ワークステーションＷＳは、命令をフェッチして動作するプロセッサの動作検証に利用される。
ワークステーションＷＳは、第１の実施形態の構成に加えて、割り込み制御部３８を有している。また、ソフトウエアシミュレータ２０Ｂ、シミュレーション制御部２２Ｂ、およびハードウエアシミュレータ３０Ｂは、追加された外部割り込みの検証機能を実現するために、第１の実施形態のソフトウエアシミュレータ２０、シミュレーション制御部２２、およびハードウエアシミュレータ３０を変更して形成されている。ソフトウエアシミュレータ２０Ｂ、シミュレーション制御部２２Ｂ、およびハードウエアシミュレータ３０Ｂの基本的機能は、第１の実施形態のソフトウエアシミュレータ２０、シミュレーション制御部２２、およびハードウエアシミュレータ３０と同じである。
【００５３】
割り込み制御部３８は、試験仕様書から作成される割り込み仕様に基づいて形成される制御プログラムである。割り込み制御部３８は、シミュレーション制御部２２Ｂから通知されるハードウエアシミュレータ３０Ｂの実行状況を監視する。割り込み制御部３８は、ハードウエアシミュレータ３０Ｂの実行状況が、外部割り込みを挿入する条件と一致したときに、ハードウエアシミュレータ３０Ｂに対して割り込み要求を行う。
【００５４】
ハードウエアシミュレータ３０Ｂは、割り込み制御部３８からの割り込み要求を受けて、割り込み処理をし、割り込みアクノリッジＩＡＣＫをシミュレーション制御部２２Ｂに出力する。シミュレーション制御部２２Ｂは、割り込みアクノリッジＩＡＣＫをソフトウエアシミュレータ２０Ｂへの割り込み要求ＩＲＥＱとして出力する。ソフトウエアシミュレータ２０Ｂは、割り込み要求ＩＲＥＱを受けて割り込み処理をする。
【００５５】
外部割り込みは、命令の実行およびプロセッサの動作とは非同期に発生するイベントである。このため、外部割り込みは、試験パターンに記述するのではなく、試験パターンとは独立に発生させる方が、プロセッサの実際の動作を忠実に再現できる。このために、割り込み制御部３８が生成されている。
また、プロセッサのほとんどは、パイプライン処理されている。パイプライン処理されているプロセッサでは、外部割り込みが発生したときに、プロセッサの外部状態（命令フェッチ状態）と、プロセッサの実際の内部状態とはずれており、そのずれ量も一定ではない。ハードウエアシミュレータ（ＲＴＬモデル）３０Ｂは、パイプライン処理を再現できるが、ソフトウエアシミュレータ（ＩＳＳ）２０Ｂは、パイプライン処理を再現できない。ソフトウエアシミュレータ２０Ｂへの外部割り込みを、ハードウエアシミュレータ３０Ｂの割り込みアクノリッジＩＡＣＫに同期して発生させることで、外部割り込みに対するシミュレーションタイミングを、ハードウエアシミュレータ３０Ｂとソフトウエアシミュレータ２０Ｂとで同期させることができる。
【００５６】
図１０は、第３の実施形態の検証動作を示している。図に示したフローは、シミュレーション制御部２２の基本的な動作を示している。このフローは、外部割り込みの設定がされているときの処理を示している。
まず、図４のステップＳ２１〜Ｓ２５と同様に、ステップＳ５２、Ｓ５２、Ｓ５３、Ｓ５４、Ｓ５５が実行される。
【００５７】
次に、ステップＳ５６において、シミュレーション制御部２２Ｂは、割り込み制御部３８にハードウエアシミュレータ３０Ｂの実行状況を通知する。
次に、図４のステップＳ２６と同様に、ステップＳ５７が実行される。
ステップＳ５８において、シミュレーション制御部２２Ｂは、ハードウエアシミュレータ３０Ｂから割り込みアクノリッジＩＡＣＫを受けたか否かを判定する。割り込みアクノリッジＩＡＣＫを受けていない場合、処理はステップＳ５３に戻る。割り込みアクノリッジＩＡＣＫを受けた場合、処理はステップＳ５９に移行する。
【００５８】
ステップＳ５９において、シミュレーション制御部２２Ｂは、ソフトウエアシミュレータ２０Ｂに割り込み要求ＩＲＥＱを通知し、ソフトウエアシミュレータ２０Ｂに割り込み処理をさせる。
ステップＳ６０、Ｓ６１では、図４のステップＳ２７、Ｓ２８と同様に、シミュレーション結果が比較され、比較結果が出力される。
【００５９】
なお、シミュレーション制御部２２は、図１０に示したフロー以外にも、ブレークポイント等、入力装置３２を介して設定された内容に応じて、第１の実施形態の図４〜図６に示したフローのいずれかを実施する。
以上、この実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。さらに、この実施形態では、割り込み制御部３８は、シミュレーション制御部２２Ｂから通知されるハードウエアシミュレータ３０Ｂの状態が予め設定された状態になったときに、ハードウエアシミュレータ３０Ｂに外部割り込みをする。また、シミュレーション制御部２２Ｂは、ハードウエアシミュレータ３０Ｂからの割り込みアクノリッジＩＡＣＫをソフトウエアシミュレータ２０Ｂへの外割り込み要求ＩＲＥＱとして出力する。このため、ハードウエアシミュレータ３０Ｂとソフトウエアシミュレータ２０Ｂの割り込みタイミングを同期させることができる。この結果、ランダムに発生するイベントである外部割り込みに対するプロセッサの動作検証を確実かつ正確に実行できる。
【００６０】
なお、上述した第２の実施形態では、命令発生テーブル１２Ａに各命令グループの重み付けを記載する領域を形成し、命令グループの発生頻度を制御した例について述べた。しかしながら、本発明はかかる実施形態に限定されるものではない。例えば、命令発生テーブルに各命令コードの重み付けを記載する領域を形成し、命令コードの発生頻度を制御してもよい。あるいは、命令発生テーブルに各オペランドの重み付けを記載する領域を形成し、オペランドの発生頻度を制御してもよい。
【００６１】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）　プロセッサを試験するための試験仕様から生成される試験パターンをソフトウエアシミュレータおよびハードウエアシミュレータに与えてシミュレーションをそれぞれ実行し、両シミュレーション結果を比較することで、動作を検証するプロセッサの動作検証方法であって、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、同期制御し、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、プロセッサが実行する命令毎にそれぞれ動作させ、
両シミュレーション結果を比較することで、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの記述が一致しているか否かを、少なくとも１命令単位で判定することを特徴とするプロセッサの動作検証方法。
【００６２】
（付記２）　付記１記載のプロセッサの動作検証方法において、
前記ソフトウエアシミュレータのシミュレーション結果を期待値とし、
前記両シミュレーション結果が不一致の場合に、前記ハードウエアシミュレータの記述に誤りがあることを表示装置に出力することを特徴とするプロセッサの動作検証方法。
【００６３】
（付記３）　付記１記載のプロセッサの動作検証方法において、
前記ハードウエアシミュレータのシミュレーション結果を期待値とし、
前記両シミュレーション結果が不一致の場合に、前記ソフトウエアシミュレータの記述に誤りがあることを表示装置に出力することを特徴とするプロセッサの動作検証方法。
【００６４】
（付記４）　付記１記載のプロセッサの動作検証方法において、
前記プロセッサが実行する命令毎に、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証方法。
（付記５）　付記１記載のプロセッサの動作検証方法において、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータに記述されたメモリ領域およびレジスタ領域の少なくともいずれかに対するデータの書き込みを監視し、
メモリ領域およびレジスタ領域のうち、予め設定された所定の領域にデータが書き込まれたことを検出したときに、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証方法。
【００６５】
（付記６）　付記１記載のプロセッサの動作検証方法において、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータにおいて、前記プロセッサが命令をフェッチする領域に対応する実行カウンタを監視し、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの実行カウンタのカウンタ値が、予め設定された所定のカウンタ値と一致したときに、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証方法。
【００６６】
（付記７）　付記６記載のプロセッサの動作検証方法において、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータにおける前記実行カウンタのカウンタ値の差を計測し、
前記カウンタ値が一致するまで、このカウンタ値を調整することを特徴とするプロセッサの動作検証方法。
【００６７】
（付記８）　付記１記載のプロセッサの動作検証方法において、
前記ハードウエアシミュレータの状態を監視し、
前記ハードウエアシミュレータの状態が、予め設定された外部割り込みを発生させる状態になったときに、前記ハードウエアシミュレータに対して外部割り込みを要求し、
前記ハードウエアシミュレータが前記外部割り込み要求を受け付けたときに、前記ソフトウエアシミュレータに対して前記外部割り込みを要求することを特徴とするプロセッサの動作検証方法。
【００６８】
（付記９）　付記１記載のプロセッサの動作検証方法において、
前記プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループをランダムに選択し、
前記命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループを選択し、
選択した命令グループの中から、命令コードをランダムに選択し、
選択したオペランドグループの中から、少なくとも１つのオペランドをランダムに選択し、
選択した命令コードと選択したオペランドとからなる１つの命令セットを前記試験パターンとして生成することを特徴とするプロセッサの動作検証方法。
【００６９】
（付記１０）　付記１記載のプロセッサの動作検証方法において、
前記プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループをランダムに選択し、
前記命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループを選択し、
選択した命令グループの中から、複数の命令コードをランダムに選択し、
選択したオペランドグループの中から、選択した複数の命令コード毎に少なくとも１つのオペランドをランダムに選択し、
上記選択を繰り返して、選択した命令コードと選択したオペランドとからなる複数の命令セットを前記試験パターンとして生成することを特徴とするプロセッサの動作検証方法。
【００７０】
（付記１１）　付記９または付記１０記載のプロセッサの動作検証方法において、
予め設定された前記各命令グループの重み付けにしたがって、前記命令グループをランダムに選択することを特徴とするプロセッサの動作検証方法。
（付記１２）　付記９または付記１０記載のプロセッサの動作検証方法において、
予め設定された前記各命令コードの重み付けにしたがって、前記命令コードをランダムに選択することを特徴とするプロセッサの動作検証方法。
【００７１】
（付記１３）　付記９または付記１０記載のプロセッサの動作検証方法において、
予め設定された前記各オペランドの重み付けにしたがって、前記オペランドをランダムに選択することを特徴とするプロセッサの動作検証方法。
（付記１４）　プロセッサを試験するための試験仕様から生成される試験パターンをソフトウエアシミュレータおよびハードウエアシミュレータに与えてシミュレーションをそれぞれ実行し、両シミュレーション結果を比較することで、動作を検証するプロセッサの動作検証システムであって、
前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、同期制御し、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータを、プロセッサが実行する命令毎にそれぞれ動作させ、両シミュレーション結果を比較することで、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの記述が一致しているか否かを、少なくとも１命令単位で判定するシミュレーション制御部を備えていることを特徴とするプロセッサの動作検証システム。
【００７２】
（付記１５）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ソフトウエアシミュレータのシミュレーション結果を期待値とし、前記両シミュレーション結果が不一致の場合に、前記ハードウエアシミュレータの記述に誤りがあることを表示装置に出力することを特徴とするプロセッサの動作検証システム。
【００７３】
（付記１６）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ハードウエアシミュレータのシミュレーション結果を期待値とし、前記両シミュレーション結果が不一致の場合に、前記ソフトウエアシミュレータの記述に誤りがあることを表示装置に出力することを特徴とするプロセッサの動作検証システム。
【００７４】
（付記１７）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記プロセッサが実行する命令毎に、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証システム法。
（付記１８）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータに記述されたメモリ領域およびレジスタ領域の少なくともいずれかに対するデータの書き込みを監視し、メモリ領域およびレジスタ領域のうち、予め設定された所定の領域にデータが書き込まれたことを検出したときに、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証システム。
【００７５】
（付記１９）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータにおいて、前記プロセッサが命令をフェッチする領域に対応する実行カウンタを監視し、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータの実行カウンタのカウンタ値が、予め設定された所定のカウンタ値と一致したときに、両シミュレーション結果を比較することを特徴とするプロセッサの動作検証システム。
【００７６】
（付記２０）　付記１９記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ソフトウエアシミュレータおよび前記ハードウエアシミュレータにおける前記実行カウンタのカウンタ値の差を計測し、前記カウンタ値が一致するまで、このカウンタ値を調整することを特徴とするプロセッサの動作検証システム。
【００７７】
（付記２１）　付記１４記載のプロセッサの動作検証システムにおいて、
前記シミュレーション制御部は、前記ハードウエアシミュレータの状態を監視し、前記ハードウエアシミュレータの状態が、予め設定された外部割り込みを発生させる状態になったときに、前記ハードウエアシミュレータに対して外部割り込みを要求し、前記ハードウエアシミュレータが前記外部割り込み要求を受け付けたときに、前記ソフトウエアシミュレータに対して前記外部割り込みを要求することを特徴とするプロセッサの動作検証システム。
【００７８】
（付記２２）　付記１４記載のプロセッサの動作検証システムにおいて、
前記プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループをランダムに選択し、前記命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループを選択し、選択した命令グループの中から、命令コードをランダムに選択し、選択したオペランドグループの中から、少なくとも１つのオペランドをランダムに選択し、選択した命令コードと選択したオペランドとからなる１つの命令セットを前記試験パターンとして生成する試験パターン発生部を備えていることを特徴とするプロセッサの動作検証システム。
【００７９】
（付記２３）　付記１４記載のプロセッサの動作検証システムにおいて、
前記プロセッサの動作種別に対応して予め分類された命令コードを含む複数の命令グループの中から、命令グループをランダムに選択し、前記命令グループにそれぞれ対応して予め分類されたオペランドを含む複数のオペランドグループの中から、選択された命令グループに対応するオペランドグループを選択し、選択した命令グループの中から、複数の命令コードをランダムに選択し、選択したオペランドグループの中から、選択した複数の命令コード毎に少なくとも１つのオペランドをランダムに選択し、上記選択を繰り返して、選択した命令コードと選択したオペランドとからなる複数の命令セットを前記試験パターンとして生成する試験パターン発生部を備えていることを特徴とするプロセッサの動作検証システム。
【００８０】
（付記２４）　付記２２または付記２３記載のプロセッサの動作検証システムにおいて、
前記試験パターン発生部は、予め設定された前記各命令グループの重み付けにしたがって、前記命令グループをランダムに選択することを特徴とするプロセッサの動作検証システム。
【００８１】
（付記２５）　付記２２または付記２３記載のプロセッサの動作検証システムにおいて、
前記試験パターン発生部は、予め設定された前記各命令コードの重み付けにしたがって、前記命令コードをランダムに選択することを特徴とするプロセッサの動作検証システム。
【００８２】
（付記２６）　付記２２または付記２３記載のプロセッサの動作検証システムにおいて、
前記試験パターン発生部は、予め設定された前記各オペランドの重み付けにしたがって、前記オペランドをランダムに選択することを特徴とするプロセッサの動作検証システム。
【００８３】
付記４のプロセッサの動作検証方法および付記１７のプロセッサの動作検証システムでは、ソフトウエアシミュレータおよびハードウエアシミュレータのシミュレーション結果は、プロセッサが実行する命令毎に、比較される。このため、プロセッサの動作を一命令毎に着実に検証できる。
付記６のプロセッサの動作検証方法および付記１９のプロセッサの動作検証システムでは、ソフトウエアシミュレータおよびハードウエアシミュレータにおいて、プロセッサが命令（命令コードまたはオペランド）をフェッチする領域に対応する実行カウンタが監視される。そして、ソフトウエアシミュレータおよびハードウエアシミュレータの実行カウンタのカウンタ値が、予め設定された所定のカウンタ値と一致したときに、両シミュレーション結果が比較される。シミュレーションを実行カウンタのカウンタ値に応じて停止できるため、例えば、既に検証が完了している一連の命令については、比較検証を省略化もしくは簡略化できる。この結果、シミュレーションの実行後の比較検証を効率よく実施でき、プロセッサの開発期間を短縮できる。
【００８４】
付記７のプロセッサの動作検証方法および付記２０のプロセッサの動作検証システムでは、ソフトウエアシミュレータおよびハードウエアシミュレータにおける実行カウンタのカウンタ値の差が計測される。そして、カウンタ値が一致するまで、このカウンタ値が調整される。最近のプロセッサのほとんどは、パイプライン処理を行っている。このため、命令コードのフェッチ動作とフェッチした命令コードに対応するプロセッサ動作とは、時間的なずれが生じる。パイプライン処理は、ハードウエアシミュレータでは実現されるが、ソフトウエアシミュレータでは実現できない。このため、実行カウンタのカウンタ値を調整することで、ハードウエアシミュレータとソフトウエアシミュレータとの動作を、確実に同期させることができ、精度の高いシミュレーションが実行できる。
【００８５】
付記１１のプロセッサの動作検証方法および付記２４のプロセッサの動作検証システムでは、予め設定された各命令グループの重み付けにしたがって、命令グループがランダムに選択される。このため、命令グループの発生頻度を、システムに搭載されたプロセッサの実際の動作に近づけることができ、プロセッサの実使用状態により近いシミュレーションを実行できる。
【００８６】
付記１２のプロセッサの動作検証方法および付記２５のプロセッサの動作検証システムでは、予め設定された各命令コードの重み付けにしたがって、命令コードがランダムに選択される。このため、命令コードの発生頻度を、システムに搭載されたプロセッサの実際の動作に近づけることができ、プロセッサの実使用状態により近いシミュレーションを実行できる。
【００８７】
付記１３のプロセッサの動作検証方法および付記２６のプロセッサの動作検証システムでは、予め設定された各オペランドの重み付けにしたがって、オペランドがランダムに選択される。このため、オペランドの発生頻度を、システムに搭載されたプロセッサの実際の動作に近づけることができ、プロセッサの実使用状態により近いシミュレーションを実行できる。
【００８８】
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【００８９】
【発明の効果】
請求項１のプロセッサの動作検証方法および請求項５のプロセッサの動作検証システムでは、一度に比較されるシミュレーション結果の量が削減できるため、エラーの発生した場所を迅速に特定できる。この結果、シミュレーションの実行後の比較検証を効率よく実施できる。動作検証が効率よく実行できるため、プロセッサの開発期間を短縮できる。
請求項２のプロセッサの動作検証方法では、シミュレーションの実行後の比較検証を効率よく実施でき、プロセッサの開発期間を短縮できる。
【００９０】
請求項３のプロセッサの動作検証方法では、ハードウエアシミュレータとソフトウエアシミュレータの割り込みタイミングを同期させることができる。この結果、ランダムに発生するイベントである外部割り込みに対するプロセッサの動作検証を確実かつ正確に実行できる。
請求項４のプロセッサの動作検証方法では、従来人手で行っていた試験パターンを自動生成できる。この結果、シミュレーション環境の立ち上げ期間を短縮でき、プロセッサの開発期間を短縮できる。
【図面の簡単な説明】
【図１】本発明のプロセッサの動作検証方法の第１の実施形態を示すブロック図である。
【図２】図１に示した命令発生テーブルの詳細を示す説明図である。
【図３】図１に示した試験パターン発生部の動作を示すフローチャートである。
【図４】第１の実施形態の検証動作を示すフローチャートである。
【図５】第１の実施形態の検証動作の別の例を示すフローチャートである。
【図６】第１の実施形態の検証動作の別の例を示すフローチャートである。
【図７】本発明のプロセッサの動作検証方法の第２の実施形態を示すブロック図である。
【図８】図７に示した命令発生テーブルの詳細を示す説明図である。
【図９】本発明のプロセッサの動作検証方法の第３の実施形態を示すブロック図である。
【図１０】第１の実施形態の検証動作を示すフローチャートである。
【符号の説明】
１０　試験パターン発生部
１２、１２Ａ　命令発生テーブル
１４　アセンブラソースファイル
１６　アセンブラ／リンカ
１８　オブジェクトファイル
２０、２０Ｂ　ソフトウエアシミュレータ
２２、２２Ｂ　シミュレーション制御部
２４　フォーマット変換部
２６　メモリファイル
２８　ハードウエアモデルファイル
３０、３０Ｂ　ハードウエアシミュレータ
３２　入力装置
３４　表示装置
３６　出力装置
３８　割り込み制御部
ＩＡＣＫ　割り込みアクノリッジ
ＩＲＥＱ　割り込み要求
ＷＳ　ワークステーション
【図１】
2004086406.tif 000003
【図２】
2004086406.tif 000004
【図３】
2004086406.tif 000005
【図４】
2004086406.tif 000006
【図５】
2004086406.tif 000007
【図６】
2004086406.tif 000008
【図７】
2004086406.tif 000009
【図８】
2004086406.tif 000010
【図９】
2004086406.tif 000011
【図１０】
2004086406.tif 000012