(57)【特許請求の範囲】
【請求項１】
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするシミュレーション装置であって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成手段と、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーション手段と、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較手段とを有し、
前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とするシミュレーション装置。
【請求項２】
前記マルチサイクル検証回路は、前記信号変化検出回路により信号の変化が検出されるとカウントを開始するカウンタを有することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記マルチサイクル検証回路は、前記カウンタのカウント値に応じて、前記Ｍサイクルの間に前記不定値信号を選択し、それ以外のサイクルでは前記マルチサイクル箇所の信号を選択し、前記マルチサイクル箇所の信号の出力先に出力するセレクタを有することを特徴とする請求項２記載のシミュレーション装置。
【請求項４】
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするシミュレーション方法であって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成ステップと、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーションステップと、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較ステップとを有し、
前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とするシミュレーション方法。
【請求項５】
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするプログラムであって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成ステップと、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーションステップと、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較ステップとをコンピュータに実行させるためのプログラムであって、
前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法及びプログラムに関する。
【背景技術】
【０００２】
図２は、２つのフリップフロップ１０３及び１０４とその間に接続された組合せ回路１１２を含むクロック同期論理回路をシミュレーションするためのテストベンチを示す図である。テストベンチ１０１は、検証対象回路１０２及びテスト用記述を含む系である。
【０００３】
検証対象回路１０２の簡単な例として、半導体集積回路でよく使われている２つのフリップフロップ１０３，１０４とその間に接続された組合せ回路１１２を含むクロック同期論理回路を使い説明する。
【０００４】
図３は、検証対象回路１０２の動作例を示すタイミングチャートである。サイクル数は、クロック信号ＣＬＫのサイクル数を示す。サイクル１では、第１のフリップフロップ１０３は、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータを保持し、出力端子ＤＯからデータＦＦ１ＤＯを出力する。データＦＦ１ＤＯは、サイクル１の間に、組合せ回路１１２を介して、第２のフリップフロップ１０４の入力端子ＤＩにデータＦＦ２ＤＩとして到達する。すなわち、１サイクルの間に、第１のフリップフロップ１０３の出力データＦＦ１ＤＯが第２のフリップフロップ１０４の入力端子ＤＩにデータＦＦ２ＤＩとして到達する。このような回路をシングルサイクルパスという。シングルサイクルパスは、フリップフロップ１０３及び１０４間のデータ遅延が１サイクル以内である。
【０００５】
サイクル２では、第２のフリップフロップ１０４は、ライトイネーブル信号ＦＦ２ＷＥがハイレベルの場合、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータＦＦ２ＤＩを保持し、出力端子ＤＯからデータＦＦ２ＤＯを出力する。なお、第２のフリップフロップ１０４は、ライトイネーブル信号ＦＦ２ＷＥがローレベルの場合、データ書き込みを行わず、データを保持し続け、保持しているデータを出力端子ＤＯからデータＦＦ２ＤＯとして出力する。
【０００６】
さて、検証対象回路１０２の中には、データ遅延が最大でＮサイクルまでならばどのような遅延でも許される場合がある。このような状態をマルチサイクルパスと言う。ここで、Ｎは２以上の自然数とする。
【０００７】
図４（Ａ）は、図２の検証対象回路１０２がＮサイクルのマルチサイクルパスである場合のタイミングチャートである。上記と同様に、サイクル１では、第１のフリップフロップ１０３は、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータを保持し、出力端子ＤＯからデータＦＦ１ＤＯを出力する。それに伴い、第２のフリップフロップ１０４の入力データＦＦ２ＤＩは、サイクル１〜４のいずれかの任意のタイミングで新しい値に変化することが許されているので、サイクル１〜４では不定値（０又は１のいずれであるか不定の値）である。第２のフリップフロップ１０４は、サイクル１〜４のいずれのタイミングで入力データＦＦ２ＤＩが変化しても、正しい回路動作をしなければならない。
【０００８】
第２のフリップフロップ１０４は、ライトイネーブル信号ＦＦ２ＷＥがハイレベルの場合、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータＦＦ２ＤＩを保持し、出力端子ＤＯからデータＦＦ２ＤＯを出力する。したがって、出力データＦＦ２ＤＯは、サイクル２〜４では不定値である。
【０００９】
この回路において、サイクル１の第１のフリップフロップ１０３の出力データＦＦ１ＤＯは、サイクル１，２，３，・・・，Ｎのいずれかで第２のフリップフロップ１０４の入力端子ＤＩにデータＦＦ２ＤＩとして到達する。本回路をマルチサイクルパスとして扱うためには、第２のフリップフロップ１０４の入力データＦＦ２ＤＩが、「データ変化がサイクル１，２，３，・・・，Ｎのいずれであっても本回路が正常に動作する」ように設計しなければいけない。
【００１０】
なお、マルチサイクルパスは、一般的に、回路設計者により意図的に作られる。以下では、マルチサイクルとすべきパスは、回路仕様書や、論理検証以降の開発フローである論理合成や配置・配線や静的タイミング検証で標準的な入力情報として利用されるタイミング制約情報（Design Constraints）等に記載されているものとする。
【００１１】
また、ここでは半導体集積回路の開発は、第１の工程として、論理回路の設計をレジスタ・トランスファ・レベル（以下、ＲＴＬという)で行い（論理設計）、第２の工程として、その論理回路の妥当性を検証し（論理検証）、第３の工程として、検証された論理回路をゲートレベルに合成し（論理合成）、第４の工程として、それらを実際に配置配線し（配置・配線）、第５の工程として、タイミング検証を行う（静的タイミング検証，ＳＴＡ）という工程に基づいている。また、本明細書では遅延を含んだゲートレベル・シミュレーションについての記述があるが、これは静的タイミング検証が完了した後、第６の工程として実施するものとする。
【００１２】
次に、マルチサイクルパスをＲＴＬで検証した場合の問題点について説明する。さて、回路設計者がマルチサイクルパスとして規定している信号について、その論理回路としての動作を検証し、その信号が本当にマルチサイクルパスとして扱うことができるか、を検証するには、単に論理回路としての動作の他に、遅延を考慮した論理回路動作の検証が必要となる。
【００１３】
なぜならば、マルチサイクルパスでは、第１のフリップフロップ１０３の出力データＦＦ１ＤＯが、第２のフリップフロップ１０４の入力端子ＤＩにデータＦＦ２ＤＩとして到達するまでのデータ遅延は、サイクル１，２，３，・・・，Ｎのいずれであっても動作が正常であることを確かめる必要があるからである。
【００１４】
論理検証の動作検証は、遅延を含まないＲＴＬで行うことが多い。遅延を含まない場合、Ｎサイクルのマルチサイクルパスに対して、データ遅延がサイクル１，２，３，・・・，Ｎのいずれであっても動作正常であることを検証することは難しい。以下、その理由を説明する。
【００１５】
図４（Ｂ）は、マルチサイクルパスをＲＴＬで論理検証を行った場合のタイミングチャートである。ＲＴＬでは、フリップフロップ１０３及び１０４間のゲート遅延や配線遅延を考慮しないため、第１のフリップフロップ１０３の出力データＦＦ１ＤＯがサイクル１で変化したとき、同じサイクル１で第２のフリップフロップ１０４の入力データＦＦ２ＤＩが変化してしまう。そして、次のサイクル２で、第２のフリップフロップ１０４の出力データＦＦ２ＤＯは新しい値に確定する。
【００１６】
ここで、図４（Ｂ）のタイミングチャートを図３のシングルサイクルパスのタイミングチャートと比較すると、クロック信号ＣＬＫの立ち上がりタイミングにおける第２のフリップフロップ１０４の動作は同一であり、これはシングルサイクルパスの検証をしているのと同じである。また、図４（Ｂ）のタイミングチャートを、図４（Ａ）のＮサイクルのマルチサイクルパスの動作図と比較すると、クロック信号ＣＬＫの立ち上がりタイミングにおける第２のフリップフロップ１０４の動作は、サイクル２〜４で本来マルチサイクルパスとして期待すべき値とは異なっていることが分かる。このことから、ＲＴＬの論理シミュレーションで、マルチサイクルパスを正確に検証することはできないことがわかる。
【００１７】
ここで、遅延を考慮した論理回路動作の検証を行うための手法としては、代表的な方法として以下に示す２つの方法が知られている。
【００１８】
第１の手法は、回路を配置・配線した後に行うゲートレベル・シミュレーションにて実施する方法である。配置配線後に行うゲートレベル・シミュレーションでは、回路情報として実際のゲート遅延や配線遅延を含んでいるため、マルチサイクルパスのデータ遅延を考慮することができる。
【００１９】
第１の手法は、特定の半導体集積回路が正しく動作することは検証することができるという点でよい方法である。しかし、ゲート遅延・配線遅延は、その半導体集積回路に固有の値となった状態での検証であり、「データ変化がサイクル１，２，３，・・・，Ｎのいずれであっても正常に動作する」というＮサイクルのマルチサイクルの動作（図４（Ａ））そのものを検証しているとはいえない。
【００２０】
また、ゲート遅延・配線遅延を含む論理シミュレーションを行うには、論理検証以降の開発フローである論理合成や配置・配線、静的タイミング検証（ＳＴＡ）等を実施した後でなければならないため、マルチサイクルパスの指定に不備が発見されたときに発生する作業手戻りは非常に大きい。特に、規模が増大している現在の半導体集積回路においては、開発期間の損失は非常に大きい。
【００２１】
第２の手法は、ＲＴＬ検証において、対象となる箇所に意図的に遅延を与えることである（特開２００６−３１８１２１号公報）。ＲＴＬ記述では、特定の信号に遅延値を付加することができる。またその機能はシミュレーション装置においても利用できる場合が多い。これにより遅延を考慮した論理検証を擬似的に再現することができる。
【００２２】
しかし、第２の手法においても、１度の論理シミュレーションで与えることができる遅延値が一定値であるため、「データ変化がサイクル１，２，３，・・・，Ｎのいずれであっても正常に動作する」というＮサイクルのマルチサイクルの動作（図４（Ａ））そのものを検証するには、１つのマルチサイクルパスについて少なくともＮ回の論理シミュレーションが必要であり、効率的ではない。
【００２３】
例えば、Ｎサイクルのマルチサイクルパスが回路内部に複数存在し、互いに動作的に関連している場合には、各々のマルチサイクルパスに与える遅延値の組合せを考えなければいけない場合も生じうる。その結果、検証に必要な組合せは膨大となってしまう。
【００２４】
さらに、第３の方法として、ＲＴＬあるいはゲートレベルの回路構造を解析することで、マルチサイクルパスとできる箇所を情報として提供するような技術も存在する（特開２００１−２７３３５１号公報）。これは、回路設計者が、意図せずに作ったマルチサイクルパスを含めて網羅的に探索するという点では効果的な方法である。
【００２５】
しかし、回路内のマルチサイクルパスには、回路構造上決まるマルチサイクルパス以外に、仕様上の理由、あるいは他の論理回路に依存してマルチサイクルパスとできる部分も多数存在する。従って、回路仕様書等に記載しているマルチサイクル箇所情報が本当に正しいかどうかを、この技術だけから判断することは難しい。
【００２６】
【特許文献１】特開２００６−３１８１２１号公報
【特許文献２】特開２００１−２７３３５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
本発明の目的は、Ｎサイクルのマルチサイクルパスを含んだクロック同期の論理回路の検証を、回路設計初期段階で簡単な方法で実施することができるシミュレーション装置、シミュレーション方法及びプログラムを提供することである。
【００２８】
本発明の他の目的は、クロック同期の論理回路において、回路設計者がマルチサイクルパスとして規定している箇所が、本当にマルチサイクルとして扱うことができるかを確認することができるシミュレーション装置、シミュレーション方法及びプログラムを提供することである。
【課題を解決するための手段】
【００２９】
本発明のシミュレーション装置は、クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするシミュレーション装置であって、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成手段と、前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーション手段と、前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較手段とを有し、前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とする。
【発明の効果】
【００３０】
Ｎサイクルのマルチサイクルパスの動作をする論理回路の検証を、回路設計初期段階で簡単な方法で実施することができる。また、クロック同期の論理回路において、回路設計者がマルチサイクルパスとして規定している箇所が、本当にマルチサイクルとして扱うことができるかを確認することができる。
【発明を実施するための最良の形態】
【００３１】
（第１の実施形態）
図１３は、本発明の第１の実施形態によるシミュレーション装置を構成するコンピュータのハードウェア構成例を示すブロック図である。このコンピュータは、ＣＡＤ（computer-aided design）により、ＲＴＬ設計データ及びネットリスト設計データを生成し、シミュレーションを行うことができる。
【００３２】
バス１３０１には、中央処理装置（ＣＰＵ）１３０２、ＲＯＭ１３０３、ＲＡＭ１３０４、ネットワークインターフェース１３０５、入力装置１３０６、出力装置１３０７及び外部記憶装置１３０８が接続されている。
【００３３】
ＣＰＵ１３０２は、データの処理及び演算を行うと共に、バス１３０１を介して接続された上記の構成ユニットを制御するものである。ＲＯＭ１３０３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ１３０２が実行することにより、コンピュータが起動する。外部記憶装置１３０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ１３０４にコピーされ、ＣＰＵ１３０２により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述するシミュレーション及びマルチサイクル検証を行うことができる。
【００３４】
外部記憶装置１３０８は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置１３０８は、コンピュータプログラム、ＲＴＬ設計データ等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【００３５】
ネットワークインターフェース１３０５は、ネットワークに対してコンピュータプログラム及びＲＴＬ設計データ等を入出力することができる。入力装置１３０６は、例えばキーボード及びポインティングデバイス（マウス）等であり、各種指定又は入力等を行うことができる。出力装置１３０７は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【００３６】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００３７】
図１は、本実施形態によるシミュレーション装置のテストベンチを示す概念図である。テストベンチ４０１は、検証対象回路４０２及びテスト用記述を含む系であり、シミュレーションを行うためのソフトウェア（プログラム）である。テストベンチ４０１は、検証対象回路４０２及びマルチサイクル検証部４１４を有する。検証対象回路４０２及びマルチサイクル検証部４１４は、ＲＴＬ設計データで記述された回路データである。図１３のシミュレーション装置は、テストベンチ４０１をインストールし、テストベンチ４０１を実行することにより、シミュレーションを行う。
【００３８】
検証対象回路４０２は、例えば、２つのフリップフロップ４０３，４０４とその間に接続された組合せ回路４１２を含むクロック同期論理回路である。組合せ回路４１２は、第１のフリップフロップ４０３の出力端子ＤＯ及び第２のフリップフロップ４０４の入力端子ＤＩ間に接続される。マルチサイクル検証部４１４は、制御部４１５、Ｘ信号出力部４１６及びスイッチ４１７を有する。スイッチ４１７は、制御部４１５の出力信号ＳＷＳに応じて、Ｘ信号出力部４１６の出力信号を第２のフリップフロップ４０４の入力端子ＤＩに出力する。Ｘ信号出力部４１６は、Ｘ信号（不定値信号）を出力する。Ｘ信号は、０又は１に定まっていない不定値を示す信号である。
【００３９】
第１のフリップフロップ４０３出力端子ＤＯから第２のフリップフロップ４０４の入力端子ＤＩまでの回路は、Ｎサイクルのマルチサイクルパスとして扱えると回路設計者により定められた回路であると仮定する。
【００４０】
本実施形態は、検証対象回路４０２に加えて、１≦Ｍ＜Ｎを満たす任意のＭサイクルの間、組合せ回路４１２の出力信号Ｓの代わりに、Ｘ信号出力部４１６が出力するＸ信号を強制的に代入するマルチサイクル検証部４１４が付加されている。
【００４１】
制御部４１５は、マルチサイクル対象となる信号に関するマルチサイクル箇所情報、最大遅延を許すマルチサイクル数、基準とすべきクロックあるいは制御信号に応じて、制御信号ＳＷＳを出力する。スイッチ４１７は、制御信号ＳＷＳに応じて、組合せ回路４１２の出力信号Ｓが不定値になるサイクルにおいてＸ信号を信号ＳＷＯとして出力する。
【００４２】
図５は、本実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。シミュレーション装置は、ＲＴＬにおけるシミュレーションを行う。サイクル数は、クロック信号ＣＬＫのサイクル数を示す。以下、Ｎサイクルのマルチサイクルパスの動作を説明する。Ｎは例えば４である。
【００４３】
サイクル１では、第１のフリップフロップ４０３は、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータを保持し、出力端子ＤＯからデータＦＦ１ＤＯを出力する。ＲＴＬでは遅延を含まないので、組合せ回路４１２は、信号ＦＦ１ＤＯを入力し、遅延なしで信号Ｓを出力する。Ｎ（例えば４）サイクルのマルチサイクルパスでは、第２のフリップフロップ４０４の入力データＦＦ２ＤＩは、サイクル１〜４のいずれかの任意のタイミングで新しい値に変化することが許されているので、制御部４１５は、マルチサイクル箇所情報（例えば信号Ｓ）、マルチサイクル数（例えば４）及びマルチサイクルパスに関連するクロック信号ＣＬＫを基に、サイクル１〜３の間にオンの制御信号ＳＷＳを出力し、それ以外のサイクルではオフの制御信号ＳＷＳを出力する。
【００４４】
制御信号ＳＷＳがオンであるときには、スイッチ４１７はオンして、スイッチ４１７の出力信号ＳＷＯはＸ信号出力部４１６が出力するＸ信号になり、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩもＸ信号出力部４１６が出力するＸ信号になる。制御信号ＳＷＳがオフであるときには、スイッチ４１７はオフして、スイッチ４１７の出力信号ＳＷＯはハイインピーダンス状態になり、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは組合せ回路４１２の出力信号Ｓと同じ信号になる。
【００４５】
第２のフリップフロップ４０４は、ライトイネーブル信号ＦＦ２ＷＥがハイレベルの場合、クロック信号ＣＬＫの立ち上がりに同期して、入力端子ＤＩに入力されたデータＦＦ２ＤＩを保持し、出力端子ＤＯからデータＦＦ２ＤＯを出力する。したがって、出力データＦＦ２ＤＯは、サイクル２〜４では不定値Ｘである。
【００４６】
１≦Ｍ＜Ｎを満たすＭサイクルの間、すなわち、サイクル１〜Ｎ−１の間、スイッチ４１７がオンするため、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは不定値Ｘになる。その後、スイッチ４１７はオフするため、サイクルＮで第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは信号Ｓと同じ信号になる。
【００４７】
ここで、図５のタイミングチャートと、図４（Ａ）のＮサイクルのマルチサイクルパスのタイミングチャートとを比較する。図４（Ａ）において、第２のフリップフロップ１０４の入力信号ＦＦ２ＤＩは、サイクル１〜サイクルＮまでの間のどこかの時点で信号が変化するが、これは、サイクル１〜Ｎ−１では不定値Ｘであることを意味する。また、第２のフリップフロップ１０４の入力信号ＦＦ２ＤＩは、サイクルＮでは新しい値に確定している。
【００４８】
一方で、図４（Ａ）及び図５のタイミングチャートを比較すると、クロック信号ＣＬＫの立ち上がりタイミングにおける第２のフリップフロップ１０４及び４０４の動作は、両者で一致している。すなわち、本実施形態によるシミュレーション装置で得られるタイミングチャートは、Ｎサイクルのマルチサイクルパスで期待される動作とまったく同じになっていることが分かる。
【００４９】
従って、本実施形態によるシミュレーション装置は、Ｎサイクルのマルチサイクルパスの動作を、回路設計初期段階であるＲＴＬにおいて簡単に再現することが可能である。また、背景技術において、問題であった「データ遅延が一定値に固定されている」、「複数回シミュレーションを実行する必要がある」といった問題もなく、１度のシミュレーションでＮサイクルのマルチサイクルパスの検証をすることも可能である。
【００５０】
図６は、本実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。本実施形態では、Ｎサイクルマルチサイクルパスの動作を検証することができる。
【００５１】
シミュレーション装置は、入力情報６００として、論理検証で必要となる検証対象回路（論理回路）を含むテストベンチ６０２、検証パタン（テストパタン）６０３の他に、マルチサイクル箇所情報６０１を入力する。入力情報６００は、全てシミュレーション装置に読み込まれ、シミュレーションが実行される。
【００５２】
マルチサイクル箇所情報６０１は、回路設計者により規定されるマルチサイクルとして扱うことのできる情報であり、マルチサイクル箇所の信号名やフリップフロップ名、マルチサイクル数、及び関連する論理回路内部の他の信号に関する情報を含むものとする。テストベンチ６０２は、図１のテストベンチ４０１に対応する。検証パタン６０３は、検証対象回路４０２の入力テストデータである。
【００５３】
論理シミュレーション装置６０４は、ステップ６０５及び６０６のソフトウェア処理により構成される。ステップ６０５では、シミュレーション装置は、図１に示すように、マルチサイクル箇所情報６０１及びテストベンチ６０２を基に、マルチサイクル検証部４１４の設計データを生成し、指定箇所にマルチサイクル検証部４１４を搭載する。次に、ステップ６０６では、シミュレーション装置は、図５に示すように、テストベンチ（マルチサイクル検証部４１４を含む）６０２及び検証パタン６０３を基に遅延を含まない論理シミュレーションを行い、シミュレーション結果６０７を出力する。シミュレーション結果６０７は、論理シミュレーションによる検証対象回路４０２の出力信号である。
【００５４】
シミュレーション装置は、マルチサイクル箇所情報６０１を読み込み、図４のマルチサイクル検証部４１４の回路を搭載した後に、論理シミュレーションステップ６０６を実施する点が、通常の論理シミュレーションと異なる。
【００５５】
期待値６０８は、検証対象回路４０２の動作が正しいときに期待される検証対象回路４０２のシミュレーション結果の期待値の信号である。ステップ６０９では、シミュレーション装置は、シミュレーション結果６０７と予め用意された期待値６０８とを比較する。
【００５６】
もし、シミュレーション結果６０７が期待値６０８と異なれば、ステップ６１１に進む。ステップ６１１では、シミュレーション装置は、マルチサイクル箇所の検証結果に問題ありと判断する。これは、マルチサイクル箇所の動作が期待通りでないことを意味する。マルチサイクルパスの動作がおかしい理由としては、マルチサイクル箇所情報６０１が正しくない、検証対象回路（論理回路）４０２がマルチサイクルパスに対応した回路構成になっていない、等の理由が考えられる。
【００５７】
次に、ステップ６１２では、シミュレーション装置は、入力情報６００であったテストベンチ６０２、検証パタン６０３、マルチサイクル箇所情報６０１を見直し、検証対象回路（論理回路）４０２を修正する。修正後、シミュレーション結果６０７と期待値６０８とが一致するまで、上記の処理を繰り返す。
【００５８】
もし、シミュレーション結果６０７が期待値６０８と一致しているならば、ステップ６１０へ進む。ステップ６１０では、シミュレーション装置は、以下の結論を判断することができる。すなわち、第１に、マルチサイクル箇所の遅延を考慮した論理動作が正しいことが検証される。また、第２に、入力情報６００として使用したマルチサイクル箇所情報６０１の内容が正しかったことも分かる。
【００５９】
半導体集積回路の開発は、第１の工程として、論理回路の設計をＲＴＬで行い（論理設計）、第２の工程として、図６の論理回路の妥当性を検証し（論理検証）、第３の工程として、検証された論理回路をゲートレベルに合成し（論理合成）、第４の工程として、それらを実際に配置配線し（配置・配線）、第５の工程として、タイミング検証を行う（静的タイミング検証，ＳＴＡ）という工程を行い、第６の工程として、遅延を含んだゲートレベル・シミュレーションを行う。
【００６０】
以上のように、本実施形態によれば、設計初期段階（ＲＴＬ段階）でマルチサイクルパスを検証することができる。背景技術ではマルチサイクルパスの動作が正しいかを確かめるには、論理検証以降の開発工程である配線遅延・ゲート遅延を含んだゲートレベル・シミュレーションが必要であったが、本実施形態のシミュレーション装置を使用することで、これらを回路設計初期段階のＲＴＬで確かめることができる。
【００６１】
また、本実施形態は、網羅的にマルチサイクルパスを検証することができる。本実施形態は、マルチサイクルパスの検証において問題であった「データ遅延が一定値に固定されている」、「複数回シミュレーションを実行する必要がある」といった問題もなく、１度のシミュレーションでＮサイクルのマルチサイクルパスの動作と等価な動作をＲＴＬ検証で実施することができる。
【００６２】
また、本実施形態は、設計者が意図して作ったマルチサイクルパスの妥当性を確認することができる。本実施形態を利用することで、回路設計者により規定されたマルチサイクルパスにおいて、回路設計者がマルチサイクルパスとして規定している箇所が、本当にマルチサイクルとして扱うことができるかを確認することができる。
【００６３】
（第２の実施形態）
図７は、本発明の第２の実施形態によるシミュレーション装置のテストベンチを示す概念図である。本実施形態（図７）は、第１の実施形態（図１）に対して、マルチサイクル検証部４１４の具体的回路例を示したものである。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００６４】
テストベンチ４０１は、シミュレーション装置に搭載される際に信号Ｓと信号ＦＦ２ＤＩの間が切断され、信号Ｓはマルチサイクル検証部４１４を経由して信号ＦＦ２ＤＩに伝達されることが特徴である。シミュレーション終了後は、マルチサイクル検証部４１４が削除され、信号線７２５により信号Ｓと信号ＦＦ２ＤＩとが直接接続される。
【００６５】
マルチサイクル検証部４１４は、信号Ｓの変化を観測する信号変化観測部７１５、マルチサイクル数Ｎを基にＸ信号を駆動すべきサイクル数を計算するカウンタＣＮＴ、Ｘ信号を出力するＸ信号出力部７１７、及びＸ信号又は信号Ｓを第２のフリップフロップ４０４の入力端子ＤＩに選択的に供給するセレクタ７１８を有する。
【００６６】
図８は、本実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。サイクル１において、第１のフリップフロップ４０３の出力信号ＦＦ１ＤＯが変化し、その変化が信号Ｓまで到達する。すると、マルチサイクル検証部４１４の信号変化観測部７１５は、マルチサイクル信号Ｓの変化を検出し、検出信号ＯＢＳＯＵＴをパルス信号としてカウンタＣＮＴに出力する。ここで、検証対象となる信号Ｓは、回路設計者により検証パタンとして与えられる情報である。
【００６７】
次いで、サイクル１において、カウンタＣＮＴは、検出信号ＯＢＳＯＵＴのパルスを入力すると、マルチサイクル数Ｎ−１（例えば３）をセットし、クロック信号ＣＬＫに同期してダウンカウントを開始し、制御信号ＳＥＬＳをローレベルにする。カウンタＣＮＴは、サイクル４において、カウント値が０になると、制御信号ＳＥＬＳをハイレベルにする。ここで、マルチサイクル信号Ｓ及びマルチサイクル数Ｎは回路設計者により設定される情報である。
【００６８】
セレクタ７１８は、制御信号ＳＥＬＳがハイレベルであるときに信号Ｓを選択し、制御信号ＳＥＬＳがローレベルであるときにＸ信号を選択し、信号ＳＥＬＯとして第２のフリップフロップ４０４の入力端子ＤＩに出力する。その結果、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは、サイクル１〜３では不定値Ｘになり、サイクル４では信号Ｓと同じ信号になる。
【００６９】
ここで、図８を、図４（Ａ）のＮサイクルのマルチサイクルパスのタイミングチャートと比較する。図４（Ａ）において、第２のフリップフロップ１０４の入力信号ＦＦ２ＤＩは、サイクル１〜Ｎの間のどこかの時点で信号が変化するが、これは、サイクル１〜Ｎ−１では不定値Ｘであることを意味する。また、第２のフリップフロップ１０４の入力信号ＦＦ２ＤＩは、サイクルＮでは新しい値に確定している。
【００７０】
一方で、図８及び図（Ａ）のタイミングチャートを比較すると、クロック信号ＣＬＫの立ち上がりタイミングにおける第２のフリップフロップ１０４及び４０４の動作は、両者で一致している。すなわち、本実施形態のシミュレーション装置で得られるタイミングチャートは、Ｎサイクルのマルチサイクルパスで期待される動作とまったく同じになっていることが分かる。
【００７１】
図９は、本実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。本実施形態（図９）は、第１の実施形態（図６）に対して、マルチサイクル箇所情報６０１の代わりにタイミング制約情報９０１を用いる点が異なる。また、テストベンチ６０２は、図７のテストベンチ４０１に対応する。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００７２】
タイミング制約情報９０１は、回路設計者により定義されている情報で、検証対象回路４０２内部に存在するマルチサイクルパス箇所のリストを含む情報をフォーマット化したものであり、例えばＳＤＣ（Synopsys Design Constraint）ファイルである。タイミング制約情報９０１は、論理検証以降の開発フローである論理合成や、配置・配線や静的タイミング検証の際に標準的に利用される。マルチサイクルパスに関しては、マルチサイクル対象となる信号名や関連するフリップフロップ名に関する情報の他、マルチサイクルサイクル数と関連するクロック情報を含むであるのが一般的であるため、マルチサイクル箇所情報として使用するのに最適な情報である。
【００７３】
ステップ６０５では、シミュレーション装置は、図７に示すように、タイミング制約情報（マルチサイクル箇所情報を含む）９０１及びテストベンチ６０２を基に、マルチサイクル検証部４１４の設計データを生成し、指定箇所にマルチサイクル検証部４１４を搭載する。次に、ステップ６０６では、シミュレーション装置は、図８に示すように、テストベンチ（マルチサイクル検証部４１４を含む）６０２及び検証パタン６０３を基に遅延を含まない論理シミュレーションを行い、シミュレーション結果６０７を出力する。
【００７４】
ステップ６０９では、シミュレーション装置は、シミュレーション結果６０７と期待値６０８とを比較する。もし、シミュレーション結果６０７が期待値６０８と異なれば、マルチサイクル箇所の動作が期待通りでないことを意味するので、ステップ６１１へ進む。マルチサイクルパスの動作がおかしい理由としては、タイミング制約情報９０１が正しくない、マルチサイクルパスに対応した回路構成になっていない、等の理由が挙げられる。その場合、ステップ６１２において、入力情報６００であったテストベンチ６０２、検証パタン６０３、タイミング制約情報９０１を見直し、検証対象回路（論理回路）４０２を修正する。修正後、シミュレーション結果６０７と期待値６０８とが一致するまで、図９の処理を繰り返す。
【００７５】
もし、シミュレーション結果６０７と期待値６０８とが同じであれば、ステップ６１０に進み、シミュレーション装置は、以下の結論を判断することができる。すなわち、第１に、マルチサイクル箇所の遅延を考慮した論理動作が正しいことが検証される。第２に、入力情報６００として使用したタイミング制約情報９０１の内容が正しかったことも分かる。
【００７６】
特に、本実施形態を使用した場合には、タイミング制約情報９０１の検証が可能であることは重要である。なぜならば、タイミング制約情報９０１は、論理検証以降の開発フローである論理合成や、配置配線や静的タイミング検証（ＳＴＡ）の際に標準的な入力情報として利用されるため、その情報に従って回路が設計されることで、配置・配線後の遅延を含むゲートレベル・シミュレーションでの動作も保障することができるからである。
【００７７】
（第３の実施形態）
図１０は、本発明の第３の実施形態によるシミュレーション装置のテストベンチを示す概念図である。本実施形態（図１０）は、第１の実施形態（図１）に対して、マルチサイクル検証部４１４の具体的回路例を示したものである。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００７８】
マルチサイクル検証部４１４は、Ｘ信号出力部１０１６及びスイッチＳＷを有する。Ｘ信号出力部１０１６は、Ｘ信号を出力する。ライトイネーブル信号ＦＦ２ＷＥは、第２のフリップフロップ４０４への入力信号ＦＦ２ＤＩの書き込みの有効／無効を示す制御信号である。スイッチＳＷは、ライトイネーブル信号ＦＦ２ＷＥに応じて、Ｘ信号出力部１０１６の出力信号の端子及び信号ＦＦ２ＤＩの端子の間の接続をオン／オフする。
【００７９】
スイッチＳＷの制御信号としてライトイネーブル信号ＦＦ２ＷＥを使用することは、信号Ｓをマルチサイクルパスとして扱うことができるためのもっとも簡単なシミュレーション方法のひとつである。なぜならば、ライトイネーブル信号ＦＦ２ＷＥをマルチサイクル数に応じて変化させることで、不定値となるサイクルでは第２のフリップフロップ４０４へのデータ書き込みを抑制できるためである。
【００８０】
図１１は、本実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。ライトネーブル信号ＦＦ２ＷＥは、信号Ｓが不定値Ｘとなるべきサイクルにおいてローレベルとする。
【００８１】
サイクル１において、第１のフリップフロップ４０３の出力信号ＦＦ１ＤＯが変化し、信号Ｓまで到達する。しかし、このサイクル１では、ライトイネーブル信号ＦＦ２ＷＥがローレベルであるために、スイッチＳＷがオンになり、スイッチＳＷはＸ信号を信号ＳＷＯとして第２のフリップフロップ４０４の入力端子ＤＩに出力する。その結果、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは、信号ＳＷＯと同じく不定値Ｘになる。第２のフリップフロップ４０４は、ライトイネーブル信号ＦＦ２ＷＥがローレベルのとき、データ書き込みを行わず、内部に保持しているデータを信号ＦＦ２ＤＯとして出力する。すなわち、信号ＦＦ２ＤＯは、前回と同じデータであり、変化しない。
【００８２】
サイクルＮ（例えば４）において、ライトイネーブル信号ＦＦ２ＷＥがハイレベルになると、スイッチＳＷがオフになり、スイッチＳＷの出力信号ＳＷＯはハイインピーダンス状態になる。その結果、第２のフリップフロップ４０４の入力信号ＦＦ２ＤＩは、信号Ｓと同じ信号になる。第２のフリップフロップ４０４は、ライトイネーブル信号ＦＦ２ＷＥがハイレベルのとき、入力信号ＦＦ２ＤＩを書き込み保持し、その保持したデータを信号ＦＦ２ＤＯとして出力する。
【００８３】
第２のフリップフロップ４０４のライトイネーブル端子ＷＥに正しいライトイネーブル信号ＦＦ２ＷＥが接続されていれば、第２のフリップフロップ４０４の出力信号ＦＦ２ＷＯはＸ信号に依存せず、正しい信号となる。しかし、第２のフリップフロップ４０４のライトイネーブル端子ＷＥに誤ったライトイネーブル信号ＦＦ２ＷＥが接続されていれば、第２のフリップフロップ４０４の出力信号ＦＦ２ＷＯにＸ信号が伝播してしまい、検証対象回路４０２の動作不具合が生じる。
【００８４】
ここで、図１１を、図４（Ａ）のＮサイクルのマルチサイクルパスのタイミングチャートと比較する。図４（Ａ）において、第２のフリップフロップ１０４の入力信号ＦＦ２ＤＩは、サイクル１〜Ｎのどこかの時点で信号が変化する。これは、サイクル１〜Ｎ−１では、入力信号ＦＦ２ＤＩは不定値Ｘであることを意味する。また、入力信号ＦＦ２ＤＩは、サイクルＮでは新しい値に確定している。
【００８５】
一方で、図１１及び図４（Ａ）のタイミングチャートと比較すると、クロックＣＬＫの立ち上がりタイミングにおける第２のフリップフロップ１０４及び４０４の動作は、両者で一致している。すなわち、本実施形態のシミュレーション装置で得られるタイミングチャートは、Ｎサイクルのマルチサイクルパスで期待される動作とまったく同じになっていることが分かる。
【００８６】
図１２は、本実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。本実施形態（図１２）は、第１の実施形態（図６）に対して、マルチサイクル箇所情報６０１の代わりにリスト１２０１を用いる点が異なる。また、テストベンチ６０２は、図１０のテストベンチ４０１に対応する。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００８７】
リスト１２０１は、マルチサイクル信号名（例えば信号Ｓ）及びその信号の有効／無効を示す信号（例えばライトイネーブル信号ＦＦ２ＷＥ）を含み、設計者により設定される。
【００８８】
ステップ６０５では、シミュレーション装置は、図１０に示すように、リスト１２０１及びテストベンチ６０２を基に、マルチサイクル検証部４１４の設計データを生成し、指定箇所にマルチサイクル検証部４１４を搭載する。次に、ステップ６０６では、シミュレーション装置は、図１１に示すように、テストベンチ（マルチサイクル検証部４１４を含む）６０２及び検証パタン６０３を基に遅延を含まない論理シミュレーションを行い、シミュレーション結果６０７を出力する。
【００８９】
ステップ６０９では、シミュレーション装置は、シミュレーション結果６０７と期待値６０８とを比較する。もし、シミュレーション結果６０７と期待値６０８とが異なれば、マルチサイクル箇所の動作が期待通りでないことを意味するので、ステップ６１１へ進む。マルチサイクルパスの動作がおかしい理由としては、ライトイネーブル信号ＦＦ２ＷＥの動作サイクルが期待通りでない、等の理由が挙げられる。その場合、ステップ６１２において、シミュレーション装置は、入力情報６００であったリスト１２０１、検証パタン６０３、検証対象回路（論理回路）４０２を見直し、検証対象回路（論理回路）４０２を修正する。修正後、シミュレーション結果１２０７と期待値６０８とが一致するまで、図１２の処理を繰り返す。
【００９０】
本実施形態のシミュレーション装置により、信号ＦＦ２ＤＩは、ライトイネーブル信号ＦＦ２ＷＥがハイレベルを示す間でのみ値が確定する。もし第２のフリップフロップ４０４のライトイネーブル端子ＷＥとライトイネーブル信号ＦＦ２ＷＥとの接続又はライトイネーブル信号ＦＦ２ＷＥの動作が間違っていた場合には、第２のフリップフロップ４０４に不定値Ｘが取り込まれ、信号ＦＦ２ＤＯが不定値Ｘになる。したがって、シミュレーション結果６０７が期待値６０８と異なる結果となり、検証対象回路４０２の不備を発見することができる。
【００９１】
もし、シミュレーション結果６０７と期待値６０８とが同じであれば、ステップ６１０に進み、シミュレーション装置は、以下の結論を判断することができる。すなわち、第１に、マルチサイクル箇所の遅延を考慮した論理動作が正しいことが検証される。第２に、入力情報６００として使用したリスト１２０１が正しいと言える。
【００９２】
以上のように、第１〜第３の実施形態によれば、設計初期段階（ＲＴＬ段階）でマルチサイクルパスを検証することができる。背景技術ではマルチサイクルパスの動作が正しいかを確かめるには、論理検証以降の開発工程である配線遅延・ゲート遅延を含んだゲートレベル・シミュレーションが必要であったが、本実施形態のシミュレーション装置を使用することで、これらを回路設計初期段階のＲＴＬで確かめることができる。
【００９３】
また、本実施形態は、網羅的にマルチサイクルパスを検証することができる。本実施形態は、マルチサイクルパスの検証において問題であった「データ遅延が一定値に固定されている」、「複数回シミュレーションを実行する必要がある」といった問題もなく、１度のシミュレーションでＮサイクルのマルチサイクルパスの動作と等価な動作をＲＴＬ検証で実施することができる。
【００９４】
また、本実施形態は、設計者が意図して作ったマルチサイクルパスの妥当性を確認することができる。本実施形態を利用することで、回路設計者により規定されたマルチサイクルパスにおいて、回路設計者がマルチサイクルパスとして規定している箇所が、本当にマルチサイクルとして扱うことができるかを確認することができる。
【００９５】
特に、第２の実施形態の場合には、マルチサイクルパスの検証対象回路４０２としての動作の保障だけでなく、タイミング制約情報９０１の妥当性も確認することができる点は効果として大きい。
【００９６】
また、第２の実施形態により検証されたタイミング制約情報９０１は、論理検証以降の開発フローである論理合成や、配置配線や静的タイミング検証（ＳＴＡ）の際に標準的な入力情報として利用されることで、配置配線後に行われるゲートレベル・シミュレーションでの動作も設計初期段階で保障することができる。これは、タイミング制約情報９０１の間違いによる設計の手戻りを防ぐことにもなり、設計効率が大幅に向上する。
【００９７】
第１〜第３の実施形態のシミュレーション装置は、クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路４０２の設計データをシミュレーションするシミュレーション装置であって、前記検証対象回路４０２内のマルチサイクル箇所の信号に代えて不定値信号（Ｘ信号）を選択的に供給するマルチサイクル検証回路（マルチサイクル検証部）４１４の設計データを生成する設計データ生成手段（図６等のステップ６０５）と、前記検証対象回路４０２の設計データ及び前記マルチサイクル検証回路４１４の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーション手段（図６等のステップ６０６）と、前記論理シミュレーションによる前記検証対象回路の信号６０７と前記検証対象回路の期待値の信号６０８とを比較する比較手段（図６等のステップ６０９）とを有する。
【００９８】
図７では、前記マルチサイクル検証回路４１４は、前記検証対象回路４０２内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路（信号変化観測部）７１５を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路４０２内のマルチサイクル箇所の信号に代えて不定値信号を供給する。
【００９９】
また、図７では、前記マルチサイクル検証回路４１４は、前記信号変化検出回路７１５により信号の変化が検出されるとカウントを開始するカウンタＣＮＴを有する。
【０１００】
また、図７では、前記マルチサイクル検証回路４１４は、前記カウンタＣＮＴのカウント値に応じて、前記Ｍサイクルの間に前記不定値信号を選択し、それ以外のサイクルでは前記マルチサイクル箇所の信号を選択し、前記マルチサイクル箇所の信号の出力先（例えば第２のフリップフロップ４０４の入力端子ＤＩ）に出力するセレクタ７１８を有する。
【０１０１】
図９のステップ６０５では、前記設計データ生成手段は、ＳＤＣファイル（タイミング制約情報）９０１内のマルチサイクル箇所情報を基に前記マルチサイクル検証回路の設計データを生成する。
【０１０２】
図１０では、前記マルチサイクル検証回路４１４は、前記検証対象回路４０２内のマルチサイクル箇所の信号の有効／無効を示す制御信号に応じて、前記検証対象回路４０２内のマルチサイクル箇所の信号に代えて不定値信号を供給する。例えば、前記制御信号は、ライトイネーブル信号ＦＦ２ＷＥである。
【０１０３】
また、図１０では、前記検証対象回路４０２内の論理回路は、前記マルチサイクル箇所の信号Ｓ及び前記ライトイネーブル信号ＦＦ２ＷＥを入力するフリップフロップ４０４を有する。
【０１０４】
前記検証対象回路４０２の設計データ及び前記マルチサイクル検証回路４１４の設計データは、遅延のない論理シミュレーションを行うのであれば、ＲＴＬ設計データでもネットリスト設計データでもよいが、ＲＴＬ設計データであることが好ましい。
【０１０５】
第１〜第３の実施形態によれば、Ｎサイクルのマルチサイクルパスの動作をする論理回路の検証を、回路設計初期段階で簡単な方法で実施することができる。また、クロック同期の論理回路において、回路設計者がマルチサイクルパスとして規定している箇所が、本当にマルチサイクルとして扱うことができるかを確認することができる。
【０１０６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１０７】
本発明の実施形態は、例えば以下のように種々の適用が可能である。
【０１０８】
（付記１）
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするシミュレーション装置であって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成手段と、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーション手段と、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較手段と
を有することを特徴とするシミュレーション装置。
（付記２）
前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の変化を検出する信号変化検出回路を有し、前記信号の変化を検出した後、１≦Ｍ＜Ｎを満たすＭサイクルの間、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とする付記１記載のシミュレーション装置。
（付記３）
前記マルチサイクル検証回路は、前記信号変化検出回路により信号の変化が検出されるとカウントを開始するカウンタを有することを特徴とする付記２記載のシミュレーション装置。
（付記４）
前記マルチサイクル検証回路は、前記カウンタのカウント値に応じて、前記Ｍサイクルの間に前記不定値信号を選択し、それ以外のサイクルでは前記マルチサイクル箇所の信号を選択し、前記マルチサイクル箇所の信号の出力先に出力するセレクタを有することを特徴とする付記３記載のシミュレーション装置。
（付記５）
前記設計データ生成手段は、ＳＤＣファイル内のマルチサイクル箇所情報を基に前記マルチサイクル検証回路の設計データを生成することを特徴とする付記１記載のシミュレーション装置。
（付記６）
前記マルチサイクル検証回路は、前記検証対象回路内のマルチサイクル箇所の信号の有効／無効を示す制御信号に応じて、前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を供給することを特徴とする付記１記載のシミュレーション装置。
（付記７）
前記制御信号は、ライトイネーブル信号であることを特徴とする付記６記載のシミュレーション装置。
（付記８）
前記検証対象回路内の論理回路は、前記マルチサイクル箇所の信号及び前記ライトイネーブル信号を入力するフリップフロップを有することを特徴とする付記７記載のシミュレーション装置。
（付記９）
前記検証対象回路の設計データは、ＲＴＬ設計データであることを特徴とする付記１記載のシミュレーション装置。
（付記１０）
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするシミュレーション方法であって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成ステップと、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーションステップと、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較ステップと
を有することを特徴とするシミュレーション方法。
（付記１１）
クロック信号に同期してＮサイクルのマルチサイクルパスの動作をする論理回路を含む検証対象回路の設計データをシミュレーションするプログラムであって、
前記検証対象回路内のマルチサイクル箇所の信号に代えて不定値信号を選択的に供給するマルチサイクル検証回路の設計データを生成する設計データ生成ステップと、
前記検証対象回路の設計データ及び前記マルチサイクル検証回路の設計データを基に遅延を含まない論理シミュレーションを行う論理シミュレーションステップと、
前記論理シミュレーションによる前記検証対象回路の信号と前記検証対象回路の期待値の信号とを比較する比較ステップと
をコンピュータに実行させるためのプログラム。
【図面の簡単な説明】
【０１０９】
【図１】本発明の第１の実施形態によるシミュレーション装置のテストベンチを示す概念図である。
【図２】２つのフリップフロップとその間に接続された組合せ回路を含むクロック同期論理回路をシミュレーションするためのテストベンチを示す図である。
【図３】検証対象回路の動作例を示すタイミングチャートである。
【図４】図４（Ａ）は図２の検証対象回路がＮサイクルのマルチサイクルパスである場合のタイミングチャートであり、図４（Ｂ）はマルチサイクルパスをＲＴＬで論理検証を行った場合のタイミングチャートである。
【図５】本発明の第１の実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。
【図６】本発明の第１の実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。
【図７】本発明の第２の実施形態によるシミュレーション装置のテストベンチを示す概念図である。
【図８】本発明の第２の実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。
【図９】本発明の第２の実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。
【図１０】本発明の第３の実施形態によるシミュレーション装置のテストベンチを示す概念図である。
【図１１】本発明の第３の実施形態によるシミュレーション装置の動作例を示すタイミングチャートである。
【図１２】本発明の第３の実施形態によるシミュレーション装置のシミュレーション方法を示すフローチャートである。
【図１３】本発明の第１の実施形態によるシミュレーション装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【符号の説明】
【０１１０】
４０１  テストベンチ
４０２  検証対象回路
４０３  第１のフリップフロップ
４０４  第２のフリップフロップ
４１２  組合せ回路
４１４  マルチサイクル検証部
４１５  制御部
４１６  Ｘ信号出力部
４１７  スイッチ
【図１】
0005040758.tif 000002
【図２】
0005040758.tif 000003
【図３】
0005040758.tif 000004
【図４】
0005040758.tif 000005
【図５】
0005040758.tif 000006
【図６】
0005040758.tif 000007
【図７】
0005040758.tif 000008
【図８】
0005040758.tif 000009
【図９】
0005040758.tif 000010
【図１０】
0005040758.tif 000011
【図１１】
0005040758.tif 000012
【図１２】
0005040758.tif 000013
【図１３】
0005040758.tif 000014