(57)【要約】【課題】効率的な論理シミュレーションを行うことができるようにする。【解決手段】本発明の論理シミュレータは、複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成し、テストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成し、各トランザクションレベルのスティミュラスを論理回路に入力可能な各ピンレベルのスティミュラスに変換し、各ピンレベルのスティミュラスに基づく論理回路のピン動作を監視し、論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、監視部の指示に従い論理回路のピン動作を時系列的に記憶し、論理回路のピン動作にエラーが発生したと検出された場合、論理回路のピン動作にエラーが発生したテストシナリオに基づく論理回路に対する論理シミュレーションを終了し、他のテストシナリオに基づく論理回路に対する論理シミュレーションを開始するように制御することができる。【選択図】  図３
2010067270.tif 000002
【特許請求の範囲】
【請求項１】
複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成部と、
前記テストシナリオ生成部によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行部と、
前記発行部によって生成される各前記トランザクションレベルのスティミュラスを前記論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換部と、
前記変換部により変換される各前記ピンレベルのスティミュラスに基づく前記論理回路のピン動作を監視する監視部と、
前記論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、前記監視部の指示に従い、前記論理回路のピン動作を時系列的に記憶する記憶部と、
前記監視部によって前記論理回路のピン動作にエラーが発生したと検出された場合、前記論理回路のピン動作にエラーが発生したテストシナリオに基づく前記論理回路に対する論理シミュレーションを終了し、前記テストシナリオ生成部によって生成される他のテストシナリオに基づく前記論理回路に対する論理シミュレーションを開始するように制御する制御部とを備えることを特徴とする論理シミュレータ。
【請求項２】
前記監視部によって前記論理回路のピン動作に発生するエラーには、少なくとも、前記論理回路におけるデットロックとプロトコル違反が含まれることを特徴とする請求項１に記載の論理シミュレータ。
【請求項３】
前記記憶部は、前記監視部によって前記論理回路のピン動作にエラーが発生したと検出された場合、前記論理回路のピン動作に関するエラー情報、および前記論理回路のピン動作にエラーが発生した時刻を記憶することを特徴とする請求項１に記載の論理シミュレータ。
【請求項４】
前記変換部により変換される前記ピンレベルのスティミュラスに基づく前記論理回路のピン動作に対してレスポンスするレスポンダ部と、
前記論理回路と等価な等価回路を有し、前記レスポンダ部から供給される前記論理回路による演算結果と前記等価回路による演算結果とが一致するか否かを判定する比較判定部をさらに備え、
前記比較判定部によって前記論理回路による演算結果と前記等価回路による演算結果とが不一致であると判定された場合、前記制御部は、前記論理回路による演算結果と前記等価回路による演算結果とが不一致であるテストシナリオに基づく前記論理回路に対する論理シミュレーションを終了し、前記テストシナリオ生成部によって生成される他のテストシナリオに基づく前記論理回路に対する論理シミュレーションを開始するように制御することを特徴とする請求項１に記載の論理シミュレータ。
【請求項５】
前記記憶部は、前記論理回路による演算結果と前記等価回路による演算結果との不一致が発生した時刻と、前記論理回路による演算結果と前記等価回路による演算結果との不一致である場合における前記論理回路の入出力に関する情報を記憶することを特徴とする請求項４に記載の論理回路シミュレータ。
【請求項６】
テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがカバレッジしきい値に達したか否かを示すカバレッジ情報を記憶するカバレッジ記憶部をさらに備え、
前記制御部は、前記カバレッジ記憶部によって記憶される前記カバレッジ情報に基づいて、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがしきい値に達したか否かを判定し、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがしきい値に達したと判定するまで、同一のテストシナリオに基づくトランザクションレベルのスティミュラスを順次生成するように前記生成部を制御することを特徴とする請求項１に記載の論理シミュレータ。
【請求項７】
前記制御部は、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがしきい値に達したと判定した場合、他のテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成するように前記生成部を制御することを特徴とする請求項６に記載の論理シミュレータ。
【請求項８】
前記カバレッジしきい値は、テストシナリオごとに固有であるか、または複数テストシナリオ間で同一であることを特徴とする請求項６に記載の論理シミュレータ。
【請求項９】
前記記憶部は、前記論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、前記監視部の指示に従い、前記論理回路のピン動作をテストシナリオごとに割り当てられる複数の記憶ファイルを用いて時系列的に記憶することを特徴とする請求項１に記載の論理シミュレータ。
【請求項１０】
前記監視部によって前記論理回路のピン動作にエラーが発生したと検出された場合、前記監視部は、前記論理回路のピン動作にエラーが発生したテストシナリオに割り当てられるすべての前記記憶ファイルをクローズすることを特徴とする請求項９に記載の論理シミュレータ。
【請求項１１】
複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成ステップと、
前記テストシナリオ生成ステップの処理によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行ステップと、
前記発行ステップの処理によって生成される各前記トランザクションレベルのスティミュラスを前記論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換ステップと、
前記変換ステップの処理により変換される各前記ピンレベルのスティミュラスに基づく前記論理回路のピン動作を監視する監視ステップと、
前記論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、前記監視部の指示に従い、前記論理回路のピン動作を時系列的に記憶する記憶ステップと、
前記監視ステップの処理によって前記論理回路のピン動作にエラーが発生したと検出された場合、前記論理回路のピン動作にエラーが発生したテストシナリオに基づく前記論理回路に対する論理シミュレーションを終了し、前記テストシナリオ生成部によって生成される他のテストシナリオに基づく前記論理回路に対する論理シミュレーションを開始するように制御する制御ステップとを含むことを特徴とする論理回路検証方法。
【請求項１２】
複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成ステップと、
前記テストシナリオ生成ステップの処理によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行ステップと、
前記発行ステップの処理によって生成される各前記トランザクションレベルのスティミュラスを前記論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換ステップと、
前記変換ステップの処理により変換される各前記ピンレベルのスティミュラスに基づく前記論理回路のピン動作を監視する監視ステップと、
前記論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、前記監視部の指示に従い、前記論理回路のピン動作を時系列的に記憶する記憶ステップと、
前記監視ステップの処理によって前記論理回路のピン動作にエラーが発生したと検出された場合、前記論理回路のピン動作にエラーが発生したテストシナリオに基づく前記論理回路に対する論理シミュレーションを終了し、前記テストシナリオ生成部によって生成される他のテストシナリオに基づく前記論理回路に対する論理シミュレーションを開始するように制御する制御ステップとを含むことを特徴とする論理回路検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は論理シミュレータ、論理回路検証方法、および論理回路検証プログラムに係り、特に、トランザクションレベルでランダム検証を実施することができるようにした論理シミュレータ、論理回路検証方法、および論理回路検証プログラムに関する。
【背景技術】
【０００２】
テストベンチは、ハードウェア記述言語等で設計される論理回路ハードウェアを検証するためのファイルである。論理シミュレータは、テストベンチを用いて論理回路の機能やタイミングを検証する。具体的には、論理シミュレータは、検証対象である論理回路のモデルに検証用テストパターンを入力して検証用テストパターンに基づく論理回路の応答を観測することにより、論理回路の動作を検証する。
【０００３】
論理シミュレータを用いた論理回路の検証においては、論理シミュレータは、検証用テストパターンを効率よく自動的に生成（作成）することが重要となる。そのため、論理シミュレータを用いた論理回路の検証においては、一般的に「ランダム検証」と称される検証が用いられる。「ランダム検証」とは、論理シミュレータが乱数を利用して検証用のテストパターンを自動的に生成して論理回路を検証する検証方法である。ランダム検証を用いることにより、検証用のテストパターンの生成時間（作成時間）と生成工程（作成工程）を大幅に短縮することができる。また、ランダム検証を用いることにより、論理シミュレータは、予想困難な組み合わせのテストパターンを生成することができ、論理シミュレータが検出困難なコーナーケースバグを検出する確率を上げることができる。
【０００４】
また、論理シミュレータによる検証の進捗状況などを示す指標として「機能カバレッジ」が用いられる。オペレータは、機能カバレッジを参照することで、検証対象である論理回路が有する機能の観点から論理回路の検証の完成度を知ることができる。
【０００５】
図１は、トランザクションレベルで制約付きのランダム検証を行う従来の論理シミュレータ１の内部の構成を表している。図１が示すように、論理シミュレータ１は、検証対象である論理回路２を検証する。論理シミュレータ１は、トランザクションレベルテストシナリオ生成部１１、ドライバ部１２、およびカバレッジ取得部１３を備える。
【０００６】
トランザクションテストシナリオ生成部１１は、論理回路２を検証するためのトランザクションレベルのテストシナリオを制約付きでランダムに生成し、生成されたトランザクションレベルのテストシナリオをドライバ部１２に出力する。ドライバ部１２は、トランザクションレベルのテストシナリオを、論理回路２に入力可能なピンレベルのテストシナリオに変換し、変換後のピンレベルのテストシナリオに基づくピンレベルのスティミュラスを論理回路２に出力する。カバレッジ取得部１３は、ドライバ部１２から論理回路２に出力されるピンレベルのスティミュラスおよび論理回路２の内部状態を取得する。
【０００７】
なお、論理シミュレータを用いた論理回路の検証に関連する技術として、次のような技術が知られている（例えば特許文献１参照）。特許文献１に提案される技術によれば、ハードウェア記述言語により設計されたモデルについての割込みの確認テストを実施するときには、割込み期待フラグをアサートした状態で、テストシナリオからバスモデルに対して異常応答の要求を示す異常応答発生フラグを送信する。そして、モデルにバス接続されるＣＰＵバスモデルでモデルからの割込み信号を受信した場合、割り込み期待フラグがアサートされていれば期待通りの割り込みであることを認識し、意図通りの割込み信号を受信したことを検証者に報知する。これにより、モデルに対する割込みの検証を容易かつ高精度に行うことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１１９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、図１が示す従来の論理シミュレータ１は、論理回路２のデットロック状態やプロトコル違反、あるいは検証シミュレーションの指定時間内の論理回路２のピンの動作を外部の記録装置に記録することができず、論理回路２がスティミュラスに対して正しく応答（レスポンス）しているか否かを判定することができず、また、論理回路２のピンの動作を監視することができない。そのため、図１が示す従来の論理シミュレータ１は、カバレッジ取得部１３からの情報に基づいて論理シミュレーションの進行を制御することはほとんど不可能である。従って、図１が示す従来の論理シミュレータ１は、効率的な論理シミュレーションを行うことはできず、不具合発生時の解析および論理シミュレーションの進行を適切に制御することはできなかった。
【００１０】
本発明は、このような状況に鑑みてなされたものであり、効率的な論理シミュレーションを行うことができる論理シミュレータ、論理回路検証方法、および論理回路検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の論理シミュレータは、上述した課題を解決するために、複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成部と、テストシナリオ生成部によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行部と、発行部によって生成される各トランザクションレベルのスティミュラスを論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換部と、変換部により変換される各ピンレベルのスティミュラスに基づく論理回路のピン動作を監視する監視部と、論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、監視部の指示に従い、論理回路のピン動作を時系列的に記憶する記憶部と、監視部によって論理回路のピン動作にエラーが発生したと検出された場合、論理回路のピン動作にエラーが発生したテストシナリオに基づく論理回路に対する論理シミュレーションを終了し、テストシナリオ生成部によって生成される他のテストシナリオに基づく論理回路に対する論理シミュレーションを開始するように制御する制御部とを備えることを特徴とする。
【００１２】
本発明の論理回路検証方法は、上述した課題を解決するために、複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成ステップと、テストシナリオ生成ステップの処理によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行ステップと、発行ステップの処理によって生成される各トランザクションレベルのスティミュラスを論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換ステップと、変換ステップの処理により変換される各ピンレベルのスティミュラスに基づく論理回路のピン動作を監視する監視ステップと、論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、監視部の指示に従い、論理回路のピン動作を時系列的に記憶する記憶ステップと、監視ステップの処理によって論理回路のピン動作にエラーが発生したと検出された場合、論理回路のピン動作にエラーが発生したテストシナリオに基づく論理回路に対する論理シミュレーションを終了し、テストシナリオ生成部によって生成される他のテストシナリオに基づく論理回路に対する論理シミュレーションを開始するように制御する制御ステップとを含むことを特徴とする。
【００１３】
本発明の論理回路検証プログラムは、上述した課題を解決するために、複数のピンを有する論理回路を検証するためのテストシナリオをランダムに生成するテストシナリオ生成ステップと、テストシナリオ生成ステップの処理によって生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成する発行ステップと、発行ステップの処理によって生成される各トランザクションレベルのスティミュラスを論理回路に入力可能な各ピンレベルのスティミュラスに変換する変換ステップと、変換ステップの処理により変換される各ピンレベルのスティミュラスに基づく論理回路のピン動作を監視する監視ステップと、論理回路に対する論理シミュレーションに指定されるシミュレーション時間内で、監視部の指示に従い、論理回路のピン動作を時系列的に記憶する記憶ステップと、監視ステップの処理によって論理回路のピン動作にエラーが発生したと検出された場合、論理回路のピン動作にエラーが発生したテストシナリオに基づく論理回路に対する論理シミュレーションを終了し、テストシナリオ生成部によって生成される他のテストシナリオに基づく論理回路に対する論理シミュレーションを開始するように制御する制御ステップとを含むことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、効率的な論理シミュレーションを行うことができる。
【図面の簡単な説明】
【００１５】
【図１】トランザクションレベルで制約付きのランダム検証を行う従来の論理シミュレータの内部の構成を示すブロック図。
【図２】本実施形態に係る論理シミュレータの内部の構成を示すブロック図。
【図３】図２の論理シミュレータにおける論理シミュレーション制御処理を説明するフローチャート。
【図４】図２の論理シミュレータのモニタ部における監視処理を説明するフローチャート。
【図５】図２の論理シミュレータのモニタ部における監視処理を説明するフローチャート。
【図６】図２の論理シミュレータにおける波形表示処理を説明するフローチャート。
【発明を実施するための形態】
【００１６】
以下、本実施形態について図面を参照しながら説明する。図２は、本実施形態に係る論理シミュレータ１０１の内部の構成を表している。図２が示すように、論理シミュレータ１は、主制御部１１１、トランザクションレベルテストシナリオ生成部１１２、トランザクション発行部１１３、ドライバ部１１４、レスポンダ部１１５、モニタ部１１６、比較判定部（スコアーボード部）１１７、カバレッジ取得部１１８、カバレッジ記憶部１１９、表示部１２０、入力部１２１、および外部記憶部２００を備える。
【００１７】
主制御部１１１は、論理シミュレータ１０１の全体の動作を統括的に制御する。具体的には、主制御部１１１は、論理シミュレータ１０１が論理回路３０１の検証を開始する場合、トランザクションレベルテストシナリオ生成部１１２に対してトランザクションレベルのテストシナリオの生成の開始を指示するテストシナリオ生成開始指示信号を生成し、生成されたテストシナリオ生成開始指示信号をトランザクションレベルテストシナリオ生成部１１２に出力する。また、主制御部１１１は、モニタ部１１６からの検出信号（論理回路３０１のデットロックやプロトコル違反を検出したか否かを示す検出信号）を取得する。主制御部１１１は、比較判定部１１７からの一致判定信号（論理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしたことを判定する信号）または不一致判定信号（理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしていないことを判定する信号）を取得する。さらに、主制御部１１１は、カバレッジ記憶部１１９からのカバレッジ情報を取得する。そして、主制御部１１１は、モニタ部１１６からの検出信号、比較判定部１１７からの一致判定信号または不一致判定信号、およびカバレッジ情報に基づいて、トランザクションレベルテストシナリオ生成部１１２に対して、トランザクションレベルのテストシナリオの発行のスキップ、中断、停止を制御し、論理シミュレータ１０１の全体の動作を管理する。
【００１８】
トランザクションレベルテストシナリオ生成部１１２は、論理回路３０１を検証するためのトランザクションレベルのテストシナリオを制約条件付きでランダムに生成し、生成されたトランザクションレベルのテストシナリオをトランザクション発行部１１３に出力する。なお、トランザクションレベルテストシナリオ生成部１１２がランダムにトランザクションレベルのテストシナリオを生成する際に付される制約条件は、例えば入力線が８ビットである場合に入力値が８０〜１２０となるようにトランザクションレベルのテストシナリオを生成するとの制約条件である。トランザクション発行部１１３は、トランザクションテストシナリオ生成部１１２からのトランザクションレベルのテストシナリオに基づくトランザクションレベルのスティミュラスを生成（発行）し、生成されたトランザクションレベルのスティミュラスをドライバ部１１４に出力する。
【００１９】
ドライバ部１１４は、トランザクション発行部１１３からのトランザクションレベルのスティミュラスを、論理回路３０１に入力可能なピンレベルのスティミュラスに変換し、変換後のピンレベルのスティミュラスを論理回路３０１に出力する。また、ドライバ部１１４は、変換前のトランザクションレベルのスティミュラスをレスポンダ部１１５と比較判定部１１７に出力する。
【００２０】
レスポンダ部１１５は、ドライバ部１１４からのトランザクションレベルのスティミュラスに基づいて論理回路３０１のアクティビティに対して模擬的にレスポンスするとともに、論理回路３０１からのピンレベルの出力信号をトランザクションレベルの出力信号に変換し、トランザクションレベルの出力信号（出力ストリーム）を比較判定部１１７に供給する。
【００２１】
モニタ部１１６は、論理回路３０１のピンに接続する。なお、論理回路３０１は、複数のピンを有する。モニタ部１１６は、論理回路３０１の動作を監視し、論理回路３０１のデットロックやプロトコル違反を検出する。モニタ部１１６が論理回路３０１のデットロックやプロトコル違反を検出した場合、モニタ部１１６は、モニタ部１１６に供給される論理回路３０１への入力信号（ピンレベルのスティミュラス）と論理回路３０１からの出力信号（ピンレベルの出力信号）に基づいて、論理回路３０１のデットロックやプロトコル違反を検出したことを示す検出信号を生成し、生成された検出信号を主制御部１１１に出力する。
【００２２】
モニタ部１１６は、外部記憶部２００内に少なくとも１つ以上の記憶ファイル（図２の場合、記憶ファイル２０１−１乃至記憶ファイル２０１−３により示される３つの記憶ファイル）を作成し、外部記憶部２００内の記憶ファイルのオープンとクローズを制御し、予め指定されたシミュレーション時間の枠内の論理回路３０１のピンの動作を記憶ファイルに時系列的に記憶させる。このとき、モニタ部１１６は、論理回路３０１のピン動作を非圧縮形式または圧縮形式で記憶ファイルに記憶させる。なお、外部記憶部２００に作成される記憶ファイルは、２つ以下でもよいし、４つ以上でもよい。
【００２３】
比較判定部（スコアーボード部）１１７は、等価回路１２２と比較器１２３を備える。等価回路１２２は、論理回路３０１において用いられるハードウェア記述言語よりも抽象度が高い言語を用いて、入出力部のプロトコルに時間概念を除外しつつ記述された回路である。等価回路１２２は、論理回路３０１と等価な回路であり、ビヘービアレベルの回路である。ドライバ部１１４からのトランザクションレベルのスティミュラスは、等価回路１２２に入力される。等価回路１２２は、ドライバ部１１４からのトランザクションレベルのスティミュラスに演算処理を施し、演算処理の結果を示す出力ストリームを比較器１２３に供給する。比較器１２３は、等価回路１２２からの出力ストリーム（データストリーム）と、レスポンダ部１１５からのトランザクションレベルの出力信号（データストリームとしての出力ストリーム）とを比較し、両者が一致するか否かを判定する。等価回路１２２からの出力ストリームと、レスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）とが一致した場合は、比較器１２３は、論理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしたと判定して一致判定信号を生成し、生成された一致判定信号を主制御部１１１に出力する。また、等価回路１２２からの出力ストリームと、レスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）とが一致しない場合は、比較器１２３は、論理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしていないと判定して不一致判定信号を生成し、生成された不一致判定信号を主制御部１１１に出力する。
【００２４】
カバレッジ取得部１１８は、ドライバ部１１４から論理回路３０１に入力されるピンレベルのスティミュラスと論理回路３０１の内部の状態を、モニタ部１１６から逐次取得する。カバレッジ記憶部１１９は、カバレッジ取得部１１８が取得するピンレベルのスティミュラスおよび論理回路３０１の内部の状態を、外部に出力可能なテキストファイル形式で時系列的に記憶する。なお、カバレッジ記憶部１１９が記憶する形式は、外部に出力可能な形式であればよく、テキストファイル形式以外の外部に出力可能な他の形式でもよい。カバレッジ記憶部１１９は、カバレッジ取得部１１８が取得するピンレベルのスティミュラスおよび論理回路３０１の内部の状態を記憶する度に、検証されたピンレベルのスティミュラスに対応する機能に基づいて、論理シミュレータによる検証の進捗状況などを示す指標としての「機能カバレッジ」をインクリメントする。カバレッジ記憶部１１９は、インクリメントされる機能カバレッジがカバレッジしきい値に達したか否かを示すカバレッジ情報を逐次更新し、最新のカバレッジ情報を主制御部１１１に出力する。
【００２５】
表示部１２０は波形表示器であり、例えば外部記憶部２００に格納される記憶ファイル（記憶ファイル２０１−１乃至２０１−３）に記憶される論理回路３０１のピンの動作を表示する。入力部１２１は、操作ボタンやキーボードなどからなる。外部記憶部２００は、例えばＨＤＤ（Hard Disc Drive）などにより構成される。
【００２６】
図３のフローチャートを参照して、図２の論理シミュレータ１０１における論理シミュレーション制御処理について説明する。なお、図２の論理シミュレーション制御処理は、オペレータが入力部１２１を操作することにより論理回路３０１に対する論理シミュレーション処理を開始するとの指示が受け付けられることで、開始される。また、モニタ部１１６における監視処理は、図２の論理シミュレーション制御処理と並列的に動作することから、図４および図５のフローチャートを用いて後述する。
【００２７】
動作１において、主制御部１１１は、トランザクションレベルテストシナリオ生成部１１２に対してトランザクションレベルのテストシナリオの生成の開始を指示するテストシナリオ生成開始指示信号を生成し、生成されたテストシナリオ生成開始指示信号をトランザクションレベルテストシナリオ生成部１１２に出力する。テストシナリオ生成開始指示信号には、複数のテストシナリオのうち第１番目のトランザクションレベルのテストシナリオの生成開始を指示する信号が含まれている。動作２において、トランザクションレベルテストシナリオ生成部１１２は、主制御部１１１からのテストシナリオ生成開始指示信号に基づいてテストシナリオの生成を開始する。すなわち、トランザクションレベルテストシナリオ生成部１１２は、複数のテストシナリオのうち第１番目のトランザクションレベルのテストシナリオを生成し、生成された第１番目のトランザクションレベルのテストシナリオをトランザクション発行部１１３に出力する。
【００２８】
動作３において、トランザクション発行部１１３は、トランザクションテストシナリオ生成部１１２からの第１番目のトランザクションレベルのテストシナリオを取得する。トランザクション発行部１１３は、第１番目のトランザクションテストシナリオに基づいてトランザクションレベルのスティミュラスを順次生成（発行）し、生成されたトランザクションレベルのスティミュラスを順次ドライバ部１１４に出力する。トランザクション発行部１１３が生成する各トランザクションレベルのスティミュラスは信号の束である。動作４において、ドライバ部１１４は、トランザクション発行部１１３からの各トランザクションレベルのスティミュラスをドライバ部１１４内のバッファに順次バッファリングしつつ、バッファにバッファリングされるトランザクションレベルのスティミュラスを論理回路３０１に入力可能なピンレベルのスティミュラスに変換する。なお、ドライバ部１１４内のバッファの容量が一杯である場合には、ドライバ部１１４は、トランザクション発行部１１３に対してトランザクションレベルのスティミュラスのドライバ部１１４への出力を一旦停止するように指示を出す。トランザクション発行部１１３は、ドライバ部１１４内のバッファに空きが出てドライバ部１１４からの出力要求を受け取るまでトランザクションレベルのスティミュラスの出力を一旦停止する。ドライバ部１１４は、変換後のピンレベルのスティミュラスを論理回路３０１に順次出力する。また、ドライバ部１１４は、変換前のトランザクションレベルのスティミュラスを順次レスポンダ部１１５と比較判定部１１７に出力する。
【００２９】
動作５において、主制御部１１１は、モニタ部１１６からの検出信号を取得する。モニタ部１１６からの検出信号には、論理回路３０１の演算処理においてデットロックやプロトコル違反を検出したことを示す検出信号と、論理回路３０１の演算処理においてデットロックやプロトコル違反を検出していないことを示す検出信号とが含まれる。動作６において、主制御部１１１は、論理回路３０１の演算処理においてデットロックやプロトコル違反を検出したか否かを示す検出信号に基づいて、論理回路３０１の演算処理にデットロックやプロトコル違反があったか否かを判定する。動作６において主制御部１１１が論理回路３０１の演算処理にデットロックやプロトコル違反があったと判定した場合、主制御部１１１は動作７で、論理回路３０１の演算処理におけるエラー情報（すなわち、論理回路３０１の演算処理におけるデットロックやプロトコル違反に関する情報）と、論理回路３０１の演算処理においてエラーが発生したエラー発生時刻を外部記憶部２００に記憶させる。外部記憶部２００は、主制御部１１１の制御に従い、論理回路３０１の演算処理におけるエラー情報と、論理回路３０１の演算処理においてエラーが発生したエラー発生時刻を記憶する。動作８において、主制御部１１１は、現在のテストシナリオに基づく論理回路３０１への論理シミュレーションにおいてエラーが発生したために現在のテストシナリオに基づくこれ以降の論理シミュレーションをしても無駄であることから、トランザクション発行部１１３、およびドライバ部１１４など制御して現在のテストシナリオに基づく論理シミュレーションを強制的に終了する。その後、処理は動作１４に進む。
【００３０】
動作６において制御部１１１が論理回路３０１の演算処理にデットロックやプロトコル違反はないと判定した場合、主制御部１１１は動作９で、比較判定部１１７から一致判定信号または不一致判定信号を取得する。なお、比較判定部１１７がドライバ部１１４からトランザクションレベルのスティミュラスを取得すると、比較判定部１１７の等価回路１２２は、トランザクションレベルのスティミュラスに基づく演算処理を行い、比較判定部１１７の比較器１２３は、等価回路１２２からの出力ストリームと、レスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）とを比較し、両者が一致するか否かを判定する。等価回路１２２からの出力ストリームと、レスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）とが一致した場合は、比較器１２３は、論理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしたと判定して一致判定信号を生成し、生成された一致判定信号を主制御部１１１に出力する。また、等価回路１２２からの出力ストリームと、レスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）とが一致しない場合は、比較器１２３は、論理回路３０１がドライバ部１１４からのスティミュラスに対して正しくレスポンスしていないと判定して不一致判定信号を生成し、生成された不一致判定信号を主制御部１１１に出力する。なお、一致判定信号と不一致判定信号には、比較判定部１１７に入力するドライバ部１１４からのトランザクションレベルのスティミュラスと、比較判定部１１７に入力するレスポンダ部１１５からのトランザクションレベルの出力信号（出力ストリーム）が含まれている。すなわち、一致判定信号と不一致判定信号には、論理回路３０１に入力される入力値と、論理回路３０１から出力される出力値が含まれる。なお、比較判定部１１７における比較判定処理は、図２の論理シミュレーション制御処理と並列的に実行される。
【００３１】
動作１０において、主制御部１１１は、比較判定部１１７からの一致判定信号または不一致判定信号に基づいて、論理回路３０１での演算結果と比較判定部１１７の等価回路１２２での演算結果に不一致があるか否かを判定する。動作１０において主制御部１１１が論理回路３０１での演算結果と比較判定部１１７の等価回路１２２での演算結果に不一致があると判定した場合、主制御部１１は動作１１で、論理回路３０１での演算結果と比較判定部１１７の等価回路１２２での演算結果に不一致が発生した不一致発生時刻と、論理回路３０１への入出力トランザクション（論理回路３０１に入力される入力値と、論理回路３０１から出力される出力値）を外部記憶部２００に記憶させる。外部記憶部２００は、主制御部１１１の制御に従い、不一致発生時刻と、論理回路３０１への入出力トランザクションを記憶する。その後、処理は動作８に進み、主制御部１１は、現在のテストシナリオに基づく論理シミュレーションを強制的に終了する。
【００３２】
動作１０において主制御部１１１が論理回路３０１での演算結果と比較判定部１１７の等価回路１２２での演算結果とが一致すると判定した場合、主制御部１１１は動作１２で、カバレッジ記憶部１１９からカバレッジ情報を取得する。なお、カバレッジ記憶部１１９は、図２の論理シミュレーション制御処理と並列的に、カバレッジ取得部１１８が取得するピンレベルのスティミュラスおよび論理回路３０１の内部の状態を記憶する度に、検証されたピンレベルのスティミュラスに対応する機能に基づいて、論理シミュレータによる検証の進捗状況などを示す指標としての「機能カバレッジ」をインクリメントする。主制御部１１１がカバレッジ記憶部１１９から取得するカバレッジ情報は、インクリメントされる機能カバレッジがカバレッジしきい値に達したか否かを示す情報である。なお、カバレッジしきい値は、論理シミュレータ１０１が行うそれぞれのテストシナリオごとに予め設定される。カバレッジしきい値はテストシナリオに依存する値であり、テストシナリオ間で異なる値でもよい。勿論、カバレッジしきい値をテストシナリオ間で同一にしてもよい。
【００３３】
動作１３において、主制御部１１１は、カバレッジ記憶部１１９から取得されるカバレッジ情報に基づいて、現在インクリメントされている機能カバレッジが現在のテストシナリオが有するカバレッジしきい値に達したか否かを判定する。具体的には、第１番目のトランザクションレベルのテストシナリオが有するカバレッジしきい値が９５である場合に、現在インクリメントされている機能カバレッジが７０であるときには、主制御部１１１は、現在インクリメントされている機能カバレッジが現在のテストシナリオが有するカバレッジしきい値に達していないと判定する。動作１３において主制御部１１１が現在インクリメントされている機能カバレッジが現在のテストシナリオが有するカバレッジしきい値に達していないと判定した場合、処理は動作３に戻り、現在のテストシナリオに基づいてトランザクションレベルのスティミュラスがトランザクションレベルテストテストシナリオ生成部１１２によって生成される。
【００３４】
一方、動作１３において主制御部１１１が現在インクリメントされている機能カバレッジが現在のテストシナリオが有するカバレッジしきい値に達したと判定した場合、主制御部１１１は現在のテストシナリオを用いた論理回路３０１の論理シミュレーションが終了したと認識し、動作１４ですべてのシナリオの論理シミュレーションを行ったか否かを判定する。動作１４において主制御部１１１がすべてのシナリオの論理シミュレーションを行っていないと判定した場合、主制御部１１１は動作１５で、生成するトランザクションレベルのテストシナリオ番号を１だけインクリメントする。具体的には、現在のトランザクションレベルのテストシナリオ番号が「１」である場合、主制御部１１１は、生成するトランザクションレベルのテストシナリオ番号を１だけインクリメントし、生成するトランザクションレベルのテストシナリオ番号を「１」から「２」にインクリメントする。
【００３５】
動作１６において、主制御部１１１は、トランザクションレベルテストシナリオ生成部１１２に対して、インクリメント後のテストシナリオ番号を有するトランザクションレベルのテストシナリオの生成の開始を指示するテストシナリオ生成開始指示信号を生成し、生成されたテストシナリオ生成開始指示信号をトランザクションレベルテストシナリオ生成部１１２に出力する。テストシナリオ生成開始指示信号には、複数のテストシナリオのうち、動作１５でインクリメントされた後のテストシナリオ番号のトランザクションレベルのテストシナリオの生成開始を指示する信号が含まれている。動作１７において、トランザクションレベルテストシナリオ生成部１１２は、主制御部１１１からのテストシナリオ生成開始指示信号に基づいてテストシナリオの生成を開始する。すなわち、トランザクションレベルテストシナリオ生成部１１２は、複数のテストシナリオのうち、インクリメント後のテストシナリオ番号を有するトランザクションレベルのテストシナリオを生成し、生成されたトランザクションレベルのテストシナリオをトランザクション発行部１１３に出力する。これにより、論理シミュレータ１０１は、すべてのテストシナリオの論理シミュレーションが終了するまで、複数のテストシナリオを順次生成することができる。その後、処理は動作３に進み、動作３以降の処理が繰り返し実行される。
【００３６】
一方、動作１４において主制御部１１１がすべてのシナリオの論理シミュレーションを行ったと判定した場合、主制御部１１１は動作１８で、論理シミュレータ１０１を制御し、論理回路３０１に対する論理シミュレーションを終了する。これにより、論理シミュレータ１０１の論理シミュレーションは終了する。
【００３７】
図４および図５のフローチャートを参照して、図３の論理シミュレーション制御処理と並列的に実行される、図２の論理シミュレータ１０１のモニタ部１１６における監視処理について説明する。
【００３８】
動作５１において、モニタ部１１６は、論理シミュレータ１０１が生成する現在のテストシナリオ番号のテストシナリオ用の記憶ファイルを外部記憶部２００内に作成し、記憶ファイルをオープンにする。具体的には、モニタ部１１６は、論理シミュレータ１０１が生成する現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３を外部記憶部２００内に作成し、第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンにする。例えば現在のテストシナリオ番号が「１」である場合、モニタ部１１６が外部記憶部２００内に作成する３つの記憶ファイルは、第１の記憶ファイル２０１−１−１、第２の記憶ファイル２０１−２−１、および第３の記憶ファイル２０１−３−１である。同様に、例えば現在のテストシナリオ番号が「２」である場合、モニタ部１１６が外部記憶部２００内に作成する３つの記憶ファイルは、第１の記憶ファイル２０１−１−２、第２の記憶ファイル２０１−２−２、および第３の記憶ファイル２０１−３−２である。なお、モニタ部１１６が外部記憶部２００内に作成する記憶ファイルは、２つ以下でもよいし、４つ以上でもよい。
【００３９】
動作５２において、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１に対して予め指定された（予め割り当てられた）シミュレーション時間の計時を開始する。動作５３において、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第１の記憶ファイル２０１−１に記憶させる。外部記憶部２００は、監視している論理回路３０１のピンが変化した時刻とその値を第１の記憶ファイル２０１−１に記憶する。動作５４において、モニタ部１１６は、論理回路３０１のデットロックやプロトコル違反を検出する。動作５４においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出しない場合、モニタ部１１６は動作５５で、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１に対して予め指定されたシミュレーション時間が経過したか否かを判定する。動作５５においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１に対して予め指定されたシミュレーション時間が経過していないと判定した場合、処理は動作５３に戻り、動作５３以降の処理が繰り返し実行される。これにより、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１に対して予め指定されたシミュレーション時間が経過するまで、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第１の記憶ファイル２０１−１に時系列的に記憶させることができる。このとき、モニタ部１１６は、論理回路３０１のピン動作を非圧縮形式または圧縮形式で記憶ファイルに記憶させる。モニタ部１１６が圧縮形式で論理回路３０１のピン動作を記憶ファイルに記憶されることにより、外部記憶部２００の限られた記憶容量を効率的に活用することができる。
【００４０】
動作５５においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１に対して予め指定されたシミュレーション時間が経過したと判定した場合、処理は動作５７に進み、動作５７においてモニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１をクローズする。一方、動作５４においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出した場合、モニタ部１１６は動作５６で、論理回路３０１のデットロックまたはプロトコル違反を検出したときのピン動作が記憶されている記憶ファイルを上書きできないようにするために、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をクローズする。具体的には、現在のテストシナリオ番号が「１」である場合、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１−１乃至第３の記憶ファイル２０１−３−１をクローズする。なお、現在のテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３がすべてクローズされる。すなわち、論理回路３０１のピン動作にエラーが発生したテストシナリオに割り当てられるすべての記憶ファイルがクローズされる。これにより、論理シミュレータ１０１が次に生成するテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンすることが可能となる。その後、処理は動作に進み、動作でモニタ部１１６は、論理シミュレータ１０１が次に生成するテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３を外部記憶部２００内に作成し、第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンにする。その後、処理は動作５２に進み、動作５２以降の処理が繰り返し実行される。
【００４１】
動作５８において、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２に対して予め指定された（予め割り当てられた）シミュレーション時間の計時を開始する。動作５９において、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第２の記憶ファイル２０１−２に記憶させる。外部記憶部２００は、監視している論理回路３０１のピンが変化した時刻とその値を第２の記憶ファイル２０１−２に記憶する。動作６０において、モニタ部１１６は、論理回路３０１のデットロックやプロトコル違反を検出する。動作６１においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出しない場合、モニタ部１１６は動作６１で、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２に対して予め指定されたシミュレーション時間が経過したか否かを判定する。動作６１においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２に対して予め指定されたシミュレーション時間が経過していないと判定した場合、処理は動作５９に戻り、動作５９以降の処理が繰り返し実行される。これにより、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２に対して予め指定されたシミュレーション時間が経過するまで、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第２の記憶ファイル２０１−２に時系列的に記憶させることができる。このとき、モニタ部１１６は、論理回路３０１のピン動作を非圧縮形式または圧縮形式で記憶ファイルに記憶させる。
【００４２】
動作６１においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２に対して予め指定されたシミュレーション時間が経過したと判定した場合、処理は動作６３に進み、動作６３においてモニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２をクローズする。一方、動作６０においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出した場合、モニタ部１１６は動作６２で、論理回路３０１のデットロックまたはプロトコル違反を検出したときのピン動作が記憶されている記憶ファイルを上書きできないようにするために、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２と第３の記憶ファイル２０１−３をクローズする。なお、第１の記憶ファイル２０１−１はすでに動作５７でクローズされていることから、再度クローズされない。具体的には、現在のテストシナリオ番号が「１」である場合、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第２の記憶ファイル２０１−２−１と第３の記憶ファイル２０１−３−１をクローズする。その後、処理は動作７３に進み、動作７３でモニタ部１１６は、論理シミュレータ１０１が次に生成するテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３を外部記憶部２００内に作成し、第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンにする。その後、処理は動作５２に進み、動作５２以降の処理が繰り返し実行される。
【００４３】
動作６４において、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３に対して予め指定された（予め割り当てられた）シミュレーション時間の計時を開始する。動作６５において、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第３の記憶ファイル２０１−３に記憶させる。外部記憶部２００は、監視している論理回路３０１のピンが変化した時刻とその値を第３の記憶ファイル２０１−３に記憶する。動作６６において、モニタ部１１６は、論理回路３０１のデットロックやプロトコル違反を検出する。動作６６においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出しない場合、モニタ部１１６は動作６７で、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３に対して予め指定されたシミュレーション時間が経過したか否かを判定する。動作６７においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３に対して予め指定されたシミュレーション時間が経過していないと判定した場合、処理は動作６５に戻り、動作６５以降の処理が繰り返し実行される。これにより、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３に対して予め指定されたシミュレーション時間が経過するまで、モニタ部１１６は、監視している論理回路３０１のピンが変化した時刻とその値を第３の記憶ファイル２０１−３に時系列的に記憶させることができる。このとき、モニタ部１１６は、論理回路３０１のピン動作を非圧縮形式または圧縮形式で記憶ファイルに記憶させる。
【００４４】
動作６７においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３に対して予め指定されたシミュレーション時間が経過したと判定した場合、処理は図５の動作６９に進み、動作６９においてモニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３をクローズする。一方、動作６６においてモニタ部１１６が論理回路３０１のデットロックまたはプロトコル違反を検出した場合、モニタ部１１６は動作６８で、論理回路３０１のデットロックまたはプロトコル違反を検出したときのピン動作が記憶されている記憶ファイルを上書きできないようにするために、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３をクローズする。なお、第１の記憶ファイル２０１−１と第２の記憶ファイル２０１−２は動作５７と動作６３でクローズされていることから、再度クローズされない。具体的には、現在のテストシナリオ番号が「１」である場合、モニタ部１１６は、現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３−１をクローズする。その後、処理は図４の動作７３に進み、動作７３でモニタ部１１６は、論理シミュレータ１０１が次に生成するテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３を外部記憶部２００内に作成し、第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンにする。その後、処理は動作５２に進み、動作５２以降の処理が繰り返し実行される。
【００４５】
モニタ部１１６が動作６９で現在のテストシナリオ番号のテストシナリオ用の第３の記憶ファイル２０１−３をクローズした後、モニタ部１１６は動作７０で、現在のテストシナリオ番号のテストシナリオに予め指定された合計のシミュレーション時間が経過したか否かを判定する。動作７０においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオに予め指定された合計のシミュレーション時間が経過していないと判定した場合、モニタ部１１６は動作７１で、論理シミュレータが生成する現在のテストシナリオ番号のテストシナリオ用の３つの記憶ファイル（第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３）を再度オープンにする。その後、処理は図４の動作５２に進み、動作５２以降の処理が繰り返し実行される。一方、動作７０においてモニタ部１１６が現在のテストシナリオ番号のテストシナリオに予め指定された合計のシミュレーション時間が経過したと判定した場合、モニタ部１１６は動作７２で、主制御部１１１から論理シミュレーションを終了するとの指示を受け付けたか否かを判定する。動作７２においてモニタ部１１６が主制御部１１１から論理シミュレーションを終了するとの指示を受け付けていないと判定した場合、モニタ部１１６は、論理シミュレータ１０１による論理シミュレーションが終了していないと認識し、図４の動作７３で、論理シミュレータ１０１が次に生成するテストシナリオ番号のテストシナリオ用の第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３を外部記憶部２００内に作成し、第１の記憶ファイル２０１−１乃至第３の記憶ファイル２０１−３をオープンにする。その後、処理は図４の動作５２に進み、動作５２以降の処理が繰り返し実行される。動作７２においてモニタ部１１６が主制御部１１１から論理シミュレーションを終了するとの指示を受け付けたと判定した場合、モニタ部１１６は、論理シミュレータ１０１による論理シミュレーションを終了すると認識し、動作７４で論理回路３０１の監視処理を終了する。
【００４６】
図６のフローチャートを参照して、図２の論理シミュレータ１０１における波形表示処理について説明する。
【００４７】
動作１０１において、主制御部１１１は、オペレータが入力部１２１を操作することによりエラーが発生した時点における論理回路３０１のピンの動作を表示するとの指示を受け付けたか否かを判定し、エラーが発生した時点における論理回路３０１のピンの動作を表示するとの指示を受け付けたと判定するまで待機する。
【００４８】
動作１０１において主制御部１１１が、エラーが発生した時点における論理回路３０１のピンの動作を表示するとの指示を受け付けたと判定した場合、主制御部１１１は動作１０２で、外部記憶部２００に記憶されるエラー情報とエラー発生時刻を読み出す。動作１０３において、主制御部１１１は、読み出されたエラー情報とエラー発生時刻を表示部１２０に表示させる。動作１０４において、主制御部１１１は、オペレータが入力部１２１を操作することによりエラー発生時刻の中からいずれかのエラー発生時刻の選択を受け付ける。動作１０５において、主制御部１１１は、選択が受け付けられたいずれかのエラー発生時刻に対応付けて記憶される論理回路３０１のピンの動作を外部記憶部２００の記憶ファイル２０１から読み出す。動作１０６において、主制御部１１１は、外部記憶部２００から読み出された、エラー発生時刻に対応付けて記憶される論理回路３０１のピンの動作を表示部１２０に表示させる。
【００４９】
これにより、オペレータは、再シミュレーションを行うことなく論理回路３０１の不具合を解析することができる。
【００５０】
なお、論理シミュレータ１０１は、エラーが発生した時刻の論理回路３０１にピンの動作だけでなく、論理回路３０１での演算結果と等価回路１２２での演算結果とが不一致である場合における論理回路３０１にピンの動作を外部記憶部２００の記憶ファイル２０１から読み出して表示部１２０に表示させるようにしてもよい。
【００５１】
本実施形態に係る論理シミュレータ１０１は、複数のピンを有する論理回路３０１を検証するためのテストシナリオをランダムに生成し、生成されるテストシナリオに基づく複数のトランザクションレベルのスティミュラスを生成し、生成される各トランザクションレベルのスティミュラスを論理回路３０１に入力可能な各ピンレベルのスティミュラスに変換し、変換される各ピンレベルのスティミュラスに基づく論理回路３０１のピン動作を監視し、論理回路３０１に対する論理シミュレーションに指定されるシミュレーション時間内で、監視部（モニタ部１１６）の指示に従い、論理回路３０１のピン動作を時系列的に記憶し、論理回路３０１のピン動作にエラーが発生したと検出された場合、論理回路３０１のピン動作にエラーが発生したテストシナリオに基づく論理回路３０１に対する論理シミュレーションを終了し、生成される他のテストシナリオに基づく論理回路３０１に対する論理シミュレーションを開始するように制御することができる。また、論理シミュレータ１０１は、変換されるピンレベルのスティミュラスに基づく論理回路３０１のピン動作に対してレスポンスし、論理回路３０１と等価な等価回路１２２を有し、論理回路３０１による演算結果と等価回路１２２による演算結果とが一致するか否かを判定し、論理回路３０１による演算結果と等価回路１２２による演算結果とが不一致であると判定された場合、論理回路３０１による演算結果と等価回路１２２による演算結果とが不一致であるテストシナリオに基づく論理回路３０１に対する論理シミュレーションを終了し、生成される他のテストシナリオに基づく論理回路３０１に対する論理シミュレーションを開始するように制御することができる。さらに、論理シミュレータ１０１は、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがカバレッジしきい値に達したか否かを示すカバレッジ情報を記憶し、記憶されるカバレッジ情報に基づいて、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがしきい値に達したか否かを判定し、テストシナリオごとの論理シミュレーションにおいてインクリメントされる機能カバレッジがしきい値に達したと判定するまで、同一のテストシナリオに基づくトランザクションレベルのスティミュラスを順次生成するようにトランザクションレベルテストシナリオ生成部１１２を制御することができる。
【００５２】
これにより、論理シミュレータ１０１は、論理回路３０１に対する効率的な論理シミュレーションを行うことができる。また、論理シミュレータ１０１のモニタ部１１６は、一定のシミュレーション時間内で論理回路３０１のピンの動作を記憶し、エラーが発生しなければ次の論理シミュレーションにおける論理回路３０１のピンの動作が上書きされるため、同一のテストシナリオによる論理シミュレーションにおいては小さい記憶容量の記憶ファイルを用いて論理シミュレーションを行うことが可能であり、論理シミュレータ１０１のハードウェア資源を有効的に活用することができる。さらに、論理シミュレータ１０１は、記憶ファイルからエラーが発生した時点における論理回路３０１のピンの動作を波形表示器としての表示部１２０に表示することができる。これにより、オペレータは、再シミュレーションを行うことなく論理回路３０１の不具合を解析することができる。
【符号の説明】
【００５３】
１…従来の論理シミュレータ、１１…トランザクションレベルテストシナリオ生成部、１２…ドライバ部、１３…カバレッジ取得部、１０１…論理シミュレータ、１１１…主制御部、１１２…トランザクションレベルテストシナリオ生成部、１１３…トランザクション発行部、１１４…ドライバ部、１１５…レスポンダ部、１１６…モニタ部、１１７…比較判定部（スコアーボード部）、１１８…カバレッジ取得部、１１９…カバレッジ記憶部、１２０…表示部、１２１…入力部、２００…外部記憶部。
【図１】
2010067270.tif 000003
【図２】
2010067270.tif 000004
【図３】
2010067270.tif 000005
【図４】
2010067270.tif 000006
【図５】
2010067270.tif 000007
【図６】
2010067270.tif 000008