(57)【特許請求の範囲】
【請求項１】
複数のプロセッシング・エレメントからなる並列処理型ハードウエアと、
論理シミュレーションの対象となる論理回路の設計データを保持する設計データファイルと、
該設計データファイルに保持されている設計データに基づいて、各プロセッシング・エレメントに対するゲート割当情報を含む論理シミュレーションモデルを作成するモデル作成部と、
該モデル作成部により作成された論理シミュレーションモデルを保持するモデルファイルと、
該モデルファイルに保持されている論理シミュレーションモデルに従った論理シミュレーションを、該並列処理型ハードウエアにおける各プロセッシング・エレメントに実行させる論理シミュレーション実行部とをそなえてなる論理シミュレーション装置において、
論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷として、イベント駆動方式におけるイベント数を測定する負荷測定部と、
該負荷測定部により測定された測定結果を負荷データとして保持する負荷データファイルとをそなえ、
該モデル作成部が、
新規の設計データに類似する設計データ（ゲートの接続関係は該新規の設計データと同じであるがゲートの種類が部分的に異なる設計データ）について既に論理シミュレーションモデルが作成されファイルとして格納されている場合、その類似設計データについての論理シミュレーションモデルを用いて該新規の設計データについての論理シミュレーションモデルを作成する一方、該新規の設計データに類似する設計データについての論理シミュレーションモデルが存在しない場合、該新規の設計データにおけるゲートを前記の各プロセッシング・エレメントに機械的に割り当てる手法を用いて論理シミュレーションモデルを作成し、
作成された該論理シミュレーションモデルを用いて一つの論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて該設計データの修正が生じた場合、該負荷データファイルに保持されている該負荷測定部による測定結果であるイベント数に基づいて、下記式（１）で与えられる評価関数Ｆ１もしくは下記式（２）で与えられる評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを作成することを
特徴とする、論理シミュレーション装置。
【数１】
0003645346.tif 000004
【請求項２】
前記論理シミュレーション実行指示ファイルによる論理シミュレーション終了後に別の論理シミュレーション実行指示ファイルによる論理シミュレーションを実行する場合、該モデルファイルに保持されている論理シミュレーションモデルと該負荷測定部による測定結果であるイベント数とに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを再作成して該モデルファイルに格納するモデル再作成部をそなえたことを特徴とする、請求項１記載の論理シミュレーション装置。
【請求項３】
該負荷測定部が、該並列処理型ハードウエアによる論理シミュレーション期間のうちの、予め指定された時間帯について前記イベント数を測定することを特徴とする、請求項２記載の論理シミュレーション装置。
【請求項４】
論理シミュレーション実行時に該負荷測定部により測定されて該負荷データファイルに保持されているイベント数を集計・解析して統計データを作成するデータ集計部と、
該データ集計部により作成された統計データを保持する統計データファイルとをそなえたことを特徴とする、請求項２または請求項３に記載の論理シミュレーション装置。
【請求項５】
該データ集計部が、既に統計データを作成された設計データについての論理シミュレーションを実行した後には、該負荷データファイルに保持されているイベント数と該統計データファイルに保持されている既存の統計データとに基づいてその統計データを再作成して該統計データファイルに格納することを特徴とする、請求項４記載の論理シミュレーション装置。
【請求項６】
前記論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて該設計データの修正が生じた場合、該モデル作成部が、該負荷データファイルに保持されているイベント数と該設計データファイルに保持されている設計データとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを作成することを特徴とする、請求項２または請求項３に記載の論理シミュレーション装置。
【請求項７】
前記論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて該設計データの修正が生じた場合、該モデル作成部が、該統計データファイルに保持されている統計データと該設計データファイルに保持されている設計データとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを作成することを特徴とする、請求項４または請求項５に記載の論理シミュレーション装置。
【請求項８】
該モデル再作成部が、該負荷データファイルに保持されているイベント数と該モデルファイルに保持されている論理シミュレーションモデルとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを再作成することを特徴とする、請求項２または請求項３に記載の論理シミュレーション装置。
【請求項９】
該モデル再作成部が、該統計データファイルに保持されている統計データと該モデルファイルに保持されている論理シミュレーションモデルとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における前記の各プロセッシング・エレメントの負荷の偏りの小さな論理シミュレーションモデルを再作成することを特徴とする、請求項４または請求項５に記載の論理シミュレーション装置。
【発明の詳細な説明】
【０００１】
（目次）
発明の属する技術分野
従来の技術（図４０）
発明が解決しようとする課題
課題を解決するための手段（図１）
発明の実施の形態
（Ａ）本実施形態の論理シミュレーション装置の全体的な構成（図２，図３）
（Ｂ）本実施形態の論理シミュレーション装置の全体的な動作（図４）
（Ｃ）本実施形態の論理シミュレーション装置の効果
（Ｄ）本実施形態の論理シミュレーション装置の各部の説明（図５〜図３０）
（Ｅ）本実施形態の論理シミュレーション装置の具体的な作用効果（図３１〜図３９）
発明の効果
【０００２】
【発明の属する技術分野】
本発明は、論理回路の設計に際し設計結果の論理シミュレーションを高速に実行するための専用ハードウエアである論理シミュレーション装置に関し、特に、複数のプロセッシング・エレメント（以下、ＰＥと略記）からなる並列処理型のハードウエアを用いて論理シミュレーションを行なう装置に関する。論理シミュレーション装置は、コンピュータ等のディジタル装置の設計を論理的にモデル化し、その動作を模擬するものである。このような論理シミュレーションを行なうことにより、ディジタル装置の製造前にその装置の動作を確認して設計の正当性を検証することができる。
【０００３】
【従来の技術】
ディジタル計算機等のように論理回路によって構成されるディジタル装置は、近年、増々大規模かつ複雑になってきている。
従って、このようなディジタル装置の製造を行なう前に、その設計の正当性を検証するための論理シミュレーションの重要性が高まっている。
【０００４】
また、ディジタル装置の大規模化に伴い論理シミュレーションに要する時間が増大するため、論理シミュレーションの高速化も要求されている。
そこで、大規模な論理回路についての論理シミュレーションを高速に行なうことのできる並列処理型の論理シミュレーション専用ハードウエア（以下、単に並列処理型ハードウエアという）が開発されており、その専用ハードウエアを用いることにより、論理シミュレーションの高速化が実現されている。
【０００５】
従来の論理シミュレーション手順について、図４０に示すフローチャート（ステップＳ１〜Ｓ６）を参照しながら説明する。
まず、論理シミュレーションの対象となる論理回路の設計データを作成し（ステップＳ１）、その設計データ（論理データ）に基づいて論理シミュレーションモデルを作成し（ステップＳ２）、その論理シミュレーションモデルを用いて論理回路の論理シミュレーションを実行する。このとき、予め作成された論理シミュレーション実行指示ファイル（入力パタン等）を一つ選択し、その実行指示ファイルに基づいて論理シミュレーションを実行する（ステップＳ３）。
【０００６】
そして、論理シミュレーションを行なった結果が正しいか否かを判断し（ステップＳ４）、誤りがある場合には、ステップＳ１にて作成された設計データを修正してから（ステップＳ５）、ステップＳ２に戻り、ステップＳ４で論理シミュレーション結果が正しいと判断されるまで、前述と同様のステップＳ２〜Ｓ５による処理を繰り返し実行する。
【０００７】
ステップＳ４にて正しいと判断された場合には、他の論理シミュレーション実行指示ファイルが残っているか否かを判断し（ステップＳ６）、残っている場合には、ステップＳ３に戻り、全ての論理シミュレーション実行指示ファイルについて論理シミュレーションを終了するまで、ステップＳ３〜Ｓ６による処理を繰り返し実行する。
【０００８】
【発明が解決しようとする課題】
ところで、並列処理型ハードウエアを構成する各ＰＥによる論理シミュレーションの速度を速くするためには、各ＰＥで実行されるべきデータ処理量（負荷）を均等化する必要がある。各ＰＥでの負荷の偏りを小さくする最適な論理シミュレーションモデルを各ＰＥへ割り当てる手法は未だ確立されていない。そのため、並列処理型ハードウエアを構成する各ＰＥの負荷に偏り（不均衡）が生じ、あるＰＥの処理が終了しているにもかかわらず他のＰＥは処理中であるような状況が発生し、全てのＰＥの処理が終了するまで待機する同期待ちを行なわなければならず、その同期待ちのために並列処理効率が低下している。
【０００９】
そこで、論理シミュレーションモデルの論理回路の情報に基づいて並列処理型ハードウエアの各ＰＥの負荷の偏りを小さくするように、論理シミュレーションモデルを各ＰＥへ割り当てる試みは従来より行なわれている（例えば特開昭６１−２２４０４６号公報や特開平３−２８８２７１号公報参照）。しかし、このような技術では、各ＰＥへ割り当てるゲート数が例え同数であっても、各ＰＥへ割り当てられた部分回路の動作は均一ではないので、結局は、論理シミュレーション実行時の各ＰＥの負荷は異なってしまい、各ＰＥの負荷の偏りを有効に小さくすることはできない。
【００１０】
また、シミュレーション実行時にＰＥの負荷を測定し、動的に各ＰＥの負荷を変更する試みも行なわれている。例えば特開平４−１９０４６０号公報に開示された技術では、シミュレーション対象回路を複数の部分回路に分割し、これらの部分回路を一回路ずつ各ＰＥに割り当てるとともに、これらの部分回路の境界部分については複数のＰＥに共有させ、この共有させた部分の処理についてのみ、負荷の小さいＰＥで処理を行なわせている。従って、このような技術では、シミュレーション対象回路全体を対象として動的に各ＰＥの負荷を変更できるものではなく、逆に、一部の回路を複数のＰＥに共有させることによってシミュレーション対象回路の規模が増大してしまうという弊害を引き起こしている。
【００１１】
上述したように、従来技術では、並列処理型ハードウエアを構成する各ＰＥの負荷の偏りを十分考慮できないまま、論理シミュレーションモデルを作成しているため、各ＰＥの同期待ちによる並列処理効率の低下が生じ、並列処理型ハードウエアの並列処理による効果が十分に得られていない。
本発明は、このような課題に鑑み創案されたもので、並列処理型ハードウエアにおける各ＰＥに対する負荷を均等化できる論理シミュレーションモデルを作成して、各ＰＥの同期待ちによる並列処理効率の低下を確実に抑制し、並列処理による効果を十分に得られるようにして、論理シミュレーションの高速化を実現した、論理シミュレーション装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
図１は本発明の原理ブロック図で、この図１に示すように、本発明の論理シミュレーション装置１は、複数のＰＥ２ａからなる並列処理型ハードウエア２と、論理シミュレーションの対象となる論理回路の設計データを保持する設計データファイル３と、この設計データファイル３に保持されている設計データに基づいて、各ＰＥ２ａに対するゲート割当情報を含む論理シミュレーションモデルを作成するモデル作成部４と、このモデル作成部４により作成された論理シミュレーションモデルを保持するモデルファイル５と、このモデルファイル５に保持されている論理シミュレーションモデルに従った論理シミュレーションを並列処理型ハードウエア２における各ＰＥ２ａに実行させる論理シミュレーション実行部６とをそなえて構成されている。
【００１３】
そして、本発明の論理シミュレーション装置１の並列処理型ハードウエア２には、論理シミュレーション実行時における各ＰＥ２ａの負荷としてイベント駆動方式におけるイベント数を測定する負荷測定部７と、この負荷測定部７により測定された測定結果を負荷データとして保持する負荷データファイル８とがそなえられており、モデル作成部４が、新規の設計データに類似する設計データ（ゲートの接続関係は新規の設計データと同じであるがゲートの種類が部分的に異なる設計データ）について既に論理シミュレーションモデルが作成されファイルとして格納されている場合、その類似設計データについての論理シミュレーションモデルを用いて新規の設計データについての論理シミュレーションモデルを作成する一方、新規の設計データに類似する設計データについての論理シミュレーションモデルが存在しない場合、その新規の設計データにおけるゲートを各プロセッシング・エレメントに機械的に割り当てる手法を用いて論理シミュレーションモデルを作成し、作成された論理シミュレーションモデルを用いて一つの論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて設計データの修正が生じた場合、負荷データファイル８に保持されている負荷測定部７による測定結果であるイベント数に基づいて、下記式（１）で与えられる評価関数Ｆ１もしくは下記式（２）で与えられる評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを作成するように構成されている（請求項１）。
【数２】
0003645346.tif 000002
【００１４】
このとき、論理シミュレーション実行指示ファイルによる論理シミュレーション終了後に別の論理シミュレーション実行指示ファイルによる論理シミュレーションを実行する場合、モデルファイル５に保持されている論理シミュレーションモデルと負荷測定部７による測定結果であるイベント数とに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを再作成してモデルファイル５に格納するモデル再作成部をそなえてもよい（請求項２）。
また、負荷測定部７は、並列処理型ハードウエア２による論理シミュレーション期間のうちの、予め指定された時間帯についてイベント数を測定するように構成してもよい（請求項３）。
【００１５】
さらに、論理シミュレーション実行時に負荷測定部７により測定されて負荷データファイル８に保持されたイベント数を集計・解析して統計データを作成するデータ集計部と、このデータ集計部により作成された統計データを保持する統計データファイルとをそなえてもよく（請求項４）、この場合、そのデータ集計部が、既に統計データを作成された設計データについての論理シミュレーションを実行した後には、負荷データファイル８に保持されているイベント数と統計データファイルに保持されている既存の統計データとに基づいてその統計データを再作成して統計データファイルに格納するように構成してもよい（請求項５）。
【００１６】
一方、論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて設計データの修正が生じた場合、モデル作成部４は、負荷データファイル８に保持されているイベント数と設計データファイル３に保持されている設計データとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを作成するように構成してもよいし（請求項６）、モデル再作成部は、負荷データファイル８に保持されているイベント数とモデルファイル５に保持されている論理シミュレーションモデルとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを再作成するように構成してもよい（請求項８）。
【００１７】
また、データ集計部をそなえた場合で、且つ、論理シミュレーション実行指示ファイルに基づく論理シミュレーションを開始した後にその論理シミュレーション結果に応じて設計データの修正が生じた場合、モデル作成部４は、統計データファイルに保持されている統計データと設計データファイルに保持されている設計データとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを作成するように構成してもよいし（請求項７）、モデル再作成部は、統計データファイルに保持されている統計データとモデルファイル５に保持されている論理シミュレーションモデルとに基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルを再作成するように構成してもよい（請求項９）。
【００１８】
上述のごとく構成された本発明の論理シミュレーション装置１では、負荷測定部７により論理シミュレーション実行時における各ＰＥ２ａの負荷（イベント駆動方式におけるイベント数）が測定され、その測定結果が、負荷データとして負荷データファイル８に格納されるとともに、モデル作成部３により、上記評価関数を用いて、モデルファイル５に保持されている論理シミュレーションモデルに反映される。つまり、論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りの小さな論理シミュレーションモデルが作成される。
【００１９】
従って、新規の設計データについて論理シミュレーションを行なう際に、その新規の設計データに類似する設計データについて既に論理シミュレーションモデルが作成されてモデルファイルに格納されている場合には、その類似設計データについての論理シミュレーションモデルを用いて論理シミュレーション実行部６が論理シミュレーションを実行でき、初めから並列処理型ハードウエア２における各ＰＥ２ａに対する負荷を均等化することができる。
【００２０】
また、新規に論理シミュレーションモデルを作成して新規の設計データについて論理シミュレーションを実行した場合でも、そのシミュレーション結果に誤りがあったためにその設計データを修正した場合には、その誤りが発生した論理シミュレーション実行時に負荷測定部７により測定した結果を、モデル作成部４により上記評価関数を用いて新規の論理シミュレーションモデルに反映させることで、２回目以降の論理シミュレーションでは、並列処理型ハードウエア２における各ＰＥ２ａに対する負荷を均等化することができる（請求項１，６）。
【００２１】
また、モデル再作成部により、負荷測定部７による測定結果が、上記評価関数を用いてモデルファイル５における論理シミュレーションモデルに反映され、次回の論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りを、より小さくすることができる（請求項２，８）。
さらに、データ集計部により作成／再作成されたイベント数（負荷測定部７による測定結果）の統計データを統計データファイルに保持し、その統計データや上記評価関数をモデル作成部４やモデル再作成部による論理シミュレーションモデルの作成／再作成に用いることで、過去に測定されたイベント数を統計的に取り扱いながら論理シミュレーションモデルに反映させることができ、次回の論理シミュレーション実行時における各ＰＥ２ａの負荷の偏りを、より小さくすることができる（請求項４，５，７，９）。
【００２２】
なお、イベント数の測定時間帯を予め指定することにより、例えばシミュレーション開始後やシミュレーション終了前の所定期間を除いた実質的に論理シミュレーションを行なっている期間（あるいはユーザの要望する期間）のイベント数のみを測定することができる（請求項３）。
【００２３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
（Ａ）本実施形態の論理シミュレーション装置の全体的な構成
図２は本発明の一実施形態としての論理シミュレーション装置の全体構成を示すブロック図であり、この図２に示すように、本実施形態の論理シミュレーション装置１０は、並列処理型論理シミュレーション用ハードウエア１１，設計データファイル１２，論理シミュレーションモデル作成部１３，論理シミュレーションモデルファイル１４，論理シミュレーション実行部１５，論理シミュレーション実行指示ファイル１６，イベント数データファイル１９，論理シミュレーションモデル再作成部２０，イベント数データ集計部２１および統計データファイル２２を有して構成されている。
【００２４】
ここで、並列処理型論理シミュレーション用ハードウエア（以下、単にハードウエアという）１１は、図３に示すように、複数のＰＥ１１ａを有して構成されるとともに、本実施形態では、イベント数測定用カウンタ（負荷測定部）１７およびイベント数測定用カウンタ制御回路１８を有している。
イベント数測定用カウンタ１７は、カウンタ制御回路１８によって動作を制御され、論理シミュレーション実行時における各ＰＥ１１ａの負荷の指標としてイベント駆動方式におけるイベント数を計数するためのものである。
【００２５】
また、カウンタ制御回路１８は、論理シミュレーション実行の度にイベント数の集計対象としてＰＥ単位，ゲート単位（論理シミュレーションで処理する最小単位）などの任意の集計対象を選択する機能を有するとともに、図５（ａ）〜（ｃ）にて後述するごとく、ハードウエア１１による論理シミュレーション期間のうちの、予め指定された時間帯についてカウンタ１７によりイベント数を計数させる機能を有している。
【００２６】
つまり、カウンタ制御回路１８は、論理シミュレーション実行時間帯の中から、任意の計数開始時刻と任意の計数終了時刻との指定や、任意の計数開始時刻と任意の期間（時間間隔）との指定や、任意の計数終了時刻と任意の期間（時間間隔）との指定などの指示をカウンタ１７に対して行なうことにより、任意の時間帯を選択してカウンタ１７によりイベント数を計数させることができるようになっている。
【００２７】
さて、設計データファイル１２は、論理シミュレーションの対象となる論理回路の設計データ（図６，図１３，図２４，図３１参照）を保持するものである。また、論理シミュレーションモデル作成部（以下、単にモデル作成部という）１３は、設計データファイル１２に保持されている設計データに基づいて、各ＰＥ１１ａに対するゲート割当情報を含む論理シミュレーションモデルを作成するもので、本実施形態では、後で詳述するごとく、カウンタ１７による測定結果（イベント数データやその統計データ）に基づいて、論理シミュレーション実行時における各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りの小さな論理シミュレーションモデルを作成するものである。
【００２８】
そして、論理シミュレーションモデルファイル１４（以下、単にモデルファイルという）は、モデル作成部１３により作成された論理シミュレーションモデルや、後述するモデル再作成部２０により再作成された論理シミュレーションモデルを保持するものである。
論理シミュレーション実行部１５は、各論理シミュレーション実行指示ファイル１６に基づいて、モデルファイル１４に保持されている論理シミュレーションモデルに従った論理シミュレーションをハードウエア１１における各ＰＥ１１ａに実行させるものである。なお、論理シミュレーション実行指示ファイル１６は例えば図１４や図３２に示すような入力パタン等を保持するものである。また、論理シミュレーション実行部１５は、ハードウエア１１のカウンタ１７によって計数されたイベント数データを受けて、そのイベント数データを保持するイベント数データファイル（負荷データファイル；図１９，図２０，図２２，図２５参照）１９を作成する機能も有している。
【００２９】
論理シミュレーションモデル再作成部（以下、単にモデル再作成部という）２０は、後で詳述するごとく、モデルファイル１４に保持されている論理シミュレーションモデルとカウンタ１７による測定結果（イベント数データやその統計データ）とに基づいて論理シミュレーション実行時における各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りの小さな論理シミュレーションモデルを再作成してモデルファイル１４に格納するものである。
【００３０】
さらに、イベント数データ集計部（以下、単にデータ集計部という）２１は、図１７においても後述するごとく、論理シミュレーション実行時にカウンタ１７により測定されてイベント数データファイル１９に保持されたイベント数を集計・解析して統計データ（図２１参照）を作成して統計データファイル２２に格納するものである。
【００３１】
このデータ集計部２１は、図１８においても後述するごとく、既に統計データを作成された設計データについての論理シミュレーションを実行した後には、イベント数データファイル１９に保持されているイベント数と統計データファイル２２に保持されている既存の統計データとに基づいてその統計データ（図２３参照）を再作成して統計データファイル２２に格納する機能も有している。
【００３２】
通常、一つの論理シミュレーションモデルに対し複数の論理シミュレーション実行指示ファイル１６を用意して論理シミュレーションを行なうので、複数のイベント数データファイル１９が作成されている。これらの複数のイベント数データファイル１９に保持されている内容（イベント数データ）についてデータ集計部２１により集計・解析することで、本実施形態では、複数のイベント数データファイル１９が一つの統計データファイル２２にまとめられている。このように一つの統計データファイル２２にまとめることにより、モデル作成部１３やモデル再作成部２０での処理を容易にすることができる。
【００３３】
一方、モデル作成部１３による論理シミュレーションモデルの作成時に、モデル作成部１３には、設計データファイル１２に保持されている設計データと、任意個のイベント数データファイル１９に保持されているイベント数データとが入力される。設計データには設計論理データが含まれており、また、各イベント数データファイル１９には、図１９，図２０，図２２，図２５にて後述するごとく、論理シミュレーション対象回路中の各部分回路（ＰＥ単位，ゲート単位）とその部分回路で計数されたイベント数の情報が含まれている。モデル作成部１３は、これらのデータと後述する評価関数とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを作成する機能を有している。
【００３４】
同様に、モデル作成部１３による論理シミュレーションモデルの作成時には、モデル作成部１３に、設計データファイル１２に保持されている設計データと、統計データファイル２２に保持されている統計データとを入力してもよい。このとき、設計データには設計論理データが含まれており、また、統計データファイル２２には、図２１，図２３にて後述するごとく、論理シミュレーション対象回路中の各部分回路（ＰＥ単位，ゲート単位）とその部分回路で計数されたイベント数の統計情報（平均値等）が含まれている。モデル作成部１３は、これらのデータと後述する評価関数とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを作成する機能も有している。
【００３５】
また、モデル再作成部２０による論理シミュレーションモデルの再作成時に、モデル再作成部２０には、モデルファイル１４に保持されている論理シミュレーションモデルと、任意個のイベント数データファイル１９に保持されているイベント数データとが入力される。論理シミュレーションモデルには設計論理データが含まれており、また、各イベント数データファイル１９には、前述の通りイベント数の情報が含まれている。モデル再作成部２０は、これらのデータと後述する評価関数とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを再作成する機能（図２９参照）を有している。
【００３６】
同様に、モデル再作成部２０による論理シミュレーションモデルの再作成時には、モデル作成部１３に、モデルファイル１４に保持されている論理シミュレーションモデルと、統計データファイル２２に保持されている統計データとを入力してもよい。このとき、論理シミュレーションモデルには設計論理データが含まれており、また、統計データファイル２２には、前述の通りイベント数の統計情報（平均値等）が含まれている。モデル再作成部２０は、これらのデータと後述する評価関数とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを再作成する機能（図３０参照）も有している。
【００３７】
（Ｂ）本実施形態の論理シミュレーション装置の全体的な動作
次に、上述のごとく構成された本実施形態の論理シミュレーション装置１０の全体的な動作（処理の流れ）を、図４に示すフローチャート（ステップＳ１１〜Ｓ２０）に従って説明する。
まず、論理シミュレーションの対象となる論理回路の設計データを作成し（ステップＳ１１）、その設計データ（論理データ）に基づいて論理シミュレーションモデルを作成する（ステップＳ１２）。
【００３８】
このとき、論理シミュレーションの対象となる新規の設計データに類似する設計データ（ゲートの接続関係は新規の設計データと同じであるがゲートの種類が部分的に異なる設計データ；例えば、図３６に示す設計データは図３１に示す設計データに類似する設計データである）について既に論理シミュレーションモデルが作成されファイルとして格納されている場合には、モデル作成部１３は、その類似設計データについての論理シミュレーションモデルを用いて新規の設計データについての論理シミュレーションモデルを作成する。
【００３９】
このようにして論理シミュレーションモデルを作成することにより、類似設計データについての論理シミュレーションモデルが存在する場合には、初めから各ＰＥ１１ａに対する負荷をある程度均等化することができる。類似設計データについての論理シミュレーションモデルが存在する場合の具体的な作用効果については、図３１〜図３９により後述する。
【００４０】
なお、類似設計データについての論理シミュレーションモデルが存在しない場合には、従来手法〔例えば図３４（ｂ）にて後述するごとく設計データのゲート番号に応じて各ゲートのイベント処理を各ＰＥ１１ａに機械的に分割する手法〕を用いて、論理シミュレーションモデルを作成する。
論理シミュレーション実行部１５は、ステップＳ１２で作成された論理シミュレーションモデルをハードウエア１１に適用して、予め作成されている論理シミュレーション実行指示ファイル（入力パタン等）１６を一つ選択し、そのファイルに基づいて各ＰＥ１１ａに論理シミュレーションを実行させる（ステップＳ１３）。
【００４１】
ステップＳ１３にて論理シミュレーションを実行する際には、カウンタ１７によって、各ＰＥ１１ａで発生するイベント数が計数され、その計数結果が、負荷データとして論理シミュレーション実行部１５を通じてイベント数データファイル１９に保持される。このとき、カウンタ１７によるイベント数の計数時間帯は、図５（ａ）〜（ｃ）にて後述するごとく、カウンタ制御回路１８により指定される。
【００４２】
そして、ステップＳ１３で論理シミュレーションを行なった結果が誤っている場合（ステップＳ１４でＮＯ判定の場合）には、ステップＳ１１にて作成された設計データを修正してから（ステップＳ１５）、モデル作成部１３により、ステップＳ１５で修正された設計データと、現時点までのカウンタ１７による測定結果（イベント数データファイル１９の内容や統計データファイル２２の内容）とに基づいて、修正後の設計データについて、論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りの小さな論理シミュレーションモデルを作成する（ステップＳ１６）。
【００４３】
このステップＳ１６の処理により、カウンタ１７による測定結果（イベント数データやその統計データ）が、モデルファイル１４に保持されている論理シミュレーションモデルに反映されることになる。
従って、ステップＳ１２で新規に論理シミュレーションモデルを作成して論理シミュレーションを実行した場合でも、そのシミュレーション結果に誤りがあったためにその設計データを修正した場合（ステップＳ１４でＮＯ判定の場合）には、その誤りが発生した論理シミュレーション実行時のカウンタ１７による測定結果が、モデル作成部１３により新規の論理シミュレーションモデルに反映され（ステップＳ１６）、２回目以降の論理シミュレーション（ステップＳ１７）では、各ＰＥ１１ａに対する負荷をより良く均等化することができる。
【００４４】
その後、論理シミュレーション実行部１５は、ステップＳ１３と同様、ステップＳ１６で作成された論理シミュレーションモデルをハードウエア１１に適用して、予め作成されている論理シミュレーション実行指示ファイル（入力パタン等）１６を一つ選択し、そのファイルに基づいて各ＰＥ１１ａに論理シミュレーションを実行させる（ステップＳ１７）。
【００４５】
このステップＳ１７にて論理シミュレーションを実行する際にも、カウンタ１７によって、各ＰＥ１１ａで発生するイベント数が計数され、その計数結果が、負荷データとして論理シミュレーション実行部１５を通じてイベント数データファイル１９に保持される。
そして、ステップＳ１７で論理シミュレーションを行なった結果が誤っている場合（ステップＳ１８でＮＯ判定の場合）には、ステップＳ１５に戻り、ステップＳ１８で論理シミュレーション結果が正しいと判定されるまで、前述と同様のステップＳ１５〜Ｓ１８による処理を繰り返し実行する。
【００４６】
一方、ステップＳ１４もしくはＳ１８で論理シミュレーション結果が正しいと判定された場合（ＹＥＳ判定の場合）には、他の論理シミュレーション実行指示ファイル１６が残っているか否かを判断する（ステップＳ１９）。
実行指示ファイル１６が残っている場合（ＹＥＳ判定の場合）には、モデル再作成部２０により、モデルファイル１４に保持される論理シミュレーションモデルと、現時点までのカウンタ１７による測定結果（イベント数データファイル１９の内容や統計データファイル２２の内容）とに基づいて、論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りの小さな論理シミュレーションモデルを再作成する（ステップＳ２０）。
【００４７】
このステップＳ２０の処理により、カウンタ１７による測定結果がモデルファイル１４における論理シミュレーションモデルに反映され、次回の論理シミュレーション実行時（ステップＳ１７）における各ＰＥ１１ａの負荷の偏りを、より小さくすることができる。
その後、ステップＳ１７に戻り、ステップＳ１８で論理シミュレーション結果が正しいと判定されるまで、前述と同様のステップＳ１５〜Ｓ１８による処理を繰り返し実行する。
【００４８】
また、ステップＳ１５〜Ｓ２０による処理は、ステップＳ１９で論理シミュレーション実行指示ファイル１６が残っていないと判定されるまで（ＮＯ判定）、即ち、全ての論理シミュレーション実行指示ファイル１６について論理シミュレーションを終了するまで繰り返し実行される。ステップＳ１９でＮＯ判定となった時点で、本実施形態の論理シミュレーション装置１０による、今回の論理回路の設計データについての論理シミュレーションが終了したことになる。
【００４９】
（Ｃ）本実施形態の論理シミュレーション装置の効果
このように、本発明の一実施形態としての論理シミュレーション装置１０によれば、カウンタ１７により論理シミュレーション実行時における各ＰＥ１１ａのイベント数が負荷として測定され、その測定結果（イベント数データやその統計データ）に基づいて、論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りの小さな論理シミュレーションモデルを作成することができる。
【００５０】
従って、各ＰＥ１１ａの同期待ちによる並列処理効率の低下が確実に抑制され、並列処理による効果を十分に得ることができ、論理シミュレーションを高速化して論理シミュレーションシステム全体の性能を大幅に向上させることができるのである。
また、モデル再作成部２０により、カウンタ１７による測定結果を論理シミュレーションモデルに反映することができ、次回の論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りをより小さくでき、論理シミュレーションの高速化に寄与している。
【００５１】
さらに、データ集計部２１により作成／再作成されたイベント数の統計データを統計データファイル２２に保持し、その統計データをモデル作成部１３やモデル再作成部２０による論理シミュレーションモデルの作成／再作成に用いることで、過去に測定されたイベント数を統計的に取り扱いながら論理シミュレーションモデルに反映できるので、次回の論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りをより小さくでき、論理シミュレーションのさらなる高速化に寄与することになる。
【００５２】
（Ｄ）本実施形態の論理シミュレーション装置の各部の説明
ところで、以下に、図２〜図４にて説明した本実施形態の論理シミュレーション装置１０の各部の具体的な機能や動作について、図５〜図３０を参照しながらより詳細に説明する。
（Ｄ−１）イベント数データ集計時間帯の指定例
図５（ａ）〜（ｃ）は、いずれも、本実施形態におけるカウンタ制御回路１８により指定されるイベント数データ集計時間帯（カウンタ１７による計数時間帯）の例を説明するためのものである。
【００５３】
図５（ａ）では、カウンタ制御回路１８により、論理シミュレーション実行時間帯（１００クロック）のうち、計数開始時刻１０と計数終了時刻９０とを指定した例が示されており、この図５（ａ）に示す例では、開始時刻１０から終了時刻９０までの８０クロック分の時間帯についてのイベント数の集計（カウンタ１７によるイベント数の計数）が行なわれるようになっている。
【００５４】
図５（ｂ）では、カウンタ制御回路１８により、論理シミュレーション実行時間帯（１００クロック）の中で、計数開始時刻２０と時間間隔４０とを指定した例が示されており、この図５（ｂ）に示す例では、開始時刻２０から時刻６０までの４０クロック分の時間帯についてのイベント数の集計（カウンタ１７によるイベント数の計数）が行なわれるようになっている。
【００５５】
図５（ｃ）では、カウンタ制御回路１８により、論理シミュレーション実行時間帯（１００クロック）の中で、計数終了時刻７０と時間間隔４０とを指定した例が示されており、この図５（ｃ）に示す例では、時刻３０から終了時刻７０までの４０クロック分の時間帯についてのイベント数の集計（カウンタ１７によるイベント数の計数）が行なわれるようになっている。
【００５６】
このようにカウンタ１７による計数時間帯を予め指定することにより、例えばシミュレーション開始後やシミュレーション終了前の所定期間を除いた実質的に論理シミュレーションを行なっている期間（あるいはユーザの要望する期間）のイベント数のみを測定でき、イベント数計数を効率的に行なえ、また、論理シミュレーションモデルの作成／再作成をも効率的に行なえる。
【００５７】
（Ｄ−２）各ＰＥへのゲート割当による論理シミュレーション時間
ここでは、本実施形態のモデル作成部１３もしくはモデル再作成部２０で行なわれる、論理シミュレーション実行時における各ＰＥ１１ａの負荷の偏りの小さな論理シミュレーションモデルの作成（再作成）原理について、図６〜図１２を参照しながら説明する。
【００５８】
例えば図６に論理シミュレーションの対象となる論理回路の設計データの例を示す。この図６中、各ブロックはゲート（論理シミュレーションで処理する最小単位）を示し、各ブロック内に記入された＃１〜＃８は各ゲートを特定するゲート番号である。ここで、＃１，＃２は入力ゲート、＃３は２入力ＮＡＮＤゲート、＃４は１入力ＮＡＮＤゲート、＃５は１入力ＡＮＤゲート、＃６は２入力ＯＲゲート、＃７，＃８は出力ゲートである。
【００５９】
この図６に示すような設計データについての論理シミュレーション例（イベント発生例）を図７に示す。この図７中、各ゲート＃１〜＃８を示すブロックの上に記載された数値は各ゲート＃１〜＃８の出力論理値の変化であり、矢印の左側が変化前の論理値を示し、矢印の右側が変化後の論理値を示している。この図７では、例えば、ゲート＃１への入力論理値は“１”のまま変化せず、ゲート＃２への入力論理値が“１”から“０”に変化した場合の全ゲート＃１〜＃８の論理値の変化が示されている。ここで、論理シミュレーションの方式は、イベント駆動方式，単一遅延方式である。
【００６０】
また、図７に示すような論理シミュレーションを、単一のＰＥ１１ａを用いて実行した場合のイベント処理実行順序を、図８に＃２〜＃８により示す。図７に示す例では、ゲート＃１では論理値の変化が無いので、ゲート＃２〜＃８のイベント処理実行順序が示されている。
これに対し、図６に示す設計データを、例えば図９に示すように２つのＰＥ１１ａ（以下、ＰＥ０，ＰＥ１として表記；０，１はそれぞれのＰＥのプロセッサ番号）へ割り当てた論理シミュレーションモデルを作成したとする。即ち、ゲート＃１，＃３，＃５，＃７のイベント処理をＰＥ０に割り当て、ゲート＃２，＃４，＃６，＃８のイベント処理をＰＥ１に割り当てた場合、２つのＰＥ０およびＰＥ１におけるイベント処理実行順序は、それぞれ図１０（ａ），（ｂ）に示すようになる。
【００６１】
この図１０（ａ），（ｂ）に示すように、図９に示すような論理シミュレーションモデルを作成した場合には、図８に示すように単一のＰＥ１１ａにより論理シミュレーションを実行した場合の７分の４の時間（４クロック分）で論理シミュレーションを完了することができる。
さらに、図６に示す設計データを、例えば図１１に示すように２つのＰＥ０，ＰＥ１へ割り当てた論理シミュレーションモデルを作成したとする。即ち、ゲート＃１，＃３，＃５〜＃８のイベント処理をＰＥ０に割り当て、ゲート＃２，＃４のイベント処理をＰＥ１に割り当てた場合、２つのＰＥ０およびＰＥ１におけるイベント処理実行順序は、それぞれ図１２（ａ），（ｂ）に示すようになる。
【００６２】
この図１２（ａ），（ｂ）に示すように、図１１に示すような論理シミュレーションモデルを作成した場合には、図８に示すように単一のＰＥ１１ａにより論理シミュレーションを実行した場合の７分の６の時間（６クロック分）で論理シミュレーションを完了することはできるが、図９に示すような論理シミュレーションモデルを作成した場合よりも長いシミュレーション時間を要している。
【００６３】
これらの図１０（ａ），（ｂ）と図１２（ａ），（ｂ）とを比較して分かるように、同一の論理シミュレーション対象（論理回路の設計データ）に対して同じテストパタン（入力ゲート＃１，＃２に対する入力論理値の変化）を与えた場合でも、各ゲート＃１〜＃８のＰＥ０，ＰＥ１への割り当て方の違いにより、論理シミュレーションに要する時間は異なってくる。
【００６４】
従って、本実施形態のモデル作成部１３やモデル再作成部２０が、カウンタ１７による測定結果（イベント数データやその統計データ）に基づいて、論理シミュレーション実行時における各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りの小さな論理シミュレーションモデルの作成／再作成する際には、上述のような、イベント処理を行なうべきゲートの各ＰＥ１１ａへの割り当て方もある程度考慮する必要がある。
【００６５】
（Ｄ−３）本実施形態のカウンタ１７による具体的な測定結果
次に、例えば図１３に示すような設計データについての論理シミュレーションを行なう際に図１４に示すようなテストパタン（入力パタン）をその論理シミュレーションモデル（入力ゲート＃１〜＃３）に入力した場合、カウンタ１７により計数されるイベント数（つまり実際に発生したイベントの数）の具体例を図１５および図１６に示す。
【００６６】
ここで、図６の場合と同様、図１３中、各ブロックはゲートを示し、各ブロック内に記入された＃１〜＃１０は各ゲートを特定するゲート番号である。ただし、図１３では、＃１〜＃３は入力ゲート、＃４は２入力ＮＡＮＤゲート、＃５は１入力ＡＮＤゲート、＃６，＃７は２入力ＡＮＤゲート、＃８は２入力ＯＲゲート、＃９は２入力ＯＲゲート、＃１０は出力ゲートである。
【００６７】
また、図１３に示す設計データを、３つのＰＥ１１ａ（以下、ＰＥ０，ＰＥ１，ＰＥ２として表記；０〜２はそれぞれのＰＥのプロセッサ番号）へ割り当てた論理シミュレーションモデルを作成したとする。即ち、ゲート＃１，＃２，＃４，＃５のイベント処理をＰＥ０に割り当て、ゲート＃３，＃６，＃７のイベント処理をＰＥ１に割り当て、ゲート＃８，＃９，＃１０のイベント処理をＰＥ２に割り当てたものとする。
【００６８】
このとき、各ゲート＃１〜＃１０で発生したイベント数は、図１５に示すようになり、ＰＥ０，ＰＥ１，ＰＥ２のそれぞれで発生したイベント数は、図１６に示すようになる。本実施形態では、このようなイベント数がカウンタ１７により計数され、その結果が、論理シミュレーション実行部１５によりイベント数データとしてファイル１９に格納される。
【００６９】
（Ｄ−４）本実施形態のイベント数データ集計部２１における処理手順
図２に示した本実施形態のイベント数データ集計部２１は、図１７に示す処理手順で統計データを新規に作成するほか、図１８に示す処理手順で既に作成済の統計データを再作成（更新）する。
まず、図１７に示すフローチャート（ステップＳ２１，Ｓ２２）に従って、イベント数データ集計部２１による統計データの新規作成手順について説明すると、イベント数データ集計部２１は、カウンタ１７による計数結果を保持する任意個のイベント数データファイル１９を入力され（ステップＳ２１）、これらのファイル１９の内容を集計・解析して、統計データ（例えば平均値；図２１参照）を作成して統計データファイル２２として出力する（ステップＳ２２）。
【００７０】
また、既に統計データを作成された設計データについての論理シミュレーションを実行した後にイベント数データ集計部２１によって実行される、統計データの更新・再作成手順について、図１８に示すフローチャート（ステップＳ２３〜Ｓ２６）に従って説明する。
このときも、イベント数データ集計部２１は、カウンタ１７による計数結果を保持する任意個のイベント数データファイル１９を入力され（ステップＳ２３）、これらのファイル１９の内容を集計・解析してから（ステップＳ２４）、既に作成された統計データを保持する統計データファイル２２を入力され（ステップＳ２５）、イベント数データファイル１９に保持されているイベント数と統計データファイル２２に保持されている既存の統計データとに基づいてその統計データ（例えば平均値；図２３参照）を再作成して統計データファイル２２として出力する（ステップＳ２６）。
【００７１】
（Ｄ−５）本実施形態のイベント数データ集計部２１により作成される具体的な統計データ
次に、図１７および図１８にて説明したごとく動作するイベント数データ集計部２１により作成される、具体的な統計データ（イベント数データの集計結果）を、図１９〜図２３により説明する。
【００７２】
ここで、図１９は、ある論理シミュレーション実行指示ファイル１６に従って図１３に示すモデルについての論理シミュレーションを実行した際に得られたイベント数データファイル１９の内容を示しており、その内容は、図１５に示したものと同じである。
また、図２０は、図１９とは異なる論理シミュレーション実行指示ファイル１６に従って図１３に示すモデルについての論理シミュレーションを実行した際に得られたイベント数データファイル１９の内容を示している。
【００７３】
図１９および図２０に示すイベント数データファイル１９では、ゲート番号毎に、イベント処理を実行するＰＥ番号と、カウンタ１７により計数されたイベント数と、パス（ＰＡＴＨ）名とが保持されている。
図１９および図２０に示すような２つのイベント数データファイル１９が作成されている場合、イベント数データ集計部２１により、これらのファイル１９に基づいて、また、図１７に示した処理手順に従って、図２１に示すような内容をもつ統計データファイル２２が新規に作成される。
【００７４】
この図２１に示す統計データファイル２２では、パス名毎に、総イベント数と積算回数と平均イベント数とが保持されている。ここで、各パス名の平均イベント数は、図１９に示すファイル１９に保持されるイベント数と図２０に示すファイル１９に保持されるイベント数との和（総イベント数）を、対応する積算回数で除算した結果である。
【００７５】
さらに、図１９や図２０とは異なる論理シミュレーション実行指示ファイル１６に従って図１３に示すモデルについての論理シミュレーションを実行した際に、図２２に示すような内容のイベント数データファイル１９が得られたものとする。
この場合、イベント数データ集計部２１により、図２１に示す統計データファイル２２と図２２に示すイベント数データファイル１９とに基づいて、また、図１８に示した処理手順に従って、図２１に示す統計データファイル２２の内容は、図２３に示すように、更新・再作成される。
【００７６】
この図２３に示す統計データファイル２２でも、パス名毎に、総イベント数と積算回数と平均イベント数とが保持されている。ここで、各パス名の平均イベント数は、図２１に示すファイル２２に保持されるイベント数と図２２に示すファイル１９に保持されるイベント数との和（総イベント数）を、対応する積算回数で除算した結果である。
【００７７】
（Ｄ−６）評価関数とその評価関数を用いて作成された具体的な論理シミュレーションモデルとの説明
本実施形態では、前述したごとく、各ＰＥ１１ａの負荷の偏りを小さくするために、各ＰＥ１１ａのイベント数の偏りが小さくなるように、各ＰＥ１１ａに対してゲートを割り当てている。
【００７８】
このようなゲート割当（ゲート分割）を実現すべく、本実施形態では、モデル作成部１３またはモデル再作成部２０では、例えば下式（１）のような評価関数Ｆ１、または、下式（２）のような評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーションモデルを作成している。
【００７９】
【数３】
0003645346.tif 000003
【００８０】
上記のような評価関数Ｆ１またはＦ２を用いて作成された具体的な論理シミュレーションモデルを、図２４〜図２８により説明する。
図２４は、論理シミュレーションの対象となる論理回路の設計データを示すもので、この図２４に示すように、その設計データは図１３に示したものと全く同様であるが、この図２４中では、各ゲート＃１〜＃１０を示すブロックに、パス名が付されている。
【００８１】
この図２４に示すような設計データの各ゲート＃１〜＃１０を、図１３と同様に３つのＰＥ０，ＰＥ１，ＰＥ２に割り当てた論理シミュレーションモデルを作成し、その論理シミュレーションモデルについて、ある論理シミュレーション実行指示ファイル１６に従って論理シミュレーションを実行した結果、図２５に示す内容のイベント数データファイル１９が得られたものとする。
【００８２】
このとき、（１）式の評価関数Ｆ１を用いると、図２６に示すようなゲート割当の論理シミュレーションモデルが作成されることになる。
つまり、図１３に示すモデルでは、ゲート＃１，＃２，＃４，＃５のイベント処理がＰＥ０に割り当てられ、ゲート＃３，＃６，＃７のイベント処理がＰＥ１に割り当てられ、ゲート＃８，＃９，＃１０のイベント処理がＰＥ２に割り当てられており、ＰＥ０，ＰＥ１，ＰＥ２の処理イベント数はそれぞれ２４，１７，１０となっている。
【００８３】
これに対し、図２６に示すモデルでは、ゲート＃１，＃４，＃５のイベント処理がＰＥ０に割り当てられ、ゲート＃２，＃６，＃７のイベント処理がＰＥ１に割り当てられ、ゲート＃３，＃８，＃９，＃１０のイベント処理がＰＥ２に割り当てられることになり、ＰＥ０，ＰＥ１，ＰＥ２の処理イベント数はそれぞれ１９，１７，１５となっている。従って、図１３に示すモデルよりも、ＰＥ０〜ＰＥ２の負荷の偏りのずっと小さな論理シミュレーションモデルが作成されることになる。
【００８４】
一方、図２４に示すような設計データの論理シミュレーションモデルについて、複数の論理シミュレーション実行指示ファイル１６に従って論理シミュレーションを実行した結果、図２７に示す内容の統計データファイル２２が得られたものとする。
このとき、（２）式の評価関数Ｆ２を用いると、図２８に示すようなゲート割当の論理シミュレーションモデルが作成されることになる。
【００８５】
この図２８に示すモデルでは、ゲート＃１，＃４，＃７のイベント処理がＰＥ０に割り当てられ、ゲート＃２，＃５，＃９，＃１０のイベント処理がＰＥ１に割り当てられ、ゲート＃３，＃６，＃８のイベント処理がＰＥ２に割り当てられている。これにより、ＰＥ０，ＰＥ１，ＰＥ２で処理すべきゲートの総平均イベント数はそれぞれ９０，９０，９０となり、ＰＥ０〜ＰＥ２の負荷が均等化された論理シミュレーションモデルが作成されることになる。
【００８６】
（Ｄ−７）本実施形態の論理シミュレーションモデル再作成部２０における処理手順
図２に示した本実施形態の論理シミュレーションモデル再作成部２０は、図２９または図３０に示す処理手順で動作する。
まず、図２９に示すフローチャート（ステップＳ３１〜Ｓ３５）に従って、論理シミュレーションモデルとイベント数データとに基づいて論理シミュレーションモデルの再作成を行なう場合の動作について説明する。
【００８７】
このような論理シミュレーションモデルの再作成時に、モデル再作成部２０は、モデルファイル１４に保持されている論理シミュレーションモデルを入力され（ステップＳ３１）、その論理シミュレーションモデルから設計論理データを解析する（ステップＳ３２）。
そして、モデル再作成部２０は、カウンタ１７による計数結果を保持する任意個のイベント数データファイル１９を入力され（ステップＳ３３）、これらのファイル１９の内容を集計・解析してから（ステップＳ３４）、ステップＳ３２，Ｓ３４の解析処理により得られたデータと評価関数Ｆ１またはＦ２とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを再作成している（ステップＳ３５）。
【００８８】
また、図３０に示すフローチャート（ステップＳ３６〜Ｓ３９）に従って、論理シミュレーションモデルと統計データとに基づいて論理シミュレーションモデルの再作成を行なう場合の動作について説明する。
このような論理シミュレーションモデルの再作成時にも、モデル再作成部２０は、モデルファイル１４に保持されている論理シミュレーションモデルを入力され（ステップＳ３６）、その論理シミュレーションモデルから設計論理データを解析する（ステップＳ３７）。
【００８９】
そして、モデル再作成部２０は、統計データファイル２２を入力され（ステップＳ３８）、その統計ファイル２２の内容を解釈してから（ステップＳ３９）、ステップＳ３７およびＳ３９の処理にて得られたデータと評価関数Ｆ１またはＦ２とを用いて、各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りが小さくなるような論理シミュレーションモデルを再作成している（ステップＳ４０）。
【００９０】
（Ｅ）本実施形態の論理シミュレーション装置１０の具体的な作用効果
次に、最初に、論理シミュレーション実行時における各ＰＥ１１ａの負荷（処理すべきイベントの数）の偏りの小さな論理シミュレーションモデルを作成することにより、論理シミュレーションの高速化を実現できることを示す具体例について、図３１〜図３５により説明する。
【００９１】
そして、図３のステップＳ１２についての説明で簡単に触れたように、このステップＳ１２による論理シミュレーションモデル作成時に、新規設計データに類似する設計データについての論理シミュレーションモデルが、本実施形態の手法（図３のステップＳ１６またはＳ２０の処理）で作成されて存在している場合の具体的な作用効果について、図３１〜図３９により説明する。
【００９２】
まず、例えば図３１に示すような設計データについての論理シミュレーションモデルを新規に作成する場合について説明する。このとき、図１３〜図１５により前述した例と同様、図３２に示すようなテストパタン（入力パタン）をその論理シミュレーションモデル（入力ゲート＃１〜＃３）に入力し、カウンタ１７により、図３３に示すようなイベント数データをゲート＃１〜＃１０毎に得る。
【００９３】
なお、図６や図１３の場合と同様、図３１中、各ブロックはゲートを示し、各ブロック内に記入された＃１〜＃１０は各ゲートを特定するゲート番号である。ただし、図３１では、＃１〜＃３は入力ゲート、＃４は２入力ＥＯＲゲート、＃５，＃６は２入力ＡＮＤゲート、＃７は２入力ＯＲゲート、＃８は２入力ＥＯＲゲート、＃９，＃１０は出力ゲートである。
【００９４】
図３１に示すような設計データを例えば２つのＰＥ１１ａ（以下、ＰＥ０，ＰＥ１として表記；０，１はそれぞれのＰＥのプロセッサ番号）へ分割（割当）する論理シミュレーションモデルを作成する場合、従来の手法では、例えば単純に設計データ中のゲート番号に従い、図３４（ａ）に示すように、奇数番号のゲート＃１，＃３，＃５，＃７，＃９のイベント処理をＰＥ０に割り当て、偶数番号のゲート＃２，＃４，＃６，＃８，＃１０のイベント処理をＰＥ１に割り当てている。このとき、ＰＥ０での処理イベント数は２０になるのに対して、ＰＥ１での処理イベント数は３１になる。
【００９５】
これに対して、図３のステップＳ１６またはＳ２０の処理（つまりモデル作成部１３またはモデル再作成部２０）により前記評価関数Ｆ１を用いて作成（再作成）された論理シミュレーションモデルでは、図３４（ｂ）に示すように、各ＰＥ０，ＰＥ１で処理するイベント数が均等になるようにゲート分割が行なわれる。つまり、ゲート＃１，＃３，＃４，＃７，＃８のイベント処理をＰＥ０に割り当て、ゲート＃２，＃５，＃６，＃９，＃１０のイベント処理をＰＥ１に割り当てている。このとき、ＰＥ０での処理イベント数は２７になるのに対して、ＰＥ１での処理イベント数は２４になる。
【００９６】
そして、図３５の左半部には、図３４（ａ）に示すごとくゲート分割された論理シミュレーションモデル（従来モデル）を用いた場合において、ＰＥ０，ＰＥ１それぞれでのイベント処理実行順序（論理シミュレーションに要する時間）がゲート番号によって入力パタン毎に示されている。一方、図３５の右半部には、図３４（ｂ）に示すごとくゲート分割された論理シミュレーションモデル（本実施形態によるモデル）を用いた場合において、ＰＥ０，ＰＥ１それぞれでのイベント処理実行順序（論理シミュレーションに要する時間）がゲート番号によって入力パタン毎に示されている。なお、図３４，図３５ではゲート番号の＃表示は省略されている。
【００９７】
この図３５に示すように、本実施形態のモデルによって論理シミュレーション時間が短縮化された入力パタンは４つ、逆に長くなった入力パタンは２つ、変わらない入力パタンは２つである。つまり、入力パタンによっては、本実施形態のモデルによって論理シミュレーション時間が長くなるものもあるが、全体として見れば、短縮化されたものの方が多く、本実施形態の手法により論理シミュレーションの高速化が実現されることが分かる。
【００９８】
ところで、図３１に示すような設計データについて図３４（ｂ）に示すようなゲート分割を行なった論理シミュレーションモデルを作成した後に、図３１の設計データに類似した、例えば図３６に示すような設計データについて論理シミュレーションを行なう場合には、図３のステップＳ１２でも前述した通り、図３１の設計データのために作成された、図３４（ｂ）に示す論理シミュレーションモデルをそのまま用いる。なお、図３６に示す設計データと図３１に示す設計データとの相違点は、ゲート＃４が２入力ＥＯＲゲートから２入力ＯＲゲートに変更された点のみである。
【００９９】
図３６に示す設計データの論理シミュレーションモデル（入力ゲート＃１〜＃３）に図３２に示すテストパタンを入力した場合に、各ゲート＃１〜＃１０で発生するイベント数は図３７に示すようになる。このイベント数は、図３のステップ１２でのモデル作成時点では未だ計数されてはいないが、ここでは本実施形態の手法により負荷（イベント数）が均等化されることを説明すべく予め明示しておく。なお、図３７における下線付きの数字は、設計データの変更に伴って図３３に示すイベント数から変化したものである。
【０１００】
図３６に示すような設計データを２つのＰＥ０，ＰＥ１へ分割（割当）する論理シミュレーションモデルを作成する場合、従来の手法では、図３４（ａ）に示した例と同様、図３８（ａ）に示すように、奇数番号のゲート＃１，＃３，＃５，＃７，＃９のイベント処理をＰＥ０に割り当て、偶数番号のゲート＃２，＃４，＃６，＃８，＃１０のイベント処理をＰＥ１に割り当てることになる。このとき、ＰＥ０での処理イベント数は２０になるのに対して、ＰＥ１での処理イベント数は２８になる。
【０１０１】
これに対して、類似設計データの論理シミュレーションモデルとして図３４（ｂ）に示すごとく既に作成されたものを、図３６に示す設計データの論理シミュレーションモデルとしてそのまま用いた場合、図３８（ｂ）に示すように、ゲート＃１，＃３，＃４，＃７，＃８のイベント処理がＰＥ０に割り当てられ、ゲート＃２，＃５，＃６，＃９，＃１０のイベント処理がＰＥ１に割り当てられる。このとき、ＰＥ０での処理イベント数は２５になるのに対して、ＰＥ１での処理イベント数は２３になる。
【０１０２】
そして、図３９の左半部には、図３８（ａ）に示すごとくゲート分割された論理シミュレーションモデル（従来モデル）を用いた場合において、ＰＥ０，ＰＥ１それぞれでのイベント処理実行順序（論理シミュレーションに要する時間）がゲート番号によって入力パタン毎に示されている。一方、図３９の右半部には、図３８（ｂ）に示すごとくゲート分割された論理シミュレーションモデル（本実施形態による類似モデル）を用いた場合において、ＰＥ０，ＰＥ１それぞれでのイベント処理実行順序（論理シミュレーションに要する時間）がゲート番号によって入力パタン毎に示されている。なお、図３８，図３９ではゲート番号の＃表示は省略されている。
【０１０３】
この図３９に示すように、図３５に示したものと同様、本実施形態の類似モデルによって論理シミュレーション時間が短縮化された入力パタンは４つ、逆に長くなった入力パタンは２つ、変わらない入力パタンは２つである。つまり、入力パタンによっては、本実施形態の類似モデルによって論理シミュレーション時間が長くなるものもあるが、全体として見れば、短縮化されたものの方が多い。従って、類似性のある設計データについての論理シミュレーションモデルを作成する際には、その類似設計データの論理シミュレーションモデルをそのまま用いることで、論理シミュレーションの高速化が実現されることが分かる。
【０１０４】
なお、本実施形態では、説明を簡単にするために設計データのゲート数をせいぜい１０個としているが、実際の設計データのゲート数は１００万個以上もあり、このような数のゲートを対象に論理シミュレーションを行なうことを考えた場合、従来手法による論理シミュレーション時間に比べて本実施形態による論理シミュレーション時間は、１０〜２０％も短縮されることになる。
【０１０５】
また、上述した実施形態では、設計データのゲートを２台または３台のＰＥ１１ａに割り当てる論理シミュレーションモデルを作成する場合について説明しているが、本発明は、これらの数値に限定されるものではない。
【０１０６】
【発明の効果】
以上詳述したように、本発明の論理シミュレーション装置によれば、負荷測定部により論理シミュレーション実行時における各ＰＥの負荷としてイベント駆動方式におけるイベント数が測定され、その測定結果であるイベント数に基づいて、上記評価関数Ｆ１もしくは上記評価関数Ｆ２を最小にするゲート割当を探索することにより、論理シミュレーション実行時における各ＰＥの負荷の偏りの小さな論理シミュレーションモデルを作成することができるので、各ＰＥの同期待ちによる並列処理効率の低下が確実に抑制され、並列処理による効果を十分に得ることができ、論理シミュレーションを高速化して論理シミュレーションシステム全体の性能の大幅な向上を実現できる効果がある。さらに、新規の設計データについて論理シミュレーションを行なう際に、その新規の設計データに類似する設計データについて既に論理シミュレーションモデルが作成されてモデルファイルに格納されている場合には、その類似設計データについての論理シミュレーションモデルを用いて論理シミュレーション実行部が論理シミュレーションを実行でき、初めから並列処理型ハードウエアにおける各ＰＥに対する負荷を均等化することができる。従って、類似性のある設計データについての論理シミュレーションモデルを作成する際には、その類似設計データの論理シミュレーションモデルをそのまま用いることで、論理シミュレーションの高速化が実現される（請求項１〜９）。
【０１０７】
また、モデル再作成部により、上記評価関数を用いて負荷測定部による測定結果を論理シミュレーションモデルに反映することができ、次回の論理シミュレーション実行時における各ＰＥの負荷の偏りをより小さくでき、論理シミュレーションの高速化に寄与する（請求項２，８）。
さらに、イベント数の統計データや上記評価関数を論理シミュレーションモデルの作成／再作成に用いることにより、過去に測定されたイベント数を統計的に取り扱いながら論理シミュレーションモデルに反映できるので、次回の論理シミュレーション実行時における各ＰＥの負荷の偏りをより小さくでき、論理シミュレーションのさらなる高速化に寄与する（請求項４，５，７，９）。
【０１０８】
なお、イベント数の測定時間帯を予め指定することで、例えばシミュレーション開始後やシミュレーション終了前の所定期間を除いた実質的に論理シミュレーションを行なっている期間（あるいはユーザの要望する期間）のイベント数のみを測定でき、負荷測定を効率的に行なえるとともに、論理シミュレーションモデルの作成／再作成を効率的に行なうことができる（請求項３）。
【図面の簡単な説明】
【図１】本発明の原理ブロック図である。
【図２】本発明の一実施形態としての論理シミュレーション装置の全体構成を示すブロック図である。
【図３】本実施形態における並列処理型論理シミュレーション用ハードウエアの構成を示すブロック図である。
【図４】本実施形態の論理シミュレーション装置の全体的な動作（処理の流れ）を説明するためのフローチャートである。
【図５】（ａ）〜（ｃ）はいずれも本実施形態におけるイベント数データ集計時間帯指定例を説明するための図である。
【図６】設計データ例を示す図である。
【図７】図６に示す設計データについての論理シミュレーション例（イベント発生例）を示す図である。
【図８】図７に示す論理シミュレーションを単一のＰＥにより実行した場合のイベント処理実行順序（論理シミュレーションに要する時間）をゲート番号により示す図である。
【図９】図６に示す設計データの、並列処理型ハードウエアへの割当例（論理シミュレーションモデル例）を示す図である。
【図１０】（ａ），（ｂ）は図９に示すごとくゲートを割り当てられた各ＰＥでのイベント処理実行順序（論理シミュレーションに要する時間）をゲート番号により示す図である。
【図１１】図６に示す設計データの、並列処理型ハードウエアへの他の割当例（論理シミュレーションモデル例）を示す図である。
【図１２】（ａ），（ｂ）は図１１に示すごとくゲートを割り当てられた各ＰＥでのイベント処理実行順序（論理シミュレーションに要する時間）をゲート番号により示す図である。
【図１３】他の設計データ例およびその並列処理型ハードウエアへの割当例（論理シミュレーションモデル例）を示す図である。
【図１４】図１３に示す設計データについての論理シミュレーションを行なう際に用いられるテストパタン（入力パタン）を示す図である。
【図１５】図１３に示すモデルに対して図１４に示すテストパタンを入力した場合に各ゲートで発生したイベント数を示す図である。
【図１６】図１３に示すモデルに対して図１４に示すテストパタンを入力した場合に各ＰＥで発生したイベント数を示す図である。
【図１７】本実施形態のイベント数データ集計部における処理手順（統計データ新規作成手順）を説明するためのフローチャートである。
【図１８】本実施形態のイベント数データ集計部における処理手順（統計データ更新・再作成手順）を説明するためのフローチャートである。
【図１９】本実施形態におけるイベント数データファイルの内容例（図１３に示すモデルについての論理シミュレーション時に測定されたイベント数）を示す図である。
【図２０】本実施形態におけるイベント数データファイルの他の内容例（図１３に示すモデルについての他の論理シミュレーション時に測定されたイベント数）を示す図である。
【図２１】図１９に示すイベント数データと図２０に示すイベント数データとに基づいて本実施形態におけるイベント数データ集計部により新規に作成された統計データファイルの内容を示す図である。
【図２２】本実施形態におけるイベント数データファイルのさらに異なる他の内容例（図１３に示すモデルについてのさらに異なる他の論理シミュレーション時に測定されたイベント数）を示す図である。
【図２３】図２１に示す統計データを図２２に示すイベント数データに基づいて本実施形態におけるイベント数データ集計部により更新・再作成された統計データファイルの内容を示す図である。
【図２４】パス名を付して設計データ例を示す図である。
【図２５】図２４に示す設計データについての論理シミュレーション時に測定されたイベント数データの例を示す図である。
【図２６】図２４に示す設計データと図２５に示すイベント数データとに基づいて本実施形態における論理シミュレーションモデル作成部により作成された論理シミュレーションモデル例を示す図である。
【図２７】図２４に示す設計データについての論理シミュレーション時に測定されたイベント数データを集計した結果得られた統計データの例を示す図である。
【図２８】図２４に示す設計データと図２７に示す統計データとに基づいて本実施形態における論理シミュレーションモデル作成部により作成された論理シミュレーションモデル例を示す図である。
【図２９】本実施形態の論理シミュレーションモデル再作成部における処理手順を説明するためのフローチャートである。
【図３０】本実施形態の論理シミュレーションモデル再作成部における他の処理手順を説明するためのフローチャートである。
【図３１】設計データ例を示す図である。
【図３２】図３１に示す設計データについての論理シミュレーションを行なう際に用いられるテストパタン（入力パタン）を示す図である。
【図３３】図３１に示すモデルに対して図３２に示すテストパタンを入力した場合に各ゲートで発生したイベント数を示す図である。
【図３４】（ａ），（ｂ）は、それぞれ、図３１〜図３３に示す例に対して従来手法および本実施形態による論理シミュレーションモデル作成手法を適用した結果得られた、ゲート割当および処理イベント数をＰＥ毎に示す図である。
【図３５】図３４（ａ），（ｂ）に示すごとくゲートを割り当てられた各ＰＥでのイベント処理実行順序（論理シミュレーションに要する時間）をゲート番号によって入力パタン毎に示す図である。
【図３６】図３１に示す設計データに類似する他の設計データを示す図である。
【図３７】図３６に示すモデルに対して図３２に示すテストパタンを入力した場合に各ゲートで発生するイベント数を示す図である。
【図３８】（ａ），（ｂ）は、それぞれ、図３６，図３７に示す例に対して従来手法および類似設計モデルの論理シミュレーションモデルを用いる本実施形態の手法を適用した結果得られた、ゲート割当および処理イベント数をＰＥ毎に示す図である。
【図３９】図３８（ａ），（ｂ）に示すごとくゲートを割り当てられた各ＰＥでのイベント処理実行順序（論理シミュレーションに要する時間）をゲート番号によって入力パタン毎に示す図である。
【図４０】従来の論理シミュレーション手順を説明するためのフローチャートである。
【符号の説明】
１  論理シミュレーション装置
２  並列処理型ハードウエア
２ａ  プロセッシング・エレメント（ＰＥ）
３  設計データファイル
４  モデル作成部
５  モデルファイル
６  論理シミュレーション実行部
７  負荷測定部
８  負荷データファイル
１０  論理シミュレーション装置
１１  並列処理型論理シミュレーション用ハードウエア（並列処理型ハードウエア）
１１ａ  ＰＥ（プロセッシング・エレメント）
１２  設計データファイル
１３  論理シミュレーションモデル作成部（モデル作成部）
１４  論理シミュレーションモデルファイル（モデルファイル）
１５  論理シミュレーション実行部
１６  論理シミュレーション実行指示ファイル
１７  イベント数測定用カウンタ（負荷測定部）
１８  イベント数測定用カウンタ制御回路
１９  イベント数データファイル（負荷データファイル）
２０  論理シミュレーションモデル再作成部（モデル再作成部）
２１  イベント数データ集計部（データ集計部）
２２  統計データファイル
【図１】
0003645346.tif 000005
【図２】
0003645346.tif 000006
【図３】
0003645346.tif 000007
【図４】
0003645346.tif 000008
【図５】
0003645346.tif 000009
【図６】
0003645346.tif 000010
【図７】
0003645346.tif 000011
【図８】
0003645346.tif 000012
【図９】
0003645346.tif 000013
【図１０】
0003645346.tif 000014
【図１１】
0003645346.tif 000015
【図１２】
0003645346.tif 000016
【図１３】
0003645346.tif 000017
【図１４】
0003645346.tif 000018
【図１５】
0003645346.tif 000019
【図１６】
0003645346.tif 000020
【図１７】
0003645346.tif 000021
【図１８】
0003645346.tif 000022
【図１９】
0003645346.tif 000023
【図２０】
0003645346.tif 000024
【図２１】
0003645346.tif 000025
【図２２】
0003645346.tif 000026
【図２３】
0003645346.tif 000027
【図２４】
0003645346.tif 000028
【図２５】
0003645346.tif 000029
【図２６】
0003645346.tif 000030
【図２７】
0003645346.tif 000031
【図２８】
0003645346.tif 000032
【図２９】
0003645346.tif 000033
【図３０】
0003645346.tif 000034
【図３１】
0003645346.tif 000035
【図３２】
0003645346.tif 000036
【図３３】
0003645346.tif 000037
【図３４】
0003645346.tif 000038
【図３５】
0003645346.tif 000039
【図３６】
0003645346.tif 000040
【図３７】
0003645346.tif 000041
【図３８】
0003645346.tif 000042
【図３９】
0003645346.tif 000043
【図４０】
0003645346.tif 000044