(57)【要約】シミュレーション環境は複数のシミュレーション領域を含む。あるシミュレーション環境内の特定のシミュレーション領域は、シミュレーションの行なわれる回路設計に関するパフォーマンス及び分解能が動的に制御されるように、選択的に活性化され及び非活性化される。
2005518575.tif 000002
【特許請求の範囲】
【請求項１】
シミュレートされる回路設計に関する分解能及びパフォーマンスが動的に修正されるように、シミュレーション環境内の特定のシミュレーション領域を選択的に活性化及び非活性化するステップ；
より成り、前記シミュレーション環境が複数のシミュレーション領域より成る
ことを特徴とする方法。
【請求項２】
前記複数のシミュレーション領域が、ソフトウエア実行領域、ハードウエアシミュレーション領域及び論理モデルシミュレーション領域の少なくとも１つより成ることを特徴とする請求項１記載の方法。
【請求項３】
前記ソフトウエア実行領域が、ネイティブプロセッサパッケージ、命令セットシミュレータ（ＩＳＳ）及び１以上のプロセッサでソフトウエア実行をモデル化するプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項２記載の方法。
【請求項４】
前記ハードウエアシミュレーション領域が、論理シミュレータ及びプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項２記載の方法。
【請求項５】
前記論理シミュレータが、ハードウエア記述言語（ＨＤＬ）によるシミュレータ、ゲートレベルシミュレータ、シミュレーションアクセルレータ、システムシミュレータ、サイクルシミュレータ及びプログラマブルハードウエアエミュレータの少なくとも１つより成ることを特徴とする請求項４記載の方法。
【請求項６】
前記プログラミング言語シミュレータが、Ｃプログラミング言語シミュレータ、Ｃ＋＋プログラミング言語シミュレータ、Ｃ言語を用いるシミュレータ、Ｃ＋＋言語を用いるシミュレータ、及びジャバプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項４記載の方法。
【請求項７】
複数のシミュレーション領域の各々が、回路設計における回路要素の少なくとも１つのモデルより成ることを特徴とする請求項１記載の方法。
【請求項８】
更に：
ある区分け規準に基づいて、回路設計を複数のシミュレーション領域に区分けするステップ；
より成ることを特徴とする請求項１記載の方法。
【請求項９】
前記区分け規準が、論理レベル、シミュレーション種別及び機能種別の少なくとも１つより成ることを特徴とする請求項８記載の方法。
【請求項１０】
論理レベルの区分けに基づいて回路設計を区分けするステップが、回路設計を、ピンレベルの領域、バスレベルの領域及びトランザクションレベルの領域の少なくとも１つに区分けすることを特徴とする請求項９記載の方法。
【請求項１１】
シミュレーション種別の区分けに基づいて回路設計を区分けするステップが、回路設計を、ソフトウエア実行領域、論理シミュレータ領域及びプログラミング言語シミュレータ領域の少なくとも１つに区分けすることを特徴とする請求項９記載の方法。
【請求項１２】
機能種別に基づいて回路設計を区分けするステップが：
回路設計の残余のものと独立の特定の動作のレベルを有する回路設計内の１以上の機能要素を識別するステップ；及び
識別された機能要素各々を包含する領域を決定するステップ；
より成ることを特徴とする請求項９記載の方法。
【請求項１３】
複数のシミュレーション領域の各々が、特定のパフォーマンスレベル及び特定の分解能レベルを与え、特定のシミュレーション領域は、シミュレーション環境のパフォーマンスを加速すること又はシミュレーション環境の分解能を増やすことの組合せにおいて、シミュレーションの特定の段階の間に選択的に活性化又は非活性化されることを特徴とする請求項１記載の方法。
【請求項１４】
特定のシミュレーション領域を選択的に活性化及び非活性化するステップが：
回路設計のシステム状態を識別するステップ；
識別されたシステム状態に関し、複数のシミュレーション領域のどれが活性化されるかを判別するステップ；及び
活性化されたシミュレーション領域においてのみシミュレーション時間を進めるステップ；
より成ることを特徴とする請求項１記載の方法。
【請求項１５】
識別されたシステム状態に関し、複数のシミュレーション領域のどれが活性化されるかを判別するステップが、中央的制御、トランザクションによる制御及び分散的制御の少なくとも１つより成ることを特徴とする請求項１４記載の方法。
【請求項１６】
前記中央的制御が：
複数のシミュレーション領域の１以上からシステム状態を受信するステップ；複数のシミュレーション領域のどれが特定のシステム状態に対応するかを判別するために、システムコンフィギュレーション情報を調べるステップ；及び
特定のシミュレーション状態に対応する領域についてのみ進めるために中央シミュレーションクロックを指示するステップ；
より成ることを特徴とする請求項１５記載の方法。
【請求項１７】
前記システム状態が、回路設計内のシステムアドレスより成ることを特徴とする請求項１５記載の方法。
【請求項１８】
前記システム状態が、回路設計内のデータトランザクションより成り、前記データトランザクションは、該データトランザクションについて複数のシミュレーション領域のどれが活性化されるかを区別する情報と共に構成され、トランザクションによる制御は：
該データトランザクションの一部として中央シミュレーションクロックに対するメッセージを送信するステップより成り、
前記メッセージは、データトランザクションについて複数のシミュレーション領域のどれが活性化されるかに関し、中央シミュレーションクロックを指示することを特徴とする請求項１５記載の方法。
【請求項１９】
所定のシミュレーション領域が、該所定のシミュレーション領域が活性化される少なくとも１つの特定のシステム状態を識別する活性化情報と共に構成され、システム状態の判別は、所定のシミュレーション領域にてシステム状態のブロードキャストを受信することを含み、所定のシミュレーション領域での分散的制御は：
前記活性化情報に基づいて、識別されたシステム状態に関して所定のシミュレーション領域が活性化されるか否かを判別するステップ；及び
それに応じて所定のシミュレーション領域にて動作を進めるステップ；
より成ることを特徴とする請求項１５記載の方法。
【請求項２０】
前記情報は、更に、少なくとも１つの特定のシステム状態について所定のシミュレーション領域の動作を終了させるイベントを識別することを特徴とする請求項１９記載の方法。
【請求項２１】
識別されたシステム状態に関し、複数のシミュレーション領域のどれが活性化されるかを判別するステップが、複数の制御手段に依存し、該複数の制御手段の各々は優先度より成り、高優先度制御手段は、低優先度制御手段を上回る優先性を有することを特徴とする請求項１４記載の方法。
【請求項２２】
複数のシミュレーション領域が階層構造より成り、複数のシミュレーション領域を選択的に活性化及び非活性化するステップは、該階層構造のレベルに基づくことを特徴とする請求項１記載の方法。
【請求項２３】
複数のシミュレーション領域の各々が少なくとも１つのシミュレーションモデルより成り、当該方法が更に：
シミュレーション環境内の第１のシミュレーションモデルからの伝送内容より成る状態情報を識別するステップであって、前記伝送内容は、シミュレーション環境内でシミュレートされる回路設計における第２のシミュレーションモデルに向けられるところのステップ；
前記第１のシミュレーションモデルから状態情報を受信するステップ；及び
回路設計における前記伝送内容をシミュレートせずに、前記第２のシミュレーションモデルに利用可能な状態情報を形成するステップ；
より成ることを特徴とする請求項１記載の方法。
【請求項２４】
回路設計における第１のシミュレーションモデルから第２のシミュレーションモデルへの伝送内容をシミュレートするステップが、シミュレーション環境における少なくとも１つの付加的なシミュレーションモデルを通じて状態情報を伝送するステップより成ることを特徴とする請求項２３記載の方法。
【請求項２５】
状態情報を受信し、利用可能な状態情報を形成するステップが：
シミュレーション環境の一部であり且つシミュレートされる回路設計内の要素に対応するコヒーレント状態メモリ空間に前記状態情報を格納ステップより成り、前記コヒーレント状態メモリ空間が、第１のシミュレーションモデル及び第２のシミュレーションモデルの双方にアクセス可能である
ことを特徴とする請求項２３記載の方法。
【請求項２６】
前記コヒーレント状態メモリ空間が、複数の付加的なシミュレーションモデルにアクセス可能であることを特徴とする請求項２５記載の方法。
【請求項２７】
状態情報を受信し、利用可能な状態情報を形成するステップが：
回路設計の伝送経路のシミュレーションモデルが、シミュレーション環境に包含されていない場合に仮想的な伝送経路が使用されること；及び
回路設計の伝送経路のシミュレーションモデルより高度のパフォーマンス伝送経路が使用されること；
の少なくとも１つより成ることを特徴とする請求項２３記載の方法。
【請求項２８】
前記高度のパフォーマンス伝送経路が、回路設計における伝送経路のシミュレーションモデルよりも低い分解度を与えることを特徴とする請求項２７記載の方法。
【請求項２９】
複数のシミュレーションモデルの第１のシミュレーションモデル及び第２のシミュレーションモデルが、回路設計における同じ機能に関する異なる形式を表すことを特徴とする請求項１記載の方法。
【請求項３０】
更に：
状態情報を生成するための前記第１のシミュレーションモデルを利用して回路設計をシミュレートするステップ；及び
前記第２のシミュレーションモデルを利用して回路設計をシミュレートすることを切り替えるステップ；
より成り、前記第２のシミュレーションモデルが使用される前に、前記第１のシミュレーションモデルは前記第２のシミュレーションモデルに状態情報を伝送することを特徴とする請求項２９記載の方法。
【請求項３１】
前記第１のシミュレーションモデル及び前記第２のシミュレーションモデルの各々が、特定の水準のパフォーマンス及び分解能を有し、前記第２のシミュレーションモデルへの切り替えが、シミュレーションの別の段階で望まれるパフォーマンスのレベル及び／又は分解能のレベルの変化に基づくことを特徴とする請求項３０記載の方法。
【請求項３２】
複数のシミュレーションモデル内の一群のシミュレーションモデルが、回路設計内の同じ機能を表し、該シミュレーションモデル群の各々が特定の水準のパフォーマンス及び分解能を有し、該シミュレーションモデル群の各々が、シミュレーションに関する所望のパフォーマンスのレベル及び／又は分解能のレベルに依存して、シミュレーションの異なる段階で使用されることを特徴とする請求項１記載の方法。
【請求項３３】
前記シミュレーション環境が、付加的な複数のシミュレーションモデルより成り、付加的な複数のシミュレーションモデルの各々が、付加的な複数のコヒーレント状態メモリ空間の１以上に対応し、当該方法が、更に：
シミュレーション環境における複数の付加的なシミュレーションモデル内における付加的な伝送内容より成る付加的な状態情報を識別するステップ；及び
付加的な状態情報が、該付加的な状態情報を回路設計でシミュレートせずに、複数の付加的なシミュレーションモデルの対応するものにアクセス可能であるように、複数の付加的なコヒーレントメモリ空間の適切なものに前記付加的な状態情報を格納するステップ；
ことを特徴とする請求項２５記載の方法。
【請求項３４】
第１のシミュレーションモデル及び第２のシミュレーションモデルの双方が、シミュレーション環境における同一のシミュレーション領域内にあることを特徴とする請求項２３記載の方法。
【請求項３５】
第１のシミュレーションモデル及び第２のシミュレーションモデルが、シミュレーション環境における異なるシミュレーション領域内にあることを特徴とする請求項２３記載の方法。
【請求項３６】
前記プログラミング言語シミュレータが、Ｃプログラミング言語シミュレータ、Ｃ＋＋プログラミング言語シミュレータ、Ｃ言語を用いるシミュレータ、Ｃ＋＋言語を用いるシミュレータ、及びジャバプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項３記載の方法。
【請求項３７】
論理モデルシミュレーション領域が、ハードウエア記述言語（ＨＤＬ）シミュレータ及びプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項２記載の方法。
【請求項３８】
前記プログラミング言語シミュレータが、Ｃプログラミング言語シミュレータ、Ｃ＋＋プログラミング言語シミュレータ、Ｃ言語を用いるシミュレータ、Ｃ＋＋言語を用いるシミュレータ、及びジャバプログラミング言語シミュレータの少なくとも１つより成ることを特徴とする請求項３７記載の方法。
【請求項３９】
機械読み取り可能な記憶媒体であって、そこに格納される機械読み取り可能な命令を有し、該命令は：
シミュレートされる回路設計に関する分解能及びパフォーマンスが動的に修正されるように、シミュレーション環境内の特定のシミュレーション領域を選択的に活性化及び非活性化するステップ；
より成る方法を実行させ、前記シミュレーション環境が複数のシミュレーション領域より成ることを特徴とする機械読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子設計オートメーション（ＥＤＡ）の技術分野に関連する。特に、本発明は、ＥＤＡシミュレーション環境における複数のシミュレーション領域を同期させることに関連する。
【背景技術】
【０００２】
電子設計オートメーション（ＥＤＡ）は、集積回路のような電子的ハードウエアを設計及び検査するめに長く使用されている。しかしながら、新しい回路設計はハードウエア要素及びソフトウエア要素双方を有することが益々増えている。例えば、「組み込み（ｅｍｂｅｄｅｄ）」システムは、汎用ホストコンピュータシステムに導入された特定用途ハードウエア要素を包含することが間々ある。ソフトウエア要素は、ホストシステムが、導入されるハードウエア要素とやりとりをすることを可能にするために、ホストシステム内の１以上のプロセッサで実行されるように設計される。
【０００３】
組み込みシステムの周知の一例は、「ソフトウエア」モデムである。ソフトウエアモデムは、データトラフィックを処理するために、ホストコンピュータシステムのソフトウエア処理能力を利用する。ソフトウエアモデムは、コンピュータシステムのプロセッサと電話ネットワークとの間でデータを前後に伝送するのに充分な特定用途ハードウエアのみを必要とする。多くの組み込みシステムに関し、ソフトウエアモデム内の特定用途ハードウエアは、一般的なハードウエアモデムのハードウエアよりも非常に簡易である。ハードウエアを簡易化することは通常的には一層小さな素子となり低価格となり、ハードウエア／ソフトウエア回路設計が非常に一般的であることがその理由の１つである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
組み込み回路設計には多くの利点が存在するが、これらの回路設計に関するハードウエア及びソフトウエア素子を一緒に設計することは容易なことではない。理想的には、ハードウエア／ソフトウエアシステムは、物理的なプロトタイプ（試作品）が作成される前にシミュレートされ及び検査される。論理シミュレータはハードウエアをシミュレーションするには良好に動作するが、ハードウエアにおけるソフトウエア実行をシミュレーションするには良好に動作しない。多くの場合に、最高速の論理シミュレータでさえも、毎秒数個のソフトウエア命令の実行をシミュレート（模擬）できるに過ぎない。プロセッサが毎秒数十万個又は百万個もの命令を実行すると仮定すると、論理シミュレータを利用してソフトウエアの実行をシミュレートすることは、遅すぎて有用ではないことが間々ある。
【０００５】
組み合わせられたハードウエア／ソフトウエアシステムを設計するための１つの解決手段は、副シミュレーション（ｃｏ−ｓｉｍｕｌａｔｉｏｎ）である。副シミュレーションでは、設計に関するソフトウエア要素は、ソフトウエア実行領域で実行される。ソフトウエア実行領域は、ホストコンピュータシステムによってそのソフトウエアの実行をシミュレートする。しばしば、ソフトウエアは、ホストコンピュータシステムの所望の実行速度で又はその近辺でシミュレートされ得る。
【０００６】
ソフトウエア実行領域でシミュレートされるソフトウエア要素にと共に、その設計に関するハードウエア要素のみが、論理シミュレータ領域でシミュレートされる。副シミュレーションでは、２つのシミュレーション領域が、あたかも回路設計がホストシステムに組み込まれているように、ソフトウエア及びハードウエア素子間の相互作用を含む全体的なハードウエア／ソフトウエア回路設計を、一緒に模擬する又は副次的にシミュレートする。当然に、２つのシミュレーション領域は一般的には非常に異なる。回路設計を効率的にシミュレートするために複数のシミュレーション領域を利用することは、多くの課題をもたらす。
【課題を解決するための手段】
【０００７】
本発明の実施例は図面と共に説明される。しかしながら、添付図面は本発明の範囲を制限するものではない。図中の同様な参照符号は同様な素子を示す。
【０００８】
以下の詳細な説明では、本発明の充分な理解を与えるために多くの具体的な詳細が説明される。しかしながら、当業者は、本発明がそれらの具体的な詳細とは別に実現され得ること、本発明は説明される実施例に限定されないこと、及び本発明は様々な代替実施例で実現され得ることを理解するであろう。他の例では、周知の方法、手順、素子及び回路は詳細には説明されない。
【０００９】
説明の部分は、他の当業者に彼らの仕事内容を伝えるために当業者により一般的に使用される用語を利用して与えられる。また、説明の部分は、プログラム命令の実行を通じて行なわれる動作の観点から与えられる。当業者によく理解されるように、しばしばこれらの動作は、格納され、伝送され、結合され或いは例えば電子素子により処理されることのかのうな電気的、磁気的又は光学的な信号の形態をとる。
【００１０】
本発明の理解を促すように、様々な動作が複数の順次実行される個々のステップとして説明される。しかしながら、説明の順序は、それらが提示された順序でそれらの動作が実行されなければならないことを意味するよう解釈されるべきでなく、順序依存的でもない。最後に、「一実施例」という語句の反復的な用法は、（同一でもあり得るが）同一の実施例を示す必要はない。
【００１１】
“Ｃｏｈｅｒｅｎｔ  Ｓｔａｔｅｓ  Ａｍｏｎｇ  Ｍｕｌｔｉｐｌｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｍｏｄｅｌｓ  ｉｎ  ａｎ  ＥＤＡ  Ｓｉｍｕｌａｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ”と題する関連出願が、出願番号０９／８８３，８３６を有し、２００１年６月１７日に同時期に出願されている。
【００１２】
２つの関連する発明はここに言及されているが、ここで及び上記関連出願にて別々に権利要求されている。一方の発明は、回路設計のシミュレーション中の様々な時点で、電子設計オートメーション（ＥＤＡ）シミュレーション環境にて、あるシミュレーション領域を選択的に活性化し（アクティブにし）、様々な領域の間でのタイミング同期を維持する。他方の発明は、シミュレートされる回路設計におけるデータ転送をシミュレートすることを必要とせずに、ＥＤＡシミュレーション環境におけるシミュレーションモデルにとって、状態情報をアクセス可能にする。様々な実施例により、本発明はシミュレーション環境の効率及び汎用性を増進させる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の教示によるハードウエア／ソフトウエア副シミュレーション環境１００の一例を示す。シミュレーション環境１００は、総て互いにバスモデル１４０で接続されている、ソフトウエア実行シミュレータ１１０と、プログラミング言語シミュレータ１２０と、論理シミュレータ１３０とを含む。３つのシミュレータは、回路設計をシミュレートするために、バスモデル１４０を介してやりとりを行なう。バスモデル１４０は、その回路設計内のプロトコルを利用してデータが伝送される信号の任意の集まりをシミュレートする。
【００１４】
回路設計の異なる部分は、３つのシミュレータの各々によってシミュレートされ得る。例えば、図示の例では、その回路設計は、ソフトウエア要素とハードウエア要素を含む。ソフトウエアの実行はソフトウエアシミュレータ１１０でシミュレートされる。ハードウエア要素の様々な部分は、プログラミング言語シミュレータ１２０及び論理シミュレータ１３０の２つのハードウエアシミュレータによってシミュレートされる。また、プログラミング言語シミュレータ１２０は、別の場合には、ソフトウエア素子の実行に関して、又はハードウエアにもソフトウエアにも未だ対応付けられていない素子の実行に関しても使用され得る。バスモデル１４０は、シミュレートされる回路設計内の素子間の処理について、ターゲットシステムにより使用される特定のバスプロトコルを模擬する。
【００１５】
ソフトウエア実行シミュレータ１１０、プログラミング言語シミュレータ１２０及び論理シミュレータ１３０は、当該技術分野で既知の多くの任意のシミュレータをそれぞれ表す。例えば、ソフトウエアモジュール１１０は、ソフトウエアの実行を模擬するために、命令セットシミュレータ（ＩＳＳ）、ネイティブプロセッサパッケージ等の１つ以上を包含し得る。論理シミュレータ１３０は、ハードウエア素子を模擬するために、ハードウエア記述言語（ＨＤＬ）に基づくシミュレータ、ゲートレベルシミュレータ、プログラマブルハードウエアエミュレータ等の１つ以上を包含し得る。同様に、プログラミング言語シミュレータ１２０は、Ｃ，Ｃ＋＋又はジャバ（Ｊａｖａ（登録商標））のような多くの任意のプログラミング言語で書かれたシミュレータを包含し得る。
【００１６】
本発明の教示とは別に、シミュレーション環境１００は、当該技術分野で既知の広範な種類にわたるシミュレーション環境を表すことが意図される。別の実施例は、付加的なシミュレータを含み、図示のシミュレータの総てを含まず、及び様々な任意のアーキテクチャで組織されるシミュレータを包含し得る。例えば、別の実施例は、ソフトウエアシミュレータ１１０を含まず、又は並列的なプロセッサをシミュレートするために、付加的なハードウエアシミュレータによりシミュレートされる付加的なバスへのバスブリッジに加えて複数のソフトウエアシミュレータを包含するアーキテックチャのような、一層複雑なバスアーキテクチャをシミュレートし得る。更に、様々なシミュレータの間での相互作用をシミュレートするために、任意数の通信プロトコルが、シミュレーション環境１００内で使用され得る。
【００１７】
［複数のシミュレーション領域の同期化］
ソフトウエアシミュレータ１１０のようなソフトウエアシミュレータは、通常的には、ターゲットシステムの動作周波数で又はその近辺でソフトウエアの実行をシミュレートすることができる。例えば、特定の回路設計に関するターゲットシステムがパーソナルコンピュータであるならば、そのパーソナルコンピュータのシステムクロックは数百メガヘルツで動作するであろう。この場合に、ネイティブプロセッサを利用するソフトウエアシミュレータは、毎秒数百万クロックサイクルをシミュレートするであろう。命令セットシミュレータを利用するソフトウエアシミュレータは、１０キロヘルツレンジでクロックサイクルをシミュレートするであろう。
【００１８】
論理シュミレータ１３０のような論理シュミレータは、ハードウエアシミュレーションの高度に詳細な分解能を与え得るが、ソフトウエアシミュレータよりも非常に遅い。論理シミュレータは、毎秒数個のクロックサイクルをシミュレートできるに過ぎない。プログラミング言語シミュレータ１２０のようなプログラミング言語シミュレータは、１０ヘルツ及び１０キロヘルツの間でのクロックサイクルをシミュレートするであろう。
【００１９】
通常の状況では、ソフトウエアシミュレータが論理シミュレータ又はプログラミング言語シミュレータとのやりとりの同期をとるために、ソフトウエアシミュレータは、各自のハードウエアシミュレータと同時に且つ一層低速で動作する必要がある。
【００２０】
好都合なことに、ソフトウエアは一般的なハードウエア／ソフトウエア設計ではメモリアクセスではなくプロセッサにより実行されるので、そのプロセッサは比較的遅い周波数で他のハードウエアとやりとりを行う。即ち、プロセッサは、メモリ以外のハードウエアとの相互作用の間に数千クロックサイクルを実行し得る。このハードウエアは、そのようなやりとりの間の多くの時間は暇になるであろう。
【００２１】
ハードウエア／ソフトウエア副シミュレータはこのシミュレーションを活用する。論理シミュレータ又はプログラミング言語シミュレータの全体的なシミュレーションを低速で走らせる代わりに、そのシミュレーションは、低速のシミュレータがアクティブである場合に低速のシミュレーション速度で走らせることのみを要する。残りの時間では、シミュレーションはソフトウエアシミュレータの充分に高速な速度で動作し、シミュレーション効率を顕著に増進することができる。２つのシミュレータの間のタイミング同期は、低速のシミュレータにおけるアイドルクロックサイクルのシミュレーションを実質的に省略（スキップ）することで維持される。
【００２２】
本発明はこの原理を前提に展開する。本発明は、シミュレーション環境に複数のシミュレータを許容し、それらの間でタイミングを同期させる。回路設計は複数のシミュレーション領域に分割され、各シミュレーション領域は少なくとも１つのシミュレーションモデルを含む。各シミュレーション領域は選択的に活性化又は非活性化され得る。一実施例では、各領域は特定の水準（レベル）のパフォーマンス及びシミュレーションの詳細度又は分解能を与える。いずれにせよ、領域の特定の組み合わせを選択することで、本発明は様々な段階のシミュレーションの速度又は分解能を代替的に増やすことができる。
【００２３】
一実施例では、各領域はそれ自身の時間概念を有する。即ち、複数の領域は同時に動作することも異なる周波数で動作することも可能である。２つの領域の間の動作周波数は、２つの領域間の相互作用をシミュレーションする場合に相関することだけを要する。
【００２４】
例えば、図１に示される回路設計は、映像入力分析を実行することを想定している。回路設計に関するいくつかの異なる態様が存在する。第１に、映像入力を規則的な間隔でサンプルするハードウエアの入力インターフェースが存在する。例えば、毎秒３０回、ハードウエアインターフェースはメモリ中のデータに値する１画像をバーストでロードする。第２に、未処理の入力データがハードウエアで圧縮され、第３に、圧縮されたデータがソフトウエアで分析される。
【００２５】
ソフトウエア部分は、当然に、ソフトウエアシミュレータ１１０によってモデル化される。ハイレベルＣ＋＋シミュレーションモデルが、ハードウエアデータ圧縮をシミュレートするために使用される、というのは、例えば、詳細なモデルがまだ展開されていない、又は設計者がデータ圧縮の詳細なシミュレーションを単に要求していないためである。いずれにせよ、データ圧縮ハードウエアは、プログラミング言語シミュレータ１２０でモデル化される。一方、詳細なＨＤＬモデルは、ハードウエア入力インターフェースに関して作成され、ハードウエアインターフェースは論理シミュレータ１３０でモデル化される。
【００２６】
論理シミュレータにおける詳細なモデルは、最も遅いシミュレーション速度を有する。好都合なことに、ハードウエアインターフェースは短期の規則的な間隔でのみ動作する。入力のバーストの間に、ハードウエアインターフェースは待機するだけである。ハードウエアがアイドル（ｉｄｌｅ）である場合でさえ、それをシミュレートするには多くのシミュレーション時間がかかる。いずれにせよ、ハードウエアインターフェースはそれ自身のシミュレーション領域を有し、そのシミュレーション環境はそのハードウエアがアイドルである場合には非活性化されることが可能である。即ち、シミュレーション環境は、ハードウエアインターフェース領域が活性的（アクティブ）である場合に論理シミュレータの遅い速度で走ることだけを要する。
【００２７】
Ｃ＋＋モデルは、より高度な抽象的なレベルで動作し、それらは精密なＨＤＬモデルよりも非常に速く動作する。Ｃ＋＋モデルはソフトウエア実行シミュレータと同程度に速く走り、Ｃ＋＋モデル及びソフトウエア実行の双方は同じ領域で共に活性化されることを仮定する。Ｃ＋＋モデルが同程度に速くないならば、Ｃ＋＋モデル及びソフトウエア実行は別々の領域にあり、Ｃ＋＋モデルが非活性的である場合に、ソフトウエア実行がより高速に動作することができるようにし得る。
【００２８】
同様に、たとえＣ＋＋モデル及びソフトウエア実行が同程度に速い場合でさえ、Ｃ＋＋モデルがソフトウエア実行から機能的に独立的であるならば、それらは別々の領域を有し得る。例えば、ソフトウエア実行が、データの分析前にデータの圧縮を終了するためにＣ＋＋モデルを待機するならば、別々の領域を有することは、Ｃ＋＋モデルが活性的である一方、多くの理由でそのソフトウエア実行が非活性化されることを可能にする。
【００２９】
言い換えれば、回路設計を複数のシミュレーション領域に区分するためにいくつかの異なる規準が使用され得る。例えば、回路設計は、シミュレーション種別、抽象的レベル（論理レベル）、機能種別又はそれらの任意の組合せに基づいて区分けされることが可能である。シミュレーション種別に基づく図１の回路設計の区分けは、ソフトウエアシミュレータ１１０内のソフトウエアモデルに対するソフトウエア実行領域及び２つのハードウエアシミュレーション領域となり、その２つのハードウエアシミュレーション領域の一方の領域はプログラミング言語シミュレータ１２０におけるハードウエアモデル１２１乃至１２３を含み、他方の領域は論理シミュレータ１３０におけるハードウエアモデル１３１乃至１３７を含む。
【００３０】
論理レベルにより区分する場合は、論理レベルは、一実施例では、特定のシミュレーションモデルでモデル化されるデータ処理の実行単位又は粒度（ｇｒａｎｕｌａｒｉｔｙ）によるものと考えられる。例えば、モデルがデータの個々のビットにおける動作をシミュレートするならば、そのモデルはピンレベルの論理におけるものと言及される。モデルがデータワードにおける動作をシミュレートし、データワードはそのバスモデルにより搬送されるデータの原子単位又はアトミックユニット（ａｔｏｍｉｃ  ｕｎｉｔ）であるならば、そのモデルはバスレベルの論理におけるものと言及される。モデルが処理（トランザクション）における動作をシミュレートするならば、そのモデルはトランザクションレベルの論理におけるものと言及される。
【００３１】
トランザクションレベルは、他の２つのレベルの論理よりも容易には規定されない。例えば、トランザクションは、データブロックを読み取る読み取り動作であり得る。データブロックが単一のデータワードより大きいならば、そのトランザクションはバスレベルにおける複数のバス動作を要する。全ブロックが読み取られるまで、各ワードはそのバスを介して一度に１つ伝送される。ピンレベルでのデータブロックの読み取りは、データの各ビットが受信され且つシミュレートされるので、数百又は数千の個々のデータ処理を含み得る。当然に、ピンレベルは最も詳細なレベルの論理である。また、ピンレベルは最も遅いシミュレーション時間を有する。バスレベルは、それより詳細ではないが高速である。トランザクションレベルは、更にバスレベルよりも詳細ではないが、更に高速である。
【００３２】
即ち、トランザクションレベルでは、シミュレーションモデルは、物理的な回路におけるデータブロックが、いくつかのデータワード処理に又は数千の個々のビット処理にどのように分割されるかの詳細をシミュレートすることには関係しない。むしろ、トランザクションレベルモデルは、１つのトランザクションにおけるデータブロックを読み取ることにまさに関係する。トランザクションレベルモデルが、バス動作又はピン動作をシミュレートせずにシミュレーション環境内でデータを伝送するこの手法は、コヒーレント状態（ｃｏｈｅｒｅｎｔ  ｓｔａｔｅ）に関連して以下に説明される。
【００３３】
ピンレベルのプログラミング言語シミュレーションは可能であるが、プログラミング言語シミュレータは、より高度のレベルの論理で動作する傾向にある。バス及びトランザクションレベルの論理シミュレーションは可能であるが、論理シミュレーションは、より低いレベルの論理で動作する傾向にある。例えば、ＨＤＬ形式の論理シミュレータは、より高度のレベルの論理で挙動モデルをシミュレートすることができる。ソフトウエア実行シミュレーションは、バスレベルでシミュレートする傾向にあるが、トランザクションレベルのシミュレーションが可能である。いずれにせよ、実際問題として、論理レベル区分は、多分に、各種別のシミュレータでシミュレートされる典型的な論理レベルによるシミュレーション種別区分けと同じ領域群になるであろう。
【００３４】
機能種別による区分けは最大の柔軟性又はフレキシビリティを与えるであろう。残りの回路設計と充分に独立である任意のシミュレーションモデルは、別個の領域にあり得る。明らかに、上述したように、ソフトウエア実行は、残りのシミュレーションとは独立的に時間の大半を処理する傾向にある。いずれにせよ、ソフトウエア実行シミュレーションは、それ自身の領域に対して良い候補である。
【００３５】
しかしながら、ハードウエアモデルの間では、ハードウエアの様々な部分の相対的な独立性は、回路設計の性質内容に多分に依存する傾向にある。いずれにせよ、ハードウエアモデルを機能領域に分けることは、例えば設計プロセス中の多数の手法で実行され得る。多くの場合に、ハードウエアを相対的に独立なブロックに分けることは、設計プロセスの普通の部分である。例えば、図１の実施例では、設計者は、回路設計のハードウエアを１０個の様々なハードウエアモデル１２１乃至１２３及び１３１乃至１３７に分解し、おそらくは、各ハードウエアモデルの機能が残りの設計とは相対的に独立であって、設計プロセスをそれぞれ簡単にするための別々のモデルを形成するからである。いずれにせよ、１０個のハードウエアモデルの各々は、それ自身の機能領域を規定する。
【００３６】
或いは、ある一群のハードウエアモデルは機能性の観点から密接に関連付けられる。例えば、図示の例では、ハードウエアモデル１３１，１３５，１３６は、頻繁に一体的に動作する。この場合、３つのハードウエアモデルは１つのシミュレーション領域に包含される。
【００３７】
また、シミュレーションモデルは複数のシミュレーション領域に所属し得る。例えば、ハードウエアモデル１３１，１３５，１３６は、それらが独立して活性化され得るように別々の領域を有し得るが、それらは、総て一体的に活性化され得るように大きなシミュレーション領域の一部分でもあり得る。そのような領域の階層構造を利用すると、その階層のレベルに従って、様々な領域の集合が活性化され得る。
【００３８】
また、領域はシミュレータを橋渡しする。例えば、プログラミング言語シミュレータ１２０のハードウエアモデル１２１が、論理シミュレータ１３０内のハードウエアモデル１３２と機能的に関連付けられる、又はそれと同じ論理レベルでモデル化されるならば、２つのハードウエアモデルは同じシミュレーション領域の中にあり得る。
【００３９】
回路設計が複数領域に分離されると、そのシミュレーション環境は、様々な領域のどれが任意の所与の時間に活性化されるかを制御する必要がある。一般に、領域は、活性化されるシミュレーション領域でのみシミュレーション時間を選択的に進めることによって、回路設計の状態に基づいて制御される。いくつかの異なる制御機構が使用され得る。例えば、シミュレーション環境は、中央制御、トランザクション形式の制御、分散的な制御又はそれらの組み合わせを利用することができる。
【００４０】
中央制御の一実施例では、シミュレーション環境は、各シミュレーション領域から状態情報を受信する。中央制御は、どのシミュレーション領域が活性化されるべきかを判別するために、各システム状態に関するシステムコンフィギュレーション情報を調べる。そして、中央制御は、活性化されるべきそれらの領域に対してだけ進むように中央シミュレーションクロックを教える。
【００４１】
一実施例では、状態情報は回路設計内のアドレスより成る。即ち、中央制御は、どのアドレスがアクセスされているかに依存して、活性化する領域を判定する。例えば、ソフトウエアシミュレータ１１０がバス１４０にアドレスを乗せるとき、中央制御はそのアドレスを読み、そのコンフィギュレーション情報から、そのアドレスが例えばプログラミング言語シミュレータ１２０より成るシミュレーション領域内でモデル化されたハードウエアに対応することを知る。この場合に、中央制御はその領域で進めるためにシステムクロックを教える。
【００４２】
トランザクション形式の制御の一実施例では、状態情報は個々のデータのトランザクションより成る。トランザクションは、そのデータトランザクションをシミュレートするためにどのシミュレーション領域が活性化されるべきかを識別する情報と共に形成される。トランザクションの一部として、どの領域が進められるべきかに関してシミュレーション環境を指示するメッセージが、シミュレーション環境に送信される。
【００４３】
例えば、特定のデータトランザクションは、物理的な回路内に２つのハードウエア部分を含む。ハードウエアの第１の部分及びハードウエアの第２の部分は、共にシステムのデータバスに接続される。また、ハードウエアの第１の部分は、ハードウエアの第２の部分における割り込み入力にワイヤ接続される。ハードウエアの第１の部分がデータトランザクションの処理を開始すると、同時に、ハードウエアの第２の部分における割り込み入力に割り込み信号を直接的に送信する。その割り込みに応答して、ハードウエアの第２の部分は、ハードウエアの第１の部分からデータを受信する準備動作の実行を開始する。
【００４４】
シミュレーション環境では、２つのハードウエアモデルは、ハードウエアの２つの部分をシミュレートする。ハードウエアモデルは、バスレベルモデルであり、ハードワイヤ接続をシミュレートすることはできない。また、ハードウエアモデルは、別個のシミュレーション領域に位置付けられる。第１のハードウエアモデルがデータトランザクションの処理を開始する場合に、データトランザクション中の情報は、第１のモデルからデータを受信する準備をすることができるように、第２のハードウエアモデルも活性化されるべきことを示す。第２のハードウエアモデルを活性化するために、そのシミュレーション環境にメッセージが送信される。
【００４５】
分散制御の一実施例では、シミュレーション領域は、それら自身のクロック及びそれら自身のコンフィギュレーション情報を含む。状態情報は、それらシミュレーション領域にブロードキャストされ、シミュレーション領域は、それらが活性化されるべきか否かをそれら自身判別するために、それらのコンフィギュレーション情報を調べる。例えば、状態情報がシステムアドレスより成る場合に、そのシミュレーション領域は、アドレスについてそのシステムバスを単にモニタすることができる。
【００４６】
制御機構の各々において、コンフィギュレーション情報は任意数のソースから到来し得る。例えば、設計者は、その設計が作成及び区分けされるように、システム状態及び領域の間の関連性を作成し得る。どの領域が活性化されるかを示すことに加えて、コンフィギュレーション情報は、各々の活性化に関する何らかの終了イベントを規定することも可能である。例えば、ある領域は、特定のシステムアドレスがアクティブであるときはいつでも、特定のクロックサイクルの間にわたって動作するよう構築され得る。或いは、非クロック要素との組み合わせ論理に関し、ある領域は、特定のシステムアドレスがアクティブであるときはいつでも、何らかの結果が生成されるまでアクティブであり続けるよう構築され得る。
【００４７】
制御機構は一緒に使用されることも可能である。例えば、中央制御はデフォルトであるが、トランザクション形式の又は分散された制御は、競合が生じた場合には中央制御を上回る優先度を有し得る。例えば、トランザクション形式の処理についての上述の例では、中央制御は第２ハードウエアモデルを活性化していなかったが、そのトランザクションにおけるコンフィギュレーション情報は、中央制御を上回る優先度を有し、第２ハードウエアモデルが活性化されることを生じさせる。
【００４８】
［シミュレーションモデル間のコヒーレント状態］
図１のシミュレーション環境１００のようなシミュレーション環境では、各シミュレータは、バスモデル１４０のようなバスモデルで接続される。バスモデルは、ターゲットシステムで使用されるバスの詳細なピンレベルのモデルに加えて、ターゲットシステムで使用するバスプロトコルをモデル化するプロトコルエンジンを含む。詳細なピンレベルのモデルは、他のピンレベルのモデルと共にバストランザクションをシミュレートするために使用される。ピンレベルのシミュレーションは極めて遅い傾向にある。
【００４９】
例えば、図１の例では、論理シミュレータ内のハードウエアモデル１３３は、システムメモリをシミュレートする。ソフトウエアシミュレーション１１０は、他の任意のハードウエア要素よりも頻繁にシステムメモリにアクセスする傾向にある。メモリトランザクションをシミュレートするために、ソフトウエアシミュレータ１１０は、ピンレベルのバスモデル１４０の速度までスピードを落とす必要がある。ピンレベルのバスモデルは、システムメモリにアクセスするためにハードウエアモデル１３３とやりとりをする必要がある。
【００５０】
システムメモリへのこの経路が充分にシミュレートされ且つ検査されると、それをシミュレートし続ける必要性はない。即ち、そのソフトウエアの継続的な実行中に生じる傾向にある、数え切れない同一のメモリトランザクションについてソフトウエアシミュレータを減速し続ける必要はない。この場合に、シミュレーション環境は、シミュレート済みのピンレベルの経路を迂回することで、コヒーレントなメモリ１５０に直接的にアクセスするためにバスモデルのプロトコルエンジンのみを利用せずに、シミュレーションの効率を増進する。いくつかの場合には、プロトコルエンジンはシミュレーション環境内に組み込まれ得る。別の場合には、バスの論理モデルが置換され得る。例えば、図１の実施例では、プログラミング言語シミュレータ１２０内のモデル１２３は、バスプロトコルエンジンを包含し、それは、詳細なハードウエアモデル１３３と同じ方法でシステムメモリにアクセスし得る。これは、中程度の分解能が、類似する高いシミュレーション速度でシミュレートされることを可能にする。
【００５１】
コヒーレントメモリ１５０は、ソフトウエアシミュレータ１１０に、高速な経路や裏口（ｂａｃｋ  ｄｏｏｒ）を利用したり、シミュレートされるシステムメモリへアクセスする選択肢を与える。即ち、ソフトウエアシミュレータ１１０は、シミュレーション環境に直接的に呼出を行ない、シミュレートされるシステムメモリに直接的にアクセスすることが可能である。
【００５２】
逆に、ハードウエアモデル１３３及び中小モデル１２３は、全体的なシステムメモリをモデル化するのではなく、システムメモリのインターフェースをモデル化するに過ぎない。メモリインターフェースは、同様に、シミュレーション環境への呼出を行なうことで、コヒーレントメモリ１５０を通じてシミュレートされるシステムメモリにアクセスする。多くの任意の通信プロトコルが、シミュレーションモデル及びシミュレーション環境の間の通信に使用されることが可能である。
【００５３】
本発明は、この「高速経路（ｆａｓｔ  ｐａｔｈ）」の原理に基づいて展開される。本発明は、伝送を実際にシミュレートせずに、シミュレーションモデル間で状態情報を伝送するために、図１の環境におけるコヒーレント状態格納部（ストレージ）１６０のように、コヒーレント状態を与える。図示されている例では、ソフトウエアシミュレータ１１０内のソフトウエアシミュレーションモデルに加えて、ハードウエアモデル１２１，１２２，１２３，１３１，１３２，１３５，１３６，１３７の総ては、コヒーレント状態ストレージ１６０へアクセスする。別の実施例では、シミュレーション環境中のシミュレーションモデル総てを含むシミュレーションモデルの任意の組合せ（それ自体を含む）が、コヒーレント状態ストレージにアクセスすることができる。
【００５４】
一実施例では、シミュレーションモデル１３１は、状態情報をシミュレーションモデル１３６に伝送することを望む。その伝送をシミュレーションモデル１３５によりシミュレーションする代りに、その状態情報は、コヒーレント状態ストレージ１６０内の特定の状態空間に格納される。そして、ハードウエアモデル１３６がコヒーレント状態ストレージ１６０内でその状態情報の場所及び探索する方法を把握している限り、その状態情報は容易に利用することができる。
【００５５】
コヒーレント状態ストレージは、シミュレーション環境及び特定のロケーションの一部であり、コヒーレント状態ストレージにおける状態コンフィギュレーションは、そのシミュレーション環境における特定のシミュレーションモデルに対応する。しかしながら、コヒーレント状態ストレージは、シミュレートされる物理的な回路内に対応する何らの素子も有しない。即ち、コヒーレント状態ストレージは、シミュレートされる回路設計の一部ではない。むしろ、各ロケーション及び状態コンフィギュレーションは、本質的には回路設計における特定の素子のハイレベルモデルより成る。シミュレーション環境に呼出を行ない得る任意のシミュレーションモデルは、コヒーレント状態ストレージへアクセスすることが可能である。コヒーレント状態ストレージにアクセスする任意のシミュレーションモデルは、任意の他のシミュレーションモデルと状態情報をやりとりすることが可能であるが、但しそれは、モデルの双方がコヒーレント状態ストレージ内で同一の状態空間及び状態コンフィギュレーションを認識する場合に限る。
【００５６】
一実施例では、コヒーレント状態ストレージは中央メモリである。別の実施例では、コヒーレント状態ストレージは分散される。
【００５７】
コヒーレント状態ストレージを通じて状態情報を共有することは、通常的には、その回路設計におけるデータ伝送をシミュレートすることよりも非常に高速で去る。或いは、回路設計中の特定のデータ経路についてシミュレーションモデルが存在しない場合には、そのコヒーレントストレージは、「仮想的な」シミュレーションモデルとして使用されることが可能である。当然に、そのコヒーレントストレージは、シミュレーションモデルが設けられることの可能な場合と同程度の分解能を与えない。即ち、状態情報がコヒーレントストレージにより伝送される場合に、シミュレーションモデルは、モデル化されていないピンレベルのタイミング、ノイズ及び他の回路動作の態様をモデル化することが可能である。しかしながら、近似的なタイミングや推定された電力利用度等のようなハイレベル属性を、コヒーレント状態ストレージへ又はそこからの動作に付随させることが可能である。
【００５８】
例えば、図１では、論理シミュレータ１３０は図示されるように接続されたハードウエアモデル１３１，１３５，１３６を包含する。一実施例では、ハードウエアモデル１３６は周辺装置をモデル化する。ハードウエアモデル１３５は、その周辺装置を、別のハードウエア要素に接続するＵＳＢバスをモデル化し、その別のハードウエア要素はハードウエアモデル１３１によりモデル化されシステムバス１４０に接続される。ＵＳＢバスプロトコルは、シミュレートするには非常に複雑且つ煩雑である。所定数のデータ伝送をシミュレートした後に、ＵＳＢ設計は十分に検査される。この時点から、その分解能レベル及び低速で、ハードウエアモデル１３５のＵＳＢ伝送を更にシミュレートする必要はない。この場合に、ハードウエアモデル１３６は、ハードウエアモデル１３１に対応するコヒーレント状態ストレージ１６０中のロケーションに、任意の追加的なデータ伝送情報を書き込む。ＵＳＢバスの他方端では、ハードウエアモデル１３１は、コヒーレント状態ストレージ１６０内の新たな状態情報を察知し、ＵＳＢモデルをバイパスしながら、それをロードする。
【００５９】
別の例として、ハードウエア要素１３７は回路設計中の別の周辺装置を表現する。ハードウエアモデル１３７に関するデータトランザクションをモデル化する何らのシミュレーションモデルも未だ作成されていない。しかしながら、ハードウエアモデル１３７は、コヒーレント状態ストレージ１６０へアクセスし、プログラミング言語シミュレータ１２０内のハードウエア要素１２３に対応するコヒーレント状態ストレージ中のロケーション及びストレージコンフィギュレーションを察知する。この場合に、ハードウエア要素１３７によりシミュレートされる周辺装置は、ハードウエア要素１２３へデータを転送することが可能である。更に、ハードウエア要素１３７は、それ自身に対応するコヒーレント状態ストレージ１６０中のロケーション及びコンフィギュレーションと、ハードウエア要素１３７にデータを転送することの可能なロケーション及びコンフィギュレーションを察知するシミュレーション環境内の他の任意のシミュレーションモデルとを察知するものと仮定する。
【００６０】
一実施例では、シミュレーションモデルは、新たな状態情報についてコヒーレント状態ストレージ内の対応するロケーションをアクティブに監視し、又は動作開始前にそのモデルの領域が活性化される毎にそのロケーションを検査する。別の実施例では、シミュレーション環境は、その領域を活性化する前にそのモデルに状態情報を書き込む。別の実施例では、多くの任意の通信プロトコルが、コヒーレント状態ストレージを介する伝送を支援するために使用されることが可能である。
【００６１】
［同期及びコヒーレント状態］
シミュレーション領域及びコヒーレント状態の選択的な活性化は次々に近接して動作する。例えば、ハードウエアモデル１３５がＵＳＢバスをシミュレートする上記の例では、コヒーレントストレージがハードウエアモデル１３５ではなく状態情報を伝送するために使用される場合に、ハードウエアモデル１３５に関するシミュレーション領域が非活性化されることが可能である。その領域を非活性化することで、ハードウエアモデル１３６，１３１に関するその単数又は複数の領域は、ＵＳＢシミュレーションの速度よりも非常に速い速度で動作することが可能になる。
【００６２】
［モデルスイッチング］
選択的な領域活性化の他のアプリケーション例として、２つのシミュレーション領域は、同じ回路機能であるが異なるシミュレーション速度及び分解度を有する異なる論理レベルにおけるものであることを表現することができる。異なるシミュレーションの段階で、そのシミュレーション環境は、所望の速度及び分解度に基づいて、２つのシミュレーション領域の一方又は他方を活性化する。シミュレーションが一方のシミュレーションモデルから他方に切り替わる場合に、非活性化されるモデルは、機能性に関するシームレスなシミュレーションを行なうために、そのシミュレーション環境を通じてその状態情報を非活性化されるモデルに転送する。
【００６３】
同様に、回路設計における特定の機能は、いくつかの論理レベルでモデル化されることが可能であり、状態情報は、異なるものが活性化される及び非活性化されるのでそのモデル間で伝送され得る。
【００６４】
あるシミュレーションモデルから、同じ回路要素を表現する別の機能的に等価なシミュレーションモデルに状態情報を伝送することは、先ず、上述したコヒーレントメモリストレージを通じて状態伝送に非常に類似して登場する。しかしながら、コヒーレント状態ストレージは、基本的には、回路設計における要素のハイレベルシミュレーションモデルを与える。即ち、コヒーレント状態ストレージにおけるロケーション及び状態コンフィギュレーションは、シミュレートされる物理的な回路内の実際の素子に対応する。コヒーレント状態ストレージを用いてデータを伝送することは、物理的な回路設計における実際のデータ伝送をシミュレートする。
【００６５】
これに対して、ある回路要素の２つの機能的に等価なシミュレーションモデルがそのシミュレーション環境で利用可能である場合に、その物理的な回路は、一方のモデルから他方へ状態情報を伝送する機構に対応する機能要素を何ら包含しない、というのは双方のモデルが同一の回路要素を表すからである。即ち、同一の回路要素の機能的に等価なモデル間で状態情報を伝送することは、全体的にはシミュレーション環境の機能であり、シミュレーションされる物理的な回路設計では機能的な等価物を何ら有しない。状態情報は、多くの任意の通信プロトコルに準拠するシミュレーション環境組織を通じて、ある機能的に等価なモデルから別のものに伝送され得る。
【００６６】
一実施例では、モデル間のスイッチングは、第１のモデルの状態が、読み込むためにシミュレーション環境に利用可能である場合にのみ行なわれ得る。例えば、シミュレーション環境は、第１のモデル内で、ある入力／出力ポート及び／又はレジスタへのアクセス権しか有しない。アクセス可能なポート及びレジスタの状態が安定的でないならば、シミュレーション環境は、その状態が読み取られるまで第１のモデルの領域を進行させ続ける。そして、シミュレーション環境は第１のモデルの領域を非活性化し、状態情報を読み込み、状態情報を第２モデルに書き込み、第２のモデルの領域を活性化する。
【００６７】
モデルスイッチが有用である回路要素の一例は、バスアービタ（バス調停部）である。複数のバスマスタを有する回路設計では、バスアービタは、ある任意の時点でどのバスマスタがシステムを制御するかを判別する。そのアービタが、低速のピンレベルのシミュレータを用いてシミュレートされるならば、その低速シミュレータが、高速シミュレーションを可能にするために非活性化される任意の時点で、調停機能が非活性化される。この場合に、シミュレーション環境は、ピンレベルのシミュレータが非活性である場合にそのバスへのアクセスを調停するために、機能的に等価な高速シミュレーションモデルを包含することができる。シミュレーション環境がアービタモデル間で切り替わる毎に、シミュレーション環境は、例えば、新たに活性化されたアービタモデルが、目下どのバスマスタがバスの制御権をどの程度長い期間有するか、別のバスマスタがバスの制御権をどのような順序で要求するか等を知ることができるように、状態情報を伝送する。
【００６８】
また、当業者は、多くの任意の既知のインターフェースプロトコルが、上述の様々な要求及び応答をフォーマットするために使用され得ることを認識するであろう。更に、当業者は、上述した１以上の機能が、シミュレータ環境内の様々な要素により又は要素の組合せにより実行され、説明した例に限定される必要のないことを認識するであろう。
【００６９】
図２は、パーソナルコンピュータ、ワークステーション及び／又は組み込みシステムのような広範な種類にわたるコンピュータシステムを意図するハードウエアシステムの一例を示す。図示された例では、ハードウエアシステムは、高速バス２０５に接続されたプロセッサ２１０を含み、その高速バスはバスブリッジ２３０により入力／出力（Ｉ／Ｏ）バス２１５に接続される。暫定的メモリ又はテンポラリメモリ２２０はバス２０５に接続される。永続的メモリ２４０はバス２１５に接続される。また、Ｉ／Ｏ装置２５０はバス２１５に接続される。Ｉ／Ｏ装置２５０は、ディスプレイ装置、キーボード、１以上の外部ネットワークインターフェース等を包含する。
【００７０】
ある実施例は、付加的な要素を含み、上記の要素総てを含まず、又は１以上の要素を組み合わせる。例えば、暫定的メモリ２２０はプロセッサ２１０に備わるオンチップであり得る。或いは、永続的メモリ２４０は排除され、暫定的メモリ２２０が電気的に消去可能なプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）で置換され、そのＥＥＰＲＯＭによりソフトウエアルーチンが適切に実行されるようにすることも可能である。いくつかの実現手法は、要素の総てが接続される単一のバスを利用すること、１つ以上の付加的なバス及びバスブリッジを利用することが可能であり、そのバスブリッジには様々な付加的な要素が接続される。当業者は、例えば、メモリコントローラハブ及びＩ／Ｏコントローラハブを備えた高速システムバスに基づく内部ネットワークを包含する様々な代替的な内部ネットワークに精通しているであろう。付加的な要素は、当該技術分野における付加的なプロセッサ、ＣＤＲＯＭドライブ、付加的なメモリ素の他の周辺素子を包含し得る。
【００７１】
一実施例では、本発明は、上述したように、図２のハードウエアシステムのような１以上のハードウエアシステムを用いて実現される。１以上のコンピュータが使用される場合に、それらのシステムは、ローカルエリアネットワーク（ＬＡＮ）、インターネットプロトコル（ＩＰ）ネットワーク等のような外部ネットワークを通じて通信するよう接続されることが可能である。一実施例では、本発明は、コンピュータ内の１以上の実行装置で実行されるソフトエアルーチンとして実現される。所与のコンピュータにて、ソフトウエアルーチンは、永続的メモリ２４０のような格納装置に格納されることが可能である。
【００７２】
或いは、図３に示されるように、ソフトウエアルーチンは、ディスケット、ＣＤ−ＲＯＭ、磁気テープ、ディジタル映像又は汎用ディスク（ＤＶＤ）、レーザディスク、ＲＯＭ、フラッシュメモリ等を利用して格納される機械実行可能な命令であり得る。一連の命令は、局所的に格納される必要はなく、例えば図２のＩ／Ｏ装置２５０を通じて、ネットワーク上のサーバ、ＣＤ−ＲＯＭ装置、フロップディスク等のような遠隔的な格納装置から受信されることも可能である。
【００７３】
どのようなソースからのものであれ、命令は、格納装置から暫定的メモリ２２０にコピーされ、その後にプロセッサによりアクセスされ実行される。一実施例では、これらのソフトウエアルーチンはＣプログラミング言語で記載される。しかしながら、これらのルーチンは、幅広い様々なプログラミング言語の任意のもので実現され得ることが理解されるべきである。
【００７４】
別の実施例では、本発明は個別のハードウエア又はファームウエアで実現される。例えば、１以上の特定用途集積回路（ＡＳＩＣ）は、本発明の上記の１以上の機能に関してプログラムされ得る。別の例では、本発明の１以上の機能は、付加的な回路基板で１以上のＡＳＩＣで実現され、その回路基板は上述のコンピュータに挿入され得る。別の実施例では、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はスタティックプログラマブルゲートアレイ（ＳＰＧＡ）は、本発明の１以上の機能を実現するために使用され得る。更なる別の例では、ハードウエア及びソフトウエアの組合せが、本発明の１以上の機能を実現するために使用され得る。
【００７５】
このように、ＥＤＡシミュレーション環境内で複数のシミュレーション領域を同期させることが説明された。しかしながら、上記の説明を読んだ後に、本発明に関する多くの代替例及び修正例が当業者に理解されるであろうし、例として提示及び説明された特定の実施例は限定するものと解釈されることを何ら意図しないことが理解されるべきである。従って、特定の実施例の詳細を参照することは、本発明の範囲を限定することを意図するものではない。
【図面の簡単な説明】
【００７６】
【図１】本発明の教示によるハードウエア／ソフトウエア副シミュレーション環境の一例を示す図である。
【図２】複数領域のシミュレーション環境を実現するハードウエアシステムの一例を示す図である。
【図３】複数領域のシミュレーション環境に関する実行可能な命令を格納するための機械読み取り可能な媒体の一例を示す図である。
【図１】
2005518575.tif 000003
【図２】
2005518575.tif 000004
【図３】
2005518575.tif 000005
【国際調査報告】
2005518575.tif 000006
2005518575.tif 000007
2005518575.tif 000008