(57)【要約】      （修正有）【課題】実行要求されたプログラムを最適なホストコンピュータに対して実行許可する為の技術を提供すること。【解決手段】ソフトウェアの実行要求をシミュレーション実行受付部（１００）で受けると、ソフトウェアの実行に必要なメモリ使用量をメモリ使用量予測部（１０１）で求め、求めたメモリ使用量を許容する搭載メモリ容量を有するコンピュータが属するグループ（１３０，１３１，１３２）に対応するキュー（１２０、１２１、１２２）に、ソフトウェアの実行ジョブを格納し、実行ジョブを格納したキューに対応するグループに属するコンピュータの何れかに実行ジョブの使用許可を与える。【選択図】  図１
2006178663.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータで共有するソフトウェアを保持している情報処理装置であって、
前記複数のコンピュータを搭載メモリ容量に応じて複数のグループに分けた場合に、それぞれのグループに対応するキューを保持するキュー保持手段と、
前記ソフトウェアの実行要求を受けると、前記ソフトウェアの実行に必要なメモリ使用量を求める計算手段と、
前記計算手段が求めたメモリ使用量を許容する搭載メモリ容量を有するコンピュータが属するグループに対応するキューに、前記ソフトウェアの実行ジョブを格納する格納手段と
前記格納手段が実行ジョブを格納したキューに対応するグループに属するコンピュータの何れかに前記実行ジョブの使用許可を与える許可手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記実行ジョブは、指示された規模の回路の論理検証のソフトウェアの実行ジョブであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
入力データを処理して後段に出力するデータ処理ブロックを複数個直列に結合した状態で備え、データ入力側のデータ処理ブロックにデータを入力した後に後段のデータ処理ブロックを順次動作させることで、それぞれのデータ処理ブロックの動作検証処理を行う検証装置であって、
それぞれのデータ処理ブロックについて、
データ処理ブロックの出力を所定の時間間隔で監視する監視手段と、
前記監視手段が監視している出力を保存する保存手段と、
前記監視手段が監視した出力が本来従うべき正解データを保持する保持手段と、
前記監視手段が監視した出力が、当該出力に対応する正解データと一致するか否かを判断する判断手段と
を備え、
出力側の末端データ処理ブロックについては当該末端データ処理ブロックの前記監視手段、前記保存手段、前記判断手段を動作させると共に、前記末端データ処理ブロック以外のデータ処理ブロックについては前記保存手段のみを動作させて前記動作検証処理を行い、当該判断手段が一致していないと判断した場合には、それぞれのデータ処理ブロックの出力を、当該判断時に最も最近の時点でそれぞれのデータ処理ブロックの前記保存手段が保存した出力値に再設定してから、それぞれのデータ処理ブロックの動作を再開させる制御手段と、
前記制御手段による動作再開後、それぞれのデータ処理ブロックの前記判断手段のうち、一致していないと判断した判断手段を有するデータ処理ブロックを特定する特定手段と
を備えることを特徴とする検証装置。
【請求項４】
前記特定手段は、前記制御手段による動作再開後から前記時点までの間に、それぞれのデータ処理ブロックの前記判断手段のうち、一致していないと判断した判断手段を有するデータ処理ブロックを特定することを特徴とする請求項３に記載の検証装置。
【請求項５】
複数のコンピュータで共有するソフトウェアを保持しており、当該複数のコンピュータを搭載メモリ容量に応じて複数のグループに分けた場合に、それぞれのグループに対応するキューを保持するキュー保持手段を備える情報処理装置が行う情報処理方法であって、
前記ソフトウェアの実行要求を受けると、前記ソフトウェアの実行に必要なメモリ使用量を求める計算工程と、
前記計算工程で求めたメモリ使用量を許容する搭載メモリ容量を有するコンピュータが属するグループに対応するキューに、前記ソフトウェアの実行ジョブを格納する格納工程と
前記格納工程で実行ジョブを格納したキューに対応するグループに属するコンピュータの何れかに前記実行ジョブの使用許可を与える許可工程と
を備えることを特徴とする情報処理方法。
【請求項６】
入力データを処理して後段に出力するデータ処理ブロックを複数個直列に結合した状態で備え、データ入力側のデータ処理ブロックにデータを入力した後に後段のデータ処理ブロックを順次動作させることで、それぞれのデータ処理ブロックの動作検証処理を行う検証装置の制御方法であって、
それぞれのデータ処理ブロックについて、
データ処理ブロックの出力を所定の時間間隔で監視する監視工程と、
前記監視工程で監視している出力を保存する保存工程と、
前記監視工程で監視した出力が本来従うべき正解データを保持する保持工程と、
前記監視工程で監視した出力が、当該出力に対応する正解データと一致するか否かを判断する判断工程と
を備え、
出力側の末端データ処理ブロックについては当該末端データ処理ブロックの前記監視工程、前記保存工程、前記判断工程における処理を動作させると共に、前記末端データ処理ブロック以外のデータ処理ブロックについては前記保存工程における処理のみを動作させて前記動作検証処理を行い、当該判断工程で一致していないと判断した場合には、それぞれのデータ処理ブロックの出力を、当該判断時に最も最近の時点でそれぞれのデータ処理ブロックの前記保存工程で保存した出力値に再設定してから、それぞれのデータ処理ブロックの動作を再開させる制御工程と、
前記制御工程による動作再開後、それぞれのデータ処理ブロックの前記判断工程のうち、一致していないと判断した判断工程を有するデータ処理ブロックを特定する特定工程と
を備えることを特徴とする検証装置の制御方法。
【請求項７】
コンピュータに請求項５に記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを格納することを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有されるソフトウェアの管理に係る技術に関するものである。
【背景技術】
【０００２】
半導体回路の論理検証に関して、シミュレーションツールライセンスやホストコンピュータの有効的活用を目的として、これらリソースを一括管理し、複数の人でこれを共有するということが行われている。例えば論理検証シミュレーションを行う１テスター（論理検証者）は、これらリソースを管理しているシステム（プログラム）に対してリソース要求を行い、管理システムはテスターに対して順番にリソース、すなわちツールライセンスやホストコンピュータを割り当てる。シミュレーションが終了すると、リソースは開放され、管理システムの管理下に戻る。
【０００３】
この様なシステムにより、各テスターは、ツールライセンスの数やホストコンピュータの使用状況を気にすることなく、シミュレーションを行う事ができる。既にシミュレーションが流れているホストコンピュータで、さらに別のシミュレーションを流すと、ＣＰＵの仕事量は限られているため、シミュレーション速度は遅くなる。このため、ホストコンピュータが複数ある場合には、同じホストコンピュータでなるべく少ないシミュレーションが行われるように、リソース管理するという事が行われている。
【０００４】
また、ツールライセンスを一括管理せず、各テスターに割り当てた場合では、テスターがシミュレーションを行っていないときには、リソースが遊んでいる状態になるにも関わらず、他のテスターはこのリソースを使用することができない。さらに、リソースの数がテスターの数より少ない場合には、全てのテスターにリソースを割り当てられない。
【０００５】
よって、リソースを一括管理するシステム（プログラム）により、リソースを使いたい人に対して、使いたい数だけ割り当てるという事が実現でき、リソースを有効に利用する事ができている。
【０００６】
また、年々拡大する電子機器の性能への要求を満たすため、大規模集積回路（以下LSI）は高機能化・高集積化を続けている。中央制御回路（以下CPU）と、このCPUと電気的に接続されている周辺回路とを内蔵し、大規模化したシステムLSI、このシステムLSIの大規模化・複雑化により、論理回路の設計期間の長期化が問題になっており、とりわけこの回路が正しく動作することを確認する機能検証が大きな割合を占めている。そこで、効率良く検証を行うことが重要になっている。
【０００７】
一般に、システムLSI等の集積回路の為の論理検証テストにおいては、集積回路に含まれる複数の周辺回路のそれぞれを個別に検証するテスト（以下、個別検証という）と、複数の周辺回路を同時に動作させて検証を行うテスト（以下、システム検証という）とは、別々に記述されていたが、これを改善し、個別検証のためのテストをシステム検証で流用可能とし、精度の高いシステム検証を効率よく行う発明が特許文献２に開示されている。
【０００８】
このような発明では、複数の個別検証テストをシステム検証テストとして同時に起動させる仕組み、およびシステム検証テストにおいて、各個別検証テストに記載された、CPUコマンドおよび、メモリへのアクセス要求が衝突して誤動作を発生させないための仕組みが記載されている。
【０００９】
また、データパスの個別検証テストをシステム検証で流用する仕組みが従来から開示されている。
【００１０】
ここで、一般的なシステムＬＳＩの集積回路について説明する。図６は、一般的なシステムＬＳＩの集積回路の基本構成を示すブロック図である。同図において６０１はシステムＬＳＩの集積回路、６０２は以下説明する各部を制御すると共に、後述する検証処理を実行するＣＰＵである。６０４はメモリを内蔵し、このメモリへのデータの読み書きを制御するためのメモリコントローラである。以下説明するプログラムやデータはこのメモリ内に保持されている。６０５，６０６はそれぞれ本システムＬＳＩの集積回路と外部とのデータ通信を行うためのインターフェースとして機能するＩ／Ｏデバイスである。６０７は、Ｉ／Ｏデバイスを介してメモリコントローラ６０４が有するメモリに入力されたデータに対して、画像処理などの各種の処理を行うことで、このデータの加工処理を行うデータパスである。６０３は上述の各部を繋ぐバスである。
【００１１】
このような構成を有するシステムＬＳＩの集積回路において、先ず、データパス６０７が図７に示す如く、３つのデータ処理ブロックが直列につながっている構成を有する場合の、各データ処理ブロックの検証処理について説明する。図７は、３つのデータ処理ブロックが直列につながっているデータパス６０７の構成を示すブロック図である。７０２から７０４はそれぞれデータ処理ブロックで、それぞれこの順に処理を行う。
【００１２】
図８は、データ処理ブロック（同図ではデータ処理１ブロック）の個別検証の処理の流れを示す図である。同図において検証に用いられる入力データファイル８０１は、入力バスモデル８０２により解釈され、検証対象であるデータ処理１ブロック８０６に送られる。
【００１３】
この時の動作モード等を設定するためのパラメータデータファイル８０３はＣＰＵ  Ｉ／Ｆモデル８０５を通して、動作モードが設定され、データ処理１ブロック８０６は、設定された動作モードに従って、入力データファイル８０１を用いて動作する。この動作結果は出力バスモデル８０７を通して、出力データファイル８１０として出力される。
【００１４】
一方、データ処理１ブロック８０６が出力すべき正解データとしての期待値データファイル８０８は予め、正解データを生成するデータ処理１プログラム８０４を用いて、入力データファイル８０１、パラメータデータファイル８０３より生成し、検証対象であるデータ処理１ブロック８０６の処理が終了すると、終了結果は期待値データファイル８０８と比較され、データ処理１ブロック８０６が期待した動作を行ったか否かを検証する。
【００１５】
また、図３示した検証方法ではデータ処理１ブロック８０６が動作を終了した後に期待値比較を行うとしたが、別な方法として、図１１に示すような方法も一般的に知られている。
【００１６】
図１１は、上記処理とは異なる、データ処理ブロック（同図ではデータ処理１ブロック）の個別検証の処理の流れを示す図である。
【００１７】
検証対象回路であるデータ処理１ブロック１１０６にデータを入力する方法、パラメータの設定方法は共に図３に示したものもと同じであるが、期待値の比較方法が異なっている。
【００１８】
図１１では、出力バスモデル１１０７はデータ処理１ブロック１１０６とのハンドシェイク動作のみを行い、出力データファイルは作成しない。データ処理１ブロック１１０６と出力バスモデル１１０７をつなぐバスの仕様がハンドシェイクを必要としないものである場合には、必ずしも出力バスモデル１１０７は必要としない。この検証環境では新たにデータ１モニタ１１１１を設けた。
【００１９】
データ１モニタ１１１１は、データ処理１ブロック１１０６が出力する処理結果データを各クロックサイクル毎に監視し、予め作成された期待値１データファイル１１０８とオン・ザ・フライで比較する。この検証環境は図８の検証環境と比して、オン・ザ・フライで期待値比較を行っているため、データ処理１ブロック１１０６が処理の途中で期待した動作を行わなかった場合であっても、ブロックが全ての処理を終了する前にErrorとして検出することができ、余計なシミュレーションを行わなくてよい。
【００２０】
このデータ処理１ブロックの検証において、従来では、図９に示したテスト記述を定義し、実行する。図９は、従来用いたテスト記述の構成例を示す図である。
【００２１】
同図においてデータ処理１ブロック用シーケンスクラスは、全てのデータ処理ブロックに共通の検証シーケンスを定義する共通検証関数（共通シーケンス基本クラス）を継承して作成したものである。このシーケンスクラスが持つシーケンス関数には、データ処理１ブロックの検証シーケンスである、初期化、パラメータ設定、期待値作成、テスト開始、処理終了待ち、期待値比較等の処理が定義されている。また、この順に実行することも定義されている（同図では番号が付けてある順に実行する）。そして、このデータ処理１ブロック用シーケンスクラスと共通検証関数とを用いる事により、データ処理ブロック１の個別検証を行う。このような検証処理については周知のものであるので、これに関する詳細な説明は省略する。
【００２２】
また、図７に示す如く、データ処理ブロックが複数の場合にはそれぞれについてシーケンスクラスを同様に作成する。図１０は、図７の各データ処理ブロックについて作成したシーケンスクラス、及びそれぞれのシーケンスの実行順を示す図である。共通検証関数は、各シーケンスクラスのシーケンス関数を逐次呼び出す事によりシステム検証を行うことが出来、かつ個別検証でのテスト記述をシステム検証に流用可能となる。
【００２３】
また、図１２に示すように個別検証で作成したテストベンチから、システム検証のテストベンチを構成することができる。図１２は、それぞれのデータ処理ブロックに対する検証の流れ（（ａ）〜（ｃ））を１つ（（ｄ））にまとめた図である。ここでのシステムは、３つのデータ処理ブロックを有するシステムである。
【００２４】
図１３は、３つのデータ処理ブロックを有するシステムの検証装置の基本構成を示すブロック図である。同図において１３１５は、データ処理１ブロックについて個別検証テストベンチを行うための各部を示すものであり、１３２５は、データ処理２ブロックについて個別検証テストベンチを行うための各部を示すものであり、１３３５は、データ処理３ブロックについて個別検証テストベンチを行うための各部を示すものである。
【００２５】
このように、個別検証で用いられたデータモニタは、システム検証のテストベンチでも有効であり、システム検証において期待値比較エラーが場合にも、どのデータ処理ブロックブロックのバグによるものなのかを特定することが容易である。
【特許文献１】特開２０００−０３１２８４号公報
【特許文献２】特開２００２−５５８４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
検証対象の半導体回路や、これを検証するためのテストベンチ（テストプログラム）は、半導体プロセスの進化に伴い、年々巨大化している。この大きな半導体回路を論理検証するために、この大きなテストベンチを用いてシミュレーションを行うためには、ホストコンピュータに大きなサイズのメモリを搭載する事を必要とする。しかし、メモリは高価なため、全てのホストコンピュータに搭載できる限りの、大きなメモリを積むという事は難しい。
【００２７】
一方、各テスターの検証対象の回路規模やテストベンチの大きさには差があり、全てのテスターが大きなメモリを必要するわけではない。
【００２８】
このため、予算の許す範囲でいくつかのホストコンピュータには、最大限のメモリを搭載するというように、ホストコンピュータによってメモリの搭載量に差をつけ、テストベンチの規模やテストの内容によりホストコンピュータを割り当てを変えたいという要求があった。しかし、前述のようなリソースを一括管理するような方法だけでは不十分であるという問題があった。
【００２９】
すなわち、管理システムによって割り当てられたホストコンピュータのメモリー容量が、テスト（テストベンチ）が必要とするメモリ容量よりも少なかった場合には、シミュレーションは異常終了をしてしまうという問題があった。
【００３０】
本発明は以上の問題に鑑みてなされたものであり、実行要求されたプログラムを最適なホストコンピュータに対して実行許可する為の技術を提供することを目的とする。
【００３１】
また、図１３に示した構成でもって各データ処理ブロックを検証する際、それぞれのデータモニタは、前述の通り、クロックの毎サイクルにおいて処理出力データを監視しており、これら監視する回数が多くなればなるほどシミュレーション時間に影響を与え、遅くなるという問題があった。すなわちデータモニタの数が多ければ多いほどシミュレーション時間が長くなってしまう。これに対し、単純に最終段のデータモニタ、すなわち図１３におけるデータ３モニタ１３３３だけを有効にするという方法もあるが、これではこのモニタにてErrorを検出したときに、どのデータ処理ブロックの処理が正しくなかったのかを特定することが非常に困難であるという問題があった。これらの問題は、集積回路の論理検証を長引かせ、製品開発日程に大きな影響を及ぼす。
【００３２】
よって、本発明の別の目的としては、より高速にデータ処理ブロックの動作検証を行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００３３】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００３４】
即ち、複数のコンピュータで共有するソフトウェアを保持している情報処理装置であって、
前記複数のコンピュータを搭載メモリ容量に応じて複数のグループに分けた場合に、それぞれのグループに対応するキューを保持するキュー保持手段と、
前記ソフトウェアの実行要求を受けると、前記ソフトウェアの実行に必要なメモリ使用量を求める計算手段と、
前記計算手段が求めたメモリ使用量を許容する搭載メモリ容量を有するコンピュータが属するグループに対応するキューに、前記ソフトウェアの実行ジョブを格納する格納手段と
前記格納手段が実行ジョブを格納したキューに対応するグループに属するコンピュータの何れかに前記実行ジョブの使用許可を与える許可手段と
を備えることを特徴とする。
【００３５】
本発明の目的を達成するために、例えば、本発明の検証装置は以下の構成を備える。
【００３６】
即ち、入力データを処理して後段に出力するデータ処理ブロックを複数個直列に結合した状態で備え、データ入力側のデータ処理ブロックにデータを入力した後に後段のデータ処理ブロックを順次動作させることで、それぞれのデータ処理ブロックの動作検証処理を行う検証装置であって、
それぞれのデータ処理ブロックについて、
データ処理ブロックの出力を所定の時間間隔で監視する監視手段と、
前記監視手段が監視している出力を保存する保存手段と、
前記監視手段が監視した出力が本来従うべき正解データを保持する保持手段と、
前記監視手段が監視した出力が、当該出力に対応する正解データと一致するか否かを判断する判断手段と
を備え、
出力側の末端データ処理ブロックについては当該末端データ処理ブロックの前記監視手段、前記保存手段、前記判断手段を動作させると共に、前記末端データ処理ブロック以外のデータ処理ブロックについては前記保存手段のみを動作させて前記動作検証処理を行い、当該判断手段が一致していないと判断した場合には、それぞれのデータ処理ブロックの出力を、当該判断時に最も最近の時点でそれぞれのデータ処理ブロックの前記保存手段が保存した出力値に再設定してから、それぞれのデータ処理ブロックの動作を再開させる制御手段と、
前記制御手段による動作再開後、それぞれのデータ処理ブロックの前記判断手段のうち、一致していないと判断した判断手段を有するデータ処理ブロックを特定する特定手段と
を備える。
【００３７】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００３８】
即ち、複数のコンピュータで共有するソフトウェアを保持しており、当該複数のコンピュータを搭載メモリ容量に応じて複数のグループに分けた場合に、それぞれのグループに対応するキューを保持するキュー保持手段を備える情報処理装置が行う情報処理方法であって、
前記ソフトウェアの実行要求を受けると、前記ソフトウェアの実行に必要なメモリ使用量を求める計算工程と、
前記計算工程で求めたメモリ使用量を許容する搭載メモリ容量を有するコンピュータが属するグループに対応するキューに、前記ソフトウェアの実行ジョブを格納する格納工程と
前記格納工程で実行ジョブを格納したキューに対応するグループに属するコンピュータの何れかに前記実行ジョブの使用許可を与える許可工程と
を備えることを特徴とする。
【００３９】
本発明の目的を達成するために、例えば、本発明の検証装置の制御方法は以下の構成を備える。
【００４０】
即ち、入力データを処理して後段に出力するデータ処理ブロックを複数個直列に結合した状態で備え、データ入力側のデータ処理ブロックにデータを入力した後に後段のデータ処理ブロックを順次動作させることで、それぞれのデータ処理ブロックの動作検証処理を行う検証装置の制御方法であって、
それぞれのデータ処理ブロックについて、
データ処理ブロックの出力を所定の時間間隔で監視する監視工程と、
前記監視工程で監視している出力を保存する保存工程と、
前記監視工程で監視した出力が本来従うべき正解データを保持する保持工程と、
前記監視工程で監視した出力が、当該出力に対応する正解データと一致するか否かを判断する判断工程と
を備え、
出力側の末端データ処理ブロックについては当該末端データ処理ブロックの前記監視工程、前記保存工程、前記判断工程における処理を動作させると共に、前記末端データ処理ブロック以外のデータ処理ブロックについては前記保存工程における処理のみを動作させて前記動作検証処理を行い、当該判断工程で一致していないと判断した場合には、それぞれのデータ処理ブロックの出力を、当該判断時に最も最近の時点でそれぞれのデータ処理ブロックの前記保存工程で保存した出力値に再設定してから、それぞれのデータ処理ブロックの動作を再開させる制御工程と、
前記制御工程による動作再開後、それぞれのデータ処理ブロックの前記判断工程のうち、一致していないと判断した判断工程を有するデータ処理ブロックを特定する特定工程と
を備えることを特徴とする。
【発明の効果】
【００４１】
本発明の構成により、実行要求されたプログラムを最適なホストコンピュータに対して実行許可することができる。
【発明を実施するための最良の形態】
【００４２】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００４３】
［第１の実施形態］
先ず、従来のシステムについて説明する。
【００４４】
＜従来のシステム＞
図３は、従来のシステムの機能構成を示す図である。このシステムは、回路の論理検証を行うためのシミュレーションプログラムを、要求されたコンピュータについて実行許可するというためのものである。
【００４５】
３００はシミュレーション実行受付部で、ユーザからシミュレーション実行要求を受け付ける。シミュレーション実行受付部３００はシミュレーション実行要求が入力されると、要求されたシミュレーションを行うソフトウェア（プログラム）を実行するジョブをシミュレーションキュー３２０に投入する。シミュレーションキュー３２０は、シミュレーション実行受付部３００から投入されたジョブを順次保持するキューとして機能すると共に、ソフトウェアの実行状況を監視する。
【００４６】
なお、ここでは説明上、ソフトウェアのライセンス数を後述するホストコンピュータの数と同数にした。すなわち、シミュレーションを高速に行うため、１つのホストコンピューター上では１つのシミュレーションしか行わない（１つのシミュレーションソフトウェアしか動作しない）ように制御した。
【００４７】
３３０はホストコンピュータ群で、この中に現在処理を行っていない（空いている）ホストコンピュータがあれば、このホストコンピュータにソフトウェアの実行のライセンスを与えると共に、シミュレーションキュー３２０から次に取り出し可能なジョブをこのホストコンピュータに割り当てるので、ホストコンピュータは割り当てられたジョブを実行（ソフトウェアを実行）する。
【００４８】
そしてジョブの実行が完了すると、ホストコンピュータはジョブの実行終了の旨をシミュレーションキュー３２０に通知するので、シミュレーションキュー３２０は、シミュレーションソフトウェアを実行中のホストコンピュータを把握してると共に、シミュレーションキュー３２０に投入されたジョブは、ホストコンピュータ群３３０のうち、空いているホストコンピュータに割り当てられる。
【００４９】
図４は、シミュレーションキュー３２０が行う処理のフローチャートである。先ず、ホストコンピュータ群３３０のうち空いているホストコンピュータがあるかをチェックする（ステップＳ４１０）。そして空いているホストコンピュータが無ければ、シミュレーション実行終了の指示を待ち（ステップＳ４５０）、この指示を受ければ処理をステップＳ４２０に進め、この指示を発したホストコンピュータにシミュレーションソフトウェアのライセンスを発行する（ステップＳ４２０）と共に、このシミュレーションソフトウェアの実行許可を与える（ステップＳ４３０）。
【００５０】
その結果、ホストコンピュータは実行許可が与えられたシミュレーションソフトウェアを実行するのであるが、実行が終了すると、ライセンスを解放するので、シミュレーションキュー３２０はこれを待ち、受け付ける（ステップＳ４４０）。
【００５１】
ここで例えば、シミュレーションソフトウェアが、半導体回路の論理検証のシミュレーションであるとする。そうすると、ホストコンピュータにとってシミュレーションソフトウェアの実行負荷は、論理検証対象の半導体回路の規模、及び検証用プログラム（テスト、及びテストベンチ）の規模によって異なってくる。すなわち、これらが大きければ、使用するコンピュータ上のメモリも多くなる。時にはシミュレーションソフトウェアの実行負荷がホストコンピュータの能力を超え、すなわちシミュレーションソフトウェアの実行に必要なメモリ容量がホストコンピュータが有するメモリサイズを超えてしまい、シミュレーションが破綻するという問題が起きる。
【００５２】
このため、ホストコンピュータにはさらに大きなサイズのメモリを搭載することが要求されるが、メモリは高価なため、前述のホストコンピュータ群全てに十分なメモリを搭載することが難しいという問題がある。
【００５３】
また、前述のように、シミュレーションソフトウェアの実行負荷は、検証対象の半導体回路、及び検証用プログラムの規模によって異なるため、これらが比較的小さい場合は、ホストコンピュータに大きなメモリを搭載しなくても十分シミュレーションを行う事ができ、必要以上のメモリを搭載する事は無駄となるという問題がある。
【００５４】
＜本実施形態に係るシステム＞
以上の問題を解決すべく、本実施形態に係るシステムは図１に示す構成を備える。図１は、本実施形態に係るシステムの機能構成を示す図である。なお、本実施形態に係るシステムもまた、ホストコンピュータから要求されたシミュレーションソフトウェアの実行を管理するものであるが、以下の説明においても、このシミュレーションは、半導体回路の論理検証のシミュレーションであるとする。しかし、以下の説明は、これ以外の種類のシミュレーションであっても良いし、シミュレーションの種類に限定するものではない。また、実行を管理するソフトウェアの種類についても特に限定するものではない。
【００５５】
本実施形態に係るシステムは、大まかにはサーバ装置１９０、メモリ容量Ａグループ１３０、メモリ容量Ｂグループ１３１、メモリ容量Ｃグループ１３２に大別される。
【００５６】
サーバ装置１９０は、シミュレーション実行受付部１００、メモリ使用量予測部１０１、リソース管理部１１０、シミュレーションキューＡ１２０、シミュレーションキューＢ１２１、シミュレーションキューＣ１２２により構成されている。
【００５７】
なお、本実施形態ではシミュレーション実行受付部１００、メモリ使用量予測部１０１、リソース管理部１１０、シミュレーションキューＡ１２０、シミュレーションキューＢ１２１、シミュレーションキューＣ１２２は１つの装置（サーバ装置１９０）を構成する各部として説明するが、それぞれが別個の装置であっても良いということはいうまでもない。
【００５８】
本実施形態に係るシステムでは先ず、複数のホストコンピュータを搭載メモリ容量別に複数のグループに予め分割している。同図では、３つのグループに分割しており、それぞれのグループをメモリ容量Ａグループ１３０、メモリ容量Ｂグループ１３１、メモリ容量Ｃグループ１３２としている。ここで、メモリ容量Ｃグループ１３２に属するホストコンピュータが最も大きいメモリ容量を有するものとし、メモリ容量Ｂグループ１３１に属するホストコンピュータは次に大きいメモリ容量を有し、メモリ容量Ａグループ１３０に属するホストコンピュータが最も小さいメモリ容量を有する、とする。
【００５９】
ここで以下の説明では、メモリ容量Ａグループ１３０に属するホストコンピュータが有するメモリのサイズ（それぞれの平均値でも良いし、最低値でも良い）をＡ、メモリ容量Ｂグループ１３１に属するホストコンピュータが有するメモリのサイズをＢ、メモリ容量Ｃグループ１３２に属するホストコンピュータが有するメモリのサイズをＣと表現する。
【００６０】
また、本実施形態ではそれぞれのグループ毎にキューが設けられており、メモリ容量Ａグループ１３０に対してはシミュレーションキューＡ１２０が設けられており、メモリ容量Ｂグループ１３１に対してはシミュレーションキューＢ１２１が設けられており、メモリ容量Ｃグループ１３２に対しては、シミュレーションキューＣ１２２が設けられている。
【００６１】
図５は、上記サーバ装置１９０の基本構成を示すブロック図である。
【００６２】
同図において５０１はＣＰＵで、ＲＡＭ５０２やＲＯＭ５０３に格納されているプログラムやデータを用いてサーバ装置１９０全体の制御を行うと共に、サーバ装置１９０が行う後述の各処理を実行する。
【００６３】
５０２はＲＡＭで、外部記憶装置５０６からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ５０１が各種の処理を実行する際に使用するワークエリアを備える。また、以下の説明で登場する「キュー」はこのＲＡＭ５０２内に設けられたものである。また、後述するＮＩＣ５０７を介して外部から受信したプログラムやデータを一時的記憶するためのエリアを備える。
【００６４】
５０３はＲＯＭで、サーバ装置１９０の設定データや、ブートプログラムなどを格納する。
【００６５】
５０４は操作部で、マウスやキーボードなどにより構成されており、各種の指示をＣＰＵ５０１に対して入力することができる。
【００６６】
５０５は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ５０１による処理結果を画像や文字などでもって表示することができる。
【００６７】
５０６は外部記憶装置で、ハードディスクドライブ装置等の大容量情報記憶装置であって、ここにＯＳ（オペレーティングシステム）や、ＣＰＵ５０１に、サーバ装置１９０が行う後述の各処理を実行させるためのプログラムやデータなどが保存されており、これらの一部もしくは全部はＣＰＵ５０１の制御に従ってＲＡＭ５０２にロードされ、ＣＰＵ５０１の処理対象となる。
【００６８】
５０７はＮＩＣ（ネットワークインターフェース）で、後述する各ホストコンピュータとのデータ通信を行うためのインターフェースとして機能するものである。
【００６９】
５０８は上述の各部を繋ぐバスである。
【００７０】
次に、このような構成を有するサーバ装置１９０を含むシステムが行う処理について説明する。ユーザから入力されたシミュレーションソフトウェアの実行要求はシミュレーション実行受付部１００を介して入力されるので、メモリ使用量予測部１０１は、実行要求されたシミュレーションソフトウェアを実行したときに使用するメモリ量や、どの規模の回路のシミュレーションを行うのかといったことを求める。例えば、同じシミュレーションソフトウェアを実行するにも、規模の大きい回路の論理検証を行うためにはより大きいメモリ容量を必要とするし、逆に規模の小さい回路の論理検証を行うためにはより小さいメモリ容量で良い。そこで、シミュレーションソフトウェアを実行するために最低限必要なメモリ量と、どの規模の回路の論理検証を行うのかということを把握すれば、要求されたシミュレーションを実行するために必要なメモリ容量を求める（予測する）ことができる。
【００７１】
シミュレーションを実行するために必要なメモリ容量は、例えば、シミュレーション受付実行部１００において受け付けられたシミュレーションソフトウェアのプログラムから予めシミュレーションに用いるデータのサイズおよびサブプログラムが使用するメモリの使用量を取得し、これらの使用量を合計したものを最大使用量としておく。
【００７２】
必要な最大メモリ使用量が求まると、リソース管理部１１０は、シミュレーションキューＡ１２０、シミュレーションキューＢ１２１、シミュレーションキューＣ１２２のうち、どのキューにシミュレーションソフトウェアの実行ジョブ（要求された規模の回路の論理検証を行うためのシミュレーションソフトウェアの実行のジョブ）を投入するのかを、メモリ使用量予測部１０１が計算したメモリ使用量、各キューの容量に基づいて決定する。
【００７３】
例えば、メモリ使用量予測部１０１が求めたメモリ使用量がＮであり、Ａ＜Ｎ＜Ｂである場合、即ち、メモリ使用量がＡよりも大きい場合には、このようなシミュレーションソフトウェアの実行ジョブが実行できるのはメモリ容量Ｂグループ１３１に属するホストコンピュータ、もしくはメモリ容量Ｃグループ１３２に属するホストコンピュータしかない。そこで、メモリ容量Ｃグループ１３２に属するホストコンピュータでなくても、メモリ容量Ｂグループ１３１に属するホストコンピュータで十分であるので、メモリ容量Ｂグループ１３１に対応するシミュレーションキューＢ１２１に実行ジョブを投入する。
【００７４】
しかし、例えばシミュレーションキューＢ１２１にて待ち状態（ジョブが投入できない状態）であり、シミュレーションキューＣ１２２に空きがある場合には、メモリ容量Ｃグループ１３２に属するホストコンピュータにジョブを実行させるのはオーバースペックではあるものの、ジョブをシミュレーションキューＣ１２２に投入するようにしても良い。
【００７５】
シミュレーションキューＢ１２１は、ジョブが投入されると、メモリ容量Ｃグループ１３２に属するホストコンピュータのうち、処理を行っていない、もしくは他の処理を行うほど能力に余裕のある等、所謂「空いている」ホストコンピュータを探し、そのホストコンピュータにジョブの実行ライセンスを与え、ジョブの実行許可を与える。
【００７６】
ジョブの実行処理は全てホストコンピュータが行うようにしても良いし、一部をサーバ装置１９０が行うようにしても良い。いずれにせよ、例え全てをホストコンピュータに行わせる場合であっても、このホストコンピュータは、ジョブを実行するために必要なメモリサイズを有しているが故に選出されたものであるので、このジョブは必ず実行することができ、メモリサイズの不足による処理の中断はない。
【００７７】
図２は、以上説明したサーバ装置１９０が行う処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ５０１に実行させるためのプログラムやデータは外部記憶装置５０６からＲＡＭ５０２に予めロードされており、これをＣＰＵ５０１が実行することで、サーバ装置１９０は以下説明する処理を実行することになる。なお、以下の各ステップにおける処理は上述の通りであるので、ここでは簡単に説明する。
【００７８】
先ず、ＣＰＵ５０１が操作部５０４を介してユーザにより入力されたシミュレーションソフトウェアの実行要求を検知すると、シミュレーションソフトウェアに記述されたデータを解析し（ステップＳ２０１）、要求されたシミュレーションソフトウェアを実行したときに使用するメモリ量や、どの規模の回路のシミュレーションを行うのかといったことを求め、結果として、要求された回路規模の論理検証を行うためにこのシミュレーションソフトウェアを実行した際に使用するメモリ使用量を求める（予測する）（ステップＳ２０２）。
【００７９】
そして各グループのホストコンピュータに搭載されたメモリ量（図１ではＡ、Ｂ、Ｃ）のうち、ステップＳ２０２で求めたメモリ使用量Ｎを許容するメモリ量を許容するものを選ぶ（ステップＳ２０３）。ここで、各グループのホストコンピュータに搭載されたメモリ量のうち、ステップＳ２０２で求めたメモリ使用量Ｎを許容するメモリ量を許容するものがなかった場合には、処理をステップＳ２０５に進め、警告を発行する（ステップＳ２０５）のであるが、予めの設定により、これを「有効」とする場合には処理をステップＳ２０６を介して本処理を終了する。
【００８０】
これにより予想したメモリ使用量が、ホストコンピュータが搭載しているメモリ容量をオーバする事が分かり、無駄なシミュレーションを実行せずにシミュレーションプログラムの見直しを行う事ができる。また、予想メモリ使用量がホストコンピュータが搭載しているメモリ容量をオーバーしている場合でも、確実にシミュレーションが破綻するわけではないので、シミュレーションを実行したい場合もある。このときは前述の上記設定を「無効」とすることにより、最大のメモリを搭載したホストコンピュータのシミュレーションキューに投入することができる。前述のようにシミュレーションプログラムを見直した際に、変更する余地がない場合などにも上記設定を「無効」にする事は有効である。
【００８１】
一方、上記設定を「無効」とする場合には処理をステップＳ２０６を介してステップＳ２１０に進める。
【００８２】
一方、各グループのホストコンピュータに搭載されたメモリ量（図１ではＡ、Ｂ、Ｃ）のうち、ステップＳ２０２で求めたメモリ使用量Ｎを許容するメモリ量を許容するものがある場合には処理をステップＳ２０４に進める。ここではメモリ容量Ｂグループ１３１がこれに相当するとして説明する。よってステップＳ２０４では、メモリ容量Ｂグループ１３１を選出する（ステップＳ２０４）。
【００８３】
そして、メモリ容量Ｂグループ１３１に属するホストコンピュータのうち、空いているホストコンピュータがあるか否かを判断し（ステップＳ２１０）、無ければ処理をステップＳ２５０に進め、シミュレーション実行終了の指示を待ち（ステップＳ２５０）、この指示を受ければ処理をステップＳ２２０に進め、この指示を発したホストコンピュータにシミュレーションソフトウェアのライセンスを発行する（ステップＳ２２０）と共に、このシミュレーションソフトウェアの実行許可を与える（ステップＳ２３０）。
【００８４】
その結果、ホストコンピュータは実行許可が与えられたシミュレーションソフトウェアを実行するのであるが、実行が終了すると、ライセンスを解放するので、ＣＰＵ５０１ははこれを待ち、受け付ける（ステップＳ２４０）。
【００８５】
以上の説明により、本実施形態によって、実行要求されたプログラムを最適なホストコンピュータに対して実行許可することができる。これにより、例えば半導体回路の論理検証において、論理検証シミュレーションを行うホストコンピュータに搭載するメモリに対する投資を最小限抑えることが出来、また、無駄なシミュレーションを走らせる事のない論理検証システムを提供する事が出来る。
【００８６】
［第２の実施形態］
本実施形態では、直列に結合している３つのデータ処理ブロックの動作検証を行う場合について説明するが、以下の説明の本質はデータ処理ブロックの数に限定されるものではないことは、以下の説明により明らかと成るであろう。
【００８７】
＜従来の検証システム＞
先ず、図２に示したシステムＬＳＩ６０１に含まれる３つのデータ処理ブロック（データ処理１ブロック、データ処理２ブロック、データ処理３ブロック）について、従来の検証方法について説明する。
【００８８】
図１３は上述の通り、この３つのデータ処理ブロックを従来の方法でもって検証する為の装置の構成を示すものである。同図では検証対象の論理回路は、データ処理１ブロック１１０６、データ処理２ブロック１３２０、データ処理３ブロック１３３０である。なお、以下の説明において、プログラムの実行や各種の処理制御は、ＣＰＵ６０２が行うものである。
【００８９】
同図において検証に用いられる入力データファイル１１０１は、入力バスモデル１１０２により解釈され、データ処理１ブロック１１０６に送られる。
【００９０】
この時の動作モード等を設定するためのパラメータデータファイル１１０３はＣＰＵ  Ｉ／Ｆモデル１１０５を通して、動作モードが設定され、データ処理１ブロック１１０６、データ処理２ブロック１３２０、データ処理３ブロック１３３０は、設定された動作モードに従って動作する。その動作については即ち、データ処理１ブロック１１０６は、入力バスモデル１１０２を介して入力された入力データファイル１１０１を設定された動作モードに従って処理して後段のデータ処理２ブロック１３２０に送出する。データ処理２ブロック１３２０は、データ処理１ブロック１１０６から出力されたデータを設定された動作モードに従って処理して後段のデータ処理３ブロック１３３０に送出する。データ処理３ブロック１３３０は、データ処理２ブロック１３２０から出力されたデータを設定された動作モードに従って処理して後段の出力バスモデル１３４０を通して出力する。
【００９１】
一方、データ処理１ブロック１１０６が出力すべき正解データとしての期待値１データファイル１１０８は予め、正解データを生成するデータ処理１プログラム１１０４を用いて、入力データファイル１１０１、パラメータデータファイル１１０３より生成している。またデータ処理１ブロック１１０６の出力は所定時間間隔毎にデータ１モニタ１１１１により監視されており、データ１モニタ１１１１は、監視した出力と期待値１データファイル１１０８とを比較し、データ処理１ブロック１１０６が期待した処理を行ったか否かを検証する。
【００９２】
また、データ処理２ブロック１３２０が出力すべき正解データとしての期待値２データファイル１３２２は予め、正解データを生成するデータ処理２プログラム１３２１を用いて、（先にデータ処理１プログラム１１０４により生成された）期待値１データファイル１１０８と、パラメータデータファイル１１０３より生成している。またデータ処理２ブロック１３２０の出力は所定時間間隔毎にデータ２モニタ１３２３により監視されており、データ２モニタ１３２３は、監視した出力と期待値２データファイル１３２２と比較し、データ処理２ブロック１３２０が期待した処理を行ったか否かを検証する。
【００９３】
また、データ処理３ブロック１３３０が出力すべき正解データとしての期待値３データファイル１３３２は予め、正解データを生成するデータ処理３プログラム１３３１を用いて、（先にデータ処理２プログラム１３２１により生成された）期待値２データファイル１３２２と、パラメータデータファイル１１０３より生成している。またデータ処理３ブロック１３３０の出力は所定時間間隔毎にデータ３モニタ１３３３により監視されており、データ３モニタ１３３３は、監視した出力と期待値３データファイル１３３２とを比較し、データ処理３ブロック１３３０が期待した処理を行ったか否かを検証する。
【００９４】
以上の構成によるシステムによって行う検証では、検証対象のデータ処理ブロックが誤った動作を行った場合、各データ処理ブロックの出力バスに接続された各データモニターがこれを検出することができるため、どのデータ処理ブロックが誤った動作をしたのかの特定が容易であり、検証効率を向上させる利点がある。一方、これらデータモニタは各サイクル毎にバスを監視しているため、その度にバスとデータモニタ間で通信が発生し、シミュレーション速度を低下させる原因となる。システムが大きくなるほど接続されるデータモニタの数が多くなるため、シミュレーション速度の低下は顕著に表れる。
【００９５】
よって本実施形態に係る検証システムはこれに鑑みて成されたものである。以下、本実施形態に係る検証システムについて説明する。
【００９６】
＜本実施形態に係る検証システム＞
図１５は、本実施形態に係る検証システムの基本構成を示すブロック図である。尚同図において図１１，１３と同じ部分については同じ番号を付けており、その説明は省略する。
【００９７】
図１５に示した構成が図１３に示した構成と異なる点は、それぞれのデータモニタ（データ１モニタ１１１１、データ２モニタ１３２３、データ３モニタ１３３３）の監視／非監視を切り替えるためのスイッチ１５０１，１５０２，１５０３を設けた点にある。例えばスイッチ１５０１をオンにすると、データ処理１ブロック１１０６からの出力線はデータ１モニタ１１１１とつながるので、データ１モニタ１１１１は、データ処理１ブロック１１０６からの出力を監視することができ、逆にスイッチ１５０１をオフにすると、データ処理１ブロック１１０６からの出力線はデータ１モニタ１１１１とはつながっていないので、データ１モニタ１１１１は、データ処理１ブロック１１０６からの出力を監視することができない。これはスイッチ１５０２についても同様である。
【００９８】
このようにして、データモニタにより監視／非監視をこのスイッチによって切り替えることができる。なお、データモニタによる監視／非監視の制御手段についてはこのような手段に限定するものではない。
【００９９】
このようなシステムにおいて各データ処理ブロックの動作検証を行う場合には以下のようにして行う。なお、以下説明する各処理の制御はＣＰＵ６０２が行うものとする。
【０１００】
先ず、ＣＰＵ６０２は、スイッチ１５０１，１５０２を共にオフにする指示を送出するので、スイッチ１５０１、１５０２は共にこれを受けて自身をオフにし、その後ＣＰＵ６０２は、上記検証処理を制御する。即ち、データ処理１ブロック１１０６は、入力バスモデル１１０２を介して入力された入力データファイル１１０１を設定された動作モードに従って処理して後段のデータ処理２ブロック１３２０に送出する。データ処理２ブロック１３２０は、データ処理１ブロック１１０６から出力されたデータを設定された動作モードに従って処理して後段のデータ処理３ブロック１３３０に送出する。データ処理３ブロック１３３０は、データ処理２ブロック１３２０から出力されたデータを設定された動作モードに従って処理して後段の出力バスモデル１３４０を通して出力する。そしてデータ３モニタ１３３３は、所定時間間隔毎にデータ処理３ブロック１３３０の出力を監視し、監視した出力と期待値３データファイルとの比較を行い、一致しているのか否かを判断する。よってデータ３モニタ１３３３は、所定時間間隔毎に、一致しているか否かの判断処理を行っていることになる。
【０１０１】
また、ＣＰＵ６０２は、それぞれのデータ処理ブロックの出力を所定時間間隔毎にサンプリングし、メモリコントローラ６０４内のメモリに格納する処理を行う。
【０１０２】
このようにして、それぞれのデータ処理ブロックは入力されたデータを処理して後段に出力する処理を繰り返し、且つＣＰＵ６０２は、所定時間間隔毎のそれぞれのデータ処理ブロックの出力をサンプリングし、メモリコントローラ６０４内のメモリに格納する。また、データ３モニタ１３３３は、所定時間間隔毎に、データ処理３ブロック１３３０の出力と期待値３データファイル１３３２とが一致しているのか否かを判断する。
【０１０３】
ここで、ある時点でデータ３モニタ１３３３が「一致していない」と判断した場合（Ｅｒｒｏｒを検出した場合）、ＣＰＵ６０２はこれを検知して各部の動作を停止させる。ここで、データ３モニタ１３３３が「一致していない」と判断したということは、データ処理１ブロック１１０６、データ処理２ブロック１３０２の何れかもしくはその両方が期待値データファイルとは異なるものを出力したことになる。よって、以下では、データ処理１ブロック１１０６、データ処理２ブロック１３０２のうち、期待値データファイルと一致していないものを検知することで、動作が正常ではないデータ処理ブロックを特定する。
【０１０４】
ＣＰＵ６０２は先ず、スイッチ１５０１、１５０２をオンにする。そして、ＣＰＵ６０２が「一致していない」という判断を検知した時点に最も近いタイミングでメモリコントローラ６０４内のメモリに格納した（即ち最も最近メモリに格納した）それぞれのデータ処理ブロックの出力データを読み出して、それぞれのデータ処理ブロックの出力を再設定する。即ち、検証処理を、ＣＰＵ６０２が「一致していない」という判断を検知した時点に最も近いタイミングにおける状態から再度行うようにする。なお、その際にはスイッチ１５０１、１５０２をオンにしているので、再度検証処理を行う場合にはデータ処理１ブロック１１０６、データ処理２ブロック１３０２の出力を監視する事になる。
【０１０５】
そしてＣＰＵ６０２は各部を制御して各部の動作を再開させると、データ１モニタ１１１１、データ２モニタ１３２３はそれぞれ、データ処理１ブロック１１０６、データ処理２ブロック１３０２の出力を監視することになり、上記タイミングまでで、データ１モニタ１１１１、及び／又はデータ２モニタ１３２３が「一致していない」と判断することになる。
【０１０６】
これにより、検証処理開始時には全てのデータモニタを動作させず、１つのデータモニタのみを動作させるので、データ監視のためのデータ通信が多く発生することがなく、検証処理を上記従来よりもより高速に行うことができる。
【０１０７】
図１４は、本実施形態に係る検証処理のフローチャートである。なお、同図のフローチャートに従った処理の制御は上述の通り、ＣＰＵ６０２が行う。
【０１０８】
先ず、ＣＰＵ６０２はスイッチ１５０１、１５０２に対してオフの指示を送出する（ステップＳ９００）ので、スイッチ１５０１、１５０２は自身をオフにする。これにより、データ１モニタ１１１１、データ２モニタ１３２３による監視は行われない。
【０１０９】
次に、ＣＰＵ６０２が各データ処理ブロックの出力データをメモリコントローラ６０４内のメモリに保存する時間間隔を設定する（ステップＳ９０１）のであるが、これは予め設定しておいてメモリコントローラ６０４内のメモリに保存しておいても良いし、ＣＰＵ６０２のクロックに合わせて設定するようにしても良い。
【０１１０】
次に、処理を１サイクル進める（ステップＳ９０２）。ここで処理を１サイクル進めるとは、データ処理１ブロック１１０６が、入力バスモデル１１０２を介して入力された入力データファイル１１０１を設定された動作モードに従って処理して後段のデータ処理２ブロック１３２０に送出し、次にデータ処理２ブロック１３２０が、データ処理１ブロック１１０６から出力されたデータを設定された動作モードに従って処理して後段のデータ処理３ブロック１３３０に送出し、次にデータ処理３ブロック１３３０が、データ処理２ブロック１３２０から出力されたデータを設定された動作モードに従って処理して後段の出力バスモデル１３４０を通して出力すると共に、データ３モニタ１３３３は、所定時間間隔毎にデータ処理３ブロック１３３０の出力を監視し、監視した出力と期待値３データファイルとの比較を行い、一致しているのか否かを判断する、という一連の処理を行うことを差す。
【０１１１】
そして１サイクルの処理を行った結果、データ３モニタ１３３３が「一致していない」と判断した場合（ステップＳ９０３）には、処理をステップＳ９０８に進め、スイッチ１５０１、１５０２をオンにし（ステップＳ９０８）、メモリコントローラ６０４内のメモリに最も最近格納したそれぞれのデータ処理ブロックの出力をそれぞれのデータ処理ブロックに再設定し（ステップＳ９０９）、その後、１サイクルの処理を再開する（ステップＳ９１０）。
【０１１２】
ここでの１サイクルの処理とは、ステップＳ９０２における処理に加え、データ１モニタ１１１１、データ２モニタ１３２３による監視処理、判断処理を行う。
【０１１３】
そして、データ１モニタ１１１１、データ２モニタ１３２３のうちの少なくとも１つがＥｒｒｏｒを検出した場合には、ＣＰＵ６０２はこれを検知し、Ｅｒｒｏｒを発生したデータ処理ブロックを特定する（ステップＳ９１２）。
【０１１４】
より具体的には、データ１モニタ１１１１がＥｒｒｏｒを検出した場合には、データ処理１ブロック１１０６をＥｒｒｏｒを発生した（出力が期待値１データファイル１１０８と一致しない）データ処理ブロックとして特定し、データ２モニタ１３２３がＥｒｒｏｒを検出した場合には、データ処理２ブロック１３２０をＥｒｒｏｒを発生した（出力が期待値２データファイル１３２２と一致しない）データ処理ブロックとして特定する。
【０１１５】
一方、ステップＳ９１１で、Ｅｒｒｏｒを検出したデータモニタがない場合には処理ステップＳ９１０を繰り返す。なお、繰り返し処理は、ＣＰＵ６０２がステップＳ９０３でＥｒｒｏｒを検知した時点まで行う。
【０１１６】
一方、ステップＳ９０３で、データ３モニタ１３３３が「一致していない」という判断を行っていない場合には処理をステップＳ９０４に進め、各データ処理ブロックの動作が終了していない場合には処理をステップＳ９０５に進め、ステップＳ９０２における処理を開始以降、ステップＳ９０１で設定した時間が経過したか否かを判断し、経過していない場合には処理をステップＳ９０２に戻し、以降の処理を繰り返すのであるが、経過した場合には処理をステップＳ９０７に進め、ＣＰＵ６０２は各データ処理ブロックの出力をメモリコントローラ６０４内のメモリに格納する（ステップＳ９０７）。
【０１１７】
ここで、各データ処理ブロックの出力をメモリに格納する際、メモリには２回前の分まで保存してあるとする。そして今回の格納を行う場合には２回前のデータ（２回前の各データ処理ブロックの出力のデータ）を消去し、新たに今回のデータ（今回の各データ処理ブロックの出力のデータ）を格納する。そしてステップＳ９０９で出力のデータをメモリから読み出す場合には２回前のものを読み出す。
【０１１８】
このように２回前の分までを保存しておくのであるが、これが１回前の分までしか保存していないとすると、保存した次のサイクルでステップＳ９０３にてＥｒｒｏｒが検知された場合に、シミュレーション状態は１サイクル前にしか戻せず、全てのスイッチをオンにしたとしても、Errorを発生したデータ処理ブロックを特定することができない。よって、本実施形態では、各データ処理ブロックの出力は２回前の分までを保存しておく。
【０１１９】
なお、本実施形態では各データモニタは、データ処理ブロックの出力と期待値データファイルとが１回でも一致していないとＥｒｒｏｒを検出するのであるが、１回に限定するものではなく、予め設定した回数であっても良い。
【０１２０】
［その他の実施形態］
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１２１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２３】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１２４】
【図１】本発明の第１の実施形態に係るシステムの機能構成を示す図である。
【図２】サーバ装置１９０が行う処理のフローチャートである。
【図３】従来のシステムの機能構成を示す図である。
【図４】シミュレーションキュー３２０が行う処理のフローチャートである。
【図５】サーバ装置１９０の基本構成を示すブロック図である。
【図６】一般的なシステムＬＳＩの集積回路の基本構成を示すブロック図である。
【図７】３つのデータ処理ブロックが直列につながっているデータパス６０７の構成を示すブロック図である。
【図８】データ処理ブロック（同図ではデータ処理１ブロック）の個別検証の処理の流れを示す図である。
【図９】従来用いたテスト記述の構成例を示す図である。
【図１０】図７の各データ処理ブロックについて作成したシーケンスクラス、及びそれぞれのシーケンスの実行順を示す図である。
【図１１】データ処理ブロック（同図ではデータ処理１ブロック）の個別検証の処理の流れを示す図である。
【図１２】それぞれのデータ処理ブロックに対する検証の流れ（（ａ）〜（ｃ））を１つ（（ｄ））にまとめた図である。
【図１３】３つのデータ処理ブロックを有するシステムの検証装置の基本構成を示すブロック図である。
【図１４】本発明の第２の実施形態に係る検証処理のフローチャートである。
【図１５】本発明の第２の実施形態に係る検証システムの基本構成を示すブロック図である。
【図１】
2006178663.tif 000003
【図２】
2006178663.tif 000004
【図３】
2006178663.tif 000005
【図４】
2006178663.tif 000006
【図５】
2006178663.tif 000007
【図６】
2006178663.tif 000008
【図７】
2006178663.tif 000009
【図８】
2006178663.tif 000010
【図９】
2006178663.tif 000011
【図１０】
2006178663.tif 000012
【図１１】
2006178663.tif 000013
【図１２】
2006178663.tif 000014
【図１３】
2006178663.tif 000015
【図１４】
2006178663.tif 000016
【図１５】
2006178663.tif 000017