(57)【特許請求の範囲】
【請求項１】
上位レベル記述による回路を複数のプロセッサによりシミュレートするための論理シミュレーション方法であって、
前記上位レベル記述中の順次処理記述からループを抽出し、
抽出された前記ループについての実行条件を抽出し、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出し、
抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割してから、
分割された前記複数のシミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで同時に実行することを特徴とする、論理シミュレーション方法。
【請求項２】
上位レベル記述による回路を複数のプロセッサによりシミュレートするための論理シミュレーション方法であって、
前記上位レベル記述中の順次処理記述からループを抽出し、
抽出された前記ループについての実行条件を抽出し、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出し、
抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成してから、
作成された該シミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで実行することを特徴とする、論理シミュレーション方法。
【請求項３】
上位レベル記述による回路を複数のプロセッサによりシミュレートするための論理シミュレーション方法であって、
前記上位レベル記述中の順次処理記述からループを抽出し、
抽出された前記ループについての実行条件を抽出し、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出し、
抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割し、
分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出し、
抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成してから、
作成された該シミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで実行することを特徴とする、論理シミュレーション方法。
【請求項４】
上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなる論理シミュレーション装置であって、
前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、
該ループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、
該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、
該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する同時実行部分抽出手段と、
該同時実行部分抽出手段により抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する分割手段とをそなえ、
該論理シミュレータにおける前記複数のプロセッサが、該分割手段により分割された前記複数のシミュレーションモデルについてのシミュレーションを同時に実行することを特徴とする、論理シミュレーション装置。
【請求項５】
上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなる論理シミュレーション装置であって、
前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、
該ループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、
該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、
該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する同時実行演算抽出手段と、
該同時実行演算抽出手段により抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成するモデル作成手段とをそなえ、
該論理シミュレータにおける前記複数のプロセッサが、該モデル作成手段により作成された該シミュレーションモデルについてのシミュレーションを実行することを特徴とする、論理シミュレーション装置。
【請求項６】
上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなる論理シミュレーション装置であって、
前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、
該ループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、
該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、
該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する同時実行部分抽出手段と、
該同時実行部分抽出手段により抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する分割手段と、
該分割手段により分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する同時実行演算抽出手段と、
該同時実行演算抽出手段により抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成するモデル作成手段とをそなえ、
該論理シミュレータにおける前記複数のプロセッサが、該モデル作成手段により作成された該シミュレーションモデルについてのシミュレーションを実行することを特徴とする、論理シミュレーション装置。
【請求項７】
上位レベル記述による回路を複数のプロセッサによりシミュレートすべくコンピュータを動作させるための論理シミュレーションプログラムを格納した記憶媒体であって、
該論理シミュレーションプログラムが、
前記上位レベル記述中の順次処理記述からループを抽出する手段、
抽出された前記ループについての実行条件を抽出する手段、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段、
抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段、および、
分割された前記複数のシミュレーションモデルについてのシミュレーションを前記複数のプロセッサで同時に実行させる手段として該コンピュータを機能させることを特徴とする、論理シミュレーションプログラムを格納した記憶媒体。
【請求項８】
上位レベル記述による回路を複数のプロセッサによりシミュレートすべくコンピュータを動作させるための論理シミュレーションプログラムを格納した記憶媒体であって、
該論理シミュレーションプログラムが、
前記上位レベル記述中の順次処理記述からループを抽出する手段、
抽出された前記ループについての実行条件を抽出する手段、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段、
抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成する手段、および、
作成された該シミュレーションモデルについてのシミュレーションを前記複数のプロセッサで実行させる手段として該コンピュータを機能させることを特徴とする、論理シミュレーションプログラムを格納した記憶媒体。
【請求項９】
上位レベル記述による回路を複数のプロセッサによりシミュレートすべくコンピュータを動作させるための論理シミュレーションプログラムを格納した記憶媒体であって、
該論理シミュレーションプログラムが、
前記上位レベル記述中の順次処理記述からループを抽出する手段、
抽出された前記ループについての実行条件を抽出する手段、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する手段、
抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、
当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段、
抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段、
該分割手段により分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段、
抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成する手段、および、
作成された該シミュレーションモデルについてのシミュレーションを前記複数のプロセッサで実行させる手段として該コンピュータを機能させることを特徴とする、論理シミュレーションプログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
（目次）
発明の属する技術分野
従来の技術（図３３，図３４）
発明が解決しようとする課題（図３５）
課題を解決するための手段
発明の実施の形態（図１〜図３２）
発明の効果
【０００２】
【発明の属する技術分野】
本発明は、上位レベル記述言語〔例えばハードウエア記述言語（ＨＤＬ：Hardware Description Language)〕で記述された回路の論理シミュレーションを複数のプロセッサにより並列的に行なうための方法および装置、並びにそのプログラムを格納した記憶媒体に関し、特に、論理回路の論理の検証を例えばイベントドリブンの論理シミュレーション方式で行なう際に用いてそのシミュレーションを高速化するための技術に関する。
【０００３】
近年の論理回路の大規模化，高集積化によりその論理の検証に非常に時間がかかるようになり、より高速な検証手法の開発が要求されている。論理の検証には主に論理シミュレーションにより期待値とシミュレーション結果とを比較する手法が採られている。従って、論理検証の高速化のためには、論理シミュレーションの高速化をはかる必要がある。
【０００４】
【従来の技術】
従来の論理シミュレーションでは、高速化を達成するために、上位レベル記述言語〔例えばハードウエア記述言語（ＨＤＬ）〕による回路の記述や高速な専用計算機（シミュレーション専用マシン）の利用などが行なわれている。高速な専用計算機による高速化は、対象がゲートレベル記述のみであるため、専用計算機を使用して上位レベル記述をシミュレートする際にはその上位レベル記述を順次実行する機構を付加したシミュレーションモデルを作成し、そのシミュレーションモデルを用いてシミュレーションを行なっている。
【０００５】
従来のシミュレーション専用マシンでは、例えば図３３に示すように、上位レベル記述言語による回路記述１を解析しコントロール／データフローグラフを作成する解析器（コントロール／データフローグラフ作成器）２をそなえ、論理シミュレータ５が、解析器２で作成されたコントロール／データフローグラフを使用して論理シミュレーションを実行している。
【０００６】
例えば図３４（ａ）に示すような、ＶＨＤＬ〔ＶＨＳＩＣ（Very High Speed IC）Hardware Description Language〕〕による順次処理記述は、解析器２により解析され、その順次処理記述に対応した、図３４（ｂ）に示すようなコントロール／データフローグラフ（シミュレーションモデル）に変換される。図３４（ｂ）中、一点鎖線矢印は記述の実行順序を表し、点線矢印はデータの流れを表している。
【０００７】
【発明が解決しようとする課題】
ところで、ＨＤＬを用いた回路の設計は、設計変更の容易さや理解し易さなどの面から回路を設計する場合には非常に有効であり、回路規模が大きくなるにつれてさらにその重要性が増している。ＨＤＬのシミュレーションを行なうことにより実際に回路を作成する前にその動作を確認（論理検証）することができるため、シミュレーションの高速化は設計期間を短縮する上で重要な要素といえる。シミュレーションの高速化としてはＨＤＬの言語の性質上、並列処理が有効である。
【０００８】
しかし、パイプライン処理や並列処理でシミュレートする場合、順次処理記述が並列処理の妨げになりシミュレーションの速度を低下させている。つまり、シミュレーション時間の長い順次処理記述が、並列度を低下させ、シミュレーション高速化の妨げになっている。例えば図３５に示す２つのＶＨＤＬ処理記述を同時にシミュレーションした場合、左側の記述（処理Ｐ１）よりも長い右側の記述（処理Ｐ２）によってシミュレーションの終了時間が決まる。即ち、処理Ｐ１のシミュレーションを実行する処理部は、そのシミュレーションを終了した後、他の処理部で処理Ｐ２のシミュレーションを終了するまでの間待機し無駄な時間を過ごすことになる。
【０００９】
このように、図３４（ｂ）に示すようなシミュレーションモデルを使用した場合、専用計算機の高速化の要因の一つである複数のプロセッサによる複数の記述の同時実行が不可能な状況が生じ、専用計算機を使用しても並列度が上がらず、ＶＨＤＬ等の上位レベル記述を高速にシミュレートすることができないという課題があった。
【００１０】
本発明は、このような課題に鑑み創案されたもので、順次処理記述を同時処理できるようにして、上位レベル記述による回路の論理シミュレーションの時間短縮／高速化をはかった、論理シミュレーション方法および装置並びに論理シミュレーションプログラムを格納した記憶媒体を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明の論理シミュレーション方法（請求項１）は、上位レベル記述による回路を複数のプロセッサによりシミュレートするためのものであって、前記上位レベル記述中の順次処理記述からループを抽出し、抽出された前記ループについての実行条件を抽出し、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出し、抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割してから、分割された前記複数のシミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで同時に実行することを特徴としている。
【００１２】
請求項１に記載の方法を実現するための本発明の論理シミュレーション装置（請求項４）は、上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなるものであって、前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、該ループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する同時実行部分抽出手段と、この同時実行部分抽出手段により抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する分割手段とをそなえ、該論理シミュレータにおける前記複数のプロセッサが、該分割手段により分割された前記複数のシミュレーションモデルについてのシミュレーションを同時に実行することを特徴としている。
【００１３】
請求項１の方法を実現するために、本発明の記憶媒体（請求項７）には、上位レベル記述中の順次処理記述からループを抽出する手段、抽出された前記ループについての実行条件を抽出する手段、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段、抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段、および、分割された前記複数のシミュレーションモデルについてのシミュレーションを複数のプロセッサで同時に実行させる手段としてコンピュータを機能させる論理シミュレーションプログラムが格納されている。
【００１４】
また、本発明の論理シミュレーション方法（請求項２）は、上位レベル記述による回路を複数のプロセッサによりシミュレートするためのものであって、前記上位レベル記述中の順次処理記述からループを抽出し、抽出された前記ループについての実行条件を抽出し、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出し、抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成してから、作成された該シミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで実行することを特徴としている。
【００１５】
請求項２に記載の方法を実現するための本発明の論理シミュレーション装置（請求項５）は、上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなるものであって、前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、このループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する同時実行演算抽出手段と、該同時実行演算抽出手段により抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成するモデル作成手段とをそなえ、該論理シミュレータにおける前記複数のプロセッサが、該モデル作成手段により作成された該シミュレーションモデルについてのシミュレーションを実行することを特徴としている。
【００１６】
請求項２の方法を実現するために、本発明の記憶媒体（請求項８）には、上位レベル記述中の順次処理記述からループを抽出する手段、抽出された前記ループについての実行条件を抽出する手段、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段、抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成する手段、および、作成された該シミュレーションモデルについてのシミュレーションを複数のプロセッサで実行させる手段としてコンピュータを機能させる論理シミュレーションプログラムが格納されている。
【００１７】
さらに、本発明の論理シミュレーション方法（請求項３）は、上位レベル記述による回路を複数のプロセッサによりシミュレートするためのものであって、前記上位レベル記述中の順次処理記述からループを抽出し、抽出された前記ループについての実行条件を抽出し、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行ない、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出し、抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割し、分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出し、抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成してから、作成された該シミュレーションモデルについてのシミュレーションを、前記複数のプロセッサで実行することを特徴としている。
【００１８】
請求項３に記載の方法を実現するための本発明の論理シミュレーション装置（請求項６）は、上位レベル記述による回路を複数のプロセッサによりシミュレートする論理シミュレータをそなえてなるものであって、前記上位レベル記述中の順次処理記述からループを抽出するループ抽出手段と、該ループ抽出手段により抽出された前記ループについての実行条件を抽出する実行条件抽出手段と、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、該実行条件抽出手段により抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なうループ展開手段と、該ループ展開手段による当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する同時実行部分抽出手段と、該同時実行部分抽出手段により抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する分割手段と、該分割手段により分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する同時実行演算抽出手段と、この同時実行演算抽出手段により抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成するモデル作成手段とをそなえ、該論理シミュレータにおける前記複数のプロセッサが、該モデル作成手段により作成された該シミュレーションモデルについてのシミュレーションを実行することを特徴としている。
【００１９】
請求項３の方法を実現するために、本発明の記憶媒体（請求項９）には、上位レベル記述中の順次処理記述からループを抽出する手段、抽出された前記ループについての実行条件を抽出する手段、抽出された前記実行条件が予め演算可能なものである場合にその実行条件をもつ前記ループを展開する一方、抽出された前記実行条件が予め演算可能なものでない場合にその実行条件をもつ前記ループの展開を省略する処理を行なう手段、当該処理後の前記回路のシミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段、抽出された前記同時実行可能な部分に従って前記回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段、該分割手段により分割された各シミュレーションモデル中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段、抽出された前記同時実行可能な演算を前記複数のプロセッサで同時に実行させるように前記回路のシミュレーションモデルを作成する手段、および、作成された該シミュレーションモデルについてのシミュレーションを複数のプロセッサで実行させる手段としてコンピュータを機能させる論理シミュレーションプログラムが格納されている。
【００２０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１は本発明の一実施形態としての論理シミュレーション装置の構成を示すブロック図で、回路の上位レベル記述を高速化シミュレーションモデルに変換するためのデータの流れを示している。
【００２１】
この図１に示すように、本実施形態の論理シミュレーション装置２０は、コントロール／データフローグラフ作成器（解析器）２１，同時実行部抽出器２２，グラフ変換器（シミュレーションモデル生成器）２３および論理シミュレータ２４から構成されている。
ここで、コントロール／データフローグラフ作成器２１は、図３３に示した解析器２と同様のもので、上位レベル記述言語（例えばＶＨＤＬ）による回路記述１を解析し、その回路記述１を例えば図２に示すようなコントロール／データフローグラフ（データ依存関係グラフ）に変換して、コントロール／データフローグラフを作成するものである。
【００２２】
同時実行部抽出器２２は、コントロール／データフローグラフ作成器２１により作成されたコントロール／データフローグラフに基づいて、下記の機能(1)〜(4)を果たすものである。
(1)回路記述１（上位レベル記述）中の順次処理記述からデータの依存関係を抽出することにより、同時実行可能な部分を抽出する同時実行部分抽出手段としての機能。例えば、図２に示すコントロール／データフローグラフから図３に示すような同時実行可能な部分（演算）を抽出する。本実施形態において「部分」は少なくとも１つの「演算」から構成されている。
【００２３】
(2)回路記述１（上位レベル記述）中の順次処理記述からループを抽出するループ抽出手段としての機能。
(3)上記項目(2)の機能により抽出されたループについての実行条件を抽出する実行条件抽出手段としての機能。
(4)回路記述１（上位レベル記述）中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する同時実行演算抽出手段としての機能。機能(1)と同様、例えば、図２に示すコントロール／データフローグラフから図３に示すような同時実行可能な演算を抽出する。
【００２４】
なお、機能(2)と(3)とは常に対になって実行される機能である。そして、本実施形態の同時実行部抽出器２２では、上述した機能(1)と機能(2)＆(3)と機能(4)とのうちの少なくとも１つが実行され、２以上の機能を同時に実行することも可能になっている。
グラフ変換器２３は、同時実行部抽出器２２により抽出された各種情報に基づいて、コントロール／データフローグラフ作成器２１で作成されたコントロール／データフローグラフを修正し、シミュレーションモデルを生成するもので、下記の機能(5)〜(7)を果たすものである。
【００２５】
(5)同時実行部抽出器２２の機能(1)により抽出された同時実行可能な部分の情報に基づいて、回路のシミュレーションモデル（コントロール／データフローグラフ）を独立した複数のシミュレーションモデルに分割し、該当する部分を同時に実行可能な形に書き換える分割手段としての機能。
(6)同時実行部抽出器２２の機能(3)により抽出された実行条件が予め演算可能なものである場合に、その実行条件をもつループをコントロール／データフローグラフに基づいて展開するループ展開手段としての機能。
【００２６】
(7)同時実行部抽出器２２の機能(4)により抽出された同時実行可能な演算を、後述する論理シミュレータ２４の複数のプロセッサで同時に実行させるように、コントロール／データフローグラフを変更して回路のシミュレーションモデルを作成するモデル作成手段としての機能。
なお、本実施形態のグラフ変換器２３では、上述した機能(5)〜(7)のうちの少なくとも１つが実行され、２以上の機能を同時に実行することも可能になっている。
【００２７】
論理シミュレータ２４は、グラフ変換器２３で得られたシミュレーションモデルを使用して、複数のプロセッサにより論理シミュレーションを並列的に実行するもので、その複数のプロセッサが、グラフ変換器２３の機能(5)〜(7)のうちの少なくとも１つによってコントロール／データフローグラフから生成されたシミュレーションモデルについての論理シミュレーションを実行する。
【００２８】
これらのコントロール／データフローグラフ作成器２１，同時実行部抽出器２２およびグラフ変換器２３の各機能は、実際には、ハードディスク，磁気テープ，フロッピディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ等の記憶媒体に格納された論理シミュレーションプログラムを読み出し、そのプログラムをＣＰＵ（コンピュータ）で実行することにより、ＣＰＵの動作として実現される。
【００２９】
本実施形態の論理シミュレーションプログラムとしては、下記項目(11)〜(17)に記載したもののいずれかを使用することができる。以下に、各プログラムについて図４〜図１０に示すフローチャートを参照しながら説明する。
(11)回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図４のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段（同時実行部抽出器２２の機能(1)；図４のステップＳ１２）、抽出された同時実行可能な部分に従って回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段（グラフ変換器２３の機能(5)；図４のステップＳ１３）、および、分割された複数のシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで同時に実行させる手段（図４のステップＳ１４）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３０】
(12)回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図５のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からループを抽出する手段（同時実行部抽出器２２の機能(2)；図５のステップＳ２１）、抽出されたループについての実行条件を抽出する手段（同時実行部抽出器２２の機能(3)；図５のステップＳ２２）、抽出された実行条件が予め演算可能なものである場合にその実行条件をもつループを展開する手段（グラフ変換器２３の機能(6)；図５のステップＳ２３のＹＥＳルートからステップＳ２４）、および、ループを展開されたシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで実行させる手段（図５のステップＳ２５）としてＣＰＵを機能させる論理シミュレーションプログラム。この論理シミュレーションプログラムは、ステップＳ２３でＮＯ判定の場合、ＣＰＵを、ループ展開を行なうことなくシミュレーションを論理シミュレータ２４の複数のプロセッサで実行させる手段（図５のステップＳ２６）としても機能させる。
【００３１】
(13)回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図６のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段（同時実行部抽出器２２の機能(4)；図６のステップＳ３１）、抽出された同時実行可能な演算を複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成する手段（グラフ変換器２３の機能(7)；図６のステップＳ３２）、および、作成されたシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで実行させる手段（図６のステップＳ３３）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３２】
(14)前記項目(11)と(12)とを組み合わせたもので、回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図７のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からループを抽出する手段（同時実行部抽出器２２の機能(2)；図７のステップＳ２１）、抽出されたループについての実行条件を抽出する手段（同時実行部抽出器２２の機能(3)；図７のステップＳ２２）、抽出された実行条件が予め演算可能なものである場合にその実行条件をもつループを展開する手段（グラフ変換器２３の機能(6)；図７のステップＳ２３のＹＥＳルートからステップＳ２４）、ループ展開されたコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段（同時実行部抽出器２２の機能(1)；図７のステップＳ１２もしくはステップＳ２３のＮＯルートからステップＳ１２）、抽出された同時実行可能な部分に従って回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段（グラフ変換器２３の機能(5)；図７のステップＳ１３）、および、分割された複数のシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで同時に実行させる手段（図７のステップＳ４１）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３３】
(15)前記項目(11)と(13)とを組み合わせたもので、回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図８のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段（同時実行部抽出器２２の機能(1)；図８のステップＳ１２）、抽出された同時実行可能な部分に従って回路のシミュレーションモデル（コントロール／データフローグラフ）を独立した複数のシミュレーションモデルに分割する手段（グラフ変換器２３の機能(5)；図８のステップＳ１３）、分割された各シミュレーションモデル（コントロール／データフローグラフ）中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段（同時実行部抽出器２２の機能(4)；図８のステップＳ３１）、抽出された同時実行可能な演算を複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成する手段（グラフ変換器２３の機能(7)；図８のステップＳ３２）、および、分割・作成された複数のシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで同時に実行させる手段（図８のステップＳ５１）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３４】
(16)前記項目(12)と(13)とを組み合わせたもので、回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図９のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からループを抽出する手段（同時実行部抽出器２２の機能(2)；図９のステップＳ２１）、抽出されたループについての実行条件を抽出する手段（同時実行部抽出器２２の機能(3)；図９のステップＳ２２）、抽出された実行条件が予め演算可能なものである場合にその実行条件をもつループを展開する手段（グラフ変換器２３の機能(6)；図９のステップＳ２３のＹＥＳルートからステップＳ２４）、ループ展開されたコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段（同時実行部抽出器２２の機能(4)；図９のステップＳ３１もしくはステップＳ２３のＮＯルートからステップＳ３１）、抽出された同時実行可能な演算を複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成する手段（グラフ変換器２３の機能(7)；図９のステップＳ３２）、および、作成されたシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで実行させる手段（図９のステップＳ６１）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３５】
(17)前記項目(11)〜(13)を組み合わせたもので、回路記述１からコントロール／データフローグラフを作成する手段（コントロール／データフローグラフ作成器２１；図１０のステップＳ１１）、そのコントロール／データフローグラフ中の順次処理記述からループを抽出する手段（同時実行部抽出器２２の機能(2)；図１０のステップＳ２１）、抽出されたループについての実行条件を抽出する手段（同時実行部抽出器２２の機能(3)；図１０のステップＳ２２）、抽出された実行条件が予め演算可能なものである場合にその実行条件をもつループを展開する手段（グラフ変換器２３の機能(6)；図１０のステップＳ２３のＹＥＳルートからステップＳ２４）、ループ展開されたコントロール／データフローグラフ中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な部分を抽出する手段（同時実行部抽出器２２の機能(1)；図１０のステップＳ１２もしくはステップＳ２３のＮＯルートからステップＳ１２）、抽出された同時実行可能な部分に従って回路のシミュレーションモデルを独立した複数のシミュレーションモデルに分割する手段（グラフ変換器２３の機能(5)；図１０のステップＳ１３）、分割された各シミュレーションモデル（コントロール／データフローグラフ）中の順次処理記述からデータの依存関係を抽出することにより同時実行可能な演算を抽出する手段（同時実行部抽出器２２の機能(4)；図１０のステップＳ３１）、抽出された同時実行可能な演算を複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成する手段（グラフ変換器２３の機能(7)；図１０のステップＳ３２）、および、分割・作成された複数のシミュレーションモデルについてのシミュレーションを論理シミュレータ２４の複数のプロセッサで同時に実行させる手段（図１０のステップＳ７１）としてＣＰＵを機能させる論理シミュレーションプログラム。
【００３６】
次に、図１１〜図３２を参照しながら、具体的な上位レベル記述に対し本実施形態による論理シミュレーションを適用した際の動作について説明する。なお、図中、楕円は演算を示し、菱形は実行順序の分岐を示し、太点線矢印は実行順序を示し、太実線矢印はデータ依存関係を示している。また、各回路記述（上位レベル記述）は回路記述言語ＶＨＤＬにより記述されている。
【００３７】
まず、図１１〜図１４により、前記項目(11)の論理シミュレーションプログラムに対応した動作を説明する。
図１１（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、論理シミュレーションを行なう際、その記述を記述順に実行し、その結果を期待値と比較する。これにより、図１１（ａ）に示す記述について、コントロール／データフローグラフ作成器２１で図１１（ｂ）に示すようなコントロール／データフローグラフが作成される。
【００３８】
この図１１（ｂ）に示すコントロール／データフローグラフにおけるそれぞれの演算の入出力の依存関係は図１２（ａ）〜（ｃ）に示すようになる。同時実行部抽出器２２では、図１２（ａ）〜（ｃ）に示す依存関係に基づいて、図１３（ａ）〜（ｃ）に示すような同時に実行可能な部分（演算）の組み合わせを作成し、その結果に基づいて、グラフ変換器２３の分割機能により、図１１（ｂ）に示すコントロール／データフローグラフを図１４（ａ）〜（ｃ）に示す形に変換する。
【００３９】
このように変換した結果を、多数のプロセッサをもつ専用計算機である論理シミュレータ２４上でシミュレートした場合、元の記述では３個の演算を順次実行していたものが、３個の演算（部分）をそれぞれ別個のプロセッサでシミュレートすることができるようになるため、図１１（ａ）に示す記述の論理シミュレーションの実行時間は３倍高速化される。
【００４０】
図１５〜図１８により、前記項目(12)および(14)の論理シミュレーションプログラムに対応した動作を説明する。
図１５（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、コントロール／データフローグラフ作成器２１により図１５（ｂ）に示すようなコントロール／データフローグラフに変換される。
【００４１】
この図１５（ｂ）に示すコントロール／データフローグラフについて、同時実行部抽出器２２のループ抽出機能を用いてデータ依存関係を調査することによりその記述中にループが含まれていることがわかる。
さらに、同時実行部抽出器２２のループ条件抽出機能により、そのループの開始条件および終了条件を解析してその条件が既知であることが分かった場合（実行条件が予め計算可能である場合）には、グラフ変換器２３のループ展開機能により、図１５（ｂ）に示すコントロール／データフローグラフのループを、図１６に示すように展開する。このようなループ展開によって、演算の数が削減されるため、シミュレーションを高速化することができる。
【００４２】
そして、ここに示す例では、ループを展開したことによりデータ依存関係に変化が生じ、その結果を再度調査した結果、同時実行部抽出器２２により図１７（ａ）〜（ｃ）に示すような３つの同時に実行可能な部分（演算）が抽出される。その結果に基づいて、グラフ変換器２３の分割機能により、図１１（ｂ）に示すコントロール／データフローグラフを図１４（ａ）〜（ｃ）に示す形に変換する。このように変換した結果を、論理シミュレータ２４上でシミュレートする。
【００４３】
図１９〜図２１により、前記項目(13)の論理シミュレーションプログラムに対応した動作を説明する。
図１９（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、コントロール／データフローグラフ作成器２１により図１９（ｂ）に示すようなコントロール／データフローグラフに変換される。
【００４４】
この図１９（ｂ）に示すコントロール／データフローグラフについて、同時実行部抽出器２２の同時実行演算抽出機能を用いてデータ依存関係を調査することにより、その記述中には、イベントドリブン法による論理シミュレーションでは実行順序を保証できない部分が有ることが分かる。具体的に、イベントドリブン法では、信号ＡＤＲＳと信号ＤＡＴＡとのいずれかが変わるとメモリ素子（ＭＥＭＯＲＹ）への書込が行なわれる。一方、記述の示しているのは信号ＣＬＯＣＫの変化のあった時のみ書込が行なわれる。
【００４５】
このような場合には、シミュレーションモデルを分割することができないので、その記述の各演算の実行の依存関係を保持しながら、同時実行部抽出器２２の同時実行演算抽出機能により、図２０に示すように、２つの同時に実行可能な部分（演算）が抽出される。その結果に基づいて、グラフ変換器２３のモデル作成機能により、同時実行可能な演算を並列化して、図２０に示すコントロール／データフローグラフを図２１に示す形に変換する。このように変換した結果を、論理シミュレータ２４上でシミュレートする。
【００４６】
図２２〜図２５により、前記項目(15)の論理シミュレーションプログラムに対応した動作を説明する。
図２２（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、コントロール／データフローグラフ作成器２１により図２２（ｂ）に示すようなコントロール／データフローグラフに変換される。
【００４７】
この図２２（ｂ）に示すコントロール／データフローグラフについて、同時実行部抽出器２２の同時実行部分抽出機能を用いてデータ依存関係を調査することにより、図２３に示すように３つの同時に実行可能な部分（演算）が抽出され、その結果に基づいて、グラフ変換器２３の分割機能により、図２３に示すコントロール／データフローグラフを図２４（ａ）〜（ｃ）に示す形に変換する。
【００４８】
さらに、図２４（ａ）に示すコントロール／データフローグラフについては、同時実行部抽出器２２の同時実行演算抽出機能を用いてデータ依存関係を調査することにより、２つの同時に実行可能な演算が抽出され、その結果に基づいて、グラフ変換器２３のモデル作成機能により、同時実行可能な演算を並列化して、図２４（ａ）に示すコントロール／データフローグラフを図２５（ａ）に示す形に変換する。なお、図２４（ｂ），（ｃ）に示すコントロール／データフローグラフには、同時実行可能な演算は存在しないので、図２５（ｂ），（ｃ）に示すように変換は施されていない。このように変換した結果を、論理シミュレータ２４上でシミュレートする。
【００４９】
図２６〜図２８により、前記項目(16)の論理シミュレーションプログラムに対応した動作を説明する。
図２６（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、コントロール／データフローグラフ作成器２１により図２６（ｂ）に示すようなコントロール／データフローグラフに変換される。
【００５０】
この図２６（ｂ）に示すコントロール／データフローグラフについて、同時実行部抽出器２２のループ抽出機能を用いてデータ依存関係を調査することによりその記述中に２つのループが含まれていることがわかる。
そして、同時実行部抽出器２２のループ条件抽出機能により、２つのループのうち最初のループの実行条件は、信号変化に基づくもので予め演算することが不可能であるため、ループ展開されないが、２番目のループの実行条件は、そのループの開始条件および終了条件を解析してその条件が既知であることが分かるので（実行条件が予め計算可能であるので）、グラフ変換器２３のループ展開機能により、図２６（ｂ）に示すコントロール／データフローグラフの２番目のループを、図２７に示すようにループ展開する。
【００５１】
ここで、ループ展開された部分は、信号変化に同期する演算のみからなるため分割することはできないが、その部分を再度調査した結果、同時実行部抽出器２２の同時実行演算抽出機能により、図２７に示すような６つの同時に実行可能な演算が抽出される。その結果に基づいて、グラフ変換器２３のモデル作成機能により、同時実行可能な演算を並列化して、図２７に示すコントロール／データフローグラフを図２８に示す形に変換する。このように変換した結果を、論理シミュレータ２４上でシミュレートする。
【００５２】
最後に、図２９〜図３２により、前記項目(17)の論理シミュレーションプログラムに対応した動作を説明する。
図２９（ａ）に示すようなＶＨＤＬによる上位レベル記述（回路記述）は、コントロール／データフローグラフ作成器２１により図２９（ｂ）に示すようなコントロール／データフローグラフに変換される。
【００５３】
この図２９（ｂ）に示すコントロール／データフローグラフについて、同時実行部抽出器２２のループ抽出機能を用いてデータ依存関係を調査することによりその記述中に２つのループが含まれていることがわかる。
そして、同時実行部抽出器２２のループ条件抽出機能により、２つのループのうち最初のループの実行条件は、前述した通り信号変化に基づくもので予め演算することが不可能であるため、ループ展開されないが、２番目のループの実行条件は、そのループの開始条件および終了条件を解析してその条件が既知であることが分かるので（実行条件が予め計算可能であるので）、グラフ変換器２３のループ展開機能により、図２９（ｂ）に示すコントロール／データフローグラフの２番目のループを、図３０に示すようにループ展開する。
【００５４】
そして、ここに示す例では、ループを展開したことによりデータ依存関係に変化が生じ、そのループ展開結果について、同時実行部抽出器２２の同時実行部分抽出機能を用いてデータ依存関係を調査することにより、図３０に示すように４つの同時に実行可能な部分（演算）が抽出され、その結果に基づいて、グラフ変換器２３の分割機能により、図３０に示すコントロール／データフローグラフを図３１（ａ）〜（ｄ）に示す形に変換する。
【００５５】
さらに、図３１（ａ）に示すコントロール／データフローグラフにおいて、ループ展開された部分は、信号変化に同期する演算のみからなるため分割することはできないが、その部分を再度調査した結果、同時実行部抽出器２２の同時実行演算抽出機能により、６つの同時に実行可能な演算が抽出され、その結果に基づいて、グラフ変換器２３のモデル作成機能により、同時実行可能な演算を並列化して、図３１（ａ）に示すコントロール／データフローグラフを図３２（ａ）に示す形に変換する。なお、図３１（ｂ）〜（ｄ）に示すコントロール／データフローグラフには、同時実行可能な演算は存在しないので、図３２（ｂ）〜（ｄ）に示すように変換は施されていない。このように変換した結果を、論理シミュレータ２４上でシミュレートする。
【００５６】
このように、本発明の一実施形態によれば、上位レベル記述中の順次処理記述から同時実行可能な部分が抽出され、その同時実行可能な部分に従ってシミュレーションモデルを独立した複数のシミュレーションモデルに分割してから、論理シミュレータ２４の複数のプロセッサで同時にシミュレーションが実行されるので、順次処理記述を同時処理できるようになり並列処理における並列度が増大し、上位レベル記述（ＶＨＤＬ等）による回路の論理シミュレーションが時間短縮／高速化され、論理検証の時間の短縮に大きく寄与する。
【００５７】
また、上位レベル記述中の順次処理記述にループが有りそのループの実行条件が予め演算可能であればそのループを展開してから、シミュレーションが論理シミュレータ２４の複数のプロセッサで実行されるので、シミュレーションに際しての演算の数を削減することができ、論理シミュレーションのさらなる高速化に寄与する。
【００５８】
さらに、上位レベル記述言語による順次処理記述から同時実行可能な演算が抽出され、その同時実行可能な演算を論理シミュレータの複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成するので、さらなる並列化が行なわれることになり、論理シミュレーションをより高速化することができる。
【００５９】
なお、上述した実施形態では、上位レベル記述がＶＨＤＬである場合について説明しているが、本発明は、これに限定されるものではなく、Verilog ＨＤＬ，ＵＤＬ／Ｉ，ＳＨＬ等のハードウエア記述言語で記述された回路についても同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【００６０】
【発明の効果】
以上詳述したように、本発明の論理シミュレーション方法および装置並びに論理シミュレーションプログラムを格納した記憶媒体によれば、上位レベル記述中の順次処理記述から同時実行可能な部分が抽出され、その同時実行可能な部分に従ってシミュレーションモデルを独立した複数のシミュレーションモデルに分割してから、複数のプロセッサで同時にシミュレーションが実行されるので、順次処理記述を同時処理できるようになり並列処理における並列度が増大し、上位レベル記述による回路の論理シミュレーションが時間短縮／高速化され、論理検証の時間の短縮に寄与するところが大きい。
また、上位レベル記述言語による順次処理記述から同時実行可能な演算が抽出され、その同時実行可能な演算を複数のプロセッサで同時に実行させるように回路のシミュレーションモデルを作成してから、シミュレーションが複数のプロセッサで実行されるので、順次処理記述を同時処理できるようになり並列処理における並列度が増大し、上位レベル記述による回路の論理シミュレーションが時間短縮／高速化され、論理検証の時間の短縮に寄与するところが大きい。
【００６１】
このとき、上位レベル記述中の順次処理記述からループが抽出され、そのループの実行条件が予め演算可能であればそのループを展開してから、シミュレーションが複数のプロセッサで実行されるので、シミュレーションに際しての演算の数を削減することができ、上位レベル記述による回路の論理シミュレーションが時間短縮／高速化され、論理検証の時間の短縮に大きく寄与する。
【図面の簡単な説明】
【図１】本発明の一実施形態としての論理シミュレーション装置の構成を示すブロック図である。
【図２】コントロール／データフローグラフ（データ依存関係グラフ）の一例を示す図である。
【図３】図２に示すコントロール／データフローグラフから同時実行可能な部分（もしくは演算）を抽出した例を示す図である。
【図４】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図５】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図６】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図７】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図８】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図９】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図１０】本実施形態における論理シミュレーションプログラムを説明するためのフローチャートである。
【図１１】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図１２】（ａ）〜（ｃ）はいずれも図１１（ｂ）に示すコントロール／データフローグラフにおけるデータ依存関係を示す図である。
【図１３】（ａ）〜（ｃ）はいずれも図１１（ｂ）に示すコントロール／データフローグラフから同時実行可能な部分を抽出した例を示す図である。
【図１４】（ａ）〜（ｃ）はいずれも図１１（ｂ）に示すコントロール／データフローグラフを分割した状態を示す図である。
【図１５】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図１６】図１５（ｂ）に示すコントロール／データフローグラフをループ展開した後のグラフを示す図である。
【図１７】（ａ）〜（ｃ）はいずれも図１６に示すコントロール／データフローグラフから同時実行可能な部分を抽出した例を示す図である。
【図１８】（ａ）〜（ｃ）はいずれも図１６に示すコントロール／データフローグラフを分割した状態を示す図である。
【図１９】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図２０】図１９（ｂ）に示すコントロール／データフローグラフから同時実行可能な演算を抽出した例を示す図である。
【図２１】図２０に示すコントロール／データフローグラフにおいて同時に実行可能な演算を並列化した状態を示す図である。
【図２２】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図２３】図２２（ｂ）に示すコントロール／データフローグラフから同時実行可能な部分を抽出した例を示す図である。
【図２４】（ａ）〜（ｃ）はいずれも図２３に示すコントロール／データフローグラフを分割しさらに同時実行可能な演算を抽出した状態を示す図である。
【図２５】（ａ）〜（ｃ）はそれぞれ図２４（ａ）〜（ｃ）に示すコントロール／データフローグラフにおいて同時に実行可能な演算を並列化した状態を示す図である。
【図２６】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図２７】図２６（ｂ）に示すコントロール／データフローグラフから同時実行可能な演算を抽出した例を示す図である。
【図２８】図２７に示すコントロール／データフローグラフにおいて同時に実行可能な演算を並列化した状態を示す図である。
【図２９】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフとを示す図である。
【図３０】図２９（ｂ）に示すコントロール／データフローグラフからループを抽出して展開するとともに同時実行可能な部分を抽出した例を示す図である。
【図３１】（ａ）〜（ｄ）はいずれも図３０に示すコントロール／データフローグラフを分割しさらに同時実行可能な演算を抽出した状態を示す図である。
【図３２】（ａ）〜（ｄ）はそれぞれ図３１（ａ）〜（ｄ）に示すコントロール／データフローグラフにおいて同時に実行可能な演算を並列化した状態を示す図である。
【図３３】従来の論理シミュレーションにおけるデータ処理の流れを示すブロック図である。
【図３４】（ａ），（ｂ）はそれぞれ上位レベル記述例とその記述例についてのコントロール／データフローグラフ（シミュレーションモデル）とを示す図である。
【図３５】２つのＶＨＤＬ処理記述を同時にシミュレーションした際の処理時間を比較して示す図である。
【符号の説明】
１  回路記述
２０  論理シミュレーション装置
２１  コントロール／データフローグラフ作成器（解析器）
２２  同時実行部抽出器（同時実行部分抽出手段，ループ抽出手段，ループ実行条件抽出手段，同時実行演算抽出手段）
２３  グラフ変換器（シミュレーションモデル生成器；分割手段，ループ展開手段，モデル作成手段）
２４  論理シミュレータ
【図１】
0003608917.tif 000002
【図２】
0003608917.tif 000003
【図３】
0003608917.tif 000004
【図４】
0003608917.tif 000005
【図５】
0003608917.tif 000006
【図６】
0003608917.tif 000007
【図７】
0003608917.tif 000008
【図８】
0003608917.tif 000009
【図９】
0003608917.tif 000010
【図１０】
0003608917.tif 000011
【図１１】
0003608917.tif 000012
【図１２】
0003608917.tif 000013
【図１３】
0003608917.tif 000014
【図１４】
0003608917.tif 000015
【図１５】
0003608917.tif 000016
【図１６】
0003608917.tif 000017
【図１７】
0003608917.tif 000018
【図１８】
0003608917.tif 000019
【図１９】
0003608917.tif 000020
【図２０】
0003608917.tif 000021
【図２１】
0003608917.tif 000022
【図２２】
0003608917.tif 000023
【図２３】
0003608917.tif 000024
【図２４】
0003608917.tif 000025
【図２５】
0003608917.tif 000026
【図２６】
0003608917.tif 000027
【図２７】
0003608917.tif 000028
【図２８】
0003608917.tif 000029
【図２９】
0003608917.tif 000030
【図３０】
0003608917.tif 000031
【図３１】
0003608917.tif 000032
【図３２】
0003608917.tif 000033
【図３３】
0003608917.tif 000034
【図３４】
0003608917.tif 000035
【図３５】
0003608917.tif 000036