(57)【要約】【課題】イベント同時発生時の競合状態を全て検出する。【解決手段】論理動作検証システムは、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するシミュレータと、論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶手段と、現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証する第１動作検証手段と、現イベント時の時刻と影響のある信号のイベント時の時刻とを比較する第１動作間時刻差検証手段と、現イベント時の信号状態と影響のある信号の前イベント時の信号状態とを検証する第２動作検証手段と、現イベント時の時刻と影響のある信号の前イベント時の時刻とを比較する第２動作間時刻差検証手段とを含む。【選択図】図２
2010009424.tif 000002
【特許請求の範囲】
【請求項１】
ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するシミュレータと、
前記論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶手段と、
現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証する第１動作検証手段と、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻とを比較する第１動作間時刻差検証手段と、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とを検証する第２動作検証手段と、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻とを比較する第２動作間時刻差検証手段と
を含む
論理動作検証システム。
【請求項２】
請求項１に記載の論理動作検証システムであって、
前記第１動作検証手段は、前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行い、
前記第１動作間時刻差検証手段は、前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、設定された同時動作禁止時間よりも小さいかの判定を行い、
前記第２動作検証手段は、前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行い、
前記第２動作間時刻差検証手段は、前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さいかの判定を行う
論理動作検証システム。
【請求項３】
請求項２に記載の論理動作検証システムであって、
前記現イベントが発生した際、競合状態判定値の値を０にする競合状態確定クリア手段と、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にする第１競合状態確定手段と、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にする第２競合状態確定手段と、
前記前記競合状態判定値の値が１であるか確認する競合状態判定手段と、
前記前記競合状態判定値の値が１であれば、シミュレーション実行者に競合状態であることを通知するための処理を行う違反処理手段と
を更に含む
論理動作検証システム。
【請求項４】
請求項３に記載の論理動作検証システムであって、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態とを検証する第３動作検証手段と、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻とを比較する第３動作間時刻差検証手段と、
前記現イベントと前記影響のある信号の全イベントとの競合状態の検証が終了したか判定するループ処理手段と
を更に含む
論理動作検証システム。
【請求項５】
請求項４に記載の論理動作検証システムであって、
前記第３動作検証手段は、前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であるかどうかの判定を行い、
前記第３動作間時刻差検証手段は、前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さいかの判定を行う
論理動作検証システム。
【請求項６】
請求項５に記載の論理動作検証システムであって、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にする第３競合状態確定手段と
を更に含む
論理動作検証システム。
【請求項７】
ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するステップと、
前記論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を取得するステップと、
現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻とを比較するステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻とを比較するステップと
を含む
論理動作検証方法。
【請求項８】
請求項７に記載の論理動作検証方法であって、
前記現イベントが発生した際、競合状態判定値の値を０にするステップと、
前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、設定された同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと、
前記前記競合状態判定値の値が１であるか確認するステップと、
前記前記競合状態判定値の値が１であれば、シミュレーション実行者に競合状態であることを通知するための処理を行うステップと
を更に含む
論理動作検証方法。
【請求項９】
請求項８に記載の論理動作検証方法であって、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻とを比較するステップと、
前記現イベントと前記影響のある信号の全イベントとの競合状態の検証が終了したか判定するステップと
を更に含む
論理動作検証方法。
【請求項１０】
請求項９に記載の論理動作検証方法であって、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと
を更に含む
論理動作検証方法。
【請求項１１】
ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するステップと、
前記論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を取得するステップと、
現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻とを比較するステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻とを比較するステップと
をコンピュータに実行させるための
プログラム。
【請求項１２】
請求項１１に記載のプログラムであって、
前記現イベントが発生した際、競合状態判定値の値を０にするステップと、
前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号のイベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、設定された同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号のイベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号の前イベント時の信号状態とのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号の前イベント時の時刻との差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと、
前記前記競合状態判定値の値が１であるか確認するステップと、
前記前記競合状態判定値の値が１であれば、シミュレーション実行者に競合状態であることを通知するための処理を行うステップと
を更にコンピュータに実行させるための
プログラム。
【請求項１３】
請求項１２に記載のプログラムであって、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態とを検証するステップと、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻とを比較するステップと、
前記現イベントと前記影響のある信号の全イベントとの競合状態の検証が終了したか判定するステップと
を更にコンピュータに実行させるための
プログラム。
【請求項１４】
請求項１３に記載のプログラムであって、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であるかどうかの判定を行うステップと、
前記現イベント時の信号状態と前記影響のある信号の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であると判定された場合、前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さいかの判定を行うステップと、
前記現イベント時の時刻と前記影響のある信号の全イベント時の時刻のいずれかとの差が、前記同時動作禁止時間よりも小さい場合、前記競合状態判定値の値を１にするステップと
を更にコンピュータに実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理動作検証システムに関し、特にＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）記述による論理動作検証を行う論理動作検証システムに関する。
【背景技術】
【０００２】
ＨＤＬ言語によって記述された論理シミュレーションモデルは、機能毎に用意された回路のみではなく、単体回路でも論理検証が可能になるという利点を有しており、近年の半導体集積回路設計において必要なものとなってきている。
【０００３】
また、近年の半導体集積回路は仕様が複雑になってきており、同時動作のみではなく、ある程度の時間幅を持つ競合状態も検証で抑える必要が生じている。従って、ＨＤＬ言語によって記述された論理シミュレーションにおいて、仕様にあった動作を完全に再現することが求められている。
【０００４】
関連する技術として、特開２０００−１２３０５０号公報（特許文献１）にハードウェア記述言語による記述の検証方法が開示されている。
この関連技術では、競合状態検出処理部によりシミュレーション実行時の各信号の被評価と変化の履歴の関係から競合状態を検出し、信号衝突記述検出処理部によりＨＤＬ記述を構文解析することにより競合状態の発生する信号衝突記述を検出し、不当代入記述検出処理部によりＨＤＬ記述を構文解析することにより競合状態の発生する不当代入記述を検出する。設計者はこれらの検出結果を参照することにより、ＨＤＬ記述内の競合状態の発生する記述を修正し、競合状態の発生しないＨＤＬ記述を得る。
【０００５】
【特許文献１】特開２０００−１２３０５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
既存の論理シミュレーションモデルでは、実回路の動作を再現することは十分に達成できていない。例えば、実回路では、信号が変化すると信号の状態が安定するまでの期間があるため、競合状態が起こりうる時間にもある程度の時間幅が存在し、競合状態が起こり得る信号の変化を禁止している時間（以降は同時動作禁止時間と称す）内の競合状態も検証する機能が必要となる。また、論理モデルは、回路全体の論理検証やタイミング検証において使用されるため、シミュレーション上は問題は起きないが、実回路上で競合動作が起きてしまうようなことがあってはならない。
【課題を解決するための手段】
【０００７】
本発明の論理動作検証システムは、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するシミュレータと、論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶手段と、現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証する第１動作検証手段と、現イベント時の時刻と影響のある信号のイベント時の時刻とを比較する第１動作間時刻差検証手段と、現イベント時の信号状態と影響のある信号の前イベント時の信号状態とを検証する第２動作検証手段と、現イベント時の時刻と影響のある信号の前イベント時の時刻とを比較する第２動作間時刻差検証手段とを含む。
【０００８】
本発明の論理動作検証方法は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するステップと、論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を取得するステップと、現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証するステップと、現イベント時の時刻と影響のある信号のイベント時の時刻とを比較するステップと、現イベント時の信号状態と影響のある信号の前イベント時の信号状態とを検証するステップと、現イベント時の時刻と影響のある信号の前イベント時の時刻とを比較するステップとを含む。
【０００９】
本発明のプログラムは、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語によって記述された論理シミュレーションを実行するステップと、論理シミュレーションの実行中のイベント時の信号状態及びシミュレーション時刻を示す情報を取得するステップと、現イベント時の信号状態と影響のある信号のイベント時の信号状態とを検証するステップと、現イベント時の時刻と影響のある信号のイベント時の時刻とを比較するステップと、現イベント時の信号状態と影響のある信号の前イベント時の信号状態とを検証するステップと、現イベント時の時刻と影響のある信号の前イベント時の時刻とをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１０】
同時動作禁止時間内の競合状態を検出することが可能となり、更に今までは発見することができない場合があったイベント同時発生時の競合状態を全て検出することが可能となる。
【発明を実施するための最良の形態】
【００１１】
＜＜第１実施形態＞＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図１を参照すると、本発明の論理動作検証システムは、サーバ１と、ネットワーク２と、コンピュータ装置３と、記録媒体４を含む。
【００１２】
サーバ１は、シミュレーション実行プログラムの提供に供される装置である。サーバ１は、ネットワーク２を介してコンピュータ装置３（３−ｉ、ｉ＝１〜ｎ：ｎは台数）に接続される。コンピュータ装置３（３−ｉ、ｉ＝１〜ｎ）は、少なくとも１台は存在する。記録媒体４は、格納された情報をサーバ１に提供する。ここでは、サーバ１は、記録媒体に格納されている論理モデルを、記録媒体４にストア（蓄積）し、論理検証実行時にシミュレータで使用する。
【００１３】
サーバ１の例として、エンジニアリングワークステーション、メインフレーム、スーパーコンピュータ等が考えられる。ネットワーク２の例として、インターネット、イントラネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、電話通信網、専用線、シリアル通信回線等が考えられる。コンピュータ装置３（３−ｉ、ｉ＝１〜ｎ）の例として、ＰＣ（パソコン）、シンクライアント端末、携帯端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）等が考えられる。記録媒体４の例として、メモリ等の半導体記憶装置、ハードディスク等の外部記憶装置（ストレージ）、又は、記憶媒体（メディア）等が考えられる。但し、実際には、これらの例に限定されない。
【００１４】
図２は、本実施形態におけるサーバ１の具体的な構成例を示すブロック図である。
サーバ１は、シミュレータ１１と、同時動作禁止時間設定部１２と、イベント判定部１３と、競合状態検証部１４を含む。
【００１５】
シミュレータ１１は、シミュレーションを行う。同時動作禁止時間設定部１２は、同時動作禁止時間の設定を行う。イベント判定部１３は、クロック毎のイベントを判定する。競合状態検証部１４は、競合状態確定クリアからメッセージ出力までをまとめた競合状態の検証を行う。
【００１６】
シミュレータ１１、同時動作禁止時間設定部１２、イベント判定部１３、及び競合状態検証部１４の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）等の処理装置、又は同様の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。なお、シミュレータ１１、同時動作禁止時間設定部１２、イベント判定部１３、及び競合状態検証部１４は、各々の機能をコンピュータに実行させるためのプログラムでも良い。但し、実際には、これらの例に限定されない。
【００１７】
競合状態検証部１４は、競合状態確定クリア部１４１と、信号状態・シミュレーション時刻記憶部１４２と、同時動作検証部１４３と、競合状態判定部１４４と、違反処理部１４５と、メッセージ出力部１４６を含む。
【００１８】
競合状態確定クリア部１４１は、競合状態が確定していればクリアする。ここでは、競合状態確定クリア部１４１は、競合状態判定値の値を０にする。すなわち、競合状態確定クリア部１４１は、競合状態判定値の値を初期化する。信号状態・シミュレーション時刻記憶部１４２は、信号状態・シミュレーション時刻を示す情報を記憶媒体４に記憶する。同時動作検証部１４３は、動作検証と動作間時刻差検証と競合状態確定をまとめた同時動作検証を行う。競合状態判定部１４４は、同時動作検証部１４３からの競合状態判定値に基づいて、競合状態を判定する。違反処理部１４５は、違反処理する。メッセージ出力部１４６は、メッセージ出力する。
【００１９】
なお、競合状態確定クリア部１４１、信号状態・シミュレーション時刻記憶部１４２、同時動作検証部１４３、競合状態判定部１４４、及び違反処理部１４５は、プログラムや、コンピュータに搭載された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））環境でも良い。但し、実際には、これらの例に限定されない。
【００２０】
また、メッセージ出力部１４６は、外部の表示装置や記憶装置に情報を出力するためのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）でも良い。メッセージ出力部１４６の出力先の例として、ＬＣＤ（液晶ディスプレイ）やＰＤＰ（プラズマディスプレイ）、有機ＥＬディスプレイ（ｏｒｇａｎｉｃ  ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ  ｄｉｓｐｌａｙ）等の表示装置、又は、表示内容を壁やスクリーンに投影するプロジェクタ等の映写装置、表示内容を用紙等に印刷するプリンタ等の印刷装置等が考えられる。但し、実際には、これらの例に限定されない。
【００２１】
同時動作検証部１４３は、動作検証部１４３１と、動作間時刻差検証部１４３２と、競合状態確定部１４３３を含む。
【００２２】
動作検証部１４３１は、動作検証する。動作間時刻差検証部１４３２は、動作間の時刻差の検証を行う。競合状態確定部１４３３は、競合状態を確定し、競合状態判定値を設定する。
【００２３】
記録媒体４は、現信号状態格納部４１と、現時刻格納部４２と、影響信号状態格納部４３と、影響時刻格納部４４と、影響前信号状態格納部４５と、影響前時刻格納部４６と、競合状態判定値格納部４７を含む。
【００２４】
現信号状態格納部４１は、現イベント時の信号状態を示す情報を格納する。現時刻格納部４２は、現イベント時の時刻を示す情報を格納する。影響信号状態格納部４３は、影響のある信号のイベント時の信号状態を示す情報を格納する。影響時刻格納部４４は、影響のある信号のイベント時の時刻を示す情報を格納する。影響前信号状態格納部４５は、影響のある信号の前イベント時の信号状態を示す情報を格納する。影響前時刻格納部４６は、影響のある信号の前イベント時の時刻を示す情報を格納する。競合状態判定値格納部４７は、競合状態判定値を示す情報を格納する。
【００２５】
ここでは、記録媒体４は、図３，図４に示すようなクロック毎の信号状態・時刻格納表の形式で各情報を格納している。すなわち、現信号状態格納部４１、現時刻格納部４２、影響信号状態格納部４３、影響時刻格納部４４、影響前信号状態格納部４５、影響前時刻格納部４６、及び競合状態判定値格納部４７は、クロック毎の信号状態・時刻格納表の各項目を示す。但し、実際には、これらの例に限定されない。
【００２６】
本発明の第１実施形態の動作について、図３〜図９を用いて説明する。
なお、図６〜図９には、クロックＡ６０、アドレスＡ６１、クロックＢ６２、アドレスＢ６３のタイミングチャートが示されている。図６を例にすると、現在着目している信号がクロックＡ６０だとすると、クロックＢ６２は影響のある信号と称し、着目している信号のイベントを現イベントとし、現イベントに対する直前の影響のある信号のイベントを影響のある信号のイベントとし、影響のある信号の一つ前のイベントを影響のある信号の前イベントと称する。
【００２７】
また、本発明では、クロック毎のイベント発生で信号の競合状態判定を行っており、クロックＡ６０のイベント発生時の処理とクロックＢ６２のイベント発生時の処理をクロック毎に有している。
【００２８】
図３は、クロックＡ６０の処理結果における状態・時刻格納表である。
図３において、クロックＡ６０で１回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｆ回、クロックＡ６０で２回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｇ回と定義する。
【００２９】
図４は、クロックＢ６２の処理結果における状態・時刻格納表である。
図４において、クロックＢ６２で１回目のイベントが発生した際のシミュレーション開始時からのクロックＡ６０の直前のイベント回数をｒ回、クロックＢ６２で２回目のイベントが発生した際のシミュレーション開始時からのクロックＡ６０の直前のイベント回数をｓ回と定義する。
【００３０】
但し、ｆ、ｇ、ｒ、ｓは０以上の整数とする。ｆ、ｇ、ｒ、ｓが０の場合、シミュレーション開始から該当信号のクロックでイベントが起きていないことを表す。例えば、ｆが０の場合、Ｃｂ（ｆ）、Ｔｂ（ｆ）や、Ｃｂ（ｆ−１）、Ｔｂ（ｆ−１）には何も記憶されない。
【００３１】
図３において、クロックＡ６０の１回目のイベントを現イベントとすると、現イベント発生時において、動作検証部１４３１は、影響信号状態格納部４３を参照して、影響のある信号のイベント時の信号状態に、図４の現イベントに対するクロックＢ６２の直前のイベントであるｆ回目のイベントで、現信号状態格納部４１を参照して、現イベント時の信号状態のｆ回目に記憶された信号状態Ｃｂ（ｆ）を引用する。
【００３２】
また、動作検証部１４３１は、影響時刻格納部４４を参照して、影響のある信号のイベント時の信号時刻に、図４の現イベントに対するクロックＢ６２の直前のイベントであるｆ回目のイベントで、現時刻格納部４２を参照して、現イベント時の時刻のｆ回目に記憶された信号時刻Ｔｂ（ｆ）を引用する。
【００３３】
また、動作検証部１４３１は、影響前信号状態格納部４５を参照して、影響のある信号の前イベント時の信号状態に、図４の現イベントに対するクロックＢ６２の直前の前イベントである（ｆ−１）回目のイベントで、現信号状態格納部４１を参照して、現イベント時の信号状態の（ｆ−１）回目に記憶された信号状態Ｃｂ（ｆ−１）を引用する。
【００３４】
また、動作検証部１４３１は、影響前時刻格納部４６を参照して、影響のある信号の前イベント時の時刻に、図４の現イベントに対するクロックＢ６２の直前の前イベントである（ｆ−１）回目のイベントで、現時刻格納部４２を参照して、現イベント時の時刻の（ｆ−１）回目に記憶された信号時刻Ｔｂ（ｆ−１）を引用する。
【００３５】
図３において、クロックＡ６０の２回目のイベントを現イベントとすると、現イベント発生時において、動作検証部１４３１は、影響信号状態格納部４３を参照して、影響のある信号のイベント時の信号状態に、図４の現イベントに対するクロックＢ６２の直前のイベントであるｇ回目のイベントで、現信号状態格納部４１を参照して、現イベント時の信号状態のｇ回目に記憶された信号状態Ｃｂ（ｇ）を引用する。
【００３６】
また、動作検証部１４３１は、影響時刻格納部４４を参照して、影響のある信号のイベント時の信号時刻に、図４の現イベントに対するクロックＢ６２の直前のイベントであるｇ回目のイベントで、現時刻格納部４２を参照して、現イベント時の時刻のｇ回目に記憶された信号時刻Ｔｂ（ｇ）を引用する。
【００３７】
また、動作検証部１４３１は、影響前信号状態格納部４５を参照して、影響のある信号の前イベント時の信号状態に、図４の現イベントに対するクロックＢ６２の直前の前イベントである（ｇ−１）回目のイベントで、現信号状態格納部４１を参照して、現イベント時の信号状態の（ｇ−１）回目に記憶された信号状態Ｃｂ（ｇ−１）を引用する。
【００３８】
また、動作検証部１４３１は、影響前時刻格納部４６を参照して、影響のある信号の前イベント時の時刻に、図４の現イベントに対するクロックＢ６２の直前の前イベントである（ｇ−１）回目のイベントで、現時刻格納部４２を参照して、現イベント時の時刻の（ｇ−１）回目に記憶された信号時刻Ｔｂ（ｇ−１）を引用する。
【００３９】
また、図４においても、上記内容と同様に、クロックＢ６２の１回目のイベントを現イベントとすると、現イベント発生時において、動作検証部１４３１は、影響信号状態格納部４３を参照して、影響のある信号のイベント時の信号状態に、クロックＡ６０のｒ回目のイベントで記憶された信号状態Ｃａ（ｒ）を引用する。
【００４０】
また、動作検証部１４３１は、影響時刻格納部４４を参照して、影響のある信号のイベント時の信号時刻に、クロックＡ６０のｒ回目のイベントで記憶された信号時刻Ｔａ（ｒ）を引用する。
【００４１】
また、動作検証部１４３１は、影響前信号状態格納部４５を参照して、影響のある信号の前イベント時の信号状態に、クロックＡ６０の（ｒ−１）回目のイベントで記憶された信号状態Ｃａ（ｒ−１）を引用する。
【００４２】
また、動作検証部１４３１は、影響前時刻格納部４６を参照して、影響のある信号の前イベント時の時刻にクロックＡ６０の（ｒ−１）回目のイベントで記憶された信号時刻Ｔａ（ｒ−１）を引用する。
【００４３】
クロックＢ６２の２回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響信号状態格納部４３を参照して、影響のある信号のイベント時の信号状態に、クロックＡ６０のｓ回目のイベント時に記憶された信号状態Ｃａ（ｓ）を引用する。
【００４４】
また、動作検証部１４３１は、影響時刻格納部４４を参照して、影響のある信号のイベント時の信号時刻に、クロックＡ６０のｓ回目のイベント時に記憶された信号時刻Ｔａ（ｓ）を引用する。
【００４５】
また、動作検証部１４３１は、影響前信号状態格納部４５を参照して、影響のある信号の前イベント時の信号状態に、クロックＡ６０の（ｓ−１）回目のイベント時に記憶された信号状態Ｃａ（ｓ−１）を引用する。
【００４６】
また、動作検証部１４３１は、影響前時刻格納部４６を参照して、影響のある信号の前イベント時の時刻にクロックＡ６０のｓ−１回目のイベントで記憶された信号時刻Ｔａ（ｓ−１）を引用する。
【００４７】
＜論理動作検証システムの一連の動作＞
図５Ａ、図５Ｂを参照して、本実施形態の論理動作検証システムの一連の動作について説明する。
【００４８】
（１）ステップＳ１０１
まず、シミュレータ１１は、シミュレーションを開始する。ここでは、シミュレーション実行者は、コンピュータ装置３（３−ｉ、ｉ＝１〜ｎ）から、ネットワーク２を介して、シミュレータ１１にシミュレーションの開始を指示する。シミュレータ１１は、シミュレーション実行者からのシミュレーションの開始の指示に応じて、シミュレーションを開始する。
【００４９】
（２）ステップＳ１０２
同時動作禁止時間設定部１２は、シミュレーション開始後、同時動作禁止時間Ｔ１０に両信号（クロックＡ６０、クロックＢ６２）における同時動作禁止時間の設定を行う。
【００５０】
（３）ステップＳ１０３
イベント判定部３は、クロックＡ６０について、イベントの発生を判断し、イベントが発生していない場合はイベントが発生するまでループする。また、イベント判定部３は、クロックＢ６２についても、イベントが発生するまで同様にループし、クロックＡ６０の場合と同様の処理を行う。すなわち、イベント判定部３は、イベントが発生するまでイベント発生の監視を継続する。
【００５１】
（４）ステップＳ１０４
競合状態確定クリア部１４１は、イベントが発生した場合、競合状態確定部１４３３から入力される競合状態判定値の値を０にする。ここでは、競合状態確定クリア部１４１は、クロックＡ６０のイベントが発生した場合、競合状態判定値Ｆａの値を０にする。
【００５２】
（５）ステップＳ１０５
次に、信号状態・シミュレーション時刻記憶部１４２は、１度目のイベントの発生において、イベント発生時の信号状態・時刻を図３の信号状態・時刻格納表の信号状態Ｃａ１、信号時刻Ｔａ１に信号状態・シミュレーション時刻を其々記憶する。なお、信号状態・シミュレーション時刻記憶部１４２は、イベントが発生したクロックのみ、これらの処理を行う。信号状態・シミュレーション時刻記憶部１４２は、２度目のイベント発生においても同様に、信号状態Ｃａ２，信号時刻Ｔａ２に信号状態・シミュレーション時刻を其々記憶する。また、信号状態・シミュレーション時刻記憶部１４２は、クロックＢ６２側においても、イベント発生のたびに同様にＣｂ１、Ｔｂ１、Ｃｂ２、Ｔｂ２のように逐次信号状態・時刻格納表に記憶する。次に、信号状態・シミュレーション時刻記憶部１４２は、動作検証部１４３１へ接続する。ここでは、「接続する」とは、処理を移行することを示す。
【００５３】
（６）ステップＳ１０６
動作検証部１４３１は、クロックＡ６０のイベント発生時刻直前のクロックＢ６２で記憶された信号状態Ｃｂ（ｆ）、信号時刻Ｔｂ（ｆ）を参照し、クロックＢ６２の信号状態・時刻格納表からクロックＡ６０の信号状態・時刻格納表の影響のある信号のイベント時の信号状態の１回目、影響のある信号のイベント時の時刻の１回目に、信号状態Ｃｂ（ｆ）、信号時刻Ｔｂ（ｆ）の値を移す。ここでは、信号状態Ｃｂ（ｆ）が影響のある信号のイベント時の信号状態に該当する。また、信号時刻Ｔｂ（ｆ）が影響のある信号のイベント時の時刻に該当する。
【００５４】
（７）ステップＳ１０７
動作検証部１４３１は、信号状態・時刻格納表に記憶された信号状態Ｃａ１と、信号状態Ｃｂ（ｆ）とのアドレスの番号が同一の番号であるかどうか（「信号状態Ｃａ１」＝「信号状態Ｃｂ（ｆ）」）の判定を行い、同一の番号であると判断した場合、動作間時刻差検証部１４３２と接続する。また、信号状態・シミュレーション時刻記憶部１４２は、同一の番号ではないと判断した場合、更なる検証のために、別途、同時動作検証部１４３と接続する。
【００５５】
（８）ステップＳ１０８
動作間時刻差検証部１４３２は、信号状態・シミュレーション時刻記憶部１４２により状態・時刻格納表に記憶された信号時刻Ｔａ１と、信号時刻Ｔｂ（ｆ）との時刻の差が、論理モデル中で定義されている同時動作禁止時間Ｔ１０よりも小さければ（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ）」＜「同時動作禁止時間Ｔ１０」）、影響のある信号のイベント時の動作との競合状態を確定する競合状態確定部１４３３と接続する。また、動作間時刻差検証部１４３２は、信号時刻Ｔａ１と信号時刻Ｔｂ（ｆ）との時刻の差が、同時動作禁止時間Ｔ１０以上であれば（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ）」≧「同時動作禁止時間Ｔ１０」）、更なる検証のために、別途、同時動作検証部１４３と接続する。
【００５６】
（９）ステップＳ１０９
競合状態確定部１４３３は、信号時刻Ｔａ１と信号時刻Ｔｂ（ｆ）との時刻の差（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ）」の値）が、同時動作禁止時間Ｔ１０より小さいために、競合状態であると判断し、競合状態判定値Ｆａに数字の１を代入する。次に、競合状態確定部１４３３は、更なる検証のために、別途、同時動作検証部１４３と接続する。
【００５７】
（１０）ステップＳ１１０
次に、別途接続された同時動作検証部１４３内の動作検証部１４３１は、影響前信号状態格納部４５に格納された信号状態Ｃｂ（ｆ−１）、及び、影響前時刻格納部４６に格納された信号時刻Ｔｂ（ｆ−１）を参照する。ここでは、信号状態Ｃｂ（ｆ）のイベントの前イベントの状態である信号状態Ｃｂ（ｆ−１）が影響のある信号の前イベント時の信号状態に該当する。また、信号時刻Ｔｂ（ｆ）のイベントの前イベントの時刻である信号時刻Ｔｂ（ｆ−１）が影響のある信号の前イベント時の時刻に該当する。
【００５８】
（１１）ステップＳ１１１
動作検証部１４３１は、信号状態・シミュレーション時刻記憶部１４２により状態・時刻格納表に記憶された信号状態Ｃａ１と、信号状態Ｃｂ（ｆ−１）とのアドレスの番号が同一の番号であるかどうか（「信号状態Ｃａ１」＝「信号状態Ｃｂ（ｆ−１）」）の判定を行い、信号状態Ｃａ１に記憶されたアドレスの値と、信号状態Ｃｂ（ｆ−１）に記憶されたアドレスの値とが同一の番号であると判断した場合、動作間時刻差検証部１４３２と接続する。また、動作検証部１４３１は、信号状態Ｃａ１に記憶されたアドレスの値と、信号状態Ｃｂ（ｆ−１）に記憶されたアドレスの値とが同一ではないと判断した場合、競合状態判定部１４４と接続する。
【００５９】
（１２）ステップＳ１１２
動作間時刻差検証部１４３２は、信号状態・シミュレーション時刻記憶部１４２により状態・時刻格納表に記憶された信号時刻Ｔａ１と、信号時刻Ｔｂ（ｆ−１）との時刻の差が、論理モデル中で定義されている同時動作禁止時間Ｔ１０よりも小さければ（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ−１）」＜「同時動作禁止時間Ｔ１０」）、影響のある信号のイベント時の動作との競合状態を確定する競合状態確定部１４３３と接続する。また、動作間時刻差検証部１４３２は、信号時刻Ｔａ１と信号時刻Ｔｂ（ｆ−１）との時刻の差が、同時動作禁止時間Ｔ１０以上であれば（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ−１）」≧「同時動作禁止時間Ｔ１０」）、競合状態判定部１４４と接続する。
【００６０】
（１３）ステップＳ１１３
競合状態確定部１４３３は、信号時刻Ｔａ１と信号時刻Ｔｂ（ｆ−１）との時刻の差（「信号時刻Ｔａ１」−「信号時刻Ｔｂ（ｆ−１）」の値）が、同時動作禁止時間Ｔ１０より小さいために、競合状態であると判断し、競合状態判定値Ｆａに数字の１を代入する。次に、競合状態確定部１４３３は、競合状態判定部１４４と接続する。
【００６１】
（１４）ステップＳ１１４
競合状態判定部１４４は、競合状態確定部１４３３により設定された競合状態判定値Ｆａが入力され、競合状態判定値Ｆａの値が１である場合、違反処理部１４５と接続する。ここでは、競合状態判定部１４４は、競合状態判定値Ｆａの値が１である場合、違反処理部１４５に結果通知を行う。また、競合状態判定部１４４は、競合状態判定値Ｆａが０の場合、一連の処理を終了する。２回目のイベントでも同様である。
【００６２】
（１５）ステップＳ１１５
違反処理部１４５は、シミュレーションの結果から、シミュレーション実行者に競合状態であることを通知するための処理を行う。次に、違反処理部１４５は、メッセージ出力部１４６と接続する。ここでは、違反処理部１４５は、競合状態判定部１４４からの結果通知に応じて、シミュレーション実行者に競合状態であることを通知するように、メッセージ出力部１４６に指示する。なお、違反処理部１４５は、シミュレータ１１に直接、競合状態であることを通知しても良い。
【００６３】
（１６）ステップＳ１１６
メッセージ出力部１４６は、メッセージの表示を行うことにより、シミュレーション実行者に競合状態であることを通知する。ここでは、メッセージ出力部１４６は、ネットワーク２を介してコンピュータ装置３（３−ｉ、ｉ＝１〜ｎ：ｎは台数）に競合状態であることを通知する。なお、メッセージ出力部１４６は、シミュレータ１１に直接、競合状態であることを通知しても良い。
【００６４】
（１７）ステップＳ１１７
シミュレータ１１は、競合状態であることの通知に応じて、シミュレーションを終了し、一連の処理を終了する。ここでは、シミュレータ１１は、競合状態であることの通知を受けたシミュレーション実行者により、停止される。なお、シミュレータ１１は、違反処理部１４５又はメッセージ出力部１４６からの停止指示に応じて、停止しても良い。
【００６５】
このとき、同時動作検証部１４３は、複数存在していても良い。例えば、複数の同時動作検証部１４３は、第１同時動作検証部１４３−１と、第２同時動作検証部１４３−２を含むものとする。第１同時動作検証部１４３−１及び第２同時動作検証部１４３−２の各々の内部構成は、同時動作検証部１４３と同じである。第１同時動作検証部１４３−１は、現イベント時の信号状態Ｃａ１・信号時刻Ｔａ１と、影響のある信号のイベント時の信号状態Ｃｂ（ｆ）・信号時刻Ｔｂ（ｆ）との競合状態を検証する。第２同時動作検証部１４３−２は、現イベント時の信号状態Ｃａ１・信号時刻Ｔａ１と、影響のある信号の前イベント時の信号状態Ｃｂ（ｆ−１）・信号時刻Ｔｂ（ｆ−１）との競合状態を検証する。ここでは、論理動作検証システムの一連の動作中において、最初（１度目）に接続された際の同時動作検証部１４３を第１同時動作検証部１４３−１とし、次（２度目）に接続された際の同時動作検証部１４３を第２同時動作検証部１４３−２とする。但し、実際には、これらの例に限定されない。
【００６６】
また、図４において、クロックＢ６２のタイミングチャートの状態・時刻格納表を示す。
動作の内容は、クロックＡ６０のタイミングチャートと同様である。すなわち、Ｃａ１、Ｔａ１、Ｃａ２、Ｔａ２がＣｂ１、Ｔｂ１、Ｃｂ２、Ｔｂ２に該当する。Ｃｂ（ｆ）、Ｔｂ（ｆ）、Ｃｂ（ｆ−１）、Ｔｂ（ｆ−１）がＣａ（ｒ）、Ｔａ（ｒ）、Ｃａ（ｒ−１）、Ｔａ（ｒ−１）に該当する。Ｃｂ（ｇ）、Ｔｂ（ｇ）、Ｃｂ（ｇ−１）、Ｔｂ（ｇ−１）がＣａ（ｓ）、Ｔａ（ｓ）、Ｃａ（ｓ−１）、Ｔａ（ｓ−１）に該当する。
【００６７】
次に、図６のタイミングチャート図の時刻Ｔ１におけるクロックＡ６０のイベントでの競合状態の検証について説明する。
【００６８】
論理モデル中で定義されている同時動作禁止時間は、同時動作禁止時間Ｔ１０で定義する。図６、図７、図８に記載してあるアドレスＡ６１の値「００」やアドレスＢ６３の値「０１」等は、２進数で表したアドレスの番号とする。
【００６９】
また、時刻Ｔ１で同時にイベントが起こる場合、シミュレータやシミュレーション環境により図７、図８のように信号の処理順序が変わってしまうが、ここでは、例として、図８で示すクロックＢ６２のイベントが先に処理された場合についての説明を行う。
【００７０】
なお、図７、図８中の時刻Ｔ１と時刻Ｔ２は、同一時刻（図６中の時刻Ｔ１に該当）であるが、シミュレーションの処理順序を視覚的に表すため時刻Ｔ１と時刻Ｔ２のようにずらして記載している。
【００７１】
また、ここでは、例えば図８中の時刻Ｔ２におけるクロックＡ６０のイベントを現イベントと設定し、時刻Ｔ１におけるクロックＢ６２のイベントを影響のある信号のイベントとし、時刻Ｔ０におけるクロックＢ６２のイベントを影響のある信号の前イベントとして説明する。なお、図６において時刻Ｔ１を基準にした場合、時刻Ｔ１から時刻Ｔ１２までの時間が同時動作禁止時間Ｔ１０に該当する。
【００７２】
まず、シミュレーション開始時に、同時動作禁止時間設定部１２は、同時動作禁止時間Ｔ１０に同時動作禁止時間を定義する。
【００７３】
次に、時刻Ｔ０でイベントが発生し、クロックＢ６２についての動作として、競合状態確定クリア部１４１は、競合状態判定値Ｆｂの値を０にする。
【００７４】
次に、信号状態・シミュレーション時刻記憶部１４２は、信号の状態・時刻格納表の信号状態Ｃｂ１に「００」、信号時刻Ｔｂ１にＴ０を格納する。
【００７５】
時刻Ｔ０では、シミュレーションが開始してからクロックＡ６０のイベントが発生していないため、クロックＡ６０のイベント時の信号の状態・時刻格納表の信号状態Ｃａ（ｒ）（この場合ｒは０となる）、信号時刻Ｔａ（ｒ）、信号状態Ｃａ（ｒ−１）、信号時刻Ｔａ（ｒ−１）に引用するデータが存在せず、本イベントでは競合状態の検証は行わない。
【００７６】
次に、時刻Ｔ１でクロックＢ６２のイベントが発生し、競合状態確定クリア部１４１は、競合状態判定値Ｆｂの値を０にする。
【００７７】
次に、信号状態・シミュレーション時刻記憶部１４２は、クロックＢ６２についての動作として、信号の状態・時刻格納表の信号状態Ｃｂ２に「０１」、信号時刻Ｔｂ２に時刻Ｔ１を格納する。
【００７８】
先ほど述べたように時刻Ｔ１において同一時刻に起こったイベントでも、シミュレータの動作上、クロックＢ６２のイベントが先に処理されると仮定したため、本イベント時にはまだクロックＡ６０のイベントは発生していない。この場合、ｓは０となる。そのため、信号の状態・時刻格納表の信号状態Ｃａ（ｓ）、信号時刻Ｔａ（ｓ）、信号状態Ｃａ（ｓ−１）、信号時刻Ｔａ（ｓ−１）に引用する状態や時刻は記憶されていない。
【００７９】
前述のようにクロックＡ６０のイベント時の信号の状態・時刻にデータがないため、本イベントでの競合状態の検証は行わない。
【００８０】
次に、時刻Ｔ１でクロックＡ６０のイベントが発生し、競合状態確定クリア部１４１は、競合状態確定部１４３３の信号状態判定値Ｆａの値を０にする。
【００８１】
次に、信号状態・シミュレーション時刻記憶部１４２は、クロックＡ６０の動作として、信号の状態・時刻格納表の信号状態Ｃａ２に「００」、信号時刻Ｔａ２の時刻Ｔ１を格納する。
【００８２】
次に、動作検証部１４３１は、信号の状態・時刻格納表により本イベント時の信号状態に該当する信号状態Ｃａ２のアドレスの番号「００」と影響信号状態格納部４３を参照して、影響のある信号のイベント時の信号状態に該当する信号状態Ｃｂ２のアドレスの番号「０１」が同一であるかどうか（「０１」≠「００」）の判定を行い、アドレスの番号が一致していないため、競合状態が発生していないと判断し、競合状態判定値Ｆａの値は０のままとする。ここでは、Ｃｂ（ｇ）は現イベントの直前のイベントであるため、現イベントにおいてはＣｂ２が該当する。この場合、ｇは２となる。
【００８３】
次に、動作検証部１４３１は、信号の状態・時刻格納表により本イベント時の信号状態に該当する信号状態Ｃａ１のアドレスの番号「００」と影響前信号状態格納部４５を参照して、影響のある信号の前イベント時の信号状態に該当する信号状態Ｃｂ１のアドレスの番号「００」が同一であるかどうか（「００」＝「００」）の判定を行い、アドレスが一致しているため競合状態が発生していると判断する。ここでは、Ｃｂ（ｇ−１）は影響のある信号の前イベントの信号状態であるため、現イベントにおいてはＣｂ１が該当する。
【００８４】
その後、動作間時刻差検証部１４３２は、信号の状態・時刻格納表により本イベント時のシミュレーション時刻に該当する信号時刻Ｔａ１の時刻Ｔ１と、影響のある信号の前イベント時の時刻に該当する信号時刻Ｔｂ１の時刻Ｔ０との差が、同時動作禁止時間よりも小さいため（「信号時刻Ｔ１」−「信号時刻Ｔ０」＜「同時動作禁止時間Ｔ１０」）、競合状態であると判断し、競合状態確定部１４３３で競合状態判定値Ｆａの値を１にする。ここでは、Ｔｂ（ｇ−１）は影響のある信号の前イベントの信号時刻であるため、現イベントにおいてはＴｂ１が該当する。
【００８５】
その後、競合状態判定部１４４は、競合状態判定値Ｆａの値が１であることから競合状態と確定する。違反処理部１４５及びメッセージ出力部１４６は、シミュレーション上で違反処理とメッセージ出力を行うことにより、シミュレーション実行者に競合状態が発生していることを通知する。これにより、図６のタイミングチャート図中の全イベントにおける競合状態検証のための一連の処理が終了となる。
【００８６】
このように、本実施形態における論理動作検証システムは、ＨＤＬ言語によって記述された論理シミュレーションにおいて、イベント時かつ前イベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶部と、現イベントと影響のある信号のイベント時の信号状態を検証する第１動作検証部と、現イベントと影響のある信号のイベント時の時刻を比較する第１動作間時刻差検証部と、現イベントと影響のある信号の前イベント時の信号状態を検証する第２動作検証部と、現イベントと影響のある信号の前イベント時の時刻を比較する第２動作間時刻差検証部を有することを特徴とする。
【００８７】
なお、ここでは、第１動作検証部と第２動作検証部は、同一の動作検証部として説明しているが、実際には、個別に独立した装置でも良い。同様に、第１動作間時刻差検証部と第２動作間時刻差検証部は、同一の動作間時刻差検証部として説明しているが、実際には、個別に独立した装置でも良い。
【００８８】
従来技術の問題について、図９を例に説明する。近年の半導体集積回路は、製品仕様が複雑になり、時刻Ｔ３におけるクロックＢ６２のイベントと時刻Ｔ４におけるクロックＡ６０のイベント間の動作において、時刻Ｔ３と時刻Ｔ４間が同時動作禁止時間となっている場合、時刻Ｔ３のクロックＢ６２のイベントに対して、時刻Ｔ４のクロックＡ６０のイベントは競合状態となる。従来技術では、同一時刻処理による競合状態判定であるため、時刻Ｔ３のクロックＢ６２のイベントに対する、時刻Ｔ４のクロックＡ６０のイベントの競合状態は検出することができないという問題がある。
【００８９】
本実施形態では、上記の論理動作検証システムを用いたＨＤＬ記述による論理動作検証方法により、現イベントと記憶した影響のある信号のイベントとの動作の比較及びイベント間の時刻差を比較することが可能となる。
【００９０】
更に、複数の信号で同時にイベントが起きた（発生した）場合でも、シミュレータやシミュレーション環境に依存せず、現イベントと影響のある信号のイベントにより上書きされた影響のある信号の前イベントとの競合状態の検証についても可能となる。
【００９１】
従って、同一時刻の動作による競合状態のみではなく、同時動作禁止時間内の競合状態も検証することが可能となり、問題が解決される。
【００９２】
＜＜第２実施形態＞＞
以下に、本発明の第２実施形態について説明する。
本実施形態では、第１実施形態における同時動作動作検証から競合状態判定値の設定までの処理を、同時動作禁止時間内で起きるイベント分、ループする。
【００９３】
本実施形態では、第１実施形態における「影響のある信号のイベント時の信号状態」、及び「影響のある信号の前イベント時の信号状態」を、「影響のある信号の同時動作禁止時間内の全イベント時の信号状態」に変更する。また、第１実施形態における「影響のある信号のイベント時の時刻」、及び「影響のある信号の前イベント時の時刻」を、「影響のある信号の同時動作禁止時間内の全イベント時の信号時刻」に変更する。
【００９４】
図１０は、本実施形態におけるサーバ１の具体的な構成例を示すブロック図である。
サーバ１は、シミュレータ１１と、同時動作禁止時間設定部１２と、イベント判定部１３と、競合状態検証部１４を含む。
【００９５】
シミュレータ１１、同時動作禁止時間設定部１２、及びイベント判定部１３については、第１実施形態と同様である。
【００９６】
競合状態検証部１４は、競合状態確定クリア部１４１と、信号状態・シミュレーション時刻記憶部１４２と、同時動作検証部１４３と、競合状態判定部１４４と、違反処理部１４５と、メッセージ出力部１４６と、ループ処理部１４７を含む。
【００９７】
競合状態確定クリア部１４１、信号状態・シミュレーション時刻記憶部１４２、同時動作検証部１４３、競合状態判定部１４４、違反処理部１４５、及びメッセージ出力部１４６については、第１実施形態と同様である。
【００９８】
ループ処理部１４７は、同時動作検証部１４３及び競合状態判定部１４４を制御し、同時動作動作検証から競合状態判定値の設定までの処理を、同時動作禁止時間内で起きるイベント分、ループする。ここでは、ループ処理部１４７は、影響のある信号の同時動作禁止時間内の全イベントに対して、イベント毎に、同時動作検証部１４３及び競合状態判定部１４４に接続する。なお、同時動作検証部１４３及び競合状態判定部１４４が仮想マシン（ＶＭ）環境である場合、ループ処理部１４７は、影響のある信号の同時動作禁止時間内の全イベントに対して、イベント毎に、同時動作検証部１４３及び競合状態判定部１４４に該当するＶＭ環境を生成するようにしても良い。
【００９９】
記録媒体４は、現信号状態格納部４１と、現時刻格納部４２と、競合状態判定値格納部４７と、全イベント信号状態格納部４８と、全イベント時刻格納部４９を含む。
【０１００】
本実施形態では、現信号状態格納部４１は、現イベント時の信号状態を示す情報を格納する。現時刻格納部４２は、現イベント時の時刻を示す情報を格納する。競合状態判定値格納部４７は、競合状態判定値を示す情報を格納する。全イベント信号状態格納部４８は、影響のある信号の同時動作禁止時間内のイベント時の信号状態を示す情報を格納し蓄積する。すなわち、全イベント信号状態格納部４８は、影響のある信号の同時動作禁止時間内の全イベント時の信号状態を示す情報を格納する。全イベント信号時刻格納部４９は、影響のある信号の同時動作禁止時間内の全イベント時の信号時刻を示す情報を格納し蓄積する。すなわち、全イベント信号時刻格納部４９は、影響のある信号の同時動作禁止時間内の全イベント時の信号時刻を示す情報を格納する。ここでは、全イベント信号状態格納部４８、及び全イベント信号時刻格納部４９は、同時動作禁止時間内の全イベント時の信号状態・時刻格納表の各項目を示す。但し、実際には、これらの例に限定されない。
【０１０１】
なお、全イベント信号状態格納部４８は、影響信号状態格納部４３と、影響前信号状態格納部４５を含んでいても良い。また、全イベント時刻格納部４９は、影響時刻格納部４４と、影響前時刻格納部４６を含んでいても良い。
【０１０２】
ここでは、記録媒体４は、図１１、図１２に示すようなクロック毎の信号状態・時刻格納表の形式で各情報を格納している。すなわち、現信号状態格納部４１、現時刻格納部４２、競合状態判定値格納部４７、全イベント信号状態格納部４８、及び全イベント時刻格納部４９は、クロック毎の信号状態・時刻格納表の各項目を示す。但し、実際には、これらの例に限定されない。
【０１０３】
本実施形態では、動作検証部１４３１は、記憶された信号状態・時刻格納表から信号状態・時刻を引用する。すなわち、動作検証部１４３１は、同時動作禁止時間内の全イベント時の信号状態・時刻格納表から信号状態・時刻を引用する。
【０１０４】
図１１は、クロックＡ６０の信号状態・時刻格納表であり、図１２は、クロックＢ６２の信号状態・時刻格納表である。
【０１０５】
なお、図１３を例にした場合、現在着目している信号がクロックＡ６０だとすると、ここでいう影響のある信号には、クロックＢ６２が該当する。
【０１０６】
図１１において、クロックＡ６０で１回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｈ回と定義する。また、クロックＡ６０で２回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｉ回と定義する。また、クロックＡ６０で３回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｊ回と定義する。また、クロックＡ６０で４回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｋ回と定義する。
【０１０７】
また、図１２において、クロックＢ６２で１回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｍ回と定義する。また、クロックＢ６２で２回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｎ回と定義する。また、クロックＢ６２で３回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｏ回と定義する。また、クロックＢ６２で４回目のイベントが発生した際のシミュレーション開始時からのクロックＢ６２の直前のイベント回数をｐ回と定義する。
【０１０８】
但し、ｈ、ｉ、ｊ、ｋ、ｍ、ｎ、ｏ、ｐは０以上の整数とする。ｈ、ｉ、ｊ、ｋ、ｍ、ｎ、ｏ、ｐが０の場合、シミュレーション開始から該当信号のクロックでイベントが起きていないことを表す。例えば、ｈが０の場合、Ｃｂ（ｈ）、Ｔｂ（ｈ）や、Ｃｂ（ｈ−１）、Ｔｂ（ｈ−１）や、Ｃｂ（ｈ−２）、Ｔｂ（ｈ−２）や、Ｃｂ（ｈ−３）、Ｔｂ（ｈ−３）には何も記憶されない。
【０１０９】
図１１において、クロックＡ６０の１回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態に、図１２の現イベントに対するクロックＢ６２の直前のイベントであるｈ回目のイベントで、現イベント時の信号状態のｈ回目に記憶された信号状態Ｃｂ（ｈ）を引用する。
【０１１０】
また、動作検証部１４３１は、図１２の現イベントに対するクロックＢ６２の直前の前イベントである（ｈ−１）回目のイベントで、現イベント時の信号状態の（ｈ−１）回目に記憶された信号状態Ｃｂ（ｈ−１）を引用する。
【０１１１】
また、動作検証部１４３１は、図１２の現イベントに対するクロックＢ６２の直前の２つ前のイベントである（ｈ−２）回目のイベントで、現イベント時の信号状態の（ｈ−２）回目に記憶された信号状態Ｃｂ（ｈ−２）を引用する。
【０１１２】
また、動作検証部１４３１は、図１２の現イベントに対するクロックＢ６２の直前の３つ前のイベントである（ｈ−３）回目のイベントで、現イベント時の信号状態の（ｈ−３）回目に記憶された信号状態Ｃｂ（ｈ−３）を引用する。
【０１１３】
なお、以降の説明で「Ｃｂ（ｈ）〜Ｃｂ（ｈ−３）」のような記述をしている場合、前述と同様のデータ構造を表すものとする。
【０１１４】
また、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、図１２の現イベントにおけるクロックＢ６２のｈ回目から（ｈ−３）回目のイベントで記憶された信号時刻Ｔｂ（ｈ）〜Ｔｂ（ｈ−３）を引用する。
【０１１５】
以降も、上記内容と同様に、クロックＡ６０の２回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態に、クロックＢ６２のｉ回目から（ｉ−３）回目のイベントで記憶された信号状態Ｃｂ（ｉ）〜Ｃｂ（ｉ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、クロックＢ６２のｉ回目から（ｉ−３）回目のイベントで記憶された信号時刻Ｔｂ（ｉ）〜Ｔｂ（ｉ−３）を引用する。
【０１１６】
次に、クロックＡ６０の３回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号状態に、クロックＢ６２のｊ回目から（ｊ−３）回目のイベントで記憶された信号状態Ｃｂ（ｊ）〜Ｃｂ（ｊ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号時刻に、クロックＢ６２のｊ回目から（ｊ−３）回目のイベントで記憶された信号時刻Ｔｂ（ｊ）〜Ｔｂ（ｊ−３）を引用する。
【０１１７】
次に、クロックＡ６０の４回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号状態に、クロックＢ６２のｋ回目から（ｋ−３）回目のイベントで記憶された信号状態Ｃｂ（ｋ）〜Ｃｂ（ｋ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号時刻に、クロックＢ６２のｋ回目から（ｋ−３）回目のイベントで記憶された信号時刻Ｔｂ（ｋ）〜Ｔｂ（ｋ−３）を引用する。
【０１１８】
また、図１２において、クロックＢ６２の１回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態に、クロックＡ６０のｍ回目から（ｍ−３）回目のイベントで記憶された信号状態Ｃａ（ｍ）〜Ｃａ（ｍ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号時刻に、クロックＡ６０のｍ回目から（ｍ−３）回目のイベントで記憶された信号時刻Ｔａ（ｍ）〜Ｔａ（ｍ−３）を引用する。
【０１１９】
クロックＢ６２の２回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態に、クロックＡ６０のｎ回目から（ｎ−３）回目のイベントで記憶された信号状態Ｃａ（ｎ）〜Ｃａ（ｎ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、クロックＡ６０のｎ回目から（ｎ−３）回目のイベントで記憶された信号時刻Ｔａ（ｎ）〜Ｔａ（ｎ−３）を引用する。
【０１２０】
次に、クロックＢ６２の３回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態に、クロックＡ６０のｏ回目から（ｏ−３）回目のイベントで記憶された信号状態Ｃａ（ｏ）〜Ｃｂ（ｏ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、クロックＡ６０のｏ回目から（ｏ−３）回目のイベントで記憶された信号時刻Ｔａ（０）〜Ｔａ（ｏ−３）を引用する。
【０１２１】
次に、クロックＢ６２の４回目のイベントを現イベントとすると、現イベント発生時に、動作検証部１４３１は、影響のある信号の同時動作禁止時間内の全イベント時の信号状態に、クロックＡ６０のｐ回目から（ｐ−３）回目のイベントで記憶された信号状態Ｃａ（ｐ）〜Ｃａ（ｐ−３）を引用する。また、動作検証部１４３１は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、クロックＡ６０のｐ回目から（ｐ−３）回目のイベントで記憶された信号時刻Ｔａ（ｐ）〜Ｔａ（ｐ−３）を引用する。
【０１２２】
次に、動作検証部１４３１及び動作間時刻差検証部１４３２は、信号状態・シミュレーション時刻記憶部１４２により記憶された現イベントと影響のある信号の同時動作禁止時間Ｔ１１内のイベント分だけ第１実施形態と同様の同時動作検証を繰り返し行う。
【０１２３】
図１３を例とした場合、時刻Ｔ５から時刻Ｔ８までを同時動作禁止時間内とすると、同時動作禁止時間Ｔ１１内のイベントとは、時刻Ｔ８におけるクロックＡ６０のイベントと時刻Ｔ５、時刻Ｔ６、時刻Ｔ７、時刻Ｔ８におけるクロックＢ６２のイベントを示す。その他の動作は第１実施形態と同様である。
【０１２４】
次に、図１３の時刻Ｔ８におけるクロックＡ６０のイベントでの競合状態の検証について説明する。
【０１２５】
図１１に示す信号状態・時刻格納表は、図１３におけるクロックＡ６０のタイミングチャートでの現イベント時の信号状態、現イベント時の時刻、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻を表している。
【０１２６】
図１２に示す信号の状態・時刻格納表は、図１３における各イベントが発生した場合のクロックＢ６２のタイミングチャートでの現イベント時の信号状態、現イベント時の時刻、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻を表している。
【０１２７】
なお、時刻Ｔ８で同時にイベントが起こる場合、シミュレータやシミュレーション環境により信号の処理順序が変わってしまうが、今回の例ではクロックＢ６２のイベントが先に処理された場合についての説明を行う。
【０１２８】
図１３において時刻Ｔ８を基準にした場合、時刻Ｔ８から時刻Ｔ１３までの時間が同時動作禁止時間Ｔ１１に該当する。
【０１２９】
まず、シミュレーション開始後に、同時動作禁止時間設定部２は、両信号の同時動作禁止時間を同時動作禁止時間Ｔ１１で定義する。
【０１３０】
時刻Ｔ５、Ｔ６、Ｔ７でクロックＢ６２のイベントが発生したとき、競合状態確定クリア部１４１は、競合状態判定値Ｆａの値を０にする。
【０１３１】
また、クロックＢ６２についての動作として、信号状態・シミュレーション時刻記憶部１４２は、信号状態やシミュレーション時刻を、信号の状態・時刻格納表のＣｂ１、Ｔｂ１、Ｃｂ２、Ｔｂ２、Ｃｂ３、Ｔｂ３に其々格納する。
【０１３２】
これらのイベント時には、クロックＡ６０について、信号状態・シミュレーション時刻記憶部１４２は一度も動作しておらず、Ｃａ（ｍ）〜Ｃａ（ｍ−３）、Ｔａ（ｍ）〜Ｔａ（ｍ−３）（この場合ｍは０となる）、Ｃａ（ｎ）〜Ｃａ（ｎ−３）、Ｔａ（ｎ）〜Ｔａ（ｎ−３）（この場合ｎは０となる）、Ｃａ（ｏ）〜Ｃａ（ｏ−３）、Ｔａ（ｏ）〜Ｔａ（ｏ−３）（この場合ｏは０となる）に引用する信号状態・信号時刻が存在しないため、第１実施形態と同様に、Ｔ５、Ｔ６、Ｔ７のイベントでは競合状態の検証は行わない。
【０１３３】
次に、時刻Ｔ８でクロックＡ６０とクロックＢ６２で同時にイベントが起きた場合、競合状態確定クリア部１４１は、競合状態判定値Ｆｂの値を０にする。
【０１３４】
まず、クロックＢ６２のイベントにより、信号状態・シミュレーション時刻記憶部１４２は、クロックＢ６２のイベントでの信号状態やシミュレーション時刻を、信号状態・時刻格納表のＣｂ４、Ｔｂ４に記憶する。
【０１３５】
前述の場合も、クロックＡ６０について、信号状態・シミュレーション時刻記憶部１４２は一度も動作していないため、Ｃａ（ｐ）〜Ｃａ（ｐ−３）、Ｔａ（ｐ）〜Ｔａ（ｐ−３）（この場合ｐは０となる）に引用する状態・時刻が存在せず、競合状態の検証は行わない。
【０１３６】
次に、クロックＡ６０のイベント時の動作として、競合状態確定クリア部１４１は、競合状態判定値Ｆａの値を０にする。
【０１３７】
信号状態・シミュレーション時刻記憶部１４２は、クロックＡ６０のイベントでの信号状態やシミュレーション時刻を、状態・時刻格納表のＣａ４、Ｔｂ４に記憶する。
【０１３８】
信号状態・シミュレーション時刻記憶部１４２は、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態と、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻に、クロックＢ６２の信号状態・時刻格納表のＣｂ（ｋ）〜Ｃｂ（ｋ−３）と、Ｔｂ（ｋ）〜Ｔｂ（ｋ−３）（この場合ｋは４となる）を其々引用する。
【０１３９】
動作検証部１４３１は、クロックＡ６０の時刻Ｔ８におけるアドレスの番号「１０」（状態・時刻格納表のＣａ４に該当）とクロックＢ６２の時刻Ｔ８におけるアドレスの番号「１１」（状態・時刻格納表のＣｂ（ｋ）に該当）が同一であるかどうか（「アドレス値１０」≠「アドレス値１１」）の判定を行い、アドレスの番号が一致していないため、競合状態が発生していないと判断する。
【０１４０】
次に、動作検証部１４３１は、クロックＡ６０の時刻Ｔ８におけるアドレスの番号「１０」（状態・時刻格納表のＣａ４に該当）とクロックＢ６２の時刻Ｔ７におけるアドレスの番号「０１」（状態・時刻格納表のＣｂ（ｋ−１）に該当）が同一であるかどうか（「アドレス値１０」≠「アドレス値０１」）の判定を行い、アドレスの番号が一致していないため、競合状態が発生していないと判断する。
【０１４１】
次に、動作検証部１４３１は、クロックＡ６０の時刻Ｔ８におけるアドレスの番号「１０」（状態・時刻格納表のＣａ４に該当）とクロックＢ６２の時刻Ｔ６におけるアドレスの番号「００」（状態・時刻格納表のＣｂ（ｋ−２）に該当）が同一であるかどうか（「アドレス値１０」≠「アドレス値００」）の判定を行い、アドレスの番号が一致していないため、競合状態が発生していないと判断する。
【０１４２】
次に、動作検証部１４３１は、クロックＡ６０の時刻Ｔ８におけるアドレスの番号「１０」（状態・時刻格納表のＣａ４に該当）とクロックＢ６２の時刻Ｔ５におけるアドレスの番号「１０」（状態・時刻格納表のＣｂ（ｋ−３）に該当）が同一であるかどうか（「アドレス値１０」＝「アドレス値１０」）の判定を行い、アドレスが一致しているため、クロックＡ６０の時刻Ｔ８のイベントとクロックＢ６２の時刻Ｔ５のイベントで競合状態が発生している可能性があると判断する。
【０１４３】
その後、動作間時刻差検証部１４３２及び競合状態確定部１４３３は、クロックＡ６０の時刻Ｔ８における時刻Ｔ８（状態・時刻格納表のＴａ４に該当）と、クロックＢ６２の時刻Ｔ５における時刻Ｔ５（状態・時刻格納表のＣｂ（ｋ−３）に該当）の差が、同時動作禁止時間よりも小さいため（「時刻Ｔ８」−「時刻Ｔ５」＜同時動作禁止時間Ｔ１１）、競合状態であると判断し、競合状態判定値Ｆｂに数字の１を代入する。
【０１４４】
以降は第１実施形態と同様の動作となる。
【０１４５】
＜論理動作検証システムの一連の動作＞
図１４を参照して、本実施形態の論理動作検証システムの一連の動作について説明する。
【０１４６】
（１）ステップＳ２０１
まず、シミュレータ１１は、シミュレーションを開始する。ここでは、シミュレーション実行者は、コンピュータ装置３（３−ｉ、ｉ＝１〜ｎ）から、ネットワーク２を介して、シミュレータ１１にシミュレーションの開始を指示する。シミュレータ１１は、シミュレーション実行者からのシミュレーションの開始の指示に応じて、シミュレーションを開始する。
【０１４７】
（２）ステップＳ２０２
同時動作禁止時間設定部１２は、シミュレーション開始後、同時動作禁止時間Ｔ１１に両信号（クロックＡ６０、クロックＢ６２）における同時動作禁止時間の設定を行う。
【０１４８】
（３）ステップＳ２０３
イベント判定部３は、クロックＡ６０について、イベントの発生を判断し、イベントが発生していない場合はイベントが発生するまでループする。また、イベント判定部３は、クロックＢ６２についても、イベントが発生するまで同様にループし、クロックＡ６０の場合と同様の処理を行う。すなわち、イベント判定部３は、イベントが発生するまでイベント発生の監視を継続する。
【０１４９】
（４）ステップＳ２０４
競合状態確定クリア部１４１は、イベントが発生した場合、競合状態確定部１４３３から入力される競合状態判定値の値を０にする。図１３の例では、競合状態確定クリア部１４１は、クロックＡ６０及びクロックＢ６２で同時にイベントが発生するため、競合状態判定値Ｆａ及び競合状態判定値Ｆｂの値を０にする。
【０１５０】
（５）ステップＳ２０５
次に、其々のクロックでイベントが発生するたびにクロック毎に、信号状態・シミュレーション時刻記憶部１４２は、信号状態やシミュレーション時刻を示す情報を、同時動作禁止時間内イベント分、信号状態・時刻格納表に逐次記憶する。ここでは、信号状態・シミュレーション時刻記憶部１４２は、全イベント信号状態格納部４８に、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号状態を示す情報を格納する。また、信号状態・シミュレーション時刻記憶部１４２は、全イベント時刻格納部４９に、影響のある信号の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻を示す情報を格納する。
【０１５１】
（６）ステップＳ２０６
動作検証部１４３１は、クロックＡ６０のイベント発生時刻直前のクロックＢ６２で記憶された信号状態、信号時刻を参照し、クロックＢ６２の信号状態・時刻格納表からクロックＡ６０の信号状態・時刻格納表の影響のある信号の全イベント時の信号状態、影響のある信号の全イベント時の時刻に、参照された信号状態、信号時刻の値を移す。
【０１５２】
（７）ステップＳ２０７
動作検証部１４３１は、図１３におけるクロックＡ６０のタイミングチャートでの現イベント時の信号状態と、影響のある信号（クロックＢ６２）の同時動作禁止時間Ｔ１１内の全イベント時の信号状態のいずれかとのアドレスの番号が同一の番号であるかどうかの判定を行い、同一の番号であると判断した場合、動作間時刻差検証部１４３２と接続する。また、信号状態・シミュレーション時刻記憶部１４２は、同一の番号ではないと判断した場合、ループ処理部１４７と接続する。
【０１５３】
（８）ステップＳ２０８
その後、動作間時刻差検証部１４３２は、クロックＡ６０の現イベント時の信号時刻と、クロックＢ６２の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻のいずれかとの差が、論理モデル中で定義されている同時動作禁止時間Ｔ１１よりも小さければ、競合状態確定部１４３３と接続する。また、信号状態・シミュレーション時刻記憶部１４２は、クロックＡ６０の現イベント時の信号時刻と、クロックＢ６２の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻のいずれかとの差が、同時動作禁止時間Ｔ１１よりも小さくない場合、ループ処理部１４７と接続する。
【０１５４】
（９）ステップＳ２０９
競合状態確定部１４３３は、クロックＡ６０の現イベント時の信号時刻と、クロックＢ６２の同時動作禁止時間Ｔ１１内の全イベント時の信号時刻のいずれかとの差が、同時動作禁止時間よりも小さいため、競合状態であると判断し、競合状態判定値Ｆｂに数字の１を代入する。その後、競合状態確定部１４３３は、ループ処理部１４７と接続する。
【０１５５】
（１０）ステップＳ２１０
ループ処理部１４７は、クロックＡ６０の現イベントとクロックＢ６２の全イベントとの競合状態の検証が終了したか判定する。ループ処理部１４７は、クロックＡ６０の現イベントとクロックＢ６２の全イベントとの競合状態の検証が終了していれば、競合状態判定部１４４に接続する。ループ処理部１４７は、クロックＡ６０の現イベントとクロックＢ６２の全イベントとの競合状態の検証が終了していなければ、未検証のイベントについて競合状態の検証を行うため、動作検証部１４３１に接続する。
【０１５６】
（１１）ステップＳ２１１
競合状態判定部１４４は、競合状態確定部１４３３により設定された競合状態判定値Ｆｂが入力され、競合状態判定値Ｆｂの値が１である場合、違反処理部１４５と接続する。ここでは、競合状態判定部１４４は、競合状態判定値Ｆｂの値が１である場合、違反処理部１４５に結果通知を行う。また、競合状態判定部１４４は、競合状態判定値Ｆｂが０の場合、一連の処理を終了する。
【０１５７】
（１２）ステップＳ２１２
違反処理部１４５は、シミュレーションの結果から、シミュレーション実行者に競合状態であることを通知するための処理を行う。次に、違反処理部１４５は、メッセージ出力部１４６と接続する。ここでは、違反処理部１４５は、競合状態判定部１４４からの結果通知に応じて、シミュレーション実行者に競合状態であることを通知するように、メッセージ出力部１４６に指示する。なお、違反処理部１４５は、シミュレータ１１に直接、競合状態であることを通知しても良い。
【０１５８】
（１３）ステップＳ２１３
メッセージ出力部１４６は、メッセージの表示を行うことにより、シミュレーション実行者に競合状態であることを通知する。ここでは、メッセージ出力部１４６は、ネットワーク２を介してコンピュータ装置３（３−ｉ、ｉ＝１〜ｎ：ｎは台数）に競合状態であることを通知する。なお、メッセージ出力部１４６は、シミュレータ１１に直接、競合状態であることを通知しても良い。
【０１５９】
（１４）ステップＳ２１４
シミュレータ１１は、競合状態であることの通知に応じて、シミュレーションを終了し、一連の処理を終了する。ここでは、シミュレータ１１は、競合状態であることの通知を受けたシミュレーション実行者により、停止される。なお、シミュレータ１１は、違反処理部１４５又はメッセージ出力部１４６からの停止指示に応じて、停止しても良い。
【０１６０】
本実施形態では、第１実施形態に比べ、同時動作禁止時間内の全イベント分の信号状態・シミュレーション時刻を記憶し、同時動作禁止時間内イベント分ループ部を追加することにより、同時動作禁止時間内の全てのイベント時の競合状態を検証することが可能となり、同時動作禁止時間内で複数のイベントが発生した場合でも全ての競合状態を検出することができる。
【０１６１】
図１３を例にすると、時刻Ｔ８で起きたクロックＡ６０のイベントと、同時動作禁止時間内である時刻Ｔ５から時刻Ｔ８までのクロックＢ６２のイベントとの全ての信号状態の検証、及びシミュレーション時刻の比較を行うことにより、前クロック分だけではなく同時動作禁止時間内の全ての競合状態の検出が可能となる。
【０１６２】
このように、本実施形態では、同時動作禁止時間内に発生するイベント分の信号状態・シミュレーション時刻を記憶し、同時動作禁止時間内に発生するイベント分の競合状態の検証を繰り返し行う。
【０１６３】
本実施形態における論理動作検証システムは、ＨＤＬ言語によって記述された論理シミュレーションにおいて、イベント時かつ前イベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶部と、現イベントと影響のある信号のイベント時の信号状態を検証する第１動作検証部と、現イベントと影響のある信号のイベント時の時刻を比較する第１動作間時刻差検証部と、現イベントと影響のある信号の全イベント時の信号状態を検証する第３動作検証部と、現イベントと影響のある信号の全イベント時の時刻を比較する第３動作間時刻差検証部を有することを特徴とする。
【０１６４】
第３動作検証部及び第３動作間時刻差検証部は、第１実施形態における第２動作検証部及び第２動作間時刻差検証部を拡張したものでも良い。例えば、第３動作検証部は、現イベントと影響のある信号の前イベント時の信号状態を検証する第２動作検証部と、現イベントと影響のある信号の前イベント以外の残りのイベント時の信号状態を検証する他の動作検証部とを組み合わせたものでも良い。同様に、第３動作間時刻差検証部は、現イベントと影響のある信号の前イベント時の時刻を比較する第２動作間時刻差検証部と、現イベントと影響のある信号の前イベント以外の残りのイベント時の時刻を比較する他の動作間時刻差検証部とを組み合わせたものでも良い。
【０１６５】
なお、ここでは、第１動作検証部と第３動作検証部は、同一の動作検証部として説明しているが、実際には、個別に独立した装置でも良い。同様に、第１動作間時刻差検証部と第３動作間時刻差検証部は、同一の動作間時刻差検証部として説明しているが、実際には、個別に独立した装置でも良い。
【０１６６】
以上のように、本発明は、互いに影響のある信号間での同時動作時におけるＨＤＬ記述による論理動作検証に関連する。
【０１６７】
本発明では、第一に、論理モデルを用いた論理検証において、同時動作禁止時間内の競合状態を検出することが可能となり、更に今までは発見することができない場合があったイベント同時発生時の競合状態を全て検出することが可能となり、設計品質が向上する効果がある。
【０１６８】
第二に、論理検証時に半導体集積回路の問題を発見可能になったことにより、実回路の評価で問題が見つかった場合よりリワークに必要な時間の短縮と費用の削減につながる効果がある。
【０１６９】
本実施形態における論理動作検証システムは、ＨＤＬ言語によって記述された論理シミュレーションにおいて、イベント時かつ前イベント時の信号状態及びシミュレーション時刻を示す情報を記憶する信号状態・シミュレーション時刻記憶部と、現イベントと影響のある信号のイベント時の信号状態を検証する第１動作検証部と、現イベントと影響のある信号のイベント時の時刻を比較する第１動作間時刻差検証部と、現イベントと影響のある信号の前イベント時の信号状態を検証する第２動作検証部と、現イベントと影響のある信号の前イベント時の時刻を比較する第２動作間時刻差検証部を有することを特徴とする。
【０１７０】
なお、ここでは、第１動作検証部と第２動作検証部は、同一の動作検証部として説明しているが、実際には、個別に独立した装置でも良い。同様に、第１動作間時刻差検証部と第２動作間時刻差検証部は、同一の動作間時刻差検証部として説明しているが、実際には、個別に独立した装置でも良い。
【０１７１】
また、本発明に係る論理動作検証方法は、ＨＤＬ記述による論理動作検証方法において、現イベント及び前イベントの信号状態・時刻を示す情報を記憶する図３、図４に示す関係を有することを特徴とする。
【０１７２】
また、本発明に係る論理動作検証方法は、ＨＤＬ言語によって記述された論理シミュレーションにおいて、同時動作禁止時間内イベント分ループを追加したことを特徴とする。
【０１７３】
また、本発明に係る論理動作検証方法は、ＨＤＬ記述による論理動作検証方法において、現イベント及び同時動作禁止時間内の全イベントの信号状態・時刻を示す情報を記憶する図１１、図１２に示す関係を有することを特徴とする。
【０１７４】
以上、本発明の実施形態を詳述してきたが、実際には上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【図面の簡単な説明】
【０１７５】
【図１】図１は、本発明の具体的なシステム構成例を示す概念図である。
【図２】図２は、本発明の第１実施形態におけるサーバの具体的な構成例を示すブロック図である。
【図３】図３は、本発明の第１実施形態に係わる各信号の状態・時刻格納表である。
【図４】図４は、本発明の第１実施形態に係わる各信号の状態・時刻格納表である。
【図５Ａ】図５Ａは、本発明の第１実施形態における同時動作禁止時間内での競合状態検証を示したタイミングチャート図である。
【図５Ｂ】図５Ｂは、本発明の第１実施形態における同時動作禁止時間内での競合状態検証を示したタイミングチャート図である。
【図６】図６は、本発明を説明する信号の入力状態を示したタイミングチャート図である。
【図７】図７は、図６において問題がない場合を示したタイミングチャート図である。
【図８】図８は、図６において問題がある場合を示したタイミングチャート図である。
【図９】図９は、本発明を説明する同時動作禁止時間内での動作を示したタイミングチャート図である。
【図１０】図１０は、本発明の第２実施形態におけるサーバの具体的な構成例を示すブロック図である。
【図１１】図１１は、本発明の第２実施形態に関わる各信号の状態・時刻格納表である。
【図１２】図１２は、本発明の第２実施形態に関わる各信号の状態・時刻格納表である。
【図１３】図１３は、本発明の第２実施形態を説明する信号の入力状態を示したタイミングチャート図である。
【図１４】図１４は、本発明の第２実施形態における同時動作禁止時間内の全イベントで検証可能である同時動作禁止時間内での競合状態検証を示したタイミングチャート図である。
【符号の説明】
【０１７６】
１…  サーバ
１１…  シミュレータ
１２…  同時動作禁止時間設定部
１３…  イベント判定部
１４…  競合状態検証部
１４１…  競合状態確定クリア部
１４２…  信号状態・シミュレーション時刻記憶部
１４３…  同時動作検証部
１４４…  競合状態判定部
１４５…  違反処理部
１４６…  メッセージ出力部
１４７…  ループ処理部
２…  ネットワーク
３…  コンピュータ装置
４…  記録媒体
４１…  現信号状態格納部
４２…  現時刻格納部
４３…  影響信号状態格納部
４４…  影響時刻格納部
４５…  影響前信号状態格納部
４６…  影響前時刻格納部
４７…  競合状態判定値格納部
４８…  全イベント信号状態格納部
４９…  全イベント時刻格納部
６０…  クロックＡ
６１…  アドレスＡ
６２…  クロックＢ
６３…  アドレスＢ
【図１】
2010009424.tif 000003
【図２】
2010009424.tif 000004
【図３】
2010009424.tif 000005
【図４】
2010009424.tif 000006
【図５Ａ】
2010009424.tif 000007
【図５Ｂ】
2010009424.tif 000008
【図６】
2010009424.tif 000009
【図７】
2010009424.tif 000010
【図８】
2010009424.tif 000011
【図９】
2010009424.tif 000012
【図１０】
2010009424.tif 000013
【図１１】
2010009424.tif 000014
【図１２】
2010009424.tif 000015
【図１３】
2010009424.tif 000016
【図１４】
2010009424.tif 000017