(57)【特許請求の範囲】
【請求項１】
回路設計をシミュレートすること、または前記回路設計をエミュレートすることによって生成された１組の信号についての波形データを取り込むステップと、
前記１組の信号について、コンピュータシステムのメモリ回路にデータ構造を生成し、前記信号についての波形データを前記データ構造に格納するステップと、
前記コンピュータシステムのプロセッサ回路によって、前記回路設計に含まれるメタデータに基づいて、前記１組の信号に関連付けられた通信チャネルを識別するステップと、
１つ以上の通信チャネルについての１組のトランザクションレベルイベントの位置を突き止めるために、前記データ構造に格納された波形データを分析するステップと、
前記１組のトランザクションレベルイベントの位置を示すデータを出力するステップと、
前記１組のトランザクションレベルイベントに基づいて、前記回路設計における複数の回路モジュールについての１組の性能メトリックを判断するステップと、
前記回路モジュールについての前記１組の性能メトリックを、ユーザインターフェイスを介して表示するステップとを含む、方法。
【請求項２】
ユーザクエリによって指定された１組の基準について前記１組のトランザクションレベルイベントをサーチするように構成された拡張可能アプリケーションプログラムインターフェイス（ＡＰＩ）を提供するステップをさらに含む、請求項１に記載の方法。
【請求項３】
ユーザインターフェイスを介して入力されたユーザクエリに応答して、前記ユーザクエリによって指定された１組の基準に整合する前記１組の信号の一部を、前記データ構造に基づいて、前記拡張可能ＡＰＩを使用して識別するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記分析するステップは、
前記回路設計に含まれるメタデータ、前記回路設計における信号の名前、またはそれらの組合せに基づいて、識別された前記通信チャネルによって実現されるプロトコルを識別するステップと、
識別された前記プロトコルについてのアプリケーションプログラムインターフェイス（ＡＰＩ）を提供するステップとを含み、前記ＡＰＩは、前記１組の信号についての前記データ構造から、前記プロトコルについてのトランザクションレベルイベントを識別するように構成され、さらに、
識別された前記プロトコルのうちの１つを実現する通信チャネルについて、前記通信チャネルについてのトランザクションレベルイベントを判断するために前記プロトコルについて提供された前記ＡＰＩを実行するステップを含む、請求項１に記載の方法。
【請求項５】
前記プロトコルについての前記ＡＰＩを提供するステップは、前記プロトコルについての前記ＡＰＩをＡＰＩライブラリから検索するステップを含む、請求項４に記載の方法。
【請求項６】
前記通信チャネルのうちの少なくとも１つは、前記１組の信号における複数の信号に関連付けられ、
前記通信チャネルについての前記トランザクションレベルイベントは、データトランザクション、前記回路設計に含まれるプロセッサによって実行されるプログラムの命令、またはそれらの組合せを含む、請求項４に記載の方法。
【請求項７】
識別されたトランザクションのうちの少なくとも１つのトランザクションについて、識別された前記プロトコルのうちの異なるプロトコルを実現する前記通信チャネルのうちの２つの通信チャネル間のインターフェイスを越えて、前記１つのトランザクションを追跡するステップをさらに含み、
前記少なくとも１つのトランザクションを追跡するステップは、前記回路設計におけるメタデータに基づいて行なわれる、請求項４に記載の方法。
【請求項８】
少なくとも１つの通信チャネルについて、前記通信チャネルについて判断された前記トランザクションレベルイベントは、第１のプロトコルについての第１の１組のトランザクションを含み、
前記方法は、前記第１の１組のトランザクションから、第２のプロトコルについての第２の１組のトランザクションを識別するステップをさらに含み、前記第２のプロトコルは、前記第１のプロトコルと比較して、より高いレベルのプロトコルである、請求項１に記載の方法。
【請求項９】
前記第２のプロトコルは、ビデオフレーム、ネットワーキングパケット、またはＣＰＵ命令の通信のために構成される、請求項８に記載の方法。
【請求項１０】
前記１組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含む、請求項１に記載の方法。
【請求項１１】
少なくとも１つの性能メトリックについて、ユーザによって指定された期間にわたる前記性能メトリックの最小値、最大値、および平均値を求めるステップをさらに含む、請求項１に記載の方法。
【請求項１２】
グラフィカルユーザインターフェイス（ＧＵＩ）ウィンドウにおいて、
前記１組の信号についての波形の図形表現と、
前記波形における前記トランザクションレベルイベントを識別する可視マーカーと、
１つ以上の検出されたプロトコル違反の位置およびタイプを識別する可視マーカーとを表示するステップをさらに含む、請求項１に記載の方法。
【請求項１３】
前記回路設計の動作をシミュレートするステップをさらに含む、請求項１に記載の方法。
【請求項１４】
前記回路設計を実現するようにプログラマブル集積回路（ＩＣ）のプログラマブルリソースを構成するステップと、
前記プログラマブルＩＣ上で統合ロジックアナライザを使用し、前記波形データを取り込み、前記波形データを前記コンピュータシステムへ通信するステップとをさらに含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は一般に、ロジック回路を試験することに関し、より特定的には、回路設計をデバッグすることに関する。
【背景技術】
【０００２】
背景
プログラマブル集積回路（integrated circuit：ＩＣ）は、指定されたロジック機能を行なうようにユーザによってプログラムされ得る。フィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）として知られている一種のプログラマブルＩＣは典型的には、プログラマブル相互接続部とプログラマブルロジックとを有するプログラマブルタイルのアレイに配置されたプログラマブルリソースを含む。プログラマブル相互接続部は典型的には、プログラマブル相互接続点（programmable interconnect point：ＰＩＰ）によって相互接続されたさまざまな長さの多数の相互接続線を含む。プログラマブルロジックは、たとえば関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を使用して、回路設計のロジックを実現する。プログラマブル相互接続部およびプログラマブルロジックは典型的には、プログラマブル素子がどのように構成されるかを定義する内部構成メモリセルに構成データのストリームをロードすることによって、プログラムされる。構成データは、外部デバイスによって、メモリから（たとえば外部ＰＲＯＭから）読出され、またはＦＰＧＡに書込まれ得る。個々のメモリセルの集団状態が次に、ＦＰＧＡの機能を決定する。
【０００３】
回路設計を開発する過程で、当該回路設計は一般に、物理的な実装およびデプロイメントに先立って、動作および性能を査定するために試験される。回路設計の試験は、当該回路設計の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）実現化例における回路モジュールの動作を観察すること、ソフトウェアベースのシミュレーションモデルを使用して回路モジュールをシミュレートすること、または、プログラマブルＩＣ上で回路モジュールをエミュレートすることを伴う場合がある。回路設計をエミュレートする際、プログラマブルＩＣ上のプログラマブルリソースは、当該回路設計を実現するように構成される。いくつかの実現化例では、回路設計の動作は、ＡＳＩＣによって実現された回路モジュールのシミュレーション、エミュレーション、および／または動作の組合せを使用してモデル化されてもよい。一例として、回路設計の第１の回路モジュールが、当該回路設計の第２の回路モジュールのエミュレーションと同時にシミュレートされてもよい。試験中、試験データが、回路設計のシミュレートされた／エミュレートされた／ＡＳＩＣによって実現された回路モジュールに提供され、データ信号が、回路設計のさまざまなノードから取り込まれる。データ信号は、回路設計のシミュレーションモデルを実行するように構成されたソフトウェアデバッギングツールによって、シミュレートされた回路設計へ入力され、当該回路設計から取り込まれてもよい。データは、たとえばプログラマブルＩＣまたはＡＳＩＣダイに含まれるか接続された統合ロジックアナライザ回路を含むさまざまな回路を使用して、プログラマブルＩＣ上でエミュレートされた、またはＡＳＩＣとして実現された回路設計へ入力され、当該回路設計から取り込まれてもよい。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
さまざまな例示的な実現化例が、回路設計をデバッグすることに向けられる。例示的な一実現化例によれば、回路設計をデバッグするための方法が開示される。動作中に回路設計によって生成された１組の信号について、波形データが取り込まれる。１組の信号について、それぞれのデータ構造が生成され、信号についての波形データがデータ構造に格納される。１組の信号によって実現される通信チャネルが識別される。データ構造に格納された波形データは、１つ以上の通信チャネルについての１組の信号におけるトランザクションレベルイベントの位置を突き止めるために分析される。１組のトランザクションレベルイベントの位置を示すデータが出力される。
【０００５】
オプションで、方法はさらに、ユーザクエリによって指定された１組の基準について１組のトランザクションレベルイベントをサーチするように構成された拡張可能アプリケーションプログラムインターフェイス（application program interface：ＡＰＩ）を提供するステップを含んでいてもよい。
【０００６】
オプションで、方法はさらに、ユーザインターフェイスを介して入力されたユーザクエリに応答して、ユーザクエリによって指定された１組の基準に整合する１組の信号の一部を、データ構造に基づいて、拡張可能ＡＰＩを使用して識別するステップを含んでいてもよい。
【０００７】
オプションで、１組のトランザクションレベルイベントを識別するステップは、回路設計に含まれるメタデータ、回路設計における信号の名前、またはそれらの組合せに基づいて、識別された通信チャネルによって実現されるプロトコルを識別するステップを含んでいてもよい。識別されたプロトコルについて、アプリケーションプログラムインターフェイス（ＡＰＩ）が提供されてもよく、ＡＰＩは、１組の信号についてのデータ構造から、プロトコルについてのトランザクションレベルイベントを識別するように構成される。識別されたプロトコルのうちの１つを実現する通信チャネルについて、当該通信チャネルについてのトランザクションレベルイベントを判断するためにプロトコルについて提供されたＡＰＩが、実行されてもよい。
【０００８】
オプションで、プロトコルについてのＡＰＩを提供するステップは、プロトコルについてのＡＰＩをＡＰＩライブラリから検索するステップを含んでいてもよい。
【０００９】
オプションで、通信チャネルのうちの少なくとも１つは、１組の信号における複数の信号に関連付けられてもよく、通信チャネルについてのトランザクションレベルイベントは、データトランザクション、回路設計に含まれるプロセッサによって実行されるプログラムの命令、またはそれらの組合せを含んでいてもよい。
【００１０】
オプションで、方法はさらに、識別されたトランザクションのうちの少なくとも１つのトランザクションについて、識別されたプロトコルのうちの異なるプロトコルを実現する通信チャネルのうちの２つの通信チャネル間のインターフェイスを越えて、当該１つのトランザクションを追跡するステップを含んでいてもよい。少なくとも１つのトランザクションを追跡するステップは、回路設計におけるメタデータに基づいて行なわれてもよい。
【００１１】
オプションで、少なくとも１つの通信チャネルについて、当該通信チャネルについて判断されたトランザクションレベルイベントは、第１のプロトコルについての第１の１組のトランザクションを含んでいてもよい。方法はさらに、第１の１組のトランザクションから、第２のプロトコルについての第２の１組のトランザクションを識別するステップを含んでいてもよく、第２のプロトコルは、第１のプロトコルと比較して、より高いレベルのプロトコルである。
【００１２】
オプションで、第２のプロトコルは、ビデオフレーム、ネットワーキングパケット、またはＣＰＵ命令の通信のために構成されてもよい。
【００１３】
オプションで、方法はさらに、１組のトランザクションレベルイベントに基づいて、回路設計における複数の回路モジュールについての１組の性能メトリックを判断するステップを含んでいてもよい。回路モジュールについての１組の性能メトリックは、ユーザインターフェイスを介して表示されてもよい。
【００１４】
オプションで、１組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含んでいてもよい。
【００１５】
オプションで、方法はさらに、少なくとも１つの性能メトリックについて、ユーザによって指定された期間にわたる当該性能メトリックの最小値、最大値、および平均値を求めるステップを含んでいてもよい。
【００１６】
オプションで、方法はさらに、グラフィカルユーザインターフェイス（graphical user interface：ＧＵＩ）ウィンドウにおいて、１組の信号についての波形の図形表現と、当該波形におけるトランザクションレベルイベントを識別する可視マーカーと、１つ以上の検出されたプロトコル違反の位置およびタイプを識別する可視マーカーとを表示するステップを含んでいてもよい。
【００１７】
オプションで、方法はさらに、回路設計の動作をシミュレートするステップを含んでいてもよい。
【００１８】
オプションで、方法はさらに、回路設計を実現するようにプログラマブル集積回路（ＩＣ）のプログラマブルリソースを構成するステップと、プログラマブルＩＣ上で統合ロジックアナライザを使用し、波形データを取り込み、波形データをコンピュータシステムへ通信するステップとを含んでいてもよい。
【００１９】
例示的な一実現化例によれば、回路設計をデバッグするための装置が開示される。装置は、１つ以上のプロセッサ回路と、プロセッサ回路に結合されたメモリ回路とを含む、コンピューティング構成を含む。１組の命令がメモリ回路に格納される。命令は、プロセッサ回路によって実行されると、動作中に回路設計によって生成された１組の信号についての波形データを取り込み、波形データをメモリに格納するように、プロセッサ回路を構成する。プロセッサ回路はさらに、波形データから、１組の信号についてのそれぞれのデータ構造を生成するように構成される。プロセッサ回路はまた、１組の信号によって実現される通信チャネルを識別するように構成される。通信チャネルの各々について、プロセッサ回路は、データ構造に基づいて、通信チャネルについての１組のトランザクションレベルイベントを識別する。プロセッサ回路は、１組のトランザクションレベルイベントを示すデータをメモリ回路に格納するように構成される。
【００２０】
オプションで、装置はさらに、コンピューティング構成に通信可能に結合されたプログラマブル集積回路（ＩＣ）を含んでいてもよい。１組の命令はさらに、１つ以上のプロセッサ回路に、回路設計を実現するようにプログラマブルＩＣのプログラマブルリソースをプログラムさせてもよい。
【００２１】
オプションで、１つ以上のプロセッサ回路によって通信チャネルについての１組のトランザクションレベルイベントを識別することは、回路設計に含まれるメタデータ、回路設計における信号の名前、またはそれらの組合せに基づいて、識別された通信チャネルによって実現されるプロトコルを識別することを含んでいてもよい。識別されたプロトコルについて、アプリケーションプログラムインターフェイス（ＡＰＩ）が提供されてもよく、ＡＰＩは、１組の信号についてのデータ構造から、プロトコルについてのトランザクションレベルイベントを識別するように構成される。識別されたプロトコルのうちの１つを実現する通信チャネルについて、当該通信チャネルについてのトランザクションレベルイベントを判断するためにプロトコルについて提供されたＡＰＩが、実行されてもよい。
【００２２】
オプションで、１組の命令はさらに、プロセッサに、識別されたトランザクションレベルイベントに基づいて、回路設計についての１組の性能メトリックを判断させてもよく、１組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含む。
【００２３】
オプションで、１組の命令はさらに、プロセッサにユーザインターフェイスを提供させてもよい。ユーザインターフェイスを介して入力されたユーザクエリに応答して、プロセッサは、ユーザクエリによって指定された１組の基準に整合する１組の信号の一部を、データ構造に基づいて識別し、拡張可能ＡＰＩを使用して、識別された部分の図形表現を表示してもよい。
【００２４】
他の特徴は、詳細な説明および請求項を検討すれば、認識されるであろう。
図面の簡単な説明
開示された方法および回路のさまざまな局面および特徴は、以下の詳細な説明を検討し、図面を参照することによって明らかとなるであろう。
【図面の簡単な説明】
【００２５】
【図１】回路設計をデバッグするための例示的なプロセスを示す図である。
【図２】トランザクションレベルイベントを識別するための例示的なプロセスを示す図である。
【図３】識別されたトランザクションレベルイベントに基づいた回路設計の分析のための例示的なプロセスを示す図である。
【図４】複数のプロトコル層についてトランザクションを識別するための例示的なプロセスを示す図である。
【図５】１つ以上の実施形態に従った、デバッギングツールを提供するように構成された例示的なコンピューティングデバイスを示す図である。
【図６】１つ以上の実現化例に従った、統合ロジックアナライザ回路を有する例示的なプログラマブルＩＣを示す図である。
【発明を実施するための形態】
【００２６】
詳細な説明
以下の説明では、多くの特定の詳細が、ここに提示される特定の例を説明するために述べられる。しかしながら、１つ以上の他の例および／またはこれらの例の変形が、以下に与えられる特定の詳細がすべてなくても実践されるということが、当業者には明らかであるはずである。他の例では、ここでの例の説明を不明瞭にしないように、周知の特徴は詳細には説明されていない。
【００２７】
デバッギングは、回路設計開発の欠くことのできない部分である。プログラマブルＩＣ上に実現される回路設計をデバッグすることは典型的には、回路設計のシミュレーションおよび／またはエミュレーションを介してプログラマブルＩＣの動作を試験することを伴う。回路設計をデバッグする際の１つの難点は、通信チャネル／インターフェイスの動作をデバッグして、当該動作が、たとえば通信チャネルまたはインターフェイスによって使用されるプロトコルのすべての要件に準拠することを保証することを伴う。いくつかの通信プロトコルは、通信チャネルを実現するために、多数のデータおよび制御信号を使用する。たとえば、高度拡張可能インターフェイス（Advanced Extensible Interface：ＡＸＩ）チャネルは、さまざまなクロック信号およびリセット信号、書込アドレス信号、書込データ信号、書込応答信号、読出アドレス信号、読出データ信号、および／または低電力インターフェイス信号によって形成される。現在、開発者らは、サンプリングされたデータ信号の波形を目視検査し、通信チャネルと、各通信チャネル上で行なわれたトランザクションレベルイベント（たとえば、データトランザクションまたはプロセッサ命令）とを手動で識別して、高レベルの動作を評価し、および／または、プロトコル違反が生じたかどうかを判断する。同様に、開発者らは、波形を目視検査して回路設計の性能を査定しなければならない。トランザクションの数が増加するにつれて、波形の目視検査はますます難しくなる。
【００２８】
トランザクションレベルでの回路設計のデバッギングのための方法および装置が開示される。回路設計の動作中に回路設計によって生成された１組の信号について、波形データが取り込まれる。１組の信号は、たとえば、ソフトウェアベースのシミュレーションモデルにおいて回路設計をシミュレートすること、および／またはプログラマブルＩＣ上で回路設計をエミュレートすることによって生成されてもよい。データ信号についての波形が、データ信号の１つ以上のアナログ特性（たとえば、電圧、位相、または振幅）を連続する時点でサンプリングすることによって取り込まれてもよい。１組の信号のうちの各信号について、それぞれのデータ構造が生成され、当該信号についての波形データがデータ構造に格納される。１組の信号によって実現される通信チャネルが識別される。データ構造に格納された波形データは、１つ以上の通信チャネルについてのデータ信号におけるトランザクションレベルイベントの位置を突き止めるために分析される。トランザクションレベルイベントは、たとえば、通信チャネル上の個々のデータトランザクション、プロセッサ回路によって実行される個々の命令、または、プログラマブルロジックにおいて実現されるハードウェア加速機能を含んでいてもよい。１組のトランザクションレベルイベントの位置を示すデータが出力される。
【００２９】
通信チャネルについてのトランザクションレベルイベントは、さまざまな分析プロセスを使用して位置を突き止められてもよい。いくつかの実現化例では、まず、通信チャネルによって実現されるプロトコルが識別される。プロトコルは、ＡＸＩ、周辺コンポーネント相互接続エクスプレス（Peripheral Component Interconnect Express：ＰＣＩｅ）、ユニバーサルシリアルバス（Universal Serial Bus：ＵＳＢ）、ＩＥＥＥ１３９４、および／またはシリアルアタッチドＳＣＳＩを含むものの、それらに限定されない。プロトコルは、たとえば、回路設計に含まれるメタデータ、回路設計における信号の名前、ユーザ入力、またはそれらの組合せに基づいて識別されてもよい。識別されたプロトコルの各々について、それぞれのアプリケーションプログラムインターフェイス（ＡＰＩ）が提供される。各ＡＰＩは、データ構造からプロトコルについてのトランザクションレベルイベントを識別するように構成される。通信プロトコルについてのＡＰＩは、たとえば、ＡＰＩをＡＰＩライブラリから検索することによって提供されてもよい。プロトコルを実現する通信チャネルの各々について、ＡＰＩは、通信チャネルについてのデータ信号におけるトランザクションレベルイベントの位置を突き止めるために実行される。
【００３０】
いくつかの実現化例では、デバッギングツールが、１組の取り込まれたデータ信号からトランザクションレベルイベントを識別するように構成される。デバッギングツールは、たとえば、グラフィカルユーザインターフェイス（ＧＵＩ）ウィンドウを介したユーザによる目視検査および／または分析のために、波形の図形表現を、波形におけるトランザクションレベルイベントを識別する可視マーカーとともに生成し表示するように構成されてもよい。トランザクションレベルイベントの図示が、ユーザによる波形の目視検査を支援してもよい。たとえば、可視マーカーは、通信チャネルを介して通信されるデータトランザクションの始点および終点を識別するために、通信チャネルについての波形に追加されてもよい。
【００３１】
別の例として、デバッギングツールは、異なるプロトコルを実現する複数のリンクした通信チャネルを越えてデータトランザクションを追跡してもよい。参照しやすくするために、異なるプロトコルを実現する通信チャネルを越えて通信されるデータトランザクションは、異種トランザクションと呼ばれてもよい。いくつかの実現化例では、デバッギングツールは、異種トランザクションを、表示された波形の図形表現で図形化する。たとえば、デバッギングツールは、ユーザによって選択された異種トランザクションに対応する表示された波形のすべての部分を強調表示してもよい。異種トランザクションは、さまざまなプロセスを使用して追跡されてもよい。いくつかの実現化例では、異種トランザクションは、たとえば異なるデータチャネル間のインターフェイス接続を示す、回路設計におけるメタデータに基づいて追跡されてもよい。
【００３２】
いくつかの実現化例では、デバッギングツールは、回路設計の動作を査定するためにトランザクションレベルイベントを分析するように構成されてもよい。たとえば、デバッギングツールは、１つ以上の通信プロトコルへの準拠について、取り込まれたデータ信号のうちの１つ以上を評価するように構成されてもよい。いくつかの実現化例では、デバッギングツールはまた、１つ以上の回路モジュールまたは取り込まれたデータ信号についてのプロトコル違反の図形表示を、ＧＵＩウィンドウを介して生成し表示してもよい。たとえば、表示される取り込まれたデータ信号の図形表現は、検出されたプロトコル違反の位置およびタイプを識別する可視マーカーで補足されてもよい。
【００３３】
これに加えて、またはこれに代えて、デバッギングツールは、回路設計のさまざまな性能メトリックを査定するために、トランザクションレベルイベントおよび／またはデータ構造を分析するように構成されてもよい。性能メトリックはたとえば、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、またはそれらの組合せを含んでいてもよい。
【００３４】
いくつかの実現化例では、デバッギングツールは、回路モジュールのうちの１つ以上についてのさまざまな性能メトリックを査定するために、取り込まれたデータ信号を分析するように構成される。性能メトリックはたとえば、スループット、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、１秒あたりの命令、１周期あたりの命令、キャッシュミス、またはそれらの組合せを含んでいてもよい。いくつかの実現化例では、デバッギングツールはさらに、指定された期間における、性能メトリックのうちの１つ以上についての最小値、最大値、平均値、および変化率を求めてもよい。デバッギングツールは、通信チャネルについての性能メトリックを、当該チャネルについての波形の図形表現と並べて、ＧＵＩウィンドウに表示するように構成されてもよい。
【００３５】
いくつかの実現化例では、デバッギングツールは、トランザクションレベルイベントをサーチするための拡張可能ＡＰＩを提供する。ＡＰＩは、それが、１組の予め規定されたサーチに加えて、トランザクションレベルイベントのカスタマイズされたクエリを行なうために、ユーザによって適合され得る、という点で拡張可能である。いくつかの実現化例では、デバッギングツールは、トランザクションレベルイベントのカスタマイズされたクエリのための拡張可能ＡＰＩを構成するために、ＧＵＩウィンドウをユーザに提供する。トランザクションレベルイベントのカスタマイズされたクエリは、試験中の回路設計に特に関心があるシナリオについて、ユーザがトランザクションレベルイベントを容易にサーチすることを可能にしてもよい。例示的な一例として、三重モジュール式冗長（triple modular redundancy：ＴＭＲ）回路を実現する回路設計のために、冗長回路が異なる結果を生み出すトランザクションを識別することを設計者が望む場合がある。デバッギングツールは、ＧＵＩウィンドウを介して入力されたクエリに整合するトランザクションレベルイベントに対応する波形の部分を強調表示するように構成されてもよい。
【００３６】
いくつかの実現化例では、デバッギングツールは、識別されたトランザクションレベルイベントから、１つ以上の上位層プロトコルについてのトランザクションを識別するように構成されてもよい。たとえば、下位層プロトコルについての多くの個々のデータトランザクションは、上位層プロトコルによって行なわれるより大きいデータトランザクションに対応してもよい。たとえば、トランザクションレベルイベントは、たとえばイーサネット（登録商標）パケット、ビデオストリームのフレーム、および／またはＣＰＵコールスタックに対応するトランザクションレベルイベントのサブセットへとグループ化されてもよい。
【００３７】
試験中の回路設計の動作中に生成されたさまざまな信号についての波形データが、さまざまなハードウェアまたはソフトウェアベースの監視インターフェイスを使用して取り込まれてもよい。監視インターフェイスは、たとえば、デバッギングツールによって実現されるソフトウェアプロセス、または、回路設計をエミュレートするために使用されるプログラマブルＩＣに含まれる監視回路（たとえば統合ロジックアナライザ）を含んでいてもよい。いくつかの実現化例では、監視回路は、プログラマブルＩＣに実装された、または結合されたハードワイヤード回路であってもよい。いくつかの他の実現化例では、監視回路は、回路設計においてインスタンス化され、エミュレート中の１つ以上の回路モジュールとともにプログラマブルＩＣのプログラマブルリソースに実装されてもよい。
【００３８】
いくつかのプログラマブルＩＣは、１組のプログラマブルリソースに結合されたプロセッサを含んでいてもよい。プログラマブルリソースは、回路設計のハードウェア部分を実現するように構成されてもよく、プロセッサは、回路設計のソフトウェア部分を実現するように構成されてもよい。いくつかの実現化例では、プロセッサは、回路設計の１組の信号についての波形データを取り込むようにプログラムされてもよい。
【００３９】
ここで図面を参照して、図１は、回路設計をデバッグするための例示的なプロセスを示す。ブロック１０２で、回路設計の動作がシミュレートおよび／またはエミュレートされる。シミュレーション／エミュレーション中、ブロック１０４で、回路設計のさまざまなノードで生成された１組のデータ信号についての波形が取り込まれ、波形ファイル１０６に格納される。いくつかの実現化例では、ブロック１０４でメタデータ１０８も検索されてもよい。メタデータ１０８は、たとえば、回路設計の回路モジュールまたはデータ信号のさまざまな特性を指定してもよい。メタデータは、たとえば、信号および／または回路モジュールの命名規則、回路モジュール間のネット接続、ならびに／もしくは、回路設計における回路モジュール用の構成設定に基づいて取得されてもよい。ブロック１１０で、波形ファイルが構文解析され、１組のデータ信号の各々についてそれぞれの波形データを格納するために、データ構造が生成される。ブロック１１４で、通信チャネルが識別される。ブロック１１４で、トランザクションレベルイベント１１６も、データ構造１１２、メタデータ１０８、またはそれらの組合せに基づいて、各通信チャネルについて識別される。通信チャネルおよびトランザクションレベルイベントの識別は、図２を参照してより詳細に説明される。ブロック１１８で、トランザクションレベルでの回路設計の性能およびまたは動作を査定するために、トランザクションレベルイベントが分析される。前述のように、分析は、たとえば、プロトコル違反を識別すること、異種トランザクションを追跡すること、１つ以上の性能メトリックを評価すること、または、トランザクションレベルイベント１１６のユーザ指定クエリを行なうことを含んでいてもよい。
【００４０】
図２は、トランザクションレベルイベントを識別するための例示的なプロセスを示す。ブロック２０２で、回路設計によって生成された１組のデータ信号において、通信チャネルが識別される。ブロック２０４で、通信チャネルに関連付けられたプロトコルが識別される。通信チャネルおよび／またはプロトコルは、たとえば、回路設計に含まれるメタデータに基づいて識別されてもよい。たとえば、データ信号の命名および回路設計の階層構造が、通信チャネルを識別し、その通信チャネルによってどの通信プロトコルが実現されるかを示してもよい。これに代えて、いくつかの実現化例では、通信チャネルおよび／またはプロトコルは、回路設計からのメタデータなしで識別されてもよい。たとえば、チャネル命名および回路設計の階層構造が、たとえばパターン整合および／または原因分析を使用して、１組の取り込まれた波形から推測されてもよい。
【００４１】
ブロック２０６で、識別されたプロトコルの各々について、それぞれのＡＰＩが提供される。ＡＰＩは、データ構造から、特定のプロトコルについてのトランザクションレベルイベントを識別するように構成される。例示的な一例として、ＡＸＩ通信チャネルのデータトランザクションは、ＡＸＩ信号ＶＡＬＩＤ、ＲＥＡＤＹ、ＲＬＡＳＴ、およびＷＬＡＳＴの値に基づいて識別されてもよい。たとえば、ＡＸＩデータトランザクションの開始位置は、ＶＡＬＩＤまたはＲＥＡＤＹ信号のアサーションによって識別され得る。ＡＸＩ読出トランザクションの終了位置は、ＲＬＡＳＴ信号がアサートされ消去されることによって識別され得る。ＡＸＩ書込トランザクションの終了位置は、ＷＬＡＳＴ信号がアサートされ、次にＢＲＥＳＰがアサートされることによって識別され得る。通信プロトコルについてのＡＰＩは、たとえば、複数の通信プロトコルについてのそれぞれのＡＰＩを有するＡＰＩライブラリから提供されてもよい。ブロック２０８で、データ構造は、識別された通信チャネルについてのトランザクションレベルイベントを判断するために、提供されたＡＰＩを使用して処理される。
【００４２】
図３は、識別されたトランザクションレベルイベントに基づいた回路設計の分析のための例示的なプロセスを示す。前述のように、トランザクションレベルイベントおよび／または信号データ構造は、回路設計の性能および／または動作を査定するために分析されてもよい。この例では、分析は多くの静的分析プロセスを含み、それらは、ブロック３０４、３０６、および３０８で、ユーザによる対話なしで自動的に行なわれ得る。
【００４３】
ブロック３０４で、トランザクションレベルイベント３０２、および／または信号データ構造３０３における波形データが、１つ以上の通信プロトコルの違反を検出するためにサーチされる。プロトコル違反が検出され得る態様は、各通信プロトコルによって指定されるデータトランザクションの要件／制限に依存する。一例として、ＡＸＩプロトコルは、固定バーストモードトランザクションの長さが１６ビート未満であることを要求する。ＡＸＩ違反の別の例として、ＡＲＶＡＬＩＤ信号がアサートされ、かつＡＲＲＥＡＤＹ信号がローである場合、ＡＲＡＤＤＲ、ＡＲＢＵＲＳＴ、ＡＲＣＡＣＨＥ、ＡＲＩＤ、ＡＲＬＥＮ、ＡＲＬＯＣＫ、ＡＲＰＲＯＴ、ＡＲＳＩＺＥ、ＡＲＱＯＳ、およびＡＲＲＥＧＩＯＮ信号は、安定した状態を保たなければならない。いくつかの実現化例では、特定の通信プロトコルの違反を検出するための基準が、たとえば、複数の通信プロトコルのためのそれぞれの組の試験基準を有するライブラリから検索されてもよい。
【００４４】
ブロック３０６で、異種トランザクションが、異なる通信チャネルを越えて追跡される。前述のように、異種トランザクションは、さまざまなプロセスを使用して追跡されてもよい。いくつかの実現化例では、異種トランザクションは、たとえば、異なる通信チャネル間のインターフェイス接続を示す、回路設計におけるメタデータに基づいて追跡されてもよい。いくつかの他の実現化例では、２つの通信チャネルの命名規則が、当該２つの通信チャネルがリンクされていることを示してもよい。
【００４５】
ブロック３０８で、回路設計の性能メトリックが評価される。前述のように、性能メトリックは、たとえば、スループット、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、１秒あたりの命令、１周期あたりの命令、キャッシュミス、またはそれらのさまざまな組合せを含んでいてもよい。個々のトランザクション、個々の通信チャネル、および／または回路設計における個々の回路モジュールについて、性能が評価されてもよい。これに加えて、またはこれに代えて、性能メトリックは、トランザクション、通信チャネル、および／または回路モジュールの組合せについて、性能を評価してもよい。たとえば、ある性能メトリックは、異種トランザクションに使用された複数の通信チャネルについて、当該トランザクションのスループットを分析し、どの通信チャネルが当該トランザクションの全体的スループットを制限しているかを判断してもよい。
【００４６】
この例では、ブロック３１０、３１２、および３１４で動的分析も行なわれる。動的分析は、ユーザ入力に応答してリアルタイムで動的に構成され、それにより、ユーザによってカスタマイズされた分析が行なわれることを可能にする。ブロック３１０で、ＧＵＩウィンドウが提供される。ＧＵＩウィンドウは、ユーザによる目視検査および／またはデバッギングのために、シミュレーションデータおよび／または分析結果を表示するように構成されてもよい。たとえば、前述のように、デバッギングツールのＧＵＩウィンドウが、取り込まれた波形、性能メトリック、プロトコル違反、および／または識別された異種トランザクションの図形表現を表示するように構成されてもよい。加えて、ＧＵＩウィンドウは、ユーザによるカスタマイズされたクエリおよび／またはデバッギングのための入力およびディスプレイインターフェイスを含む。ＧＵＩを介したユーザ入力に応答して、プロセスは、たとえばブロック３１２および３１４で、当該ユーザ入力によって要求された動作を行なう。この例では、ブロック３１２で、トランザクションレベルイベントおよび／または信号データ構造は、ユーザのために指定されたカスタマイズされたサーチクエリについてサーチされる。当該サーチクエリに整合する波形の部分が、ブロック３１０で提供されたＧＵＩウィンドウに表示されてもよい。前述のように、トランザクションレベルイベントおよび／または信号データ構造の、ユーザによってカスタマイズされたクエリは、試験中の回路設計の状況においてのみ関連するシナリオに対応する波形の部分をユーザが容易に識別できるようにしてもよい。この例では、ユーザ入力に応答して、ブロック３１４でシンボリックデバッギングも実行される。シンボリックデバッガはたとえば、回路設計に含まれるプロセッサによる個々のＨＬＬ命令の実行に応答して始動されたデータトランザクションを識別してもよい。
【００４７】
いくつかの実現化例では、たとえば、開放型システム間相互接続（open system interconnection：ＯＳＩ）モデルにおいて抽象化層を実現するために使用される通信プロトコルを含む多層の通信プロトコルについて、トランザクションが識別されてもよい。図４は、複数の層のプロトコルについてトランザクションを識別するための例示的なプロセスを示す。ブロック４０２で、たとえば図２を参照して説明されたようなデータ構造に基づいて、第１の１組のトランザクションが、下位層プロトコルについて識別される。ブロック４０４で、第１の１組のトランザクションに基づいて、第２の１組のトランザクションが、上位層プロトコルについて識別される。たとえば、上位層プロトコルのトランザクションは、下位層プロトコルについての第１の１組のトランザクションのうちの複数のトランザクションを使用して行なわれてもよい。上位層プロトコルについてのトランザクションは、図２を参照して説明されたものと同様の態様で、プロトコルについてのＡＰＩを生成することによって識別されてもよい。ブロック４０６で、第２の１組のトランザクションが分析される。第２の１組のトランザクションは、図３のトランザクションレベルイベントの分析を参照して説明されたように分析されてもよい。このプロセスは、たとえば第２の１組のトランザクションに基づいて、さらなる上位層プロトコルについてのトランザクションを識別するために、繰り返されてもよい。
【００４８】
図５は、１つ以上の実施形態に従った、デバッギングツールを提供するように構成された例示的なコンピュータシステムを示す。この例では、コンピュータシステム５００は、すべてホストバス５１５に結合された、１つ以上のプロセッサ５０５と、メモリ／ストレージ構成５１０と、入力デバイス５３０と、表示デバイス５３５と、ネットワークアダプタ５４５との構成を含む。構成５００は、回路基板上の別々のコンポーネントで実現されてもよく、または、集積回路内に内部で実現されてもよい。集積回路内に内部で実現される場合、プロセッサコンピューティングデバイスは、別名マイクロコントローラとして知られている。
【００４９】
コンピュータシステム５００のアーキテクチャは、当業者によって認識されるような実現要件に依存する。プロセッサ５０５は、１つ以上の汎用プロセッサ、または、１つ以上の汎用プロセッサと好適なコプロセッサとの組合せ、または、１つ以上の専用プロセッサ（たとえば、ＲＩＳＣ、ＣＩＳＣ、パイプライン型など）であってもよい。メモリ／ストレージ構成５１０は典型的には、マルチレベルのキャッシュメモリと、メインメモリとを含む。メモリ／ストレージ構成５１０は、磁気ディスク（図示せず）、フラッシュ、ＥＰＲＯＭ、または他の不揮発性データストレージによって提供されるような、ローカルおよび／またはリモートの永続ストレージを含んでいてもよい。
【００５０】
メモリ／ストレージデバイス５１０はプログラムコード５６５を含み、それは、プロセッサ５０５によって実行されると、上述のようにデバッギングアプリケーション５５５を実現する。プログラムコード５６５は、磁気または光ディスクまたはテープ、電子ストレージデバイスといったさまざまなコンピュータ読取可能記憶媒体または配信チャネルを介して、もしくは、ネットワークアダプタ５４５に結合されたネットワークを通したアプリケーションサービスとして、格納され提供されてもよい。動作中、デバッギングアプリケーション５５５は、デバッギングデータ５６０（たとえば、波形データ、データ構造、および／またはトランザクションレベルイベント）をメモリ／ストレージデバイス５１０に格納する。デバッギングのための上述されたようなＧＵＩウィンドウが、表示デバイス５３５を介して提供されてもよい。
【００５１】
当業者であれば、１つ以上のプロセッサと、プログラムコードを有して構成されたメモリ構成とを含む、さまざまな代替的なコンピューティング構成が、ここに開示されるプロセスおよびデータ構造をホストするのに好適であろう、ということを理解するであろう。加えて、プロセスは、磁気または光ディスクまたはテープ、電子ストレージデバイスといったさまざまなコンピュータ読取可能記憶媒体または配信チャネルを介して、もしくは、ネットワークを通したアプリケーションサービスとして、提供されてもよい。
【００５２】
図６は、１つ以上の実現化例に従った、統合ロジックアナライザ回路を有する例示的なプログラマブルＩＣを示す。プログラマブルＩＣはまた、システムオンチップ（System On Chip：ＳＯＣ）と呼ばれてもよく、それは、プロセッササブシステム６１０と、プログラマブルロジックサブシステム６３０とを含む。この例では、プログラマブルＩＣはまた、電力および／または安全管理のためのさまざまな回路を有するサブシステム６４０と、外部回路とのデータの通信のための入力／出力（Ｉ／Ｏ）サブシステム６５０とを含む。サブシステム６１０、６３０、６４０、および６５０は、複数の半導体ダイを使用して形成され、上述の例で説明されたようにＩＣパッケージにおいて相互接続されてもよい。
【００５３】
プロセッシングサブシステム６１０は、ユーザプログラムの実行を介して、回路設計のソフトウェア部分を実現するようにプログラムされてもよい。これに代えて、またはこれに加えて、プログラムは、プログラマブルリソース６３２において実現された部分回路設計の１つ以上のポートへデータ信号を生成するように構成された１つ以上のトラフィックジェネレータを実現してもよい。プログラムは、構成データストリームの一部として指定されてもよく、もしくは、オンチップまたはオフチップデータストレージデバイスから検索されてもよい。プロセッシングサブシステム６１０は、１つ以上のソフトウエアプログラムを実行するためのさまざまな回路６１２、６１４、６１６、および６１８を含んでいてもよい。回路６１２、６１４、６１６、および６１８は、たとえば、１つ以上のプロセッサコア、浮動小数点ユニット（floating point unit：ＦＰＵ）、割込処理ユニット、オンチップメモリ、メモリキャッシュ、および／またはキャッシュコヒーレント相互接続部を含んでいてもよい。
【００５４】
プログラマブルＩＣ６０２のプログラマブルロジックサブシステム６３０は、前述のように部分回路設計およびトラフィック発生回路を実現するようにプログラムされてもよい。たとえば、プログラマブルロジックサブシステムは多くのプログラマブルリソース６３２を含んでいてもよく、それらは、構成データストリームにおいて指定された１組の回路を実現するようにプログラムされてもよい。プログラマブルリソース６３２は、プログラマブル相互接続回路と、プログラマブルロジック回路と、構成メモリセルとを含む。プログラマブルロジックは、たとえば関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を使用して、回路設計のロジックを実現する。プログラマブル相互接続回路は、プログラマブル相互接続点（ＰＩＰ）によって相互接続されたさまざまな長さの多数の相互接続線を含んでいてもよい。
【００５５】
プログラマブルリソース６３２は、プログラマブル相互接続回路およびプログラマブルロジック回路がどのように構成されるかを定義する構成メモリセルに構成データストリームをロードすることによって、プログラムされてもよい。個々のメモリセルの集団状態が次に、プログラマブルリソース６３２の機能を決定する。構成データは、外部デバイスによって、メモリから（たとえば、外部ＰＲＯＭから）読出され、またはプログラマブルＩＣ６０２に書込まれ得る。いくつかの実現化例では、構成データは、プログラマブルロジックサブシステム６３０に含まれる構成コントローラ６３４によって、構成メモリセルにロードされてもよい。いくつかの他の実現化例では、構成データは、プロセッササブシステム６１０によって実行される起動プロセスによって、構成メモリセルにロードされてもよい。
【００５６】
プログラマブルＩＣ６０２は、プロセッシングサブシステム６１０を、プログラマブルロジックサブシステム６３０内に実現された回路と相互接続するためのさまざまな回路を含んでいてもよい。この例では、プログラマブルＩＣ６０２は、プロセッシングサブシステム６１０のさまざまなデータポートとプログラマブルロジックサブシステム６３０との間でデータ信号をルーティングできるコアスイッチ６２６を含む。コアスイッチ６２６はまた、プロセッシングサブシステム６１０またはプログラマブルロジックサブシステム６３０のいずれかと、内部データバスなどのプログラマブルＩＣのさまざまな他の回路との間で、データ信号をルーティングしてもよい。これに代えて、またはこれに加えて、プロセッシングサブシステム６１０は、コアスイッチ６２６を迂回してプログラマブルロジックサブシステムに直接接続するためのインターフェイスを含んでいてもよい。そのようなインターフェイスは、たとえば、ＡＲＭによって公開されたようなＡＭＢＡ  ＡＸＩプロトコル仕様（ＡＸＩ）を使用して実現されてもよい。
【００５７】
いくつかの実現化例では、プロセッシングサブシステム６１０およびプログラマブルロジックサブシステム６３０はまた、メモリコントローラ６２１を介して、オンチップメモリ６２２またはオフチップメモリ（図示せず）のメモリ位置へ読出または書込を行なってもよい。メモリコントローラ６２１は、１６ビット、３２ビット、ＥＣＣ付き１６ビットなどの、デュアルデータレート（Dual Data Rate：ＤＤＲ）２、ＤＤＲ３、低電力（Low Power：ＬＰ）ＤＤＲ２タイプのメモリを含むもののこれらに限定されない、１つ以上の異なるタイプのメモリ回路と通信するように実現され得る。メモリコントローラ６２１が通信できる異なるメモリタイプのリストは例示のためにのみ提供されており、限定として、または網羅的であるよう意図されてはいない。図６に示すように、プログラマブルＩＣ６０２は、メモリ管理ユニット６２０と、特定のメモリ位置にアクセスするために、サブシステム６１０および６３０によって使用される仮想メモリアドレスを、メモリコントローラ６２１によって使用される物理メモリアドレスへ変換するための変換索引バッファ６２４とを含んでいてもよい。
【００５８】
この例では、プログラマブルＩＣは、外部回路とのデータの通信のためのＩ／Ｏサブシステム６５０を含む。Ｉ／Ｏサブシステム６５０は、たとえば、フラッシュメモリタイプのＩ／Ｏデバイス、より高い性能のＩ／Ｏデバイス、より低い性能のインターフェイス、デバッギングＩ／Ｏデバイス、および／または、ＲＡＭ  Ｉ／Ｏデバイスを含む、さまざまなタイプのＩ／Ｏデバイスまたはインターフェイスを含んでいてもよい。
【００５９】
Ｉ／Ｏサブシステム６５０は、６６０Ａおよび６６０Ｂとして図示された１つ以上のフラッシュメモリインターフェイス６６０を含んでいてもよい。たとえば、フラッシュメモリインターフェイス６６０のうちの１つ以上は、４ビット通信用に構成されたクアッドシリアル周辺インターフェイス（Quad-Serial Peripheral Interface：ＱＳＰＩ）として実現され得る。フラッシュメモリインターフェイス６６０のうちの１つ以上は、パラレル８ビットＮＯＲ／ＳＲＡＭタイプのインターフェイスとして実現され得る。フラッシュメモリインターフェイス６６０のうちの１つ以上は、８ビットおよび／または１６ビット通信用に構成されたＮＡＮＤインターフェイスとして実現され得る。説明された特定のインターフェイスは、限定のためではなく例示のために提供される、ということが理解されるべきである。異なるビット幅を有する他のインターフェイスを使用することができる。
【００６０】
Ｉ／Ｏサブシステム６５０は、フラッシュメモリインターフェイス６６０よりも高いレベルの性能を提供する１つ以上のインターフェイス６６２を含み得る。インターフェイス６６２Ａ〜６６２Ｃの各々は、ＤＭＡコントローラ６６４Ａ〜６６４Ｃにそれぞれ結合され得る。たとえば、インターフェイス６６２のうちの１つ以上は、ユニバーサルシリアルバス（ＵＳＢ）タイプのインターフェイスとして実現され得る。インターフェイス６６２のうちの１つ以上は、ギガビットイーサネットタイプのインターフェイスとして実現され得る。インターフェイス６６２のうちの１つ以上は、セキュアデジタル（Secure Digital：ＳＤ）タイプのインターフェイスとして実現され得る。インターフェイス６６２のうちの１つ以上は、ＰＣＩｅインターフェイスとして実現され得る。
【００６１】
Ｉ／Ｏサブシステム６５０はまた、インターフェイス６６２よりも低いレベルの性能を提供する、インターフェイス６６６Ａ〜６６６Ｄなどの１つ以上のインターフェイス６６６を含んでいてもよい。たとえば、インターフェイス６６６のうちの１つ以上は、汎用Ｉ／Ｏ（General Purpose I/O：ＧＰＩＯ）タイプのインターフェイスとして実現され得る。インターフェイス６６６のうちの１つ以上は、汎用非同期送受信機（Universal Asynchronous Receiver/Transmitter：ＵＡＲＴ）タイプのインターフェイスとして実現され得る。インターフェイス６６６のうちの１つ以上は、シリアル周辺インターフェイス（ＳＰＩ）バスタイプのインターフェイスの形で実現され得る。インターフェイス６６６のうちの１つ以上は、コントローラエリアネットワーク（Controller-Area-Network：ＣＡＮ）タイプのインターフェイス、および／またはＩ２Ｃタイプのインターフェイスの形で実現され得る。インターフェイス６６６のうちの１つ以上はまた、トリプルタイマカウンタ（Triple Timer Counter：ＴＴＣ）および／またはウォッチドッグタイマ（Watchdog Timer：ＷＤＴ）タイプのインターフェイスの形で実現され得る。
【００６２】
Ｉ／Ｏサブシステム６５０は、プロセッサＪＴＡＧ（ＰＪＴＡＧ）インターフェイス６６８Ａおよび追跡インターフェイス６６８Ｂなどの１つ以上のデバッグインターフェイス６６８を含み得る。ＰＪＴＡＧインターフェイス６６８Ａは、プログラマブルＩＣ６０２のための外部デバッグインターフェイスを提供できる。追跡インターフェイス６６８Ｂは、プロセッシングサブシステム６１０またはプログラマブルロジックサブシステム６３０からデバッグ情報、たとえば追跡情報を受信するためのポートを提供できる。
【００６３】
図示されるように、インターフェイス６６０、６６２、６６６、および６６８の各々は、マルチプレクサ６７０に結合され得る。マルチプレクサ６７０は、プログラマブルＩＣ６０２の外部ピン、たとえば、内部にプログラマブルＩＣ６０２が配置されているパッケージのボールへ直接ルーティングされるか結合され得る、複数の出力を提供する。たとえば、プログラマブルＩＣ６０２のＩ／Ｏピンは、インターフェイス６６０、６６２、６６６、および６６８間で共有され得る。ユーザは、インターフェイス６６０〜６６８のどれを使用するか、ひいてはマルチプレクサ６７０を介してプログラマブルＩＣ６０２のＩ／Ｏピンに結合するかを選択するために、構成データストリームを介してマルチプレクサ６７０を構成することができる。Ｉ／Ｏサブシステム６５０はまた、プログラマブルロジックサブシステムのプログラマブルロジック回路にインターフェイス６６２〜６６８を接続するためのファブリックマルチプレクサＩ／Ｏ（fabric multiplexer I/O：ＦＭＩＯ）インターフェイス（図示せず）を含んでいてもよい。これに加えて、またはこれに代えて、プログラマブルロジックサブシステム６３０は、プログラマブルロジック内で１つ以上のＩ／Ｏ回路を実現するように構成され得る。この例では、プログラマブルＩＣ６０２は、電力および／または安全管理用のさまざまな回路を有するサブシステム６４０を含む。たとえば、サブシステム６４０は、プログラマブルＩＣ６０２のさまざまなサブシステムに電力を供給するために使用される１つ以上の電圧ドメインを監視し維持するように構成された電力管理ユニット６４６を含んでいてもよい。いくつかの実現化例では、電力管理ユニット６４６は、消費電力を減少させるために、使用中のサブシステムへの電力を停止することなく、アイドル中の個々のサブシステムの電力を停止してもよい。
【００６４】
サブシステム６４０はまた、正しい動作を保証するようにサブシステムのステータスを監視するための安全回路を含んでいてもよい。たとえば、サブシステム６４０は、（たとえばステータスレジスタ６４４において示されるような）さまざまなサブシステムのステータスを監視するように構成された１つ以上のリアルタイムプロセッサ６４２を含んでいてもよい。リアルタイムプロセッサ６４２は、エラーの検出に応答して多くのタスクを行なうように構成されてもよい。たとえば、いくつかのエラーについて、リアルタイムプロセッサ６４２は、エラーの検出に応答して警告を生成してもよい。別の例として、リアルタイムプロセッサ６４２は、サブシステムを正しい動作へ復元しようとしてサブシステムをリセットしてもよい。サブシステム６４０は、さまざまなサブシステムを相互接続するために使用され得るスイッチネットワーク６４８を含む。たとえば、スイッチネットワーク６４８は、さまざまなサブシステム６１０、６３０、および６４０をＩ／Ｏサブシステム６５０のさまざまなインターフェイスへ接続するように構成されてもよい。いくつかのアプリケーションでは、スイッチネットワーク６４８はまた、監視されることになっているサブシステムからリアルタイムプロセッサ６４２を分離するために使用されてもよい。そのような分離は、リアルタイムプロセッサ６４２が他のサブシステムで生じるエラーの影響を受けないことを保証するように、あるアプリケーション規格（たとえば、ＩＥＣ−６１５０８  ＳＩＬ３規格またはＩＳＯ−２６２６２規格）によって要求されてもよい。
【００６５】
統合ロジックアナライザ回路６８０は、プログラマブルＩＣ６０２におけるサブシステム６１０、６３０、６４０、または６５０のうちの１つ以上に含まれる、もしくはそれらの間に接続されたデータバスのデータを調査するように構成される。いくつかの実現化例では、データバス上で送信された信号のサンプルが、スイッチ６４８を通る信号経路６８２を通して統合ロジックアナライザ回路６８０に提供されてもよい。これに加えて、またはこれに代えて、統合ロジックアナライザ回路６８０は、データバス上で送信された信号のサンプルを専用信号線（図示せず）を通して受信してもよい。統合ロジックアナライザ回路６８０は、ＪＴＡＧインターフェイス６６８といったＩ／Ｏサブシステム６５０における１つ以上の通信回路を介して、試験データ入力またはデバッグ制御信号を受信し、サンプリングされたデータ信号を出力してもよい。いくつかの実現化例では、統合ロジックアナライザ回路６８０は、スイッチ６４８を通る信号経路を介して、Ｉ／Ｏサブシステム６５０における通信回路に結合される。これに代えて、またはこれに加えて、統合ロジックアナライザ回路６８０は、専用信号線（たとえば点線の信号線６８４）を介して、Ｉ／Ｏサブシステム６５０における通信回路に直接結合されてもよい。
【００６６】
開示された方法および回路は、さまざまなシステムおよびアプリケーションに適用可能であると考えられる。他の局面および特徴は、明細書を検討すれば、当業者には明らかになるであろう。局面および特徴は場合によっては個々の図面で説明され得るが、組合せが明確に図示されていなくても、または組合せとして明確に説明されていなくても、１つの図面からの特徴を別の図面の特徴と組合せることができる、ということが理解されるであろう。開示されたプロセスおよび回路のうちのさまざまなものが、ソフトウェアを実行するように構成された１つ以上のプロセッサとして、特定用途向け集積回路（ＡＳＩＣ）として、またはプログラマブルロジックデバイス上のロジックとして実現されてもよい。明細書および図面は単なる例示として考えられ、この発明の真の範囲は請求項によって示される、ということが意図される。
【図１】
0006653756.tif 000002
【図２】
0006653756.tif 000003
【図３】
0006653756.tif 000004
【図４】
0006653756.tif 000005
【図５】
0006653756.tif 000006
【図６】
0006653756.tif 000007