(57)【要約】  本開示では、高周波外部インタフェースの機能性の検証のためのセルフテスト機構を備えた集積回路について説明する。外部インタフェースの実施例は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）バス、および高周波（例えば２００ＭＨｚ以上）で動作する他の外部インタフェースのような、メモリインターフェースおよびバスインタフェースを含んでいる。テストロジックは、集積回路上に組み込まれ、外部テスト機器から非テスト信号を受け取りながら外部インタフェースの機能性を検証するように構成されてもよい。故に、外部テスト機器が集積回路に高周波テスト信号を供給しない可能性がある。しかしながら、外部テスト機器は、集積回路のピンインタフェースの機能性を独自に検証することができる。その結果、集積回路は、外部インタフェースの機能性およびタイミングをベリファイするのに必要なコストと時間を削減することができる。
2010537156.tif 000002
【特許請求の範囲】
【請求項１】
テストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するプロセッサと、
前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するためのトランザクションを生成するコアロジックと、を具備し、
前記プロセッサは、前記テストプログラムに従って前記コアロジックと通信するためのトランザクションを生成し、
１つまたは複数の前記トランザクションを検証し、該１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を出力するテストロジックを具備する集積回路。
【請求項２】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ２００ＭＨｚより大きな周波数で動作する請求項１の集積回路。
【請求項３】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ４００ＭＨｚより大きな周波数で動作する請求項１の集積回路。
【請求項４】
前記トランザクションの各々は各プロトコルに関連付けられており、前記テストロジックは、前記１つまたは複数のトランザクションが前記各プロトコルと合致しているかどうかに基づいて１つまたは複数の前記トランザクションを検証する請求項１の集積回路。
【請求項５】
前記テストロジックは、前記１つまたは複数のトランザクションに関連するデータに基づいて前記１つまたは複数のトランザクションを検証する請求項１の集積回路。
【請求項６】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースの各々は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バスのいずれかを含む請求項１の集積回路。
【請求項７】
前記送信モードで動作する場合、前記プロセッサは第１のトランザクションを生成し、該第１のトランザクションを前記コアロジックに送り、
前記コアロジックは、前記第１のトランザクションに基づいた第２のトランザクションを生成し、前記外部デバイスのいずれかに前記第２のトランザクションを送り、
前記テストロジックは、前記第１のトランザクションおよび前記第２のトランザクションを検証し、前記第１のトランザクションおよび前記第２のトランザクションの各々がバリッドであるかどうか示すステータス信号を出力する請求項１の集積回路。
【請求項８】
前記受信モードで動作する場合、前記プロセッサは第１のトランザクションを生成し、該第１のトランザクションを前記コアロジックに送り、
前記コアロジックは、前記第１のトランザクションに基づいた第２のトランザクションを生成し、前記外部デバイスのいずれかに前記第２のトランザクションを送り、第３のトランザクションを生成し、前記プロセッサに前記第３のトランザクションを送り、
前記テストロジックは、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションを検証し、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションの各々がバリッドであるかどうか示すステータス信号を出力する請求項１の集積回路。
【請求項９】
前記受信モードで動作する場合、前記テストロジックは、データを前記コアロジックに送り、
前記コアロジックは、前記データに基づいた第１のトランザクションを生成し、前記プロセッサに前記第１のトランザクションを送り、
前記テストロジックは、前記第１のトランザクションを検証し、前記第１のトランザクションがバリッドであるかどうか示すステータス信号を出力する請求項１の集積回路。
【請求項１０】
前記テストロジックは、前記トランザクションをインターセプトし、参照データを生成し、前記参照データを、前記インターセプトしたトランザクションに関連するデータと比較し、前記比較に基づいて、前記インターセプトしたトランザクションを検証する請求項１の集積回路。
【請求項１１】
前記プロセッサは、前記テストプログラムに従って、シード値を含む制御信号を生成し、前記制御信号を前記テストロジックに送り、前記テストロジックは、前記シード値に基づいて前記参照データを生成する請求項１０の集積回路。
【請求項１２】
前記プロセッサは、前記テストプログラムに従って制御信号を生成し、前記テストロジックに前記制御信号を送り、前記テストロジックは前記制御信号を受け取るのに先だって無効化され、前記テストロジックが前記制御信号を受け取った後、前記テストロジックは、前記プロセッサおよびコアロジックが前記トランザクションを送る１つまたは複数の外部インタフェースをアクティブにスヌープすることにより前記トランザクションをインターセプトするようにイネーブルとされる請求項１０の集積回路。
【請求項１３】
前記コアロジックは、前記トランザクションに関連する応答メッセージを生成し、前記プロセッサに前記応答メッセージを送り、前記テストロジックは、前記応答メッセージを検証し、前記応答メッセージがバリッドであるかどうか示すステータス信号を出力する請求項１の集積回路。
【請求項１４】
前記集積回路は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）、無線通信装置、ネットワークデバイス、および電子コンピューティング装置のいずれかにおいて動作するよう構成される請求項１の集積回路。
【請求項１５】
前記集積回路は、無線通信装置におけるモバイルステーションモデム（ＭＳＭ）チップとして動作するように構成される請求項１の集積回路。
【請求項１６】
集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始すること、
前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成すること、
前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成すること、
前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証すること、
前記１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を前記テストロジックにおいて生成することを含む方法。
【請求項１７】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ２００ＭＨｚより大きな周波数で動作する請求項１６の方法。
【請求項１８】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ４００ＭＨｚより大きな周波数で動作する請求項１６の方法。
【請求項１９】
前記トランザクションの各々は各プロトコルに関連付けられており、前記１つまたは複数のトランザクションを検証することは、前記１つまたは複数のトランザクションが前記各プロトコルと合致しているかどうかに基づいて、前記テストロジックにおいて前記１つまたは複数のトランザクションを検証することを含む請求項１６の方法。
【請求項２０】
前記１つまたは複数のトランザクションを検証することは、前記１つまたは複数のトランザクションに関連するデータ基づいて、前記テストロジックにより前記１つまたは複数のトランザクションを検証することを含む請求項１６の方法。
【請求項２１】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースの各々は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バスのいずれかを含む請求項１６の方法。
【請求項２２】
命令の実行は、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記送信モードの動作を開始することを含み、
前記プロセッサにおいてトランザクションを生成することは、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送ることを含み、
前記コアロジックにおいてトランザクションを生成することは、前記第１のトランザクションに基づいた第２のトランザクションを前記コアロジックにおいて生成し、前記外部デバイスのいずれかに前記第２のトランザクションを送ることを含み、
前記１つまたは複数のトランザクションを検証することは、前記第１のトランザクションおよび前記第２のトランザクションを前記テストロジックにおいて検証することを含み、
前記ステータス信号を生成することは、前記第１のトランザクションおよび前記第２のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成することを含む請求項１６の方法。
【請求項２３】
命令の実行は、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始することを含み、
前記プロセッサにおいてトランザクションを生成することは、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送ることを含み、
前記コアロジックにおいてトランザクションを生成することは、前記コアロジックにおいて第２のトランザクションを生成し、前記外部デバイスのうちのいずれかに前記第２のトランザクションを送り、前記コアロジックにおいて第３のトランザクションを生成し、前記第３のトランザクションを前記プロセッサに送ることを含み、
前記１つまたは複数のトランザクションを検証することは、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションを前記テストロジックにおいて検証することを含み、
前記ステータス信号を生成することは、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成することを含む請求項１６の方法。
【請求項２４】
命令を実行することは、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始すること、前記テストロジックにおいてデータを生成し、前記データを前記コアロジックに送ることを含み、前記コアロジックにおいて前記トランザクションを生成することは、前記データに基づいて前記コアロジックにおいて第１のトランザクションを生成し、前記プロセッサに前記第１のトランザクションを送ることを含み、前記１つまたは複数のトランザクションを検証することは、前記第１のトランザクションを前記テストロジックで検証することを含み、前記ステータス信号を生成することは、前記第１のトランザクションがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成することを含む請求項１６の方法。
【請求項２５】
前記１つまたは複数のトランザクションを検証することは、前記テストロジックを通じて前記１つまたは複数のトランザクションをインターセプトすること、前記テストロジックにより参照データを生成すること、前記参照データと、前記インターセプトしたトランザクションに関連するデータとを前記テストロジックにより比較すること、前記比較に基づいて、前記テストロジックにより、前記インターセプトしたトランザクションを検証することを含む請求項２５の方法。
【請求項２６】
シード値を含む制御信号を前記プロセッサにおいて生成すること、
前記テストロジックモジュールに前記制御信号を送ること、をさらに含み、前記参照データを生成することは、前記シード値に基づいて前記テストロジックにより前記参照データを生成することを含む請求項２５の方法。
【請求項２７】
前記プロセッサにおいて制御信号を生成すること、
前記テストプログラムに従って前記制御信号を、制御信号を受け取る前は無効である前記テストロジックに送ることをさらに具備し、
前記１つまたは複数のトランザクションをインターセプトすることは、前記制御信号を受け取った後に、前記１つまたは複数のトランザクションが送られる１つまたは複数の外部インタフェースをアクティブにスヌープすることによって前記トランザクションをインターセプトするために、前記テストロジックをイネーブルにすることを含む請求項２５の方法。
【請求項２８】
前記トランザクションに関連付けられる応答メッセージを前記コアロジックにおいて生成すること、前記コアロジックを通じて前記プロセッサに前記応答メッセージを送ること、前記応答メッセージを前記テストロジックにおいて検証することをさらに具備し、前記ステータス信号を生成することは、前記応答メッセージがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成することを含む請求項１６の方法。
【請求項２９】
前記集積回路は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）、モバイルハンドセット、ネットワークデバイス、および電子コンピューティング装置のいずれかにおいて動作するよう構成される請求項１６の方法。
【請求項３０】
集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するための手段と、
前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成するための手段と、
前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成するための手段と、
前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証するための手段と、
前記１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を前記テストロジックにおいて生成するための手段と、を具備する集積回路。
【請求項３１】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ２００ＭＨｚより大きな周波数で動作する請求項３０の集積回路。
【請求項３２】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ４００ＭＨｚより大きな周波数で動作する請求項３０の集積回路。
【請求項３３】
前記トランザクションの各々は各プロトコルに関連付けられており、前記１つまたは複数のトランザクションを検証するための手段は、前記１つまたは複数のトランザクションが前記各プロトコルと合致しているかどうかに基づいて１つまたは複数の前記トランザクションを検証する手段を具備する請求項３０の集積回路。
【請求項３４】
前記１つまたは複数のトランザクションを検証するための手段は、前記１つまたは複数のトランザクションに関連するデータに基づいて、前記テストロジックにより前記１つまたは複数のトランザクションを検証するための手段を含む請求項３０の集積回路。
【請求項３５】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースの各々は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バスのいずれかを含む請求項３０の集積回路。
【請求項３６】
命令を実行するための手段は、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記送信モードの動作を開始するための手段を含み、
前記プロセッサにおいてトランザクションを生成するための手段は、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送るための手段を含み、
前記コアロジックにおいてトランザクションを生成するための手段は、前記第１のトランザクションに基づいた第２のトランザクションを前記コアロジックにおいて生成し、前記外部デバイスのいずれかに前記第２のトランザクションを送るための手段を含み、
前記１つまたは複数のトランザクションを検証するための手段は、前記第１のトランザクションおよび前記第２のトランザクションを前記テストロジックにおいて検証するための手段を含み、
前記ステータス信号を生成するための手段は、前記第１のトランザクションおよび前記第２のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するための手段を含む請求項３０の集積回路。
【請求項３７】
前記命令を実行するための手段は、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始するための手段を含み、
前記プロセッサにおいてトランザクションを生成するための手段は、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送るための手段を含み、
前記コアロジックにおいてトランザクションを生成するための手段は、前記コアロジックにおいて第２のトランザクションを生成し、前記外部デバイスのうちのいずれかに前記第２のトランザクションを送り、前記コアロジックにおいて第３のトランザクションを生成し、前記第３のトランザクションを前記プロセッサに送るための手段を含み、
前記１つまたは複数のトランザクションを検証するための手段は、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションを前記テストロジックにおいて検証するための手段を含み、
前記ステータス信号を生成するための手段は、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するための手段を含む請求項３０の集積回路。
【請求項３８】
命令を実行するための手段は、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始するための手段、前記テストロジックにおいてデータを生成し、前記データを前記コアロジックに送るための手段を含み、前記コアロジックにおいて前記トランザクションを生成するための手段は、前記データに基づいて前記コアロジックにおいて第１のトランザクションを生成し、前記プロセッサに前記第１のトランザクションを送るための手段を含み、前記１つまたは複数のトランザクションを検証するための手段は、前記第１のトランザクションを前記テストロジックで検証するための手段を含み、前記ステータス信号を生成するための手段は、前記第１のトランザクションがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するための手段を含む請求項３０の集積回路。
【請求項３９】
前記１つまたは複数のトランザクションを検証するための手段は、前記テストロジックを通じて前記１つまたは複数のトランザクションをインターセプトするための手段、前記テストロジックにより参照データを生成するための手段、前記参照データと、前記インターセプトしたトランザクションに関連するデータとを前記テストロジックにより比較するための手段、前記比較に基づいて、前記テストロジックにより、前記インターセプトしたトランザクションを検証するための手段を含む請求項３０の集積回路。
【請求項４０】
シード値を含む制御信号を前記プロセッサにおいて生成するための手段と、
前記テストロジックモジュールに前記制御信号を送るための手段とを具備し、
前記参照データを生成するための手段は、前記シード値に基づいて前記テストロジックにおいて前記参照データを生成するための手段を含む請求項３９の集積回路。
【請求項４１】
前記プロセッサにおいて制御信号を生成するための手段と、
前記テストプログラムに従って前記制御信号を、制御信号を受け取る前は無効である前記テストロジックに送るための手段と、
前記１つまたは複数のトランザクションをインターセプトするための手段は、前記制御信号を受け取った後に、前記１つまたは複数のトランザクションが送られる１つまたは複数の外部インタフェースをアクティブにスヌープすることによって前記トランザクションをインターセプトするために、前記テストロジックをイネーブルにするための手段を含む請求項３９の集積回路。
【請求項４２】
前記トランザクションに関連付けられる応答メッセージを前記コアロジックにおいて生成するための手段と、
前記コアロジックを通じて前記プロセッサに前記応答メッセージを送るための手段と、
前記応答メッセージを前記テストロジックにおいて検証するための手段とを具備し、
前記ステータス信号を生成するための手段は、前記応答メッセージがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するための手段を含む請求項３０の集積回路。
【請求項４３】
前記集積回路は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）、モバイルハンドセット、ネットワークデバイス、および電子コンピューティング装置のいずれかにおいて動作するよう構成される請求項３０の集積回路。
【請求項４４】
命令を有するコンピュータ可読媒体を具備するコンピュータプログラム製品であって、該命令は、
集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するためのコードと、
前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成するためのコードと、
前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成するためのコードと、
前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証するためのコードと、
前記１つまたは複数のトランザクションがバリッドかどうか示すステータス信号を生成するためのコードと、を具備するコンピュータプログラム製品。
【請求項４５】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ２００ＭＨｚより大きな周波数で動作する請求項４４のコンピュータプログラム製品。
【請求項４６】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部デバイスを通じて互いと通信し、前記外部インタフェースは、およそ４００ＭＨｚより大きな周波数で動作する請求項４４のコンピュータプログラム製品。
【請求項４７】
前記トランザクションの各々は各プロトコルに関連付けられており、前記１つまたは複数のトランザクションを検証するためのコードは、前記テストロジックにおいて前記１つまたは複数のトランザクションが前記各プロトコルと合致しているかどうかに基づいて前記１つまたは複数のトランザクションを検証するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項４８】
前記１つまたは複数のトランザクションの検証ためのコードは、前記１つまたは複数のトランザクションに関連するデータに基づいて前記テストロジックにより前記１つまたは複数のトランザクションを検証するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項４９】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースの各々は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バスのいずれかを含む請求項４４のコンピュータプログラム製品。
【請求項５０】
前記命令を実行するためのコードは、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記送信モードの動作を開始するためのコードを含み、
前記プロセッサにおいてトランザクションを生成するためのコードは、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送るためのコードを含み、
前記コアロジックにおいてトランザクションを生成するためのコードは、前記第１のトランザクションに基づいた第２のトランザクションを前記コアロジックにおいて生成し、前記外部デバイスのいずれかに前記第２のトランザクションを送るためのコードを含み、
前記１つまたは複数のトランザクションを検証するためのコードは、前記第１のトランザクションおよび前記第２のトランザクションを前記テストロジックにおいて検証するためのコードを含み、
前記ステータス信号を生成するためのコードは、前記第１のトランザクションおよび前記第２のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項５１】
前記命令を実行するためのコードは、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始するためのコードを含み、
前記プロセッサにおいてトランザクションを生成するためのコードは、前記プロセッサにおいて第１のトランザクションを生成し前記コアロジックに前記第１のトランザクションを送るためのコードを含み、
前記コアロジックにおいてトランザクションを生成するためのコードは、前記コアロジックにおいて第２のトランザクションを生成し、前記外部デバイスのうちのいずれかに前記第２のトランザクションを送り、前記コアロジックにおいて第３のトランザクションを生成し、前記第３のトランザクションを前記プロセッサに送るためのコードを含み、
前記１つまたは複数のトランザクションを検証するためのコードは、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションを前記テストロジックにおいて検証するためのコードを含み、
前記ステータス信号を生成するためのコードは、前記第１のトランザクション、前記第２のトランザクション、および前記第３のトランザクションの各々がバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項５２】
前記命令を実行するためのコードは、前記プロセッサにおいて前記テストプログラムの命令を実行し、前記受信モードの動作を開始し、前記テストロジックにおいてデータを生成し、前記データを前記コアロジックに送るためのコードを含み、前記コアロジックにおいて前記トランザクションを生成するためのコードは、前記データに基づいて前記コアロジックにおいて第１のトランザクションを生成し、前記プロセッサに前記第１のトランザクションを送るためのコードを含み、前記１つまたは複数のトランザクションを検証するためのコードは、前記第１のトランザクションを前記テストロジックで検証するためのコードを含み、前記ステータス信号を生成するためのコードは、前記第１のトランザクションがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項５３】
前記１つまたは複数のトランザクションを検証するためのコードは、前記テストロジックを通じて前記１つまたは複数のトランザクションをインターセプトするためのコードと、前記テストロジックにより参照データを生成するためのコードと、前記参照データと、前記インターセプトしたトランザクションに関連するデータとを前記テストロジックにより比較するためのコードと、前記比較に基づいて、前記テストロジックにより、前記インターセプトしたトランザクションを検証するためのコードと、を含む請求項４４のコンピュータプログラム製品。
【請求項５４】
シード値を含む制御信号を前記プロセッサにおいて生成するためのコードと、
前記テストロジックモジュールに前記制御信号を送るためのコードと、をさらに具備し、
前記参照データを生成するためのコードは、前記シード値に基づいて前記参照データを前記テストロジックにより生成するためのコードを含む請求項５３のコンピュータプログラム製品。
【請求項５５】
前記プロセッサにおいて制御信号を生成するためのコードと、
前記テストプログラムに従って前記制御信号を、制御信号を受け取る前は無効である前記テストロジックに送るためのコードとを具備し、
前記１つまたは複数のトランザクションをインターセプトするためのコードは、前記制御信号を受け取った後に、前記１つまたは複数のトランザクションが送られる１つまたは複数の外部インタフェースをアクティブにスヌープすることによって前記トランザクションをインターセプトするために、前記テストロジックをイネーブルにするためのコードを含む請求項５３のコンピュータプログラム製品。
【請求項５６】
前記トランザクションに関連付けられる応答メッセージを前記コアロジックにおいて生成するためのコードと、
前記コアロジックを通じて前記プロセッサに前記応答メッセージを送るためのコードと、
前記応答メッセージを前記テストロジックにおいて検証するためのコードとをさらに具備し、
前記ステータス信号を生成するためのコードは、前記応答メッセージがバリッドであるかどうか示すために前記テストロジックにおいて前記ステータス信号を生成するためのコードを含む請求項４４のコンピュータプログラム製品。
【請求項５７】
前記集積回路は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）、モバイルハンドセット、ネットワークデバイス、および電子コンピューティング装置のいずれかにおいて動作するよう構成される請求項４４のコンピュータプログラム製品。
【請求項５８】
テストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するプロセッサと、
前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するためのトランザクションを生成するコアロジックと、を具備し、
前記プロセッサは、前記テストプログラムに従って前記コアロジックと通信するためのトランザクションを生成し、
１つまたは複数の前記トランザクションを検証し、該１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を出力するテストロジックと、を具備する集積回路と、
前記集積回路に電力およびクロック信号を供給するテスト機器とを具備するシステム。
【請求項５９】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ２００ＭＨｚより大きな周波数で動作する請求項５８のシステム。
【請求項６０】
前記プロセッサ、前記コアロジックおよび前記外部デバイスは、１つまたは複数の外部インタフェースを通じて互いと通信し、前記外部インタフェースは、およそ４００ＭＨｚより大きな周波数で動作する請求項５８のシステム。
【請求項６１】
前記トランザクションの各々は各プロトコルに関連付けられており、前記テストロジックは、前記１つまたは複数のトランザクションが前記各プロトコルと合致しているかどうかに基づいて１つまたは複数の前記トランザクションを検証する請求項５８のシステム。
【請求項６２】
前記テストロジックは、前記１つまたは複数のトランザクションに関連するデータに基づいて前記１つまたは複数のトランザクションを検証する請求項５８のシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００７年６月１４日に提出された米国仮出願第６０／９４３，９３５号の優先権を主張する。その全内容が、参照することによりここに組み込まれる。
【技術分野】
【０００２】
本開示は集積回路に関し、特に、集積回路のための外部インタフェースの機能性およびタイミングをベリファイするための技術に関する。
【背景技術】
【０００３】
集積回路（ＩＣ）デバイスは、半導体基板に実装された様々な小型回路を含み得る。ＩＣデバイスは、商用で販売され使用される前に適切な動作を確認するために、製造後にテストされる。典型的に、ＩＣデバイスの完全なテストは、複雑で高価な外部テスト機器を用いて遂行される。ＩＣデバイスをテストするために、ＩＣデバイスはテスト機器にマウントされる。特に、ＩＣデバイスは、入出力（Ｉ／Ｏ）ピンとコアロジックを相互に接続するパッドリングを通じて、テスト機器に接続される。ＩＣデバイスをテストするために、テスト機器は、テストを定義するテストデータをＩ／Ｏピンを通じてＩＣデバイスに供給し、テストプログラムによって定義されたテストに従ってＩＣデバイスからの応答信号を取得する。
【０００４】
ＩＣデバイスのテストには、ＩＣデバイスの外部インタフェースおよび内部インタフェースの機能性およびタイミングをベリファイすることを要する。外部インタフェースの例は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネット（登録商標）バス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バス、および高周波で動作する他の外部インタフェースのようなバスインタフェースおよびメモリインターフェースを含んでいる。外部インタフェースの機能性およびタイミングのベリファイは、テストプログラムを開発し、シミュレーションの実行によりテスト中の外部インタフェースについてトレースファイルを生成するために、ホストコンピュータを用いることを含む。テストベクトル、ベクトルまたはテストデータとも呼ばれるトレースファイルの準備が整った時点で、テストデータがテスト機器上にロードされる。テスト機器は、テストデータに従ってＩＣデバイスにテスト信号を供給し、Ｉ／Ｏピンを通じてＩＣデバイスからの応答信号を取得する。
【０００５】
テスト中に、ＩＣデバイスの動作が送信および受信の両モードでテストされる。送信モードまたは受信モードでは、テスト機器はテストデータにより信号遷移を提供し、ＩＣデバイスは、対応する応答信号を生成する。その後、テスト機器は、テストデータにより応答を検証する。テストが完了すると、テスト機器、より具体的にはホストコンピュータが、応答信号を解釈する。ホストコンピュータは、送信および受信モードにおいてＩＣデバイスによって生成された応答信号と、シミュレーション結果とを比較することにより、結果を解釈することができる。当該比較に基づいて、ホストコンピュータは、ＩＣデバイスがテストに合格したかどうかを示すレポートを生成する。
【０００６】
更に、各テストベクトルについては、ＩＣデバイスが様々な動作条件（例えば温度、電圧変動、プロセスコーナー）に関してテストされ得る。またテスト機器は、外部インタフェースの最大動作周波数またはそれを上回る動作周波数での信号遷移を生成することが要求される場合がある。ＩＣデバイスの複雑性およびクロック周波数が増えるにつれて、テスト機器チャネルが動作する周波数もまた確実にＩＣデバイスをテストするために増える必要がある。例えば、高速メモリデバイスのクロック周波数は、ほぼ年単位で増加することから、高い動作周波数でこれらのデバイスをテストするために、テスト機器には改良、改善が必要とされ、リプレースが必要となる場合すらある。言いかえれば、ＩＣデバイスは、低い周波数で動作する被テスト機器用に設計された古いテスト機器を用いては、最大クロック周波数でテストすることができない。従ってクロック周波数が進歩するたびに、テスト機器は改良されるか購入されなければならず、また、新規のテストプログラムが開発されなければならず、これにより新規のＩＣデバイスのコストが増大する。
【発明の概要】
【０００７】
本開示では、高周波外部インタフェースの機能性の検証のためのセルフテスト機構を備えた集積回路について説明する。外部インタフェースの実施例は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）バス、および高周波（例えば２００ＭＨｚ以上）で動作する他の外部インタフェースのような、メモリインターフェースおよびバスインタフェースを含んでいる。テストロジックは、集積回路上に組み込まれ、外部インタフェースの機能性を検証するように構成されてもよい。例えば、テストロジックは、外部テスト機器から電力および非テスト信号を受け取りながら外部インタフェース機能性を検証するように構成されてもよい。故に、外部テスト機器が集積回路に高周波テスト信号を供給しない可能性がある。
【０００８】
一般に、外部インタフェースの機能性の検証とは、トランザクションに関連するデータに基づいて、またはトランザクションが、対応するプロトコルと合致しているかどうかに基づいて、外部インタフェース上に送信された該トランザクションを検証することを指す。外部テスト機器は、電力および必須信号を集積回路に供給し、ならびに、集積回路のピンインタフェースの機能性を独自に検証するために用いられる。このように、集積回路のオンチップのセルフテスト機構は、テスト機器が高周波テスト信号を供給する必要性を実質的になくすことができ、その結果、外部インタフェースの機能性およびタイミングをベリファイするのに必要なコストと時間を削減することができる。
【０００９】
一の態様では、集積回路は、テストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するプロセッサと、前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するためのトランザクションを生成するコアロジックと、を具備し、前記プロセッサは、前記テストプログラムに従って前記コアロジックと通信するためのトランザクションを生成し、１つまたは複数の前記トランザクションを検証し、該１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を出力するテストロジックを具備する。
【００１０】
別の態様において、方法は、集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始すること、前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成すること、前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成すること、前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証すること、前記１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を前記テストロジックにおいて生成することを含む。
【００１１】
別の態様において、集積回路は、集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するための手段と、前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成するための手段と、前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成するための手段と、前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証するための手段と、前記１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を前記テストロジックにおいて生成するための手段とを含む。
【００１２】
別の態様において、コンピュータプログラム製品、命令を有するコンピュータ可読媒体を具備する。該命令は、集積回路上のプロセッサにおいてテストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するためのコードと、前記テストプログラムに従って、前記集積回路上のコアロジックと通信するためのトランザクションを前記プロセッサにおいて生成するためのコードと、前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するために前記コアロジックにおいてトランザクションを生成するためのコードと、前記集積回路上のテストロジックにより、１つまたは複数の前記トランザクションを検証するためのコードと、前記１つまたは複数のトランザクションがバリッドかどうか示すステータス信号を生成するためのコードと、を具備する。
【００１３】
別の態様において、システムは、集積回路と、前記集積回路に電力とクロック信号を供給するテスト機器を具備する。前記集積回路は、テストプログラムの命令を実行して送信モードおよび受信モードの一方の動作を開始するプロセッサと、前記テストプログラムに従って前記プロセッサおよび１つまたは複数の外部デバイスと通信するためのトランザクションを生成するコアロジックと、を具備し、前記プロセッサは、前記テストプログラムに従って前記コアロジックと通信するためのトランザクションを生成し、１つまたは複数の前記トランザクションを検証し、該１つまたは複数のトランザクションがバリッドであるかどうか示すステータス信号を出力するテストロジックを具備する。
【００１４】
この開示に記述された技術は、ハードウェア、ソフトウェア、ファームウェアあるいはそれらの任意の組み合わせで実装してもよい。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはデジタル信号プロセッサ（ＤＳＰ）のような１または複数のプロセッサで実行されてもよい。該技術を遂行するソフトウェアは、コンピュータ可読媒体に最初に記憶され、プロセッサにロードされ、実行されてもよい。したがって、この開示は、実行時に本開示で説明されているような技術をデバイスに行なわせる。命令を包含するコンピュータ可読媒体をも意図する。場合によっては、コンピュータ可読媒体は、コンピュータ可読媒体を包含するコンピュータ・プログラムプロダクトの一部を形成してもよい。
【００１５】
この開示の１つまたは複数の態様の詳細は、添付図面と以下の説明で述べられる。本開示の他の特徴、目的および利点は、詳細な説明、図面、およびクレームから明らかになる。
【図面の簡単な説明】
【００１６】
【図１】図１は、セルフテスト機構を備えた集積回路および集積回路をテストするための外部テスト機器を示すブロック図である。
【図２】図２は、図１の集積回路をより詳細に示すブロック図である。
【図３】図３は、図２における集積回路の例示のコンポーネントをより詳細に示すブロック図である。
【図４】図４は、図２の集積回路によって行なわれ得るセルフテスト技術の実施例を示すフローチャートである。
【図５】図５は、図２の集積回路によって行なわれ得るセルフテスト技術の実施例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
集積回路は、商用で販売され使用される前に適切な動作を確認するために、製造後にテストされる。集積回路のテストは、外部デバイスと通信するために用いられる外部インタフェースの機能性を検証することを含んでいてもよい。一般に、ホストコンピュータは、テストプログラムを開発し、シミュレーションを実行して外部インタフェース用のトレースファイルを生成するために使用される。本開示においてテストベクトル、ベクトルまたはテストデータとも呼ばれるトレースファイルが生成された時点で、それらは、該テストデータに従って集積回路にテスト信号を供給するテスト機器にロードされる。
【００１８】
このような集積回路のテストには、集積回路の外部インタフェースの複雑な機能性をカバーするために多数のテストベクトルを要することから、多大な時間がかかり得る。また、外部インタフェースのタイミングをベリファイするために、テスト機器は、集積回路の最も高い動作周波数をサポートしなければならないので、テストは高価なものとなり得る。集積回路の複雑性およびクロック周波数はたびたび増すことから、外部テスト機器の性能が、新規の集積回路をテストする際の制限要因になることがある。すなわち、低い周波数で動作する集積回路のテストのために設計された古いテスト機器は、より高い動作周波数で新規の集積回路をテストするのに用いることはできない。ますます高い周波数で集積回路をテストすることができる新規の外部テスト機器を入手するのはコスト高であって、追加の時間を要するかも知れない。
【００１９】
本開示では、高周波外部インタフェースの機能性の検証のためのセルフテスト機構を備えた集積回路について説明する。外部インタフェースの例は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）インターフェースバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バス、および高周波（例えば２００ＭＨｚ以上）で動作する他の外部インタフェースのようなバスインタフェースおよびメモリインターフェースを含んでいる。本開示の種々の態様に従い、テストロジックは、集積回路上に組み込まれ、外部インタフェースの機能性を検証するように構成されてもよい。ある態様では、テストロジックは、外部テスト機器から電力および非テスト信号を受け取りながら外部インタフェース機能性を検証するように構成されてもよい。故に、外部テスト機器が集積回路に高周波テスト信号を供給しない可能性がある。
【００２０】
外部インタフェースの機能性の検証とは、トランザクションに関連するデータに基づいて、またはトランザクションが、対応するプロトコルと合致しているかどうかに基づいて、外部インタフェース上に送信された該トランザクションを検証することを指す。外部テスト機器は、電力および非テスト信号、すなわち集積回路の動作にとって必須な信号、を集積回路に供給し、ならびに、集積回路のピンインタフェースの機能性を独自に検証するために用いられる。このように、集積回路のオンチップのセルフテスト機構は、テスト機器が高周波テスト信号を供給する必要性を実質的になくすことができ、その結果、外部インタフェースの機能性およびタイミングをベリファイするのに必要なコストと時間を削減することができる。
【００２１】
図１は、集積回路１２の高周波外部インタフェースの機能性を検証するためのシステム１０を示すブロック図である。図１に示すように、システム１０は、集積回路１２とテスト機器２２を含んでいる。一般に、集積回路１２は、テスト機器２２が高周波外部インタフェースの機能性を検証するための高周波テスト信号を供給する必要性を実質的になくすセルフテスト機構を含んでいる。従って、テスト機器２２は、テストプロセス中に、集積回路１２に電力、および非テスト信号（すなわち動作に必須の信号）を供給する比較的低コストのテスト機器とすることができる。
【００２２】
集積回路１２は、シリコンチップのような半導体基板に実装された１つまたは複数の小型回路を包含してもよい。一般に、集積回路１２は、１つまたは複数の外部インタフェースを通じて外部デバイス（不図示）と通信する特定用途向け集積回路（ＡＳＩＣ）または汎用集積回路であってもよい。例えば、集積回路１２は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）、移動電話ハンドセット、ネットワークデバイスまたは他の電子機器で用いるように構成されてもよい。集積回路１２は、１つまたは複数の外部インタフェースを通じて、システムメモリ、ディスクドライブ、キーボード、モニタまたはディスプレイ、マウス、プリンタ、スキャナー、外部記憶装置および他の外部入力／出力（Ｉ／Ｏ）デバイスのような外部デバイスと通信するように構成されてもよい。したがって、集積回路１２は、少なくとも１つの外部デバイス、すなわち、半導体基板から離れた電子的コンポーネントと通信するように構成された任意の集積回路であってもよいことが理解されるべきである。
【００２３】
図１において、集積回路１２は、プロセッサ１４、コアロジック１６、テストロジック１８およびピンインタフェース２０を含んでおり、テスト機器２２にマウントされる。プロセッサ１４は、ローカルメモリに記憶されたコンピュータプログラム命令を実行し、該記憶された命令によって指示されるとおりにデータを処理するプログラマブルなプロセッサである。例えば、プロセッサ１４は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、または上記コンポーネントの組合せとすることができる。
【００２４】
一般に、プロセッサ１４は、送信モードまたは受信モードで動作する。一実施例において、プロセッサ１４は、送信モードでは外部デバイス（不図示）にデータをライトするように動作し、受信モードでは外部デバイス（不図示）からデータを受け取るように動作する。他の実施例において、プロセッサ１４が、外部デバイスにデータをライトすることなく送信モードで動作し、外部デバイスからデータをリードすることなく送信モードで動作してもよい。送信モードおよび受信モードで生成されるトランザクションのことを、本開示では、それぞれ、ライトトランザクションおよびリードトランザクションと呼ぶことにする。送信モードで動作する場合、プロセッサ１４は、要求トランザクションとも呼ばれるライトトランザクションを生成し、コアロジック１６に該要求トランザクションを送る。一実施例として、要求トランザクションは、外部デバイスを識別することができ、該外部デバイスにライトされるべきデータを含んでいてもよい。
【００２５】
受信モードで動作する場合、プロセッサ１４は同じように動作する。すなわち、プロセッサ１４は、リードトランザクションを生成し、コアロジック１６に該リードトランザクションを送る。いずれの場合、すなわち、送信モードまたは受信モードで動作する場合でも、プロセッサ１４は、コアロジック１６に与えられたプロトコルに従って要求トランザクションを生成する。より詳細に説明するように、コアロジック１６は、異なるプロトコルに従って通信する異なるブロックを包含してもよい。従って、プロセッサ１４は、コアロジック１６の対応するブロックのプロトコルに従ってトランザクションを生成する。
【００２６】
コアロジック１６は、プロセッサ１４と１つまたは複数の外部デバイス（不図示）との間でデータを送信するための外部インタフェースを提供する。特に、コアロジック１６は、対応する外部インタフェースに関連するプロトコルに従ってトランザクションを生成し、プロセッサ１４と外部デバイスとの間のトランザクションをルーティングすることにより、プロセッサ１４と外部デバイスの間の通信を管理する。例えば、送信モードで動作する場合、コアロジック１６は、プロセッサ１４から受け取ったライト（要求）トランザクションごとに、ライトトランザクションを生成し、適切な外部デバイスへの該ライトトランザクションの経路を選択する。コアロジック１６は、場合によっては、ライトトランザクションを確認するために、プロセッサ１４に応答メッセージを送ってもよい。またコアロジック１６は、外部デバイスに送られた、対応するライトトランザクションに応じて、外部デバイスからメッセージを受け取ってもよい。コアロジックは外部デバイスからのメッセージを受け取るのであって、コアロジック１６は該メッセージを処理し、プロセッサ１４に適切な応答を送ってもよい。
【００２７】
同様に、受信モードで動作する場合、コアロジック１６は、プロセッサ１４から受け取ったリード（要求）トランザクションを処理し、対応するリードトランザクションを生成し、適切な外部インタフェースデバイスに送る。コアロジック１６は、外部デバイスに関連するプロトコルに従ってリードトランザクションを生成する。リードトランザクションに応じて、コアロジック１６は、外部デバイスからメッセージを受け取る。コアロジック１６は、該メッセージを処理し、対応するメッセージをプロセッサ１４に送る。場合によっては、コアロジック１６は、プロセッサ１４から受け取ったリードトランザクションに応じて、プロセッサ１４にメッセージを送ってもよい。
【００２８】
コアロジック１６および１つまたは複数の外部デバイスは、シングルスバスまたは集合バス上で通信してもよい。各バスは、１つまたは複数の外部デバイスにコアロジック１６をつなぎ、特定のプロトコル、タイミングおよび帯域幅性能に従って動作する、異なるアーキテクチャを有してもよい。外部デバイスに集積回路１２を相互接続するために用いることのできるバスアーキテクチャの実施例は、メモリーバス、産業標準アーキテクチャ（ＩＳＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、アドバンストグラフィックスプロセッサ（ＡＧＰ）バス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンスト高性能バス（ＡＨＢ）、アドバンスト拡張インタフェース（ＡＸＩ）バス、アドバンストテクノロジーアタッチメント（ＡＴＡ）バス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、イーサネットバス、ユニバーサルシリアルバス（ＵＳＢ）、およびシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バスを含む。外部デバイスに集積回路１２をつなぐために他のバスアーキテクチャが用いられてもよい。コアロジック１６とプロセッサ１４は、１つまたは複数の分離したバス上で通信してもよい。一実施例において、フロントサイドバスと呼ばれる分離した専用バスは、プロセッサ１４とコアロジック１６の間のトランザクションを運ぶ。
【００２９】
一実施例として、集積回路１２がパーソナルコンピュータ内で用いられてもよい。この実施例において、コアロジック１６は、中央処理装置（ＣＰＵ）として動作するプロセッサ１４と、システムメモリとの間の高周波メモリーバス上の通信を管理することができる。コアロジック１６は、プロセッサ１４と、キーボード、モニター、およびマウスのうちの１以上との間のＩＳＡバス上の通信を管理することもできる。さらに、コアロジック１６は、プロセッサ１４と、イーサネット拡張カード、スモールコンピュータシステムインターフェース（ＳＣＳＩ）カード、または他のＰＣＩカードの１以上との間のＰＣＩバス上の通信を管理することができる。さらに、コアロジック１６は、プロセッサ１４と専用のビデオプロセッサとの間のＡＧＰバスによる通信、プロセッサ１４とＣＤ−ＲＯＭまたは他のハードディスクとの間のＡＴＡバスによる通信、プロセッサ１４と、プリンタ、スキャナー、外部大容量記憶装置または他のＵＳＢ互換周辺機器の１以上との間のＵＳＢによる通信を管理することができる。
【００３０】
パーソナルコンピュータ内での動作において、集積回路１２が、例えばハードディスクドライブ、フラッシュディスクドライブまたはリムーバブルメモリカードといった記憶モジュールに記憶されたファイルを取得し、該ファイルをモニターに表示してもよい。この場合、集積回路１２は、ディスクモジュールと通信するための第１の外部インタフェース、システムメモリと通信するための第２の外部インタフェース、およびディスプレイモニターと通信するための第３の外部インタフェースを利用してもよい。外部インタフェースの各々は、異なるプロトコルに従って通信してもよい。例えば、集積回路１２は、先ず、ディスクモジュールに関連するプロトコルに従ってファイルを要求する。ディスクモジュールが要求を受け取ると、集積回路１２にファイルを提供する。その後、集積回路１２は、データを記憶するためのシステムメモリプロトコルに従って、システムメモリにファイルをライトする。集積回路１２は、モニターにファイルを表示する準備が整うと、システムメモリからデータをリードし、ディスプレイモニタのための適切なプロトコルに従ってディスプレイモニタにライトする。集積回路１２は、これらの異なるモジュールからデータをリードし、データをライトするために、プロトコルに従わなければならない。プロトコルに従わなければ、モジュールは、正しいデータを記憶しないし、提供もしない。
【００３１】
別の実施例として、集積回路１２は、移動体電話ハンドセットのような無線通信装置で用いるように構成されてもよい。この実施例において、集積回路１２は、プロセッサ１４と、メモリーバス経由のシステムメモリ、ＩＳＡバス経由のキーパッド、ＵＳＢバス経由のリムーバブルメモリカードのようなリムーバブル記憶装置、ＰＣＩバス経由のディスプレイ画面、異なるＰＣＩバス経由のカメラモジュール等との間の通信をコアロジック１６が管理する、モバイルステーションモデム（ＭＳＭ）チップであってもよい。この実施例において、プロセッサ１４は、ユニバーサル移動体通信システム（ＵＭＴＳ）、グローバル移動体通信システム（ＧＳＭ）、符号分割多元接続（ＣＤＭＡ）プロトコルおよび／または汎用パケット無線サービス（ＧＰＲＳ）プロセッサ、として動作してもよい。
【００３２】
集積回路１２がＭＳＭチップとして動作するように構成される場合、集積回路１２が、写真撮影のためにカメラモジュール、記憶モジュール、システムメモリ、およびディスプレイ画面とのインタフェースをとってもよい。集積回路１２は、異なるプロトコルに従って、これらの外部デバイスの各々とのインタフェースをとってもよい。例えば、集積回路１２は、写真をキャプチャーするためのカメラモジュールとの通信を開始するために、カメラモジュールに関連するプロトコルに従う。カメラモジュールが写真をキャプチャーすると、集積回路１２は、キャプチャーされたイメージデータをリードし、システムメモリにイメージデータをライトするための要求を該システムメモリに送る。それがシステムメモリにある間、プロセッサ１４はイメージデータを処理してもよい。処理が完了すると、集積回路１２は、システムメモリプロトコルに従うシステムメモリからデータをリードし、ディスプレイ画面に画像を転送する。画像の記憶をユーザーが要求する場合、集積回路１２は、ディスクドライブに画像を転送する。また、集積回路１２は、カメラインタフェース、システムメモリインタフェース、ディスプレイインターフェース、フラッシュカード／ディスクドライブインタフェースのようなＭＳＭチップの外部インタフェースの各々と、異なるプロトコルに従って通信する。この理由で、集積回路１２は、各外部インタフェース上の通信をテストすることにより製造後機能性を検証する。
【００３３】
コアロジック１６は、１つまたは複数の外部インタフェースを提供する、つまり、プロセッサ１４と少なくとも１つの外部デバイスの間の通信を管理する。特に、コアロジック１６とプロセッサ１４は、単一のプロトコルに従って互いに通信してもよい。しかしながら、コアロジック１６は、プロセッサ１４と通信するために用いられるプロトコルとは異なる各プロトコルに従って、外部インタフェースの各々と通信してもよい。言いかえれば、コアロジック１６は、例えばシステムメモリにデータをライトするトランザクション要求を受け取るための第１のプロトコルに従ってプロセッサ１４と通信してもよく、システムメモリにデータをライトするためにシステムメモリにトランザクションを送る第２のプロトコルに従ってプロセッサ１４と通信してもよい。したがって、コアロジック１６は、しかるべきプロトコルに従ってトランザクションを生成することに関与する。
【００３４】
本開示のいくつかの実施例において、外部インタフェースの少なくとも１つは、高周波外部インタフェースである。高周波外部インタフェースは、およそ２００ＭＨｚからおよそ４００ＭＨｚの範囲で、およそ２００ＭＨｚ以上の周波数で動作してもよく、または、およそ４００ＭＨｚ以上の周波数で動作してもよい。ＰＣＩ、ＡＨＢおよびＡＸＩバスは、例示の高周波外部インタフェースである。以上説明されたパーソナルコンピュータおよび無線通信装置の実施例に関して、メモリーバス、ＰＣＩバス、ＡＧＰバス、ＡＴＡバスおよびＵＳＢバスは、高周波インタフェースであってもよい。他の高周波外部インタフェースは、ＥＩＳＡバス、ＡＨＢバス、ＡＸＩバス、ＡＴＡバス、イーサネットバス、ＳＣＳＩバスおよびＳＡＴＡバスを含んでいる。
【００３５】
テストロジック１８は、集積回路１２の半導体基板上に組み込まれ、集積回路１２の高周波外部インタフェースの機能性を検証するように構成される。高周波外部インタフェースの機能性の検証とは、該高周波インタフェース上に送信されたトランザクションを検証することを指す。一実施例態様において、テストロジック１８は、トランザクションに関連するデータに基づいて、該トランザクションを検証してもよい。別の態様において、テストロジック１８は、トランザクションが該トランザクションに関連するプロトコルと合致しているかどうかに基づいて、該トランザクションを検証してもよい。トランザクションがプロトコルと合致しているかどうかに基づいた該トランザクションを検証する場合、テストロジック１８は、該トランザクションに関連するデータに基づいて、トランザクションを検証してもよい。
【００３６】
トランザクションを検証するために、テストロジック１８は、最初に、トランザクションが送られる通信チャネルまたはバスをスヌープする。以下でより詳細に説明するように、テストロジック１８は、プロセッサ１４とコアロジック１６の間の通信チャネルまたはバス、もしくは、コアロジック１６とピンインタフェース２０の間の通信チャネルまたはバスをスヌープしてもよい。いずれにせよテストロジック１８がトランザクションを得た場合、テストロジック１８は、トランザクションを検査し、該トランザクションがバリッドであるかどうか判定する。トランザクションは、例えば、トランザクションに関連するデータを参照データと比較すること、または、トランザクションが関連プロトコルと合致しているかどうか判定することによって調査してもよい。一実施例において、トランザクションが関連プロトコルと合致しているかどうか判定することは、プロトコルによって定義された制御信号をチェックすることを含んでもよい。他の実施例では、トランザクションが関連プロトコルと合致しているかどうか判定することは、制御信号をチェックすることを要しない。いずれにせよ、テストロジック１８は、トランザクションがバリッドであるかどうか、すなわち、正当性テストに合格したか落第したかを示すステータス信号を出力する。この信号は、例えば、ピンインタフェース２０の指定のピンを通じて出力される。その後、ユーザーは、テスト機器２２と連動するホストコンピュータのディスプレイモニタのステータス信号を見ることができ、集積回路１２が機能しているかどうかを判定する。
【００３７】
本開示で説明されるような、集積回路１２の高周波外部インタフェースの機能性の検証は、テスト機器２２が集積回路１２に高周波信号を供給することを要しない。もっと正確に言えば、テスト機器２２は、プロセッサ１４のローカルメモリにテストプログラムをロードするために用いられる。プロセッサ１４は、送信および受信モードでの動作を集積回路１２にシミュレートさせるテストプログラムを実行する。言いかえれば、テストプログラムは、プロセッサ１４によって実行されたとき、プロセッサ１４とコアロジック１６に１つまたは複数の外部インタフェースによって送られるライトおよびリードトランザクションを生成させる命令を含んでいる。テストロジック１８は、集積回路１２の通信チャネルをスヌープしてトランザクションを得、該トランザクションを検査してそれらの正当性を判定する。このように、テストロジック１８は、外部インタフェースの各々によって通信する場合にプロセッサ１４とコアロジック１６が、対応するプロトコルに従っていることを検証する。その結果、テストは、種々の動作条件についてオンチップで完了するのであって、そうでなければ必要となる、各動作条件セットについてテストをセットアップし、かつ／または開始するという手仕事を要しない。これは、外部インタフェースの機能性およびタイミングをベリファイするのに必要な時間とコストを削減する。またテスト機器２２を、電力、接地、クロック信号、例えばシステムクロック、システムリセットなどのような非テスト信号を集積回路１２に供給し、集積回路１２にテストプログラムをロードするために用いられる低価格機器とすることができる。このように、テスト機器２２を高周波テスト信号を提供するために変更し、アップデートする必要はない。
【００３８】
本開示では、集積回路１２が高周波インタフェースの機能性を検証するものとして説明されるが、任意の周波数で動作する外部インタフェースの機能性を検証するためにテストロジック１８が用いられてもよい。これは、高周波外部インタフェースの機能性を検証するには既存のテスト機器をアップデートしたり新規のテスト機器を購入するのに高いコストがかかることに加え、各外部インタフェースは、あらゆる動作条件（例えば供給電圧範囲、温度範囲、プロセスコーナー）にでしばしばテストされることから任意の周波数で動作する外部インタフェースの機能性の検証は複雑で時間のかかるタスクとなる可能性があるためである。さらに、集積回路間に構成変化があると、テストプログラムに手動で訂正を加えることを要する。
【００３９】
しかしながら、テストロジック１８が半導体基板上で追加のリアルエステートを占めるので、テスト機器を通じてテスト信号を供給することによって、より低い周波数（例えば２００ＭＨｚ未満）で動作する外部インタフェースを検証するのが望ましいかもしれないことが認識される。これは、テストロジックに割り当てられる基板スペースのコストと、本開示において説明される、セルフテスト機構を用いることなしにテストを行うコストとの間のトレードオフに依存する。言いかえれば、テストロジック１８が占有する半導体基板上のリアルエステートのコストと、本開示の時点で良く知られた技術に従い外部インタフェースの機能性の検証のための信号を供給するためにテスト機器を用いることに関連するコストとの間にトレードオフが存在する。したがって、本開示において説明された外部インタフェースの機能性を検証するためのセルフテスト機構は、任意の周波数で動作する外部インタフェースの機能性の検証のために用いられてもよいが、特に高周波（例えば２００ＭＨｚ以上）で動作する外部インタフェースに有用であるかもしれないことが理解されるべきである。
【００４０】
図２は、集積回路１２をより詳細に示すブロック図である。特に、集積回路１２は、図２において、外部インタフェースコントローラ３０Ａおよび３０Ｂと、テストロジックモジュール３２Ａおよび３２Ｂを含むものとして示される。外部インタフェースコントローラ３０Ａおよび３０Ｂは、図１におけるコアロジック１６に対応する。すなわち、外部インタフェースコントローラ３０Ａおよび３０Ｂは、異なる外部インタフェースに関連する、コアロジック１６の個別のブロックまたはモジュールを表わす。例えば、外部インタフェースコントローラ３０Ａが、ＰＣＩバスのようなある種類の高周波外部インタフェース上の通信を管理し、外部インタフェースコントローラ３０Ｂが、ＡＧＰバスのような異なる種類の高周波外部インタフェース上の通信を管理してもよい。外部インタフェースコントローラ３０Ａおよび３０Ｂは、異なるプロトコルに従って、それぞれの外部デバイスとの通信を管理してもよい。図２において、外部インタフェースコントローラ３０Ａは、バス３１によりプロセッサ１４と通信し、対応する外部デバイス（不図示）とバス３３により通信する。外部インタフェースコントローラ３０Ｂは、バス３５によりプロセッサ１４と通信し、対応する外部デバイス（不図示）とバス３７により通信する。しかしながら、プロセッサ１４と外部インタフェースコントローラ３０Ａおよび３０Ｂは、１つまたは複数のバスの一部を共有してもよいことが理解されるべきである。すなわち、図２は、バス３１、３３、３５および３７として参照される通信チャネルを表しているが、これらの通信チャネルは単一または複数のバスを表わしてもよい。一実施例として、バス３１および３５は、複数の外部インタフェースコントローラを含みうるコアロジックとプロセッサ１４の間のチャネルを提供する、フロントサイドバスと呼ばれるシングルバスとすることができる。
【００４１】
同様に、テストロジックモジュール３２Ａおよび３２Ｂは、異なる外部インタフェースに関連するテストロジック１８の個別のブロックまたはモジュールを表わす。テストロジックモジュール３２Ａおよび３２Ｂの各々は、対応する高周波外部インタフェースの機能性を検証する。図２において、テストロジックモジュール３２Ａは外部インタフェースコントローラ３０Ａに関連付けられ、テストロジックモジュール３２Ｂは外部インタフェースコントローラ３０Ｂに関連付けられている。
【００４２】
テストロジックモジュール３２Ａは、バス３１、バス３５、またはその両方をスヌープしてもよい。例えば、テストロジックモジュール３２Ａがバス３１をスヌープし、送信モードまたは受信モードで動作する際にプロセッサ１４によって生成されたトランザクションを検証してもよい。別の例では、テストロジックモジュール３２Ａがバス３１をスヌープし、外部インタフェースコントローラ３０Ａによって生成され、送信モードまたは受信モードでプロセッサ１４に送られたトランザクションを検証してもよい。受信モードでプロセッサ１４に送られるトランザクションを外部インタフェースコントローラ３０Ａが生成する場合には、テスト機器２２（図２では不図示）は、高周波信号を提供しないしチェックもしない。正確に言えば、テストロジックモジュール３２Ａは、プロセッサ１４によって提供されるシード値に基づいて、プロトコルによって要求されるとおりの他の信号およびデータを外部インタフェースコントローラ３０Ａに送る。
【００４３】
外部インタフェースコントローラ３０Ａは、テストロジックモジュール３２Ａから受け取ったデータおよび他の信号に基づいて、対応するリードトランザクションを生成し、該リードトランザクションをプロセッサ１４に送る。このように、テストロジックモジュール３２Ａは、該テストロジックモジュール３２Ａが外部デバイスの動作をエミュレートし、すなわち外部インタフェースコントローラ３０Ａに適切なデータおよび信号を提供する、典型的なテスト機器として同様に動作する。これについては、図３を参照してより詳細に説明される。付加的な実施例において、テストロジックモジュール３２Ａがバス３３をスヌープし、外部インタフェースコントローラ３０Ａによって生成され、送信モードまたは受信モードでピンインタフェース２０に送られたトランザクションを検証してもよい。
【００４４】
テストロジックモジュール３２Ｂは、同じように動作し、外部インタフェースコントローラ３０Ｂに関連する外部インタフェース上に送信されたトランザクションを検証してもよい。すなわち、テストロジックモジュール３２Ｂは、バス３５、バス３７、またはその両方をスヌープし、送信または受信モードで対応する外部インタフェース上に送信されたトランザクションを検証してもよい。
【００４５】
これらの実施例の各々において、テストロジックモジュール３２Ａおよび３２Ｂは、トランザクションに関連するデータに基づいて、またはトランザクションが、関連するプロトコルと合致しているかどうかに基づいて、トランザクションを検証することができる。関連するプロトコルと合致しているかどうかに基づいてトランザクションを検証することは、当該プロトコルによって定義された規則に従って生成されるトランザクションを検証することを含んでもよい。プロトコルによって定義された規則は、データ表現、シグナリング、認証、エラー検出およびエラー処理を定義する規則を含んでもよい。テストロジックモジュール３２Ａおよび３２Ｂは、トランザクションが、関連するプロトコルと合致しているかどうかに基づいてトランザクションを検証する場合に関連するデータに基づいて、トランザクションを検証してもよい。集積回路１２によって用いられる検証プロセスは、図３に示されたブロック図、ならびに図４および図５に示されたフローチャートを参照して詳細に説明される。
【００４６】
図２は、テストモジュール３２Ａおよび３２Ｂならびに外部インタフェースコントローラ３０Ａおよび３０Ｂを含む２つの高周波外部インタフェースを含むものとして集積回路１２を示しているが、集積回路１２は、１つまたは複数の外部インタフェースを含んでも良い。したがって、図２は単に例示であり、決して、開示を限定するものとみなされるべきではないことが理解されるべきである。むしろ図２の目的は、集積回路の外部インタフェースと、該外部インタフェースの機能性を検証するために該集積回路上に組み込まれるテストロジックとの間の関係を示すことにある。
【００４７】
図３は、集積回路１２のコンポーネントをより詳細に示すブロック図である。特に、図３はプロセッサ１４、外部インタフェースコントローラ３０Ａおよびテストロジックモジュール３２Ａをより詳細に示している。プロセッサ１４および外部インタフェースコントローラ３０Ａは協力して動作し、例えば、外部デバイス（不図示）からデータをリードし、外部デバイス（不図示）にデータをライトするリードおよびライト動作を行なうための外部インタフェースを提供する。特に、プロセッサ１４、外部インタフェースコントローラ３０Ａおよび対応する外部デバイスは、各プロトコルに従って互いと通信する。すなわち、プロセッサ１４および外部インタフェースコントローラ３０Ａは特定のプロトコルに従って互いと通信し、外部インタフェースコントローラ３０Ａおよび外部デバイスは異なるプロトコルに従って互いと通信する。テストロジックモジュール３２Ａは、テスト機器２２のような外部テスト機器が高周波信号を供給しチェックすることを要さずに、外部インタフェースの機能性を検証するための機構を提供する。例えば一の態様では、テストロジックモジュール３２Ａは、プロセッサ１４および外部インタフェースコントローラ３０Ａのいずれかまたは両方で生成されたトランザクションを、該トランザクションに関連するデータに基づいて検証する。別の態様では、テストロジックモジュール３２Ａは、プロセッサ１４および外部インタフェースコントローラ３０Ａのいずれかまたは両方で生成されたトランザクションを、該トランザクションが、関連プロトコルと合致しているかどうかに基づいて検証する。
【００４８】
プロセッサ１４は、メモリ４０、プロセッサ４６、入出力（Ｉ／Ｏ）モジュール４８およびトランザクションモジュール４９を含んでいる。メモリ４０は、テストプログラム４２およびステータス４４を記憶する。テストプログラム４２は、テスト機器２２（不図示）を通じてホストコンピュータによってメモリ４０にロードされ、プロセッサ４６によって実行されたときに、送信モードまたは受信モードの動作を開始する命令を含んでいる。送信モードまたは受信モードで動作する場合、いくつかの実施例において、プロセッサ１４は、外部デバイスにデータをライトするための、または対応する外部デバイスからデータをリードするための動作を行うことができる。他の実施例において、プロセッサ１４が、外部デバイスにデータをライトすることを要さず、また外部デバイスからデータをリードすることを要さずに送信モードまたは受信モードで動作してもよい。一般に、プロセッサ４６は、テストプログラム４２の命令ごとにトランザクションモジュール４９とＩ／Ｏモジュールの４８の動作を制御し、データを処理する。
【００４９】
例えば、送信モードで動作する場合、トランザクションモジュール４９はプロセッサ４６の管理の下でライトトランザクションを生成する。ライトトランザクションの例は、システムメモリにデータをライトする要求、画像をキャプチャーするためのカメラモジュールへの要求、およびデータを表示するためのモニターへの要求を含んでいる。外部デバイスにデータをライトするためのライトトランザクションは、該外部デバイスを識別する情報および該外部デバイスにライトされるべきデータを識別する情報を含んでもよい。
【００５０】
プロセッサ４６は、受信モードで動作する場合に、リードトランザクションを生成するようトランザクションモジュール４９を制御する。リードトランザクションは、ハードディスクまたはリムーバブルメモリカードのようなメモリからデータを取り出す要求、携帯型のデバイスのカメラモジュールによってキャプチャーされた画像データを取り出す要求、周辺機器からデータを取り出す要求を含んでも良い。
【００５１】
Ｉ／Ｏモジュール４８は、バス３１を通じて外部インタフェースコントローラ３０Ａにライトおよびリードトランザクションを送る。バス３１は、プロセッサ１４が外部インタフェースコントローラ３０Ａおよび追加の外部インタフェースコントローラと通信するフロントサイドバスであってもよい。あるいは、バス３１は、プロセッサ１４と外部インタフェースコントローラ３０Ａの間の通信の専用バスであってもよい。
【００５２】
外部インタフェースコントローラ３０Ａは、プロセッサ１４から受け取ったライトおよびリードトランザクションを処理し、現実世界環境において対応する外部デバイスに、対応するライトおよびリードトランザクションを送る。テスト環境では、外部インタフェースコントローラ３０Ａはインタフェース２０の指定のピンに、対応するトランザクションを送る。以下では、送信モードでの動作について、外部インタフェースコントローラ３０Ａの動作を説明している。受信モードでの外部インタフェースコントローラ３０Ａの動作については、混乱を避けるために別途説明する。
【００５３】
図３において、外部インタフェースコントローラ３０Ａは、トランザクションモジュール５０とＩ／Ｏモジュール５２を含んでいる。Ｉ／Ｏモジュール５２は、外部インタフェースコントローラ３０ＡのＩ／Ｏを管理する。Ｉ／Ｏモジュールは、バス３１によって受け取ったライトトランザクションをトランザクションモジュール５２に導き、トランザクションモジュール５０によって生成された、対応するライトトランザクションをバス３３についてする。テスト中に、バス３３は、ピンインタフェース２０（不図示）の指定のピンにつながれる。
【００５４】
トランザクションモジュール５０は、受信ライトトランザクションに含まれていたデータを処理し、Ｉ／Ｏモジュール５２がバス３３についてする、対応するライトトランザクションを生成する。外部インタフェースコントローラ３０Ａは、プロセッサ１４と通信し、異なるプロトコルに従って対応する外部のデバイスと通信することから、トランザクションモジュール５０は、適切なプロトコルに従ってトランザクションを生成する。このように、トランザクションモジュール５０は、あるプロトコルから別のプロトコルにトランザクションを変換するものと見なすことができる。したがって、各外部インタフェースコントローラのトランザクションモジュールは、対応する外部インタフェースに関連するプロトコルに従ってトランザクションを生成しうる。これは、（図１に示される）コアロジック１６が図２におけるコントローラ３０Ａおよび３０Ｂのような複数の外部インタフェースコントローラを含むものとみなすことのできる理由である。したがって、トランザクションモジュール５０は、プロセッサ１４から受け取ったライトトランザクションを、対応する外部デバイスに関連するプロトコルに変換することができる。
【００５５】
上述したように、第１の実施例において、外部インタフェースコントローラ３０Ａは、プロセッサ１４に応答メッセージを送ってもよい。かかる実施例において、トランザクションモジュール５０は応答メッセージを生成し、Ｉ／Ｏモジュール５２はバス３１を通じてプロセッサ１４に該応答メッセージを送る。
【００５６】
第２の実施例において、外部インタフェースコントローラ３０Ａは、通常動作において、すなわち現実世界環境で動作する場合に、対応する外部デバイスから応答メッセージを受け取ってもよい。しかしながら、テスト中に、外部インタフェースコントローラ３０Ａは、テストロジックモジュール３２Ａから応答メッセージを受け取る。すなわち、テストロジックモジュール３２Ａは、例えば、当該プロトコルで必要とされるとおりのデータおよび他の信号を外部インタフェースコントローラ３０Ａに供給することによって、外部インタフェースコントローラ３０Ａに、対応する応答メッセージを生成してプロセッサ１４に送らせる。図３に関して、Ｉ／Ｏモジュール５２は、バス３３を通じてテストロジックモジュール３２Ａからデータおよび他の信号を受け取り、これを、対応する応答メッセージを生成するトランザクションモジュール５０に導く。Ｉ／Ｏモジュール５２は、バス３１を通じて、該対応する応答メッセージをプロセッサ１４に送る。
【００５７】
第３の実施例において、外部インタフェースコントローラ３０Ａは、該第１および第２の実施例に従って応答メッセージを送ってもよい。すなわち、外部インタフェースコントローラ３０Ａは、プロセッサ１４から受け取るライトトランザクションの受信に応じて、該プロセッサ１４に第１の応答メッセージを送ってもよく、外部インタフェースコントローラ３０Ａによって外部デバイスに送られたライトトランザクションに対応する、第３の応答メッセージの受信に応じて、プロセッサ１４に第２の応答メッセージを送ってもよい。
【００５８】
第４の実施例において、外部インタフェースコントローラ３０Ａは、応答信号を何ら生成しない。外部インタフェースコントローラ３０Ａは、上記実施例のうちのいずれに従って動作してもよい。外部インタフェースコントローラ３０Ａのテストは、実施例の各々に従って外部インタフェースコントローラ３０Ａの動作を検証することを含んでもよい。
【００５９】
テストロジックモジュール３２Ａは、送信モードと受信モードにおいてプロセッサ１４および外部インタフェースコントローラ３０Ａによって提供される外部インタフェースの機能性を検証する。またテストロジックモジュール３２Ａは、外部デバイスの動作をエミュレートするために関連プロトコルによって必要とされる他の信号およびデータを、外部インタフェースコントローラ３０Ａに提供する。集積回路素子は、徐々に高まっている動作周波数でテストされる必要があるが、外部テスト機器の代わりに該データおよび信号を供給するテストロジックモジュール３２Ａを用いることによって、外部テスト機器が高周波で動作することは必要なく、これにより変更、アップデート、リプレースの必要がない。
【００６０】
動作中に、プロセッサ１４は、テストロジックモジュール３２Ａを起動し、または利用可能にする。すなわち、プロセッサ４６は、テストプログラム４２に従って制御信号を生成し、これをＩ／Ｏモジュール４８が専用有線接続６１を通じてテストロジックモジュール３２Ａに送る。制御信号を受け取る前の段階では、テストロジックモジュール３２Ａは無効（非アクティブ）であってもよい。従って、プロセッサ１４は、外部インタフェースコントローラ３０Ａにライトトランザクションを送る前に、テストロジックモジュール３２Ａに上記制御信号を送ってもよい。また一方、制御信号の受信に応じて、テストロジックモジュール３２Ａは、バス３１および３３をアクティブにスヌープしてもよい。このようにして、テストロジックモジュール３２Ａは、バスを通じて送られたトランザクションをすべて取得することができ、したがって、適切な時に送信されるトランザクションの検証できることに加え、送信されるトランザクションがあまりにも多数であるかあまりにも少数であるかを判定することもできる。
【００６１】
図３において、テストロジックモジュール３２Ａは検証モジュール６０、擬似ランダムデータ生成器６２およびＩ／Ｏモジュール６４を含んでおり、専用有線接続６１を通じてプロセッサ１４から制御信号を受け取る。Ｉ／Ｏモジュール６４は、送信モードにおいて、バス３１および３３をスヌープし、プロセッサ１４および外部インタフェースコントローラ３０Ａによって生成されたライトトランザクションをそれぞれインターセプトする。またＩ／Ｏモジュール６４はバス３１をスヌープし、外部インタフェースコントローラ３０Ａによってプロセッサ１４に送られる応答メッセージまたはトランザクションを取り出す。
【００６２】
制御信号は、テストロジックモジュール３２Ａが参照データを生成するのに用いられるシード値を含んでいる。特に、擬似ランダムデータ生成器６２は、Ｉ／Ｏモジュール６４からシード値を受け取り、該シード値を用いて、テストプログラム４２によって指定された参照データにマッチするデータすなわち、プロセッサ１４によって生成されたライトトランザクションに関連するデータを生成する。擬似ランダムデータ生成器６２は参照データを検証モジュール６０に出力する。検証モジュール６０は、該参照データを、インターセプトされたトランザクションに関連するデータすなわちバス３１上でインターセプトされたライトトランザクションと比較する。トランザクションがプロトコルと合致しているかどうかに基づいてテストロジックモジュール３２Ａがトランザクションを検証する実施例において、検証モジュール６０は、プロトコルをチェックした後にデータをチェックしてもよい。
【００６３】
プロトコルの例は、データがいつ転送されるか示すのに用いられる信号を定義してもよい。該信号には、データ転送が進行中であることを示す、第１の状態、およびデータ転送が進行中ではないことを示す、第２の状態があってもよい。したがって、検証モジュール６０は、制御信号が第１の状態にあるときにのみ、Ｉ／Ｏモジュール６４によって提供されるトランザクションのデータをチェックしてもよい。制御信号が第１の状態にある場合に、データを検証することによって、検証モジュール６０は、該トランザクションは、プロトコルおよびトランザクションに関連するデータと合致していることを検証する。このようにして、検証モジュール６０は、トランザクションがプロトコルと合致していて、データがバリッドである場合、トランザクションがプロトコルと合致していて、データが非バリッドの場合、およびトランザクションがプロトコルと合致していない場合を判定することができる。しかし、検証モジュール６０が、トランザクションに関連するデータのみをチェックする場合、データはバリッドであるがトランザクションはプロトコルと合致していないかもしれない。この理由で、トランザクションがプロトコルと合致しているかどうかに基づいたトランザクションの検証は、外部インタフェースの機能性を決定するためにより正確なテストを提供することができる。上述の説明は、トランザクション検証の単純で説明的な例を提供するために用いられる実施例であって、決して本開示の内容を限定するものとみなされるべきではない。正確に言えば、プロトコルが複数の信号を定義してもよく、そのような場合に、トランザクションを検証するためにチェックされる複数の状態を定義してもよいことが理解されるべきである。複数の状態が定義される場合、トランザクションの検証は、１つまたは複数の状態のチェックまたは１つまたは複数の状態のシーケンスのチェックを含んでいてもよい。
【００６４】
検証モジュール６０は、トランザクションのステータスを指示するステータス信号を生成する。検証モジュール６０が、関連データに基づいてトランザクションを検証する場合、ステータス信号はトランザクションが合格であるか失敗であるか示すことができる。また一方、トランザクションがプロトコルと合致しているかどうかに基づいて、検証モジュール６０がトランザクションを検証するときには、ステータス信号は、トランザクションがプロトコルと合致していて、データがバリッドである場合、トランザクションがプロトコルと合致していて、データが非バリッドの場合、およびトランザクションがプロトコルと合致していない場合を示すことができる。
【００６５】
図３において、検証モジュール６０は、専用有線接続６１によりステータス信号を出力する。プロセッサ１４は、その受信信号に基づいてステータス４４を更新する。特に、Ｉ／Ｏモジュール４８はプロセッサ４６にステータス信号を導き、プロセッサ４６は、メモリ４０におけるステータス４４を更新する。ステータス４４は、外部インタフェースのステータスを示すパラメータである。例えば、ステータス４４は、トランザクションがプロトコルと合致していて、データがバリッドである場合に「ＰＡＳＳ」値を記憶し、トランザクションがプロトコルと合致しているが、データが非バリッドである場合に「ＤＡＴＡ  ＥＲＲＯＲ」値を記憶し、トランザクションがプロトコルと合致していない場合に「ＰＲＯＴＯＣＯＬ  ＥＲＲＯＲ」値を記憶してもよい。この場合、プロセッサ１４は、テスト機器２２（図３では不図示）によって読み出され、テスト機器２２につながれたホストコンピュータを通じてユーザーに表示される、ステータス４４に記憶された値に基づく信号を生成してもよい。別の態様では、検証モジュール６０がＩ／Ｏモジュール６４にステータス信号を送ってもよく、Ｉ／Ｏモジュール６４がピンインタフェース２０の指定のピンに該ステータス信号を直接出力してもよい。
【００６６】
テストロジックモジュール３２Ａは、同じようなプロセスを用いて、外部インタフェースコントローラ３０Ａによって生成されたライトトランザクションを検証する。すなわち、Ｉ／Ｏモジュール６４は、バス３３をスヌープしてライトトランザクションをインターセプトし、検証モジュール６０は、このインターセプトされたトランザクションに関連するデータを、擬似ランダムデータ生成器６２によって生成された参照データと比較する。その後、検証モジュール６０は、該比較に基づいたステータス信号を出力する。
【００６７】
上述したように、いくつかの実施例態様では、外部インタフェースコントローラ３０Ａは、外部デバイスからの応答メッセージの受信に応じて、プロセッサ１４に応答メッセージを送る。かかる実施例態様において、テストロジックモジュール３２Ａは、また、いくつかの実施例態様で、外部インタフェースコントローラ３０Ａは、外部インタフェースコントローラ３０Ａによって生成されたライトトランザクションを受け取ることまたは検証することに応じて、関連プロトコルによって必要なデータおよび他の信号を外部インタフェースコントローラ３０Ａに提供する。外部インタフェースコントローラ３０Ａは、通常動作では外部デバイスにより生成されるはずの応答メッセージをエミュレートする。このように、テストロジックモジュール３２Ａは、典型的には外部テスト機器によって提供される機能性を提供し、テスト機器２２（図３では不図示）は、低価格のテスト機器として実装することができる。図３に関して、検証モジュール６０は、応答メッセージ、すなわちプロトコルが必要とするデータおよび他の信号を生成してもよい。また、Ｉ／Ｏモジュール６４はバス３３上の外部インタフェースコントローラ３０Ａに該応答メッセージを送る。
【００６８】
外部インタフェースコントローラ３０Ａは、バス３１上のプロセッサ１４に、対応する応答メッセージを送る。先の詳細な説明で提供された技術を用いて、テストロジックモジュール３２Ａは、バス３１をスヌープし、プロセッサ１４に送られた応答メッセージをインターセプトして検証する。
【００６９】
先の詳細な説明は、送信モードでの集積回路１２の動作に関する。以下の説明は、受信モードにおける集積回路１２の動作に関する。外部インタフェースの機能性を受信モードで動作する場合に検証するために、集積回路１２は、受信モードにおいてプロセッサ１４および外部インタフェースコントローラ３０Ａによって生成されたトランザクションを、トランザクションに関連するデータに基づいて、またはトランザクションが、対応するプロトコルと合致しているかどうかに基づいて、検証する。これには、プロセッサ１４によって生成され外部インタフェースコントローラ３０Ａに送られるリードトランザクション、外部インタフェースコントローラ３０Ａによって生成されピンインタフェース２０に送られるリードトランザクションおよび外部インタフェースコントローラ３０Ａによって生成されプロセッサ１４に送られる応答メッセージを検証することを要する。上述したように、いくつかの実施例態様において、外部インタフェースコントローラ３０Ａは、プロセッサ１４から受け取ったリードトランザクションに対応する応答メッセージを生成してプロセッサ１４に送ってもよい。かかる実施例態様において、この応答メッセージもまた検証される。
【００７０】
受信モードで動作する場合、プロセッサ１４はテストプログラム４２に従ってリードトランザクションを生成し、該リードトランザクションを外部インタフェースコントローラ３０Ａに送る。外部インタフェースコントローラ３０Ａは、対応するリードトランザクションを外部デバイスに送る。テストロジックモジュール３２Ａは、送信モードで生成されたライトトランザクションを検証するために用いられたものと同様の技術を用いてリードトランザクションを検証する。外部インタフェースコントローラ３０Ａがプロセッサ１４からリードトランザクションを受け取った後にプロセッサ１４に応答メッセージを送ると、テストロジックモジュール３２Ａもまた、応答メッセージを検証するために同じ検証技術を用いる。
【００７１】
また一方、受信モードで動作する場合、外部インタフェースコントローラ３０Ａは外部デバイスから応答メッセージを受け取る。該応答メッセージは、同外部デバイスに送られたリードトランザクションに対応する。外部テスト機器２２は高周波信号を提供しないので、テスト中に、テストロジックモジュール３２Ａは、プロトコルが必要とする他の信号およびデータを外部インタフェースコントローラ３０Ａに供給する。したがって、テストロジックモジュール３２Ａは、外部インタフェースコントローラ３０Ａにプロトコルが必要とする他の信号およびデータを供給し、対応する応答メッセージまたはトランザクションを外部インタフェースコントローラ３０Ａに生成させ、それをプロセッサ１４に送らせるという点において、典型的なテスト機器として同じように動作する。
【００７２】
図３に関して、検証モジュール６０は、プロトコルが必要とする他の信号およびデータを含みうる応答メッセージを生成し、Ｉ／Ｏモジュール６４は、バス３３上の外部インタフェースコントローラ３０Ａに該応答メッセージを送る。Ｉ／Ｏモジュール６４は、応答メッセージを送る前に、バス３３に関する適切なプロトコルを適切なプロトコルを待機してもよい。検証モジュール６０は、外部インタフェースコントローラ３０Ａから受け取った、対応するリードトランザクションに関連するステータス信号を生成した後に、応答メッセージを生成してもよい。
【００７３】
Ｉ／Ｏモジュール５２は、応答メッセージを受け取り、トランザクションモジュール５０に送る。トランザクションモジュール５０は、応答メッセージを処理し、Ｉ／Ｏモジュール５２がバス３１上のプロセッサ１４に送る、対応する応答メッセージを生成する。
【００７４】
テストモジュール３２Ａは、外部インタフェースコントローラ３０Ａによって生成された応答メッセージを検証する。特に、Ｉ／Ｏモジュール６４はバス３１をスヌープして応答メッセージを取り出し、検証モジュール６０は、関連データまたは該応答メッセージが関連プロトコルと合致しているかどうかに基づいて、該取り出された応答メッセージを検証する。検証モジュール６０が、応答メッセージがバリッドであるかどうか示すステータス信号を出力し、検証プロセスを完了する。
【００７５】
図４は、トランザクションに関連するデータに基づいて高周波外部インタフェース上に送信されたトランザクションを検証する集積回路１２によって遂行されうる技術の実施例を示すフローチャートである。一般に、図４に示されたステップは、送信モードまたは受信モードで生成されたトランザクションを検証するために用いられてもよく、図３に示された集積回路１２のコンポーネントに関して説明する。フローチャートは、製造後テスト時に集積回路１２がピンインタフェース２０を通じてテスト機器２２にマウントされると、開始する。最初に、ホストコンピュータは、集積回路１２にテストプログラムをロードする（７０）。テストプログラムは、ホストコンピュータ上で開発されてもよく、テスト機器２２を通じてプロセッサ１４のプログラムメモリ４２にロードされてもよい。
【００７６】
プロセッサ１４および外部インタフェースコントローラ３０Ａは、テストプログラム命令についてトランザクションを生成し（７２）、バス上に該トランザクションを送る（７４）。例えばステップ７２および７４は、プロセッサ１４が、外部インタフェースコントローラ３０Ａへのライトトランザクションをバス３１上に送ることまたは外部インタフェースコントローラが、送信モードで動作する場合に、外部デバイスへの、対応するライトトランザクションをバス３３上に送ることであってもよい。集積回路１２が受信モードで動作する一実施例において、動作７２および７４は、プロセッサ１４が外部インタフェースコントローラ３０Ａへのリードトランザクションをバス３１上に送ること、外部インタフェースコントローラ３０Ａが、対応するリードトランザクションを外部デバイスに送ること、または外部インタフェースコントローラ３０Ａがプロセッサ１４に応答メッセージを送ることであってもよい。すなわち、動作７２および７４は、一般に、リードまたはライト動作を行なうプロセスの間に生成されるシングルトランザクションのことを指す。したがって、図４に示されたフローチャートの動作は、完全なライトまたはリード動作を検証するために繰り返されてもよいことは明らかである。
【００７７】
テストロジックモジュール３２Ａは適切なバス（すなわちトランザクションが動作７４で送られるバス）をスヌープし、トランザクションを取り出し、またはインターセプトする（７６）。したがって、テストロジックモジュール３２Ａは、送信モードまたは受信モードでプロセッサ１４によって生成されたトランザクションの検証、受信モードで外部インタフェースコントローラ３０Ａによって生成されたトランザクションの検証、および上記トランザクションの応答の検証のためにバス３１をスヌープしてもよく、送信モードと受信モードで外部インタフェースコントローラ３０Ａによって生成されたトランザクションの検証のためにバス３３をスヌープしてもよい。ライトおよびリード動作には、バス３１および３３上にライトおよびリードトランザクションを送ることを要するので、テストロジックモジュール３２Ａは、一般に、外部インタフェースの完全な信号パスを検証するためにバス３１および３３をスヌープする。
【００７８】
トランザクションを取り出す際、テストロジックモジュール３２Ａは、参照データを生成（７８）し、トランザクションに関連するデータを該参照データと比較することにより、該トランザクションを検証する（８０）。テストロジックモジュール３２Ａは、プロセッサ１４によって提供されるシード値、より具体的にはプロセッサ１４から受け取った制御信号に基づいて、参照データを生成してもよい。制御信号ひいてはシード値は、専用有線接続または対応するバス上に送信されてもよい。
【００７９】
上記比較に基づいて、テストロジックモジュール３２Ａは、トランザクションがバリッドであるかどうか示すステータス信号を生成する（８２）。テストロジックモジュール３２Ａは、ピンインタフェース２０の出力にステータス信号を直接適用してもよい。この出力は、該ステータス信号を表示するためのディスプレイおよびホストコンピュータにつながれてもよい。従って、ユーザーは該ステータスを調べ、ステップ７２で生成されたトランザクションがバリッドかどうかを判定することができる（８４）。あるいは、該ステータス信号をプロセッサ１４が受け取り、読み出しおよびモニター表示が可能なメモリパラメータの値を設定するのに用いてもよい。
【００８０】
図５は、トランザクションが関連プロトコルと合致しているかどうかに基づいて高周波外部インタフェース上に送信されたトランザクションを検証する集積回路１２によって遂行されうる技術の実施例を示すフローチャートである。図５に示されたステップは、送信モードまたは受信モードで生成されたトランザクションを検証するために用いられてもよい。図４に示したフローチャートに同様に、図５に示されたフローチャートのステップは、製造後テスト時に集積回路１２がピンインタフェース２０を通じてテスト機器２２にマウントされると実行される。
【００８１】
最初に、ホストコンピュータは、テスト機器２２を通じて集積回路１２にテストプログラム４２をロードする（１００）。テストプログラム４２は、送信モードと受信モードで動作する場合の外部インタフェースの機能性をテストするために開発されている。したがって、集積回路１２は、テストプログラム命令についてトランザクションを生成し（１０２）し、バス（１０４）上に該トランザクションを送る（１０４）。図４と同様に、動作１０２および１０４は、リードまたはライト動作の時にプロセッサ１４または外部インタフェースコントローラ３０Ａによって生成された単一の、リードまたはライトトランザクションのことを指す。しかし、図５におけるフローチャートの動作は、リードおよびライト動作の際に生成される複数のリードおよびライトトランザクションを検証するために繰り返してもよいことが理解されるべきである。
【００８２】
バスをスヌープすることでトランザクションを取り出し、またはインターセプトすること（１０６）は、テストロジックモジュール３２Ａが、動作１０２においてトランザクションが送信されたバスをスヌープすることであってもよい。テストロジックモジュール３２Ａは、プロセッサ１４から制御信号を受け取ると、適切なバスを能動的にスヌープしてもよい。プロセッサ１４は、テストプログラム４２がメモリにロードされると、テストロジックモジュール３２Ａをイネーブルにする制御信号を送ってもよい。
【００８３】
トランザクションを取り出したら、テストロジックモジュール３２Ａは該取り出したトランザクションが、関連プロトコルと合致しているかどうかに基づいて、該トランザクションを検証する（１０８）。例えば、テストロジックモジュール３２Ａは、プロトコルによって定義された１つまたは複数の信号のチェックにより、トランザクションを検証してもよい。このことは、信号によって定義された１つまたは複数の状態をチェックすること、１つまたは複数の信号によって定義された状態のシーケンスをチェックすることを含んでも良い。例えば、データがいつ転送されるか示す信号をプロトコルが定義する場合、テストロジックモジュール３２Ａは、この信号をチェックし、プロトコルによって指定された時間にデータが転送されているかどうか判定してもよい。だが、より一般的には、テストロジックモジュール３２Ａは、プロトコルによって示される規則を満たすか、つまり、プロトコルと合致しているかどうか判定するようにトランザクションを検査する。
【００８４】
そして、テストロジックモジュール３２Ａは、例えばプロセッサ１４から受け取った制御信号により与えられるシード値に基づいて、参照データを生成してもよい（１１０）。テストロジックモジュール３２Ａは、該トランザクションに関連するデータを参照データと比較することによって検証する（１１２）。こうして、テストロジックモジュール３２Ａは、トランザクションのステータスを示すステータス信号を生成することができる（１１４）。例えば、テストロジックモジュール３２Ａは、トランザクションは関連プロトコルと合致しており、データはバリッドであることを示すステータス信号、トランザクションは関連プロトコルと合致しているがデータはバリッドではないことを示すステータス信号、または、トランザクションがプロトコルと合致していないことを示すステータス信号を生成してもよい。
【００８５】
その結果ユーザーは、該ステータス信号を調べ、トランザクションがバリッドかどうかを判定することができる（１１６）。一実施例として、ステータス信号は、ピンインタフェース２０の指定のピンに出力されてもよいし、プロセッサ１４のメモリに記憶されるパラメータの値を設定するのに用いられてもよい。いずれの場合も、ステータス信号は、ホストコンピュータのモニター上に表示するためにテスト機器２２によって読出されてもよい。
【００８６】
種々の態様および実施例を説明した。しかし、以下のクレームの範囲から外れることなく、本開示の構造または技術に対して変更をなしてもよい。例えば、ここで説明した集積回路は、相補型金属酸化膜半導体（ＣＭＯＳ）、バイポーラ接合トランジスタ（ＢＪＴ）、バイポーラＣＭＯＳ（ＢｉＣＭＯＳ）、シリコンゲルマニウム（ＳｉＧｅ）、ガリウム砒素（ＧａＡｓ）等のような種々のＩＣプロセス技術で製造してもよい。これら、および開示の他の態様は、以下のクレームの範囲内である。
【図１】
2010537156.tif 000003
【図２】
2010537156.tif 000004
【図３】
2010537156.tif 000005
【図４】
2010537156.tif 000006
【図５】
2010537156.tif 000007
【国際調査報告】
2010537156.tif 000008
2010537156.tif 000009
2010537156.tif 000010