(57)【特許請求の範囲】
【請求項１】
インターフェースを介してシミュレータとエミュレータとの間でデータを転送する方法であって、
エミュレーションサイクルに対する所望の入力状態を含むように、前記シミュレータにより前記シミュレータのシミュレータバッファをアップデートし、
前記エミュレーションサイクルが前記シミュレータに依存しないで進行可能であることを指示するために、前記シミュレータにより前記インターフェースにターゲット書き込みを実施し、
前記シミュレータに依存しないで、前記アップデートされたシミュレータバッファに含まれている前記所望の入力状態に対応して、前記インターフェース内で指示シーケンサを使用して指示のシーケンスを実行することにより、前記エミュレーションサイクルを完了する。
【請求項２】
請求項１の方法であって、
前記指示シーケンサは、前記シミュレータバッファを前記インターフェースのインターフェースバッファ内にバースト読み出しすることをＰＣＩコントローラに指示する。
【請求項３】
請求項２の方法であって、
前記指示シーケンサは、前記シミュレータバッファからデータを引き出し、また、前記データを前記エミュレータに送信することをケーブルコントローラに指示する。
【請求項４】
請求項１〜３のいずれかの方法であって、さらに、
前記インターフェースにおいて前記エミュレータからデータを受信し、
同時に、パイプライン接続され、優先するインターフェースバッファコントローラを使用して前記シミュレータバッファに前記データをアップロードする。
【請求項５】
請求項１〜４のいずれかの方法であって、
前記指示シーケンサは、データが分析のために準備されていることを前記シミュレータに警告するために、前記シミュレータバッファ内の予め定められている位置を書き込むことをＰＣＩコントローラに指示する。
【請求項６】
請求項１〜５のいずれかの方法であって、
前記指示シーケンサは、複数の一般レジスタから制御信号を受信する。
【請求項７】
請求項１〜６のいずれかの方法であって、
前記指示シーケンサは、戻りデータ内の特定の状態が真となるまでケーブル転送を繰り返す。
【請求項８】
請求項１〜７のいずれかの方法であって、
ケーブルコントローラが、前記シミュレータと関連する第１のビットサイズから前記エミュレータと関連する第２のビットサイズにデータを再パックする。
【請求項９】
請求項１〜８のいずれかの方法であって、
前記指示シーケンサは、ＰＣＩバス、インターフェースバッファ及びケーブル間のデータフローを制御し、また、前記指示シーケンサは、ハードウェア内に実装されている。
【請求項１０】
請求項１〜９のいずれかの方法であって、
前記指示のシーケンスは、予めプログラムされている。
【請求項１１】
シミュレータをエミュレータに接続する装置であって、
ハードウェアインターフェースを備え、
前記ハードウェアインターフェースは、
ＰＣＩコントローラと、
前記ＰＣＩコントローラに接続される一般レジスタと、
前記一般レジスタに接続される指示シーケンサと、
ＲＡＭに接続されるＲＡＭコントローラと、
ケーブルインターフェースコントローラを有し、
前記ハードウェアインターフェースは、フィールドプログラマブルゲートアレイ内に実装され、
前記ＲＡＭは、エミュレーションサイクルに対する所望の入力状態を蓄積し、
前記シミュレータは、前記エミュレーションサイクルが前記シミュレータに依存しないで進行可能であることを前記指示シーケンサに指示するために、前記インターフェースにターゲット書き込みを実施し、
前記指示シーケンサは、前記シミュレータに依存しないで、前記ＲＡＭに含まれている前記所望の入力状態に対応して指示のシーケンスを実行することにより、前記エミュレーションサイクルを完了する。
【請求項１２】
請求項１１の装置であって、
前記ハードウェアインターフェースは、さらに、
ＰＲＯＭコントローラと、
ＥＥＰＲＯＭコントローラを有している。
【請求項１３】
請求項１１または１２の装置であって、
前記一般レジスタは、コントローラ情報、コントローラモード、インタラプト制御、コントローラステイタス、ケーブル入力、クロック制御、指示シーケンサ（“ＩＳ”）指示ポインタ、ＩＳダイレクトコマンド、ＩＳダイレクト／ステップ実行、ＰＣＩコントローラ制御、コントローラアボート、ＥＥＰＲＯＭコマンド、構成ＪＴＡＧコマンド、構成ＪＴＡＧ出力、構成ＪＴＡＧ入力、ケーブル比較値、ケーブル比較マスク、ＰＣＩアップロードカウント、ＰＣＩダウンロードカウント、ケーブルカウント、ストリーミング制御及びスクラッチを蓄積する。
【請求項１４】
請求項１１〜１３のいずれかの装置であって、
前記ＲＡＭは、ＰＣＩＤＭＡダウンロード、ＰＣＩＤＭＡアップロード、ケーブルダウンロード、ケーブル転送及びケーブルアップロードを含む指示を蓄積する。
【請求項１５】
請求項１１〜１４のいずれかの装置であって、
前記指示のシーケンスは、予めプログラムされている。
【請求項１６】
請求項１１〜１５のいずれかの装置であって、
前記ケーブルインターフェースコントローラは、ＰＣＩカード上に存在し、９６ＭＢ／秒及び１２ＭＨｚにおける６４ビットデータパスの帯域幅を有するケーブルに接続する。
【請求項１７】
請求項１１〜１６のいずれかの装置であって、
前記ＲＡＭは、ＺＢＴ形式のＲＡＭである。
【請求項１８】
請求項１１〜１７のいずれかの装置であって、
前記ケーブルインターフェースコントローラは、前記シミュレータに関連する第１のビットサイズから前記エミュレータに関連する第２のビットサイズにデータを再パックする。
【請求項１９】
請求項１１〜１８のいずれかの装置であって、
前記指示シーケンサは、戻りデータ内の特定の状態が真となるまでケーブル転送を繰り返す。
【請求項２０】
インターフェースを介してシミュレータとエミュレータとの間でデータを転送するシステムであって、
エミュレーションサイクルに対する所望の入力状態を含むように、前記シミュレータのシミュレータバッファをアップデートする手段と、
前記エミュレーションサイクルが前記シミュレータに依存しないで進行可能であることを指示するために、前記インターフェースにターゲット書き込みを実行する手段と、
前記シミュレータに依存しないで、前記アップデートされたシミュレータバッファに含まれている前記所望の入力状態に対応して、前記インターフェース内で指示シーケンサを使用して指示のシーケンスを実行することにより、前記エミュレーションサイクルを完了する手段を備えている。
【請求項２１】
請求項２０のシステムであって、
前記エミュレーションサイクルを完了する手段は、さらに、前記シミュレータバッファを前記インターフェースのインターフェースバッファ内にバースト読み出しすることをＰＣＩコントローラに指示する手段を備えている。
【請求項２２】
請求項２１のシステムであって、さらに、
ケーブルコントローラに前記シミュレータバッファからデータを取り出すことを指示する手段と、
前記データを前記エミュレータに送信する手段を備えている。
【請求項２３】
請求項２０〜２２のいずれかのシステムであって、さらに、
前記インターフェースにおいて前記エミュレータからデータを受信する手段と、
同時に、パイプライン接続され、優先するインターフェースバッファコントローラを使用して前記データを前記シミュレータバッファにアップロードする手段を備えている。
【請求項２４】
請求項２０〜２３のいずれかのシステムであって、さらに、
データが分析のために準備されていることを前記シミュレータに警告するために、前記シミュレータバッファ内の予め定められている位置を書き込むことをＰＣＩコントローラに指示する手段を備えている。
【請求項２５】
請求項２０〜２４のいずれかのシステムであって、
前記エミュレーションサイクルを完了する手段は、複数の一般レジスタから制御信号を受信する。
【請求項２６】
請求項２０〜２５のいずれかのシステムであって、
前記エミュレーションサイクルを完了する手段は、戻りデータ内の特定の状態が真となるまでケーブル転送を繰り返す。
【請求項２７】
請求項２０〜２６のいずれかのシステムであって、さらに、
前記シミュレータと関連する第１のビットサイズから前記エミュレータと関連する第２のビットサイズにデータを再パックする手段を備えている。
【請求項２８】
請求項２０〜２７のいずれかのシステムであって、
前記エミュレーションサイクルを完了する手段は、ＰＣＩバス、インターフェースバッファ及びケーブル間のデータフローを制御し、また、前記エミュレーションサイクルを完了する手段は、ハードウェア内に実装されている。
【請求項２９】
請求項２０〜２８のいずれかのシステムであって、
前記指示のシーケンスは、予めプログラムされている。
【請求項３０】
複数の指示を蓄積する、コンピュータが読み取り可能な媒体であって、前記複数の指示は、コンピュータによって実行される時に、前記コンピュータを、
エミュレーションサイクルに対する所望の入力状態を含むようにシミュレータのシミュレータバッファをアップデートし、
前記エミュレーションサイクルが前記シミュレータに依存しないで進行可能であることを指示するためにインターフェースにターゲット書き込みを実行し、
前記シミュレータに依存しないで、前記アップデートされたシミュレータバッファに含まれている前記所望の入力状態に対応して、前記インターフェース内で指示シーケンサを使用して指示のシーケンスを実行することにより、前記エミュレーションサイクルを完了する
ように実行させる。
【請求項３１】
請求項３０のコンピュータが読み取り可能な媒体であって、
追加の指示を蓄積しており、
前記追加の指示は、前記エミュレーションサイクルを完了させるためにコンピュータによって実行される時に、前記コンピュータを、さらに、
前記シミュレータバッファを前記インターフェースのインターフェースバッファ内にバースト読み出しすることをＰＣＩコントローラに指示するように実行させる。
【請求項３２】
請求項３１のコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
前記シミュレータバッファからデータを取り出し、前記データを前記エミュレータに送信することをケーブルコントローラに指示するように実行させる。
【請求項３３】
請求項３０〜３２のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
前記インターフェースにおいて前記エミュレータからデータを受信し、
同時に、パイプライン接続され、優先するインターフェースバッファコントローラを使用して前記シミュレータバッファに前記データをアップロードするように実行させる。
【請求項３４】
請求項３０〜３３のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
データが分析のために準備されていることを前記シミュレータに警告するために、前記シミュレータバッファ内の予め定められている位置を書き込むことをＰＣＩコントローラに指示するように実行させる。
【請求項３５】
請求項３０〜３４のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
複数の一般レジスタから制御信号を受信するように実行させる。
【請求項３６】
請求項３０〜３５のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
前記指示シーケンサが、戻りデータ内の特定の状態が真となるまでケーブル転送を繰り返すように実行させる。
【請求項３７】
請求項３０〜３６のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
前記シミュレータと関連する第１のビットサイズから前記エミュレータと関連する第２のビットサイズにデータを再パックするように実行させる。
【請求項３８】
請求項３０〜３７のいずれかのコンピュータが読み取り可能な媒体であって、
追加の指示が蓄積されており、
前記追加の指示は、コンピュータによって実行される時に、前記コンピュータを、さらに、
前記指示シーケンサが、ＰＣＩバス、インターフェースバッファ及びケーブルの間のデータフローを制御するように実行させる。
【請求項３９】
請求項３０〜３８のいずれかのコンピュータが読み取り可能な媒体であって、
前記指示のシーケンスは、予めプログラムされている。
【発明の詳細な説明】
【関連する出願】
【０００１】
本出願は、２００３年１１月１８日に出願された米国仮出願第６０／５２０９４５号の利益を請求する。米国仮出願第６０／５２０９４５号の内容は、その全てが参照によって本明細書に組み込まれる。
【技術分野】
【０００２】
本発明の技術分野は、一般的には、論理回路のハードウェア及びソフトウェアの検証に関し、より詳しくは、ワークステーション上で実行されるプログラムとハードウェア検証システムの間でのデータ転送の帯域幅及び遅れ時間（レイテンシー；latency）を最適化する通信プロトコル及び通信制御ハードウェアに関する。
【背景技術】
【０００３】
集積回路の製造に先立って、設計者は、集積回路の設計（以下、検証下の設計“ＤＵＶ”という）の機能を検証する。ＤＵＶは、通常、設計のネットリスト記述の形式で提供される。ネットリストは、ハードウェア記述言語を含め、多くのソースから得ることができる。ネットリスト記述（あるいは、当業者によって呼ばれている“ネットリスト”）は、回路の構成要素及び構成要素間の電気的相互接続の記述である。構成要素は、結合論理（例えば、ゲート）やシーケンシャル論理（例えば、フリップフロップやラッチ）のような論理回路を実装するために必要な全ての回路要素を含んでいる。
【０００４】
集積回路の製作が高価であり時間を要するため、設計の検証が実行される。回路設計が機能エラーを含んでいる場合には、設計が修正され、再度製作される必要がある。集積回路の機能を検証するための多くの異なる解決法が開発されている。論理エミュレーションシステムのようなハードウェアベース(hardware-based)の設計検証は、複数のプログラム可能な集積回路内にユーザの設計を実装する、公知の装置である。このような論理エミュレーションシステムは、米国、カリフォルニア州、サンノゼのケイデンス・デザイン・システムズ・インコーポレイテッドを含む多くの販売会社から入手可能である。典型的なエミュレーションシステムは、プログラム可能に相互接続されている、プログラム可能な論理チップあるいはプロセッサチップを用いる。プロセッサベース(processor-based)のエミュレーションシステムでは、ＤＵＶは、その機能が、設計の出力を計算することによってプロセッサ内に生成されるように処理される。論理自身は、プロセッサベースのエミュレーションシステム内に実装されない。プロセッサチップを用いるハードウェア論理エミュレーションシステムの１例は、米国特許第５５５１０１３号、第６０３５１１７号、第６０５１０３０号に開示されている。米国特許第５５５１０１３号、第６０３５１１７号、第６０５１０３０号は、参照によって本明細書に組み込まれている。
【０００５】
設計検証システムの他の形式は、ソフトウェアシミュレータとして知られている。ソフトウェアシミュレータは、シミュレーションソフトウェアが、エミュレーションシステムのような特別のハードウェア内ではなく、むしろ一般目的のコンピュータ内で実行される点が、ハードウェア検証解決法と異なっている。シミュレーションは、ＤＵＶ（あるいは、その部分）及びテストベンチ(testbench)が、マシン実行可能モデル内にコンパイルされ、また、ワークステーションあるいはパソコン内で実行される、ソフトウェアベースの解決法である。テストベンチは、設計を刺激するために用いられる一連のテストベクター（test  vector）（すなわち、スティミュラス(stimulus)）であり、また、ベクターがＤＵＶ内を進行した後、ＤＵＶから出力を受信するモジュールを含んでいてもよい。現時点では、大部分の電子設計がベリログ(Verilog)のようなハードウェア記述言語（“ＨＤＬ”）を用いて設計されるため、テストベンチは、典型的には、いくつかのＨＤＬコードにより構成される。
【０００６】
ハードウェアベースの検証システム及びソフトウェアベースの検証システムは、それぞれ、他方には不足している利益を有している。例えば、ソフトウェアベースの検証システムは、現実の電子システム内に実装される時に現実のＤＵＶが直面する正確なタイミング（すなわち、クロッキング）の使用を可能とし、非常に精密な検証を可能とする。ソフトウェアシミュレータは、ユーザが全ての論理動作の結果を見ることを可能とし、また、コンピュータのモニタ上に、ハイからローあるいはローからハイへの信号変化をグラフで表すことができる。ハードウェアベースの検証システムは、通常、この能力を有していないが、ハードウェアベースのシステムは、ソフトウェアベースのシステムよりも速く、したがって、非常に速い検証を提供する。
【０００７】
ＤＵＶをデバッグするために、設計者は、期間を通じて、設計信号の活動を注視する必要がある。この理由は、デジタル回路は、１あるいは多くのクロックによって駆動され、また、エラーは、ＤＵＶを駆動するクロックのさまざまの変化時に発生するからである。設計者は、期間を通じて設計信号を評価する時、少なくとも２つの問題点に直面する。１つの問題点は、どの信号を観察すべきか（すなわち、ＤＵＶ内のどのノードを観察すべきか）である。第２の問題点は、いつ信号を観察すべきか（すなわち、どのクロック変化において及び／またはイベントのどの合流点で−時には、トリガと呼ばれる）である。これらの２つの問題点は、シミュレーション及びエミュレーションのツールに対する重大な難問を課する。第１に、回路設計は典型的に非常に大きい（例えば、百万ゲートのオーダー）。第２に、設計者が観察したい信号の数は、比例して多い。第３に、信号が観察される必要がある、設計のタイムウィンドウ（以下では、“トレースウィンドウ”という）は、シミュレーションあるいはエミュレーションに先立って予測するのが困難であるため、設計をデバッグする設計者は、できるだけ大きいトレースウィンドウを用いる。
【０００８】
これらの問題点を扱うために、回路設計者は、種々の解決法を用いてきた。そのような解決法の１つは、シミュレータ内にＤＵＶロックステップ(lockstep)を進行させることである。この解決法を用いれば、シミュレーションの進行は、相互に作用する動作において、設計者によって制御される。設計者は、シミュレーションを実行、信号を停止及び観察、続行、そして、処理を繰り返すことができる。シミュレーションが停止する時、設計者は、設計内の任意の信号の状態をチェックすることができる。第２の解決法は、信号ダンプを備える自由進行シミュレーションを実行することである。“自由進行”解決法を用いることにより、シミュレーションは、ユーザの介在なしに自由に実行され、また、シミュレーションの期間中に観察される信号は、シミュレーションの期間中にダンプされる。シミュレーションが開始する前に、ダンプされる信号が特定されなければならないことに注意することが重要である。これらのシミュレーション解決法は、有効であるが、非常に遅い。第３の解決法は、トレースウィンドウの固定の大きさに対して十分な可視性を許容するエミュレータを用いることである。この解決法では、エミュレータは自由に進行し、また、十分な視野を許容するエミュレータ内でＤＵＶによって発生される信号は、任意の期間に対して蓄積される。最後の解決法は、ＤＵＶを、制限された可視性及び再生を備えるエミュレータを用いてエミュレートすることである。この解決法を用いれば、制限された情報が、エミュレーションの期間の間蓄積される。設計者は、分析に十分な情報を得るためにエミュレーションを数回実行する。
【０００９】
前述したように、ハードウェアベースの検証システムを用いる１つの方法は、ソフトウェアシミュレータと接続している。これは、時には、シミュレーションアクセラレーション(simulation  acceleration)と呼ばれる。エミュレータは、シミュレータより速い速度で動作するため、エミュレーションシステム、特に、プロセッサベースのエミュレーションシステムは、エミュレートされる回路内の状態や行動に関する大量の情報を含んでいる。この理由は以下のとおりである。シミュレータは、シミュレーションの単一サイクルの直後の特定の時点（すなわち、クロックサイクル）に、ＤＵＶ内の特定のノードに信号が存在する時に、設計者が信号の状態を見ることを可能とする。シミュレーションサイクルは、ＤＵＶを駆動する最も速いクロックの１ステップの間の総時間（したがって、発生する状態変化）である。言い換えれば、シミュレーションサイクルは、シミュレーションサイクルの間に発生する任意の信号変化が典型的には関係しないため、検証動作の期間中の重要な時点である。通常、ＤＵＶ内において重要である信号変化のみが、１つのシミュレーションサイクルの終わりに存在する信号変化である。
【００１０】
シミュレーション環境では、シミュレーションサイクルの期間ＤＵＶを駆動するスティミュラは、ワークステーション上でモデル化される。対照的に、シミュレーションアクセラレーション環境では、ＤＵＶを駆動するスティミュラは、ＤＵＶをエミュレートするエミュレータに送られ、そして、応答がシミュレータに送り返される。エミュレータは、シミュレータより劇的に速いクロック速度でＤＵＶを進行させるため、シミュレーションアクセラレーションは、ＤＵＶを検証するために費やす総時間を劇的に低減することができる。
【００１１】
ユーザインターフェース及びソフトウェアシミュレータは、シミュレーションアクセラレーションを時間をかける価値があるものとするために、この状態情報に絶えずアクセスする必要がある。また、シミュレーションエンジンは、シミュレーションを継続するために、エミュレートされる回路内における状態変化に対する迅速な応答が必要であり、低い遅れ時間が要求される（すなわち、シミュレータ及びエミュレータは、通常、ロックステップモードで進行する必要がある）。さらに、大きなエミュレーション内で要求され、また、利用可能とされるデータの全くの量は、高い帯域幅接続を必要とする。
【００１２】
シミュレーションアクセラレーションのためのサイクル時間は、通常、シミュレータからエミュレータに信号を送るために要する時間、エミュレータが、ＤＵＶを介して進行する信号内に発生した変化を計算するために要する時間、それらの変化をワークステーション内で作動しているシミュレータに送り返すために必要な時間の総和として定義される。シミュレーションアクセラレーション内の鍵となる問題点である遅れ時間は、エミュレータからの応答を得るために要する時間の総和である。有用な検証方法であるシミュレーションアクセラレーションのために、遅れ時間は、できるだけ低減されなければならない。
【００１３】
少なくとも１つの従来の解決法は、ハードウェアベースの検証システム（例えば、エミュレータ）とソフトウェアベースの検証システム（例えば、シミュレータ）との間の低い遅れ時間及び高い帯域幅を提供する。１つの従来の解決法では、ソフトウェアシミュレータは、エミュレータ内のローカルプロセッサへの高い遅れ時間イーサーネット通路を介し、そして、エミュレーションシステム内の個々の構成要素をアクセスするためのアドレス／データ・ハンドシェイクパス(handshake  path)を介してエミュレータを質問することによって、エミュレータの状態をアクセスする。第２の従来の解決法では、ダイレクトアタッチスティミュラス（“ＤＡＳ”）(direct  attach  stimulus)インターフェースが、ＤＵＴのエミュレートされる論理内にプログラムされる１連のレジスタ回路に接続される。ソフトウェアシミュレーションアクセスは、これらのレジスタ内への及び／またはレジスタからのデータのバースト内にグループ化される。このデータのバーストは、エミュレートされるレジスタとワークステーション内のＰＣＩカード上のメモリバッファとの間の３１ビットデータパスを渡って転送される。シミュレータは、データをフォーマットし、データをＰＣＩメモリに転送し、また、転送を開始させる“ＤＡＳドライバ”へのデータを取り扱う。完了すると、ドライバは、リターンデータをシミュレータのバッファに戻す。ＤＡＳカードは、カリフォルニア州、サンノゼのケイデンス・デザイン・システムズ・インコーポレイテッドから入手可能な製品であり、ワークステーションあるいはパーソナルコンピュータ内で動作するシミュレータとエミュレータとの間の通信を提供する。
【００１４】
第１の従来の解決法の問題点は、エミュレーションシステム内の埋め込まれたプロセッサへのネットワークパスが、要求を受信し、エミュレーションエンジン内の適切な要素にアクセスし、応答を策定し、そして、それをネットワークを渡ってワークステーションアプリケーションに送るローカルプロセッサの応答時間のため、非常に高い遅れ時間を有している。
【００１５】
前述した従来技術のＤＡＳ構造では、多くのワークステーシインターフェース内のように、遅れ時間や帯域幅は、ワークステーションの入力／出力（“Ｉ／Ｏ”）サブシステム、ＰＣＩバス、ローカルハードディスクアクセス、そして、ＤＭＡエンジンのようなＩ／Ｏソースへのアクセスに依存する。これは、転送のセットアップ及び転送自身に対して真実である。さらに、先のＤＡＳ構造では、ハードウェア制限のため、ワークステーションメモリ内の各３２ビットのうちの３１ビットのみがエミュレーションデータとして使用可能である。これにより、シミュレータ内の長いビットベクタがＤＡＳパケットバッファ内の隣接するビットに直接にマップされず、ギャップを避けるような方法でビットを詰め込むためのソフトウェアを必要とする、望ましくない状態が発生する。
【００１６】
エミュレーションシステム内で実行されるＤＵＶによって発生する多くの信号が増加する一方で、シミュレーションアクセラレーションの人気がより高くなっているため、ワークステーション内を進行するシミュレータと、これらのシミュレータと通信するエミュレータの間で信号及び指示を転送する改良された方法に対する要求がある。
【概要】
【００１７】
エミュレーションシステムとシミュレータとの間でのシミュレーション及び可視化データ転送のための最適化インターフェースが開示されている。１つの実施の形態では、インターフェースを介するシミュレータとエミュレータとの間でのデータ転送方法は、シミュレータのシミュレータバッファを、エミュレーションサイクルに対して所望の入力状態を含むようにアップデートする。インターフェースへのターゲット書込は、エミュレーションサイクルが進行可能であることを指示するために実行される。エミュレーションサイクルは、シミュレータと独立しているインターフェース内で指示シーケンサを用いて完了する。
【００１８】
要素の実装及び結合に関する種々の新規な詳細を含む、前述の及び他の好ましい特徴は、添付の図面を参照してより詳細に記述され、また、クレーム内で指摘されている。ここに記述されている特別の方法及び回路は、説明のためにのみ示されており、制限として示されているものでないことが理解される。当業者に理解されるように、ここに記述されている原理及び特徴は、本発明の概念から逸脱することなく種々のそして多くの態様において実施される。
【発明を実施するための最良の形態】
【００１９】
エミュレーションシステムとシミュレータとの間のシミュレーション及び可視化データ転送のための最適化インターフェースが開示されている。１つの実施の形態では、インターフェースを介する、ワークステーション内で進行するシミュレータとエミュレータとの間でのデータ転送方法は、シミュレータのシミュレータバッファを、エミュレーションサイクルに対する所望の入力状態を含むようにアップデートする。インターフェースへのターゲット書込は、エミュレーションサイクルが進行することを指示するために実行される。エミュレーションサイクルは、シミュレータと独立しているインターフェース内で指示シーケンサを用いて完了する。
【００２０】
以下の記述は、説明のためのものであり、特別の専門語は、ここに開示されている種々の創作性を有する概念の完全な理解を提供するために示されている。しかしながら、当業者には、これらの特別な詳細が、ここに開示されている種々の創作性を有する概念を実施するために要求されないことが明らかである。
【００２１】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内でのデータビット上の動作のアルゴリズム及びシンボル表現の用語で表されている。これらのアルゴリズム記述及び表現は、データ処理技術分野の当業者によって、作業の要旨を最も効果的に他の当業者に伝達するために使用される手段である。ここで、アルゴリズムは、一般的に、所望の結果に導く、ステップの首尾一貫したシーケンスであるように表される。ステップは、物理量の物理操作を必要とする。通常、必要としないが、これらの量は、蓄積され、転送され、結合され、比較され及び他の方法で扱われることが可能な電気あるいは磁気信号の形式をとる。主に通常使用の理由により、これらの信号をビット、値、要素、シンボル、文字、単語、数等として参照することが、時には便利であることが判明している。
【００２２】
しかしながら、これらの全て及び類似の単語は、適切な物理量と関連し、また、これらの量に適用される単なる便利なラベルであることを心に留める必要がある。以下の議論から明らかであるものとして特別に他の方法で説明されていない場合には、記述を通して、“処理”あるいは“計算”あるいは“算出”あるいは“決定”あるいは“表示”のような用語を使用する議論は、コンピュータシステムのレジスタ及びメモリ内で物理（電子）量として表わされているデータを、コンピュータシステムのメモリあるいはレジスタあるいは他の情報の蓄積、転送あるいは表示装置内の物理量として同じように表わされている他のデータに扱い及び変換する、コンピュータシステムあるいは類似の電子計算装置の行動及び処理として参照されることが認識される。
【００２３】
また、本発明は、ここで動作を実行するための装置に関する。この装置は、要求される目的のために特別に構成可能であり、あるいは、コンピュータ内に蓄積されているコンピュータプログラムによって選択的に作動あるいは再構築可能である、一般目的のコンピュータにより構成される。このコンピュータプログラムは、限定はされないが、フロッピーディスク（登録商標）、光学ディスク、ＣＤ−ＲＯＭ及び磁気−光ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気あるいは光カード、あるいは、電子指示を格納するのに適している任意の形式の媒体等の、コンピュータ読み取り可能な蓄積媒体であって、それぞれコンピュータシステムバスに結合されている蓄積媒体内に蓄積される。
【００２４】
ここに示されているアルゴリズム及び表示は、任意の特別なコンピュータあるいは他の装置に固有に関係しない。種々の一般目的のシステムが、ここに示されている技術に対応するプログラムとともに使用可能であり、あるいは、要求される方法ステップを実行するためのより特殊化された装置を構成するために便利であることを証明する。これらのシステムの多様性に対して要求される構成は、以下の記述から明らかとなる。さらに、本発明は、特別のプログラム言語を参照して記述されていない。種々のプログラム言語が、ここに記述されている発明の教示を実装するために使用可能であることが認識される。
【００２５】
図面に戻ると、本教示の、現時点において好ましい装置及び方法が、以下に記述されている。ここに記述されている種々の実施の形態は、ＤＭＡ制御を提供し、ＰＣＩ転送を最適化することによって、ワークステーションとエミュレータとの間でデータを転送する際の遅れ影響を最小化する。また、これらの実施の形態は、データ転送を開始及び終了させるために必要な組み立て（セットアップ）を最小化する。また、広いデータパスは帯域幅を増大させる。種々の実施の形態は、重要なデータをパケット内に編成し、そして、それをエミュレーション回路に同期化させるための転送を制御する、エミュレートされる回路内に埋め込まれる制御論理とのインターフェースによって、スティムラスを挿入し、また、エミュレーション論理から直接にデータを取り出す（以下では、ダイレクトアタッチスティミュラスという）、パケット転送プロトコルを含む構造を使用する。
【００２６】
図1は、１つの実施の形態に対応する、例示的な高速インターフェースのブロック図を示している。より詳しくは、インターフェース２０は、シミュレーションプログラムを進行させるワークステーション１０とエミュレーションシステム３０の間の低レイテンシ（遅れ時間）インターフェースである。ワークステーション１０は、ソフトウェアシミュレーションプログラムを形成する指示を含む、コンピュータ指示を実行することができる中央処理ユニット（“ＣＰＵ”）１５を有している。ワークステーションは、パーソナルコンピュータ等を含む任意の形式の計算装置である。また、ワークステーション１０は、ＣＰＵ１５と通信するランダムアクセスメモリ（ＲＡＭ）１８の形式のメモリを有している。また、ＣＰＵ１５は、インターフェース２０に接続される。インターフェース２０は、ケーブル３５を介して、エミュレーションシステムのようなハードウェアベースの機能検証装置３０と通信する。インターフェース２０は、ダイレクトメモリアクセス（“ＤＭＡ”）モジュール２４と通信するＩ／Ｏプロセッサ２２を有する。以下で分かるように、ＤＭＡ２４により、ハードウェアアクセラレーションの期間中にエミュレーションシステム３０から要求された信号は、ＣＰＵ１５を使用する必要なしにＲＡＭ１８内に直接に蓄積される。
【００２７】
インターフェース２０は、ワークステーション１０内に挿入可能な１つのカード上に配置可能である。現時点において好ましい実施の形態では、インターフェース２０は、通常“ＰＣＩバス”と呼ばれている、周辺構成要素相互接続バス４０を介してワークステーションと通信する。ＰＣＩバス４０は、周辺装置が、ワークステーションのようなコンピュータシステムと通信するのを可能とする標準バスである。ワークステーション１０は、サン・マイクロシステムズのＵｌｔｒａ６０、Ｕｌｔｒａ８０、Ｕｌｔｒａ４５０、Ｂｌａｄｅ１０００、ＨＰＪ６０００、ＩＢＭのＲＳ／６０００      Ｆ８０、Ｄｅｌｌのワークステーション５３０、ＩＢＭのＩｎｔｅｌｉｓｔａｔｉｏｎ  ＺＰｒｏ６８６６、あるいは、同様の計算装置である。インターフェース２０によって、信号は、エミュレータ３０と、ワークステーション１０内のＰＣＩバス４０を介してワークステーション１０上を進行するシミュレータとの間を前方及び後方に転送可能である。エミュレータが、ＰＣＩバス４０が扱うことができるよりはるかに多くの信号を生成及び受信することができるため、インターフェース２０が必要である。インターフェース２０は、ＲＡＭ１８からデータを直接集め、それをエミュレータ３０にインターフェース３５を介して転送し、また、同時に、エミュレータ３０からのデータをＤＭＡ２４を用いてＲＡＭ１８に転送する。言い換えれば、ＰＣＩバス４０は、両帯域幅が不足し、また、エミュレータ内で発生した設計信号を、有用な方法でシミュレータ内で評価可能な十分に大きい遅れ時間を有している。
【００２８】
図２は、本発明の１つの実施の形態に対応する、インターフェース２０の例示的なデータパスを示すブロック図を示している。インターフェース２０の多くの機能は、フィールドプログラマブルゲートアレイ（“ＦＰＧＡ”）内にプログラム可能である。インターフェース２０は、ＰＣＩバス４０とインターフェース２０の残りの構成要素との間のインターフェースとして行動するＰＣＩコア６５を含んでいる。ＰＣＩコア６５は、インターフェース２０が、ＰＣＩバス４０上にデータを配置し、また、ＰＣＩバス４０からデータを受信可能となるように、標準ＰＣＩプロトコルを実装している。ＰＣＩコア６５は、いくつかの異なる販売者から要求される標準の構成要素として実装可能である。１つの実施の形態によれば、ＰＣＩコア６５は、ＸｉｌｉｎｘのＶｉｒｔｅｘ−ＩＩ  ６４ビット、６６ＭＨｚ、Ｍａｓｔｅｒ／ｔａｒｇｅｔ  ＩＰコアを用いている。ＰＣＩコントローラ７０は、ＰＣＩコア６５と通信する。ＰＣＩコントローラは、ＰＣＩコア６５とインターフェース２０の残りとの間のインターフェースとして動作する。現時点において好ましい実施の形態では、ＰＣＩコア６５とインターフェース２０の他の部分との間では通信しない。ＰＣＩコントローラ７０は、ＰＣＩバス４０からインターフェース２０内のメモリ及びレジスタへのアクセスを可能とする。現時点において好ましい実施の形態では、ＰＣＩバス４０へのあるいはＰＣＩバス４０からの全てのアクセスは、３２ビット幅あるいは６４ビット幅のいずれかである。ＰＣＩコントローラ７０は、ホストメモリへの読み出し及び書き込みバースト転送のＰＣＩイニシエータ(initiator)として動作することができる。
【００２９】
また、インターフェース２０は、インターフェース２０が動作シーケンスを実行可能とする指示シーケンサ（“ＩＳ”）を備えている。例示的な指示シーケンスは、以下の通りである。
【表１】
0004656929.tif 000002
【００３０】
指示シーケンサ５０によって実行される正確な指示シーケンスは、プログラマの考え次第である。この柔軟性は、ソフトウェアに、システムの動作を最適化するためのより大きな能力を与える。また、この構造は、ハードウェアが、指示セットの展開を通して、また、論理設計の適切な部分に差し込むことによって、新しい機能強化能力を統合することをより容易にする。
【００３１】
最も簡単なモードでは、指示シーケンサ５０が、指示完了に対してＰＣＩＷ（ＰＣＩ書込語）が追随する単一の動作を備える非常に短いシーケンスを実行することを可能にする。これは、個々の動作が単一のＡＰＩ呼び出しを通して実行される現在のＡＰＩモードを支えるのに有用である。
【００３２】
また、指示シーケンサ５０は、インターフェース２０とエミュレータ（図２には図示されていない）との間で通信するケーブル３５からのあるいはケーブル３５へのデータ転送を開始する。１つの実施の形態によれば、ケーブル３５の帯域幅は、１２ＭＨｚにおいて６４ビットのデータパスを有することにより、各方向に９６ＭＢ／秒である。１つの実施の形態によれば、ＭｏｌｅｘのＬＦＨ  ２００ピンコネクタが、ケーブルをインターフェース２０に接続するために使用可能である。最終的に、指示シーケンサ５０は、ＰＣＩバスを介する、ワークステーションＲＡＭ（例えば、図１のＲＡＭ１８）とインターフェースＲＡＭ７５間のメモリデータを複写するためのＤＭＡ転送を実行する、メモリ複写指示を開始する。
【００３３】
指示シーケンサ５０は、指示シーケンサ５０を介して連結される指示を蓄積する内部ＲＡＭ５５からの指示を受信する。１つの実施の形態によれば、ＲＡＭ５５は、２ＭＢの蓄積空間を有する内部ＦＰＧＡ  ＲＡＭである。ＲＡＭ５５内に蓄積される例示的な指示は、以下の通りである。
【表２】
0004656929.tif 000003
【表３】
0004656929.tif 000004
【００３４】
現時点において好ましい実施の形態では、指示シーケンサコードに使用可能な深さが５１２指示であることに注意することは重要である。この空間により、いくつかの異なる指示シーケンスは、内部ＲＡＭ５５内にロード可能である。異なるシーケンスにスイッチするために、一般レジスタ６０内の指示ポインタは、所望の指示シーケンスの開始に対してアップデートされる。
【００３５】
指示シーケンサ５０は、適切な場所で動作の平行化が可能である。例えば、ＣＵＰ（“エミュレータからアップロード、比較”）指示が完了する前に、ＰＵＰ（“ブロックをワークステーションメモリにアップロード”）指示を開始することができる。通常、シーケンス指示は、調和しない動作が同時に行われないように適切にコード化されるのが好ましい。これにより、同時に実行することができない動作の平行化に対する保護が設けられる。例えば、ＰＣＩ動作は、他のＰＣＩ動作が進行中である場合には、実行されない。（一般に、大部分の動作は、大分部の種類の先行する動作の完了を要求する。
【００３６】
また、ＰＣＩコントローラ７０は、ゼロバス回転（“ＺＢＴ”）形式のＲＡＭコントローラ７５と通信する。ＲＡＭ８５は、“ゼロバス回転”インターフェースを使用するスタティックＲＡＭである。ＺＢＴインターフェースは、データバスが、読み出しデータから書き込みデータに（あるいは、その逆に）スイッチする時に発生する遅れ時間を除去する。ＺＢＴ形式のＲＡＭ８５を使用することにより、読み出し及び書込動作が単一のクロックサイクル内で実行可能となる。ＲＡＭコントローラ７５は、ケーブルインターフェースコントローラ８０とデータを交換する。ケーブルインターフェースコントローラ８０は、順にエミュレータ(図示省略)と通信するケーブル３５を通信する。ＲＡＭコントローラ７５は、ＲＡＭ８５ができるだけ速くデータを読み出し及び書き込むように最適化され、これにより、遅れ時間を最小化する、パイプライン接続されたコントローラである。ケーブルインターフェースコントローラ８０は、インターフェース２０の、ケーブル３５とのハンドシェイクを制御する。言い換えれば、ケーブルインターフェースコントローラ８０は、ＲＡＭ８５に蓄積されたデータがケーブル３５上に配置される方法を制御する。
【００３７】
ＲＡＭ８５は、エミュレータとシミュレータとの間で前後に転送されるデータを蓄積することによって、インターフェース２０に対するローカルメモリとして動作する。ＺＢＴ形式のＲＡＭ８５の使用は、それらのメモリが、エミュレータ及びシミュレータの両方が、同時にそれぞれの間での前後方向への転送を可能とするため、他のＲＡＭ技術に対して好ましい。
【００３８】
指示シーケンサ５０は、一般レジスタ６０内に蓄積されるデータによって制御される。一般レジスタ６０は、指示シーケンサ５０が、内部ＲＡＭ５５からの情報を得るために使用する構成情報を蓄積する。一般レジスタ６０内の例示的なレジスタは、コントローラ情報、コントローラモード、インタラプト制御、コントローラステイタス、ケーブル入力、クロック制御、指示シーケンサ（“ＩＳ”）指示ポインタ、ＩＳダイレクトコマンド、ＩＳダイレクト／ステップ実行、ＰＣＩコントローラ制御、コントローラ失敗、ＥＥＰＲＯＭコマンド、構成ＪＴＡＧコマンド、構成ＪＴＡＧ出力、構成ＪＴＡＧ入力、ケーブル比較値、ケーブル比較マスク、ＰＣＩアップロードカウント、ＰＣＩダウンロードカウント、ケーブルカウント、ストリーミング制御及びスクラッチを含んでいる。
【００３９】
現時点での好ましいハードウェアは、１つのフィールドプログラム可能なゲートアレイ（ＦＰＧＡ）及び２つのメガバイトのＳＲＡＭ５５を有し、各方向への６６個の信号導体を含むケーブル３５に接続する６４ビット／６６ＭＨｚのＰＣＩである。現時点での好ましい実施の形態では、一般レジスタ６０、ＰＣＩコア６５、ＰＣＩコントローラ６５、指示シーケンサ５０、内部ＲＡＭ５５、ＲＡＭコントローラ７５及びケーブルインターフェースコントローラは、これらの機能をＦＰＧＡ１００内にプログラムすることによって実装される。
【００４０】
図３は、本発明の１つの実施の形態に対応する、インターフェース２０のための例示的な論理制御パスを示している。制御は、制御される機能ブロックを指している矢印によって示されている。図３に示されているように、指示シーケンサ５０は、一般レジスタ６０によって制御される。これに比べて、指示シーケンサ５０は、ケーブルインターフェース８０に、エミュレータ（例えば、図１のエミュレータ３０）とともにケーブル転送を開始するために信号を送る。また、指示シーケンサ５０は、指示のシーケンスを読み出し及び処理するために内部ＲＡＭ５５を制御する。ＰＣＩコントローラ７０は、２つの構成要素を有している。ＰＣＩコントローラ７０の第１の構成要素は、指示シーケンサ５０によって制御されるイニシエータ７０ｂである。指示シーケンサ５０は、その後にイニシエータ７０ｂによって運ばれるメモリ複写ＤＭＡ動作を開始させるために、イニシエータ７０ｂを制御する。また、イニシエータ７０ｂは、一般レジスタ６０を制御する。ＰＣＩコントローラ７０の第２の構成要素は、ターゲット７０ａである。ＰＣＩコントローラ７０のイニシエータ７０ｂと同様に、ターゲット７０ａも、一般レジスタ６０を制御する。また、ターゲット７０ａ及びイニシエータ７０ｂは、ＲＡＭコントローラ７５を制御する。この理由は、データがＰＣＩバス４０に書き込まれあるいはＰＣＩバス４０から読み出される時に、ＰＣＩコントローラ７０が制御するからである。このように、ターゲット７０ａとイニシエータ７０ｂは、データがＲＡＭ８５から読み出されあるいはＲＡＭ８５に書き込まれる時に制御する。また、ＲＡＭコントローラ７５は、ケーブルインターフェースコントローラ８０によって制御される。ケーブルインターフェースコントローラ８０は、ＲＡＭコントローラ７５を渡る制御を有している。ケーブルインターフェースコントローラ８０がケーブル転送を実行する時、ケーブルインターフェースコントローラ８０は、ケーブル３５とＲＡＭ８５の間でデータを転送するためにＲＡＭコントローラ７５を直接制御する。指示シーケンサ５０は、ケーブルインターフェースコントローラ８０を制御する。
【００４１】
図４は、１つの実施の形態に対応する、例示的なＲＡＭパイプラインデータパスを示している。ストリーミングは、ＲＡＭ８５をアクセスするためのケーブルコントローラ８０に対する優先性を与える（ケーブルプロトコルが停止不能であるため）、一方、ＲＡＭ８５への全ての残りの帯域幅がＰＣＩコントローラ７０によって消費されることを許容する、パイプライン接続され、優先するＲＡＭコントローラ７５によって可能とされる。ＲＡＭ８５へのインターフェースは、１つの実施の形態では３２ビット幅である。ＲＡＭコントローラ７５とケーブルコントローラ８０は、同じ速度で動作する。“読み出し”動作では、ＲＡＭコントローラ７５は、単一サイクルに対して有効なデータと有効なフラグを実行する。このＲＡＭインターフェースは、パイプラインの遅れを示す有効なフラグを有する、ケーブルインターフェースに対してパイプライン接続されたＳＲＡＭのように見える。ＲＡＭコントローラは、一般的に、ケーブルコントローラに対する優先性を備えているため、この遅れは固定であるが、有効なフラグは、ケーブルコントローラの設計を、実際のパイプラインの遅れに依存しないものとする。
【００４２】
ケーブルコントローラ８０に対するさらなる機能強化は、ワークステーション１０によって選択された３２ビットあるいは６４ビットの塊から、エミュレータに転送される５６ビットの塊へのデータの再パックを可能にする。５６ビット幅のケーブルモードは、データをエミュレータ３０に転送するのに利用可能な帯域幅を増大する。１つの実施の形態によれば、５６ビットデータは、２つの内部の高速ケーブル間のスプリットである。使用されるデータビットは、３２ビットモードで使用される２８の低ビットであり、第２の高速ケーブル上では２８ビットが加算される。再パックは、ワークステーションの観点から、データ内に“ホール”が存在しないことを保証する。これにより、ビットのベクタは、ソフトウェアによる不必要な（そして、低速の）ビット操作を避けながら、ソフトウェアにより連続して処理可能である。図５は、本発明の１つの実施の形態に対応する、例示的な広いケーブルモードビットマッピングを示している。この再パックは、全てケーブルコントローラ８０内で行われ、ＰＣＩコントローラ７０、ＲＡＭコントローラ７５及びエミュレータ３０に対して全く透明である。図５に示されているように、ＲＡＭ５５内の用語内のビット位置は、ケーブル３５上の用語内のビット位置に直接にマップされない。しかしながら、バッファ３５を介するビットのインデックスは、全てのケーブル転送を介するビットのインデックスと同じである。ケーブルコントローラ８０は、ケーブル３５からデータを受信する時、バッファ５５の終わりに、不要データの付加語を書き込んでもよい。
【００４３】
ローカル使用では、専用のＤＭＡコントローラ２４は、転送を開始するための遅れ時間を減少させ、また、コントローラ２４のローカルバッファＲＡＭ１８との統合を改善する。従来装置では、アプリケーションは、ハードディスク転送に対しても使用されるワークステーションシステムＤＭＡコントローラの使用に対して、動作システムと好ましくない競合をした。実際、システムＤＭＡコントローラは、ＰＣＩ装置へのバーストＰＣＩ転送に対し十分に最適化されていない。
【００４４】
エミュレートされた設計がコンパイルされ、ＡＰＩがロードされると、エミュレータに対する多くの転送パラメータが固定される：転送サイズ、バッファ位置等。指示シーケンサを備えることにより、インターフェース２０は、所望の転送を実行するために予めプログラムされ、そして、ワークステーションメモリバッファ１８は、簡単に言うと、ＰＣＩアクセス、したがって、遅れ時間の最適化を“進め”、転送をセットアップ及び開始する準備をする。このデータパスは図２に示されており、コントロールパスは図３に示されている。
【００４５】
ＲＡＭデータパスは、図４に示されているように、ＲＡＭ帯域幅を最大化し、ローカルＲＡＭ１８へのあるいはローカルＲＡＭ１８からの同時のＰＣＩ及びケーブルアクセスを支えるために、十分にパイプライン接続されている。この同時のアクセスは、全てのケーブル転送が完了するのを待機すること無しに、ケーブルによって受信されたデータをＰＣＩに迅速に転送することにより、転送遅れ時間を減少するために使用される“データストリーミング”を支える。
【００４６】
増大するＰＣＩ帯域幅のために、インターフェース２０は、利用可能である６４ビットのバス幅と６６ＭＨｚの信号送信を使用する、ＰＣＩ２．２に十分適合している。従来装置では、データは、データが送られた方法（：１ワード当たり３１ビットのデータ、バッファ内では各用語内に１ハンドシェイクのビット）と同じ方法でワークステーションのメモリ内に編成される。インターフェース２０を備えることにより、ケーブル３５は、いくつかのシステム上では６４ビットのデータまで、他では５６ビットのデータまで扱うことができる。全てのデータは分断されないで蓄積され、シミュレーションデータを３１ビットの用語に再配列する時間消費動作を除去する、ワークステーションデータの全ての３２あるいは６４ビットは、有用なデータである。５６ビット転送の場合、６４ビットバッファからのバイトは、図５に示されているように、それらを５６ビットの用語にパックする、バイトを順に送信するためのインターフェース回路（例えば、図１のインターフェース２０）によって再配列される。
【００４７】
図６は、１つの実施の形態に対応する、シミュレータからエミュレータへの例示的なデータ転送の例示的なフロー図６００を示している。データの転送は、状態情報及びスティムラスを含んでいる。スティムラスは、次のエミュレーションサイクル（６０５）に対する所望の入力状態を含むように、ワークステーション上でドライバＡＰＩを介して内部バッファ１８をアップデートする。そして、シミュレータ１０は、指示シーケンサ（６１０）を開始させるために、一般レジスタ６０に対するインターフェース２０への単一のターゲット書き込みを実行する。この地点で、指示シーケンサ５０は、引き継ぎ、そして、ワークステーションのプロセッサ１５に全く依存しない残りのサイクルを駆動する。指示シーケンサ５０は、一般レジスタ６０からの制御信号を常に監視している。指示シーケンスは、指示シーケンサ５０によってＲＡＭ５５から読み出され、ＰＣＩイニシエータ７０ｂに対して、ワークステーションのバッファ１８の内容をボード上のバッファ５５（６１５）内にバースト読み出しすることを指示する。次に、指示シーケンスは、ケーブルコントローラ８０に、必要なデータをＲＡＭ８５から引き出し、そして、それをエミュレータ３０（６２０）に送ることを指示する。そして、エミュレータは、データを処理し、結果をインターフェース２０（６２５）に送り返す。データがエミュレータ３０から受信されると、それは、同時に、ＰＣＩコントローラ７０からＤＭＡ２４を介してワークステーションメモリ１８にアップロードされる（ストリーミングと呼ばれる）。全てのデータがエミュレータ３０から転送されると、指示シーケンサ５０は、エミュレーションサイクルの結果が分析（６３０）される準備ができていることをワークステーションプロセッサ１５に警報するために、ＰＣＩコントローラ７０に、ワークステーションメモリ１８内の予め定められているメモリ位置を書き込むことを命じる。ワークステーション１０は、データを新しい入力に転送し、処理を繰り返す（６３５）。
【００４８】
指示シーケンサ５０の典型的な転送及び再プログラム可能なシーケンス特徴のみが、多くの他の可能性を可能とすることを知ることは重要である。例えば、非常に少ないビットのみが入力において変化する場合、指示シーケンサ５０は、ワークステーションメモリ１８からのバースト読み出しを飛ばし、そして、ワークステーション１０は、ターゲット書き込みを介して直接にインターフェースバッファ５５を修正することができる。指示シーケンサ５０の他の特徴は、戻りデータ内の特定の状態が真となるまで、ケーブル転送を繰り返すことができることである。この能力は、エミュレータ３０から戻されたデータが、実際には、古いデータよりも新しいエミュレータサイクルの事実上の結果であることを確認するために用いられる。
【００４９】
また、ここに開示されている種々の実施の形態は、メッセージバッファの連続する再送とメッセージ内容に依存する可変なメッセージサイズを含む、転送プロトコル上のいくつかの変更を含むことができる。転送の開始は、ワークステーションの制御を受けるよりも、ハードウェアイベントによってトリガされてもよい。メッセージの長さは、ＰＣＩ空間内で直接にワークステーションソフトウェアによってセットされるよりも、メッセージ内のデータによって決定されてもよい。種々のローカルバッファは、受信したバッファ内の特別のデータに応答して送信されてもよい。
【００５０】
エミュレーションシステムとシミュレータとの間でのシミュレーション及び可視化データ転送のための最適化インターフェースが開示されている。最適化インターフェースは、特別の例やサブシステムに関して記述されているが、当業者であれば、これらの特別な例やサブシステムに限定されず、他の実施の形態にも広がることは明らかである。
【図面の簡単な説明】
【００５１】
【図１】本発明の１つの実施の形態に対応する、例示的な高速インターフェースのブロック図を示している。
【図２】本発明の１つの実施の形態に対応する、インターフェース２０の例示的なデータパスを示すブロック図を示している。
【図３】本発明の１つの実施の形態に対応する、インターフェース２０のための例示的な論理制御パスを示している。
【図４】本発明の１つの実施の形態に対応する、例示的なＲＡＭパイプラインデータパスの図を示している。
【図５】本発明の１つの実施の形態に対応する、例示的なワイドケーブルモードビットマッピングの図を示している。
【図６】本発明の１つの実施の形態に対応する、シミュレータからエミュレータへのデータの例示的な転送の例示的なフロー図を示している。
【図１】
0004656929.tif 000005
【図２】
0004656929.tif 000006
【図３】
0004656929.tif 000007
【図４】
0004656929.tif 000008
【図５】
0004656929.tif 000009
【図６】
0004656929.tif 000010