(57)【要約】【課題】データ転送プロセス等の切り替え回数を削減してシミュレーションの高速化を図る。【解決手段】論理シミュレーション方法では、レジスタ４１−２ａ及びメモリ４１−２ｂを有するシミュレーションモデル４１と、ＦＰＧＡ５０と、このＦＰＧＡ５０を制御するデバイスドライバ４３とを有する論理シミュレーション装置を用いる。そして、論理モデル５１をＦＰＧＡ５０においてハードウェア化することで高速にシミュレーションする場合に、モデル４１で起動、停止に係わらないレジスタ４１−２ａへのライトアクセスがあった場合は、モデル４１側でメモリ４１−２ｂにアクセスデータを蓄積しておいて、起動、停止に係わるレジスタ４１−２ａへのアクセスがあった場合、ドライバ４３にアクセスデータと一緒にメモリ４１−２ｂのアクセスデータを転送して、一度にメモリ蓄積分のデータをドライバ４３が処理する。【選択図】図１
2008003786.tif 000002
【特許請求の範囲】
【請求項１】
メモリを有する仮想スレーブモデルをシミュレーションモデル内に形成し、共有メモリを用いて前記仮想スレーブモデル内の前記メモリに格納された情報をフィールド・プログラマブル・ゲート・アレイへ転送することを特徴とする論理シミュレーション方法。
【請求項２】
シミュレーションモデルを有し、メモリを持つ仮想スレーブモデルが前記シミュレーションモデル内に形成されたコンピュータと、
論理モデルを有するフィールド・プログラマブル・ゲート・アレイと、
前記仮想スレーブモデル内の前記メモリに格納された情報を保持し、この保持した情報を所定のタイミングで前記フィールド・プログラマブル・ゲート・アレイへ出力する共有メモリと、
を備えたことを特徴とする論理シミュレーション装置。
【請求項３】
レジスタ及びメモリを有するシミュレーションモデルと、フィールド・プログラマブル・ゲート・アレイと、前記フィールド・プログラマブル・ゲート・アレイを制御するデバイスドライバと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記シミュレーションモデルで起動、停止に係わらない前記レジスタへのライトアクセスがあった場合は、前記シミュレーションモデル側で前記メモリにアクセスデータを蓄積しておいて、起動、停止に係わる前記レジスタへのアクセスがあった場合、前記デバイスドライバに前記アクセスデータと一緒に前記メモリのアクセスデータを転送して、一度に前記メモリ蓄積分のデータを前記デバイスドライバが処理することを特徴とする論理シミュレーション方法。
【請求項４】
シミュレーションモデルと、フィールド・プログラマブル・ゲート・アレイと、前記フィールド・プログラマブル・ゲート・アレイを制御するデバイスドライバと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記フィールド・プログラマブル・ゲート・アレイに割付けられた前記論理モデルに対して、レジスタ部分だけ前記シミュレーションモデルで持っておき、リードアクセスで且つライトしたデータが変化しないような場合には、前記シミュレーションモデル側でリードデータに応答し、前記フィールド・プログラマブル・ゲート・アレイへのアクセスを抑止することを特徴とする論理シミュレーション方法。
【請求項５】
メモリを有するスレーブモデルが形成されたシミュレーションモデルと、フィールド・プログラマブル・ゲート・アレイと、前記フィールド・プログラマブル・ゲート・アレイを制御するデバイスドライバと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記シミュレーションモデルで前記スレーブモデルへのバーストライト転送があった場合は、前記シミュレーションモデル側で前記バーストライト転送が終わるまで前記メモリにアクセスデータを蓄積しておいて、その後、前記デバイスドライバに前記メモリのアクセスデータを転送して、一度に前記メモリ蓄積分のデータを前記デバイスドライバが処理することを特徴とする論理シミュレーション方法。
【請求項６】
メモリを有するスレーブモデルが形成されたシミュレーションモデルと、フィールド・プログラマブル・ゲート・アレイと、前記フィールド・プログラマブル・ゲート・アレイを制御するデバイスドライバと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記シミュレーションモデルで前記スレーブモデルへのバーストリード転送があった場合は、前記シミュレーションモデル側で前記バーストリード転送の開始時に、前記メモリにアクセスアドレスを蓄積しておいて、その後、前記デバイスドライバに前記メモリ上にあるアドレスをリードさせて、最初のアクセス以外は前記デバイスドライバを呼び出さず、前記スレーブモデル側で前記メモリ上にあるリードデータを出すことを特徴とする論理シミュレーション方法。
【請求項７】
シミュレーションモデルを有するコンピュータと、マスタモデルを有するフィールド・プログラマブル・ゲート・アレイと、を備えた論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記フィールド・プログラマブル・ゲート・アレイ上の前記マスタモデルの情報を一旦貯めて、所定のタイミングで前記コンピュータへ転送することを特徴とする論理シミュレーション方法。
【請求項８】
シミュレーションモデルを有するコンピュータと、マスタモデルを有し、バスを介して前記コンピュータに接続されたフィールド・プログラマブル・ゲート・アレイと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記フィールド・プログラマブル・ゲート・アレイ上の前記マスタモデルからのライトアクセスがあった場合、前記マスタモデルから前記バスへのアクセス時に、前記フィールド・プログラマブル・ゲート・アレイ側にバースト転送分一旦データを貯めて、前記バースト転送完了後に前記バスへのアクセスを実施することを特徴とする論理シミュレーション方法。
【請求項９】
シミュレーションモデルを有するコンピュータと、クロックで動作するマスタモデルを有し、バスを介して前記コンピュータに接続されたフィールド・プログラマブル・ゲート・アレイと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記フィールド・プログラマブル・ゲート・アレイ上の前記マスタモデルからのライト又はリードアクセスがあった場合、前記ライト又はリードアクセス完了まで前記クロックを止めて、且つ、前記ライト又はリードアクセス時に前のアクセスとのサイクル間隔を保持して、前記シミュレーションモデルに前記間隔を反映させて前記シミュレーションモデルと前記マスタモデルとのハードウェア動作の間隔を適応させることを特徴とする論理シミュレーション方法。
【請求項１０】
シミュレーションモデルを有するコンピュータと、マスタモデルを有し、バスを介して前記コンピュータに接続されたフィールド・プログラマブル・ゲート・アレイと、を有する論理シミュレーション装置を用い、
論理モデルを前記フィールド・プログラマブル・ゲート・アレイにおいてハードウェア化することで高速にシミュレーションする場合に、前記フィールド・プログラマブル・ゲート・アレイ上の前記マスタモデルからのリードアクセスがあった場合、前記コンピュータ上の前記シミュレーションモデルから前記バスを経由して前記フィールド・プログラマブル・ゲート・アレイ上の前記マスタモデルへ転送する場合に、前記フィールド・プログラマブル・ゲート・アレイ側にバーストリード転送分一旦データを貯めて、前記バースト転送完了後に前記バスへのアクセスを実施することを特徴とする論理シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理シミュレーションを高速化するためのハードウェア論理制御方法に特徴のある論理シミュレーション方法及びその装置に関するものである。
【背景技術】
【０００２】
従来、論理シミュレーション方法あるいはその装置に関する技術としては、例えば、次のような文献に記載されるものがあった。
【０００３】
【特許文献１】特開平１１−３１２１８６号公報
【特許文献２】特開２００４−２３４５３０号公報
【０００４】
特許文献１には、シミュレーション対象装置の一部を書き換え型ハードウェアを用いてエミュレーションするようにしたシステムレベルシミュレーション方法の技術が記載されている。
【０００５】
又、特許文献２には、電子制御機器に組み込まれて使用されている組込み用マイクロコンピュータにおけるロジックを開発するためのマイクロコンピュータのロジック開発装置おいて、マザーボードとコアボード間におけるＩ／Ｏ情報の確実な通信を実現できると共に、Ｉ／Ｏ情報通信のスピードを向上させること、及び、マザーボードとコアボードの演算処理能力の向上を図ることができて、より高性能のエンジン制御システムに対応することが可能な技術が記載されている。
【０００６】
論理シミュレーションを高速化する手法として、ソフトウェアによって実現されている部分回路をエミュレータで置き換える方法があり、この構成例を図１９に示す。
【０００７】
図１９は、特許文献１に記載された従来の論理シミュレーション装置の概略の構成図である。
【０００８】
特許文献１ではインタフェースとして特に記載されていないが、以下の説明を容易にするために、図１９においてインタフェースをローカル・バス・アーキテクチャであるPeripheral Component Interconnect bus（以下「ＰＣＩバス」という。）として記載する。図１９では、論理シミュレーションの高速化を図るために、一部の論理をソフトウェアからField Programmable Gate Array（以下「ＦＰＧＡ」という。）に置き換えて高速化している。
【０００９】
図１９の論理シミュレーション装置では、例えば、ハードウェア論理制御をするためのPersonal Computer（以下「ＰＣ」という。）本体１０と、ＦＰＧＡボード２０とを備え、これらがＰＣＩバス３０を介在して接続されている。ＰＣＩバス３０を経由して、ＰＣ本体１０からＦＰＧＡボード２０へデータ転送が可能である。ＰＣ本体１０上では、ディジタルハードウェア論理を表現したマスタモデル及びスレーブモデルを有するシミュレーションモデル１１が実行される。ＦＰＧＡボード２０上では、論理シミュレーションとして高速化させたい論理モデル２１をこのＦＰＧＡに入るように変換して実行する。論理モデル２１とＰＣＩバス３０の間ではインタフェースが異なるため、２つのインタフェースの橋渡しをするＰＣＩ―論理モデルバスブリッジ回路２２が設けられている。シミュレーションモデル１１から論理モデル２１をアクセスする場合、ＰＣＩバス３０にデータを送るため、ＰＣ本体１１内のソフトウェアであるＰＣＩデバイスドライバ１２を経由する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の論理シミュレーション装置における論理シミュレーション方法では、次の（ａ）、（ｂ）のような課題があった。
【００１１】
（ａ）  ＦＰＧＡに置き換えられたスレーブモデルをアクセスする場合、ＰＣ本体１０内に設けられたレジスタをアクセスする度にＰＣＩデバイスドライバ１２を呼び出している。ＰＣＩデバイスドライバ１２を呼び出す度に、シミュレーションモデル１１のプロセスからＰＣＩデバイスドライバ１２のプロセスが切り替わり、その度にＰＣ本体１０内のオペレーティングシステム（以下「ＯＳ」という。）が呼ばれるが、このＯＳの処理は直接シミュレーション動作とは係わらない。このため、ＯＳが呼ばれる回数が多くなると、シミュレーション速度が遅くなることが発生している。この状態を図２０に示す。
【００１２】
図２０は、図１９の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図である。
【００１３】
図２０の縦軸は、シミュレーションモデル１１のプロセス内のバスマスタモデルＭＭ、バススレーブモデルＳＭ、ＯＳ、ＰＣＩデバイスドライバ１２の各プロセスを示している。シミュレーションモデル１１のプロセスは、マスタモデルＭＭとスレーブモデルＳＭから構成されているものとする。横軸は時間軸である。各プロセスの横軸方向の矢印は、そのプロセスが動作している時間、縦軸方向の上下の矢印は、プロセスの遷移を表す。シミュレーションモデル１１内のマスタモデルＭＭとスレーブモデルＳＭ間の上下の矢印は、シミュレーションモデルプロセス内部での遷移である。
【００１４】
図２０に示すように、シミュレーションモデル１１のプロセスから、ＰＣＩデバイスドライバ１２のプロセスに移る度に、ＯＳの切り替え時間が入るため、シミュレーション時間中にＯＳが係わる時間が増えて、シミュレーションを遅らせる原因になっている。
【００１５】
（ｂ）  バースト転送でスレーブモデルＳＭに連続的にデータが転送される場合、アクセスの度にＰＣＩデバイスドライバ１２を呼び出している状態を図２１に示す。
【００１６】
図２１は、図１９の論理シミュレーション装置における論理シミュレーションでのバースト転送時のシーケンスを示すフロー図である。
【００１７】
この図２１では、バースト転送で連続のアドレスをアクセス（バーストライト第１〜第４ワード）しているにもかかわらず、１回のアクセス毎にＰＣＩデバイスドライバ１２を呼んでいるため、デバイスドライバプロセスに移る度にＯＳの切り替え時間が入り、シミュレーション時間中にＯＳが係わる時間が増えている。このようなプロセス切り替えのためのＯＳの介在がシミュレーションを遅らせる原因になっている。
【課題を解決するための手段】
【００１８】
本発明の論理シミュレーション方法あるいは論理シミュレーション装置では、メモリを有する仮想スレーブモデルをシミュレーションモデル内に形成し、共有メモリを用いて前記仮想スレーブモデル内の前記メモリに格納された情報をＦＰＧＡへ転送することを特徴とする。
【００１９】
本発明の他の論理シミュレーション方法では、シミュレーションモデルと、ＦＰＧＡと、前記ＦＰＧＡを制御するデバイスドライバとを有する論理シミュレーション装置を用い、論理モデルを前記ＦＰＧＡにおいてハードウェア化することで高速にシミュレーションする場合に、前記シミュレーションモデル側の情報を蓄積しておいて所定のタイミングで、前記デバイスドライバに転送することを特徴とする。
【００２０】
本発明の更に他の論理シミュレーション方法では、シミュレーションモデルを有するコンピュータと、マスタモデルを有するＦＰＧＡとを備えた論理シミュレーション装置を用い、論理モデルを前記ＦＰＧＡにおいてハードウェア化することで高速にシミュレーションする場合に、前記ＦＰＧＡ上の前記マスタモデルの情報を一旦貯めて、所定のタイミングで前記コンピュータへ転送することを特徴とする。
【発明の効果】
【００２１】
請求項１、２に係る発明によれば、シミュレーションモデルからＦＰＧＡへ情報を転送する際に、プロセスの切り替え回数を削減出来るので、高速なシミュレーションが可能になる。
【００２２】
請求項３〜６に係る発明によれば、シミュレーションモデルとデバイスドライバとのプロセスの切り替え回数を削減出来るので、高速なシミュレーションが可能になる。
【００２３】
請求項７、８、１０に係る発明によれば、例えば、バーストアクセスの場合、一度にバースト長のデータをＰＦＧＡ上のマスタモデルからコンピュータ上のシミュレーションモデルに送るため、１ワードずつ転送することに比べて転送回数が１回で済むので、高速にシミュレーション出来る。
【００２４】
請求項７、９に係る発明によれば、例えば、ＦＰＧＡ上のマスタモデルから連続してアクセスする場合に、コンピュータ上のシミュレーションモデルとアクセスのタイミングを対応させるため、マスタモデルのアクセス間の間隔をデータとして取り、その間隔をシミュレーションモデルでのアクセスの差分に利用するので、シミュレーションモデルのクロックとＦＰＧＡの実動作のクロックで同期が取れたシミュレーションが可能になる。
【発明を実施するための最良の形態】
【００２５】
論理シミュレーション方法では、レジスタ及びメモリを有するシミュレーションモデルと、ＦＰＧＡと、このＦＰＧＡを制御するデバイスドライバとを有する論理シミュレーション装置を用いる。そして、論理モデルをＦＰＧＡにおいてハードウェア化することで高速にシミュレーションする場合に、シミュレーションモデルで起動、停止に係わらないレジスタへのライトアクセスがあった場合は、シミュレーションモデル側でメモリにアクセスデータを蓄積しておいて、起動、停止に係わるレジスタへのアクセスがあった場合、デバイスドライバにアクセスデータと一緒にメモリのアクセスデータを転送して、一度にメモリ蓄積分のデータをデバイスドライバが処理することで、シミュレーションモデルとデバイスドライバとのプロセスの切り替えの回数を削減する制御を採用している。
【実施例１】
【００２６】
（実施例１の構成）
図１は、本発明の実施例１を示す論理シミュレーション装置の概略の構成図である。
【００２７】
この論理シミュレーション装置では、ハードウェア論理制御をするためのコンピュータ（例えば、ＰＣ本体）４０と、ＦＰＧＡボード５０とを備え、これらがＰＣＩバス６０を介在して接続されている。ＰＣＩバス６０を経由して、ＰＣ本体４０からＦＰＧＡボード５０へデータ転送が可能である。
【００２８】
ＰＣ本体４０は、シミュレーションモデル４１、共有メモリ４２、及びソフトウェアであるＰＣＩデバイスドライバ４３を有している。ＦＰＧＡボード５０は、レジスタファイル５１ａを持つ論理モデル５１、及びＰＣＩ−論理モデルバスブリッジ回路５２を有している。ＦＰＧＡボード５０上では、論理シミュレーションとして高速化させたい論理モデル５１をこのＦＰＧＡに入るように変換して実行する。論理モデル５１とＰＣＩバス６０の間ではインタフェースが異なるため、２つのインタフェースの橋渡しをするＰＣＩ―論理モデルバスブリッジ回路５２が設けられている。シミュレーションモデル４１から論理モデル５１をアクセスする場合、ＰＣＩバス６０にデータを送るため、ＰＣ本体４０内のソフトウェハであるＰＣＩデバイスドライバ４３を経由する。
【００２９】
ＰＣ本体４０上では、シミュレーションの対象となるディジタルハードウェア論理を表現したシミュレーションモデル４１が実行される。シミュレーションモデル４１は、バスマスタタスクであるマスタモデル４１−１と、スレーブタスクである仮想スレーブモデル４１−２からなっている。実際のスレーブモデルは、ＦＰＧＡボード５０上で論理モデル５１としてＦＰＧＡに割付けられ、ＰＣＩ−論理モデルバスブリッジ回路５２を経由して、ＰＣＩバス６０で論理モデル５１と繋がっている。仮想スレーブモデル４１−２は、レジスタのリードライトの制御を持つレジスタファイル４１−１ａ、マスタモデル４１−１が仮想スレーブモデル４１−２にアクセスした場合にデータを保持するファーストイン・ファーストアウトメモリ（以下「ＦＩＦＯメモリ」という。）４１−２ｂから成り立っている。仮想スレーブモデル４１−２のレジスタファイル４１−２ａは、ＦＰＧＡボード５０上の論理モデル５１のレジスタファイル５１ｂのコピーを持つことになる。ＰＣＩデバイスドライバ４３は、仮想スレーブモデル４１−２から必要な時に呼び出される。ＰＣＩデバイスドライバ４３と仮想スレーブモデル４１−２ａのデータ受け渡しは、共有メモリ４２を介して行われる。
【００３０】
図２は、図１の仮想スレーブモデル４１−２におけるアクセス制御機能を示すフローチャートである。
【００３１】
図２を参照して、仮想スレーブモデル４１−２のアクセス制御機能について説明する。
バスマスタのマスタモデル４１−１から仮想スレーブモデル４１−２へのアクセスがあった場合、起動・停止アクセス判定処理Ｓ１において、そのアクセスがＦＰＧＡになっている論理モデル５１の起動・停止に係わるアクセスであるかどうかを判定する。ＦＰＧＡになっている論理モデル５１の起動・停止に係わるアクセスであるかどうかの判定は、事前に各レジスタの属性としてレジスタのアドレス毎にビットを設定しておき、アクセスがあった場合に、そのアドレスが一致した時にそのビット情報で起動・停止に関わるアクセスであることを判定する。起動・停止に係わらないアクセスの場合、リード／ライト判定処理Ｓ２において、リードアクセスかライトアクセスかを判定する。この２つの判定に従って、次の３つの場合（ａ）〜（ｃ）に分けて制御する。
【００３２】
（ａ）  起動・停止に係わらないリードアクセスの場合（処理Ｓ３）
（ａ−１）  ＦＩＦＯメモリ４１−２ｂへレジスタのアドレスを蓄積する。
（ａ−２）  レジスタファイル４１−２ａからリードデータを取り出し、そのリードデータをマスタモデル４１−１に返す。
この場合、ＰＣＩデバイスドライバ４３を起動しない。
【００３３】
（ｂ）  ライトアクセスの場合（処理Ｓ４）
（ｂ−１）  ＦＩＦＯメモリ４１−２ｂへレジスタのアドレスとデータを蓄積する。
（ｂ−２）  レジスタファイル４１−２ａへライトデータを反映させて、マスタモデル４１−１へ応答を返す。
この場合も、ＰＣＩデバイスドライバ４３を起動しない。
【００３４】
（ｃ）  起動・停止に係わるアクセスの場合（処理Ｓ５）
（ｃ−１）  起動停止アクセスのアドレスとデータをＦＩＦＯメモリ４１−２ｂ内にライトする。ライトの場合は、レジスタファイル４１−２ａへもデータを更新する。
（ｃ−２）  ＦＩＦＯメモリ４１−２ａのデータを、ＰＣＩデバイスドライバ４３との共有メモリ４２にライトする。
（ｃ−３）  ＰＣＩデバイスドライバ４３を起動させる。
（ｃ−４）  ＰＣＩデバイスドライバ４３の処理が終了すると、マスタモデル４１−１へ応答を返す。
【００３５】
ＰＣＩデバイスドライバ４３が呼び出されると、このＰＣＩデバイスドライバ４３は、仮想スレーブアクセスが書き出したデータを共有メモリ４２から読み出し、ＰＣＩバス６０を経由してＰＣＩボードへライトアクセスする。このような機能により、マスタモデル４１−１が仮想スレーブモデル４１−２に書き込んだデータは、アクセスの順番通りにＰＣＩボード上のモデルにアクセスされており、ＦＰＧＡ上の論理モデル５１としての一貫性が保証される構成になっている。
【００３６】
（実施例１の論理シミュレーション方法）
図３（Ａ）〜（Ｄ）は、図１、図２の論理シミュレーション方法の具体的な例を示す概要図である。
【００３７】
図３（Ａ）は、マスタモデル４１−１から仮想スレーブモデル４１−２への起動・停止に係わらないレジスタへのライトが２回あった場合のレジスタファイル４１−２ａ、ＦＩＦＯメモリ４１−２ｂ、及び、共有メモリ４２の状態を示している。
【００３８】
レジスタファイル４１−２ａは、アドレス毎に起動・停止に係わるかどうかを示すビットフィールドＴとデータフィールドを持っている。ＦＩＦＯメモリ４１−２ｂは、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドを持っている。共有メモリ４２も、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドを持っている。
【００３９】
起動・停止に係わらないレジスタへのライト（Ｗ）が、
０ｘ０アドレスに１００をライト
０ｘ１アドレスに２００をライト
とすると、図２のフローチャートでは処理Ｓ４に対応し、仮想スレーブモデル４１−２内のＦＩＦＯメモリ４１−２ｂへレジスタアドレスとデータを蓄積し、且つ、レジスタファイル４１−２ａへライトデータを反映させるので、レジスタファイル４１−２ａのアドレス０には１００が入り、アドレス１には２００が入る。又、ＦＩＦＯメモリ４１−２ｂには２ワードの有効ビットが１になったアドレスと、データ及びリードライトの区別（ＲＷ）の各フィールドには０ｘ０と０ｘ１、１００と２００、ＷとＷが設定される。
【００４０】
図３（Ｂ）において、マスタモデル４１−１から仮想スレーブモデル４１−２への起動・停止に係わらないレジスタへのリードがあった場合には、図２のフローチャートでは処理Ｓ３に対応し、仮想スレーブモデル４１−２のレジスタファイル４１−２ａからアクセスするアドレスに対応したデータを取り出して出力する。ＦＩＦＯメモリ４１−２ｂへはリードアクセスがあったことを示すため、３ワード目には有効ビットが１になったアドレス及びリードライトの区別（ＲＷ）の各フィールドには、０ｘ０、Ｒが設定される。
【００４１】
図３（Ｃ）において、マスタモデル４１−１から仮想スレーブモデル４１−２への起動・停止に係わるレジスタへのライトアクセス（その１）があったとする。レジスタファイル４１−２ａのアドレス２のビットフィールドＴは１になっているので、アドレスのマッチング時に起動・停止に係わるレジスタへのアクセスであることが分かる。この場合、図２に示すように起動・停止アクセスのアドレスとデータをＦＩＦＯメモリ４１−２ｂ内にライトすると同時に、ライトの場合はレジスタファイル４１−２ａへもデータを更新するので、このレジスタファイル４１−２ａのアドレス２には１が入り、又、ＦＩＦＯメモリ４１−２ｂには４ワード目の有効ビットが１になり、アドレスとデータ及びリードライトの区別（ＲＷ）の各フィールド０ｘ２、１、Ｗが設定される。
【００４２】
図３（Ｄ）において、起動・停止に係わるレジスタへのライトアクセス（その２）があった場合、レジスタの後半でＦＩＦＯメモリ４１−２ｂのデータ全てが共有メモリ４２に転送される。プロセスがＰＣＩデバイスドライバ４３へ移った後、共有メモリ４２からのデータを取り出し、ＦＰＧＡボード５０上の論理モデル５１へデータを転送することで実行されることになる。
【００４３】
（実施例１の効果）
図４は、図１の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図であり、従来の図２１中の要素と共通の要素には共通の符号が付されている。
【００４４】
本実施例１では、次の（ａ）〜（ｄ）のような効果がある。
（ａ）  従来の図２０の論理シミュレーション方法では、ＰＣＩデバイスドライバ１２が呼び出される回数が４回、ＯＳに係わるプロセスの切り替え回数が８回あったが、本実施例１の論理シミュレーション方法では、ＰＣＩデバイスドライバ４３が呼び出される回数が１回、ＯＳでのプロセス切り替え回数が２回になっている。
【００４５】
（ｂ）  ＰＣＩデバイスドライバ１２，４３に係わるトータル時間が変わらないが、ＯＳに係わるプロセスの時間が１／４に削減されたことになる。これにより、従来よりも高速にシミュレーションすることが可能になる。
【００４６】
（ｃ）  本実施例１の論理シミュレーション装置によれば、論理モデル５１をＦＰＧＡボード５０に置いてハードウェア化することで高速にシミュレーションする場合に、シミュレーションモデル４１側で起動・停止に係わらないレジスタへのアクセスをシミュレーションモデル４１側のＦＩＦＩメモリ４１−２ｂに蓄積しておいて、起動・停止に係わるレジスタへアクセスする場合に、そのＦＩＦＯメモリ４１−２ｂのデータを転送して、１回のＰＣＩデバイスドライバ起動でそのＦＩＦＯメモリ４１−２ｂのデータ分、連続してアクセスすることで、プロセスの切り替えの回数を削減できるので、シミュレーション時間を減らすことができる。
【００４７】
（ｄ）  論理モデル４１をＦＰＧＡボード５０に置いてハードウェア化することで高速にシミュレーションする場合に、ＦＰＧＡボード５０に割り付けられた論理モデル５１に対して、レジスタ部分だけコピーした論理モデル５１をシミュレーションモデル４１で持たせておき、前にライトしたデータがクロックが進んでも変化しないようなレジスタに対してリードがあった場合に、シミュレーションモデル４１側で応答し、ＦＰＧＡボード５０に割り付けられた論理モデル５１へのアクセスを抑制することで、ＰＣＩ  デバイスドライバプロセスへの切り替え回数を削減できるので、高速なシミュレーションが可能である。
【実施例２】
【００４８】
（実施例２の構成）
実施例１は、レジスタアクセスに対する制御方法であるが、同様の構成でバッファメモリへのバースト転送時も対応することが可能である。
【００４９】
図５は、本発明の実施例２を示す論理シミュレーション装置の概略の構成図であり、実施例１を示す図１中の要素と共通の要素には共通の符号が付されている。
【００５０】
本実施例２の論理シミュレーション装置では、実施例１と同様に、ＰＣ本体４０Ａと、ＦＰＧＡボード５０Ａとを有している。ＰＣ本体４０Ａは、実施例１と同様に、シミュレーションモデル４１Ａ、共有メモリ４２、及びＰＣＩデバイスドライバ４３を有している。シミュレーションモデル４１Ａは、実施例１と同様に、マスタモデル４１Ａ−１と仮想スレーブモデル４１Ａ−２を有しているが、この仮想スレーブモデル４１Ａ−２内には、実施例１のレジスタファイル４１−２ａ及びＦＩＦＯメモリ４１−２ｂに代えて、バッファメモリ４１Ａ−２が設けられている。
【００５１】
又、ＦＰＧＡボード５０Ａは、実施例１と同様に、論理モデル５１ＡとＰＣＩ−論理モデルバスブリッジ回路５２を有しているが、論理モデル５１Ａ内には、実施例１のレジスタファイル５１ａに代えて、仮想スレーブモデル４１Ａ−２内のバッファメモリ４１Ａ−２ａに対応するバッファメモリ５１Ａａが設けられている。その他の構成は、実施例１と同様である。
【００５２】
図６は、図５の仮想スレーブモデル４１Ａ−２におけるアクセス制御機能を示すフローチャートである。
【００５３】
図６を参照して、仮想スレーブモデル４１Ａ−２のアクセス制御機能について説明する。
【００５４】
バスマスタのマスタモデル４１Ａ−１から仮想スレーブモデル４１Ａ−２のバッファメモリ４１Ａ−２ａへバースト転送があった場合、これがバーストアクセス判定処理Ｓ１１で判定され、バースト転送有りの時は、そのアクセスに対応した動作を仮想スレーブモデル４１Ａ−２が実行する。バースト転送無しの時は、処理Ｓ１９に基づき、ＰＣＩデバイスドライバ４３を呼び出し、データを転送する。
【００５５】
処理Ｓ１１で、マスタモデル４１Ａ−１から仮想スレーブモデル４１Ａ−２のバッファメモリ４１Ａ−２ａへバースト転送があった場合、リード／ライト判定処理Ｓ１２により、そのアクセスがリードアクセスかライトアクセスかを判定する。リードアクセスの場合は、バーストリード開始処理Ｓ１３において、最初のリードアクセスか、それ以外のアクセスかを判定する。処理Ｓ１２の判定結果がライトアクセスの場合は、バーストライト最終判定処理Ｓ１４において、バースト転送の最後のアクセスか、それとも最後でないアクセスかを判定する。
【００５６】
処理Ｓ１３，Ｓ１４の判定に従って、次の４つの場合（ａ）〜（ｄ）に分けて制御する。
（ａ）  バーストリードアクセスで最初のアクセスの場合（処理Ｓ１５）
（ａ−１）  バーストアクセスのアドレスとバースト長を共有メモリ４２に入れる。
（ａ−２）  ＰＣＩデバイスドライバ４３に移り、共有メモリ４２からアドレスとバースト長を取り出して、ＦＰＧＡボード５０Ａへバースト長分リードアクセスし、そのデータをデータを共有メモリ４２へ入れる。
（ａ−３）  ＰＣＩデバイスドライバ４３から戻って、共有メモリ４２からデータを取り出して、バッファメモリ４１Ａ−２ａを移し、その後、バッファメモリ４１Ａ−２ａの最初のデータを出力する。
（ｂ）  バーストリードアクセスでの最初以外のアクセスの場合（処理Ｓ１６）
（ｂ−１）  バッファメモリ４１Ａ−２ａからデータを取り出して出力する。
（ｃ）  バーストライトアクセスでの最後以外のアクセスの場合（処理Ｓ１７）
（ｃ−１）  バッファメモリ４１Ａ−２ａにライトアクセスのデータを蓄積する。
（ｄ）  バーストライトアクセスでの最後のアクセスの場合（処理Ｓ１８）
（ｄ−１）  バッファメモリ４１Ａ−２ａにライトアクセスのデータを蓄積する。
（ｄ−２）  バッファメモリ４１Ａ−２ａから共有メモリ４２へ全データを転送する。
（ｄ−３）  ＰＣＩデバイスドライバ４３へ移って、共有メモリ４２から全データを取り出してＦＰＧＡボード５０Ａ上の論理モデル５１Ａへデータを転送する。
【００５７】
（実施例２の論理シミュレーション方法）
図７（Ａ）〜（Ｃ）は、図５、図６のライトバーストアクセスにおけるバッファメモリ４１Ａ−２ａと共有メモリ４２の具体的な状態を示す概要図である。
【００５８】
図７（Ａ）は、最後でないアクセス（３ワード目）のバーストアクセスがあった場合のバッファメモリ４１Ａ−２ａと共有メモリ４２の状態を示している。
【００５９】
バッファメモリ４１Ａ−２ａは、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドを持っている。共有メモリ４２も、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドを持っている。
【００６０】
バーストライトアクセスの３ワード目までが、
０ｘ０アドレスに１００をライト
０ｘ１アドレスに２００をライト
０ｘ２アドレスに３００をライト
であったとすると、バッファメモリ４１Ａ−２ａのようにデータが蓄積される。
【００６１】
図７（Ｂ）において、最後のバーストライトアクセスがあったとする。バッファメモリ４１Ａ−２ａには、４ワード目の有効ビットが１になり、データが設定される。
【００６２】
図７（Ｃ）において、最後のバーストライトアクセスの後半で、バッファメモリ４１Ａ−２ａのデータ全てがＰＣＩデバイスドライバ４３との共有メモリ４２に転送される。又、ＰＣＩデバイスドライバ４３へ移った後、共有メモリ４２からのバースト長分データを取り出し、ＦＰＧＡボード５０Ａ上の論理モデル５１Ａの実際のバッファメモリ５１Ａａへデータを転送することで実行されることになる。
【００６３】
図８（Ａ）〜（Ｃ）は、図５、図６のリードバーストアクセスにおけるバッファメモリ４１Ａ−２ａと共有メモリ４２の具体的な状態を示す概要図である。
【００６４】
図８（Ａ）は、バーストリードアクセスの最初のアクセスがあった場合のバッファメモリ４１Ａ−２ａと共有メモリ４２の状態を示している。
【００６５】
バッファメモリ４１Ａ−２ａは、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドを持っている。共有メモリ４２も、有効ビット（Ｖ）、アドレス、データ、リードライトの区別（ＲＷ）の４フィールドの他に開始アドレスとバースト長を保持する。バーストリードアクセスの最初のアクセスがあった場合に、連想スレーブモデル４１Ａ−２は開始アドレスとバースト長を共有メモリ４２に置く。ＰＣＩデバイスドライバ４３に移った後、このＰＣＩデバイスドライバ４３は、ＦＰＧＡボード５０Ａ上にある論理モデル５１Ａ内のバッファメモリ５１Ａａから共有メモリ４２にある開始アドレスからバースト長分リードアクセスし、そのデータを共有メモリ４２に置く（図８（Ｂ）に対応）。
【００６６】
図８（Ｃ）において、ＰＣＩデバイスドライバ４３から戻り、共有メモリ４２からバッファメモリ４１Ａ−２ａへデータを移す。これと同時に、マスタモデル４１Ａ−１へ最初のアクセスのリードデータを出力する。
【００６７】
バーストリードアクセスの第２アクセス以降は、ＰＣＩデバイスドライバ４３を呼び出さず、バッファメモリ４１Ａ−２ａのデータを出力する。
【００６８】
（実施例２の効果）
図９は、図５の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図であり、従来の図２１中の要素と共通の要素には共通の符号が付されている。
【００６９】
本実施例２では、次の（ａ）〜（ｅ）のような効果がある。
（ａ）  従来の図２１の論理シミュレーション方法では、４バーストライトアクセスの場合、ＰＣＩデバイスドライバ１２が呼び出される回数が４回、ＯＳに係わるプロセスの切り替え回数が８回あったが、本実施例２の論理シミュレーション方法では、ＰＣＩデバイスドライバ４３が呼び出される回数が１回、ＯＳでのプロセス切り替え回数が２回になっている。
【００７０】
（ｂ）  ＰＣＩデバイスドライバ１２，４３に係わるトータル時間が変わらないが、ＯＳに係わるプロセスの時間が１／４に削減されたことになる。これにより、従来よりも高速にシミュレーションすることが可能になる。
【００７１】
（ｃ）  同様に、バーストリードアクセスにおいても、４バーストリードアクセスの場合、ＰＣＩデバイスドライバ４３が呼び出される回数が４回から１回に減るので、ＯＳに係わるプロセル時間が削減されることになる。これにより、従来よりも高速にシミュレーションすることが可能になる。
【００７２】
（ｄ）  本実施例２の論理シミュレーション装置によれば、論理モデル５１ＡをＦＰＧＡボード５０Ａに置いてハードウェア化することで高速にシミュレーションする場合に、シミュレーションモデル４１Ａにおいて、仮想スレーブモデル４１Ａ−２内のバッファメモリ４１Ａ−２ａへバーストライト転送があった場合は、シミュレーションモデル４１Ａ側でバーストライト転送が終わるまで、仮のバッファメモリ４１Ａ−２ａにアクセスデータを蓄積しておく。その後、ＦＰＧＡボード５０Ａを制御するＰＣＩデバイスドライバ４３に、そのバッファメモリ４１Ａ−２ａのアクセスデータを転送して、一度にＦＰＧＡボード５０Ａへのライト処理を実行する。このようにすることで、シミュレーションモデル４０ＡとＰＣＩデバイスドライバ４３とのプロセスの切り替えの回数を削減することが可能となり、シミュレーションが高速になる。
【００７３】
（ｅ）  論理モデル５１ＡをＦＰＧＡボード５０Ａに置いてハードウェア化することで高速にシミュレーションする場合に、シミュレーションモデル４１Ａにおいて、仮想スレーブモデル４１Ａ−２内のバッファメモリ４１Ａ−２ａへのバーストリード転送があった場合は、シミュレーションモデル４１Ａ側でバーストリード転送の開始時に、共有メモリ４２を使って、ＦＰＧＡボード５０Ａを制御するＰＣＩデバイスドライバ４３に開始アドレスとバースト長の情報を渡し、ＰＣＩデバイスドライバ４３でＦＰＧＡボード５０Ａ上の論理モデル５１Ａのバッファメモリ５１Ａａからバースト長分リードし、共有メモリ４２を介してリードしたデータをシミュレーションモデル４１Ａの仮想スレーブモデル４１Ａ−２内のバッファメモリ４１Ａ−２ａへライトしてやる。そして、バッファメモリ４１Ａ−２ａから最初のデータを出力する。最初のアクセス以外はＰＣＩデバイスドライバ４３を呼び出さず、仮想スレーブモデル４１Ａ−２ａ側でバッファメモリ４１Ａ−２ａからリードデータを取り出して転送する。このようにすることで、シミュレーションモデル４１ＡとＰＣＩデバイスドライバ４３とのプロセスの切り替え回数を削減することが可能になる。
【実施例３】
【００７４】
（実施例３の構成）
実施例１を示す図１の論理シミュレーション装置において、例えば、ＦＰＧＡボード５０に置き換えられる論理モデル５１が、シミュレーションモデル４１内のマスタモデル４１−１の場合には、ＦＰＧＡボード５０上のアクセスをＰＣ本体４０上のシミュレーションモデル４１に反映させる時に、マスタ論理モデルの動作クロックをシミュレーションモデル４１の動作クロックと同期させるのが難しいという問題が生じる。通常、ＦＰＧＡボード５０上のマスタ論理モデルの動作クロック周波数がシミュレーションモデル４１の動作クロックよりも数千倍早く、シミュレーションモデル４１の動作クロックにＦＰＧＡボード５０上の動作クロックを合わせると、実速度で動作可能なＦＰＧＡボード５０の特性を無駄にしてしまう。そこで、このような不都合を本実施例３では解消している。
【００７５】
図１０は、本発明の実施例３を示す論理シミュレーション装置の概略の構成図である。
本実施例３の論理シミュレーション装置は、実施例１と同様に、シミュレーションを実施するＰＣ本体７０とＦＰＧＡ９０とを有し、そのＰＣ本体７０内に、シミュレーションの対象となるシミュレーションモデル８０が設けられると共に、そのＦＰＧＡボード９０内に、マスタ論理モデル９１とＰＣＩ−論理モデルバスブリッジ回路９２が設けられている。
【００７６】
シミュレーションモデル８０は、バスマスタタスクであるマスタモデル８１と、スレーブタスクであるスレーブモデル８２と、ＦＰＧＡボード９０上に載るマスタ論理モデル９１をあたかもシミュレーションモデルとして表す仮想マスタモデル８３とを有し、これらのマスタモデル８１、スレーブモデル８２、及び仮想マスタモデル８３が、バスモデル８４によって相互に接続されている。実際のマスタモデルは、ＦＰＧＡボード９０上でマスタ論理モデル９１としてＦＰＧＡに割付けられ、ＰＣＩ−論理モデルバスブリッジ回路９２を経由して、ＰＣＩバス７２によりＰＣ本体１０と接続されている。ＰＣＩバス７２には、ＰＣＩデバイスドライバ７１、及び共有メモリ７３が接続されている。ＰＣＩデバイスドライバ７１は、仮想マスタモデル８３から必要な時に呼び出される。ＰＣＩデバイスドライバ７１とＦＰＧＡボード９０のデータ受け渡しは、共有メモリ７３を介して行われる。
【００７７】
図１１は、図１０のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２を示す概略の構成図である。
【００７８】
ＰＣＩ−論理モデルバスブリッジ回路９２は、マスタ論理モデル９１とインタフェースを持つスレーブインタフェース回路９２−１、マスタ論理モデル９１からのデータを保持するＦＩＦＯメモリ９２−２、ＰＣＩマスタ／スレーブインタフェース回路９２−３、及び、ＰＣＩバス７２からのクロックhclkを停止させるクロック停止用ゲート９２−４を有している。スレーブインタフェース回路９２−１は、クロック停止用ゲート９２−４を論理０にしてクロックhclkを停止させる機能を持つ。ＰＣＩマスタ／スレーブインタフェース回路９２−３は、アクセス間隔カウンタ９２−３ａを持ち、マスタ論理モデル９１のアクセス間隔を計測する。
【００７９】
（実施例３の論理シミュレーション方法）
図１０、図１１の論理シミュレーション方法を、（Ａ）マスタモデルのライトアクセスと（Ｂ）マスタモデルのリードアクセスの２つに分けて説明する。
【００８０】
（Ａ）  マスタモデルのライトアクセス
図１２は、図１０、図１１の論理シミュレーション方法を示すライトアクセス制御のフローチャートである。
【００８１】
この図１２では、ＦＰＧＡボード９０上のマスタ論理モデル９１のマスタライトアクセスからＰＣ本体７０上のシミュレーションモデル８０への仮想マスタモデル８３へのライトアクセスへの変換のフローチャートが示されている。横に並べられたブリッジ回路、仮想マスタモデル、ＰＣＩデバイスドライバ、及び、バスモデルは、図１０のＰＣＩ−論理モデルバスブリッジ回路９２、仮想マスタモデル８３、ＰＣＩデバイスドライバ９１、及び、バスモデル８４に相当する。
【００８２】
（１）  ＦＰＧＡボード９０上のマスタ論理モデル９１からライトアクセス要求があると、実マスタモデルのアクセスからアドレス、データ、バースト長、転送サイズ、前アクセスからのウェイト期間を一旦ＦＩＦＯメモリ９２−２に貯めた後、共有メモリ７３へ転送する。
【００８３】
（２）  転送が終わったら、ＰＣＩバス７２へ割り込み信号をアサートする。クロック停止用ゲート９２−４を用いて、マスタ側のクロックを停止する。
【００８４】
（３）  ＰＣ本体７０上でＰＣＩ割り込みが入ると、ＰＣＩ割り込みハンドラからＰＣＩデバイスドライバ７１が呼び出されて、このＰＣＩデバイスドライバ７１は共有メモリ７３から仮想マスタ回路が持つ配列上に共有データのデータを転送する。シミュレーションモデル８０上での仮想スレーブモデルを動作させるためにイベントを発生する。
【００８５】
（４）  イベントを受け付けた仮想スレーブモデルは、ＰＣ本体７０の内部カウンタと配列の先頭にあるカウンタ値とを比較する。内部カウンタがウェイトサイクルに達したら、配列のライトデータに従って、シミュレーションモデル８０上のバスモデル８４へライトアクセスを行う。
【００８６】
（５）  渡されたアドレスに従ってデコードし、対応するスレーブモデル８２にライトデータを転送する。
【００８７】
（６）  転送後、ＰＣＩデバイスドライバ７１を呼び出し、ライトアクセス完了をＰＣＩ−論理モデルバスブリッジ回路９２にデータ転送の形で伝える。ＰＣＩバス７２上にブリッジモデルにライト完了のデータをライトする。
【００８８】
（７）  ＰＣＩ−論理モデルバスブリッジ回路９２がライトアクセスを受け付けると、クロック停止用ゲート９２−４を用いて、マスタ側のクロックhclkを再開させる。マスタモデル８１から次のアクセスを受け付け、（１）へ戻る。
【００８９】
図１３は、ＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるライトアクセスを示すタイミングチャートである。この図１３は、図１２の処理（１）、（２）に対応し、上半分がマスタモデル８１と仮想マスタモデル８３との間のマスタインタフェースのタイミングチャートであり、下半分がＰＣＩデバイスドライバ７１がＰＣＩバス７２へアクセスする場合のＰＣＩバスインタフェースのタイミングチャートである。マスタインタフェースは、シミュレーションモデル８０でのクロックhclkで動作しており、ＰＣＩバスインタフェースは、ＰＣＩバス７２のハードウェアで実動作していて、完全な独立である。
【００９０】
図１３のマスタインタフェースは標準的なバス構成で、（１）のhclkはマスタモデル８１のクロックである。（２）のbusreqはバス使用要求で、バス要求時にアサートされる。図１０では１つのマスタモデル８１なので、ずっと１になっている。（３）のbus_ackはバス使用応答で、バスが利用できることを示している。（４）のaddressはアクセスするアドレス値を示している。（５）のwriteはライトアクセスかリードアクセスかを示すもので、τ３では１よりライトアクセスを示している。（６）のtransはアクセスの有無を示すもので、τ３では１よりアクセスがあることを示している。（７）のburstはバーストアクセスの種類を示し、τ３では4burstより4burstアクセスであることを示している。（８）のsizeはアクセスサイズを示し、τ３ではwordとなっており、ワードアクセスを示している。（９）のreadyはアクセス応答信号を示す。ライトアクセスの場合、このready信号が１になってアクセスが完了する。（１０）のwrite_dataはアクセスしたライトデータで、（９）のreadyが１になったときに有効なデータになる。（１１）としてアクセス間隔をカウントするアクセス間隔カウンタ９２−３ａが記載されている。アクセス間隔カウンタ９２−３ａは、前のアクセスが終了すると同時に０にクリアされ、バス要求応答が返ってくるまでインクリメント（増分）する。
【００９１】
図１３の下半分のＰＣＩインタフェースのタイミングチャートについて説明する。
ＰＣＩ−論理モデルバスブリッジ回路９２内のＦＩＦＯメモリ９２−２の内容を示すため、ＦＩＦＯメモリ９２−２としてデータが記載されている。（１）のclkはＰＣＩバス７２の基本クロックであり、regはバスの利用を要求する要求信号である。（２）のgntはバスの利用可能を示す許可信号である。（３）のframeはアクセスの開始を示す。（３）のadはアドレス／データバスを示す。τ１１ではＰＣＩバス７２へのアクセスのターゲットとなるアドレスを示している。τ１２ではライトデータのデータが設定される。（４）のcmdは命令であり、τ１１でライトアクセスであるコードが設定される。（５）はirdyで、データ転送可能であることを示す。（６）のtrdyはターゲット側のデータ転送可能であることを示す。（７）のdevselはデバイスセレクトで、デバイスの応答があることを示す。τ１１ではtrdyが低レベル（以下「Ｌレベル」という。）になっていることによりライトアクセスが完了し、ライトデータが揃っていることを示す。
【００９２】
図１３のライトアクセスにおいて、クロックhclkのτ１でバス要求信号busreqをアサートし、τ２でバス応答信号busackが返ってくる。バス応答信号busackが返ってきた場合、インクリメントしていたカウンタ９２−３ａを停止させて、ＦＩＦＯメモリ９２−２の先頭に入れる。τ３から４ワード連続ライトアクセス4burst，wordがあった場合、前のライトアクセスからの間隔、転送バースト数、サイズ、アドレス、ライトデータをＦＩＦＯメモリ９２−２に入れる。ライトが完了すると、マスタインタフェースのクロックhclkを停止させる。ＦＩＦＯメモリ９２−２に入れたデータをＰＣ本体７０のシミュレーションモデル８０に転送するため、ＰＣＩインタフェースのＰＣＩバス７２に転送する。クロックｃｌｋのτ１１でのアドレス／データバスadに載せられるのは、共有メモリ７３のアドレスである。τ１２からＰＣＩバスインタフェースのアドレス／データバスadにライトアクセスからの間隔、転送バースト数、サイズ、アドレス、４ワードのライトデータを載せられ、共有メモリ７３にライトする。
【００９３】
図１４は、図１０の仮想マスタモデル８３におけるシミュレーションのライトアクセスを示すタイムチャートである。
【００９４】
仮想マスタインタフェースは、図１３のマスタインタフェースと同様である。図１４では、仮想マスタモデル８３が保持する配列と、クロックclk毎にインクリメントする内部カウンタ７０ａが表示されている。内部カウンタ７０ａは、仮想マスタインタフェースでのアクセス完了と同時に０にクリアされて、その後クロックclkと同期してインクリメントしていくものである。
【００９５】
図１４は図１２のローチャートの処理（４）、（５）を示すものである。クロックclkのτ３で転送されたデータの先頭にある間隔値が、仮想スレーブモデルにある内部カウンタ７０ａと一致すると、バス要求をするためバス要求信号busreqをアサートする。τ６でバス応答信号busackがアサートされて返ってくると、τ７で配列のデータからバースト長、サイズ、アドレス値を取り出し、それぞれ信号burst、size、addressに載せる。τ８からデータ値を書き込みデータwrite_dataを載せる。
【００９６】
このように、ＦＰＧＡ上のマスタモデルでのアクセス間隔の情報並びにバースト転送やデータ情報をシミュレーションモデル８０に転送し、且つ、応答が返ってくる間、ＦＰＧＡ上のマスタモデルはクロックhclkが停止しているため、ＦＰＧＡ上のマスタモデルのライトアクセスと同じライトシーケンスが仮想マスタインタフェース上に実現される。
【００９７】
（Ｂ）  マスタモデルのリードアクセス
図１５は、図１０、図１１の論理シミュレーション方法を示すリードアクセス制御のフローチャートである。
【００９８】
この図１５では、ＦＰＧＡ上のマスタモデルのリードライトアクセスからＰＣ本体７０上のシミュレーションモデル８０への仮想マスタモデル８３へのリードアクセスへの変換のフローチャートが示されている。横に並べられたブリッジ回路、仮想マスタモデル、ＰＣＩデバイスドライバ、及び、バスモデルは、図１０のＰＣＩ−論理モデルバスブリッジ回路９２、仮想マスタモデル８３、ＰＣＩデバイスドライバ７１、及び、バスモデル８４に相当する。
【００９９】
（１）  ＦＰＧＡ上のマスタ論理モデル９１からアドレス要求があると、そのアクセスからアドレス、バースト長、転送サイズを一旦ＦＩＦＯメモリ９２−２に貯め、クロックhclkを停止する。
【０１００】
（２）  ＦＩＦＯメモリ９２−２にあるデータのＰＣＩバス７２上への転送が終わったら、ＰＣＩバスインタフェースへの割り込みをアサートする。
【０１０１】
（３）  ＰＣ本体７０上でＰＣＩ割り込みを受へ付けると、ＰＣＩ割り込みハンドラからＰＣＩデバイスドライバ７１が呼び出され、共有メモリ７３から仮想マスタモデル８３を持つ配列上にデータを転送する。転送後、仮想マスタモデル８３が動作するようにイベントを発生させる。
【０１０２】
（４）  イベントを受けた仮想マスタモデル８３は、ＰＣ本体７０内部のウェイトカウンタと、転送されてきたウェイト間隔値の比較を取り、ウェイト期間に合致したら、配列上のバースト長、サイズ、アドレスをシミュレーションモデル８０のバス信号に載せてリードアクセスを行う。
【０１０３】
（５）  アドレスに従って対応するスレーブモデル８２からデータをリードする。
【０１０４】
（６）  リードしたデータは、仮想マスタモデル８３上の配列に置かれた後、ＰＣＩデバイスドライバ７１を呼び出す。
【０１０５】
（７）  呼び出されたＰＣＩデバイスドライバ７２は、仮想マスタモデル８２が持つ配列上のリードデータをＰＣＩ−論理モデルバスブリッジ回路９２へ転送する。
【０１０６】
（８）  ＰＣＩ−論理モデルバスブリッジ回路９２内のＰＣＩマスタ／スレーブインタフェース回路９２−３ａは、転送されたデータをＦＩＦＯメモリ９２−２に入れた後、スレーブインタフェース回路９２−１にリードデータとして応答転送する。その後、クロックhclkを再開させる。
【０１０７】
図１６は、図１１のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるリードアクセスを示すタイミングチャート（その１）である。
【０１０８】
この図１６は、図１５の処理（１）、（２）に対応し、上半分がマスタモデル８１と仮想マスタモデル８３との間のマスタインタフェースのタイミングチャートであり、下半分がＰＣＩデバイスドライバ７１がＰＣＩバス７２へアクセスする場合のＰＣＩバスインタフェースのタイミングチャートである。
【０１０９】
図１６において、クロックhclkのτ２でバス要求信号busackが１になると、アクセス間隔カウンタ９２−３ａを停止させ、その値をＦＩＦＯメモリ９２−２の先頭に入れる。τ３からＦＰＧＡ上の実マスタモデルからリードアクセスが入ると、アクセス間隔値、バースト長、サイズ、ライトアドレスをＦＩＦＯメモリ９２−２上に入れて、クロックclkのτ５でＰＣＩマスタインタフェース上でのライトアクセスを行われる。τ７でバス権（ｇｎｔ）を得た後、τ９でバスａｄ上に共有メモリアドレスを載せて、次に間隔カウント値、バーストサイズ（４ワードバースト（4burst））とサイズ（ワード（word））、転送アドレスの計３ワードを載せて、共有メモリ７３へのライトアクセスを実施する。
【０１１０】
図１７は、図１０の仮想マスタモデル８３におけるシミュレーションのリードアクセスを示すタイムチャートである。
【０１１１】
この図１７は、図１５のフローチャートの処理（４）〜（６）に対応する。既にＰＣＩデバイスドライバ７１によって、共有メモリ７３から仮想マスタモデル８３内の配列に間隔カウント値、バーストサイズとサイズ（２つで１ワード分）、転送アドレスが送られているものとする。
【０１１２】
クロックhclkのτ４で、内部カウンタが配列の先頭にある間隔カウント値に一致すると、仮想マスタモデル８３では、バーストサイズとサイズ（２つで１ワード分）、転送アドレスに従って、４ワード分のバーストリードアクセスを転送アドレスから実施する。リードした４ワードのデータは配列に置かれる。
【０１１３】
図１８は、図１１のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるリードアクセスを示すタイミングチャート（その２）である。
【０１１４】
この図１８は、図１５の処理（７）、（８）に対応する。クロックclkのτ７で、ＦＩＦＯメモリ９２−２にリードデータがＰＣＩインタフェースからライトされると、τ８でリードデータを返し、τ９でクロックhclkの振動を再開させて、リードデータを実マスタモデルにアクセスさせる。
【０１１５】
このように、ＦＰＧＡ上のマスタモデルでのアクセス間隔の情報並びにバースト転送やデータ情報をシミュレーションモデル８０に転送し、且つ、応答が返ってくる間、ＦＰＧＡ上のマスタモデルはクロックhclkが停止しているため、ＦＰＧＡ上のマスタモデルのリードアクセスと同じリードシーケンスが仮想マスタインタフェース上に実現される。
【０１１６】
（実施例３の効果）
本実施例３によれば、次の（ａ）、（ｂ）のような効果がある。
（ａ）  バーストアクセスの場合（例えば、４バイトバースト）、一度にバースト長のデータをＰＦＧＡ上のマスタモデルからＰＣ本体７０上のシミュレーションモデル８０に送るため、１ワードずつ転送することに比べて転送回数が１回で済むので、高速にシミュレーションできる。
【０１１７】
（ｂ）  ＦＰＧＡ上のマスタモデルから連続してアクセスする場合に、ＰＣ本体７０上のシミュレーションモデル８０とアクセスのタイミングを対応させるため、マスタのアクセス間の間隔をデータとして取り、その間隔をシミュレーションモデル８０でのアクセスの差分に利用するので、シミュレーションモデル８０のクロックとＦＰＧＡの実動作のクロックhclkで同期が取れたシミュレーションが可能になる。
【０１１８】
なお、本発明は、上記実施例１〜３に限定されず、種々の変形や利用形態が可能である。この変形や利用形態としては、例えば、次の（ｉ）〜（ｉｉｉ）のようなものがある。
【０１１９】
（ｉ）  実施例１の図１において、共有メモリ４２を省略してこの機能をＦＩＦＯメモリ４１−２ｂに持たせる、つまり、ＦＩＦＯメモリ４１−２ｂに代えて、共有メモリ機能及びＦＩＦＯメモリ機能を有するメモリに置き換えたり、あるいは、実施例２の図５において、共有メモリ４２を省略してこの機能をバッファメモリ４１Ａ−２ａに持たせる、つまり、バッファメモリ４１Ａ−２ａに代えて、共有メモリ機能及びバッファメモリ機能を有するメモリに置き換えても良く、このようにしても実施例１、２とほぼ同様の作用効果が得られる。又、実施例１と実施例２は別々の例として記載したが、１つの装置に２つの機能を入れても、単独と同じ機能を実施することができる。
【０１２０】
（ｉｉ）  実施例２ではバースト転送の場合を取り上げたが、ｎデータごとデータ処理するデバイスモデルの場合には、例えば、カウンタを用いてアクセスする回数を数えて、カウンタがｎになった場合にＰＣＩデバイスドライバ４３を呼び出すことで、同じような方法にも利用できる。
【０１２１】
（ｉｉｉ）  実施例１〜３ではＰＣＩバス６０，７２を扱っているが、ＰＣＩバス６０，７２はＰＣに最もよく利用されているバスにすぎず、他のバス（ＵＳＢ等）構成でも本発明は対応可能である。
【図面の簡単な説明】
【０１２２】
【図１】本発明の実施例１を示す論理シミュレーション装置の概略の構成図である。
【図２】図１の仮想スレーブモデル４１−２におけるアクセス制御機能を示すフローチャートである。
【図３】図１、図２の論理シミュレーション方法の具体的な例を示す概要図である。
【図４】図１の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図である。
【図５】本発明の実施例２を示す論理シミュレーション装置の概略の構成図である。
【図６】図５の仮想スレーブモデル４１Ａ−２におけるアクセス制御機能を示すフローチャートである。
【図７】図５、図６のライトバーストアクセスにおけるバッファメモリ４１Ａ−２ａと共有メモリ４２の具体的な状態を示す概要図である。
【図８】図５、図６のリードバーストアクセスにおけるバッファメモリ４１Ａ−２ａと共有メモリ４２の具体的な状態を示す概要図である。
【図９】図５の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図である。
【図１０】本発明の実施例３を示す論理シミュレーション装置の概略の構成図である。
【図１１】図１０のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２を示す概略の構成図である。
【図１２】図１０、図１１の論理シミュレーション方法を示すライトアクセス制御のフローチャートである。
【図１３】ＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるライトアクセスを示すタイミングチャートである。
【図１４】図１０の仮想マスタモデル８３におけるシミュレーションのライトアクセスを示すタイムチャートである。
【図１５】図１０、図１１の論理シミュレーション方法を示すリードアクセス制御のフローチャートである。
【図１６】図１１のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるリードアクセスを示すタイミングチャート（その１）である。
【図１７】図１０の仮想マスタモデル８３におけるシミュレーションのリードアクセスを示すタイムチャートである。
【図１８】図１１のＦＰＧＡボード９０側のＰＣＩ−論理モデルバスブリッジ回路９２におけるリードアクセスを示すタイミングチャート（その２）である。
【図１９】従来の論理シミュレーション装置の概略の構成図である。
【図２０】図１９の論理シミュレーション装置における論理シミュレーションでのシーケンスを示すフロー図である。
【図２１】図１９の論理シミュレーション装置における論理シミュレーションでのバースト転送時のシーケンスを示すフロー図である。
【図１】
2008003786.tif 000003
【図２】
2008003786.tif 000004
【図３】
2008003786.tif 000005
【図４】
2008003786.tif 000006
【図５】
2008003786.tif 000007
【図６】
2008003786.tif 000008
【図７】
2008003786.tif 000009
【図８】
2008003786.tif 000010
【図９】
2008003786.tif 000011
【図１０】
2008003786.tif 000012
【図１１】
2008003786.tif 000013
【図１２】
2008003786.tif 000014
【図１３】
2008003786.tif 000015
【図１４】
2008003786.tif 000016
【図１５】
2008003786.tif 000017
【図１６】
2008003786.tif 000018
【図１７】
2008003786.tif 000019
【図１８】
2008003786.tif 000020
【図１９】
2008003786.tif 000021
【図２０】
2008003786.tif 000022
【図２１】
2008003786.tif 000023