(57)【特許請求の範囲】
【請求項１】
クロックと第１のラッチ回路の出力データとに従って制御信号を出力する制御回路と、前記制御信号に従って入力データを保持又は出力する前記第１のラッチ回路とを含むクロックゲーティング回路が含まれる回路データを格納する記憶部と、
前記記憶部から読み出した前記回路データにおいて、前記クロックゲーティング回路における前記第１のラッチ回路を、前記制御回路の出力する前記制御信号に従って前記入力データ又は第２のラッチ回路の出力データのいずれか一方を選択的に出力する選択回路と、前記選択回路の出力をデータ入力端子に入力され、参照クロックをクロック入力端子に入力され、前記参照クロックに従って、前記選択回路の出力をデータ出力端子から前記出力データとして出力する前記第２のラッチ回路とにより置換することにより、置換回路データを生成する回路データ生成部と、
前記参照クロックに従って、前記参照クロックと予め定められた関係にあるパルスの予め定められた周期を前記入力データの取り込み期間又はホールド期間に割り当て、前記パルスを前記クロックとして前記制御回路に入力し、前記参照クロックを前記第２のラッチ回路に入力することにより、生成した前記置換回路データについてのシミュレーションを行うシミュレーション部とを含む
ことを特徴とするシミュレーション装置。
【請求項２】
前記シミュレーション装置が、更に、
前記パルスを生成して、前記シミュレーション部に供給するパルス生成部と、
前記パルスと等しい周波数又は整数倍の周波数の前記参照クロックを生成して、前記シミュレーション部に供給する前記参照クロック生成部とを含む
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記シミュレーション部において実行されるシミュレーションは、サイクル・ベース型シミュレーションであり、
前記シミュレーション部は、予め指定された数のサイクルのシミュレーションを実行する
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項４】
前記第２のラッチ回路は、前記クロック入力端子に入力される信号に同期して動作し、前記クロック入力端子に入力される信号の立ち上がりエッジ又は立ち下がりエッジを検出して前記データ入力端子に入力される信号を取り込むＤ型フリップフロップである
ことを特徴とする請求項３に記載のシミュレーション装置。
【請求項５】
回路データ生成部が、記憶部に格納された回路データであって、クロックと第１のラッチ回路の出力データとに従って制御信号を出力する制御回路と、前記制御信号に従って入力データを保持又は出力する前記第１のラッチ回路とを含むクロックゲーティング回路が含まれる回路データを、前記記憶部から読み出し、
前記回路データ生成部が、読み出した前記回路データにおいて、前記クロックゲーティング回路における前記第１のラッチ回路を、前記制御回路の出力する前記制御信号に従って前記入力データ又は第２のラッチ回路の出力データのいずれか一方を選択的に出力する選択回路と、前記選択回路の出力をデータ入力端子に入力され、参照クロックをクロック入力端子に入力され、前記参照クロックに従って、前記選択回路の出力をデータ出力端子から前記出力データとして出力する前記第２のラッチ回路とにより置換することにより、置換回路データを生成し、
シミュレーション部が、前記参照クロックに従って、前記参照クロックと予め定められた関係にあるパルスの予め定められた周期を前記入力データの取り込み期間又はホールド期間に割り当て、前記パルスを前記クロックとして前記制御回路に入力し、前記参照クロックを前記第２のラッチ回路に入力することにより、生成した前記置換回路データについてのシミュレーションを行う
ことを特徴とするシミュレーション方法。
【請求項６】
シミュレーションプログラムであって、
前記プログラムは、コンピュータに、
記憶部に格納された回路データであって、クロックと第１のラッチ回路の出力データとに従って制御信号を出力する制御回路と、前記制御信号に従って入力データを保持又は出力する前記第１のラッチ回路とを含むクロックゲーティング回路が含まれる回路データを、前記記憶部から読み出す処理と、
読み出した前記回路データにおいて、前記クロックゲーティング回路における前記第１のラッチ回路を、前記制御回路の出力する前記制御信号に従って前記入力データ又は第２のラッチ回路の出力データのいずれか一方を選択的に出力する選択回路と、前記選択回路の出力をデータ入力端子に入力され、参照クロックをクロック入力端子に入力され、前記参照クロックに従って、前記選択回路の出力をデータ出力端子から前記出力データとして出力する前記第２のラッチ回路とにより置換することにより、置換回路データを生成する処理と、
前記参照クロックに従って、前記参照クロックと予め定められた関係にあるパルスの予め定められた周期を前記入力データの取り込み期間又はホールド期間に割り当て、前記パルスを前記クロックとして前記制御回路に入力し、前記参照クロックを前記第２のラッチ回路に入力することにより、生成した前記置換回路データについてのシミュレーションを行う処理とを実行させる
ことを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法及びシミュレーションプログラムに関する。
【背景技術】
【０００２】
半導体装置の内部回路についての論理検証の作業においては、一般的に、論理シミュレーションが行われる。論理シミュレーションの方式は、イベント・ドリブン型とサイクル・ベース型とに大別される。
【０００３】
イベント・ドリブン型シミュレーションにおいては、論理回路の間で信号「１」又は「０」が伝播されると共に、伝播における遅延時間が算出される。従って、イベント・ドリブン型シミュレーションは、正確なシミュレーションが可能である。一方、サイクル・ベース型シミュレーションにおいては、論理回路の状態がクロックのサイクルを単位として得ることができ、その中間の論理回路の状態や遅延時間等は算出されない。従って、高速なシミュレーションが可能である。
【０００４】
例えば大規模なＬＳＩ（Large Scale Integrated circuit）等についての論理検証のためのシミュレーションにおいては、短時間で可能な限り多くの動作や状態の検証を行うことが求められる場合がある。そこで、単位時間当たりにより多くの動作や状態の検証を行うことができるサイクル・ベース型シミュレーションによる論理検証を行うことが求められる場合がある。
【０００５】
なお、入力端子でデータ信号を受取るステップと、システムクロック周波数を有するシステムクロック信号を受取るステップと、システムクロック周波数から分割された周波数を有する位相クロック信号を受取るステップとを含む方法であって、データ信号が、位相クロック信号が活性であるとき出力端子に移され、かつ位相クロック信号が活性であるときにシステムクロック信号のエッジ遷移が発生すると、ラッチされ、位相クロック信号が不活性になると、ラッチされたデータ信号はシステムクロック信号のエッジ遷移の発生の際再びラッチされ、ラッチされたデータ信号は、位相クロック信号が不活性になると、出力端子に移される方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−２６２１０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サイクル・ベース型シミュレーションにおいては、遅延が正確に表現できず、また、シミュレーション対象とすることができる論理回路が制限される等の制限がある。このため、サイクル・ベース型シミュレーションにより論理検証を行おうとしても、論理検証ができない場合がある。
【０００８】
本発明は、シミュレーション対象とすることができる論理回路の制限を少なくすることが可能なシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示されるシミュレーション装置は、記憶部と、回路データ生成部と、シミュレーション部とを含む。記憶部は、クロックと第１のラッチ回路の出力データとに従って制御信号を出力する制御回路と、制御信号に従って入力データを保持又は出力する第１のラッチ回路とを含むクロックゲーティング回路が含まれる回路データを格納する。回路データ生成部は、記憶部から読み出した回路データにおいて、クロックゲーティング回路における第１のラッチ回路を、制御回路の出力する制御信号に従って入力データ又は第２のラッチ回路の出力データのいずれか一方を選択的に出力する選択回路と、選択回路の出力をデータ入力端子に入力され、参照クロックをクロック入力端子に入力され、参照クロックに従って、選択回路の出力をデータ出力端子から出力データとして出力する第２のラッチ回路とにより置換することにより、置換回路データを生成する。シミュレーション部は、参照クロックに従って、参照クロックと予め定められた関係にあるパルスの予め定められた周期を入力データの取り込み期間又はホールド期間に割り当て、パルスをクロックとして制御回路に入力し、参照クロックを第２のラッチ回路に入力することにより、生成した置換回路データについてのシミュレーションを行う。
【発明の効果】
【００１０】
開示されるシミュレーション装置によれば、シミュレーション対象とすることができる論理回路の制限を少なくすることができ、より多くの論理回路についてサイクル・ベース型シミュレーションにより論理検証を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】シミュレーション装置の一例を示す図である。
【図２】シミュレーション装置のハードウェア構成の一例を示す図である。
【図３】回路データ変換の説明図である。
【図４】回路データ変換の説明図である。
【図５】回路データ変換の説明図である。
【図６】シミュレーションの説明図である。
【図７】シミュレーションの説明図である。
【図８】シミュレーションの説明図である。
【図９】シミュレーションの一例を示す図である。
【図１０】シミュレーションの他の一例を示す図である。
【図１１】シミュレーションの一例を示す図である。
【図１２】シミュレーション処理フローチャートである。
【図１３】クロックゲーティング回路の説明図である。
【図１４】本発明者が検討したクロックゲーティング回路のシミュレーションの説明図である。
【発明を実施するための形態】
【００１２】
図１３は、クロックゲーティング回路の説明図である。
【００１３】
図１３に示すクロックゲーティング回路は、Ｄ型フリップフロップ（以下、ＦＦという）１５１と組み合わせ回路１５２とを含む。クロックゲーティング回路は、組み合わせ回路１５２によりＦＦ１５１に供給されるクロックを停止することにより、ＦＦ１５１における消費電力を抑え、結果として、半導体装置全体としての消費電力を抑える。ＦＦ１５１は、クロック入力端子ＣＫに入力された制御信号に従って、データ入力端子Ｄに入力された入力データを保持又は出力するラッチ回路である。ＦＦ１５１の出力は、データ出力端子Ｑから出力される。組み合わせ回路１５２は、クロックに従ってＦＦ１５１の制御信号を出力する制御回路である。組み合わせ回路１５２により、ＦＦ１５１へのクロックの送出が停止される。
【００１４】
図１４は、本発明者が検討したクロックゲーティング回路のシミュレーションの説明図である。
【００１５】
クロックゲーティング回路においては、図１３に示すように、ＦＦ１５１の出力が、組み合わせ回路１５２を経由して、ＦＦ１５１のクロック入力端子ＣＫに入力される。このため、サイクル・ベース型シミュレーション装置は、ＦＦ１５１のデータ出力端子Ｑからクロック入力端子ＣＫへのフィードバックループを検出する。しかし、サイクル・ベース型シミュレーション装置においては、入力データの取り込みのタイミングを保障することができないので、ある論理回路の出力をその論理回路のクロック入力に与えるフィードバックループを含む回路をシミュレーション対象とすることは、禁止されている。従って、このままではサイクル・ベース型シミュレーションができない。
【００１６】
そこで、クロックゲーティング回路を含む論理回路についてサイクル・ベース型シミュレーションをする場合は、シミュレーション装置が、図１４（Ｂ）に示すように、クロック入力端子ＣＫへのフィードバックループにバッファＦＦ１５３を挿入する。そして、シミュレーション装置は、バッファＦＦ１５３を挿入したクロックゲーティング回路について、サイクル・ベース型シミュレーションを行う。バッファＦＦ１５３は、シミュレーションのためにシミュレーション用の回路データ上で挿入され、実際に製造される半導体装置の回路には挿入されない。なお、ＦＦ１５１’は、ＦＦ１５１の前段のクロックゲーティング回路に含まれる論理回路である。
【００１７】
バッファＦＦ１５３は、シミュレーション装置のシステムクロックで駆動される。従って、ＦＦ１５１の出力は最初のシステムクロックに同期して一旦バッファＦＦ１５３に保持され、その後、後続のシステムクロックに同期してバッファＦＦ１５３の出力がクロック入力端子ＣＫへ入力される。これにより、図１４（Ｂ）のループル＃Ｒ１に点線で示すような、クロック入力端子ＣＫへのフィードバックループは解消される。従って、クロックゲーティング回路を含む論理回路について、サイクル・ベース型シミュレーションを実行することができる。
【００１８】
しかし、ＦＦ１５１の出力を最初のシステムクロックに同期してバッファＦＦ１５３に保持し、その後、後続のシステムクロックに同期してバッファＦＦ１５３の出力を組み合わせ回路１５２及びクロック入力端子ＣＫへ入力することが、新たに必要となる。換言すれば、クロックゲーティング回路で使用するクロックの「１サイクル」内において、バッファＦＦ１５３がＦＦ１５１の出力を取り込む第１のサイクルと、バッファＦＦ１５３の出力を組み合わせ回路１５２及びクロック入力端子ＣＫへ入力する第２のサイクルとを、別々のサイクルとして分離することが求められる。
【００１９】
このために、図１４（Ａ）に示すように、クロックゲーティング回路で使用するクロックの「１サイクル」に対して、シミュレーションのためのシステムクロックが「複数のサイクル」必要となる。図１４（Ａ）において、「クロックサイクル数」は組み合わせ回路１５２に入力されるクロックのサイクル数を表し、「シミュレータのサイクル数」はシミュレーション装置のシステムクロックのサイクル数を表す。前述したように、１個の「クロックサイクル数」内で、前半において前述の第１のサイクルが実行され、後半において前述の第２のサイクルが実行される。
【００２０】
図１４（Ａ）に示すように、「シミュレータのサイクル数」が「クロックサイクル数」の２倍となる。換言すれば、「シミュレータのサイクル数」が「クロックサイクル数」が２：１となる。従って、クロックの「１サイクル」の分をシミュレーションするために、「１サイクル」の２倍である「２サイクル」のシステムクロックを必要とする。換言すれば、シミュレーションの速度が、例えば１／２になる。このように、クロックゲーティング回路の動作に必要なクロックのサイクル数に比べ、シミュレーションのために必要なシステムクロックのサイクル数が増加し、結果としてシミュレーション装置における計算効率が悪化する。
【００２１】
開示されるシミュレーション装置によれば、シミュレーション装置におけるシミュレーションの効率を低下させることなく、クロックゲーティング回路を含む論理回路について、サイクル・ベース型シミュレーションを実行することができる。
【００２２】
図１は、シミュレーション装置の一例を示す図である。
【００２３】
シミュレーション装置１は、回路データ変換部１１と、シミュレーション部１２と、回路データ格納部１３と、ライブラリ１４と、置換回路データ格納部１５と、パルス生成部１６と、参照クロック生成部１７と、入出力部１８とを含む。
【００２４】
回路データ格納部１３は、回路データを格納する記憶部である。回路データは、例えば、シミュレーションに先立って、シミュレーション装置１以外のコンピュータにより生成され、入出力部１８を介して、回路データ格納部１３に格納される。回路データは、実際に製造される半導体装置の回路を表すデータである。回路データには、後述するように、制御回路とラッチ回路とを含むクロックゲーティング回路が含まれる。
【００２５】
ライブラリ１４は、クロックゲーティング回路におけるラッチ回路を置換するべき、選択回路とラッチ回路との対を格納する。ライブラリ１４は、シミュレーションに先立って、予め生成される。
【００２６】
回路データ変換部１１は、回路データ格納部１３から読み出した回路データに基づいて、置換回路データを生成する回路データ生成部である。置換回路データは、読み出した回路データにおいて、クロックゲーティング回路におけるラッチ回路を、選択回路とラッチ回路とを含む置換回路５により置換することにより生成される。回路データ変換部１１は、選択回路とラッチ回路とを含む置換回路５をライブラリ１４から読み出して、読み出した選択回路とラッチ回路とを含む置換回路５によりクロックゲーティング回路におけるラッチ回路を置換する。生成された置換回路データは、置換回路データ格納部１５に格納される。
【００２７】
置換回路データ格納部１５は、置換回路データを格納する記憶部であり、回路データ変換部１１により生成された置換回路データを格納する。置換回路データは、回路データに基づいて生成された回路データと等価なデータである。置換回路データは、実際に製造される半導体装置の回路を表すデータではなく、シミュレーション用に生成されシミュレーションに用いられるデータである。
【００２８】
シミュレーション部１２は、置換回路データについてサイクル・ベース型シミュレーションを行う。これにより、置換回路データは回路データと等価であるので、回路データについてのサイクル・ベース型シミュレーションが行われたことになる。シミュレーション部１２は、パルスをクロックとして制御回路に入力し、参照クロックをラッチ回路に入力することにより、生成した置換回路データについてのシミュレーションを行う。パルスは、参照クロックと予め定められた関係にある。
【００２９】
パルス生成部１６は、パルスを生成して、シミュレーション部１２に供給する。シミュレーション部１２は、供給されたパルスを、クロックとして制御回路に入力する。パルスは、実際には、クロックであっても良く、図３に示す置換後のクロックゲーティング回路４の組み合わせ回路６に入力される信号を、図３に示す置換前のクロックゲーティング回路３の組み合わせ回路６に入力されるクロックと区別するために、「パルス」ということとする。
【００３０】
置換前のクロックゲーティング回路３の組み合わせ回路６に入力されるクロックは、実際に製造される半導体装置において、クロックゲーティング回路３に実際に動作用クロックとして供給される信号である。置換後のクロックゲーティング回路４の組み合わせ回路６に入力されるパルスは、シミュレーション用の置換回路データにおいて存在するクロックゲーティング回路４に、シミュレーションのために供給される信号である。
【００３１】
参照クロック生成部１７は、参照クロックを生成して、シミュレーション部１２に供給する。参照クロックは、パルスと等しい周波数又は整数倍の周波数とされる。参照クロックとしては、例えば、シミュレーション装置１において最も周波数が高いクロック、換言すれば、シミュレーション装置１のシステムクロックが用いられる。これにより、サイクル・ベース型シミュレーションを最も良い効率で実行することができる。システムクロックは、シミュレーション装置１にシステム動作をさせる場合の基本クロックである。なお、参照クロックとして、システムクロック以外のクロックを用いるようにしても良い。
【００３２】
入出力部１８は、シミュレーション部１２におけるサイクル・ベース型シミュレーションを実行するシミュレータのサイクル数を指定する指示を、シミュレーション部１２に入力する。これにより、シミュレーション部１２は、予め指定された数のサイクルのシミュレーションを実行する。サイクル数は、図９の例では、参照クロックのサイクル数、換言すれば、シミュレーション装置１のシステムクロックのサイクル数である。例えば「１００」のように指定される。これにより、図６の検証対象論理回路２にシステムクロックが１００サイクルだけ入力され、その時点での検証対象論理回路２の状態がシミュレーション結果として得られる。
【００３３】
また、入出力部１８は、シミュレーション１２におけるシミュレーションの結果を、例えば表示画面上に出力する。シミュレーションの結果は、ファイルとして出力するようにしても良い。
【００３４】
図２は、シミュレーション装置のハードウェア構成の一例を示す図である。
【００３５】
ＣＰＵ１０１は、ＲＯＭ１０２に格納された制御プログラムに従って、シミュレーション装置１を制御する。ＣＰＵ１０１は、例えば主メモリであるＲＡＭ１０３上のシミュレーションプログラムを実行する。これにより、回路データ変換部１１及びシミュレーション部１２が実現される。シミュレーションプログラムは、例えば、ＣＤ−ＲＯＭやＤＶＤ等の記録媒体１０９に格納され、記録媒体１０９からＣＤ−ＲＯＭドライブやＤＶＤドライブ等を介してハードディスク１０６に入力され、ハードディスク１０６からＲＡＭ１０３にロードされる。
【００３６】
回路データ格納部１３及び置換回路データ格納部１５は、例えばハードディスク１０６に設けられる。換言すれば、データは、例えばハードディスク１０６に格納される。回路データは、例えば、ＣＤ−ＲＯＭやＤＶＤ等の記録媒体１０９に格納され、記録媒体１０９からＣＤ−ＲＯＭドライブやＤＶＤドライブ等を介してハードディスク１０６に入力され、必要に応じてハードディスク１０６からＲＡＭ１０３にロードされ、回路データ変換部１１及びシミュレーション部１２により処理される。
【００３７】
入力装置１０４は、例えばキーボードであり、マウス等を含んでも良い。出力装置１０５は、例えばディスプレイであり、プリンタ等の出力装置を含んでも良い。入出力部８は入力装置１０４及び出力装置１０５を含む。ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、入力装置１０４、出力装置１０５、及び、ハードディスク１０６、ネットワーク接続部１０７は、バス１０８を介して、相互に接続される。
【００３８】
ネットワーク接続部１０７は、例えば、送受信装置であり、ネットワークに接続され、ネットワークを介して他のコンピュータに接続される。これにより、シミュレーション装置１は、他のコンピュータとの間で通信を行う。
【００３９】
以下、回路データ変換部１１が実行する回路データ変換処理について、図３〜図５を参照して、詳細に説明する。
【００４０】
図３は、回路データ変換の説明図である。
【００４１】
図３において、クロックゲーティング回路３は、回路データ格納部１３から読み出した回路データに含まれる回路、換言すれば、置換前のクロックゲーティング回路である。クロックゲーティング回路３は、実際に設計され製造される半導体装置に含まれる回路である。クロックゲーティング回路４は、回路データ変換部１１により生成される置換回路データに含まれる回路、換言すれば、置換後のクロックゲーティング回路である。クロックゲーティング回路４は、シミュレーションのためにシミュレーション用の置換回路データにおいて存在する回路である。クロックゲーティング回路４は、後述するように、クロックゲーティング回路３と等価の回路であり、クロックゲーティング回路３におけるクロック系信号とデータ系信号とを分離した回路である。
【００４２】
回路データ変換部１１は、前述したように、回路データ格納部１３から読み出した回路データにおいて、ラッチ回路５１Ａを検出する。そして、回路データ変換部１１は、検出したラッチ回路５１Ａを、図３に示すように、選択回路５２とラッチ回路５１とを含む置換回路５により置換する。これにより、置換回路データが生成される。
【００４３】
選択回路５２は、第１のデータ入力端子Ａに入力データを入力し、第２のデータ入力端子Ｂにラッチ回路５１の出力データを入力し、制御信号入力端子Ｓに組み合わせ回路６の出力する制御信号を入力するマルチプレクサである。選択回路５２は、組み合わせ回路６の出力する制御信号に従って、入力データ又はラッチ回路５１の出力データのいずれか一方を、データ出力端子Ｚから選択的に出力する。組み合わせ回路６は、入力されるクロック又はパルスに基づいて、クロックゲーティング回路を制御する制御回路である。
【００４４】
ラッチ回路５１は、選択回路５２の出力をデータ入力端子Ｄに入力し、参照クロックをクロック入力端子ＣＫに入力される。ラッチ回路５１は、参照クロックに従って、選択回路５２の出力を、データ出力端子Ｑから出力データとして出力する。また、ラッチ回路５１は、リセット信号が入力されるリセット端子Ｒを含む。
【００４５】
組み合わせ回路６の出力は、ＦＦ５１のクロック入力端子ＣＫから切断され、選択回路５２の制御信号入力端子Ｓに入力される。選択回路５２の入力には、入力データと、ＦＦ５１の値を保持するためにＦＦ５１の出力Ｑが入力される。選択回路５２の出力ＺがＦＦ５１のデータ入力端子Ｄに接続される。
【００４６】
ラッチ回路５１のデータ出力端子Ｑから出力される信号は、組み合わせ回路６に入力され、これとは別に、選択回路５２の入力端子Ｂに入力され、更に、ラッチ回路５１のデータ入力端子Ｄに入力される。選択回路５２は、データ入力端子Ｄに接続されるので、データ系の回路である。従って、ラッチ回路５１の出力は、クロック系の回路である組み合わせ回路６と、データ系の回路である選択回路５２とに分離して入力される。これにより、図１４のバッファＦＦ１５３を不要とすることができる。また、後述するように、置換前後のクロックゲーティング回路３及び４において等価な論理を保ち、かつ、参照クロック、換言すれば、シミュレーション装置１のシステムクロックのサイクル数を削減することができる。
【００４７】
ここで、ラッチ回路５１Ａの検出の条件は、以下の通りである。検出されるラッチ回路５１Ａは、クロック入力端子ＣＫに入力される信号に同期して動作する同期型の論理回路、換言すれば、デジタル回路である。また、検出されるラッチ回路５１Ａは、クロック入力端子ＣＫに入力される信号の立ち上がりエッジ又は立ち下がりエッジを検出して、これをトリガとして例えばデータ入力端子Ｄに入力される信号を取り込む回路である。このようにエッジ動作する回路としては、例えばＤ型フリップフロップ（以下、ＦＦという）がある。更に、検出されるラッチ回路５１Ａのクロック入力端子ＣＫに入力される信号は単一の極性であり、かつ、検出されるラッチ回路５１Ａは単一のエッジで駆動される。単一の極性とは、例えば、クロックが正の信号であり、負の信号ではないことをいう。単一のエッジとは、例えば、立ち上がりエッジで動作し、立ち下がりエッジでは動作しないことをいう。
【００４８】
具体的には、ラッチ回路５１Ａとして、ＦＦ５１Ａが検出される。この時、ＦＦ５１Ａが組み合わせ回路６と共にクロックゲーティング回路を構成するか否かは、検出の条件とされない。換言すれば、クロックゲーティング回路に含まれないＦＦ５１Ａも検出される。従って、クロックゲーティング回路に含まれるＦＦ５１Ａ及びクロックゲーティング回路に含まれないＦＦ５１Ａ、換言すれば、回路データに含まれる全てのＦＦ５１Ａが、検出され置換の対象とされる。後述するように、ＦＦ５１Ａと選択回路５２とラッチ回路５１との置換回路５とは論理的に等価であるので、シミュレーションのための置換回路データにおいて、ＦＦ５１Ａを選択回路５２とラッチ回路５１との置換回路５により置換しても、シミュレーションに支障は無い。
【００４９】
従って、置換回路データに含まれる全てのＦＦ５１は、参照クロックを基準クロックとして動作する。ＦＦ５１は、参照クロックの立ち上がりエッジを検出して動作する。参照クロックの周波数は、置換回路データにおいて使用する周波数のうち、最も高い周波数と等しいかより高い周波数とされる。
【００５０】
ＦＦ５１Ａは、回路データにおいて、例えば回路名が「ＦＦ」であることにより検出される。回路名は、回路データにおいて、ＦＦのような回路の種類を一意に特定する識別情報である。
【００５１】
検出されたＦＦ５１Ａは、選択回路５２とＦＦ５１との置換回路５により置換される。選択回路５２とＦＦ５１との置換回路５は、例えばラッチ回路５１Ａの検出の後に置換処理に先立って、ライブラリ１４から読み出される。
【００５２】
図４は、回路データ変換の説明図であり、特に、図４（Ａ）は図３に示す置換前のクロックゲーティング回路３の論理テーブルを示し、図４（Ｂ）は図３に示す置換後のクロックゲーティング回路４の論理テーブルを示す。
【００５３】
図４（Ａ）及び図４（Ｂ）において、ＦＦ５１Ａ又はＦＦ５１のリセット端子Ｒへの入力、換言すれば、リセット信号の値は、「０」又は「１」とされる。例えば、リセット信号の「０」は「０（Ｖ）」であり、「１」は予め定められた値の「負電圧」である。リセット信号が「０」の場合にはＦＦ５１Ａ又はＦＦ５１はリセットされ、リセット信号が「１」の場合にはＦＦ５１Ａ又はＦＦ５１はリセットされない。
【００５４】
図４（Ａ）の置換前のクロックゲーティング回路３の論理テーブルにおいて、リセット端子Ｒへの入力を信号Ｒ、データ入力端子Ｄへの入力を信号Ｄ、クロック入力端子ＣＫへの入力を信号ＣＫ、データ出力端子Ｑからの出力を信号Ｑということとする。
【００５５】
図４（Ａ）の置換前のクロックゲーティング回路３の論理テーブルにおいて、信号Ｒが「０」である場合、ＦＦ５１Ａはリセットされる。従って、信号Ｄ及び信号ＣＫは「Ｘ（ドントケア）」であり、信号Ｑの値は「０」である。この状態を第１の状態ということとする。
【００５６】
信号Ｒが「１」である場合において、信号Ｄが「０」であり、信号ＣＫが「立ち上がりのエッジＲ」であれば、入力「０」が取り込まれるので、信号Ｑは「０」である。この状態を第２の状態ということとする。信号Ｒが「１」である場合において、信号Ｄが「１」であり、信号ＣＫが「立ち上がりのエッジＲ」であれば、入力「１」が取り込まれるので、信号Ｑは「１」である。この状態を第３の状態ということとする。信号Ｒが「１」である場合において、信号ＣＫが「立ち下がりのエッジＦ」であれば、入力は取り込まれないので、信号Ｄは「Ｘ（ドントケア）」であり、信号Ｑは「Ｑ」であり、それまでの出力を維持する。この状態を第４の状態ということとする。
【００５７】
図４（Ｂ）の置換後のクロックゲーティング回路４の論理テーブルにおいて、リセット端子Ｒへの入力を信号ＩＲ、入力端子Ａへの入力を信号ＩＤ、制御信号入力端子Ｓへの入力を信号Ｓ、データ出力端子Ｚからの出力を信号Ｚ、データ入力端子Ｄへの入力を信号Ｄ、クロック入力端子ＣＫへの入力を信号ＣＫ、データ出力端子Ｑからの出力を信号Ｑということとする。
【００５８】
信号Ｑは、入力端子Ｂへの入力である。信号ＩＲは、リセット信号であり、信号Ｒに等しい。信号ＩＤは入力データであり、ＦＦ５１Ａのデータ入力端子Ｄではなく、選択回路の入力端子Ａに入力される。信号ＣＫとしては参照クロックが用いられる。
【００５９】
図４（Ｂ）の置換後のクロックゲーティング回路４の論理テーブルにおいて、信号ＩＲが「０」である場合、ＦＦ５１はリセットされる。従って、信号ＩＤ、信号Ｓ、信号Ｚ、信号Ｄ及び信号ＣＫは「Ｘ（ドントケア）」であり、信号Ｑの値は「０」である。この状態は第１の状態に相当する。
【００６０】
信号ＩＲが「１」である場合において、信号Ｓが「０」であると、入力端子Ａへの入力が選択される。そこで、信号ＩＤが「０」であるとすると、信号Ｚは入力端子Ａへの入力「０」となる。この時、信号ＣＫが「立ち上がりのエッジＲ」であれば、信号Ｚ、換言すれば、入力端子Ａへの入力「０」が取り込まれるので、信号Ｑは「０」である。この状態は第２の状態に相当する。
【００６１】
信号ＩＲが「１」である場合において、信号Ｓが「０」であり、信号ＩＤが「１」であると、信号Ｚは入力端子Ａへの入力「１」となる。この時、信号ＣＫが「立ち上がりのエッジＲ」であれば、信号Ｚ、換言すれば、入力端子Ａへの入力「１」が取り込まれるので、信号Ｑは「１」である。この状態は第３の状態に相当する。
【００６２】
信号ＩＲが「１」である場合において、信号Ｓが「１」であると、入力端子Ｂへの入力が選択される。従って、信号ＩＤは「Ｘ（ドントケア）」となり、信号Ｚは入力端子Ｂへの入力「Ｑ」となる。この時、信号ＣＫが「立ち上がりのエッジＲ」であれば、信号Ｚ、換言すれば、入力端子Ｂへの入力「Ｑ」が取り込まれるので、信号Ｑは「Ｑ」であり、それまでの出力を維持する。この状態は、第１〜第４の状態のいずれにも該当しない第５の状態である。第５の状態により、値Ｑを保持するサイクルを実現することができる。
【００６３】
信号ＩＲが「１」である場合において、信号ＣＫが「立ち下がりのエッジＦ」であれば、入力は取り込まれないので、信号ＩＤ、信号Ｓ、信号Ｚ及び信号Ｄは「Ｘ（ドントケア）」であり、信号Ｑは「Ｑ」であり、それまでの出力を維持する。この状態は第４の状態に相当する。
【００６４】
以上から、置換後のクロックゲーティング回路４は、置換前のクロックゲーティング回路３と等価であり、かつ、値Ｑを保持するサイクルを有することが判る。
【００６５】
図５は、回路データ変換の説明図であり、置換後のクロックゲーティング回路４を含む置換回路データの一例を示す。
【００６６】
置換回路データにおいては、クロックゲーティング回路３に含まれるＦＦ５１Ａが、ＦＦ５１と選択回路５２との置換回路５により置換されている。選択回路５２の入力端子Ａには、前段のクロックゲーティング回路４に含まれるＦＦ５１’からの信号が、入力データとして入力される。選択回路５２の制御信号入力端子Ｓには、組み合わせ回路６からの信号が、制御信号として入力される。
【００６７】
組み合わせ回路６は、例えばＯＲゲート６１、ＡＮＤゲート６２を含む。ＡＮＤゲート６２に入力される「他の信号」とデータ出力端子Ｑからの信号とが共にハイレベルである場合に、組み合わせ回路６から「１」が出力される。これにより、ＦＦ５１へのパルスの供給が停止され、ＦＦ５１にデータがホールドされる。組み合わせ回路６は、図５に示す構成以外の種々の構成を採ることができる。
【００６８】
次に、シミュレーション部１２が実行するシミュレーション処理について、図６〜図１１を参照して、詳細に説明する。
【００６９】
図６は、シミュレーションの説明図である。
【００７０】
シミュレーション部１２は、置換回路データ格納部１５から読み出した置換回路データに基づいて、シミュレーションモデルとして、検証対象論理回路２を構築する。例えば、シミュレーション部１２は、置換回路データにより表される論理回路を、ハードウェア及びソフトウェアにより検証対象論理回路２として実現したエミュレータである。
【００７１】
検証対象論理回路２は、複数の置換回路５を含む。全ての置換回路５には、参照クロック生成部１７からシミュレーション部１２に供給された参照クロックが、入力される。予め定められた置換回路５には、パルス生成部１６からシミュレーション部１２に供給されたパルスＡがクロック用配線を介して入力され、また、予め定められた他の置換回路５には、パルス生成部１６からシミュレーション部１２に供給されたパルスＢがクロック用配線を介して入力される。例えば、パルスＡは２ＧＨｚの周波数であり、パルスＢは１ＧＨｚの周波数である。
【００７２】
図７は、シミュレーションの説明図である。
【００７３】
置換回路５は、図７（Ｂ）に示すように、ＦＦ５１と選択回路５２とを含む。参照クロックは、ＦＦ５１のクロック入力端子ＣＫに入力される。パルスは、組み合わせ回路６に入力される。ＦＦ５１は、参照クロックの立ち上がりエッジを検出して動作する。選択回路５２は、制御信号入力端子Ｓへの入力がロウレベルの場合に入力端子Ａに入力された信号を選択して出力し、制御信号入力端子Ｓへの入力がハイレベルの場合に入力端子Ｂに入力された信号、換言すれば、ＦＦ５１の出力データを選択して出力する。
【００７４】
また、選択回路５２の入力端子Ａには、前段のクロックゲーティング回路４に含まれるＦＦ５１’からの信号が、入力データとして入力される。選択回路５２の入力端子Ｂには、ＦＦ５１の出力が入力される。ＦＦ５１の出力は、選択回路５２への入力とは別に、組み合わせ回路６に入力される。選択回路５２の制御信号入力端子Ｓには、組み合わせ回路６からの信号が、制御信号として入力される。選択回路５２の出力がＦＦ５１のデータ入力端子Ｄに入力される。
【００７５】
以上のように、ＦＦ５１のデータ出力端子Ｑからクロック入力端子ＣＫへのフィードバックループが解消される。従って、サイクル・ベース型シミュレーションを実行することができ、また、図１４のバッファＦＦ１５３の挿入を不要とすることができる。
【００７６】
更に、バッファＦＦ１５３の挿入を不要としたことにより、図１４（Ａ）に示すように、クロックゲーティング回路で使用するクロックの「１サイクル」内において、バッファＦＦ１５３がＦＦ１５１の出力を取り込む第１のサイクルと、バッファＦＦ１５３の出力を組み合わせ回路１５２及びクロック入力端子ＣＫへ入力する第２のサイクルとを、別々のサイクルとして分離する必要がなくなる。
【００７７】
従って、図７（Ａ）に示すように、クロックゲーティング回路で使用するクロックの「１サイクル」と、シミュレーションのためのシステムクロックの「１サイクル」とを等しくすることができる。換言すれば、「シミュレータのサイクル数」と「クロックサイクル数」が１：１となる。図７（Ａ）において、「制御されるサイクル数」は組み合わせ回路１５２に入力されるパルスのサイクル数を表し、「シミュレータのサイクル数」はシミュレーション装置のシステムクロックのサイクル数を表す。
【００７８】
このように、クロックゲーティング回路の動作に必要なクロックのサイクル数に比べ、シミュレーションのために必要なシステムクロックのサイクル数が増加しないので、結果としてシミュレーション装置における計算効率が悪化することを防止することができる。
【００７９】
図８は、シミュレーションの説明図である。
【００８０】
図８において、前述したように、「シミュレータのサイクル数」と「クロックサイクル数」が１：１であるので、「サイクル数」として表される。クロックは、図３の置換前のクロックゲーティング回路３に入力されるクロックである。パルスは、図３の置換後のクロックゲーティング回路４に入力されるパルスである。
【００８１】
図８においては、「サイクル数」により表されるサイクルと、参照クロックのサイクルとは一致しない。シミュレーション部１２は、参照クロックと予め定められた関係にあるパルスをクロックとして組み合わせ回路６に入力し、参照クロックをＦＦ５１に入力する。これにより、生成した置換回路データについてのシミュレーションが行われる。
【００８２】
図８において、パルスは、参照クロックに基づいて、ＦＦ５１の入力データ取り込み期間とデータホールド期間とを定める。入力データ取り込み期間とデータホールド期間との割合は、予め定められる。
【００８３】
シミュレーション部１２は、参照クロックに従って、パルスの予め定められた周期を入力データの取り込み期間又はホールド期間に割り当てる。期間Ｔ１１〜期間Ｔ１４は、パルスにより定められるタイミングである。具体的には、期間Ｔ１１及び期間Ｔ１３はデータホールド期間であり、期間Ｔ１２及び期間Ｔ１４はデータ取り込み期間である。クロックの波形及び参照クロックの波形において、立ち上がりエッジに重ねて示される矢印は、ＦＦ５１が駆動されるタイミングとなるエッジを表す。
【００８４】
パルスは、前述したように、組み合わせ回路６を介して、選択回路５２の制御信号入力端子Ｓに入力される。従って、パルスが「１」である期間Ｔ１１及び期間Ｔ１３は、図４（Ｂ）の論理テーブルにおいて、信号Ｓが「１」である場合に相当する。信号Ｓが「１」である場合、信号ＣＫである参照クロックが「立ち上がりのエッジＲ」のタイミングで、入力端子Ｂへの入力「Ｑ」が取り込まれ、それまでの出力Ｑがホールドされる。
【００８５】
一方、パルスが「０」である期間Ｔ１２及び期間Ｔ１４は、図４（Ｂ）の論理テーブルにおいて、信号Ｓが「０」である場合に相当する。信号Ｓが「０」である場合、信号ＣＫである参照クロックが「立ち上がりのエッジＲ」のタイミングで、入力端子Ａへの入力「ＩＤ」が取り込まれる。具体的には、入力ＩＤの「０」又は「１」が、取り込まれ、出力される。
【００８６】
以上のように、ＦＦ５１は、参照クロックとパルスにより制御され状態遷移する。換言すれば、ＦＦ５１の状態は、選択回路５２の出力Ｚと、参照クロックの立ち上がりエッジとにより制御される。データホールド期間Ｔ１１及び期間Ｔ１３と、データ取り込み期間Ｔ１２及び期間Ｔ１４との割当は、予め定められる。換言すれば、期間Ｔ１１〜期間Ｔ１４を実現するように、パルス及び他の信号が供給される。
【００８７】
図９は、シミュレーションの一例を示す図であり、図６のパルスＡによるシミュレーションについて示す。パルスＡとして、参照クロックの周波数２ＧＨｚと等しい、周波数２ＧＨｚのパルスが用いられる。
【００８８】
参照クロックの立ち上がりエッジのタイミングでは、パルスＡは、ロウレベルであり、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されている。従って、入力データは、最初の参照クロックの立ち上がりエッジに応じて、ＦＦ５１に取り込まれる。取り込まれた入力データは、次の参照クロックの立ち上がりエッジに応じて、ＦＦ５１から出力データとして出力される。
【００８９】
パルスＡがハイレベルである期間Ｔ２１は、選択回路５２の制御信号入力端子Ｓにハイレベルが入力されるので、データホールド期間となる。パルスＡがロウレベルである期間Ｔ２２は、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されるので、データ取り込み期間となる。以後、参照クロックのサイクル毎に、データホールド期間Ｔ２１とデータ取り込み期間Ｔ２２とが繰り返される。
【００９０】
予め定められたタイミングである期間Ｔ２３において、組み合わせ回路６の出力がハイレベルとされる。これにより、クロックゲーティング回路４の選択回路５２へのパルスの供給が停止され、また、データがホールドされる。従って、期間Ｔ２３は、パルスが停止された、データホールド期間である。
【００９１】
なお、期間Ｔ２３において、図５のＡＮＤゲートに入力される「他の信号」と、ＦＦ５１の出力Ｑとは、最初の参照クロックから６番目の参照クロックの立ち上がりエッジの検出のタイミングにおいては、ハイレベルである。このハイレベルが選択回路５２に取り込まれるので、データがホールドされ、ＦＦ５１が状態遷移する。
【００９２】
パルスＡは、検証対象論理回路２内で最も高い周波数２ＧＨｚであり、２ＧＨｚの参照クロックと一致し、シミュレーション装置１のシステムクロックとも一致する。パルスＡと参照クロックとシミュレーション装置１のシステムクロックとが一致している場合には、前述したように、参照クロックの立ち上がりエッジの検出のタイミングにおいては、パルスＡはロウレベルである。
【００９３】
図１０は、シミュレーションの他の一例を示す図であり、図６のパルスＡによる他のシミュレーションについて示す。パルスＡとして、参照クロックの周波数２ＧＨｚと等しい、周波数２ＧＨｚのパルスが用いられる。
【００９４】
図１０においても、図９と同様に、パルスＡは、検証対象論理回路２内で最も高い周波数２ＧＨｚであり、２ＧＨｚの参照クロックと一致し、シミュレーション装置１のシステムクロックとも一致する。パルスＡと参照クロックとシミュレーション装置１のシステムクロックとが一致している場合には、図１０に示すような波形のパルスＡ’を用いるようにしても良い。
【００９５】
参照クロックの立ち上がりエッジの検出のタイミングにおいては、ロウレベルが連続するパルスＡ’はロウレベルであり、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されている。従って、入力データは、最初の参照クロックの立ち上がりエッジに応じて、ＦＦ５１に取り込まれる。取り込まれた入力データは、次の参照クロックの立ち上がりエッジに応じて、ＦＦ５１から出力データとして出力される。
【００９６】
パルスＡ’がロウレベルである期間Ｔ３１〜期間Ｔ３５は、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されるので、データ取り込み期間となる。予め定められたタイミングである期間Ｔ３６において、組み合わせ回路６の出力がハイレベルとされる。これにより、クロックゲーティング回路４の選択回路５２へのパルスの供給が停止され、また、データがホールドされる。従って、期間Ｔ３６は、パルスが停止された、データホールド期間である。
【００９７】
なお、期間Ｔ３６において、図５のＡＮＤゲートに入力される「他の信号」と、ＦＦ５１の出力Ｑとは、最初の参照クロックから６番目の参照クロックの立ち上がりエッジの検出のタイミングにおいては、ハイレベルである。このハイレベルが選択回路５２に取り込まれるので、データがホールドされ、ＦＦ５１が状態遷移する。
【００９８】
図１１は、シミュレーションの一例を示す図であり、図６のパルスＢによるシミュレーションについて示す。パルスＢとして、参照クロックの周波数２ＧＨｚの半分の周波数１ＧＨｚのパルスが用いられる。
【００９９】
最初の参照クロックの立ち上がりエッジのタイミングでは、パルスＢは、ロウレベルであり、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されている。従って、入力データは、最初の参照クロックの立ち上がりエッジに応じて、ＦＦ５１に取り込まれる。
【０１００】
パルスＢがハイレベルである期間Ｔ４１は、選択回路５２の制御信号入力端子Ｓにハイレベルが入力されるので、データホールド期間となる。パルスＢがロウレベルである期間Ｔ４２は、選択回路５２の制御信号入力端子Ｓにロウレベルが入力されるので、データ取り込み期間となる。以後、パルスＢのサイクル毎に、データホールド期間Ｔ４１とデータ取り込み期間Ｔ４２とが繰り返される。
【０１０１】
取り込まれた入力データは、最初の参照クロックから２番目の参照クロックの立ち上がりエッジに応じて、ＦＦ５１から出力データとして出力される。
【０１０２】
予め定められたタイミングである期間Ｔ４３において、組み合わせ回路６の出力がハイレベルとされる。これにより、クロックゲーティング回路４の選択回路５２へのパルスの供給が停止され、また、データがホールドされる。従って、期間Ｔ４３は、パルスが停止された、データホールド期間である。
【０１０３】
なお、期間Ｔ４３において、図５のＡＮＤゲートに入力される「他の信号」と、ＦＦ５１の出力Ｑとは、最初の参照クロックから５番目と６番目の参照クロックの立ち上がりエッジの検出のタイミングにおいては、ハイレベルである。このハイレベルが選択回路５２に取り込まれるので、データがホールドされ、ＦＦ５１が状態遷移する。
【０１０４】
図１２は、シミュレーション処理フローチャートである。
【０１０５】
回路データ変換部１１は、回路データ格納部１３から回路データを読み出す（ステップＳ１１）。シミュレーションの開始に先立って、回路データは、回路データ格納部１３に格納される。
【０１０６】
回路データ変換部１１は、読み出した回路データに含まれるＦＦ５１を検出する（ステップＳ１２）。ＦＦ５１は、例えば複数検出される。
【０１０７】
この後、回路データ変換部１１は、ライブラリ１４から、ＦＦ５１Ａを置換するべき、選択回路５２とＦＦ５１との置換回路５を読み出す。そして、回路データ変換部１１は、検出したＦＦ５１Ａを、各々、選択回路５２とＦＦ５１との置換回路５により置換する（ステップＳ１３）。これにより、置換回路データが生成される。回路データ変換部１１は、生成した置換回路データを置換回路データ格納部１５に格納する（ステップＳ１４）。
【０１０８】
この後、シミュレーション部１２は、置換回路データ格納部１５から置換回路データを読み出す（ステップＳ１５）。また、パルス生成部１６は、パルスを生成してシミュレーション部１２に供給し（ステップＳ１６）、参照クロック生成部１７は、参照クロックを生成してシミュレーション部１２に供給する（ステップＳ１７）。
【０１０９】
この後、シミュレーション部１２は、供給されたパルスと参照クロックを用いて、予め指定されたサイクルの数だけサイクル・ベース型シミュレーションを実行し（ステップＳ１８）、シミュレーションの結果を入出力部１８から出力する（ステップＳ１９）。これにより、シミュレーション装置１のユーザは、サイクル・ベース型シミュレーションの結果を知ることができる。
【符号の説明】
【０１１０】
１    シミュレーション装置
１１    回路データ変換部
１２    シミュレーション部
１３    回路データ格納部
１４    ライブラリ
１５    置換回路データ格納部
１６    パルス生成部
１７    参照クロック生成部
１８    入出力部
【図１】
0005942417.tif 000002
【図２】
0005942417.tif 000003
【図３】
0005942417.tif 000004
【図４】
0005942417.tif 000005
【図５】
0005942417.tif 000006
【図６】
0005942417.tif 000007
【図７】
0005942417.tif 000008
【図８】
0005942417.tif 000009
【図９】
0005942417.tif 000010
【図１０】
0005942417.tif 000011
【図１１】
0005942417.tif 000012
【図１２】
0005942417.tif 000013
【図１３】
0005942417.tif 000014
【図１４】
0005942417.tif 000015