(57)【要約】【課題】  従来技術より比較的に少ない時間で回路設計を検証するための方法を提供すること。【解決手段】  回路設計を提供するステップと、回路設計のための刺激樹形図を作成するステップであって、刺激樹形図が、Ｌ個の刺激と、Ｍ個のチェックポインティングされたスプリットと、Ｎ個のチェックポインティングされていないスプリットとを含むステップと、刺激樹形図を実行するステップとを含む設計検証方法であって、刺激樹形図を実行するステップは、ｉ＝１，．．．，Ｍについて、Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、ｉ番目のチェックポインティングされたスプリットを実行するステップが、（ａ）刺激樹形図を実行するステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、（ｂ）ｉ番目のコンテキストを保存するステップが実行された後に、ｉ番目のチェックポインティングされたスプリットから分岐する刺激樹形図のＰｉ個のパスに沿ってｉ番目のコンテキストから実行するステップであって、ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップとを含む、設計検証方法。【選択図】      図１
2009510554.tif 000002
【特許請求の範囲】
【請求項１】
回路設計を提供するステップと、
前記回路設計のための刺激樹形図を作成するステップであって、
前記刺激樹形図は、４より大きい整数であるＬ個の刺激を含み、
前記刺激樹形図は、１より大きい整数であるＭ個のチェックポインティングされたスプリットをさらに含むステップと、
前記刺激樹形図を実行するステップと、
を含む設計検証方法であって、
前記刺激樹形図を実行するステップは、ｉ＝１，．．．，Ｍについて、前記Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、前記ｉ番目のチェックポインティングされたスプリットを実行する前記ステップは、
前記刺激樹形図を実行する前記ステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、
前記ｉ番目のコンテキストを保存する前記ステップが実行された後に、前記ｉ番目のチェックポインティングされたスプリットから分岐する前記刺激樹形図のＰｉ個のパスに沿って前記ｉ番目のコンテキストから実行するステップであって、前記ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップと、
を含む、設計検証方法。
【請求項２】
前記刺激樹形図は、負でない整数であるＮ個のチェックポインティングされていないスプリットをさらに含み、
前記刺激樹形図を実行する前記ステップは、ｈ＝１，．．．，Ｎについて、前記Ｎ個のチェックポインティングされていないスプリットのｈ番目のチェックポインティングされていないスプリットを実行するステップをさらに含み、前記ｈ番目のチェックポインティングされていないスプリットを実行する前記ステップは、
Ｑｈ個の可能な値の中からランダムに値を生成するステップであって、前記ｈ番目のチェックポインティングされていないスプリットは、１より大きい整数であるＱｈ方向のスプリットである、ステップと、
前記ｈ番目のチェックポインティングされていないスプリットから分岐する前記刺激樹形図のＱｈ個のパスのうちの１つのパスに沿って実行を続けるステップであって、前記１つのパスは、前記ランダムに生成された値と関連付けられる、ステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記刺激樹形図を実行する前記ステップは、ｊ＝１，．．．，Ｌについて、ｊ番目のジョブを実行するステップをさらに含み、前記ｊ番目のジョブを実行する前記ステップは、
前記Ｌ個の刺激のｊ番目の刺激を生成するステップと、
前記ｊ番目の刺激を前記回路設計に適用するステップと、
前記回路設計に適用された前記ｊ番目の刺激に応答して前記回路設計のｊ番目の出力を生成するステップと、
前記ｊ番目の刺激についてのｊ番目の予想値を生成し、前記ｊ番目の出力と前記ｊ番目の刺激についての前記ｊ番目の予想値とを比較するステップと、
前記ｊ番目の出力と前記ｊ番目の刺激についての前記ｊ番目の予想値とが前記比較ステップの結果として互いに異なる場合に、前記回路設計は欠陥があることを示すステップと、
を含む、請求項１に記載の方法。
【請求項４】
前記１番目、．．．、Ｌ番目のジョブを実行する前記ステップは、逐次的に実行される、請求項３に記載の方法。
【請求項５】
前記１番目、．．．、Ｌ番目のジョブを実行する前記ステップは、非逐次的に実行される、請求項３に記載の方法。
【請求項６】
Ｎ＝０である、請求項１に記載の方法。
【請求項７】
Ｎ＞０である、請求項１に記載の方法。
【請求項８】
前記ｉ番目のチェックポインティングされたスプリットを実行する前記ステップは、チェックポイント・キュー内にＰｉ個の項目を配置するステップをさらに含み、
前記Ｐｉ個のパスに沿って前記ｉ番目のコンテキストから実行する前記ステップは、ｋ＝１，．．．，Ｐｉについて、前記チェックポイント・キュー内の前記Ｐｉ個の項目のｋ番目の項目に基づいて前記Ｐｉ個のパスのｋ番目のパスに沿って前記ｉ番目のコンテキストから実行するステップを含む、請求項１に記載の方法。
【請求項９】
前記１番目、．．．、Ｐｉ番目のパスに沿って前記ｉ番目のコンテキストから実行する前記ステップは、逐次的に実行される、請求項８に記載の方法。
【請求項１０】
前記１番目、．．．、Ｐｉ番目のパスに沿って前記ｉ番目のコンテキストから実行する前記ステップは、非逐次的に実行される、請求項８に記載の方法。
【請求項１１】
前記チェックポイント・キュー内の前記Ｐｉ個の項目の各々の項目が、前記Ｐｉ個のパスのパスと１対１で関連付けられる、請求項８に記載の方法。
【請求項１２】
前記チェックポイント・キュー内の前記Ｐｉ個の項目の各々の項目が、前記ｉ番目のシミュレーション環境の前記ｉ番目のコンテキストと関連付けられる、請求項８に記載の方法。
【請求項１３】
前記刺激樹形図を実行する前記ステップは、コンピュータ・シミュレーションによって実行される、請求項１に記載の方法。
【請求項１４】
前記刺激樹形図の全ての刺激カバレッジ・パスが実行されたことに応答して回路設計検証の完了を示すステップをさらに含む、請求項１に記載の方法。
【請求項１５】
前記請求項のいずれか１項による方法の全てのステップを実行するようにされた手段を含むシステム。
【請求項１６】
コンピュータ・システム上で実行される、前記請求項のいずれか１項による方法の全てのステップを実行するための命令を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計検証に関し、より具体的には、チェックポインティングを用いた回路設計検証に関する。
【背景技術】
【０００２】
作成後の回路設計は、通常、実際に製造される前に検証される（すなわち、テストされる）。典型的には、回路設計は、コンピュータ（図示せず）上でシミュレーション・プログラムを実行することによって検証され、その間に、異なる入力（以下「刺激」と呼ぶ）が、回路設計に順番に適用され、回路設計の出力及び異なるノードにおける信号が収集され、予想値と比較される。不一致が生じた場合には、回路設計は、欠陥があるとみなされ、再設計されなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
異なる刺激の数は、極めて大きなものとなる可能性があり、そのため、可能な全ての刺激で回路設計をテストするのには、非常に長い時間がかかることになる。従って、従来技術より比較的に少ない時間で回路設計を検証する方法が必要とされる。本発明は、従来技術より比較的に少ない時間で回路設計を検証するための方法を提供する。
【課題を解決するための手段】
【０００４】
本発明は、回路設計を提供するステップと、回路設計のための刺激樹形図を作成するステップであって、刺激樹形図は、４より大きい整数であるＬ個の刺激を含み、刺激樹形図は、１より大きい整数であるＭ個のチェックポインティングされたスプリットをさらに含み、刺激樹形図は、負でない整数であるＮ個のチェックポインティングされていないスプリットをさらに含むステップと、刺激樹形図を実行するステップとを含む設計検証方法を提供し、刺激樹形図を実行するステップは、ｉ＝１，．．．，Ｍについて、Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、ｉ番目のチェックポインティングされたスプリットを実行するステップは、刺激樹形図を実行するステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、ｉ番目のコンテキストを保存するステップが実行された後に、ｉ番目のチェックポインティングされたスプリットから分岐する刺激樹形図のＰｉ個のパスに沿ってｉ番目のコンテキストから実行するステップであって、ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップと、を含む。
【０００５】
本発明は、また、コンピュータ・システムのプロセッサによってアルゴリズムを実行するステップを含む方法も提供し、このアルゴリズムは、コンピュータ読み取り可能媒体内に格納されたコンピュータ・コードに含まれ、コンピュータ読み取り可能媒体は、プロセッサに結合され、アルゴリズムを実行するステップは、回路設計の刺激樹形図を実行するステップを含み、刺激樹形図は、４より大きい整数であるＬ個の刺激を含み、刺激樹形図は、１より大きい整数であるＭ個のチェックポインティングされたスプリットをさらに含み、刺激樹形図は、負でない整数であるＮ個のチェックポインティングされていないスプリットをさらに含み、刺激樹形図を実行するステップは、ｉ＝１，．．．，Ｍについて、Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、ｉ番目のチェックポインティングされたスプリットを実行するステップは、刺激樹形図を実行するステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、ｉ番目のコンテキストを保存するステップが実行された後に、ｉ番目のチェックポインティングされたスプリットから分岐する刺激樹形図のＰｉ個のパスに沿ってｉ番目のコンテキストから実行するステップであって、ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップを含む。
【０００６】
本発明は、また、内部に組み込まれたコンピュータ読み取り可能プログラム・コードを有するコンピュータ使用可能媒体を含むコンピュータ・プログラムも提供し、コンピュータ読み取り可能プログラム・コードは、回路設計検証のための方法を実施するように適合されたアルゴリズムを含み、該方法は、回路設計の刺激樹形図を実行するステップを含み、刺激樹形図は、４より大きい整数であるＬ個の刺激を含み、刺激樹形図は、１より大きい整数であるＭ個のチェックポインティングされたスプリットをさらに含み、刺激樹形図は、負でない整数であるＮ個のチェックポインティングされていないスプリットをさらに含み、刺激樹形図を実行する前述のステップは、ｉ＝１，．．．、Ｍについて、Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、ｉ番目のチェックポインティングされたスプリットを実行するステップは、刺激樹形図を実行するステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、ｉ番目のコンテキストを保存するステップが実行された後に、ｉ番目のチェックポインティングされたスプリットから分岐する刺激樹形図のＰｉ個のパスに沿ってｉ番目のコンテキストから実行するステップであって、ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップと、を含む。
【０００７】
本発明は、また、コンピュータ読み取り可能コードを計算システムに統合するステップを含む回路設計検証のための方法も提供し、計算システムと組み合わされたコードは、回路設計の刺激樹形図を実行するステップを実行することが可能であり、刺激樹形図は、４より大きい整数であるＬ個の刺激を含み、刺激樹形図は、１より大きい整数であるＭ個のチェックポインティングされたスプリットをさらに含み、刺激樹形図は、負でない整数であるＮ個のチェックポインティングされていないスプリットをさらに含み、刺激樹形図を実行するステップは、ｉ＝１，．．．、Ｍについて、Ｍ個のチェックポインティングされたスプリットのｉ番目のチェックポインティングされたスプリットを実行するステップを含み、ｉ番目のチェックポインティングされたスプリットを実行するステップは、刺激樹形図を実行するステップが実行されるｉ番目のシミュレーション環境のｉ番目のコンテキストを保存するステップと、ｉ番目のコンテキストを保存するステップが実行された後に、ｉ番目のチェックポインティングされたスプリットから分岐する刺激樹形図のＰｉ個のパスに沿ってｉ番目のコンテキストから実行するステップであって、ｉ番目のチェックポインティングされたスプリットは、１より大きい整数であるＰｉ方向のスプリットである、ステップと、を含む。
【０００８】
本発明は、並行シミュレーション・プロセスを用いて集積回路をテストする方法を提供し、この方法は、集積回路のためのテスト・カバレッジを定めるステップと、並行シミュレーション・プロセスを制御する第１のシミュレーション・プロセスを集積回路のランダム・シード構成から作成するステップと、テスト・カバレッジの第１のチェックポインティングされたスプリットに対して第１のシミュレーション・プロセスを実行するステップと、第１のチェックポインティングされたスプリットから開始する第２のシミュレーション・プロセスを第１のシミュレーション・プロセスと並行して実行するステップと、テスト・カバレッジのカバレッジ・パス上の全ての刺激が実行されるまで、第１の複数のチェックポインティングされたスプリットに対する第１のシミュレーション・プロセスを続けるステップと、テスト・カバレッジのカバレッジ・パス上の全ての刺激が実行されるまで、第２の複数のチェックポインティングされたスプリットに対する第２のシミュレーション・プロセスを続けるステップと、第１の複数のチェックポインティングされたスプリット及び第２の複数のチェックポインティングされたスプリットのそれぞれの状態及び位置を第１のシミュレーション・プロセスに通信するステップと、を含む。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の実施形態による、回路１３０を検証する（すなわち、テストする）ためのテスト・システム１００を示す。より具体的には、１つの実施形態において、回路１３０の検証は、以下のように進行する。刺激ジェネレータ１１０は、回路１３０及びモニタ１２０に対しての刺激を生成する。回路１３０は、入力として刺激ジェネレータ１１０から刺激を受け取り、チェッカ１４０への出力信号を生成する。モニタ１２０は、回路１３０に与えられた刺激を記録する。１つの実施形態において、モニタ１２０は、刺激をチェッカ１４０に送出する前に、それを有用な形式に変換する。チェッカ１４０は、モニタ１２０によって提供された情報から予想結果を算出し、回路１３０からの出力信号と算出された予想結果とを比較する。回路１３０からの出力信号と算出された予想結果との間の差が、回路１３０におけるエラーの可能性を示す。
【００１０】
１つの実施形態において、チェッカ１４０はまた、（刺激カバレッジ・パスと呼ばれる）予め指定された刺激のセットによって回路１３０がテストされたかどうかを常時監視し、それに応じてカバレッジ・モニタ１５０に通知する。カバレッジ・モニタ１５０は、回路１３０上で実行された刺激カバレッジ・パスを常時監視し、実行された刺激カバレッジ・パスを（刺激カバレッジ目標と呼ばれる）予め指定された刺激カバレッジ・パスのセットと比較する。１つの実施形態において、刺激カバレッジ目標の全ての刺激カバレッジ・パスが実行されたときに、カバレッジ・モニタ１５０は、検証エンジニアに知らせ、その結果、検証エンジニアは、検証プロセスを停止させることができる。
【００１１】
１つの実施形態において、回路１３０の検証は、コンピュータ（図示せず）内でシミュレーション・プログラムを実行することによってシミュレートされる。より具体的には、刺激ジェネレータ１１０、モニタ１２０、回路１３０、チェッカ１４０、及びカバレッジ・モニタ１５０は、全てがコンピュータ内でシミュレーション・プログラムを実行することによってシミュレートされる。そのため、コンピュータ・シミュレーションとの関係においては、回路１３０は、回路設計１３０と言うことができ、テスト・システム１００は、テスト・シミュレーション環境１００と言うことができる。同様に、コンピュータ・シミュレーションとの関係においては、刺激ジェネレータ１１０、モニタ１２０、チェッカ１４０、及びカバレッジ・モニタ１５０も、それぞれ刺激ジェネレータ・プロセス１１０、モニタ・プロセス１２０、チェッカ・プロセス１４０、及びカバレッジ・モニタ・プロセス１５０と言うことができる。
【００１２】
コンピュータ内でシミュレーション・プログラムを実行することによって、テスト・シミュレーション環境１００と同様の複数のテスト・シミュレーション環境を逐次的に又は同時にシミュレートすることができることに注目すべきである。
【００１３】
図２は、本発明の実施形態による、図１の刺激ジェネレータ・プロセス１１０についての刺激樹形図２００を示す。刺激樹形図２００は、回路設計１３０を検証するために作成することができる。例証のために、刺激樹形図２００は、１５個の刺激、すなわち、刺激Ｓ、Ａ、Ｂ、Ｃ、・・・、及びＮを表す１５個の円を含む。
【００１４】
例証のために、回路設計１３０は、２つの２進入力Ｘ及びＹ（図示せず）と、１つの２進出力Ｚ（図示せず）とを有する逐次的なデジタル回路であると仮定する。その結果、例として、ルート刺激Ｓは、それぞれ入力Ｘ及びＹに適用することができる（１，１）とすることができる（すなわち、Ｘ＝１及びＹ＝１）。刺激Ａは、それぞれ入力Ｘ及びＹに適用することができる（１，０）とすることができる（すなわち、Ｘ＝１及びＹ＝０）。刺激Ｂは、それぞれ入力Ｘ及びＹに適用することができる（０，０）とすることができる（すなわち、Ｘ＝０及びＹ＝０）。刺激Ｃは、再び、それぞれ入力Ｘ及びＹに適用することができる（１，０）（すなわち、刺激Ａと同じ）とすることができ（すなわち、Ｘ＝１及びＹ＝０）、以下同様である。
【００１５】
刺激Ａから刺激Ｂへの矢印は、刺激Ａが刺激Ｂの前に回路設計１３０に適用されることを示す。同様に、刺激Ａから刺激Ｆへの矢印は、刺激Ａが刺激Ｆの前に回路設計１３０に適用されることを示し、刺激樹形図２００における他の矢印についても以下同様である。
【００１６】
６つの刺激Ｓ、Ａ、Ｂ、Ｃ、Ｄ、及びＥの全てが次々にその順番で回路設計１３０に適用されたときに、刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅが実行され、テスト・ランが実行されたと言う。同様に、５つの刺激Ｓ、Ａ、Ｆ、Ｈ、及びＪの全てが次々にその順番で回路設計１３０に適用されたときに、刺激カバレッジ・パスＳ、Ａ、Ｆ、Ｈ、及びＪが実行され、テスト・ランが実行されたと言い、以下同様である。
【００１７】
刺激樹形図２００は、５つの異なる刺激カバレッジ・パス、すなわち、Ｓ−Ａ−Ｂ−Ｃ−Ｄ−Ｅ、Ｓ−Ａ−Ｆ−Ｇ−Ｉ−Ｌ、Ｓ−Ａ−Ｆ−Ｇ−Ｉ−Ｍ、Ｓ−Ａ−Ｆ−Ｈ−Ｊ、及びＳ−Ａ−Ｆ−Ｈ−Ｋ−Ｎを含む。５つの刺激カバレッジ・パスの全てが実行されたときに、回路設計１３０の検証についての刺激カバレッジ目標が達成されたと言える。そのため、刺激カバレッジ目標を達成するためには、少なくとも５つのテスト・ランを実行しなければならない。５つの刺激カバレッジ・パスの各々がシーケンスＳ−Ａから始まることが分かる。そのため、シーケンスＳ−Ａは、初期化シーケンスと呼ぶことができる。
【００１８】
刺激樹形図２００は、もっと大きな刺激カバレッジ空間のほんの一部とすることができることに注目すべきである。例えば、刺激シーケンスＳ−Ａ−Ａ及びＳ−Ａ−Ｂ−Ａ（図示せず）は、刺激カバレッジ空間の２つの可能な刺激カバレッジ・パスであるが、刺激樹形図２００には属していない。これは、検証エンジニアがこれらの２つの刺激カバレッジ・パスに沿っては回路設計１３０をテストしないことを選択したためであろう。検証エンジニアがそのようにする理由は、回路設計１３０がこれらの２つの刺激カバレッジ・パスに沿って実行するように設計されていないためであるかもしれない。換言すれば、上記の実施形態においては、刺激樹形図２００は、刺激カバレッジ空間の一部のみを構成する。代替的な実施形態において、刺激樹形図２００は、刺激カバレッジ空間全体を構成する。
【００１９】
図３は、本発明の実施形態による、図２の刺激樹形図２００を実行するための刺激プログラム例３００を示す。１つの実施形態において、刺激プログラム３００は、図１のテスト・シミュレーション環境１００を作成するためのシミュレーション・プログラムに含めることができる。刺激プログラム３００において、後に「；」が続いた文字「Ａ」は、実行されるときに、回路設計１３０（図１）への刺激Ａの生成をシミュレートするコンピュータ命令Ａを表す。これに続いて、生成され、回路設計１３０（図１）に対して与えられた刺激Ａに応答してテスト・シミュレーション環境１００（図１）が動作する。より具体的には、この動作は、刺激Ａに応答した回路設計１３０による出力信号の生成をシミュレートすること、刺激Ａをチェッカ１４０に転送する際のモニタ１２０の動作をシミュレートすること、刺激Ａに応答した回路設計１３０の出力と予想値とを比較する際のチェッカ１４０の作動をシミュレートすること、等を含む。
【００２０】
例証として、刺激プログラム３００は、４つのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０、３２０、３３０、及び３４０を有し、それらの各々がコンピュータによって実行されるときに、チェックポインティング・イベント（詳細に後述される）を生じさせる。刺激樹形図２００（図２）においては、それぞれ刺激Ａ、Ｆ、Ｉ、及びＨの直後に４つのスプリット２１０、２２０、２３０、及び２４０があり、４つのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０、３２０、３３０、及び３４０は、それぞれ４つのスプリット２１０、２２０、２３０、及び２４０（図２）に対応する。刺激プログラム３００の実行は後述される。
【００２１】
図４は、本発明の実施形態による、図１のテスト・シミュレーション環境１００を用いた検証環境４００を示す。より具体的には、検証環境４００は、テスト・マネージャ４１０と、チェックポイント・マネージャ４２０と、チェックポイント・キュー４３０と、Ｎ個のテスト・シミュレーション環境４４０．１、．．．、４４０．Ｎとを含み、ここで、Ｎは正の整数である。Ｎ個のテスト・シミュレーション環境４４０．１、．．．、４４０．Ｎの各々は、図１のテスト・シミュレーション環境１００と同様である。
【００２２】
１つの実施形態において、検証環境４００は、コンピュータによってシミュレーション・プログラムを実行することにより作成される。このことは、テスト・マネージャ４１０及びチェックポイント・マネージャ４２０もまたコンピュータ・プロセスであることを意味する。
【００２３】
図１−図４を参照すると、１つの実施形態において、回路設計１３０の検証は、以下のように、刺激プログラム３００を用いて検証環境４００内で実行される（刺激プログラム３００の実行と呼ばれる）。第１に、テスト・マネージャ４１０は、刺激プログラム３００の直前までシミュレーション・プログラムを実行する。次に、テスト・マネージャ４１０は、制御をチェックポイント・マネージャ４２０に移す。それに応じて、チェックポイント・マネージャ４２０は、刺激プログラム３００（図３）の最初から実行を開始する第１のテスト・シミュレーション環境４４０．１（図４）に分岐する（すなわち、これを作成する）。より具体的には、テスト・シミュレーション環境４４０．１は、命令Ｓ、次いで命令Ａ、次いでｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０を実行する。
【００２４】
１つの実施形態において、ｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０を実行する（図２のチェックポインティングされたスプリット２１０を実行すると呼ばれる）ときに、テスト・シミュレーション環境４４０．１は、以下を実行する。最初に、テスト・シミュレーション環境４４０．１は、テスト・シミュレーション環境４４０．１がｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０のところでチェックポインティングしていることをチェックポイント・マネージャ４２０に通知する。次に、テスト・シミュレーション環境４４０．１は、ｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０の２つの可能な結果、すなわち、（ｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０中に記述されている）ＴＲＵＥ及びＦＡＬＳＥをチェックポイント・マネージャ４２０に提供する。次に、テスト・シミュレーション環境４４０．１は、そのコンテキストを保存し、次いで終了する。
【００２５】
１つの実施形態において、テスト・シミュレーション環境４４０．１からｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０の２つの可能な結果であるＴＲＵＥ及びＦＡＬＳＥを受け取ることに応答して、チェックポイント・マネージャ４２０は、それぞれチェックポイント・キュー４３０内の第１の項目及び第２の項目として２つの可能な結果であるＴＲＵＥ及びＦＡＬＳＥを保存する。実例として、第１の項目は、「ＴＲＵＥ命令Ａ」とすることができ、第２の項目は、「ＦＡＬＳＥ命令Ａ」とすることができる。
【００２６】
１つの実施形態において、チェックポイント・マネージャ４２０は、使用可能な項目についてチェックポイント・キュー４３０をチェックし続け、チェックポイント・キュー４３０が第１の項目と第２の項目とを含むことを見出す。次に、チェックポイント・マネージャ４２０は、第２のテスト・シミュレーション環境４４０．２に分岐し、チェックポイント・キュー４３０の第１の項目（すなわち、「ＴＲＵＥ命令Ａ」）をテスト・シミュレーション環境４４０．２に与える。ここでは、チェックポイント・キュー４３０は、ＦＩＦＯ（先入れ先出し）原則で動作されると仮定される。すなわち、第１の項目は、第２の項目の前にチェックポイント・キュー４３０に入れられたので、したがって、第１の項目は、第２の項目の前に作用を受ける。
【００２７】
次に、それに応答して、テスト・シミュレーション環境４４０．２は、テスト・シミュレーション環境４４０．１によって保存されたコンテキストから開始して、命令Ｂ、Ｃ、Ｄ、及びＥを実行し、その後、終了する（すなわち、ＴＲＵＥパスに従う）。この時点で、刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅが実行されたことになり、テスト・ランが終了する。
【００２８】
次に、１つの実施形態において、チェックポイント・マネージャ４２０は、チェックポイント・キュー４３０をチェックし、チェックポイント・キュー４３０が依然として第２の項目（すなわち、「ＦＡＬＳＥ命令Ａ」）を含んでいることを見出す。次に、チェックポイント・マネージャ４２０は、第３のテスト・シミュレーション環境４４０．３に分岐し、チェックポイント・キュー４３０の第２の項目をテスト・シミュレーション環境４４０．３に与える。
【００２９】
次に、それに応答して、テスト・シミュレーション環境４４０．３は、テスト・シミュレーション環境４４０．１によって保存されたコンテキストから開始して、命令Ｆ、次いでｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３２０を実行し（すなわち、ＦＡＬＳＥパスに従う）、その後、終了する。
【００３０】
１つの実施形態において、テスト・シミュレーション環境４４０．３は、テスト・シミュレーション環境４４０．１がｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０を実行するのと同様の方法でｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３２０を実行する。その結果として、チェックポイント・キュー４３０は再び、それぞれ第３及び第４の項目、すなわち、「ＴＲＵＥ命令Ｆ」及び「ＦＡＬＳＥ命令Ｆ」を有する。
【００３１】
次に、チェックポイント・キュー４３０において第３及び第４の項目を見出したことに応答して、チェックポイント・マネージャ４２０は、（ｉ）命令Ｇを実行する（すなわち、ＴＲＵＥパスに従う）ための第４のテスト・シミュレーション環境４４０．４、及び（ｉｉ）命令Ｈを実行する（すなわち、ＦＡＬＳＥパスに従う）ための第５のテスト・シミュレーション環境４４０．５に分岐し、以下、５つの全ての刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅ、Ｓ−Ａ−Ｆ−Ｇ−Ｉ−Ｌ、Ｓ−Ａ−Ｆ−Ｇ−Ｉ−Ｍ、Ｓ−Ａ−Ｆ−Ｈ−Ｊ、及びＳ−Ａ−Ｆ−Ｈ−Ｋ−Ｎがテストされるまで、同様である。１つの実施形態において、バックグラウンドで実行されているテスト・マネージャ４１０は、この状況（すなわち、刺激カバレッジ目標の５つの全ての刺激カバレッジ・パスがテストされたこと）を認識し、次いで検証プロセスが完了したことを示す。
【００３２】
上述の実施形態においては、チェックポイント・マネージャ４２０は、先に作成されたテスト・シミュレーション環境の全てが終了した後でのみ、新しいテスト・シミュレーション環境に分岐する（すなわち、逐次的）。例えば、チェックポイント・マネージャ４２０は、第２のテスト・シミュレーション環境４４０．２が終了した後に、第３のテスト・シミュレーション環境４４０．３に分岐する。代替的な実施形態において、チェックポイント・マネージャ４２０は、先に作成された他のテスト・シミュレーション環境がまだ実行中でも、新しいテスト・シミュレーション環境に分岐することができる。例えば、第２のテスト・シミュレーション環境４４０．２がＴＲＵＥパス（すなわち、刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅ）に沿って実行している状態で、チェックポイント・マネージャ４２０は、ＦＡＬＳＥパス（すなわち、命令Ｆ）を実行するための第３のテスト・シミュレーション環境４４０．３に分岐することができる。別の例においては、第２のテスト・シミュレーション環境４４０．２がＴＲＵＥパス（すなわち、刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅ）に沿って実行している状態で、第３のテスト・シミュレーション環境４４０．３が終了した後に、チェックポイント・マネージャ４２０は、それぞれＴＲＵＥパス（すなわち、命令Ｇ）及びＦＡＬＳＥパス（すなわち、命令Ｈ）に沿って実行するための第４及び第５のテスト・シミュレーション環境４４０．４及び４４０．５に分岐することができる。
【００３３】
上述の実施形態においては、刺激樹形図２００内のスプリット毎に、１つのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令が用いられる。より具体的には、４つのスプリット２１０、２２０、２３０、及び２４０のそれぞれについて（図２）、４つのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０、３２０、３３０、及び３４０（図４）が用いられる。換言すれば、刺激樹形図２００内の全てのスプリットが、チェックポインティングされたスプリットである。代替的には、刺激樹形図２００内の全てのスプリットが、チェックポインティングされたスプリットであるとは限らない（すなわち、刺激樹形図２００において１つ、２つ、又は３つのみのチェックポイントが存在する場合がある）。例えば、スプリット２２０において、１つのみのチェックポイントが２２０（チェックポインティングされたスプリット２２０と呼ばれる）が存在する場合がある。これは、刺激プログラム３００において、３つのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０、３３０、及び３４０を３つの「ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ」命令で置き換えて、刺激プログラム５００（図５）を得ることに対応する。
【００３４】
図１−図５を参照すると、１つの実施形態において、刺激プログラム５００を用いた回路設計１３０の検証（刺激プログラム５００を実行することと呼ばれる）は、以下の態様を除けば、刺激プログラム３００を実行することと同様である。このような態様の１つにおいては、刺激プログラム５００（図５）の“ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ”命令５１０、５３０、及び５４０のいずれかを実行するときに、テスト・シミュレーション環境は、以下を実行する。最初に、テスト・シミュレーション環境は、ＴＲＵＥか又はＦＡＬＳＥのいずれかのランダム・ブール値を生成する。次に、ランダムに生成された値に基づいて、テスト・シミュレーション環境は、対応するパスに沿って実行することになる。
【００３５】
例えば、テスト・シミュレーション環境は、“ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ”命令５１０（図５）を実行していると仮定する。テスト・シミュレーション環境によって生成された、ランダムに生成された値がＴＲＵＥである場合には、テスト・シミュレーション環境は、ＴＲＵＥパス（すなわち、刺激カバレッジ・パスＢ−Ｃ−Ｄ−Ｅ）に沿って実行することになる。テスト・シミュレーション環境によって生成された、ランダムに生成された値がＦＡＬＳＥである場合には、テスト・シミュレーション環境は、ＦＡＬＳＥパスを実行する（すなわち、命令Ｆ、次いでｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３２０を実行する）ことになる。テスト・シミュレーション環境は、テスト・シミュレーション環境４４０．１が上述のｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０（図３）を実行する方法と同様の方法で刺激プログラム５００（図５）のｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３２０を実行することになる。
【００３６】
１つの実施形態において、複数のテスト・シミュレーション環境が、刺激樹形図２００（図２）の同じ又は異なる刺激カバレッジ・パスに沿って刺激プログラム５００（図５）を逐次的に又は非逐次的に実行することができる。非逐次的な実行の例としては、ある瞬間を仮定すると、テスト・マネージャ４１０によって作成され、命令Ｓから開始されたあるテスト・シミュレーション環境は、命令Ｃを実行している（このテスト・シミュレーション環境は、命令Ａの直後の“ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ”命令５１０を実行しているときにＴＲＵＥ値を生成したので、ＴＲＵＥパスに従った）。
【００３７】
同時に、テスト・マネージャ４１０によって作成され、命令Ｓから開始された別のテスト・シミュレーション環境は、命令Ｅを実行している（このテスト・シミュレーション環境もまた、命令Ａの直後の“ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ”命令５１０を実行しているときにＴＲＵＥ値を生成したので、同じＴＲＵＥパスに従った）。
【００３８】
同時に、チェックポイント・マネージャ４２０によって作成され、命令Ｇから開始されたさらに別のテスト・シミュレーション環境は、命令Ｉを実行している（このテスト・シミュレーション環境には、チェックポイント・マネージャ４２０によってチェックポイント・キュー４３０（図４）からのＴＲＵＥ項目が与えられたので、命令ＩへのＴＲＵＥパスに従った）。
【００３９】
同時に、チェックポイント・マネージャ４２０によって作成され、命令Ｈから開始されたさらに別のテスト・シミュレーション環境は、命令Ｋを実行している（このテスト・シミュレーション環境には、チェックポイント・マネージャ４２０によってチェックポイント・キュー４３０からのＦＡＬＳＥ項目が与えられたので、ＦＡＬＳＥパスに従い、次いで命令Ｈの直後の“ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ”命令５４０を実行しているときにＦＡＬＳＥ値を生成したので、命令ＫへのＦＡＬＳＥパスに従った）。
【００４０】
１つの実施形態において、刺激カバレッジ目標がまだ達成されていない場合には、テスト・マネージャ４１０は、刺激プログラム５００（図５）の命令Ｓの実行から始まる新しいテスト・シミュレーション環境を作成し続ける。
【００４１】
図６は、本発明の実施形態による、図４の検証環境４００を用いたチェックポインティングの利点を示すプロット６００を示す。より具体的には、線６１０は、刺激樹形図２００（図２）にチェックポイントが用いられていない事例を表す。換言すれば、この事例に用いられた刺激プログラムは、４つの全てのｆｏｒｋ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ命令３１０、３２０、３３０、及び３４０が４つの「ｉｆ＿ｒａｎｄｏｍ＿ｂｏｏｌｅａｎ（）＝ＴＲＵＥ」命令によって置き換えられていることを除けば、刺激プログラム３００（図３）と同様である。線６２０は、刺激樹形図２００（図２）内のスプリット２２０に１つのチェックポイントのみが存在する事例を表す。換言すれば、刺激プログラム５００（図５）が用いられる。線６３０は、刺激樹形図２００（図２）の４つの全てのスプリット２１０、２２０、２３０、及び２４０にチェックポイントが存在する事例を表す。換言すれば、刺激プログラム３００（図３）が用いられる。
【００４２】
図６の、プロット６００から、刺激樹形図２００（図２）の４つの全てのスプリット２１０、２２０、２３０、及び２４０におけるチェックポインティングが、最小時間（約４，０００ｍｓ）で刺激カバレッジ目標を達成することを助ける一方で、チェックポインティングが全くない場合は、同じ刺激カバレッジ目標を達成するために最大時間（約３５，０００ｍｓ）を必要とすることが判る。３つの異なる刺激プログラム（これらのうちの２つは刺激プログラム３００及び５００である）を実行するために、同じコンピュータ（図示せず）が用いられると仮定している。
【００４３】
１つの実施形態において、図２の刺激Ｓ、Ａ、．．．、及びＪの各々は、（上記の実施形態において説明されたようなたった１つの入力ではなく）一連の入力を含むことができる。
【００４４】
上述の実施形態においては、図２を参照すると、スプリット２１０、２２０、２３０、及び２４０は、２方向のスプリットである（すなわち、２つのパスに分かれる）。一般に、刺激樹形図２００の各々のスプリットは、Ｍは１より大きい整数である、Ｍ方向のスプリットとすることができる。上述の実施形態においては、全てのスプリットについてＭ＝２である。一般に、刺激樹形図２００のスプリットは、Ｍについて必ずしも同じ値を有する必要はない。例えば、スプリット２１０は、上述のように２方向のスプリットとすることができるが、スプリット２４０は、３方向のスプリットすることができる。
【００４５】
チェックポイントが３方向のスプリット２４０のところに位置する（すなわち、スプリット２４０はチェックポインティングされたスプリットである）と仮定すると、命令３４０（図３）は、実行されるときにチェックポイント・キュー４３０（図４）内に３つの項目を配置する命令によって置き換えられることになる。それに応答して、チェックポイント・マネージャ４２０は、上述のような３方向のスプリット２４０から分岐する３つのパスに沿って実行するために３つのテスト・シミュレーション環境を作成することになる。
【００４６】
代替的に、３方向のスプリット２４０のところには、チェックポイントが位置していない（すなわち、スプリット２４０はチェックポインティングされていないスプリットである）と仮定すると、命令３４０は、実行されるときに３つの可能な値（例えば、１、２、及び３）のうちの１つをランダムに生成する命令によって置き換えられ、次いでランダムに生成された値に対応する、３つのパスのうちの１つに従うものとなる。
【００４７】
図７は、本発明の実施形態による、回路設計１３０（図１）を検証するために用いられるコンピュータ・システム９０を示す。コンピュータ・システム９０は、プロセッサ９１と、プロセッサ９１に結合された入力デバイス９２と、プロセッサ９１に結合された出力デバイス９３と、各々がプロセッサ９１に結合されたメモリ・デバイス９４及び９５とを含む。入力デバイス９２は、とりわけ、キーボード、マウス等とすることができる。出力デバイス９３は、とりわけ、プリンタ、プロッタ、コンピュータ・スクリーン、磁気テープ、リムーバブル・ハード・ディスク、フロッピー・ディスク等とすることができる。メモリ・デバイス９４及び９５は、とりわけ、ハード・ディスク、フロッピー・ディスク、磁気テープ、コンパクト・ディスク（ＣＤ）又はデジタル・ビデオ・ディスク（ＤＶＤ）のような光記憶装置、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、読み取り専用メモリ（ＲＯＭ）等とすることができる。メモリ・デバイス９５は、コンピュータ・コード９７を含む。コンピュータ・コード９７は、回路設計１３０（図１）を検証するためのアルゴリズムを含む。プロセッサ９１は、コンピュータ・コード９７を実行する。メモリ・デバイス９４は、入力データ９６を含む。入力データ９６は、コンピュータ・コード９７によって必要とされる入力を含む。出力デバイス９３は、コンピュータ・コード９７からの出力を表示する。メモリ・デバイス９４及び９５のいずれか又はその両方（或いは、図７に示されていない１つ又は複数の付加的なメモリ・デバイス）は、内部に組み込まれたコンピュータ読み取り可能プログラム・コードを有し、及び／又は内部に格納された他のデータを有する、コンピュータ使用可能媒体（或いは、コンピュータ読み取り可能媒体又はプログラム記憶装置）として使用することができ、ここで、コンピュータ読み取り可能プログラム・コードは、コンピュータ・コード９７を含む。一般的に、コンピュータ・システム９０のコンピュータ・プログラム（或いは代替的に製造物品）は、前述のコンピュータ使用可能媒体（又は前述のプログラム記憶装置）を含むことができる。
【００４８】
従って、本発明は、コンピュータ読み取り可能コードをコンピュータ・システム９０に統合することを含む、計算インフラストラクチャを配備するためのプロセスを開示し、ここで、コンピュータ・システム９０と組み合わされたコードは、回路設計１３０（図１）を検証するための方法を実行することが可能である。
【００４９】
図７は、ハードウェア及びソフトウェアの特定の構成としてコンピュータ・システム９０を示すが、当業者に公知の如何なる構成のハードウェア及びソフトウェアも、図７の特定のコンピュータ・システム９０と関連して上述の目的のために利用することができる。例えば、メモリ・デバイス９４及び９５は、別々のメモリ・デバイスではなく単一のメモリ・デバイスの一部とすることができる。
【００５０】
上述の実施形態においては、（Ｓ−Ａを実行する）第１のテスト・シミュレーション環境４４０．１及び（Ｂ−Ｃ−Ｄ−Ｅを実行する）第２のテスト・シミュレーション環境４４．２は、刺激カバレッジ・パスＳ−Ａ−Ｂ−Ｃ−Ｄ−Ｅを実行する第１のシミュレーション・プロセスとみなすことができる。同様に、（Ｆを実行する）第３のテスト・シミュレーション環境４４０．３、（Ｇ−Ｉを実行する）第４のテスト・シミュレーション環境４４０．４、及び（Ｍを実行する）別のテスト・シミュレーション環境は、刺激カバレッジ・パスＦ−Ｇ−Ｉ−Ｍ（すなわち、Ａから）を実行する第２のシミュレーション・プロセスとみなすことができる。
【００５１】
第２のシミュレーション・プロセスは、Ｆ及びＩ直後の２つのチェックポインティングされたスプリットに遭遇することに注目すべきである。第２のシミュレーション・プロセスが遭遇するチェックポインティングされたスプリットの各々において、第２のシミュレーション・プロセスは、上述のようにチェックポイント・マネージャ４２０（図４）と通信し、その結果、チェックポインティングされたスプリットの他のパスを探索するために新しいプロセスが作成されることができる。例えば、Ｆの直後には、第２のシミュレーション・プロセスはＧに続く。第２のシミュレーション・プロセスによって提供された情報から、チェックポイント・マネージャ４２０は、Ｈに進むために別のプロセス（すなわち、上述の第５のテスト・シミュレーション環境４４０．５）を作成する。
【００５２】
例えば、Ｆの直後には、第２のシミュレーション・プロセスがチェックポイント・マネージャ４２０に提供する情報は、チェックポインティングされたスプリットがどこに存在するかという命令（すなわち、チェックポインティングされたスプリットの位置、これはＦである）と、残りのパスの値（すなわち、チェックポインティングされたスプリットの状態、これはＦＡＬＳＥである）とを含む。
【００５３】
第１のシミュレーション・プロセスは、第２のシミュレーション・プロセスと同様に動作する。これは、Ａの直後から始まり、第１のシミュレーション・プロセスはチェックポインティングされたスプリットには遭遇しない。１つの実施形態において、チェックポイント・マネージャ４２０は、第１のシミュレーション・プロセスの一部である。その場合、第２のシミュレーション・プロセスは、第２のシミュレーション・プロセスがそのパス上で遭遇する各々のチェックポインティングされたスプリットについての情報を第１のシミュレーション・プロセスに提供する。換言すれば、第１のシミュレーション・プロセスは、逐次的に又は同時に実行することができる全てのシミュレーション・プロセスを制御する。
【００５４】
刺激Ｓが、回路設計１３０（図１）のランダム・シード構成とみなされることに注目すべきである。
【００５５】
本明細書において本発明の特定の実施形態を例証の目的のために説明したが、当業者には多くの修正及び変更が明らかとなるであろう。従って、添付の特許請求の範囲は、本発明の真の主旨及び範囲の中に含まれるこうした全ての修正及び変更を含むことが意図される。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態によるテスト・システム（テスト・シミュレーション環境）を示す。
【図２】本発明の実施形態による、図１のテスト・シミュレーション環境の刺激ジェネレータについての刺激樹形図を示す。
【図３】本発明の実施形態による、図２の刺激樹形図を実行するための刺激プログラムを示す。
【図４】本発明の実施形態による、図１のテスト・シミュレーション環境を使用する検証環境を示す。
【図５】本発明の実施形態による、図２の刺激樹形図を実行するための別の刺激プログラムを示す。
【図６】本発明の実施形態による、図４の検証環境を用いたチェックポインティングの利点を示す。
【図７】本発明の実施形態による、図１のテスト・シミュレーション環境をシミュレートするためのコンピュータ・システムを示す。
【符号の説明】
【００５７】
９０：コンピュータ・システム
１００：テスト・システム
２００：樹形刺激図
２１０、２２０、２３０、２４０：スプリット
３００、５００：刺激プログラム
４００：検証環境
６００：チェックポインティングの利点を示すプロット
【図１】
2009510554.tif 000003
【図２】
2009510554.tif 000004
【図３】
2009510554.tif 000005
【図４】
2009510554.tif 000006
【図５】
2009510554.tif 000007
【図６】
2009510554.tif 000008
【図７】
2009510554.tif 000009
【国際調査報告】
2009510554.tif 000010
2009510554.tif 000011
2009510554.tif 000012