(57)【要約】【課題】実際のＬＳＩ等に適応したコ・シミュレーションを可能にする。【解決手段】動作周波数（クロック周波数）の遅い論理モデルであるシミュレーションモデル３１の速度に追随するように、ＣＰＵ４１を有するＣＰＵボード４０内のクロックコントローラ５０によって自動的にクロック周波数を調整するようにしている。そのため、ＣＰＵボード４０と、ＰＣ３０内のシミュレーションモデル３１とが、同一クロック周波数で動作する場合に近い形でシミュレーションができるので、実際のＬＳＩ等に適応したコ・シミュレーションが可能である。更に、シミュレーションモデル３１側で生成されたクロック分周比の値を、ＣＰＵ４１からスレーブモデル３２へのアクセスと同時に、クロックコントローラ５０内に取り込むようにしたので、クロック制御（調整）のためのオーバヘッドが極めて少ないシミュレーション方法を実現できる。【選択図】図１
2008305329.tif 000002
【特許請求の範囲】
【請求項１】
外部で生成された分周比を設定し、前記分周比に基づきカウント動作を行って所定周波数のクロックを出力する分周手段と、
前記クロックを入力し、制御信号の論理レベルに応答して、該論理レベルが第１の論理レベルの時には、前記クロックの外部への出力を遮断し、第２の論理レベルの時には、前記クロックを外部へ出力する出力手段と、
を有することを特徴とするクロックコントローラ。
【請求項２】
前記分周手段は、
前記分周比を設定する分周比レジスタと、
カウント値が「０」になった時に、反転指示信号を出力し、前記分周比レジスタにおける設定値をロードして毎サイクルごとにデクリメントする分周比デクリメントカウンタと、
前記反転指示信号に応答して出力信号を反転させる出力反転回路と、
を有することを特徴とする請求項１記載のクロックコントローラ。
【請求項３】
前記出力手段は、２入力１出力の論理回路であることを特徴とする請求項１又は２記載のクロックコントローラ。
【請求項４】
請求項１〜３のいずれか１項に記載のクロックコントローラは、更に、
前記制御信号に応答して、前記制御信号が前記第１の論理レベルの時にカウント動作を中断し、前記制御信号が前記第２の論理レベルの時にカウント動作を行って、前記分周比を生成するための回数データを外部へ出力するカウント手段を有することを特徴とするクロックコントローラ。
【請求項５】
前記カウント手段は、インクリメントカウンタであることを特徴とする請求項４記載のクロックコントローラ。
【請求項６】
中央処理装置と請求項１〜５のいずれか１項に記載のクロックコントローラとを有する中央処理装置ボードと、コンピュータとを用いた論理ミュレーション方法であって、
前記クロックにより第１の動作周波数で動作する前記中央処理装置ボードと、前記コンピュータ上で実行され、前記第１の動作周波数とは異なる第２の動作周波数で動作するシミュレーションモデルとをコ・シミュレーションする場合に、
前記中央処理装置ボードから前記シミュレーションモデルへアクセスする度に、前記中央処理装置ボードから前にアクセスされた時間からカウントして求めた第１のサイクル比を取り出し、前記カウンタ値と前記アクセス間に実行した前記シミュレーションモデル上のサイクル数から第２のサイクル比を求め、前記第２のサイクル比を前記分周比として前記クロックコントローラへ設定することで、前記第１の動作周波数を前記第２の動作周波数に近似させて実行することを特徴とする論理ミュレーション方法。
【請求項７】
請求項１〜５のいずれか１項に記載のクロックコントローラと、前記クロックコントローラから出力される前記クロックにより第１の動作周波数で動作する中央処理装置とを有する中央処理装置ボードと、
前記中央処理装置ボードにバスで接続され、前記第１の動作周波数とは異なる第２の動作周波数で動作するシミュレーションモデルを実行するコンピュータと、
を備えた論理シミュレーション装置であって、
前記シミュレーションモデルは、
前記中央処理装置ボードと前記シミュレーションモデルをコ・シミュレーションする場合に、前記中央処理装置ボードから前記シミュレーションモデルへアクセスする度に、前にアクセスされた時間からカウントして求めた第１のサイクル比を取り出し、前記カウンタ値と前記アクセス間に実行した前記シミュレーションモデル上のサイクル数から第２のサイクル比を求め、前記第２のサイクル比を前記分周比として前記クロックコントローラに設定する機能を有することを特徴とする論理ミュレーション装置。
【請求項８】
請求項７記載の論理ミュレーション装置は、更に、
前記中央処理装置ボードと前記バスとの間に接続された第１のインタフェース回路と、  前記シミュレーションモデルと前記バスとの間に接続された第２のインタフェース回路と、
を有することを特徴とする論理ミュレーション装置。
【請求項９】
前記シミュレーションモデルは、スレーブモデル及びマスタモデルを有し、
前記バスは、ペリフェラル・コンポーネント・インターコネクト・バスであり、
前記第１のインタフェース回路は、ペリフェラル・コンポーネント・インターコネクト−論理モデルバスブリッジ回路であり、
前記第２のインタフェース回路は、ペリフェラル・コンポーネント・インターコネクト・デバイスドライバであることを特徴とする請求項８記載の論理ミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック周波数を自動的に調整するためのクロックコントローラ、及びそれを用いた論理シミュレーション方法と論理シミュレーション装置に関し、例えば、論理シミュレーションを高速化するためのハードウェア論理制御等に関するものである。
【背景技術】
【０００２】
従来、例えば、下記の文献等に記載されているように、論理シミュレーションを高速化する方法として、ソフトウェアによって実現されている部分回路をエミュレータで置き換える方法が知られている。
【０００３】
【特許文献１】特開平１１−３１２１８６号公報
【特許文献２】特開２００４−１５７９８６号公報
【０００４】
特許文献１には、システムレベルシミュレーションを効率良く、且つ高速に行えるようにしたシステムレベルシミュレーション方法及びその装置等に関する技術が記載されている。このシステムレベルシミュレーション方法では、シミュレーション対象装置を第１、第２の部分回路に分割し、前記第１の部分回路の動作を書き換え型ハードウェアによって構成したエミュレーション対象回路によってエミュレーションし、前記第２の部分回路の動作をソフトウェアによって構成される部分回路処理代行手段でシミュレーションし、前記エミュレーション対象回路と前記部分回路処理代行手段との間で通信を行いながら、前記シミュレーション対象装置の動作をシミュレーションしている。
【０００５】
特許文献２には、論理検証システムとフィールド・プログラマブル・ゲート・アレイ（Field  Programmable  Gate  Array、以下「ＦＰＧＡ」という。）モジュールに関し、例えば、大規模集積回路（以下「ＬＳＩ」という。）の開発設計に用いられる論理シミュレータ（エミュレータ）に利用し、開発時間を改善し、設計品質を向上した論理検証システムとＦＰＧＡモジュールの技術が記載されている。この論理検証システムでは、論理エミュレーションと論理シミュレーションの２つの検証工程において、同一のＦＰＧＡモジュールと同一のコンフィギュレーションデータ（Configuration  Data；回路構成の命令情報）を使用している。又、ＦＰＧＡモジュールでは、検証すべき論理回路が分割して実装される再構成可能な複数のＦＰＧＡと、前記複数のＦＰＧＡの相互の接続をプログラマブルに行って前記検証すべき論理回路を実現するスイッチングデバイスと、前記ＦＰＧＡに対してクロックを供給するクロック生成回路を有するデバイスとを備えている。
【０００６】
図４は、従来の一般的な論理シミュレーション装置を示す概略の構成図である。
この論理シミュレーション装置では、論理シミュレーションの高速化手法を実現するために、一部の論理をソフトウェアからＦＰＧＡに置き換えて高速化する手法を採用しており、ハードウェア論理制御をするためのパーソナル・コンピュータ（Personal  Computer、以下「ＰＣ」という。）１０と、ＦＰＧＡボード２０とを備え、これらのＰＣ１０とＦＰＧＡ２０とが、ローカル・バス・アーキテクチャであるペリフェラル・コンポーネント・インターコネクト（Peripheral  Component  Interconnect、以下「ＰＣＩ」という。）バス１５を介して接続されている。特許文献１等には、インタフェースとして特に記載されていないが、説明を容易にするために、インタフェースをＰＣＩバス１５として記載する。このＰＣＩバス１５を経由して、ＰＣ１０からＦＰＧＡボード２０へデータ転送が可能である。
【０００７】
ＰＣ１０上では、デジタルハードウェア論理を表現したシミュレーションモデル１１が実行される。このシミュレーションモデル１１では、マスタモデル１２と仮想スレーブモデル１３とを有し、これらがバスモデルを介して相互に接続されている。仮想スレーブモデル１３は、ソフトウェアで構成されるＰＣＩデバイスドライバ１４を介して、ＰＣＩバス１５に接続されている。
【０００８】
ＦＰＧＡボード２０上では、論理シミュレーション（つまりシミュレーションモデル１１）として高速化させたいスレーブ論理モデル２１をＦＰＧＡ上にインプリメント（実装）して実行する。スレーブ論理モデル２１とＰＣＩバス１５の間では、インタフェースが異なるため２つのインタフェースの橋渡しをするＰＣＩ―論理モデルバスブリッジ回路（以下単に「バスブリッジ回路」という。）２２が設けられている。シミュレーションモデル１１からスレーブ論理モデル２１をアクセスする場合、ＰＣＩバス１５のデータを送るため、ＰＣＩデバイスドライバ１４を経由する。
【０００９】
図５（Ａ）、（Ｂ）は、図４の論理シミュレーション動作（スレーブアクセス）を示すタイミングチャートであり、同図（Ａ）は、マスタモデル１２と仮想スレーブモデル１３との間のスレーブモデルインタフェースのタイミングチャートであり、同図（Ｂ）は、ＰＣＩデバイスドライバ１４がＰＣＩバス１５へアクセスする場合のＰＣＩインタフェースのタイミングチャートである。スレーブモデルインタフェースは、シミュレーションモデル１１でのクロックｈclkで動作しており、ＰＣＩインタフェースは、ＰＣＩバス１５のハードウェアで実動作していて、完全な独立である。
【００１０】
図５（Ａ）のスレーブモデルインタフェースは、標準的なバス構成で、（１）の信号hclkはスレーブモデルのクロックであり、パルスτ１，τ２，τ３，τ４，・・・により構成されている。（２）の信号busreqはバス使用要求であってバス要求時にアサート（assert、有効な状態に）される。図５では１つのマスタなのでずっと論理“１”になっている。（３）の信号bus_ackはバス使用応答でバスが利用できることを示している。（４）の信号addressはアクセスするアドレス値を示している。（５）の信号writeはライトアクセス（書き込みアクセス）かリードアクセス（読み出しアクセス）かを示すもので、クロックhclkのパルスτ２では論理“０”よりリードアクセスを示している。（６）の信号transはアクセスの有無を示すもので、パルスτ２では“１”よりアクセスがあることを示している。（７）の信号burstはバーストアクセスの種類を示すものであり、パルスτ２では信号singleよりシングルアクセスであることを示している。（８）の信号sizeはアクセスサイズを示すものであり、パルスτ２では信号wordとなっており、ワードアクセスを示している。（９）の信号readyはアクセス応答信号を示すものであり、リードアクセスの場合、この信号readyが“１”になってアクセスが完了する。（１０）の信号read_dataはアクセスしたリードデータであり、（９）の信号readyが“１”になったときに有効なデータになり、（９）の信号readyが“１”になれるまで（１）の信号hclkを停止させる。これにより、１５ＰＣＩバスからの応答の待ちに対応したスレーブアクセスのシミュレーションが可能になる。
【００１１】
図４の仮想スレーブモデル１３は、リードアクセスがあると、ＰＣＩデバイスドライバ１４を呼び出し、ＰＣＩバス１５にアクセスする。
【００１２】
次に、図５（Ｂ）のＰＣＩインタフェースのタイミングチャートについて説明する。
（１）の信号clkはＰＣＩバス１５の基本クロックであり、パルスτ１，τ２，τ３，τ４，τ５，τ６，τ７，・・・により構成されている。（２）の信号frameはアクセスの開始を示す。（３）の信号adはアドレス／データバスを示すものであり、パルスτ３ではＰＣＩバス１５へのアクセスのターゲット（目標）となるアドレスを示し、パルスτ４ではリードデータread_dataが設定される。（４）の信号c/beはコード／バイトイネーブルを示しており、パルスτ３でリードアクセスであるコードが設定され、パルスτ４ではリードのバイトイネーブルが設定される。（５）は信号irdyでデータ転送可能であることを示す。（６）の信号trdyはターゲット側のデータ転送可能であることを示す。（７）の信号devselはデバイスセレクトでデバイスの応答があることを示すものであり、パルスτ４では信号trdyが論理“Ｌ”になっていることによりリードアクセスが完了し、リードデータが揃っていることを示す。
【００１３】
図４のＰＣＩデバイスドライバ１４は、ＰＣＩバス１５でのリードアクセスが完了すると、ＰＣＩバス１５からデータをリードし、仮想スレーブモデル１３にそのデータを渡す。仮想スレーブモデル１３は、そのリードデータをスレーブインタフェースのデータライン上に載せて、クロックclkを再開させる。
【００１４】
シミュレーションモデル１１でのスレーブアクセスでは、ＰＣＩデバイスドライバ１４を呼び出している間はシミュレーションモデル１１が止まるので、シミュレーションの精度が維持できる。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
近年、システムＬＳＩ等の大規模チップ開発等において、設計・開発及び検証（シミュレーション）に費やす工数が増大しているので、製品の開発期間の短縮が求められている。ハードウェアとソフトウェア開発を別々に行う従来の手法では、これに対応できない。そこで、ハードウェアとソフトウェアを並行設計・開発・検証することにより、開発期間を短縮したり、システム・レベルでの設計・検証の精度を向上することによってハードウェアの作り直しを無くすために、ハードウェア・ソフトウェアのコ・シミュレーション（Co-Simulation）が注目されている。ハードウェア・ソフトウェアのコ・シミュレーションは、組み込み機器等のハードウェアとソフトウェアをワークステーションあるいはＰＣ上の疑似環境下で同時にシミュレーションする手法である。
【００１６】
しかしながら、図４に示す従来の論理シミュレーション技術では、ＰＣ１０内の中央処理装置（以下「ＣＰＵ」という。）モデルにシミュレーションモデル１１、ＦＰＧＡにスレーブモデルの構成を想定しており、ＣＰＵのＬＳＩチップ等を利用したコ・シミュレーションの方法には、対応していなかった。ＣＰＵボード上のＣＰＵと、ＰＣ１０内のシミュレーションモデル１１との間でコ・シミュレーションさせようとした場合、ＣＰＵボード上の動作周波数がおよそ３３ＭＨｚ、シミュレーションモデル１１の動作周波数がせいぜい１０ＫＨｚ程度で、２つの動作周波数には大きな開きがあり、実際のＬＳＩ動作とかけ離れているという問題があった。実際の動作に近い形でシミュレーションするには、シミュレーションモデル１１からクロックを生成してＣＰＵボード上にそのクロックを転送する必要がある。しかし、この場合、毎サイクルごとにＰＣ１０上のクロックをＣＰＵボードに転送しなければならず、シミュレーションモデル１１の性能が極端に落ちてしまうという課題があった。
【課題を解決するための手段】
【００１７】
本発明のクロックコントローラは、外部で生成された分周比を設定し、前記分周比に基づきカウント動作を行って所定周波数のクロックを出力する分周手段と、前記クロックを入力し、制御信号の論理レベルに応答して、該論理レベルが第１の論理レベルの時には、前記クロックの外部への出力を遮断し、第２の論理レベルの時には、前記クロックを外部へ出力する出力手段とを有している。
【００１８】
本発明の論理ミュレーション方法は、ＣＰＵと前記発明のクロックコントローラとを有するＣＰＵボードと、コンピュータとを用いた論理ミュレーション方法であって、前記クロックにより第１の動作周波数で動作する前記ＣＰＵボードと、前記コンピュータ上で実行され、前記第１の動作周波数とは異なる第２の動作周波数で動作するシミュレーションモデルとをコ・シミュレーションする場合に、前記ＣＰＵボードから前記シミュレーションモデルへアクセスする度に、前記ＣＰＵボードから前にアクセスされた時間からカウントして求めた第１のサイクル比を取り出し、前記カウンタ値と前記アクセス間に実行した前記シミュレーションモデル上のサイクル数から第２のサイクル比を求め、前記第２のサイクル比を前記分周比として前記クロックコントローラへ設定することで、前記第１の動作周波数を前記第２の動作周波数に近似させて実行している。
【００１９】
更に、本発明の論理ミュレーション装置は、前記発明のクロックコントローラと、前記クロックコントローラから出力される前記クロックにより第１の動作周波数で動作する中央処理装置とを有するＣＰＵボードと、前記ＣＰＵボードにバスで接続され、前記第１の動作周波数とは異なる第２の動作周波数で動作するシミュレーションモデルを実行するコンピュータと、を備えた論理シミュレーション装置である。そして、前記シミュレーションモデルは、前記ＣＰＵボードと前記シミュレーションモデルをコ・シミュレーションする場合に、前記ＣＰＵボードから前記シミュレーションモデルへアクセスする度に、前にアクセスされた時間からカウントして求めた第１のサイクル比を取り出し、前記カウンタ値と前記アクセス間に実行した前記シミュレーションモデル上のサイクル数から第２のサイクル比を求め、前記第２のサイクル比を前記分周比として前記クロックコントローラに設定する機能を有している。
【発明の効果】
【００２０】
本発明のクロックコントローラによれば、外部から設定された分周比に基づき、カウント動作を行って、所望のクロック周波数を自動的に調整できる。
【００２１】
前記クロックコントローラを用いた論理シミュレーション方法と論理シミュレーション装置によれば、動作周波数（クロック周波数）の遅い論理モデルであるシミュレーションモデルの速度に追随するように、その論理モデルのシミュレーション性能が損なわれることを抑えた構成で、ＣＰＵボード内のクロックコントローラによって自動的にクロック周波数を調整できる。そのため、ＣＰＵボードとコンピュータ内のシミュレーションモデルとが、同一クロック周波数で動作する場合に近い形でシミュレーションができるので、実際のＬＳＩ等に適応したコ・シミュレーションが可能である。更に、シミュレーションモデル側で生成されたクロック分周比の値を、ＣＰＵからシミュレーションモデルへのアクセスと同時に、クロックコントローラ内に取り込むようにしたので、クロック制御（調整）のためのオーバヘッド（独占時間）が極めて少ないシミュレーション方法及びその装置を実現できる。
【発明を実施するための最良の形態】
【００２２】
論理シミュレーション方法は、ＣＰＵボードとＰＣ上のシミュレーションモデルをコ・シミュレーションする場合に、ＣＰＵボードから論理モデルであるシミュレーションモデルへアクセスするたびに、ＣＰＵボードから前にアクセスされた時間からカウントして求めたサイクル比を取り出し、そのカウンタ値とその間に実行したシミュレーションモデル上のサイクル数からサイクル比を求め、そのサイクル比をＣＰＵボードへのクロックに反映させる（即ち、そのサイクル比をＣＰＵボード内のクロックコントローラへ設定してＣＰＵに与えるクロックの周波数を自動的に調整する）ことで、論理モデルのシミュレーション性能が損なわれることを抑えた構成で、ＣＰＵボードの動作周波数を論理モデルの動作周波数に近似させて実行している。
【実施例１】
【００２３】
（論理シミュレーション装置の構成）
図１（Ａ）、（Ｂ）は、本発明の実施例１を示す論理シミュレーション装置の概略の構成図であり、同図（Ａ）は全体の構成図、及び、同図（Ｂ）は同図（Ａ）中のクロックコントローラの構成図である。
【００２４】
図１（Ａ）に示される論理シミュレーション装置は、シミュレーションを実施するためのコンピュータ（例えば、ＰＣ）３０と、このＰＣ３０にＰＣＩデバイスドライバ３５を介して接続されたバス（例えば、ＰＣＩバス）３７と、このＰＣＩバス３７に接続されたＣＰＵボード４０とを備えている。
【００２５】
ＰＣ３０内のソフトウェアにより実行するためのシミュレーションの対象となるシミュレーションモデル３１は、スレーブタスクであるスレーブモデル３２と、このスレーブモデル１３にバスモデル３３を介して相互に接続され、そのスレーブモデル３２をアクセスするためのバスマスタタスクであるマスタモデル３４とから構成されている。マスタモデル３４は、シミュレーション上のクロックで動作するサイクルカウンタ３４ａを持ち、このサイクルカウンタ３４ａでサイクル比を計算する。マスタモデル３４とＰＣＩバス３７との間に接続された第２のインタフェース回路（例えば、ＰＣＩデバイスドライバ）３５は、マスタモデル３４から必要な時に呼び出される。
【００２６】
ＰＣＩバス３７に接続されたＣＰＵボード４０は、ＣＰＵ４１と、アドレス信号Ｓ４２ａ及びデータ信号Ｓ４２ｂを格納するメモリ４２と、このメモリ４２に接続された第１のインタフェース回路（例えば、バスブリッジ回路）４３と、このバスブリッジ回路４３に接続され、ＣＰＵ４１に供給するためのクロック周波数を調整するクロックコントローラ５０とを有している。メモリ４２及びクロックコントローラ５０は、バスブリッジ回路４３を介して、ＰＣＩバス３７に繋がっている。
【００２７】
実際のマスタモデル３４は、ＣＰＵボード４０上でＣＰＵ４１であり、バスブリッジ回路４３を経由して、ＰＣＩバス３７でＰＣ３０と接続されている。ＣＰＵ４１は通常、メモリ４２との間でデータの受け渡しがされるが、シミュレーションモデル３１内のスレーブモデル３２をアクセスする場合、バスブリッジ回路４３へアクセスする。ＣＰＵ４１に供給されるクロックclkの動作周波数は、シミュレーションモデル３１側から与えられるクロックの動作周波数に比べて早いため、クロックコントローラ５０は、シミュレーションモデル３１側から与えられる動作周波数の遅いクロックを、自動的に内部の分周回路により調整し（即ち、動作周波数の早いクロックを生成し）、この調整したクロックclkをＣＰＵ４１へ与える回路である。バスブリッジ回路４３からクロックコントローラ５０へは制御信号（例えば、アクセス中信号）Ｓ４３ａ、リセット信号rst、その他データバスが繋がっている。このバスブリッジ回路４３は、シミュレーションモデル３１からＣＰＵ４１へリセットが掛けられるように、ライトしたら一定期間リセット信号rstをアサートするリセットレジスタ４３ａを保持している。
【００２８】
図１（Ｂ）に示すクロックコントローラ５０は、分周手段（例えば、分周比レジスタ５１、分周比デクリメントカウンタ５２、及び出力反転回路であるフリップフロップ（以下、「ＦＦ」という。）５３からなる分周回路により構成されている。）と、ＦＦ５３に接続された出力手段（例えば、２入力１出力の論理回路である論理和回路（以下「ＯＲ回路」という。）５４と、カウント手段（例えば、インクリメントカウンタ）５５とを有している。
【００２９】
分周比レジスタ５１は、ＰＣ３０から供給されるクロック分周比のライトデータＳ４２ｂを設定するレジスタであり、この出力側に分周比デクリメントカウンタ５２が接続されている。分周比デクリメントカウンタ５２は、値が「０」になった時に、分周比レジスタ５１の値をロードして毎サイクルごとにデクリメント（減分）すると共に、デクリメントによりロードした値が「０」になった時に反転指定信号Ｓ５２のパルスを出力するカウンタであり、この出力側に出力反転回路であるＦＦ５３が接続されている。ＦＦ５３は、反転指定信号Ｓ５２のパルスが来た場合に出力を反転させる回路であり、この出力側にＯＲ回路５４が接続されている。ＯＲ回路５４は、バスブリッジ回路４３からの制御信号であるアクセス中信号Ｓ４３ａが第１の論理レベル（例えば、“１”）の場合、出力信号を“１”に固定にする回路である。
【００３０】
インクリメントカウンタ５５は、アクセス中信号Ｓ４３ａが“１”の時はインクリメント（増分）を中断し、アクセス中信号Ｓ４３ａが第２の論理レベル（例えば、“０”）から“１”になると、“０”に一旦クリアされてからカウントアップするカウンタである。これらの分周比レジスタ５１、分周比デクリメントカウンタ５２、及び、インクリメントカウンタ５５は、リセットレジスタ４３ａから出力されるリセット信号rstがアサートされた場合、“０”にクリアされる構成になっている。
【００３１】
（論理シミュレーション方法）
図２は、図１の論理シミュレーション装置における論理シミュレーション方法を示すクロック制御のフローチャートである。
【００３２】
このフローチャートでは、ＣＰＵボード４０上のＣＰＵ４１のアクセスからＰＣ３０上のシミュレーションモデル３１内の仮想マスタモデル３４へのアクセスへの変換及びクロック分周比の生成手順が示されている。図２では、シミュレーションモデル３１内のマスタモデル３４、ＰＣＩデバイスドライバ３５、バスブリッジ回路４３、クロックコントローラ５０、及びＣＰＵ４１の各動作を横に並べて示している。
【００３３】
先ず、（Ａ）リセットシーケンス、次に、（Ｂ）シミュレーションモデルアクセスの処理手順を以下説明する。
【００３４】
（Ａ）リセットシーケンス
リセット時の動作は、以下の（１）〜（５）の処理手順に従って実行される。
【００３５】
（１）  シミュレーションモデル３１にリセットが入ると、マスタモデル３４はリセットを伝えるため、ＰＣＩデバイスドライバ３５を呼び出す。
【００３６】
（２）  ＰＣＩデバイスドライバ３５は、バスブリッジ回路４３へリセットを通知するために、ＰＣＩバス３７経由でバスブリッジ回路４３内のリセットレジスタ４３ａにライトする。
【００３７】
（３）  バスブリッジ回路４３は、内部のリセットレジスタ４３ａをライトされたことで、クロックコントローラ５０及びＣＰＵ４１に、リセット信号rstを一定期間入れる。
【００３８】
（４）  クロックコントローラ５０は、リセット信号rstによって内部の分周比レジスタ５１、分周比デクリメントカウンタ５２、及びインクリメントカウンタ５５を初期化する。リセット及びリセットネゲート（リセットの無効状態）後、分周比デクリメントカウンタ５２は、分周比レジスタ５１の値が“０”なので、反転指定信号Ｓ５２を毎サイクル出力し、クロック用ＦＦ５３が毎サイクル反転するようにする。インクリメントカウンタ５５は、リセット後、毎サイクルインクリメント（増分）を開始する。
【００３９】
（５）  ＣＰＵ４１は、リセット後、クロックコントローラ５０からクロックclkが入るので、アクセスを開始する。
【００４０】
（Ｂ）  シミュレーションモデルアクセス
ＣＰＵ４１からシミュレーションモデル３１内のスレーブモデル３２へアクセスした場合のクロック変換動作は、以下の（６）〜（１４）の処理手順に従って実行される。
【００４１】
（６）  ＣＰＵ４１が論理モデルであるシミュレーションモデル３１内のスレーブモデル３２に対してリード又はライトのアクセスをする。
【００４２】
（７）  バスブリッジ回路４３がＰＣＩバス３７上に割り込みを入れる（割り込みをアサート）。バスブリッジ回路４３からクロックコントローラ５０へ出力されるアクセス中信号Ｓ４３ａを“１”にする。
【００４３】
（８）  クロックコントローラ５０は、クロック用ＯＲ回路５４により、ＣＰＵ４１へ供給するクロックclkを“１”のままにして停止する。
【００４４】
（９）  ＰＣＩデバイスドライバ３５は、割り込みにより呼び出され、バスブリッジ回路４３を経由して、クロックコントローラ５０内のインクリメントカウンタ５５のデータであるサイクル数（クロック値）をリードする。アクセスがライトアクセスの場合、ライトデータもアクセスする。
【００４５】
（１０）  シミュレーションモデル３１内のマスタモデル３４は、アクセスの種類（ライト又はリード）に従い、バスモデル３３を介してスレーブモデル３２をアクセスする。アクセス後、スレーブモデル３２は、リードしてきたＣＰＵ４１内のサイクル数（ＣＴ）とシミュレーションモデル３１のサイクル数（ＳＴ）から、例えば、以下の計算例に示すように、クロック比であるサイクル比Ｒ（ｎ）を計算する。
【００４６】
ＣＰＵ４１のサイクル数をＣＴ（ｎ）、シミュレーションモデル３１のサイクル数をＳＴ（ｎ）とすると、スレーブモデル３２は、下記の式に従い、過去のデータを保持して、クロック比であるサイクル比Ｒ（ｎ）を計算する。
【００４７】
【数１】
2008305329.tif 000003
【００４８】
以後の処理により、分周比レジスタ５１へは、クロック比であるサイクル比Ｒ（ｎ）の値（Ｒ（ｎ）／２  −１）が転送される。スレーブモデル３２は、サイクル比Ｒ（ｎ）の計算後、シミュレーションモデル３１のサイクル数を“０”からカウントする。
【００４９】
（１１）  ＰＣＩデバイスドライバ３５は、サイクル比Ｒ（ｎ）の値（Ｒ（ｎ）／２  −１）を、ＰＣＩバス３７経由でバスブリッジ回路４３へ転送してライトする。又、ＣＰＵ４１がリードアクセスの場合は、リードの値もバスブリッジ回路４３にライトする。
【００５０】
（１２）  バスブリッジ回路４３は、サイクル比Ｒ（ｎ）の値（Ｒ（ｎ）／２  −１）がライトされると、これをクロックコントローラ５０へ転送する。転送後、アクセス中信号Ｓ４３ａを“０”にする。
【００５１】
（１３）  クロックコントローラ５０内で、分周比レジスタ５１にサイクル比（Ｒ）の値（Ｒ（ｎ）／２  −１）を設定し、分周カウンタ値を更新する。アクセス中信号Ｓ４３ａの“０”によりクロック用ＯＲ回路５４が開いて、ＣＰＵ４１へのクロックclkが再開する。
【００５２】
（１４）  ＣＰＵ４１はクロックclkが再開したことで、アクセスを完了する。リードの場合、バスブリッジ回路４３にはリードデータが入っているので、取り出せる。
【００５３】
（クロックコントローラ５０の動作）
図３は、図１（Ｂ）のクロックコントローラ５０の動作を示すタイミングチャートである。
【００５４】
ＰＣ３０上のシミュレーションモデル３１からＰＣＩバス３７経由でＣＰＵボード４０へ転送する方法は、図５に示す従来の論理シミュレーション方法と同じなので、説明は省略する。図３のタイミングチャートでは、図１（Ｂ）に示すクロックコントローラ５０のカウンタ５２，５５と信号、及び、ＣＰＵ４１からバスブリッジ回路４３へのアドレス、データが記載されている。以下、図３の内容を説明する。
【００５５】
時刻ｔ１のタイミングで、ＣＰＵ４１によりアクセスされるメモリ４２からアドレス信号Ｓ４２ａにスレーブモデル３２のアドレスが入ると、バスブリッジ回路４３はアクセス中信号Ｓ４３ａを“１”にする。これにより、クロックコントローラ５０内のＯＲ回路５４が閉じて、ＣＰＵ４１へのクロックclkは“１”に固定され（即ち、クロックclkの供給が停止され）、又、インクリメントカウンタ５５が停止する。この状態は図２のフローチャートの（６）の処理に対応する。バスブリッジ回路４３は、インクリメントカウンタ５５の値「９７」を取り出し、ＰＣＩバス３７の割り込み信号によって、ＰＣＩデバイスドライバ３５を起動させて、インクリメントカウンタ５５の値「９７」をＰＣ３０に取り込ませる。
【００５６】
図２のフローチャートの（１０）の処理に従って、ＰＣ３０上のマスタモデル３４は、バスモデル３３を介して、スレーブモデル３２へリードアクセスすると同時に、スレーブモデル３２が値「９７」からクロック比であるサイクル比Ｒ（ｎ）を計算し、クロック分周比の値「４」を導いたとする。ＰＣＩデバイスドライバ３５は、リードデータ信号の転送と共にクロック分周比の値「４」を分周比レジスタ５１へ転送する。
【００５７】
時刻ｔ２のタイミングで、分周比レジスタ５１にクロック分周比の値「４」が設定されると同時に、バスブリッジ回路４３のアクセス中信号Ｓ４３ａが“０”になる。これにより、ＯＲ回路５４が開いてＣＰＵ４１へのクロックclkの供給が再開される。
【００５８】
時刻ｔ３のタイミングで、分周比デクリメントカウンタ５２の値が「０」になることより、分周比レジスタ５１の値「４」が、その分周比デクリメントカウンタ５２にロードされ、以降からクロック分周比の値「４」でクロック分周が行われてクロックclkが生成され、これがＣＰＵ４１へ送られる。
【００５９】
（実施例１の効果）
本実施例１によれば、動作周波数（クロック周波数）の遅い論理モデルであるシミュレーションモデル３１の速度に追随するように、その論理モデルのシミュレーション性能が損なわれることを抑えた構成で、ＣＰＵボード４０内のクロックコントローラ５０によって自動的にクロック周波数を調整するようにしている。そのため、ＣＰＵボード４０とＰＣ３０内のシミュレーションモデル３１とが、同一クロック周波数で動作する場合に近い形でシミュレーションができるので、実際のＬＳＩ等に適応したコ・シミュレーションが可能である。
【００６０】
更に、シミュレーションモデル３１側で生成されたクロック分周比の値を、ＣＰＵ４１からスレーブモデル３２へのアクセスと同時に、クロックコントローラ５０内に取り込むようにしたので、クロック制御（調整）のためのオーバヘッドが極めて少ないシミュレーション方法を実現できる。
【００６１】
（変形例）
本発明は、上記実施例１に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）〜（ｄ）のようなものがある。
【００６２】
（ａ）  図１（Ｂ）のクロックコントローラ５０は、論理シミュレーション装置のみならず、クロックコントローラを必要とする集積回路（ＩＣ）等に対しても適用可能である。
【００６３】
（ｂ）  クロックコントローラ５０内に取り込むために、シミュレーションモデル３１側でクロック分周比の値を求める方法として、４回のサンプルからシミュレーションモデル３１のサイクル数とＣＰＵ４１のサイクル数をサンプルし、両者の値からサイクル比を求めて、クロック分周比の値を決定したが、その４回のサンプル回数は任意の回数でも良く、更に、その他の演算方法等でクロック分周比の値を求めても良い。
【００６４】
（ｃ）  クロックコントローラ５０内の分周回路は、分周レジスタ５１、分周比デクリメントカウンタ５２、及びＦＦ５３を有し、分周比デクリメントカウンタ５２の値が「０」になるたびに反転する回路構成であるが、他の分周回路構成でも適用が可能である。
【００６５】
（ｄ）  図１の論理シミュレーション装置では、ＰＣＩバス３７を使用しているが、このＰＣＩバス３７はＰＣ３０に最もよく利用されているバスにすぎず、他のバス構成でも対応が可能である。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施例１を示す論理シミュレーション装置の概略の構成図である。
【図２】図１の論理シミュレーション装置における論理シミュレーション方法を示すクロック制御のフローチャートである。
【図３】図１（Ｂ）のクロックコントローラ５０の動作を示すタイミングチャートである。
【図４】従来の一般的な論理シミュレーション装置を示す概略の構成図である。
【図５】図４の論理シミュレーション動作（スレーブアクセス）を示すタイミングチャートである。
【符号の説明】
【００６７】
３０      ＰＣ
３１      シミュレーションモデル
３２      スレーブモデル
３４      マスタモデル
３５      ＰＣＩデバイスドライバ
３７      ＰＣＩバス
４０      ＣＰＵボード
４１      ＣＰＵ
４３      ＰＣＩ−論理モデルバスブリッジ回路
５０      クロックコントローラ
５１      分周比レジスタ
５２      分周比デクリメントカウンタ
５３      ＦＦ
５４      ＯＲ回路
５５      インクリメントカウンタ
【図１】
2008305329.tif 000004
【図２】
2008305329.tif 000005
【図３】
2008305329.tif 000006
【図４】
2008305329.tif 000007
【図５】
2008305329.tif 000008