(57)【要約】【課題】ネットワークベースの階層エミュレーションシステムを提供する。【解決手段】コンピュータと、被測定デバイスのエミュレート部分に適合するエミュレーションリソースを含むリソースボードを有する。各リソースボードは、パケットルーティングネットワークを通じて伝送されたデータパケットによって、相互通信及びコンピュータネットワークとの通信のためのトランザクションデバイスを有する。パケットルーティングネットワークとトランザクションデバイスは、個々のリソースボード上のリソースの入出力間に「仮想の信号経路」を提供する。それを行うために、一のリソースボード上のトランザクションデバイスがローカルのリソース出力信号のステートを表すデータを含むパケットを他のリソースボード上のトランザクションデバイスに送り、そして、リソースの入力端子に供給された信号をパケットにより運ばれたデータによって指定されたステートにする。【選択図】        図１
2005011344.tif 000002
【特許請求の範囲】
【請求項１】
被測定電子デバイス（ＤＵＴ）と複数の試験信号の経時的に変化する挙動を記述すると共にＤＵＴ内の複数のプローブポイントを特定して、前記試験信号がＤＵＴに入力として加えられるときにその特定されたプローブポイントにおいて現れる応答信号がどのような挙動を取るのかを判定するハードウェア記述言語（ＨＤＬ）のテストベンチを処理する方法であって、その方法は、
前記ＤＵＴの各部分をエミュレートするための複数の第１のエミュレーションリソースを提供する工程ａであり、該第１のエミュレーションリソースへの入力として供給されるプログラムデータによりそれぞれの第１のエミュレーションリソースの入力信号と出力信号の論理関係を制御しながら、それぞれの第１のエミュレーションリソースが入力信号に応じて出力信号を生成するものと、
前記第１の各エミュレーションリソース間に第１の信号経路を提供して、前記第１の各エミュレーションリソースがその出力信号を互いに送信すると共に互いに入力信号を受信する工程ｂと、
パケットを搬送するためのパケットルーティングネットワークを提供する工程ｃと、
第１のトランザクションデバイスを前記パケットルーティングネットワークと前記第１の各エミュレーションリソースに接続する工程ｄであって、前記第１の各エミュレーションリソースが固有のネットワークアドレスを割り当てられるものと、
パケットを前記パケットルーティングネットワークを介して前記第１のトランザクションデバイスに伝送する工程ｅであって、前記パケットが前記第１の各エミュレーションリソースのうちの一つを特定するネットワークアドレスと、コマンドとデータを具備し、更に、該特定された前記第１のエミュレーションリソースの入出力信号のうちの少なくとも一方によって前記特定された前記第１のエミュレーションリソースと通信することで前記第１のトランザクションデバイスが前記コマンドに対して応答するものとからなる方法。
【請求項２】
特定された第１のエミュレーションリソースの出力信号のうちの少なくとも一つのステートを決定して該決定されたステートを示すステートデータを発生し、更に、該発生されたステートデータを含む他のパケットをパケットルーティングネットワークを介して伝送することで前記第１のトランザクションデバイスが前記コマンドに応答することを特徴とする請求項１に記載の方法。
【請求項３】
特定された第１のエミュレーションリソースの入力信号のうちの少なくとも一つを前記各コマンドに含まれたデータによって示されたステートにドライブすることで前記第１のトランザクションデバイスが前記コマンドに応答することを特徴とする請求項１に記載の方法。
【請求項４】
更に、コンピュータをパケットルーティングネットワークに接続する工程ｆを具備し、該コンピュータがパケットルーティングネットワークを介して前記第１のトランザクションデバイスにパケットを伝送すると共に、該パケットルーティングネットワークを介して前記第１のトランザクションデバイスからパケットを受信することを特徴とする請求項１に記載の方法。
【請求項５】
更に、テストベンチを処理してそれぞれの前記第１のエミュレーションリソースに対してエミュレーションリソースプログラミングデータを発生すると共に、前記コンピュータ用のコンピュータプログラムを発生する工程ｇと、
それぞれの前記第１のエミュレーションリソースに前記プログラミングデータを供給する工程ｈと、
前記コンピュータに前記コンピュータプログラムを実行させると共に、前記コンピュータに前記テストベンチの一部をエミュレートさせる工程ｉを具備することを特徴とする請求項４に記載の方法。
【請求項６】
工程ｈにパケットルーティングネットワークを介して前記第１のトランザクションデバイスにプログラミングパケットを伝送することが含まれており、各プログラミングパケットがプログラミングデータと前記第１のエミュレーションリソースのうちの一つを固有に識別するネットワークアドレスを搬送し、そして、前記プログラミングパケットが搬送するプログラミングデータを前記プログラミングパケットが搬送するネットワークアドレスによって識別された前記第１のエミュレーションリソースへのプログラミングデータ入力として提供することによって、前記第１のトランザクションデバイスが該各プログラミングパケットに応答することを特徴とする請求項５に記載の方法。
【請求項７】
前記コンピュータプログラムの実行中に、前記コンピュータがパケットルーティングネットワークを介して前記第１のトランザクションデバイスにパケットを伝送すると共に、パケットルーティングネットワークを介して前記第１のトランザクションデバイスから信号データパケットを受信することを特徴とする請求項５に記載の方法。
【請求項８】
前記コンピュータプログラムの実行中に、前記コンピュータがパケットルーティングネットワークを介して前記第１のトランザクションデバイスに前記第１のエミュレーションリソースのうちの一つを固有に識別するネットワークアドレスと読み出しコマンドを有するパケットを伝送し、
前記識別された前記第１のエミュレーションリソースの少なくとも一つの出力信号のステートを示すデータを有する他のデータパケットを発生して、それをパケットルーティングネットワークを介して前記コンピュータに伝送することによって、前記第１のトランザクションデバイスが前記読み出しコマンドに応答することを特徴とする請求項５に記載の方法。
【請求項９】
更に、前記第１のエミュレーションリソースのうちの少なくとも一つとエミュレートされているＤＵＴと通信するように設計された機器との間に第２の信号経路を設けて、該少なくとも一つの前記第１のエミュレーションリソースが前記第２の信号経路によって搬送された信号によって前記機器との通信を可能にする工程ｆを具備することを特徴とする請求項１に記載の方法。
【請求項１０】
更に、複数の第２のエミュレーションリソースを提供する工程ｆであって、該各第２のエミュレーションリソースが入力信号に応じて出力信号を生成し、各エミュレーションリソースの入出力信号間の論理関係がその第２のエミュレーションリソースへの入力として供給されたプログラミングデータによって制御されるものと、
前記第２の各エミュレーションリソース間に第２の信号経路を設けて、該第２の信号経路を経由して前記第２の各エミュレーションリソースが互いに出力信号を伝送すると共に互いに入力信号を受信する工程ｇと、
第２のトランザクションデバイスをパケットルーティングネットワークと前記第２の各エミュレーションリソースに接続する工程ｈであって、該第２のトランザクションデバイスが該パケットルーティングネットワークを介してパケットを受信すると共に、前記パケットによって搬送されたデータに従って前記第２のエミュレーションリソースの入力信号の一部のステートを設定するものを具備することを特徴とする請求項１に記載の方法。
【請求項１１】
前記第１及び第２のエミュレーションリソースの何れか特定のエミュレーションリソースの何れかの信号のステートを制御するための信号を搬送する各パケットが、その特定のエミュレーションリソースを固有に識別するネットワークアドレスも搬送することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第１のトランザクションデバイスが、更に、前記第１のエミュレーションリソースの出力信号の一部をモニタすると共に、それがモニタする出力信号のステートを示すデータを有するパケットを前記パケットルーティングネットワークを介して伝送し、
前記第２のトランザクションデバイスが、更に、前記第２のエミュレーションリソースの出力信号の一部をモニタすると共に、それがモニタする出力信号のステートを示すデータを有するパケットを前記パケットルーティングネットワークを介して伝送することを特徴とする請求項１１に記載の方法。
【請求項１３】
更に、コンピュータを前記パケットルーティングネットワークに接続する工程ｆを具備し、該コンピュータが該パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスにパケットを伝送すると共に、該パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスからパケットを受信することを特徴とする請求項１２に記載の方法。
【請求項１４】
更に、テストベンチを処理してそれぞれの前記第１及び第２のエミュレーションリソースに対してエミュレーションリソースプログラミングデータを発生すると共に、前記コンピュータ用のコンピュータプログラムを発生する工程ｇと、
それぞれの前記第１及び第２のエミュレーションリソースに前記プログラミングデータを供給する工程ｈと、
前記コンピュータに前記コンピュータプログラムを実行させる工程ｉを具備することを特徴とする請求項１３に記載の方法。
【請求項１５】
工程ｈに前記パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスにパケットを伝送することが含まれており、各パケットがプログラミングデータと前記第１及び第２のエミュレーションリソースのうちの一つを固有に識別するネットワークアドレスを搬送し、そして、前記パケットが搬送するプログラミングデータを前記プログラミングパケットが搬送するネットワークアドレスによって識別された前記第１及び第２のエミュレーションリソースへのプログラミングデータ入力として提供することによって、前記第１及び第２のトランザクションデバイスのうちの一方が前記パケットに応答することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記コンピュータプログラムの実行中に、前記コンピュータが前記パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスにパケットを伝送すると共に、該パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスからパケットを受信することを特徴とする請求項１４に記載の方法。
【請求項１７】
更に、テストベンチを処理してプログラミングデータを発生する工程ｆと、
該プログラミングデータを前記第１及び第２のトランザクションデバイスのそれぞれに供給し前記プログラミングデータが前記第１及び第２のトランザクションデバイスに前記パケットルーティングネットワークによって受信されたパケットによって搬送されたコマンドを実行させる工程ｇを具備することを特徴とする請求項１２に記載の方法。
【請求項１８】
工程ｇに前記パケットルーティングネットワークを介して前記第１及び第２のトランザクションデバイスにプログラミングデータを搬送するパケットを伝送することが含まれていることを特徴とする請求項１７に記載の方法。
【請求項１９】
更に、前記第１のエミュレーションリソースの何れかと前記第２のエミュレーションリソースの何れかの間に第３の信号経路を設けて、該第３の信号経路を経由して搬送された信号によってそれらが互いに通信可能となる工程ｉを具備することを特徴とする請求項１０に記載の方法。
【請求項２０】
前記第１のトランザクションデバイスが前記第２のトランザクションデバイスに少なくとも一つの信号データパケットを送って、第２のトランザクションデバイスが少なくとも一つの前記第２のエミュレーションリソースに対して少なくとも一つの入力信号のステートを設定させるようにすることを特徴とする請求項１０に記載の方法。
【請求項２１】
前記第１のトランザクションデバイスが入力としてクロック信号を前記第１のエミュレーションリソースのうちの少なくとも一つに供給して、該クロック信号がその第１のエミュレーションリソースで実現される論理のクロックのために用いられることを特徴とする請求項１に記載の方法。
【請求項２２】
前記第１のトランザクションデバイスが前記パケットルーティングネットワークを介して第１のバスに伝送されたパケットで搬送されたコマンドに従って前記クロック信号のパルスを発生することを特徴とする請求項２１に記載の方法。
【請求項２３】
前記第１のトランザクションデバイスが外部ソースから受信した信号に従ってクロック信号を発生することを特徴とする請求項２１に記載の方法。
【請求項２４】
前記第１のトランザクションデバイスがクロック信号を発生するための発振機を具備していることを特徴とする請求項２１に記載の方法。
【請求項２５】
前記第１のトランザクションデバイスが前記パケットルーティングネットワークを介して第１のバスに伝送されたパケットで搬送されたコマンドに従って第１のクロック信号のパルスを発生し、
前記第１のトランザクションデバイスが外部ソースからに従って第２のクロック信号を受信し、
前記第１のトランザクションデバイスが第３のクロック信号を発生するための発振機を具備し、
前記第１のトランザクションデバイスが前記第１のエミュレーションリソースのうちの少なくとも一つへのクロック信号入力として前記第１，第２，第３のクロック信号のうちの何れか一つを選択する選択手段を具備することを特徴とする請求項２１に記載の方法。
【請求項２６】
前記第１のトランザクションデバイスがランダムアクセスメモリ（ＲＡＭ）を具備し、
前記第１のトランザクションデバイスが前記パケットルーティングネットワークを介してパケットで搬送されたコマンドに応答して該ＲＡＭに前記コマンドで搬送されたデータを格納し、そして、その後、それが該ＲＡＭに格納するデータに従って前記第１のエミュレーションリソースのうちの少なくとも一つに対して少なくとも一つの入力信号のステートを制御することを特徴とする請求項１に記載の方法。
【請求項２７】
前記第１のトランザクションデバイスが、更に、前記第１のエミュレーションリソースの出力の一部をモニタし、
前記第１のトランザクションデバイスがランダムアクセスメモリ（ＲＡＭ）を具備し、
前記第１のトランザクションデバイスがそれがモニタする前記第１のエミュレーションリソースの出力信号のステートを示すプローブデータを該ＲＡＭに格納し、
前記第１のトランザクションデバイスがプローブデータを前記ＲＡＭから読み出して、それが前記ＲＡＭから読み出したプローブデータを搬送するパケットを前記パケットルーティングネットワーク上に伝送することを特徴とする請求項１に記載の方法。
【請求項２８】
エミュレートされるＤＵＴがコンピュータプロセッサと該コンピュータプロセッサにバスを介して接続されたメモリを具備しており、そのコンピュータプロセッサがデータを前記メモリに書き込むと共に前記バス経由でデータを前記メモリから読み出す方法であって、
更に、前記メモリをエミュレートするために、ランダムアクセスメモリ（ＲＡＭ）を提供する工程ｆと、
前記コンピュータプロセッサをエミュレートするために、前記パケットルーティングネットワークに接続されたコンピュータと前記パケットルーティングネットワークに接続された第２のトランザクションデバイスを提供する工程ｇを具備し、
前記コンピュータが書き込みコマンドと読み出しコマンドを有するパケットを前記パケットルーティングネットワークを介して前記第２のトランザクションデバイスに伝送し、
前記第１のトランザクションデバイスがパケットで搬送されてきた書き込みコマンドに応じて該パケットで搬送されてきたデータを前記ＲＡＭに書き込み、
前記第１のトランザクションデバイスがパケットで搬送されてきた読み出しコマンドに応じて前記ＲＡＭからデータを読み出して該ＲＡＭから読み出されたデータを搬送するパケットを前記パケットルーティングネットワークを介して前記コンピュータに送ることを特徴とする請求項１に記載の方法。
【請求項２９】
複数の構成部材を有する被測定電子デバイス（ＤＵＴ）の動作をエミュレートする装置であって、
電子信号によってデータパケットを搬送するパケットルーティングネットワークと、
それぞれが複数の端子を有する複数の第１のエミュレーションリソースであって、個々のエミュレーションリソースがその各端子に加えられた入力信号に応答してその各端子に出力信号を発生することによって前記電子機器の個別の構成部材をエミュレートするが、前記第１のエミュレーションリソースのそれぞれが固有のネットワークアドレスを有するものと、
前記パケットルーティングネットワークを介してパケットを送受信するために前記パケットルーティングネットワークと接続する第１のトランザクションデバイスであって、前記第１の各エミュレーションリソースの入力端子のうちの第１の部分に接続されてその第１のエミュレーションリソースに入力信号を伝送すると共に、バスシステムを経由して伝送された少なくとも一つのパケットであってそのネットワークアドレスによって前記第１のエミュレーションリソースの一つを特定するものに、信号により前記特定された前記第１のエミュレーションリソースの端子のうちの少なくとも一つと通信することで、応答するものとからなる装置。
【請求項３０】
前記少なくとも一つのパケットが識別された第１のエミュレーションリソースの少なくとも一つの端子を識別し、信号ステートを識別し、更に、前記第１のトランザクションデバイスに命じて識別されたステートの入力信号を識別された端子に供給することを特徴とする請求項２９に記載の装置。
【請求項３１】
更に、少なくとも一つの第１のエミュレーションリソースの少なくとも一つの端子から少なくとも一つの他の第１のエミュレーションリソースの少なくとも一つの端子に信号を運ぶための少なくとも一つの第１の導通路を有することを特徴とする請求項２９に記載の装置。
【請求項３２】
前記第１のエミュレーションリソースの少なくとも一つがプログラミングデータ入力を有するプログラマブル論理デバイス（ＰＬＤ）であり、
ＰＬＤの入出力信号間の論理関係がＰＬＤのプログラミングデータ入力に供給されたプログラミングデータにより前記論理関係を実現するように構成されたＰＬＤの各構成部材によって決定され、
トランザクションデバイスもプログラミングデータを前記ＰＬＤのプログラミングデータ入力に供給するために接続され、
前記パケットルーティングネットワークを介して搬送されたパケットのうちの一つがＰＬＤをそのネットワークアドレスによって識別し、プログラミングデータを含み、更に、トランザクションデバイスに命じてＰＬＤプログラムデータ入力に内蔵するプログラミングデータを供給することを特徴とする請求項２９に記載の装置。
【請求項３３】
前記ＰＬＤがフィールドプログラマブルゲートアレイであることを特徴とする請求項３２に記載の装置。
【請求項３４】
前記第１のトランザクションデバイスが前記第１のエミュレーションリソースの少なくとも一つの各端子に現れる出力信号をモニタし、
バスシステムを介して伝送される前記少なくとも一つのパケットが前記第１のエミュレーションリソースのうちの一つをそのネットワークアドレスによって識別すると共に、前記第１のトランザクションデバイスに命じて前記モニタされた出力信号のステートを示すデータを含むパケットをネットワークバスを介して伝送することを特徴とする請求項２９に記載の装置。
【請求項３５】
更に、前記パケットルーティングネットワークによって運ばれたパケットによって前記第１のトランザクションデバイスと通信するためのコンピュータを設けたことを特徴とする請求項２９に記載の装置。
【請求項３６】
更に、前記第１のエミュレーションリソースのうちの一つの各端子の一部を前記第１のエミュレーションリソースの他のものの各端子に相互接続するための導通路を有し、前記第１のエミュレーションリソースがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であり、それぞれのＦＰＧＡがプログラミングデータ入力を有しており、各ＦＰＧＡの入出力信号間の論理関係がトランザクションデバイスによりＦＰＧＡのプログラミングデータ入力に供給されるプログラミングデータによって構成されるＦＰＧＡ内の電子回路によって決定され、前記トランザクションデバイスが前記パケットルーティングネットワークによって運ばれたパケットから前記プログラミングデータを得ることを特徴とする請求項２９に記載の装置。
【請求項３７】
更に、複数の第２のエミュレーションリソースであって、それぞれの第２のエミュレーションリソースが複数の端子を有し、該各端子に加えられた入力信号に応じてその各端子に出力信号を発生することによってそれぞれがＤＵＴの個々の構成部材をエミュレートし、それぞれが固有のネットワークアドレスを保有しているものと、
前記パケットルーティングネットワークを介して運ばれたパケットを受信するために接続されると共に入力信号を前記第２のエミュレーションリソースに伝送するために前記第２のエミュレーションリソースのそれぞれの各端子の第１の部分に接続された第２のトランザクションデバイスであって、そのネットワークアドレスによって第２のエミュレーションリソースのうちの一つを識別し、該識別された第２のエミュレーションリソースの少なくとも一つの入力信号が駆動されるべきステートを示し、更に、前記第２のトランザクションデバイスが前記識別された第２のエミュレーションリソースの少なくとも一つの入力信号を前記示されたステートに駆動するようにするパケットをバスシステムを介して伝送するものを具備することを特徴とする請求項２９に記載の装置。
【請求項３８】
更に、少なくとも一つの前記第１のエミュレーションリソースの各端子を少なくとも一つの前記第２のエミュレーションリソースの各端子に相互接続するための第２の導通路を有することを特徴とする請求項３７に記載の装置。
【請求項３９】
前記第１のトランザクションデバイスが、更に、少なくとも一つの前記第１のエミュレーションリソースの各端子に現れる出力信号をモニタし、
更に、複数の第２のエミュレーションリソースであって、それぞれの第２のエミュレーションリソースが複数の端子を有し、該各入力端子に加えられた入力信号に応じてその各出力端子に出力信号を発生することによってそれぞれが電子機器の個々の構成部材をエミュレートし、またそれぞれが固有のネットワークアドレスを保有しているものと、
前記パケットルーティングネットワークを介して運ばれたパケットを受信するために接続されると共に入力信号を前記第２のエミュレーションリソースに伝送するために前記第２のエミュレーションリソースのそれぞれの各端子に接続された第２のトランザクションデバイスを具備し、
前記第１のトランザクションデバイスが、少なくとも一つの前記第１のエミュレーションリソースの各端子に現れる少なくとも一つの出力信号のステートをモニタし、前記パケットルーティングネットワークを介してそのネットワークアドレスによって前記第２のエミュレーションリソースのうちの一つを識別すると共にモニタされた前記第１のエミュレーションリソースの各出力信号に対応した、識別された前記第２のエミュレーションリソースの個々の入力信号を識別するパケットを伝送し、前記第２のトランザクションデバイスが識別された前記第２のエミュレーションリソースのそれぞれを対応する前記第１のエミュレーションリソースの出力信号のステートに応じたステートに駆動させることを特徴とする請求項２９に記載の装置。
【請求項４０】
更に、電子機器を内蔵する回路ボードと、
該回路ボード上に載置された集積回路を保持するソケットであって、その回路ボードが前記ソケットと前記電子機器の間に信号通路を提供するものと、
前記ソケットと少なくとも一つの前記第１のエミュレーションリソースの各端子の間に信号通路を提供する手段を具備することを特徴とする請求項２９に記載の装置。
【請求項４１】
前記第１のエミュレーションリソースが複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を有し、それぞれのＦＰＧＡが入力信号を受信して出力信号を伝送する端子を有し、前記出力信号と入力信号の間の論理関係がＦＰＧＡのプログラミング入力に供給されるプログラミングデータによって制御され、
第１のトランザクションデバイス回路によって受信されたパケットのうちのひとつにはクロック信号ルーティングデータが含まれており、  
前記第１のトランザクションデバイス回路が該トランザクションデバイス経由で受信したパケットに応答して少なくとも一つの第１のクロック信号のエッジを生成し、更に、
前記第１のトランザクションデバイスが、
少なくとも一つの第２のクロック信号を発生するクロック信号発生器と、
外部発生された少なくとも一つの第３のクロック信号を受信する少なくとも一つの端子と、
ルーティング選定制御データによって選定された第１，第２，第３の制御信号のうちの一つをＦＰＧＡの各端子に伝送するクロック信号配信システムとを具備することを特徴とする請求項２９に記載の装置。
【請求項４２】
前記第１のエミュレーションリソースが、
複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であって、それぞれのＦＰＧＡが入力信号を受信して出力信号を伝送する端子を有し、前記出力信号と入力信号の間の論理関係がＦＰＧＡのプログラミング入力に供給されるプログラミングデータによって制御されるものと、
それぞれのＦＰＧＡの各端子を他の全てのＦＰＧＡに連結する第１の信号通路と、
複数のランダムアクセスメモリ（ＲＡＭ）であって、それぞれが個々のＦＰＧＡに対応しておりその対応するＦＰＧＡの各端子に接続されていて、信号とＲＡＭに対応するＦＰＧＡの入力信号により対応するＦＰＧＡのそれぞれがデータを該ＲＡＭに書き込むと共に該ＲＡＭからデータを読み出すことを可能にするものを具備することを特徴とする請求項２９に記載の装置。
【請求項４３】
前記第１のトランザクションデバイスが、
ランダムアクセスメモリ（ＲＡＭ）と、
前記第１のエミュレーションリソースの出力信号のステートを示すプローブデータを格納すると共に、前記ＲＡＭから該プローブデータを読み出し、そのプローブデータを前記パケットルーティングネットワークを伝送されるパケットにより伝送する手段を具備することを特徴とする請求項２９に記載の装置。
【請求項４４】
前記第１のエミュレーションリソースが複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を有し、それぞれのＦＰＧＡが入力信号を受信して出力信号を伝送する端子を有し、前記出力信号と入力信号の間の論理関係がＦＰＧＡのプログラミング入力に供給されるプログラミングデータによって制御され、更に、それぞれのＦＰＧＡがその現状のステートを示す出力ステートデータを発生しその現状のステートを入力ステートデータによって示されたステートに設定する手段を具備しており、更に、
前記第１のトランザクションデバイスが、
ランダムアクセスメモリ（ＲＡＭ）と、
各ＦＰＧＡからの出力ステートデータを受信してそれを前記ＲＡＭに格納して前記ＲＡＭに格納されたステートデータを入力ステートデータとして前記ＦＰＧＡに読み出すためのメモリ制御器を具備することを特徴とする請求項２９に記載の装置。
【請求項４５】
被測定電子回路デバイス（ＤＵＴ）をエミュレートする装置であって、
パケットを搬送するパケットルーティングネットワークと、
少なくとも一つのリソースボードとからなり、
前記リソースボードが、
印刷回路ボード（ＰＣＢ）と、
該ＰＣＢ上に載置された複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であって、入力信号を受信して出力信号を発生することによってそれぞれがＤＵＴの個別の部分をエミュレートし、前記ＰＣＢが各ＦＰＧＡ間に信号経路を提供するものと、
前記ＰＣＢ上に載置されたトランザクションデバイスであって、ＦＰＧＡの出力信号のステートを示す送信パケットを前記パケットルーティングネットワークを介して伝送すると共に、前記パケットルーティングネットワークを介して到達した受信パケットを受信し、更に、ＦＰＧＡの入力信号を駆動して受信パケットに含まれたデータによって指定されたステートにするものとからなる装置。
【請求項４６】
各ＦＰＧＡが固有のネットワークアドレスによって識別され、前記パケットルーティングネットワークを介して運ばれたパケットが個々のＦＰＧＡを識別するネットワークアドレスを含んでいることを特徴とする請求項４５に記載の装置。
【請求項４７】
各リソースボードのトランザクションデバイスが、前記パケットルーティングネットワークを介して到達したパケットで前記トランザクションデバイスに運ばれたプログラミングデータをそのリソースボードのＦＰＧＡに供給することによって前記ＦＰＧＡをプログラムすることを特徴とする請求項４５に記載の装置。
【請求項４８】
少なくとも一つの前記リソースボードが更にメモリを有し、
そのリソースボードのトランザクションデバイスがそのリソースボード上の各ＦＰＧＡの出力信号の各ステートを示すデータを前記メモリに書き込み、更に、そのデータを該メモリから読み出してそれをパケットに入れて前記パケットルーティングネットワークを介して伝送することを特徴とする請求項４５に記載の装置。
【請求項４９】
少なくとも一つの前記リソースボードが更にメモリを有し、
そのリソースボードのトランザクションデバイスが前記パケットルーティングネットワークを介して到達したパケット内に含まれているデータを前記メモリに書き込み、更に、そのデータを該メモリから読み出してそのリソースボード上の各ＦＰＧＡの入力信号を前記メモリから読み出されたデータによって制御される連続ステートに駆動することを特徴とする請求項４５に記載の装置。
【請求項５０】
少なくとも一つの前記リソースボードが更にメモリを有し、
そのリソースボードのトランザクションデバイスがそのリソースボードのＦＰＧＡからステートデータを繰り返し獲得して、そのステートデータを前記メモリに格納し、
前記ステートデータがＦＰＧＡから獲得された時点での現状の動作ステートを前記ステートデータが完全に定義しており、
そのリソースボードのトランザクションデバイスが引き続き前記パケットルーティングネットワークを介して到達したパケットに応答してメモリから該ステートデータを読み出してそれを前記各ＦＰＧＡに送り、
各ＦＰＧＡが前記トランザクションデバイスから受信したステートデータに応答してそれら自体を受信したステートデータによって定義されているステートに戻すことを特徴とする請求項４５に記載の装置。
【請求項５１】
更に、前記パケットルーティングネットワークを介して各リソースボードのトランザクションデバイスとパケットの送受信を行うコンピュータを有することを特徴とする請求項４５に記載の装置。
【請求項５２】
前記パケットルーティングネットワークを介して入力データを含むパケットを受信してその入力データを処理して出力データを生成し、更に、その出力データをパケットに入れて前記パケットルーティングネットワーク上で外部に伝送することで、コンピュータがＤＵＴの一部をエミュレートすることを特徴とする請求項５１に記載の装置。
【請求項５３】
各リソースボードのトランザクションデバイスが、前記パケットルーティングネットワークを介してコンピュータによってそのリソースボードに伝送されたパケットで前記トランザクションデバイスに運ばれたプログラミングデータをそのリソースボードのＦＰＧＡに供給することによって前記ＦＰＧＡをプログラムすることを特徴とする請求項５１に記載の装置。
【請求項５４】
更に、メモリと、
前記パケットルーティングネットワークを介してパケットで運ばれてきたデータを前記メモリに書き込むと共に、データを前記メモリから読み出してその読み出されたデートをパケットに入れて前記パケットルーティングネットワークを介して伝送するために前記パケットルーティングネットワークに接続する手段を具備することを特徴とする請求項４５に記載の装置。
【請求項５５】
各リソースボードが、更に、ＰＣＢ上に載置された複数のメモリであってそれぞれが各ＦＰＧＡの個々に対応していてその対応するＦＰＧＡによってリード・ライトアクセスされるものを具備することを特徴とする請求項４５に記載の装置。
【請求項５６】
少なくとも一つのリソースボードのトランザクションデバイスが、前記パケットルーティングネットワークを介して伝送されたパケットに応じてクロック信号パルスを発生し、入力としてそのクロック信号を少なくとも一つのＦＰＧＡへ供給してＦＰＧＡ内の論理デバイスのクロックを行うことを特徴とする請求項４５に記載の装置。
【請求項５７】
少なくとも一つの前記リソースボードのトランザクションデバイスが前記パケットルーティングネットワークを介して伝送されたパケットに応じて第１のクロック信号パルスを発生し、
少なくとも一つの前記リソースボードが、更に、第２のクロック信号源を有し、
前記パケットルーティングネットワークを介して到達したパケットに含まれたデータに応答して、少なくとも一つの前記リソースボードのトランザクションデバイスが第１と第２のクロック信号の一方を選択し、更に、それを入力として少なくとも一つのＦＰＧＡに供給してそのＦＰＧＡ内の論理デバイスのクロックを行うことを特徴とする請求項４５に記載の装置。
【請求項５８】
少なくとも一つの前記リソースボードが更にメモリを有し、
そのリソースボードのトランザクションデバイスが、そのリソースボード上の各ＦＰＧＡの出力信号の各ステートを示すデータを前記メモリに書き込み、前記パケットルーティングネットワークを介して到達したパケットに含まれたデータそのデータを該メモリに書き込み、前記パケットルーティングネットワークによって運ばれてきたパケットに含まれたデータであって前記メモリに内のデータを送信し、そのリソースボードの各ＦＰＧＡの入力信号を前記第１のメモリに格納されたデータによって制御される連続ステートに駆動することを特徴とする請求項４５に記載の装置。
【請求項５９】
各リソースボードが更にメモリを有し、
その各リソースボードのトランザクションデバイスがそのリソースボードの各ＦＰＧＡからステートデータブロックを繰り返し獲得するが、該ステートデータブロックがその獲得された時点でのＦＰＧＡの動作ステートを完全に定義しており、
前記トランザクションデバイスがそれぞれ獲得したステートデータブロックをメモリに格納し、そして、その後、そのメモリからステートデータブロックのうちの一つを読み出してそれらを前記各ＦＰＧＡに送り、
各ＦＰＧＡが前記トランザクションデバイスによって送られたステートデータブロックに応答してそれら自体を送られてきたステートデータブロックによって定義されているステートに戻すことを特徴とする請求項４５に記載の装置。
【請求項６０】
更に、前記パケットルーティングネットワークを介して前記各リソースボードとパケットの送受信を行うコンピュータを有し、
前記パケットルーティングネットワークを介して入力データを含むパケットを受信してその入力データを処理して出力データを生成し、更に、その出力データをパケットに入れて前記パケットルーティングネットワーク上で外部に伝送することで、コンピュータが電子機器の一部をエミュレートし、そして、
各リソースボードのトランザクションデバイスが、前記パケットルーティングネットワークを介してコンピュータによってそのリソースボードに伝送されたパケットで前記トランザクションデバイスに運ばれたプログラミングデータをそのリソースボードのＦＰＧＡに供給することによって前記ＦＰＧＡをプログラムすることを特徴とする請求項５８に記載の装置。
【請求項６１】
少なくとも一つのリソースボードが、更に、複数のメモリであってそれぞれがそのリソースボードの各ＦＰＧＡの個々に対応していてその対応するＦＰＧＡによってリード・ライトアクセスされるものを具備することを特徴とする請求項６０に記載の装置。
【請求項６２】
少なくとも一つの前記リソースボードのトランザクションデバイスが前記パケットルーティングネットワークを介して伝送されたパケットに応じて第１のクロック信号パルスを発生し、
少なくとも一つの前記リソースボードが、更に、第２のクロック信号源を有し、更に、
前記パケットルーティングネットワークを介して到達したパケットに含まれたデータに応答して、少なくとも一つの前記リソースボードのトランザクションデバイスが第１と第２のクロック信号の一方を選択し、更に、それを入力として少なくとも一つのＦＰＧＡに供給してそのＦＰＧＡ内の論理デバイスのクロックを行うことを特徴とする請求項６０に記載の装置。
【請求項６３】
前記パケットルーティングネットワークを介して運ばれたパケットにより少なくとも一つの前記リソースボードのトランザクションデバイスにコマンドを伝送することによって前記コンピュータがＤＵＴに入力として試験信号を供給して試験機器をエミュレートし、そして、
そのリソースボードの少なくとも一つのＦＰＧＡへの少なくとも一つの入力信号を前記コマンドと共にパケットで運ばれてきたデータによって指示される特定のステートに駆動することによって、少なくとも一つの前記リソースボードのトランザクションデバイスがパケットで運ばれてきた各コマンドを実行することを特徴とする請求項５１に記載の装置。
【請求項６４】
前記パケットルーティングネットワークを介して運ばれたパケットにより各リソースボードのトランザクションデバイスにコマンドを伝送することによって前記コンピュータがＤＵＴの出力信号をモニタする試験機器をエミュレートし、そして、
そのリソースボードの少なくとも一つのＦＰＧＡの少なくとも一つの出力信号のステートを示すデータを記憶することによって、少なくとも一つのトランザクションデバイスが各コマンドを実行することを特徴とする請求項５１に記載の装置。
【請求項６５】
テストベンチをエミュレートする装置であって、
パケットを搬送するパケットルーティングネットワークと、
それぞれが入力部と出力部を有すると共に、それぞれがその入力部での入力データを受信処理してその出力部で出力データを生成することによってテストベンチの個別の第１の部分をエミュレートする複数のエミュレーションリソースであって、前記エミュレーションリソースの入力と出力がメモリアドレス空間内の個別のアドレスにマッピングされるものと、
前記パケットルーティングネットワークに接続されたトランザクションデバイスであって、前記エミュレーションリソースにも接続されて入力データを前記エミュレーションリソースの入力部に供給し、更に、前記エミュレーションリソースの出力部に生成された出力データをモニタするものと、
前記パケットルーティングネットワークに接続された第１のコンピュータであって、前記メモリ空間のアドレスから入力データを読み出すための読み出し命令を実行し、前記メモリ空間のアドレスから読み出された前記入力データを処理して出力データを生成し、更に、生成された出力データをメモリ空間のアドレスに書き込むための書き込み命令を実行することによって、テストベンチの第２の部分をエミュレートする第１のエミュレーションソフトウェアを走らせるものとからなり、
前記第１のエミュレーションソフトウェアがエミュレーションリソース入力がマッピングされる第１のメモリ空間アドレスに第１のデータを書き込むための書き込み命令を実行するときに、前記第１のコンピュータがパケットルーティングネットワークを介してトランザクションデバイスに第１のデータを搬送する第１のパケットを送ると共に、前記トランザクションデバイスは前記第１のパケットに応答して、前記第１のデータを入力データとして前記第１のメモリ空間アドレスにマッピングされたエミュレーションリソース入力に供給することを特徴とする装置。
【請求項６６】
前記第１のエミュレーションソフトウェアがエミュレーションリソース出力がマッピングされた第２のメモリ空間アドレスから第２のデータを読み出すための読み出し命令を実行するとき、前記パケットルーティングネットワークを介して前記第１のコンピュータが第２のパケットを前記トランザクションデバイスに送り、該トランザクションデバイスが第２のパケットに応答して前記第１のコンピュータに前記第２のメモリ空間アドレスにマッピングされたエミュレーションリソース出力で生成された出力データを搬送する他のパケットを伝送することを特徴とする請求項６５に記載の装置。
【請求項６７】
エミュレーションリソースが、前記トランザクションデバイスによってライトアクセスされる格納位置であって、該メモリ空間内の個々のアドレスに対してマッピングされるものを有し、
前記エミュレーションソフトウェアがエミュレーションリソース格納位置がマッピングされた第３のメモリ空間アドレスに第３のデータを書き込むための書き込み命令を実行するとき、前記パケットルーティングネットワークを介して前記第１のコンピュータが前記第３のデータを搬送する第３のパケットを前記トランザクションデバイスに送り、該トランザクションデバイスがその第３のパケットに応答して前記第３のメモリ空間アドレスにマッピングされたエミュレーションリソース格納位置に入力データとして前記第３のデータを供給することを特徴とする請求項６５に記載の装置。
【請求項６８】
エミュレーションリソースが、前記トランザクションデバイスによってリードアクセスされる格納位置であって、該メモリ空間内の個々のアドレスに対してマッピングされるものを有し、
前記エミュレーションソフトウェアがエミュレーションリソース格納位置がマッピングされた第４のメモリ空間アドレスから第４のデータを読み出すための読み出し命令を実行するとき、前記パケットルーティングネットワークを介して前記第１のコンピュータが第４のパケットを前記トランザクションデバイスに送り、該トランザクションデバイスがその第４のパケットに応答して前記第４のメモリ空間アドレスにマッピングされたエミュレーションリソース格納位置に格納されたデータを搬送する他のパケットを前記第１のコンピュータに伝送することを特徴とする請求項６５に記載の装置。
【請求項６９】
前記トランザクションデバイスが、
メモリと、
前記メモリ空間の各アドレスからデータを読み出して、そのデータをメモリに格納するか、又は、前記メモリからデータを読み出してそれをメモリ空間のアドレスに書き込むことによって、テストベンチの第３の部分をエミュレートするエミュレーション手段を具備することを特徴とする請求項６５に記載の装置。
【請求項７０】
前記エミュレーション手段が前記メモリに格納された命令を実行するコンピュータプロセッサを有することを特徴とする請求項６９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器の動作をエミュレーションするためのプログラミング論理機器と他のリソースを用いるエミュレーションシステムに関連するが、特には、パケットルーティングネットワークから送られるパケットを介してエミュレーションリソース同士が互いに通信する階層エミュレーションシステムに関連する。
【背景技術】
【０００２】
標準的なデジタル集積回路（ＩＣ）は、出力信号のステート変更とクロック信号のエッジの同期を取るためにＩＣ内の各論理ブロックが出力レジスタを具備するＲＴＬ（Register Transfer Logic）を用いている。一般的に、設計者は、先ず、各論理ブロックを特徴付けるためにブール数式を用いてＲＴＬレベルハードウェア記述言語（ＨＤＬ）ネットリストを生成し、そして、同期ツールを用いて、ハイレベルネットリストを相互連結されたセルの組として論理ブロックを記述するゲートレベルＨＤＬネットリストに変換する。ここで各セルは、トランジスタや論理ゲートのようなＩＣ構成部材である。ゲートレベルネットリストはＩＣに内蔵すべき各セル例をリスト参照するが、それは、ＩＣに内蔵することのできる各種のセルのエントリを具備するデータベースであるセルライブラリ内の該当するセルタイプのエントリを参照することによってなされる。各セルタイプのセルライブラリエントリは、回路シミュレーション検証ツールが用いることのできるセル動作のモデルを含んでいる。ゲートレベルネットリストの作成後、設計者は位置決め及び経路（Placement and Routing、以下Ｐ＆Ｒと言う）ツールを用いて、そのゲートレベルネットリストをＩＣレイアウトファイルに変換してＩＣを構成する各セルの半導体ダイ内の配置とレイアウトを示すと共に各ネットが各セル端子間でどのように経路設定されるべきかを記述する。レイアウトファイルはＩＣの製造をガイドする。
【０００３】
ＩＣ設計者は、通常、設計過程の各段階においてコンピュータ支援シミュレーション検証ツールを用いて、ＩＣが予想されたように動作することを検証する。そうするために、設計者は、シミュレートされるべき被測定デバイス（ＤＵＴ）ＩＣを記述すると共にＤＵＴの入力信号がどのように時間と共にそのステートを変化すべきかを示したネットリストを組み入れた、コンピュータベースの回路シミュレータ用のテストベンチを開発することがある。テストベンチは、また、シミュレーション中にモニターされるべきＤＵＴの各種信号のリストを有する。その信号には、テスト信号と該テスト信号に応じてＤＵＴが発生する信号が含まれる。シミュレータは、ＤＵＴのテストベンチ記述とセルライブラリから得られたＤＵＴ動作モデルに基づいてＤＵＴの動作モデルを作成し、更に、そのＤＵＴモデルをテストして、テストベンチが記述している入力信号パターンにモニターされた信号がどのように応答しているかを判定する。そのテスト中、シミュレータはモニターされた信号の時間と共に変化する挙動を示す波形データを含む「ダンプファイル」を発生する。そして、設計者は各種のデバッグツールを用いてダンプファイルを検査し、ＤＵＴが予想されたように動作したか否かを判別することができる。
【０００４】
ＲＴＬレベルネットリスト又はゲートレベルネットリストに基づいてシミュレータは正確にＩＣ動作のモデルとなることができるけれども、ＩＣ動作をシミュレートするためには多くの処理時間を要することがある。シミュレーション時間を短縮するために、設計者はシミュレータをプログラムしてＩＣ設計の新規部分又は修正された部分だけをシミュレートすることもできるが、このやり方は、設計の新規な部分と旧来の部分が一緒に適切に働くことを保証するものではない。
【０００５】
ネットリストが記述するＤＵＴ論理を検証するために必要な時間を短縮する一つの方法は、プログラマブルな論理デバイスを用いてＤＵＴ論理をエミュレートすることである。たとえば、下記の特許文献１には、ＤＵＴ論理をエミュレートするようにプログラムされるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を用いた論理エミュレーションシステムが記載されている。回路をエミュレートするためにＦＰＧＡがソフトウェアよりもむしろ論理ゲートを採用しているので、ＦＰＧＡを用いたエミュレーションはシミュレーションよりもはるかに高速にすることができる。
【０００６】
図１７は、それぞれが配列されたＦＰＧＡ１４を保持する一組の回路ボード１２を内蔵する、先行技術である代表的なエミュレーションシステム１０を図示している。ＦＰＧＡ１４のそれぞれは多数の相互接続された論理ゲートとフリップフロップとレジスタの論理をエミュレートするようにプログラムされうる。各ＦＰＧＡ１４は多くのＩ／Ｏ端子を有し、これらのＩ／Ｏ端子のうちの一部は同じ回路ボード１２の他のＦＰＧＡ１４のＩ／Ｏ端子に連結され、その結果、各ＦＰＧＡが互いに連絡しあえる。回路ボード１２はマザーボード１５のスロット内に置かれており、該マザーボード１５は異なる回路ボード１２に載置されたＦＰＧＡ１４同士のＩ／Ｏ端子を相互連結してそれらの相互連絡を可能にするための背面を有する。ある種のシステムにおいて、ＦＰＧＡとＦＰＧＡボードの間の信号経路はクロスポイントスイッチのようなプログラマブルルーティングデバイスを介して連結され、ＦＰＧＡ間のよりフレキシブルな信号ルートを提供する。従来のワークステーション１６は、ＤＵＴの利用者のネットリスト記述を処理して、ＦＰＧＡ１４をプログラミングするための一組の命令を生成しＤＵＴ論理をエミュレートすると共に、ワークステーション１６のＰＣＩバスのスロット内に取り付けられた一又はそれ以上の入出力（Ｉ／Ｏ）インタフェースカード１７を介して、それらの命令をＦＰＧＡ１４のプログラミング入力端子に伝送する。各Ｉ／Ｏインタフェースカード１７は、マザーボード１５が有する信号通路を介して、マザーボード上に載置された各リソースからの信号の送受信を行うことを可能にする。
【０００７】
ＦＰＧＡ１４がエミュレートできる論理に加えて、ＩＣは、マザーボード１５のスロット内に取り付けることが可能な「リソースボード」１８に載置されたプロセッサ又はメモリによってエミュレートされる組込型コンピュータプロセッサ及びメモリのような多くの規格化された構成部品を内蔵することができる。マザーボード１５の背面の配線は、リソースボード１８に載置されたデバイスの各端子をＦＰＧＡボード１２に載置された各ＦＰＧＡ１４のＩ／Ｏ端子に連結する。
【０００８】
設計者は、通常、ＩＣが外部システムの回路ボード上に取り付けられてそのシステム内の他のデバイスとの通信を可能にすることを意図する。エミュレータ１０がインサーキットエミュレーション（ＩＣＥ）システムとして作動すべき場合、このエミュレータ１０は各ＦＰＧＡ１４のＩ／Ｏ端子とエミュレートされるＩＣが最終的に置かれるようなタイプの外部システム２４のソケット間に信号通路を提供する外部システム用インタフェース回路２２を内蔵する。ケーブル２７はインタフェース２２を外部システム２４に相互接続すると共に、一般的に、ＩＣソケットに装着するコネクタを具備する。
【０００９】
エミュレーションシステム１０は、また、マザーボード１５に取り付けられた各回路ボードに載置されマザーボード上の信号通路を介して各ＦＰＧＡ１４のＩ／Ｏ端子に連結されるパターン発生器及びデータ獲得回路２６を内蔵することもできる。これらの回路は、入力信号をＦＰＧＡに供給し、エミュレーション処理中に選択されたＦＰＧＡ出力信号をモニタしてＤＵＴ出力信号の挙動を表す「プローブデータ」を獲得する。エミュレーション工程に続いて、利用者はデバッキングソフトウェアを用いてプローブデータを分析してＤＵＴが予想したように動作したのか否かを判別する。
【００１０】
図１８は、別の先行技術エミュレータアーキテクチャ２０を図示するが、そこでは、ワークステーション３３のメモリバスにアクセスするスロットに設けられたりソースカード２８がＤＵＴの一部をエミュレートする一方、ワークステーション３３がＤＵＴの他の部分をエミュレートする。各カード２８は相互接続されたＦＰＧＡ１４の配列を具備すると共に、各ＦＰＧＡ１４のＩ／Ｏ端子に連結されるメモリのような他のリソース３０を有することも可能である。
【００１１】
各カード２８内のＩ／Ｏインタフェース回路３２は、各ＦＰＧＡ１４の多くのＩ／Ｏ端子に接続されるＩ／Ｏ端子を具備する。ワークステーション３３は、そのＰＣＩバスを介して各命令を各カード２８のＩ／Ｏインタフェース回路３２に送り、どのようにＦＰＧＡを構成して回路論理をエミュレートすることをそれに知らせる。
【００１２】
上記のように、テストベンチは回路シミュレータ用のプログラムであり、被測定ＩＣデバイス（ＤＵＴ）を記述すると共にＤＵＴへのテスト信号入力も記述し、更に、どのＤＵＴ入出力信号がモニタされるべきであるかを示すものである。図１９は、概念的なブロック図であり、ジェネレータ３４とトランザクター３５とＤＵＴ３６とモニタ３７を有するエミュレーションシステムがテストベンチの各機能をどのようにして実現するのかを図示している。プログラムされ相互接続されてネットリストに記述されたＩＣをエミュレートするＦＰＧＡが、主としてエミュレートされたＤＵＴ３６を構成する。ジェネレータ３４は、ＤＵＴ３６への入力として供給されるテスト信号を記述するために、ＩＣ設計者が記述する比較的高級レベルのソフトウェアコードで構築される。たとえば、ジェネレータコードの一部は、以下のように表される。即ち、
ｗｒｉｔｅ  ｌｏｃａｔｉｏｎ１  ｄａｔａ１
である。
【００１３】
このワードｗｒｉｔｅは変数ｌｏｃａｔｉｏｎ１で特定されるＤＵＴ入力端子に変数ｄａｔａ１の値を書き込むべきであることを示すコマンドである。ＩＣ設計者は、大抵この一行のコードを記載する。「トランザクター」３５はジェネレータの高級レベルコマンドを実現するのに必要な機器である。たとえば、このトランザクター３５は入力信号を設定すること若しくは変数ｌｏｃａｔｉｏｎ１によって特定されたＤＵＴ入力での信号を変数ｄａｔａ１の値に設定することによってｗｒｉｔｅコマンドに応答する。「モニタ」３７はエミュレーション中においてＤＵＴの入出力信号をモニタするために必要な機器である。
【００１４】
エミュレータは主にＦＰＧＡと他のハードウェアを用いてＤＵＴ３６をエミュレートするが、一方、ジェネレータ３４とトランザクター３５とモニタ３７の各機能を取り扱う２つの方法のうちの何れかを用いることができる。図１７のエミュレーションシステム１０において、マザーボード１５上に載置されるか若しくは載置されていない専用のパターン発生器及びデータ獲得回路２６は、これらのテスト機能の全てを実行することができ、更に、入力としてテスト信号パターンをＤＵＴ３６に供給してエミュレーション処理中に適正なタイミングでそれらをサンプリングしてＤＵＴ出力信号のステートを表すデータを格納することによってＤＵＴ出力信号をモニタするためにはこれらのデバイスをプログラムする必要がある。この方法の一つの困難な点は、専用のテスト機器２６が必要であることに加えて、ジェネレータ３４とモニタ３７に関するテストベンチの箇所をそのテスト機器のためのプログラム命令に変換する必要があることである。
【００１５】
図１８のエミュレーションシステム２０においては、ワークステーション３３とＩ／Ｏインタフェース回路３２はジェネレータ３４とトランザクター３５とモニタ３７の各機能の全てを実行する。ワークステーションで作動するソフトウェアはもっぱらジェネレータ３４の実現に寄与する。ワークステーション３３とＩ／Ｏインタフェース回路３２で作動するソフトウェアは、共同でトランザクター３５とモニタ３７の実現に寄与する。この方法は専用のテスト機器をプログラムする必要はないが、しかし、十分に高い信号周波数ではワークステーション３３が大抵ＤＵＴ３６とＩ／Ｏインタフェース回路３２を介して通信することができないので、通常はエミュレーション中にＤＵＴ３６が作動できる頻度を少なくすることが必要となる。
【００１６】
エミュレーションシステム１０と２０の双方にとっての更に別の欠点は、それらが高度の適応性を有していないことである。何故ならば、マザーボード１５のスロット数とワークステーション１６のバススロット数がそれらが提供することのできるＦＰＧＡと他のリソースの数を制限してしまうからである。
【００１７】
【特許文献１】米国特許第６３７７９１１号
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明の課題は、専用のテスト機器を必要とせず、テストベンチの一部をそのテスト機器のためのプログラム命令に変換する必要がなく、しかもエミュレーション中にＤＵＴが作動できる頻度を少なくすることもないネットワークベース階層エミュレーションシステムなどを提供することである。
【課題を解決するための手段】
【００１９】
上記の課題を解決するため、本発明は、請求項１に記載したような「被測定電子デバイス（ＤＵＴ）と複数の試験信号の経時的に変化する挙動を記述すると共にＤＵＴ内の複数のプローブポイントを特定して、前記試験信号がＤＵＴに入力として加えられるときにその特定されたプローブポイントにおいて現れる応答信号がどのような挙動を取るのかを判定するハードウェア記述言語（ＨＤＬ）のテストベンチを処理する方法であって、その方法は、前記ＤＵＴの各部分をエミュレートするための複数の第１のエミュレーションリソースを提供する工程ａであり、該第１のエミュレーションリソースへの入力として供給されるプログラムデータによりそれぞれの第１のエミュレーションリソースの入力信号と出力信号の論理関係を制御しながら、それぞれの第１のエミュレーションリソースが入力信号に応じて出力信号を生成するものと、前記第１の各エミュレーションリソース間に第１の信号経路を提供して、前記第１の各エミュレーションリソースがその出力信号を互いに送信すると共に互いに入力信号を受信する工程ｂと、パケットを搬送するためのパケットルーティングネットワークを提供する工程ｃと、第１のトランザクションデバイスを前記パケットルーティングネットワークと前記第１の各エミュレーションリソースに接続する工程ｄであって、前記第１の各エミュレーションリソースが固有のネットワークアドレスを割り当てられるものと、パケットを前記パケットルーティングネットワークを介して前記第１のトランザクションデバイスに伝送する工程ｅであって、前記パケットが前記第１の各エミュレーションリソースのうちの一つを特定するネットワークアドレスと、コマンドとデータを具備し、更に、該特定された前記第１のエミュレーションリソースの入出力信号のうちの少なくとも一方によって前記特定された前記第１のエミュレーションリソースと通信することで前記第１のトランザクションデバイスが前記コマンドに対して応答するものとからなる方法」を提供するものである。
【００２０】
また、第２の解決手段は、請求項２９に記載したような、「複数の構成部材を有する被測定電子デバイス（ＤＵＴ）の動作をエミュレートする装置であって、電子信号によってデータパケットを搬送するパケットルーティングネットワークと、それぞれが複数の端子を有する複数の第１のエミュレーションリソースであって、個々のエミュレーションリソースがその各端子に加えられた入力信号に応答してその各端子に出力信号を発生することによって前記電子機器の個別の構成部材をエミュレートするが、前記第１のエミュレーションリソースのそれぞれが固有のネットワークアドレスを有するものと、前記パケットルーティングネットワークを介してパケットを送受信するために前記パケットルーティングネットワークと接続する第１のトランザクションデバイスであって、前記第１の各エミュレーションリソースの入力端子のうちの第１の部分に接続されてその第１のエミュレーションリソースに入力信号を伝送すると共に、バスシステムを経由して伝送された少なくとも一つのパケットであってそのネットワークアドレスによって前記第１のエミュレーションリソースの一つを特定するものに、信号により前記特定された前記第１のエミュレーションリソースの端子のうちの少なくとも一つと通信することで、応答するものとからなる装置」であるを特徴とするものである。
【００２１】
更に、第３の解決手段は、請求項４５に記載したような、「被測定電子回路デバイス（ＤＵＴ）をエミュレートする装置であって、パケットを搬送するパケットルーティングネットワークと、少なくとも一つのリソースボードとからなり、前記リソースボードが、印刷回路ボード（ＰＣＢ）と、該ＰＣＢ上に載置された複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であって、入力信号を受信して出力信号を発生することによってそれぞれがＤＵＴの個別の部分をエミュレートし、前記ＰＣＢが各ＦＰＧＡ間に信号経路を提供するものと、前記ＰＣＢ上に載置されたトランザクションデバイスであって、ＦＰＧＡの出力信号のステートを示す送信パケットを前記パケットルーティングネットワークを介して伝送すると共に、前記パケットルーティングネットワークを介して到達した受信パケットを受信し、更に、ＦＰＧＡの入力信号を駆動して受信パケットに含まれたデータによって指定されたステートにするものとからなる装置」であるを特徴とするものである。
【００２２】
次いで、第４の解決手段は、請求項６５に記載したような、「テストベンチをエミュレートする装置であって、パケットを搬送するパケットルーティングネットワークと、それぞれが入力部と出力部を有すると共に、それぞれがその入力部での入力データを受信処理してその出力部で出力データを生成することによってテストベンチの個別の第１の部分をエミュレートする複数のエミュレーションリソースであって、前記エミュレーションリソースの入力と出力がメモリアドレス空間内の個別のアドレスにマッピングされるものと、前記パケットルーティングネットワークに接続されたトランザクションデバイスであって、前記エミュレーションリソースにも接続されて入力データを前記エミュレーションリソースの入力部に供給し、更に、前記エミュレーションリソースの出力部に生成された出力データをモニタするものと、前記パケットルーティングネットワークに接続された第１のコンピュータであって、前記メモリ空間のアドレスから入力データを読み出すための読み出し命令を実行し、前記メモリ空間のアドレスから読み出された前記入力データを処理して出力データを生成し、更に、生成された出力データをメモリ空間のアドレスに書き込むための書き込み命令を実行することによって、テストベンチの第２の部分をエミュレートする第１のエミュレーションソフトウェアを走らせるものとからなり、前記第１のエミュレーションソフトウェアがエミュレーションリソース入力がマッピングされる第１のメモリ空間アドレスに第１のデータを書き込むための書き込み命令を実行するときに、前記第１のコンピュータがパケットルーティングネットワークを介してトランザクションデバイスに第１のデータを搬送する第１のパケットを送ると共に、前記トランザクションデバイスは前記第１のパケットに応答して、前記第１のデータを入力データとして前記第１のメモリ空間アドレスにマッピングされたエミュレーションリソース入力に供給する装置」であるを特徴とするものである。
【００２３】
回路設計者は、主に、試験すべき電子回路デバイスと被測定デバイス（ＤＵＴ）への入力として供給される試験信号の挙動を記述すると共にＤＵＴによって生成された出力信号の挙動が判定されるＤＵＴ内の複数のプローブポイントを特定したハードウェア記述言語（ＨＤＬ）のテストベンチを生成する。本発明は、テストベンチが記述するＤＵＴの動作をエミュレートすると共に、試験信号をＤＵＴに供給してＤＵＴのプローブポイントをモニタして試験機器をエミュレートするためのシステムに関する。
【００２４】
本発明のエミュレーションシステムは、少なくとも一つのワークステーションコンピュータと一又はそれ以上のリソースボードからなり、各リソースボードはＤＵＴのエミュレート部分に適合するエミュレーションリソースを有する。各ボード上のエミュレーションリソースは、たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は他のタイプのプログラマブル論理デバイス（ＰＬＤ）及び／又はメモリのような他のリソースを有する。各リソースボードは、そのボード上に載置されたリソース間に信号経路を提供して、リソース同士が互いに通信できるようにする。
【００２５】
本発明の一つの局面において、パケットルーティングネットワークは、ワークステーションとリソースボードを相互接続する。各リソースボードは、ネットワークとリソースボード上に載置されたリソースの間のインタフェースとして作動する「トランザクションデバイス」を有する。各トランザクションデバイスは、ネットワークを介してパケットを送受信すると共に、リソースとトランザクションデバイスの間の通信経路を通じて、そのボード上のエミュレーションリソースと通信を行う。パケットルーティングネットワークとリソースボード上に載置されたトランザクションデバイスは、個々のリソースボード上に載置されたリソースの入力と出力の間に「仮想信号経路」を提供する。たとえば、一つのボードのトランザクションデバイスは、ローカルエミュレーションリソースの出力信号をモニタし、それらの出力信号のステートを示すデータを含むパケットを他のリソースボードのトランザクションデバイスに送る。受信したトランザクションデバイスは、そのローカルリソースボード上に載置されたリソースの入力端子に供給された信号を駆動してパケットによって搬送されたデータによって指定されたステートにすることができる。個々のリソースボードに載置されたリソースの入力端子と出力端子は信号経路によって直接には相互接続されてはいないが、しかし、仮想信号経路はそれらをまるで相互接続されているようにする。ワークステーションがＤＵＴの一部をエミュレートすべきときには、パケットルーティングネットワークがワークステーションとリソースボードの間にも仮想信号通路を提供する。パケットルーティングネットワークと各リソースボード上に載置されたトランザクションデバイスは、ワークステーションがパケットによって各ボード上に載置されたプログラマブル倫理デバイスへプログラミングデータを送ることを可能にする。
【００２６】
本明細書に添付の特許請求の範囲は、本発明の主題を特に指摘している共に明確に権利請求している。しかし、そこでは同じ引用符号が同一の部材に付けられている添付の図面に関連して本明細書の残りの部分を読むことによって、業界で通常の知識を有する者は、出願人が本発明の最良の実施の形態と考えているものの機構と動作方法の両方を、本発明の更なる利点と目的と共に最もよく理解する。
【発明の効果】
【００２７】
上記第１乃至第４の課題解決手段によれば、個々のリソースボード上に載置されたリソースの端子間に直接配線された信号経路を提供することをしなくてもよくなるという効果を奏する。また、パケットルーティングネットワークがリソースボード間に仮想信号経路を提供することで、何れか一つのリソースボードに載置された何れかのリソースが他の何れかリソースボードに載置された何れかのリソースと通信することを可能にするのには、従来のネットワークケーブルを用いて各ボードをネットワークに接続することだけが必要となるという効果を奏する。ルータやハブのような従来のネットワークスイッチングデバイスは、リソースボード間に必要なバンド幅を提供するために、必要に応じて配設される。従って、リソースボード間のネットワーク接続は、エミュレーションシステムを高度に適応性のあるものにするという効果を奏する。
【００２８】
更に、標準のネットワーク通信プロトコルを用いて全てのリソースが通信できるので、本発明のエミュレーション装置等は、また、異なる種類のエミュレーションリソースが互いに連携することを可能にするのに必要なプログラミング労力を単純なものにするという効果を奏する。ハイレベルのメモリリード・ライト命令をトランザクションデバイスに送ることによって、特定のリソースにとって適切な方法でトランザクションデバイスが各リソースとの通信を直接行うローレベルの仕事全て取り扱っているので、ワークステーションは、一つの命令サイクル内で、リソースとのトランザクションを開始することが可能であるという効果を奏する。さもなければ、ローレベルのＩ／Ｏインタフェースを通して直接トランザクションを制御しなくてはならない場合には、ワークステーションは多くの命令サイクルを必要とすることになるであろう。
【００２９】
このように、上記第１乃至第４の課題解決手段によれば、トランザクションデバイスは、ワークステーションがＤＵＴの入出力信号を直接制御するか又は従来のローレベルのＩ／Ｏインタフェースを通してそれらをモニタする従来のエミュレーションシステムに比べてより高いクロック周波数でのエミュレーション動作を可能にする効果を奏する。
ことができるという
【発明を実施するための最良の形態】
【００３０】
回路設計者は、一般的に、ＩＣ又は試験すべきＩＣの一部のような電子機器のネットリスト記載を有する従来のハードウェア記述言語（ＨＤＬ）である「テストベンチ」を作成する。このテストベンチは、また、被測定電子デバイス（ＤＵＴ）の各入力に加えられる、経時変化する試験信号の挙動も記述し、更に、ＤＵＴがそこでモニタされるべき信号を生成する回路内の各「プローブポイント」も識別する。
【００３１】
本発明は、ＤＵＴの動作をエミュレートするための各種のプログラマブルリソースを用いて、ＤＵＴに入力として加えられた試験信号に応答して、ＤＵＴが前記プローブポイントで生成する信号がどのように挙動するのかを判定するネットワークベースのエミュレーションシステムに関連する。以下の明細書の記載と添付図面は、特許請求の範囲に記載された発明の実施をするための最良の形態と考えられる実施の形態を記述したものである。  しかし、特許請求の範囲の記載は、下記の実施の形態だけではなく、特許請求の範囲に記載された部材又は工程の組み合わせを有し、明細書図面に記載された発明の実施の形態の例示された部材又は工程と機能的に均等である部材又は工程を有する、発明を実施するためのあらゆる形態に適用されることを意図している。
【００３２】
本発明に関するエミュレーションシステムは、テストベンチが記述するＤＵＴの部分をエミュレートして、エミュレートされたＤＵＴへの試験信号入力を生成し、更に、そのエミュレートされたＤＵＴのプローブポイントに現れる応答信号の挙動を表すデータを獲得するために、ハードウェアとソフトウェアベースのエミュレーションリソースの混在するものを用いることができる。このエミュレーションシステムは、テストベンチを処理してＤＵＴの各部をエミュレートするために用いるのはそのエミュレーションリソースのうちのどれかを判定し、どのリソースが試験信号を発生しどのリソースがエミュレートされたＤＵＴの出力信号をモニタするのかを判定する。そして、このエミュレーションシステムは、各エミュレーションリソースをそれに割り振られた機能を実行するように適切にプログラムする。
【００３３】
本発明は、特には、各エミュレーションリソースが互いに通信すると共に該各リソースをプログラムすると共にそれ自体もＤＵＴの一部をエミュレートするワークステーションと通信する。現実のＤＵＴの各種モジュールは各モジュールを直接に相互接続している信号通路を通じて直接互いに通信する。しかし、本発明に関連して、各エミュレーションリソースが個々の回路ボード（「リソースボード」）に存在するＤＵＴの個々のモジュールの動作をエミュレートするようにプログラムされたとき、各リソースは現実に結線された信号経路を通じて直接互いに通信する必要はない。代わりに、それらは、パケットルーティングネットワークを介してデータパケットを互いに伝送する各リソースボードに載置された「トランザクションデバイス」によって実現される「仮想の信号経路」を通じて互いに通信することも可能である。各トランザクションデバイスは、結線された信号経路を通じて、そのボード上の各リソースと通信するが、そのトランザクションデバイスは互いに通信すると共に、パケットルーティングネットワークを介して伝送されたデータパケットによりワークステーションとも通信する。
【００３４】
各トランザクションデバイスは、ワークステーション又は他のトランザクションデバイスから受信したパケットによって搬送されたコマンドとデータに応答して、ローカルリソースボードに載置された各リソースに関連する一又はそれ以上のトランザクションを実行するようにプログラムされることが可能である。そして、各トランザクションデバイスは、コマンドとデータをワークステーション又は他のトランザクションデバイスに搬送するパケットを送信することもできる。
【００３５】
たとえば、リソースＡのいくつかの出力信号がリソースＢへの入力信号としての働きをし、そのリソースＡとＢが異なるリソースボード上に存在するものとする。リソースＡのトランザクションデバイスは、それらのリソースＡの出力信号をモニタし、パケットルーティングネットワークを介してリソースＢのトランザクションデバイスに対して、それらの出力信号のステートを示すデータを有するパケットを周期的に送信するようにプログラミングすることが可能である。各リソースは固有のネットワークアドレスを有する。リソースそれ自体ではなく、トランザクションデバイスがパケットを送受信するが、しかし、パケットはパケット「宛先」としてリソースＢを識別するネットワーク宛先アドレスとパケット「ソース」としてのリソースＡを識別するソースアドレスを含んでいる。リソースＢを有するリソースボード上に存在するトランザクションデバイスは、パケットの宛先アドレスからパケットがアドレスされるリソースがローカルリソースボード上に存在することを確認できたときに、入力してくるパケットを受け入れる。そして、トランザクションデバイスは前記パケットのヘッダに含まれているコマンドに応答してリソースＢの入力信号をパケットのペイロードデータとして含まれている信号データによって示されたステートに駆動する。
【００３６】
リソースＡのトランザクションデバイスは、たとえば、リソースＡの論理操作のクロック制御するシステムクロック信号の各パルスにおいてパケットを伝送して、リソースＡの出力信号がステート変更するたびにリソースＢの入力信号のステートが更新されるようにプログラミングすることもできる。このように、インタフェース回路とパケットルーティングネットワークは、リソースＡの出力端子とリソースＢの入力端子間における「仮想信号経路」として作動することができる。それらの間には直接の信号経路は存在しないけれども、それらはあたかも存在するかのように動作する。
【００３７】
本発明のエミュレーションシステムにおいて、トランザクションデバイスに対してアクセス可能な各エミュレーションリソースの各入力各出力及び各内部格納位置が共通のメモリアドレス空間内の固有のアドレスにマッピングされる。ワークステーションにおいて稼動しているエミュレーションソフトウェアがエミュレーションリソース入力を特定のステートに駆動したいとき又はデータをエミュレーションリソースの特定の格納位置に書き込みたいとき、データをその特定のリソース入力又は格納位置に関連するメモリアドレスに書き込む従来のライトステートメントのみを実行する必要がある。ワークステーションにおいて稼動しているローレベルの「トランザクション」ソフトウェアは、またこのライトステートメントに応答して、このリソースをアドレス指定し、書き込みコマンドとアクセスされるべき前記入力又は格納位置と該入力が駆動されるべきステートを示すデータを含むか、又は、前記格納位置に書き込まれるべきデータを含むパケットを伝送する。そのリソースに接続されたトランザクションデバイスは該パケットで運ばれたそのコマンドとデータに応答して、特定のリソース入力を所望のステートに駆動するか、又は、データをそのリソースの特定の格納位置に書き込む。反対に、ワークステーションにおいて稼動しているエミュレーションソフトウェアが特定のエミュレーションリソース出力のステートをサンプリングしたいとき又はデータをエミュレーションリソースの特定の格納位置から読み出したいとき、データをその特定のリソース出力又は格納位置に関連するメモリアドレスから読み出す従来のリードステートメントのみを実行する必要がある。ワークステーションにおいて稼動しているローレベルトランザクションソフトウェアはこのリードステートメントに応答して、このリソースをアドレス指定し、読み出しコマンドとアクセスされるべき前記出力又は格納位置を示すデータを含むパケットを伝送する。そのリソースに接続されたトランザクションデバイスは該パケットで運ばれたそのリードコマンドとデータに応答して、特定のリソース入力のステートを判定するか、又は、そのリソースの特定の格納位置に格納されたデータを読み出し、そして、エミュレーションソフトウェアに戻されるべきデータを有するパケットをワークステーションに戻す。ワークステーションのトランザクションソフトウェアはそのパケットを受信して、リードコマンドに応答して、それが運んできたデータをエミュレーションソフトウェアに戻す。
【００３８】
このネットワークベースの通信システムの一つの利点は、個々のリソースボードの載置されたリソース間に結線された信号経路を設ける必要がないことである。各リソースボードのリソースの入出力信号にアクセスするために各リソースボードに設けられた適切なトランザクションデバイスと同じパケットルーティングネットワークを通じて相互接続されている全てのトランザクションデバイスに関して、何れかのリソースボードに載置された何れかのリソースも仮想信号経路を経由して他の何れかのリソースボードに載置された何れかのリソースと通信することが可能である。
【００３９】
このネットワークベースの通信システムの他の利点は、従来式のコンピュータが容易にネットワークと接続可能であるので、エミュレートされているＤＵＴのある部分をエミュレートするためのリソースとして一又はそれ以上の従来のコンピュータを使用することが比較的に簡単に行えることである。コンピュータによってエミュレートされているＤＵＴの部分とリソースボードによってエミュレートされているＤＵＴの他の部分の間の信号経路は、それ自体仮想信号経路によってエミュレートされる。
【００４０】
このネットワークベースの通信システムの更なる利点は、それがエミュレーションシステムの拡張性を高度に実現できたことである。多くのリソースボード又はコンピュータをエミュレーションシステムに加えるためには、新たなリソースボード又はコンピュータに対してパケットルーティングネットワークを拡張することだけが必要なことである。結線された信号経路とスイッチベースのシステムに依存して、たとえば、マザーボードに搭載されたリソースボード間に直接の信号経路を設けた従来のエミュレーションシステムでは、マザーボードで利用できるスロットの数が制限されることに起因して拡張性が制限される。
【００４１】
ネットワークベースの通信システムは、また、ＤＵＴの一部をエミュレートするコンピュータをプログラミングして他のエミュレーションリソースと相互連絡することを容易にする。トランザクションデバイスとワークステーションにおいて稼動しているローレベルトランザクションソフトウェアは、その特定のリソースにとって適切であるようなやり方で、各リソースと直接に通信するすべてのローレベルの仕事を取り扱っているので、テストベンチの何れかの部分をエミュレートするワークステーションのソフトウェアは特定のメモリアドレスへの書き込み読み出しをすることで簡単にエミュレーションシステムの他の何れかの部分と相互連絡をすることが可能である。このように、他の場合では遂行するのに多くの命令を必要とするときでも、ローレベルＩ／Ｏインタフェースを介してエミュレーションソフトウェアがトランザクションを直接制御しなければならない場合に、このエミュレーションソフトウェアは、一つの命令でリソースによって、トランザクションを起動することができる。従って、このトランザクションデバイスは、ワークステーションが従来のローレベルＩ／Ｏインタフェースを介してＤＵＴの入出力信号を直接制御してそれをモニタする従来のエミュレーションシステムにおけるよりも高いクロック周波数でエミュレーションを実行可能にする。
【００４２】
実施例
図１は、コンピュータワークステーション４２と、一又はそれ以上のリソースボード４４と、従来のネットワークルーター又はスイッチ若しくはハブによって相互接続された一又はそれ以上のバスを有するパケットルーティングネットワーク４６を具備した本発明に関連するエミュレーションシステム４０の一例を図示している。各リソースボード４４は、プログラマブルゲートアレイ（ＦＰＧＡ）又は他のタイプのプログラマブル論理デバイス（ＰＬＤ）やランダムアクセスメモリ又はリードオンリーメモリや特定用途向け集積回路（ＡＳＩＣ）やマイクロプロセッサ又はある程度の抽象性を有してＤＵＴのいずれかの部分の動作をエミュレートするために使用される他の種類のデバイスのような、一又はそれ以上のエミュレーションリソース４８を有する。各リソースボード４４は、また、パケットルーティングネットワーク４６とエミュレーションリソース４８との間のインタフェースであるトランザクションデバイス４９を有する。
【００４３】
パケットルーティングネットワーク４６は、たとえば、各トランザクションデバイス４９がＩＥＥＥ規格１３９４の標準的なｆｉｒｅｗｉｒｅバスプロトコルを用いてパケットを送受信するように調整されている場合において、「ｆａｒｅｗｉｒｅ」バスネットワークとして実現される。しかし、本発明はｆｉｒｅｗｉｒｅバスプロトコルを採用することに限るものではない。ｆｉｒｅｗｉｒｅバスに代えて各Ｉ／Ｏ回路５２間でデータパケットを搬送するために当該業界で通常の知識を有する者に知られている多くのネットワークシステム及びプロトコルが利用可能である。
【００４４】
ワークステーション又はトランザクションデバイス４９はパケットをアセンブルして、それをパケットルーティングネットワーク４６を介して外部に送信する。パケットルーティングネットワーク４６はワークステーション４２と全てのリソースボード４４のトランザクションデバイス４９に送信パケットを送るが、ネットワークルーティング性能を有する場合には、ネットワークはパケットに含まれているネットワーク宛先アドレスに基づいて送信パケットをより選択的に送ることもできる。各パケットは、ネットワークが使用する特別の物理層のプロトコルに関して調整されるが、しかし、各パケットは、主に、ペイロードデータに加えて、ネットワークがパケットを転送するのに必要な情報を含むヘッダを有する。ワークステーション４２と各トランザクションデバイス４９と各エミュレーションリソース４８は固有のネットワークアドレスを有し、パケットルーティングネットワーク４６を介して伝送された各データパケットに含まれているヘッダはパケットのソースと宛先として指定されたデバイスのネットワークアドレスを適切に識別する。ヘッダは、また、受け取りトランザクションデバイスまたはワークステーションに命じてアクションを取らせるコマンドを有する。パケットが搬送するペイロードデータはネットワークの物理層のプロトコルの性質に応じて固定長または可変長にすることができるが、可変長パケットであることが好ましい。ペイロードデータには、ヘッダに含まれたコマンドに対する引数として利用されるべきデータが含まれている。たとえば、コマンドが受信トランザクションデバイス４９に命じてパケットの宛先アドレスで識別された特定のエミュレーションリソース４８の入力信号を特定のステートに駆動する場合、コマンドの引数を構成するペイロードは各信号を参照してそれらが駆動されるべきであるステートを示す。パケットヘッダに含まれているネットワーク宛先アドレスがローカルリソースボード４４上のいずれかのエミュレーションリソース４８のアドレスと一致したときにのみ、そのトランザクションデバイス４９は入力パケット内のコマンドを実行する。
【００４５】
各リソースボード４４のトランザクションデバイス４９は、パケットを送受信するためにのみ設計されているのではなく、それらのリソースにとって適切な通信プロトコルを用いてそのリソースボード上のローカルエミュレーションリソース４８と通信するためにも設計されている。各トランザクションデバイス４９が実行するトランザクションのタイプは、ローカルエミュレーションリソース４８が実行すべくプログラミングされるものに応じるので、トランザクションデバイス４９は、たとえば、ＪＴＡＧまたはその他のタイプのバスを介して外部源から供給されたデータをプログラミングし、その後、トランザクションデバイス４９をアドレス指定する入力パケットによって運ばれたデータをプログラミングすることで、当初プログラムされる一又はそれ以上のプログラマブル論理デバイスにより適切に少なくともその一部実現される。
【００４６】
パケットは、そのペイロード内において、ＦＰＧＡのようなエミュレーションリソース４８をプログラミングするためのデータを搬送することができる。ＦＰＧＡをプログラムするために、ワークステーション４２は「ダウンロード」コマンドとＦＰＧＡプログラミングデータをプログラムされるべき特定のＦＰＧＡに搬送するパケットをアドレス指定する。
【００４７】
アドレス指定されたＦＰＧＡを含むリソースボード４４上のトランザクションデバイス４９は、入力パケット内のダウンロードコマンドに応答してパケットのペイロードのプログラミングデータをアドレス指定されたＦＰＧＡのプログラミング入力に送る。
【００４８】
パケットは、リソース出力信号の現状のステートを示すデータ若しくはリソース入力信号が駆動されるべきステートを示すデータを搬送することもできる。たとえば、入力パケット内の「リード」コマンドは、トランザクションデバイス４９に命じて、入力パケットの宛先アドレスによってアドレス指定されたＦＰＧＡの各Ｉ／Ｏ端子における信号のステートを示すペイロードデータを含む信号データパケットをソースアドレスに戻すようにすることもできる。パケットの「強制」コマンドは、受信トランザクションデバイス４９に命じて、パケットの宛先アドレスによってアドレス指定されたエミュレーションリソースの入力端子をパケットによって運ばれたデータによって示されたステートに駆動することも可能である。強制コマンドを有する一連のパケットは、パケットを送信するリソースボード４４上のエミュレーションリソース４８の出力端子とパケットがアドレス指定した他のリソースボード上のエミュレーションリソース４８の入力端子の間の信号経路の動作をエミュレートすることができる。「相互確認動作モード」において、ワークステーション４２（又はパケットルーティングネットワーク４６に接続することのできる他のコンピュータ）はＩＣのある部分をエミュレートするが、一方、リソースボード４４上のエミュレーションリソース４８はそのＩＣの他の部分をエミュレートすることができる。この動作モードにおいて、ワークステーション４２とトランザクションデバイス４９は、信号入力を駆動する強制コマンドを各モジュール内のリソースに搬送するパケットを用いることができる。
【００４９】
リソースボード４４は、たとえば、大容量のメモリバンクの機能をエミュレートすることのできる多数のランダムアクセスメモリを有することもできる。この場合、入力パケットのヘッダにおいて搬送されたコマンドは、トランザクションデバイス４９に命じて、データをパケットの宛先アドレスにおいて選択されたＲＡＭのうちの一つの特定のアドレス又はアドレスブロックに書き込ませる。この場合、パケットのデータペイロードに含まれた引数データには、アクセスされるべきＲＡＭアドレス並びにこのＲＡＭアドレスに書き込むべきデータを含むことができる。入力パケットのメモリリードコマンドは、トランザクションデバイス４９に命じて、宛先アドレスにおいてアドレス指定されたＲＡＭの特定のアドレス又はアドレスブロックのデータを読み込ませ、そして、アドレス指定されたＲＡＭから読み込んだパケットのデータを入力パケットのヘッダに含まれたソースアドレスによって識別されたデバイスに戻すようにさせる。
【００５０】
エミュレーションシステム４０は、他の構成部材を含む回路ボードのような外部システム５１内で、その目的の動作環境においてＩＣをエミュレートする回路内エミュレータ（ＩＣＥ）としても作動することができる。このＩＣＥ動作モードにおいて、エミュレーションリソース４８は、たとえば、通常エミュレートされるＩＣを保持している外部システム５１のソケットにケーブルコネクタ５３を挿入することによって提供される信号経路を介して直接外部システム５１と通信する。
【００５１】
ＦＰＧＡリソースボード
図２は、図１のリソースボード４４の一つのタイプの例をより詳細なブロック図形式で図示したものである。例示のリソースボード４４は、Ｉ／Ｏブロック５２とリソースコントローラ５０によって構成されるトランザクションデバイス回路４９を有する。Ｉ／Ｏブロック５２は、図１のネットワークを介してパケットを送受信する一対のトランシーバー５４、５５を有する。それぞれのトランシーバー５４、５５は、搬送されたパケットを受信するための個々のポートに到達した入力信号をデコードし、たとえば、１バイト８ビットのシーケンスの形でそのパケットをアービター６６を介してリンクレイヤコントローラ６８に通過させる。８ビット以外のバイトサイズも他の実施例において使用することが可能である。パケットがローカルボードの上のあるリソースに対してアドレス指定をしているときには、リンクレイヤコントローラ６８はパケット内の情報をリソースコントローラ５０に送る。そして、リソースコントローラ５０は、そのパケット内のコマンドが参照している活動を行う。
【００５２】
リソースコントローラ５０がパケットによってデータを外部に送りたいときには、それはそのデータをリンクレイヤコントローラ６８に送る。リンクレイヤコントローラ６８は、データをパケットに組み入れて、そのパケットをバスアービター６６を介して１バイトシーケンスの形式で前記トランシーバー５４、５５のうちの一方に送る。そして、トランシーバー５４又は５５がそのパケットをコード化してパケットルーティングネットワーク４６のうちの一つを介して外部に伝送する信号にする。Ｉ／Ｏブロック５２は、また、リソースコントローラ５０とリンクレイヤコントローラ６８の間のハンドシェイキングを制御し、更に、出力パケットのヘッダを発生するするマイクロコンピュータ７０を有する。
【００５３】
システム起動時に、マイクロコンピュータ７０はワークステーション４２と通信して各ローカルエミュレーションリソースに対して固有のアドレスを確立する。マイクロコンピュータ７０は下記のような他の機能を実行するようにプログラミングされてもよい。
【００５４】
トランシーバー５４、５５とアービター６６は、たとえば、テキサスインスツルメント（ＴＩ）社製のモデルＴＳＢ４１ＡＢ０３Ａの物理層ＩＣによって適切に実現される。リンクレイヤコントローラ６８は、たとえば、ＴＩ社製のモデルＴＳＢ１２ＬＶ３２のリンクレーヤーＩＣによって適切に実現される。マイクロコンピュータ７０はモトローラ社製のモデルＭｃｏｒｅＭＭＣ２１０７のマイクロコントローラＩＣによって適切に実現される。しかしながら、他のタイプのＩＣも他の方法でＩ／Ｏブロック５２の機能を実行することができる。何故ならば、Ｉ／Ｏブロック５２の内部構成は、設計上の選択の問題であり採用されるパケットルーティングネットワークのタイプに依存するものだからである。
【００５５】
図２のリソースボード４４の例において、エミュレーションリソースは８個のＦＰＧＡ、Ｆ１−Ｆ８のアレイを有するが、それぞれのＦＰＧＡは、たとえば、約１１００のＩ／Ｏピンを有し、４００Ｋまでのゲートを提供するザイリンクス社製のモデルＶｉｒｔｅｘ−ＩＩ６０００ＦＦ１５１７であるが、他のＦＰＧＡが同性能でありモデル化され使用されたとしても。図２には図示しないが、各ＦＰＧＡの１２０個のＩ／Ｏ端子は、他の個々のＦＰＧＡのＩ／Ｏ端子と直接連結されている。従って、各ＦＰＧＡ、Ｆ１−Ｆ８の８４０個のＩ／Ｏピンが、そのＦＰＧＡを同じリソースボード４４上の他の７個のＦＰＧＡのそれぞれと相互接続して互いに通信するために使用される。各ＦＰＧＡ、Ｆ１−Ｆ８の他の４２個のＩ／Ｏピンが平行ローカルバス７２を介してリソースコントローラ５０内に構築されたローカルバスコントローラ７４に連結されている。これらは、たとえば入力パケットが搬送する強制又はリードコマンドに応答してリソースコントローラ５０がアクセスするＦＰＧＡのＩ／Ｏ端子である。
【００５６】
各ＦＰＧＡ、Ｆ１−Ｆ８の別の１４４個のＩ／Ｏピンは、たとえば、エミュレータがインサーキットエミュレータとして使用される場合に外部システムにＦＰＧＡのＩ／Ｏ端子を接続するために用いられるコネクタＣ１−Ｃ８のうちの対応するものに連結されている。それとは別に、ＦＰＧＡ、Ｆ１−Ｆ８の間で更なる相互接続が必要であるときは、コネクタＣ１−Ｃ４又はＣ５−Ｃ８を設けた小サーキットボード７５又は７６が各ＦＰＧＡ間において更なる信号経路を提供することができる。所望の相互接続パターンを提供する必要がある場合、サーキットボード７５、７６上のトレースパターンはカスタムに設計される。限定的な場合、必要であれば、スイッチＳ９がＦＰＧＡのＦ１とＦ５の１４４個のＩ／Ｏピン同士を相互接続して、回路ボード７５と７６の間に通信路を提供する。
【００５７】
８個一組のＲＡＭ、Ｍ１−Ｍ８もエミュレーションリソース４８の一部として内蔵されている。リソースコントローラ５０は、一組のバススイッチ、Ｓ１−Ｓ８のうちの何れか一つを設定して各ＦＰＧＡ、Ｆ１−Ｆ８に対応するＲＡＭ、Ｍ１−Ｍ８へのリード・ライトアクセスを提供する７２ビット幅の信号経路を提供する。
【００５８】
ブートＰＲＯＭとザイリンクス社製のＦＰＧＡ、Ｖｉｒｔｅｘ−ＩＩによって適切に構築されたリソースコントローラ５０は、そこを通って外部のホストコンピュータがプログラミングデータを該ＦＰＧＡとブートＰＲＯＭに供給するＪＴＡＧバスを有する。ローカルバスコントローラ７４は、強制コマンド、リードコマンド、又は他のタイプのコマンドを組み込んだ入出力パケットによってデータをＦＰＧＡ、Ｆ１−Ｆ８とワークステーション又は他のリソースボードの間で転送するステートマシーンとして適切に構築される。リソースコントローラ５０は、入力パケットによってアドレス指定されたＦＰＧＡのプログラミング入力に入力パケットで到着されたプログラミングデータを転送するための「選択マップ」コントローラ７８も他のステートマシーンの形態で構築する。
【００５９】
リソースコントローラ５０内に構築された一組のレジスタ７９は、スイッチ、Ｓ１−Ｓ９のステートを制御すると共に、これもリソースコントローラ５０内に構築された、マルチプレクサ８０も制御するデータを保持する。ワークステーション４２（図１参照）は、リソースコントローラ５０に対して、アドレス指定されたパケットであって制御データを含みリソースコントローラ５０に命じてその制御データをレジスタに書き込ませるパケットを送ることができる。リソースコントローラ５０は、また、リンクレイヤコントローラ６８とコントローラ６４の各種の機能ブロックとの間でデータとコマンドを転送するためのリンクレイヤコントローラ６８とのハンドシェイキングを取り扱う「データムーバ」回路８８も有する。
【００６０】
マルチプレクサ８０は、６４個の異なるクロック信号源を選択してグローバルクロック信号バス８２を介して１６個までの一組の異なるクロック信号をＦＰＧＡ、Ｆ１−Ｆ８とリソースコントローラ５０に供給する。
【００６１】
ローカルクロック信号発生器（ＣＳＧ）８４は、入力として、７８ＫＨｚから１６ＭＨｚまでの範囲の周波数の１６個一組の異なるクロック信号（ＯＳＣＣＬＫ）をマルチプレクサ８０へ提供する。エミュレーションシステムがインサーキットエミュレータとして使用される場合、外部回路はコネクタ８６を介して１６個までの他のクロック信号（ＩＣＥＣＬＫ）をマルチプレクサ８０へ提供して、たとえば、ＦＰＧＡ、Ｆ１−Ｆ８の動作をその外部回路に同期することができる。図２には図示していないが、８個のＦＰＧＡ、Ｆ１−Ｆ８のそれぞれの２つのＩ／Ｏ端子は、また、マルチプレクサ８０の入力に接続され、各ＦＰＧＡ、Ｆ１−Ｆ８は２つまでのゲートクロック信号（ＧＡＴＣＬＫ）をそれ自体と他のＦＰＧＡに提供できるようになっている。リソースコントローラ５０は、他の１６個一組のクロック信号（ＣＯＳＣＬＫ）をマルチプレクサ８０へ供給する。リソースコントローラ５０は、入力パケットが搬送するコマンドに応じてＣＯＳＣＬＫクロック信号のエッジを発生する。エミュレーションシステムが相互確認動作モードで作動する場合には、ＣＯＳＣＬＫクロック信号が、たとえば、ＦＰＧＡ、Ｆ１−Ｆ８の動作をワークステーション４２のそれら内の他のものに載置されたエミュレーションリソースの動作に同期させるために使用することも可能である。
【００６２】
好適にはリソースコントローラ５０内のメモリコントローラ８３によってリード・ライトアクセスされる高速のＳＤＲＡＭであるランダムアクセスメモリ（ＲＡＭ）８１は、ＲＡＭへのリード・ライトアクセスを提供する。たとえば、パケットが大きなブロックでデータを搬送する場合にパケットは最も効果的にネットワークバスのバンド幅リソースを利用するので、ＲＡＭ８１は、リソースコントローラ５０がパケットによって受信する大きなブロックのデータを、そのデータが使用されるまで、一時的に保持するのに使用されるか、又は、ローカルエミュレーションリソースから得られたデータを、それがパケットによって外部に送られる程十分に大きなブロックデータとなるまで、格納するために使用される。エミュレーション処理の間、ワークステーション４２は、ローカルバスコントローラ７４がＦＰＧＡ、Ｆ１−Ｆ８の入力に供給する信号の連続するステートを制御することがあるが、しかし、それらの入力信号の一又はそれ以上がステート変更すべきであるたびに、ワークステーションがパケットをリソースコントローラ５０に送ることが不十分となる程度々それらの信号はステート変更をしなければならないこともある。ワークステーション４２が周期的に大きなブロックのデータであって制御されるべきＦＰＧＡ入力信号の連続するステートを定義するものを有するパケットを送ることがより好ましいやり方である。メモリコントローラ８３は、これらのデータブロックをＲＡＭ８１に格納し、そして、それらのＦＰＧＡ入力信号を発生するようにプログラムされているローカルバスコントローラ７４からの要求に応じて周期的にそのデータの連続する部分を読み出す。
【００６３】
ＲＡＭ８１は、試験信号の経時的に変化する挙動を定義する波形データを記憶することもできるが、その試験信号はＤＵＴ入力として供給されるべきであることをテストベンチが示すものである。エミュレーション処理の間、メモリコントローラ８３は、そのデータを読み出してＦＰＧＡ、Ｆ１−Ｆ８へ入力として加える試験信号を制御するローカルバスコントローラ７４にそれを供給する。
【００６４】
ＲＡＭ８１は、エミュレーション処理に引き続いて、エミュレートされたＤＵＴが予想されたような動作をしたか否かを判断するために分析されるＦＰＧＡ出力信号の連続するステートを表すデータを記憶するために使用される。そのような場合、ローカルバスコントローラ７４は、選定されたＦＰＧＡの出力信号のステートを周期的にサンプリングして、それらのステートを表しているデータをメモリコントローラ８３に通過させてＲＡＭ８１に記憶させるようにプログラミングされている。ＲＡＭ８１にそのようなデータの相当大きなブロックが記憶された後で、メモリコントローラ８３はそのデータブロックをパケットにしてワークステーション４２に送る。ＲＡＭ８１は、ＤＵＴメモリをエミュレートするためにも使用することができる。
【００６５】
ＲＡＭ８１は、マイクロコンピュータ７０の命令メモリとしても使用することが可能である。
【００６６】
階層的リソース配分
一般的に、テストベンチは、相互に接続されて小さな低レベルの回路モジュールを形成する個々のセルの集合としてＩＣであるＤＵＴを階層的に記述するが、低レベルの回路モジュールは相互接続されてより大きなより高レベルのモジュールを形成するものである。所定の設計階層レベルにおけるセルとモジュールの間の信号経路の数は、階層レベルが上昇すると急激に減少する傾向がある。最低位の設計階層レベルにおいてモジュールを形成するセルが高度に相互接続される傾向を有しているので、非常に多くの信号経路が通常各ローレベルのモジュール内に存在する。多数の信号経路が次に高いレベルのモジュールを構成するローレベルのモジュールを相互接続する一方、通常は、各モジュール内部に見られる信号経路に比べて相当少ない数のモジュール間の信号経路が存在する。相対的に少数の信号経路が、通常、設計階層の高レベルにおいて、モジュール間を相互接続している。たとえば、その設計階層の最高レベルにおいて、ＤＵＴが埋め込み式のプロセッサとメモリと一又はそれ以上の他のモジュールを有するとき、それぞれの高レベルモジュールは数百万の内部信号経路を有することができるが、しかし、その高レベルモジュールは２，３の信号経路しか有さない平行バスを介して互いに通信する。
【００６７】
本発明のエミュレーションシステムは、典型的なＤＵＴ設計の階層的な性格によく似ている。たとえば、個々のＦＰＧＡ内で高度に相互接続された論理ゲートが、エミュレーション階層の最低レベルにおいても存在する。リソースボードに載置された個々のＦＰＧＡと他のリソースは、次に高いレベルのエミュレーション階層を形成し、それらが存在する各リソースボードは、各ＦＰＧＡ内に存在するほど多くではないけれども、そのリソースボードに載置されたＦＰＧＡと他のリソースの間に多くの信号経路を提供する。ワークステーションとリソースボードそれら自体は、次に高いレベルのエミュレーション階層を提供し、それらはパケットルーティングネットワークが提供する仮想の信号経路を介して互いに通信を行う。非常に多数の仮想の信号経路が可能であるけれども、ネットワークのバンド幅がそのような仮想の経路の数に現実的な制限を加えている。必要な場合、パケットルーティングネットワーク内のバス配置リソースボードをより高いレベルのグループに組織して、各リソースボード間のバンド幅を増加するように設計することもできる。
【００６８】
ＤＵＴの各部分をエミュレートするためにリソースを選択するとき、エミュレーションシステムはそのリソースを階層ラインに沿って割り当てる。ＤＵＴ階層の最低レベルでモジュールを形成するセルは、同じＦＰＧＡ内で可能な場合にエミュレートされる。より高レベルのモジュールを形成する一組の低レベルのモジュールも、同じＦＰＧＡ内で可能な場合にエミュレートされるか、又は、必要な場合には、同じリソースボードに載置されたＦＰＧＡと他のリソースによってエミュレートされる。個々のリソースボードはより高レベルのＤＵＴ階層に存在するモジュールをエミュレートする。このようなリソースの階層的な配分は、階層的なＤＵＴ設計の各レベルにおけるモジュール間通信のバンド幅の要件を階層的なエミュレーションシステムの各レベルの通信バンド幅容量に合致させる。
【００６９】
システムオンチップエミュレーション
本発明のネットワークベースの階層的エミュレーションシステムは、埋め込み型プロセッサとメモリと他の大きな標準化された知的財産（ＩＰ）構成部材を有する「システムオンチップ」（ＳｏＣ）集積回路をエミュレートする場合に特に好適である。図３は、典型的なＳｏＣ  ＩＣ９０の主要構成部材を図示している。このＳｏＣ  ＩＣ９０は、標準的なプロセッサ９１と、標準的なメモリ９２と、ＤＭＡバスマスタ９３とコンピュータバス９４とＵＡＲＴ９５とタイマー９６とキーパッドＩ／Ｏポート９７とＰＩＯポート９８とペリヘラルバス９９とバス９４と９９を連結するブリッジ１００からなる各種の他の構成部材を有している。
【００７０】
ＳｏＣ  ＩＣ９０を記述したテストベンチを処理するとき、ワークステーション（図１参照）は、エミュレートされるべきＳｏＣであるＤＵＴの各構成部材の性質と他のテストベンチの部分を判断し、そして、各構成部材をエミュレートするために有効なエミュレーションリソースを割り当てる。ＩＰ構成部材の設計者はＳｏＣ  ＩＣ９０に内蔵されるプロセッサ９１やメモリ９２のようなＩＰ構成部材の機能を既に試験しているので、ＩＰ構成部材を用いるＳｏＣ  ＩＣ９０をエミュレートするシステムは、比較的高レベルの抽象性においてこれらのＩＰ構成部材の動作をエミュレートすることだけが必要であり、適切にプログラムされたワークステーションに対するそのタスクはうまく適合される。一方、エミュレーションシステムは、好適に、ＦＰＧＡのようなプログラマブル論理デバイスを用いて、ローレベルの抽象性においてＳｏＣの各種の他の構成部材をエミュレートして、設計者がそのような構成部材の設計をより完全にデバックすることを可能にする。このように、ＳｏＣ設計にとって、このシステムは、一又はそれ以上のコンピュータを用いてＳｏＣ設計の多数のＩＰ構成部材をエミュレートすると共に、ＦＰＧＡと他のローレベルのリソースを用いてＳｏＣ設計のカスタム設計された部分をエミュレートするエミュレーションを行う「相互確認」方式を行うことができる。コンピュータとリソースボードの間に本発明のエミュレーションシステムが提供する柔軟なネットワークベースの通信は、それをこの相互確認方式によって理想的なものにする。
【００７１】
エミュレーションリソースの割り振り時において、ワークステーション４２は所望の設計階層のレベルにおいてエミュレートされるべきテストベンチの各種の構成部材を表すブロックダイアグラムを表示し、表示画面は利用可能なエミュレーションリソースをその階層レベルで表示する。たとえば、図４は図３のＳｏＣ  ＩＣ９０に対してエミュレーションリソースを割り振ったときにワークステーション４２が生成する高レベルの表示画面を図示している。この表示画面には、ＳｏＣ  ＩＣ９０の主要構成部材を表すブロックと、この例ではワークステーションと単独のＦＰＧＡリソースボードを含む利用可能なエミュレーションリソースを表すブロックが表示されている。表示画面は、ＤＵＴ構成部材を表している各ブロックからそれをエミュレートするのに使用されるべきリソースを表しているブロックへ延在している矢印を表示することによって、どのようにしてエミュレーションリソースが割り振られるのかを図式的に表している。設計者は、マウスを用いて矢頭を一つのリソースから他のドラッグすることによって、リソース割り振りを修正することができるが、しかし、リソース割り振りソフトウェアは利用者がＩＣモジュールをエミュレートするために選択したエミュレーションリソースが適切なタイプではないこと若しくはそのリソースをエミュレートすることができないことを利用者に知らせる。
【００７２】
この例では、スイッチＣ９により相互接続されているＦＰＧＡ、Ｆ１とＦ５の１４４個のピンの個々の部分がＳｏＣ  ＩＣ９０のバス９４と９９をエミュレートし、ＦＰＧＡ、Ｆ１がこの２つのバスを相互接続しているブリッジ１００をエミュレートする。ＦＰＧＡ、Ｆ２がＤＭＡバスマスタ９３をエミュレートすると共に、ＦＰＧＡ、Ｆ５−Ｆ８が、それぞれ、デバイス９７と９５と９６と９８をエミュレートする。ワークステーションには、プロセッサ９１メモリ９２をエミュレートするタスクが割り当てられる。他のリソースボードが利用できＳｏＣ  ＩＣ９０をエミュレートする必要がある場合、そのリソースボードもこの表示画面に現れる。システムに十分なハードウェアリソースがないときには、そのシステムはワークステーションにもっとエミュレーションタスクを割り当てることも可能である。
【００７３】
システムプログラミング
図５は、ワークステーションが実行する工程であって、エミュレーションシステムにおいて有効なリソースの記述に関連して設計者が供給するテストベンチに応答して、エミュレーションシステムをプログラムするものを図示している。ワークステーションは、まず、テストベンチを処理して、ＤＵＴの各モジュールをエミュレートするために、そして、テストベンチが記述している試験信号発生とＤＵＴ入出力信号モニタ機能を実行するために、どのようにリソースを割り振るかを決定する。
【００７４】
図１６は、ジェネレータ３４とＤＵＴ３６とモニタ３７を有するワークステーション４２がどのようにしてテストベンチの各機能を実現するのかを図示した概念図である。ジェネレータ３４は、ＤＵＴ３６へ入力として供給された試験信号を制御し、一方、モニタ３７はＤＵＴ出力信号をモニタしてソフトウェアをデバッグすることによって以後の分析のためにそれらのステートを表すデータを格納する。ワークステーション４２は、リソースボード４４上のリソースを使ってＤＵＴ３６のいくつかの部分を実現し、更に、ワークステーション４２上で稼動する高レベルのソフトウェアによってＤＵＴの他の部分を実現するように選択可能である。ジェネレータ３４とモニタ３７は、トランザクションデバイスによっても、そして、ワークステーション４２のソフトウェアによっても実現される。
【００７５】
トランザクションデバイス４９にアクセス可能なリソース４８の入出力の全てとリソース４８内の内部データストレージデバイスの全ては、マッピングされて共通のメモリ空間内の各アドレスを分離する。ＤＵＴの一部をエミュレートするか又はジェネレータ３４として作動するワークステーションのソフトウェアが何れかのリソース４８の入力を特定のステートに駆動したいときには、又は、リソース４８内のアクセス可能な何れかの格納位置にデータを書き込みたいときには、それは以下のようなメモリ書き込み命令を実行する。即ち、
ｗｒｉｔｅ  ｌｏｃａｔｉｏｎ１  ｄａｔａ１
である。
【００７６】
この命令は、リソース入力又は格納位置にマッピングされたメモリアドレス（ｌｏｃａｔｉｏｎ１）にデータ（ｄａｔａ１）が書き込まれるべきであることを示している。トランザクターハードウェアとワークステーションで稼動しているソフトウェアは、この命令に答えて、アドレス指定された適切なリソース４８に書き込みコマンドと、特定のリソース入力とそれが駆動されるべきステートを示すデータを有するパケットを送るか、又は、特定のリソース格納位置を参照してその格納位置に書き込むべきデータを示す。そのリソース４８にアクセスしているトランザクションデバイス４９によって実現されたトランザクター３５は、そして、パケットに含まれた命令を実行してリソース入力を指定されたステートに駆動するか、又は、適切なデータを指定されたリソース格納位置に書き込む。
【００７７】
ＤＵＴ３６の一部をエミュレートするか、又は、モニタ３７として活動するワークステーションのソフトウェアが遠隔のリソース４８の出力のステートを知りたいときには、又は、その格納位置のうちの一つのコンテンツを読み出したいときには、それは以下のような読み出し命令を実行する。即ち、
ｒｅａｄ  ｌｏｃａｔｉｏｎ２
である。
【００７８】
この命令は、リソース出力又は格納位置にマッピングされたメモリアドレス（ｌｏｃａｔｉｏｎ２）にデータが読み出されるべきであることを示している。トランザクターハードウェアとソフトウェア３８は、この命令に答えて、適切なリソース４８にアドレス指定された読み出しコマンドと、特定のリソース出力又は格納位置を参照するデータを有するパケットを送信する。トランザクションデバイス４９において構築されリソース４８にアクセスするトランザクター３５は、そのパケットに含まれている読み出しコマンドを実行して、リソース出力のステートを決定するか、又は、リソース格納位置のコンテンツを読み出してそれが得たデータをパケットによってワークステーション４２に戻す。そして、ワークステーション４２内のトランザクター３８は、読み出し命令に応じて、パケットに含まれたデータをＤＵＴエミュレーションシステムソフトウェア３６又はモニタソフトウェアに戻す。マイクロプロセッサ７０によって構築されたジェネレータ３４又はモニタ３７は、適切なメモリアドレスにリード・ライトアクセスすることによって、同じようにＤＵＴ３６の各部分をエミュレートするローカル又は遠隔のリソース４８又はワークステーション４２で稼動しているソフトウェアと情報伝達し合える。トランザクター３５と３８は、情報伝達を行うのに必要なローレベルの活動の全てを取り扱う。
【００７９】
エミュレーションソフトウェアがエミュレーションリソース間のローレベルの通信相を取り扱う必要がないので、更に、全てのソフトウェア駆動リソースが、単純にメモリアドレスにリード・ライトアクセスすることによって、同じようにハードウェアリソースと通信するので、メモリをリード・ライトする通信プロトコルは、ワークステーション４２とトランザクションデバイス４９のプロセッサのためのエミュレーションソフトウェアの開発方法を単純なものにする。この通信プロトコルは、大きな利用メモリ空間が与えられても、多数のリソース入出力と格納位置がそのメモリ空間にマッピングされるので、エミュレーションシステムを高度な拡張性を有するものにする。
【００８０】
従って、図５に戻って、ワークステーションは、リソースボード４４上のリソース４８と、トランザクションデバイス４９内のマイクロプロセッサと、ワークステーション４２の間のテストベンチの各部分をエミュレートするためにリソースを割り振るための大きな自由度を有する。ＦＰＧＡのようなハードウェアリソースは、ローレベルでエミュレートされることを必要とするＤＵＴの各部分をエミュレートすることができる。
【００８１】
ワークステーション４２で稼動しているソフトウェア又はネットワーク４６を介して接続された他のコンピュータで稼動しているソフトウェアは、高レベルエミュレーションのみが必要な埋め込み型プロセッサやメモリや他の多数のよく試験されているＩＰセルのようなＤＵＴ３６の各部分をエミュレートすることが可能である。ワークステーション４２又は他のコンピュータで稼動しているジェネレータ３４のソフトウェア又はモニタ３７のソフトウェアも、試験信号を供給するか又はワークステーション４２又は他のコンピュータで稼動している他のソフトウェアによってエミュレートされているＤＵＴの各部分の出力信号をモニタして、テストベンチの各部分をエミュレートすることが可能である。トランザクションデバイス４４によって構築されたジェネレータ３４とモニタ３７は、試験信号を供給するか又はローカルリソース４８によってエミュレートされているＤＵＴの各部分の出力信号をモニタするテストベンチの各部分をエミュレートすることが可能である。いずれかのジェネレータ３４又はモニタ３７は、遠隔のリソースの試験信号入力を制御するか、又は、そのモニタ出力信号を制御することも可能である。
【００８２】
テストベンチの各部分をエミュレートするために、工程１１０でどのようにしてシステムリソースを割り振るのかを決定した後で、ワークステーションが合成処理を実行する（工程１１２）が、そこで、必要ならば、各リソースに対するテストベンチの各部分を該テストベンチの各部分が割り振られているエミュレーションリソースの性質に対して適切な形式に変形する。たとえば、テストベンチが一組のブール数式を使用してＦＰＧＡによってエミュレートされるべき特定のＤＵＴモジュールを記載しているとき、工程１１２での合成処理は、前記ブール数式を実行してその数式を回路の「ゲートレベル」記述に変形するが、そこでは、その回路が一組の相互接続されたゲートとＦＰＧＡ内で作動可能なタイプの他の構成部材によって構成される。
【００８３】
以下に詳述するように、そして、ワークステーション４２は、修正されたテストベンチを分析して、ＤＵＴ内の論理操作のタイミングを制御するためのクロック信号を特定し、更に、必要なときには、クロック信号のスキュー問題を回避するために、何れかのクロック信号ゲート論理のゲートレベル記述を修正する（工程１１４）。
【００８４】
また、以下に詳述するように、ワークステーション４２は、個々のリソースボードによってエミュレートされるＤＵＴの各部分の間でスキャンデータを搬送するのに必要な仮想の信号経路の数を最小にするために、必要に応じて、ＤＵＴに含まれることもあるスキャンチェインを再編成する（工程１１６）。
【００８５】
そして、ワークステーションは、プログラミングデータを含むパケットをプログラミングされるべきリソースを有するリソースボードのトランザクションデバイスに送って、エミュレーションに用いられるべきＦＰＧＡの全てと他のリソースをプログラミングする。ＦＰＧＡに対して、ワークステーションはＦＰＧＡ製造者が提供するＦＰＧＡプログラムライブラリを調べてテストベンチが記述する各種の論理ゲート配列をエミュレートするＦＰＧＡプログラムを生成する。ワークステーションがＤＵＴの一部をエミュレートすべき場合、ワークステーションは、工程１１８で、そのモジュールの部分のテストベンチ記述に関するプログラムに基づいて、プログラムを展開して、それがそのＤＵＴ構成部材をエミュレートすることを可能にする。ワークステーションは、それがＩＰ構成部材の開発者が提供するライブラリから各種のＩＰ構成部材のハイレベルな動作をエミュレートすることを可能にするプログラムを得ることができる。
【００８６】
工程１２０で、ワークステーションは、各リソースボードのトランザクションデバイス４９（図１参照）のための制御及びプログラミングデータを展開し、そのデータをパケットにより各トランザクションデバイス４９に伝送する。リソースボード上のリソース間の接続を制御するために、各トランザクションデバイスは、制御データの一部をレジスタ７９（図２参照）のような制御レジスタに書き込む。
【００８７】
パケットによって到着したプログラミングデータは、パケットによる各種データの伝送と処理、ローカルリソースとの通信又はトランザクションデバイス内のプログラムプロセッサへの通信に関して適切なインタフェース活動を実行するように、ジェネレータ又はモニタを構築する各トランザクションデバイス内のステートマシーンをプログラムするためにも使用される。
【００８８】
そして、ワークステーション４２は、工程１２２で、エミュレーション工程を始め、たとえば、トランザクションデバイスに信号を送るパケットを送信してエミュレートされたＤＵＴを最初のステートにリセットし、試験信号入力をエミュレーションリソースに供給し始め、更に、リソース出力信号処理を始める。エミュレーション処理が終了したとき、ワークステーションは容易にデバッグ処理を行い（工程１２４）、エミュレーション処理中の集めたプローブデータを利用者が分析できるようにする下記の「バリアブルレゾルーション（variable resolution）」デバッグソフトウェアを実行する。
【００８９】
クロック分析
それがエミュレートするＤＵＴと同様に、エミュレーションシステムは各種のクロック信号を用いて各種の論理構成部材のタイミングを調整する。クロック信号が２又はそれ以上の構成部材をクロック制御するときには、そのクロック信号の各エッジはほとんど時間差のないようにして各構成部材に到着するようにすべきである（スキューの問題）。図５のクロック分析及び論理変換工程１１４では、クロックスキュー問題を発見してそれを取り除く。
【００９０】
図６に示されたような例の場合、ＦＰＧＡは、同期式レジスタ転送論理を実効することができ、そこで、システムクロック信号ＣＬＫによってクロック制御されたラッチ１２４、１２６を介して論理ブロック１２２の入力と出力が関連付けられる。ＦＰＧＡにおいて、システムクロック信号は専用の一組のクロックバスのうちの一つを通ってラッチ１２４と１２６に配信され、各クロックバスはシステムクロック信号をＦＰＧＡのＩ／Ｏ端子からＦＰＧＡの全てのラッチに搬送するように設計されていて、ほとんど全くクロックスキューのないようにクロック制御されている。
【００９１】
しかし、図７に図示されているような、イネーブル信号ＥＮとシステムクロック信号ＣＬＫに応じてＡＮＤゲート１２８によってゲート通過させるクロック信号ＧＣＬＫによってラッチ１２４と１２６がクロック制御されるようなゲートクロック信号システムを取り扱えるようにうまく調整されているものではない。ゲート１２８がラッチ１２６よりもラッチ１２４に近いので、ＧＣＬＫ信号のエッジがラッチ１２６に到着する前にラッチ１２４に到着したＧＣＬＫ信号のエッジに応答して、論理ブロック１２２の出力信号Ｃがステートを変更する場合に、ＧＣＬＫ信号のスキューの問題が生じる。プレースメント・ルーティングツールがゲート通過されたクロック信号を有するＩＣのレイアウトを発生するとき、タイミング分析ソフトウェアは、そのレイアウトを分析してクロック信号のスキューを発見し必要に応じてクロック信号経路内にバッファを挿入しクロック信号経路の選択された分岐を通して遅延を調整しこれらの種類のスキューの問題を取り除く。しかし、図７の回路をＦＰＧＡがエミュレートとする場合、ＧＣＬＫ信号経路クロックの適切な分岐にバッファを挿入しても容易にクロックスキューの問題を取り除くことはできない。
【００９２】
しかし、ゲート通過したクロック信号が複数の論理ブロックをクロック制御しないように論理ブロックを改変するとクロックスキューの問題を取り除くことが可能となる。たとえば、図７の論理を図８に示すようなものに改変して、一つのＡＮＤゲートに代えて２つのＡＮＤゲート１２８と１２９であってそれぞれが個別にＣＬＫ信号をゲート通過させてラッチ１２４と１２６のうちの対応するもののためのゲート通過クロック信号を生成するものを提供することが可能である。ＣＬＫ信号はＦＰＧＡクロックバスのうちの一つを経由して双方のＡＮＤゲート１２８と１２９に送られて、ほとんどスキューのないことを示し、更に、ゲート１２８と１２９をエミュレートする同じデバイスが提供する対称性のある経路遅延はラッチ１２４と１２６がほとんどスキューを生じないようにしてクロック制御されることを確実にする。
【００９３】
スキャンチェインの再編成
図９に示すように、ＤＵＴは直列のモジュールＡ−Ｄ内に構築された一組のシフトレジスタ（スキャンレジスタ）を連結するスキャンバス１３０を有することがある。スキャンバス１３０は、たとえば、レジスタ間に接続され手、データを搬送するためのデータラインと、そのレジスタを通過するデータをクロック制御するためのクロックラインと、データのスキャンレジスタへの読み出し書き込み時にスキャンレジスタを有する回路に命じる一又はそれ以上の制御ラインブロックを有する。スキャンバスは、非常に多くのＤＵＴのＩ／Ｏ端子を使用することなく、外部回路が大量のデータをＤＵＴの各モジュールへ及びそこから移すことを可能にする。
【００９４】
エミュレートされたＤＵＴがスキャンバスを含んでいる場合、必ずしも、ＤＵＴの各モジュールをエミュレートするすべてのエミュレーションリソースが同じリソースボード上に存在している必要はない。たとえば、図１０に示すように、一のリソースボード１３２上のＦＰＧＡは、モジュールＡとＤをエミュレートできるが、一方、他のリソースボード１３３上のＦＰＧＡは、モジュールＢとＣをエミュレートできる。この割り振りに関して、スキャンバスは２つのリソースボード１３２と１３３の間に２つの仮想経路（一方はＡ−Ｂ経路を提供するが他方はＣ−Ｄ経路を提供する）を必要とする。２つのリソースボード間のパケットのトラフィックが、これらの経路をエミュレートする。スキャンバスを図１１に示すようにルートＡ−Ｄ−Ｃ−Ｂに従って構成すると、図１０に示されたようなルートＡ−Ｂ−Ｃ−Ｄよりもむしろ、２つのリソースボード間の仮想信号経路の数を一つに減少させることができる。このように、モジュール間のスキャンバス経路の数を減少するために、図５の工程１１６で、ワークステーション４２は、工程１１０で、それが展開したエミュレーションリソース割り振りプランを研究して、個々のエミュレーションリソース間のスキャンバス経路の数を減少できるようにモジュール間のスキャンバスルートを再編成する。ワークステーションは、また、テストベンチが記述しているテストベクトルであってスキャンチェイン再編成をさせるためにスキャンチェインへ及びスキャンチェインからデータを移すようなものを適正に再編成する。
【００９５】
ネットワークアーキテクチュア
図１のエミュレーションシステムのパケットルーティングネットワーク４６は、いろいろなシステム構成部材間において提供された仮想信号経路にとって必要なバンド幅条件に依存した様々な方法で構成される。たとえば、図１１に示すように、エミュレーションシステムがワークステーション４２と単独のリソースボード４４のみを有する場合、それらは単独のバス４６Ａによって直接相互接続される。図１３に示すように、エミュレーションシステムが複数のリソースボード４４を有する場合、それらは、ネットワークハブ４３と、各リソースボードとハブ４３を連結しているバス４６Ａ−４６Ｄを介して、互いに通信すると共にワークステーション４２とも通信する。ハブ４３は、パケットを該パケットの宛先アドレスによってアドレス指定されるリソースを有するリソースボードにのみ通過させるインテリジェトルーティングハブとすることも可能であり、それによって、システムの他の部分への不必要なパケットトラフィックを回避する。各リソースボード４４が２つのバスポートを有する場合、別のバス４４Ｅと４４Ｆが、図１４に示されたような各対のリソースボードの第２のポート同士を直接相互接続して、それらの間に大バンド幅のパケットトラフィックを可能にする。図１５は、リソースボード４４の各ポートを相互に接続するために２つのルーティングハブ４３Ａと４３Ｂを用いたバス配設例を図示している。
【００９６】
フルバージョンのデバッグモード
エミュレーション処理の目的は、その入力に加えられた試験信号に応答してＤＵＴが生成した各種の信号の経時的に変化する挙動を表す「プローブデータ」を収集することである。図５の工程１２７で、ワークステーション上で稼動するデバッグソフトウェアは、設計者がエミュレーション処理中に収集したそのプローブデータを分析することに寄与して、エミュレートされたＤＵＴが予想通りに動作したのか否かを判定し、予想通りでない場合には、ＤＵＴ設計に関して正常でないものと判定する。本発明のエミュレーションシステムにおいて、トランザクションデバイス４９が構築するモニタ３７（図１６参照）は、トランザクター３５への読み出し要求によってプローブデータを獲得でき、また、ローカルのＲＡＭ８１内のそれらの信号のステートを表すプローブデータを格納することができる。エミュレーションの後で、ワークステーション上で稼動するデバッグソフトウェアはシステムは、トランザクションデバイス４９に要求して分析することができるようにＲＡＭ８１のプローブデータコンテンツをパケットによってワークステーションに送る。エミュレーション中にＲＡＭ８１にプローブデータを記憶することは、ネットワーク４６のパケットトラフィックを減少するのに役立つし、そして、エミュレーションを高周波数で遂行することを可能にする。
【００９７】
本発明のエミュレータは「フルバージョン」モードで動作することができるが、そこでは、各トランザクションデバイス４９（図１参照）が、ＤＵＴ信号がステート変更することがある各システムクロック中において、全てのモニタされたＤＵＴ信号のプローブデータを獲得する。フルバージョンモードは、サイクル毎にワークステーション４２がエミュレータ動作をデバッグすることを可能にする。しかし、リソースボードのモニタ３７は、フルバージョンモードのエミュレーション中において、非常に大量のプローブデータを得ることができ、そして、エミュレーション処理の終了までに、収集されたプローブデータの量がＲＡＭ８１内に記憶するのにあまりにも多いときは、トランザクションデバイスは、エミュレーション処理中にパケットによってプローブデータのブロックをローカルＲＡＭ８１からワークステーションに送って、ワークステーションがそれを、たとえば、ハードディスクに記憶しなければならない。ネットワーク上のバンド幅制限に応じて、ＤＵＴ出力信号のステート変更の速さを制御して、リソースボードが獲得しなくてはならない速度を制限しパケットによってワークステーションにプローブデータを送るシステムクロックの周波数を大幅に下げる必要があるかも知れない。それとは別に、プローブデータをワークステーションに送っている間にエミュレーション処理を停止する必要があるかも知れない。このように、フルバージョンの動作モードは、特に多くのＤＵＴ信号がモニタされている場合に、エミュレーション処理を非常に低速にしてしまうことがある。このことは、リアルタイムエミュレーションが好適なインサーキットエミュレーションの場合には、問題である。
【００９８】
サイクル駆動のバリアブルレゾリューションデバッグモード
本発明のエミュレーションシステムは、バリアブルレゾリューションデバッグモードで別途動作することによって、上記のフルバージョンモード動作に関連するプローブデータのオーバーロード問題を解決する。そのバリアブルレゾリューションデバッグモードでは、ワークステーションが各リソースボードのトランザクションデバイス４９に命じて、モニタ３７（図１６参照）がプローブデータを収集しているときにマルチプレクサ８０が制御用のクロック信号を選択するように設定するが、そのクロック信号はエミュレートされたＤＵＴの出力信号においてクロックがステート変更するシステムクロック信号よりも低周波数である。モニタ３７は、システムクロック信号のＮサイクル毎に一度だけ各モニタされたＤＵＴ信号のステートを表すプローブデータを獲得する（ここで、Ｎは、たとえば、１００００００のような当初非常に大きな数である）。従って、バリアブルレゾリューションデバッグモードでの動作時、モニタ３７は、通常のレゾルーションモードでの作動時に得られるプローブデータの１／Ｎの量だけしか得られない。しかし、バリアブルレゾリューションデバッグモードでモニタ３７が得たプローブデータは、Ｎ番目のシステムクロックサイクル毎にのみそのステートを描き出す、それぞれモニタされたＤＵＴ信号の「低解像度」の画面のみを形成する。
【００９９】
デバッグソフトウェアを使用して低解像度のプローブデータを検討した後で、利用者は、プローブデータがメモリリソースをオーバーロードしない程十分に短いエミュレーション処理の同じ部分の間でＤＵＴ信号のより高解像度の画面（たとえば、Ｎ＝１００００００に代わってＮ＝１０００）を有したいと思う場合があるかも知れない。そして、利用者は、エミュレーションシステムに命じて、Ｎを１００００００から１０００に代えて、エミュレーション処理のその特定期間を繰り返す。処理終了時において、利用者は、デバッグソフトウェアを使用してエミュレーションのその期間の高解像度のプローブデータを分析することができる。その後、利用者が、エミュレーション処理の非常に短期部分において、「フルバージョン」の解像度（たとえば、Ｎ＝１）でプローブデータを見てみたい場合には、利用者は、エミュレーションシステムに命じて、Ｎを１にして、エミュレーション処理のその非常に短い部分を繰り返す。
【０１００】
対象となる短い期間中にエミュレーション処理を繰り返すためには、エミュレータがエミュレーションリソースを問題の期間の始めにおいて有していたステートに設定することができなければならない。これを行う一つの方法は、エミュレーション処理が問題の期間に達するまでプローブデータを収集しない程度にプローブデータ収集を抑制してエミュレーション処理を始めから再スタートすることである。そして、エミュレータは、Ｎを適切な数値にして、問題の期間の始めにおいてプローブデータの収集を開始し、更に、問題の期間の終わりにおいてエミュレーション処理を停止する。しかし、この方法は、問題の期間がエミュレーション処理の末期に現れた場合には、時間を消費する。
【０１０１】
エミュレータをリセットして以前のエミュレーション処理において問題の期間の始めにそれが有していたステートにする他の方法は、それを直接にそのステートの駆動することである。多くのＦＰＧＡが「読み出し」コマンドに応答して、全てのクロックデバイスの出力信号のステートを表す出力「プローブバス」に関するデータシーケンスを発生し、そして、「書き込み」コマンドに応答して、その内部クロックデバイスの全ての出力信号をそのプローブバスを介して供給されたデータシーケンスによって指定されたステートに設定することができる。
【０１０２】
図１及び２に言及して、バリアブルレゾリューションデバッグモードで動作するとき、ローカルバスコントローラ７４は、ワークステーション４２から入力されるパケット内の読み出しコマンドのブロックに応答して、パケットがアドレス指定するＦＰＧＡ  Ｆ１−Ｆ８のうちの何れか一つに、プローブバス７１を経由して、各内部クロックデバイス（ラッチ又はフリップフロップ）に現れた信号のステートを示すデータのブロックをメモリコントローラに戻すように信号で知らせる。従って、そのデータのブロックは、ＦＰＧＡのステートの「スナップショット」として作動する。エミュレーション処理に含まれている各ＦＰＧＡのためのエミュレーション処理の最中にいくつかのポイントでブロック書き込み操作を開始するとき、エミュレーション処理の最後でＲＡＭ８１はいくつか組のスナップショットデータであって、各組のデータがエミュレーション処理中の個々の時におけるＦＰＧＡのステートを表しているものを記憶する。
【０１０３】
その後、デバッグ処理中に、特定のスナップショットが得られてＲＡＭに記憶されたエミュレーションのある時点で始まるエミュレーション処理を再開することが有効であると利用者が判断したときには、ワークステーション４２はブロック書き込みコマンドを含むパケットをメモリコントローラ８３に送って、ＲＡＭ８１から問題の開始時点に対応するスナップショットデータを読み出してそのスナップショットデータをＦＰＧＡに書き戻してそれらのステートをスナップショットデータが当初必要であったときに有していたステートに戻すように命じる。ワークステーションは、また、制御データをローカルバスコントローラ７４に送って、プローブデータを頻繁に獲得するように設定する。そして、エミュレーション処理は、再びその問題の時点で開始する。
【０１０４】
この「ステート復旧」処理方法を利用するためには、システムは、問題のエミュレーション期間の始めにおいて、単にＦＰＧＡだけでなく、全てのエミュレーションリソースをそれらの適正なステートに設定しなければならない。エミュレーションシステムがＦＰＧＡステートデータを保存するときにはいつでもそれがエミュレーション処理中に用いた他のリソースのステートを示すステートデータを保存する必要があるかも知れない。たとえば、メモリがＤＵＴの一部をエミュレートするときには、エミュレータはワークステーションのハードディスクにメモリの現状のコンテンツを保存して、問題のエミュレーション期間を繰り返す前にそれをメモリに書き戻すようにすることが可能である。ワークステーションで稼動するソフトウェアがＤＵＴの一部をエミュレートするときには、そのソフトウェアはプログラム実行時のステートを復旧をするために必要ないかなるデータも保存すべきである。従って、現状の動作ステートが保存されて復旧されるＦＰＧＡと他のデバイスがＤＵＴの全ての部分をエミュレートするときには、このステート復旧処理方法は適切であるが、しかし、ステートデータが迅速且つ都合よく保存されていないデバイスが、又は、そのようなデータによって定義されたステートに復旧できないデバイスがＤＵＴの各部分をエミュレートするときには、このステート復旧処理方法は適切ではない。
【０１０５】
イベント駆動のバリアブルレゾリューションデバッグモード
この「イベント駆動」のバリアブルレゾリューションデバッグモードにおいては、ローカルマイクロコンピュータ７０（図２参照）で稼動するローカルモニタ３７（図１６参照）がリソース出力をモニタし、更に、それがトリガイベントを検出したときに割り込みを発生する。割り込みに連結するトリガイベントは、たとえば、特定のＤＵＴ出力信号のアサートすることであり、若しくは、そのアサートパターンであり、又は、一組のＤＵＴ出力信号内での特定パターンの出現である。モニタ３７は、既に行った試験サイクル数のカウントを維持することも可能であるし、ある試験サイクル中においてのみトリガイベントに応答することも可能である。
【０１０６】
割り込みは、マイクロプロセッサ７０（又は、イベント処理用ハードウェアローカルコントローラ５０が行う）が、ローカルコントローラ５０にＤＵＴの論理動作を制御するシステムクロックを一時的に停止してエミュレーションリソース４８の現状のステートを表すデータをＲＡＭ８１内に保存するスナップショット動作を開始すると共に現状の試験サイクルカウントを示すデータも保存するように信号で知らせる割り込みルーティンを実行するようにする。マイクロプロセッサ７０は、また、他のリソースボード４４のトランザクションデバイス４９とスナップショットデータを保存するようにそれらに命じたワークステーション４２に、割り込みを伝搬するパケットを送ることもできる。スナップショットデータの保存後、システムクロックが再開始してエミュレーション処理を再開する。このように割り込みデバッグモードは、サイクル駆動のバリアブルレゾリューションデバッグモードにおけるように周期的に生じると言うよりもむしろエミュレーション中に生じたトリガイベントに応じてスナップショットを収集することを可能にする。
【０１０７】
他の割り込み利用
割り込みは、たとえば、ある種の偶発的な行為が発生しているときにエミュレーション処理を一時的に停止するために使用されることが可能である。割り込みは、プローブ又はスナップショットデータＲＡＭ８１からワークステーションに送られているときにエミュレーション処理を停止するために使用されることが可能である。言い換えれば、たとえば、テストベンチは以下のようなステートメントを含むことができる。即ち、
If sync true('enable'==1) @clk then print b
である。
【０１０８】
このステートメントは、「ｃｌｋ」と呼ばれるクロック信号がアサートされているときに「ｅｎａｂｌｅ」と呼ばれる信号が真である場合、「ｂ」と呼ばれる信号の現状の値をプリンタで印刷されるべきであることと言っている。この種のステートメントは、プリンタにアクセスしたワークステーションのようなコンピュータによって実行されることを意図するものである。しかし。信号「ｃｌｋ」と「ｅｎａｂｌｅ」と「ｂ」がローカルのリソースボードで生成されモニタされた場合、このステートメントをワークステーションに実行させることはエミュレーション処理を遅くすることがあり得る。この問題を解決するために、プリンタで信号「ｂ」の値を印刷する代わりにそれをＲＡＭ８１に書き込む間に割り込みを発生することで信号伝達が上昇したときに信号が発生されたマイクロプロセッサ７０によって構築されたモニタ３７は、割り込みを発生するようにプログラミングされる。
【０１０９】
各ＦＰＧＡ  Ｆ１−Ｆ８は、ローカルバスコントローラ７４がマイクロプロセッサ７０に送って所望の機能のみを実施するための割り込みルーティンを開始させる２つまでの割り込み出力１０１を生成することができる。
【０１１０】
このように、一又はそれ以上のコンピュータとＤＵＴのエミュレート部分に適合するエミュレーションリソースを内蔵する一又はそれ以上のリソースボードを有する、電子機器（ＤＵＴ）の動作をエミュレートする装置を例示し説明してきた。各リソースボードは、パケットルーティングネットワークを通じて伝送されてきたデータパケットによって、互いに通信するため、そして、コンピュータネットワークとも通信するためのトランザクションデバイスを有する。パケットルーティングネットワークと各リソースボードのトランザクションデバイスは、個々のリソースボードの載置されたリソースの入力と出力の間に仮想の信号経路を提供して、信号ステートを表すデータを含むパケットをリソースボード間で搬送する。ワークステーションがＤＵＴの一部をエミュレートすべきときには、パケットルーティングネットワークはコンピュータとリソースボード間に仮想信号経路を提供する。ワークステーションであるコンピュータは、パケットルーティングネットワークを介してプログラミングデータをエミュレーションリソースに伝送する。
【０１１１】
上記のようにこの明細書と図面で本発明の最良の実施の形態を詳細に説明してきたが、その最良の実施の形態の構成要素と工程は、特許請求の範囲に記載された発明の構成要素と工程を例示するものである。しかしながら、特許請求の範囲の記載は、必ずしも上記の発明の実施の形態に限られるものではない。特許請求の記載は、明細書と図面に記載された発明の実施の形態の例示された構成要素又は工程と機能的に均等である構成要素又は工程を含み、その特許請求の範囲のいずれかの請求項に記載された構成要素又は工程の組み合わせからなる発明の実施の形態にも適用されることを意図するものである。
【産業上の利用可能性】
【０１１２】
上述したように、本発明の方法等は、電子機器の動作をエミュレーションするためのエミュレーションシステムに利用される。
【図面の簡単な説明】
【０１１３】
【図１】本発明のネットワークベースのエミュレーションシステムの一例を示すブロック図である。
【図２】図１のエミュレーションシステムのリソースボードの一例を示すより詳細なブロック図である。
【図３】従来の代表的な「システムオンチップ」集積回路のブロック図である。
【図４】どのようにしてエミュレーションリソースが図３のＩＣモジュールに対し割り当てられるかを示す、本発明のエミュレーションシステムによって生成されたディスプレイを示す略図である。
【図５】図１のエミュレーションシステムのワークステーションによって実行される各工程を示すプロセスフローチャートである。
【図６】フィールドプログラマブルゲートアレイ（ＦＰＧＡ）がエミュレート可能なクロック制御論理回路のブロック図である。
【図７】フィールドプログラマブルゲートアレイ（ＦＰＧＡ）がエミュレート可能なクロック制御論理回路のブロック図である。
【図８】フィールドプログラマブルゲートアレイ（ＦＰＧＡ）がエミュレート可能なクロック制御論理回路のブロック図である。
【図９】スキャンバスにより相互接続されスキャンチェインを構成する一組のＦＰＧＡのブロック図である。
【図１０】スキャンバスにより相互接続されスキャンチェインを構成する一組のＦＰＧＡのブロック図である。
【図１１】スキャンバスにより相互接続されスキャンチェインを構成する一組のＦＰＧＡのブロック図である。
【図１２】ワークステーションとエミュレーションシステムの一組のリソースボードの間に通信路を提供するネットワーク構成のブロック図である。
【図１３】ワークステーションとエミュレーションシステムの一組のリソースボードの間に通信路を提供するネットワーク構成のブロック図である。
【図１４】ワークステーションとエミュレーションシステムの一組のリソースボードの間に通信路を提供するネットワーク構成のブロック図である。
【図１５】ワークステーションとエミュレーションシステムの一組のリソースボードの間に通信路を提供するネットワーク構成のブロック図である。
【図１６】テストベンチをエミュレーションするときに、本発明のエミュレーションシステムがどのようにしてそのワークステーションと他のリソースを割り付けるかを示すブロック図である。
【図１７】従来のエミュレーションシステムのブロック図である。
【図１８】従来のエミュレーションシステムのブロック図である。
【図１９】テストベンチをエミュレーションするときに、従来のエミュレーションシステムがどのようにしてワークステーションとエミュレーションリソースを用いるかを示すブロック図である。
【符号の説明】
【０１１４】
３４…ジェネレータ、３５，３８…トランザクター、３６…ＤＵＴ、３７…モニタ、４２…ワークステーション、４４…リソースボード、４６…パケットルーティングネットワーク、４８…エミュレーションリソース、４９…トランザクションデバイス、５０…リソースコントローラ、５１…外部システム、５２…Ｉ／Ｏブロック、５４，５５…トランシーバー、６８…リンクレイヤコントローラ、７０…マイクロプロセッサ、７４…ローカルバスコントローラ、７９…レジスタ、８０…マルチプレクサ、８３…メモリコントローラ
【図１】
2005011344.tif 000003
【図２】
2005011344.tif 000004
【図３】
2005011344.tif 000005
【図４】
2005011344.tif 000006
【図５】
2005011344.tif 000007
【図６】
2005011344.tif 000008
【図７】
2005011344.tif 000009
【図８】
2005011344.tif 000010
【図９】
2005011344.tif 000011
【図１０】
2005011344.tif 000012
【図１１】
2005011344.tif 000013
【図１２】
2005011344.tif 000014
【図１３】
2005011344.tif 000015
【図１４】
2005011344.tif 000016
【図１５】
2005011344.tif 000017
【図１６】
2005011344.tif 000018
【図１７】
2005011344.tif 000019
【図１８】
2005011344.tif 000020
【図１９】
2005011344.tif 000021