(57)【要約】【課題】高速、且つ、再現性のある分散シミュレーションを実現可能なスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置を提供することを目的とする。【解決手段】複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、スケジューラプログラムが実行されるコンピュータに、複数のシミュレーションプログラムの間でデータ授受が無い期間について、複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、複数のシミュレーションプログラムの間でデータ授受が有る期間について、複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、を実行させることにより上記課題を解決する。【選択図】  図６
2011134275.tif 000002
【特許請求の範囲】
【請求項１】
複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、
前記スケジューラプログラムが実行されるコンピュータに、
前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、
前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、
を実行させるためのスケジューラプログラム。
【請求項２】
前記コンピュータに、
前記並列実行手順を実行する前に、シミュレーション状態を保存する保存手順を実行させ、
前記逐次実行手順は、前記並列実行手順において前記データ授受が有ったことを検知すると、該並列実行手順を止め、前記シミュレーション状態を読み出して、前記保存手順を実行した時間から、前記データ授受が有った期間について、前記シミュレーションプログラムに逐次実行を行わせる、
請求項１記載のスケジューラプログラム。
【請求項３】
前記期間は所定の定数の期間であって、前記保存手順と前記並列実行手順と前記逐次実行手順を該期間単位で繰り返す、
請求項1又は２記載のスケジューラプログラム。
【請求項４】
前記複数のシミュレーションプログラムに、前記並列実行手順と共に前記逐次実行手順を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が無い期間であれば前記並列実行手順のシミュレーション結果を採用し、前記データ授受が有る期間であれば前記逐次実行手順のシミュレーション結果を採用する、
請求項１から３の何れかに記載のスケジューラプログラム。
【請求項５】
スケジューラプログラムが複数のシミュレーションプログラムを並列実行させる制御を行う分散シミュレーションシステムであって、
前記スケジューラプログラムが実行されるコンピュータは、
前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる分散シミュレーションシステム。
【請求項６】
複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラ装置において、
前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせるスケジューラ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散環境上で分散シミュレーションを実行するスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（Large Scale Integration：大規模集積回路）回路の規模は著しく増大している。したがって、ＬＳＩ回路の検証には大規模なシミュレーション環境が不可欠となっている。
【０００３】
例えば大規模なＬＳＩ回路のシミュレーション環境では、シミュレーションを複数のシミュレーションプログラムに分割し、シミュレーションプログラムを分散型コンピュータ環境（以下、分散環境という）で実行して、シミュレーション時間を短縮する技術が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２６８００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１は分散環境で実行するシミュレーション環境の一例のシステム構成図である。図１の分散環境で実行するシミュレーション環境は、複数のシミュレーションプログラム（以下、ＳＰという）１〜３が並列動作して、ＬＳＩ回路全体のシミュレーションを実現するものである。
【０００６】
スケジューラプログラム（以下、スケジューラという）１０は、分散環境で実行するシミュレーション環境（以下、分散型シミュレーション環境という）のシミュレーション時刻を管理しつつ、各ＳＰ１〜３に対してシミュレーション継続命令を送るものである。シミュレーション継続命令は各ＳＰ１〜３にタイムスロット値ＴＳを伝えるものである。
【０００７】
各ＳＰ１〜３はスケジューラ１０からのシミュレーション継続命令を受け取ると、時間ＴＳだけシミュレーションを実行して、その後、シミュレーションを停止する。時間ＴＳのシミュレーションの実行中、各ＳＰ１〜３は図２に示すように、他のＳＰとデータ授受の必要がある場合、ＳＰ間で適宜通信してデータを授受する。
【０００８】
図２はＳＰ間のデータ授受のタイミングを表すタイムチャートである。図２ではタイムスロット値ＴＳが１００ｍｓｅｃの例を表している。図２では、ｔ＝１００〜２００ｍｓｅｃの期間にデータ書き込みＳ１〜Ｓ３がＳＰ１とＳＰ２との間で行われている。各ＳＰ１〜３は、Loosely-timed modelの概念に基づいて、与えられたタイムスロット値ＴＳの中で、他のＳＰと関係なくシミュレーション時刻を進める。
【０００９】
Loosely-timed modelの概念とはタイムスロット値ＴＳ内であれば各ＳＰ間のデータ授受のタイミングの時間的変動を許可するというものである。図２では、ＳＰ１及びＳＰ２のシミュレーション時刻が完全に同期している場合に、各データ書き込みＳ１〜Ｓ３が１２０，１５０，１７０ｍｓｅｃで発生している。しかし、分散型シミュレーション環境の場合、ＳＰ１及びＳＰ２を実行するコンピュータの処理速度や通信速度に違いがあるためＳＰ１及びＳＰ２は同じシミュレーション時刻を持つことが通常期待できない。
【００１０】
図３はＳＰ１及びＳＰ２のシミュレーション時刻にずれが生じてしまった場合のＳＰ間のデータ授受のタイミングを表すタイムチャートである。図３は、ＳＰ１に比べてＳＰ２の実行が遅い例を表している。図３では、ＳＰ１がデータ書き込みＳ１，Ｓ３を自身のシミュレーション時刻１２０，１７０ｍｓｅｃで発生させている。しかし、ＳＰ２はデータ書き込みＳ１，Ｓ３を自身のシミュレーション時刻１１０，１２０ｍｓｅｃで受け取っている。
【００１１】
また、図３ではＳＰ２がデータ書き込みＳ２を自身のシミュレーション時刻１５０ｍｓｅｃで発生させている。しかし、ＳＰ１はデータ書き込みＳ２を自身のシミュレーション時刻１９０ｍｓｅｃで受け取っている。さらに、図３は図２と比較してデータ書き込みＳ２，Ｓ３の順序が異なる為、図２の２２０ｍｓｅｃで発生しているデータ読み込みＳ４が消失するという異なるシミュレーション結果がもたらされている。
【００１２】
このように、分散型シミュレーション環境では個々のＳＰが勝手に動作する場合、それぞれのＳＰを実行するコンピュータの処理速度や通信速度に違いがある為、通常、シミュレーション時刻を同じに保つことが期待できない。
【００１３】
このため、分散型シミュレーション環境はシミュレーション結果に再現性がないという問題があった。シミュレーション結果に再現性がない分散型シミュレーション環境では検証対象にバグを見つけたとしても、バグの発現を再現することが難しく、バグの原因を解析できない。
【００１４】
本発明の一実施形態は、高速、且つ、再現性のある分散シミュレーションを実現可能なスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明の一実施形態は、複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、前記スケジューラプログラムが実行されるコンピュータに、前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、を実行させるためのスケジューラプログラムである。
【００１６】
なお、本発明の一実施形態の構成要素、表現又は構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１７】
本発明の一実施形態によれば、高速、且つ、再現性のある分散シミュレーションを実現可能である。
【図面の簡単な説明】
【００１８】
【図１】分散環境で実行するシミュレーション環境の一例のシステム構成図である。
【図２】ＳＰ間のデータ授受のタイミングを表すタイムチャートである。
【図３】ＳＰ１及びＳＰ２のシミュレーション時刻にずれが生じてしまった場合のＳＰ間のデータ授受のタイミングを表すタイムチャートである。
【図４】分散型シミュレーション環境の一例のシステム構成図である。
【図５】スケジューラ又はシミュレーションプログラムを実行するコンピュータの一例のハードウェア構成図である。
【図６】コンピュータでスケジューラ及びシミュレーションプログラムを実行することで実現されるスケジューラ部及びシミュレーション部の一例のブロック構成図である。
【図７】スケジューラ部の処理を表した一例のフローチャートである。
【図８】シミュレーション部の処理を表した一例のフローチャートである。
【図９】データ授受の要求を溜めるキューの一例のデータ構造図である。
【図１０】ＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャート（１／３）である。
【図１１】ＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャート（２／３）である。
【図１２】ＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャート（３／３）である。
【図１３】ＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャートである。
【図１４】ＳＰ間のデータ授受のタイミングを表す他の実施例のタイムチャートである。
【発明を実施するための形態】
【００１９】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。
【００２０】
（システム構成）
図４は分散型シミュレーション環境の一例のシステム構成図である。図４のシステムはスケジューラ用コンピュータ２０と複数のシミュレーション用コンピュータ２１〜２３とがインターネットやＬＡＮ（Local Area Network：構内通信網）等のネットワーク２５を介してデータ通信可能に接続されている。
【００２１】
スケジューラ用コンピュータ２０はスケジューラ１０を実行する。シミュレーション用コンピュータ２１はシミュレーションプログラム（以下、ＳＰという）１を実行する。シミュレーション用コンピュータ２２はＳＰ２を実行する。また、シミュレーション用コンピュータ２３はＳＰ３を実行する。
【００２２】
なお、図３のシステムは３台のシミュレーション用コンピュータ２１〜２３の例を表しているが、３台以外であってもよい。また、図４のシステムは仮想化プラットフォームを利用し、仮想化されたコンピュータ上でスケジューラ１０及びＳＰ１〜３を実行することで実現してもよい。
【００２３】
（ハードウェア構成）
図５は、スケジューラ又はシミュレーションプログラムを実行するコンピュータの一例のハードウェア構成図である。コンピュータは、バスＢで相互に接続されている入力装置３１，出力装置３２，ドライブ装置３３，補助記憶装置３４，主記憶装置３５，演算処理装置３６及びインターフェース装置３７を有する。
【００２４】
入力装置３１はキーボードやマウス等である。入力装置３１は、各種信号を入力するために用いられる。出力装置３２はディスプレイ装置等である。出力装置３２は、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置３７は、モデム又はＬＡＮカード等である。インターフェース装置３７は、ネットワーク２５に接続する為に用いられる。
【００２５】
本実施例のスケジューラ１０は、スケジューラ用コンピュータ２０を制御する各種プログラムの少なくとも一部である。また、本実施例のＳＰ１〜３は、シミュレーション用コンピュータ２１〜２３を制御する各種プログラムの少なくとも一部である。スケジューラ１０及びＳＰ１〜３は例えば記録媒体３８の配布やネットワーク２５からのダウンロードなどによって提供される。スケジューラ１０及びＳＰ１〜３を記録した記録媒体３８はＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００２６】
スケジューラ１０を記録した記録媒体３８がドライブ装置３３にセットされると、スケジューラ１０は、記録媒体３８からドライブ装置３３を介して補助記憶装置３４にインストールされる。なお、ネットワークからダウンロードされたスケジューラ１０は、インターフェース装置３７を介して、補助記憶装置３４にインストールされる。補助記憶装置３４はインストールされたスケジューラ１０を格納すると共に、必要なファイル，データ等を格納する。
【００２７】
主記憶装置３５は、スケジューラ１０の起動時に補助記憶装置３４からスケジューラ１０を読み出して格納する。演算処理装置３６は主記憶装置３５に格納されたスケジューラ１０に従って、後述するような各種処理を実現している。
【００２８】
また、ＳＰ１〜３を記録した記録媒体３８がドライブ装置３３にセットされると、ＳＰ１〜３は記録媒体３８からドライブ装置３３を介して補助記憶装置３４にインストールされる。なお、ネットワークからダウンロードされたＳＰ１〜３は、インターフェース装置３７を介して、補助記憶装置３４にインストールされる。補助記憶装置３４はインストールされたＳＰ１〜３を格納すると共に、必要なファイル，データ等を格納する。
【００２９】
主記憶装置３５は、ＳＰ１〜３の起動時に補助記憶装置３４からＳＰ１〜３を読み出して格納する。演算処理装置３６は主記憶装置３５に格納されたＳＰ１〜３に従って、後述するような各種処理を実現している。
【００３０】
（ブロック構成）
図６はコンピュータでスケジューラ及びシミュレーションプログラムを実行することで実現されるスケジューラ部及びシミュレーション部の一例のブロック構成図である。図６ではシミュレーション部６０を一つ表しているが、コンピュータで実行したＳＰ１〜３に対応する３つのシミュレーション部６０が実現されたものとする。
【００３１】
スケジューラ部５０は、シミュレーション継続命令送信部５１，並列・逐次実行判断部５２及びデータ授受有無受信部５３を有する。また、シミュレーション部６０は、シミュレーション実行部６１，スナップショット保存・回復部６２，データ授受実行部６３及びデータ授受有無通知部６４を有する。
【００３２】
なお、スケジューラ部５０の並列・逐次実行判断部５２及びデータ授受有無受信部５３は本実施例で追加された処理ブロックである。シミュレーション部６０のデータ授受有無通知部６４は本実施例で追加された処理ブロックである。
【００３３】
本実施例では、分散型シミュレーション環境において、スケジューラ部５０が３つのシミュレーション部６０に逐次実行及び並列実行の両者を組み合わせて実行させることによりシミュレーション結果の再現性を保証する。
【００３４】
スケジューラ部５０の並列・逐次実行判断部５２は、各シミュレーション部６０に並列実行をさせるべく、スケジューラ部５０のシミュレーション継続命令送信部５１に通知を行う。スケジューラ部５０のシミュレーション継続命令送信部５１は各シミュレーション部６０にタイムスロット値ＴＳで並列実行させるべく、各シミュレーション部６０に対してシミュレーション継続命令を発行する。
【００３５】
各シミュレーション部６０のシミュレーション実行部６１は、シミュレーション継続命令を受け取ると、シミュレーションを実行する前に、現在時刻でのシミュレーション状態をスナップショット保存・回復部６２に保存させる。その後、各シミュレーション部６０のシミュレーション実行部６１はタイムスロット値ＴＳの時間ＴＳだけシミュレーションを並列実行する。各シミュレーション部６０のシミュレーション実行部６１は、時間ＴＳのシミュレーションの実行中に、他のシミュレーション部６０とデータ授受（データ書き込み、又はデータ読み込み）が必要か不要かを判定する。
【００３６】
シミュレーション実行部６１は他のシミュレーション部６０とデータ授受が必要と判定すると、スナップショット保存・回復部６２に、保存しておいたシミュレーション状態へ戻させる。また、シミュレーション実行部６１は逐次実行に備える。
【００３７】
シミュレーション実行部６１は他のシミュレーション部６０とデータ授受が必要か不要かの判定結果をデータ授受実行部６３に通知する。データ授受実行部６３はデータ授受が不要との判定結果を通知されると、データ授受有無通知部６４を介してスケジューラ部５０のデータ授受有無受信部５３へデータ授受が不要との判定結果を通知する。
【００３８】
また、データ授受実行部６３はデータ授受が必要との判定結果を通知されると、データ授受有無通知部６４を介してスケジューラ部５０のデータ授受有無受信部５３へデータ授受が必要との判定結果を通知する。スケジューラ部５０のデータ授受有無受信部５３は各シミュレーション部６０から受信したデータ授受が必要か不要かの判定結果を並列・逐次実行判断部５２に通知する。
【００３９】
スケジューラ部５０の並列・逐次実行判断部５２は、各シミュレーション部６０から受信したデータ授受が必要か不要かの判定結果に基づき、各シミュレーション部６０に並列実行又は逐次実行をさせるべく、スケジューラ部５０のシミュレーション継続命令送信部５１に通知を行う。
【００４０】
具体的に、全てのシミュレーション部６０からデータ授受が不要との判定結果を受信すると、スケジューラ部５０の並列・逐次実行判断部５２は各シミュレーション部６０に次の並列実行をさせるべく、スケジューラ部５０のシミュレーション継続命令送信部５１に通知を行う。つまり、スケジューラ部５０のシミュレーション継続命令送信部５１は各シミュレーション部６０にタイムスロット値ＴＳでの次の並列実行を継続させるべく、各シミュレーション部６０に対してシミュレーション継続命令を発行する。
【００４１】
一方、少なくとも一つのシミュレーション部６０からデータ授受が必要との判定結果を受信すると、スケジューラ部５０の並列・逐次実行判断部５２は各シミュレーション部６０に逐次実行をさせるべくスケジューラ部５０のシミュレーション継続命令送信部５１に通知を行う。つまり、スケジューラ部５０のシミュレーション継続命令送信部５１は各シミュレーション部６０にタイムスロット値ＴＳで逐次実行させるべく各シミュレーション部６０に対してシミュレーション継続命令を発行する。
【００４２】
スケジューラ部５０のシミュレーション継続命令送信部５１は各シミュレーション部６０の間でデータ授受が必要である場合、後述の順序リストに従って各シミュレーション部６０をタイムスロット値ＴＳまで逐次実行させるべく、シミュレーション継続命令を発行する。逐次実行のシミュレーション継続命令を受け取ると、各シミュレーション部６０のシミュレーション実行部６１は、タイムスロット値ＴＳまでか、他のシミュレーション部６０とのデータ授受が生じるまでシミュレーションを実行する。
【００４３】
他のシミュレーション部６０とのデータ授受が生じた場合、シミュレーション実行部６１は、その時点でシミュレーションを中断する。シミュレーション実行部６１は、他のシミュレーション部６０に、データ授受の要求を送信する。他のシミュレーション部６０は受信したデータ授受の要求を後述のキューに溜め、後で処理する。
【００４４】
また、他のシミュレーション部６０においてデータ授受が生じ、自分のキューに他のシミュレーション部６０からのデータ授受の要求が溜まっていれば、シミュレーション実行部６１は自分のキューに溜まっている他のシミュレーション部６０からのデータ授受の要求に対する処理を行う。
【００４５】
シミュレーション実行部６１は他のシミュレーション部６０とのデータ授受が生じてしまい、タイムスロット値ＴＳに達しない場合、次の逐次実行に備えるべく、データ授受実行部６３，データ授受有無通知部６４及びスケジューラ部５０のデータ授受有無受信部５３を介してスケジューラ部５０の並列・逐次実行判断部５２にシミュレーション結果を通知する。
【００４６】
また、シミュレーション実行部６１は他のシミュレーション部６０とのデータ授受が生じず、タイムスロット値ＴＳに達した場合、データ授受実行部６３，データ授受有無通知部６４及びスケジューラ部５０のデータ授受有無受信部５３を介してスケジューラ部５０の並列・逐次実行判断部５２にシミュレーション結果を通知する。
【００４７】
（処理フロー）
図７はスケジューラ部の処理を表した一例のフローチャートである。ステップＳ１１に進み、スケジューラ部５０のシミュレーション継続命令送信部５１は各シミュレーション部６０のシミュレーション実行部６１へ、タイムスロット値ＴＳの並列実行モードでのシミュレーション継続命令を送信する。また、ステップＳ１２に進み、スケジューラ部５０の並列・逐次実行判断部５２は、各シミュレーション部６０からデータ授受が必要か不要かの判定結果を受信する。
【００４８】
ステップＳ１３に進み、並列・逐次実行判断部５２はステップＳ１１で送信したタイムスロット値ＴＳの並列実行モードでのシミュレーション継続命令について、データ授受が各シミュレーション部６０の間で不要かを判定する。データ授受が各シミュレーション部６０の間で不要と判定されると、シミュレーション継続命令送信部５１はステップＳ１１に戻り、次の並列実行を継続させるべく、各シミュレーション部６０のシミュレーション実行部６１へ、タイムスロット値ＴＳの並列実行モードでのシミュレーション継続命令を送信する。
【００４９】
データ授受が各シミュレーション部６０の間で必要と判定されると、シミュレーション継続命令送信部５１はステップＳ１４に進み、並列実行モードから逐次実行モードに移行する。シミュレーション継続命令送信部５１は、各シミュレーション部６０の逐次実行の順序リストを作成する。順序リストは、例えばＳＰ１，ＳＰ２，ＳＰ３という様に、タイムスロット値ＴＳの逐次実行モードでのシミュレーション継続命令を送信する順番が識別可能なように作成される。
【００５０】
ステップＳ１５に進み、シミュレーション継続命令送信部５１はステップＳ１４で作成した順序リストから最初のシミュレーション部６０を選択する。シミュレーション継続命令送信部５１はステップＳ１６に進み、ステップＳ１５で選択したシミュレーション部６０のシミュレーション実行部６１へ、タイムスロット値ＴＳの逐次実行モードでのシミュレーション継続命令を送信する。
【００５１】
ステップＳ１６でシミュレーション継続命令を送信したシミュレーション部６０からシミュレーション結果を受信すると、ステップＳ１７に進み、シミュレーション継続命令送信部５１はステップＳ１６でシミュレーション継続命令を送信したシミュレーション部６０がタイムスロット値ＴＳに達したか否かを判定する。タイムスロット値ＴＳに達していれば、シミュレーション継続命令送信部５１はステップＳ１８に進み、ステップＳ１５で選択したシミュレーション部６０を順序リストから除外し、ステップＳ１９に進む。タイムスロット値ＴＳに達していなければ、シミュレーション継続命令送信部５１はステップＳ１９に進む。
【００５２】
ステップＳ１９に進み、シミュレーション継続命令送信部５１はステップＳ１５で選択したシミュレーション部６０が順序リストの最後か否かを判定する。シミュレーション継続命令送信部５１はステップＳ１５で選択したシミュレーション部６０が順序リストの最後でなければ、ステップＳ２０に進み、順序リストの次のシミュレーション部６０を選択したあと、ステップＳ１６に戻る。
【００５３】
シミュレーション継続命令送信部５１はステップＳ１５で選択したシミュレーション部６０が順序リストの最後であれば、ステップＳ２１に進み、ステップＳ１４で作成した順序リストが空になったか否かを判定する。
【００５４】
ステップＳ１４で作成した順序リストが空になっていなければ、シミュレーション継続命令送信部５１はステップＳ１５に戻る。また、ステップＳ１４で作成した順序リストが空になっていれば、シミュレーション継続命令送信部５１は逐次実行モードから並列実行モードに移行する。そして、シミュレーション継続命令送信部５１は、ステップＳ１１に戻る。
【００５５】
図８はシミュレーション部の処理を表した一例のフローチャートである。ステップＳ３１に進み、シミュレーション部６０のシミュレーション実行部６１はスケジューラ部５０からシミュレーション継続命令を受け取るまで待つ。
【００５６】
ステップＳ３２に進み、シミュレーション実行部６１はシミュレーション継続命令を受け取ることにより、タイムスロット値ＴＳと、並列実行モード又は逐次実行モードを表す実行モードとを受け取る。
【００５７】
ステップＳ３３に進み、シミュレーション実行部６１は受け取った実行モードが並列実行モードか否かを判定する。シミュレーション実行部６１は受け取った実行モードが並列実行モードであれば、ステップＳ３４に進み、シミュレーションを実行する前に、現在時刻でのシミュレーション状態をスナップショット保存・回復部６２に保存させる。
【００５８】
ステップＳ３５に進み、シミュレーション実行部６１はタイムスロット値ＴＳの時間ＴＳだけシミュレーションを並列実行する。ステップＳ３６に進み、シミュレーション実行部６１は時間ＴＳのシミュレーションの実行中に、他のシミュレーション部６０とデータ授受が必要か否かを判定する。
【００５９】
時間ＴＳのシミュレーションの実行中に、他のシミュレーション部６０とデータ授受が必要と判定すると、シミュレーション実行部６１はステップＳ３７に進む。ステップＳ３７ではシミュレーション実行部６１がスナップショット保存・回復部６２に、保存しておいたシミュレーション状態へ戻させる。
【００６０】
時間ＴＳのシミュレーションの実行中に、他のシミュレーション部６０とデータ授受が必要でないと判定するか、又は、ステップＳ３７の処理の後、シミュレーション実行部６１はステップＳ３８に進み、データ授受実行部６３及びデータ授受有無通知部６４を介してデータ授受が必要か不要かの判定結果をスケジューラ部５０に通知する。ステップＳ３８の後、シミュレーション実行部６１はステップＳ３１に戻る。
【００６１】
一方、シミュレーション実行部６１は受け取った実行モードが並列実行モードでなければステップＳ３９に進み、他のシミュレーション部６０とのデータ授受が生じるか、タイムスロット値ＴＳまでシミュレーションを実行する。
【００６２】
ステップＳ４０に進み、シミュレーション実行部６１は他のシミュレーション部６０へのデータ授受の要求があれば、そのデータ授受の要求を他のシミュレーション部６０へ送信する。ステップＳ４１に進み、シミュレーション実行部６１は他のシミュレーション部６０においてデータ授受が生じ、他のシミュレーション部６０からのデータ授受の要求があれば、他のシミュレーション部６０からのデータ授受の要求に対する処理を行う。
【００６３】
そして、ステップＳ４２に進み、シミュレーション実行部６１はスケジューラ部５０にシミュレーション結果を通知することで、シミュレーションがタイムスロット値ＴＳまで達したか否かをスケジューラ部５０に通知する。シミュレーション実行部６１はステップＳ４２の処理後、ステップＳ３１に戻る。
【００６４】
各シミュレーション部６０は他のシミュレーション部６０との間で交換するデータ授受の要求を溜めるためのキューを有している。図９はデータ授受の要求を溜めるキューの一例のデータ構造図である。
【００６５】
データ授受の要求の情報は、要求パケットとして纏めて保持される。図９の例では要求パケットに、データ授受の要求を送信したシミュレーション部６０，リード／ライト要求の区別，アドレス，データ値（書き込み時）が纏めて保持されている。要求パケットは時系列キューによってポイントされる。また、時系列キューでは、要求パケットが発行されたシミュレーション時刻と、要求パケットへのポインタが保持される。データ授受の要求をする場合、シミュレーション部６０は要求パケットを生成し、データ授受の要求を受信した他のシミュレーション部６０の時系列キューに挿入する。
【００６６】
このとき、他のシミュレーション部６０の時系列キューには、データ授受の要求を送信したシミュレーション部６０のシミュレーションの現在時刻が付加され、キュー内で時系列に要求パケットが配置されるようにする。
【００６７】
データ授受の要求を受信した他のシミュレーション部６０は、要求パケットを処理する場合、時系列キューで時刻が若い順に処理をしていく。その際、他のシミュレーション部６０はシミュレーション時刻がシミュレーションの現在時刻より後の要求パケットを処理しない。処理された要求パケットは時系列キューから取り除かれる。
【実施例１】
【００６８】
図１０〜図１２はＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャートである。図１０〜図１２は２つのＳＰ１，ＳＰ２の例を表している。図１０はスケジューラ１０からＳＰ１，ＳＰ２にシミュレーション継続命令が送られている。また、図１０はタイムスロットＴＳ１においてＳＰ１，ＳＰ２を並列実行している。並列実行により、タイムスロットＴＳ１ではＳＰ１，ＳＰ２の間にデータ書き込みＳ１〜Ｓ３が行われていることが検知される。したがって、スケジューラ１０はタイムスロットＴＳ１について、逐次実行による再シミュレーションが必要と判定する。
【００６９】
図１１ではＳＰ１，ＳＰ２が、保存しておいたｔ＝１００ｍｓｅｃのシミュレーション状態に戻ったあと、タイムスロットＴＳ１について、逐次実行でシミュレーションをやり直す。逐次実行の例としては以下のようなアルゴリズムが考えられる。
【００７０】
まず、スケジューラ１０は「ＳＰ１→ＳＰ２→ＳＰ１→ＳＰ２・・・」という様な逐次実行の順序リストを作成し、順序リストに従ってＳＰ１，ＳＰ２にシミュレーションを逐次実行させる。シミュレーションを逐次実行中のＳＰ１，ＳＰ２に、他のＳＰとのデータ授受が発生したら、スケジューラ１０は順序リストの次のＳＰにシミュレーションを逐次実行させる。スケジューラ１０は、シミュレーションを逐次実行中のＳＰ１，ＳＰ２のシミュレーション時刻がタイムスロットＴＳ１を経過したら、タイムスロットＴＳ１を経過したＳＰ１，ＳＰ２を順序リストから外す。
【００７１】
具体的に、図１１では順序リストに従ってＳＰ１がシミュレーションの逐次実行を開始する。ｔ＝１２０ｍｓｅｃにおいてＳＰ１はＳＰ２へのデータ書き込みＳ１が発生しているため、ｔ＝１２０ｍｓｅｃでシミュレーションを停止する。次に、図１１では順序リストに従ってＳＰ２がシミュレーションの逐次実行を開始する。ｔ＝１５０ｍｓｅｃにおいてＳＰ２はＳＰ１へのデータ書き込みＳ２が発生しているため、ｔ＝１５０ｍｓｅｃでシミュレーションを停止する。
【００７２】
次に、図１１では順序リストに従ってＳＰ１がシミュレーションの逐次実行を停止していたｔ＝１２０ｍｓｅｃから開始する。ｔ＝１７０ｍｓｅｃにおいてＳＰ１はＳＰ２へのデータ書き込みＳ３が発生しているため、ｔ＝１７０ｍｓｅｃでシミュレーションを停止する。
【００７３】
次に、図１１では順序リストに従ってＳＰ２がシミュレーションの逐次実行を停止していたｔ＝１５０ｍｓｅｃから開始する。タイムスロットＴＳ１のシミュレーションが終了するまで、ＳＰ２はＳＰ１へのデータ書き込みが発生していないため、タイムスロットＴＳ１を経過した時点でシミュレーションを停止する。スケジューラ１０はＳＰ２を順序リストから外す。
【００７４】
次に、図１１では順序リストに従ってＳＰ１がシミュレーションの逐次実行を停止していたｔ＝１７０ｍｓｅｃから開始する。タイムスロットＴＳ１のシミュレーションが終了するまで、ＳＰ１はＳＰ２へのデータ書き込みが発生していないため、タイムスロットＴＳ１を経過した時点でシミュレーションを停止する。スケジューラ１０はＳＰ１を順序リストから外す。
【００７５】
図１２はタイムスロットＴＳ２においてＳＰ１，ＳＰ２を並列実行している。並列実行により、タイムスロットＴＳ２ではＳＰ１，ＳＰ２の間にデータ授受が発生しないことが検知される。したがって、スケジューラ１０はタイムスロットＴＳ２について、逐次実行による再シミュレーションが不要と判定する。
【００７６】
このように、本実施例ではＳＰ１，ＳＰ２の間で通信があるタイムスロットについて逐次実行を行うため、ＳＰ１，ＳＰ２のシミュレーション結果が一意に定まり、再現性が保証される。また、本実施例ではＳＰ１，ＳＰ２の間で通信がないタイムスロットについて並列実行を行うため、分散型シミュレーション環境により処理速度が向上する。
【００７７】
なお、本実施例では並列実行時に、逐次実行を同時に行う拡張も考えられる。並列実行時に、逐次実行を同時に行う拡張では、並列実行が終了し、ＳＰ１，ＳＰ２の間にデータ授受が発生しないことが検知されれば、逐次実行を途中で打ち切って、並列実行のシミュレーション結果を採用する。また、並列実行時に、逐次実行を同時に行う拡張では、並列実行が終了し、ＳＰ１，ＳＰ２の間にデータ授受が発生することが検知されれば、並列実行のシミュレーション結果を捨て、逐次実行の終了を待って逐次実行のシミュレーション結果を採用する。
【００７８】
本実施例では、分散型シミュレーション環境において、再現性のあるシミュレーション結果を実現できる。
【実施例２】
【００７９】
実機が動作する環境では、実機の構成部品のバラツキや電源回路のノイズなど、様々な外乱が存在する。分散型シミュレーション環境では、様々な外乱に対しても検証対象が動作することを保証する必要がある。
【００８０】
図１３はＳＰ間のデータ授受のタイミングを表す一実施例のタイムチャートである。図１３は２つのＳＰ１，ＳＰ２の例を表している。図１３は逐次実行の順番を変えることにより、シミュレーション結果の再現性を保持したままで、異なったシミュレーション動作を作り出すことが可能である。具体的に、図１３ではＳＰ１，ＳＰ２の逐次実行の順序を図１１の例と異ならせている。
【００８１】
まず、スケジューラ１０は「ＳＰ２→ＳＰ１→ＳＰ２→ＳＰ１・・・」という様な逐次実行の順序リストを作成し、順序リストに従ってＳＰ１，ＳＰ２にシミュレーションを逐次実行させる。シミュレーションを逐次実行中のＳＰ１，ＳＰ２に、他のＳＰとのデータ授受が発生したら、スケジューラ１０は順序リストの次のＳＰにシミュレーションを逐次実行させる。スケジューラ１０は、シミュレーションを逐次実行中のＳＰ１，ＳＰ２のシミュレーション時刻がタイムスロットＴＳ１を経過したら、タイムスロットＴＳ１を経過したＳＰ１，ＳＰ２を順序リストから外す。
【００８２】
なお、逐次実行の順序の決め方としては、例えばシミュレーション時刻をシードとした乱数を使うことが考えられる。シミュレーション時刻を使う場合は、常に同じ乱数系列となる。
【００８３】
図１３の例では図１１の例と異なり、逐次実行の順序をＳＰ２からに変えている。その結果、図１３の例ではＳＰ２からのデータ書き込みＳ１が先になり、ＳＰ１からのデータ書き込みＳ２が１回だけ発行されるように変わっている。
【００８４】
また、図１４はＳＰ間のデータ授受のタイミングを表す他の実施例のタイムチャートである。図１４は２つのＳＰ１，ＳＰ２の例を表している。図１４はＳＰ１，ＳＰ２の間で発行されるデータ授受に掛かる遅延時間を変動させることにより、外乱を模擬することができる。
【００８５】
例えば図１４は図１２の例において、ＳＰ２から発行されるデータ書き込みＳ２の遅延時間を−２０ｍｓｅｃと設定している。その結果、ＳＰ２がｔ＝１５０ｍｓｅｃで発行したデータ書き込みＳ２を、ＳＰ１はｔ＝１５０＋（−２０）＝１３０ｍｓｅｃで受け取ることになる。
【００８６】
ＳＰ１，ＳＰ２の間で発行されるデータ授受に掛かる遅延時間の変動は、例えば図９の時系列キューに要求パケットが発行されたシミュレーション時刻を保持させる際、遅延時間分、増減させることにより実現できる。データ授受の受信側のシミュレーション時刻を逆行しない限り、遅延時間はLoosely-timed modelの概念に基づき自由に設定できる。
【００８７】
図１４の例ではＳＰ２からのデータ書き込みＳ２がＳＰ１に到達するを、１２０ｍｓｅｃ＜ｔ≦２００ｍｓｅｃの範囲で自由に設定可能である。図１４の例は遅延時間を負の値にした例である。
【００８８】
実機が動作する環境では、実機の構成部品のバラツキや電源回路のノイズなど、様々な外乱が存在する。本実施例では、様々な外乱によって、回路モジュールの処理速度や回路モジュール間のデータ転送が変動することを模擬できる。つまり、本実施例では実機動作時の外乱を模擬する機能を実現できる。したがって、本実施例の分散型シミュレーション環境を用いて検証した検証対象（例えばＬＳＩ回路など）は外乱に対する耐性を従来よりも高めることができる。
【００８９】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００９０】
１〜３    シミュレーションプログラム（ＳＰ）
１０    スケジューラプログラム（スケジューラ）
２０    スケジューラ用コンピュータ
２１〜２３    シミュレーション用コンピュータ
２５    ネットワーク
３１    入力装置
３２    出力装置
３３    ドライブ装置
３４    補助記憶装置
３５    主記憶装置
３６    演算処理装置
３７    インターフェース装置
３８    記録媒体
５０    スケジューラ部
５１    シミュレーション継続命令送信部
５２    並列・逐次実行判断部
５３    データ授受有無受信部
６０    シミュレーション部
６１    シミュレーション実行部
６２    スナップショット保存・回復部
６３    データ授受実行部
６４    データ授受有無通知部
Ｂ    バス
【図１】
2011134275.tif 000003
【図２】
2011134275.tif 000004
【図３】
2011134275.tif 000005
【図４】
2011134275.tif 000006
【図５】
2011134275.tif 000007
【図６】
2011134275.tif 000008
【図７】
2011134275.tif 000009
【図８】
2011134275.tif 000010
【図９】
2011134275.tif 000011
【図１０】
2011134275.tif 000012
【図１１】
2011134275.tif 000013
【図１２】
2011134275.tif 000014
【図１３】
2011134275.tif 000015
【図１４】
2011134275.tif 000016