(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-13
(45)【発行日】2023-06-21
(54)【発明の名称】オンチップシステムテストコントローラを使用した自動テスト装置
(51)【国際特許分類】
G01R 31/28 20060101AFI20230614BHJP
G01R 31/319 20060101ALI20230614BHJP
【FI】
G01R31/28 M
G01R31/319
(21)【出願番号】P 2021532983
(86)(22)【出願日】2020-01-22
(86)【国際出願番号】 EP2020051538
(87)【国際公開番号】W WO2020152230
(87)【国際公開日】2020-07-30
【審査請求日】2021-08-04
(32)【優先日】2019-01-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390005175
【氏名又は名称】株式会社アドバンテスト
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ポエッペ・オラフ
(72)【発明者】
【氏名】ヒリゲス・クラウス・ダイエッター
【審査官】島▲崎▼ 純一
(56)【参考文献】
【文献】米国特許出願公開第2011/0273197(US,A1)
【文献】特開2016-212574(JP,A)
【文献】米国特許出願公開第2007/0245199(US,A1)
【文献】特表2014-532862(JP,A)
【文献】特開平10-240560(JP,A)
【文献】特開2004-030765(JP,A)
【文献】特開2011-059112(JP,A)
【文献】特表2002-519675(JP,A)
【文献】特開2017-072509(JP,A)
【文献】特開2011-248597(JP,A)
【文献】特開2018-006406(JP,A)
【文献】特開2002-156404(JP,A)
【文献】特開平05-126918(JP,A)
【文献】特開2007-052015(JP,A)
【文献】特開2006-105999(JP,A)
【文献】米国特許出願公開第2006/0156113(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G01R 31/28
G01R 31/3177
(57)【特許請求の範囲】
【請求項1】
テスト対象デバイスをテストするための自動テスト装置であって、前記自動テスト装置が、オンチップシステムテストコントローラを備え、前記オンチップシステムテストコントローラが、前記テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェースまたは少なくとも1つの制御インターフェースを有し、前記オンチップシステムテストコントローラが、
統合された中央処理装置コアを有するシステムオンチップである前記テスト対象デバイスのテストを制御するように構成され、前記オンチップシステムテストコントローラによって制御される前記テストが、前記テスト対象デバイス上で実行され、前記実行が、前記システムオンチップの前記中央処理装置コアによって行われる、自動テスト装置。
【請求項2】
前記オンチップシステムテストコントローラが、前記テスト対象デバイスと通信するように構成される少なくとも1つの高帯域幅インターフェースを有する、請求項1に記載の自動テスト装置。
【請求項3】
前記自動テスト装置が、前記少なくとも1つのデバッグインターフェースもしくは前記少なくとも1つの制御インターフェースまたは前記少なくとも1つの高帯域幅インターフェースをテスト対象デバイスインターフェースに可変的に割り当てるように構成される、請求項1または2に記載の自動テスト装置。
【請求項4】
前記自動テスト装置が、1つまたは複数のパラメトリックテストリソースを前記テスト対象デバイスに可変的に割り当てるように構成される、請求項1から3のいずれか1項に記載の自動テスト装置。
【請求項5】
前記オンチップシステムテストコントローラが、前記少なくとも1つのデバッグインターフェースもしくは前記少なくとも1つの制御インターフェースまたは前記少なくとも1つの高帯域幅インターフェースを介して前記テスト対象デバイスと通信するための、オペレーティングシステム、オンチップシステムテストサービスソフトウェア、1つまたは複数のドライバを有するソフトウェアスタックを実行するように構成される、請求項1から4のいずれか1項に記載の自動テスト装置。
【請求項6】
前記オンチップシステムテストコントローラが、ユーザによって提供されるアプリケーション固有のルーチンを実行するように構成される、請求項1から5のいずれか1項に記載の自動テスト装置。
【請求項7】
前記オンチップシステムテストコントローラが、オンチップシステムテスト環境をテスト対象デバイスにロードして初期化するように構成され、および/または、前記オンチップシステムテストコントローラが、オンチップシステムテストをテスト対象デバイスにロードするように構成される、請求項1から6のいずれか1項に記載の自動テスト装置。
【請求項8】
前記オンチップシステムテストコントローラが、オンチップシステムテストをパラメータ化するパラメータセットをテスト対象デバイスにアップロードするように構成される、請求項1から7のいずれか1項に記載の自動テスト装置。
【請求項9】
前記オンチップシステムテストコントローラが、テスト対象デバイスにロードされるオンチップシステムテストを開始するように構成される、請求項1から8のいずれか1項に記載の自動テスト装置。
【請求項10】
前記オンチップシステムテストコントローラが、テストシーケンス言語での全体的なテスト実行プログラムに基づいて、前記テスト対象デバイスの前記テストを制御するように構成される、請求項1から9のいずれか1項に記載の自動テスト装置。
【請求項11】
前記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソースを制御するように構成され、および/または、前記オンチップシステムテストコントローラが、前記少なくとも1つのデバッグインターフェース、前記少なくとも1つの制御インターフェースおよび前記少なくとも1つの高帯域幅インターフェースに加えて、1つまたは複数のデジタルテストリソースを制御するように構成され、および/または、前記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソースを同期させるように構成され、および/または、前記オンチップシステムテストコントローラが、前記少なくとも1つのデバッグインターフェース、前記少なくとも1つの制御インターフェースおよび前記少なくとも1つの高帯域幅インターフェースに加えて、1つまたは複数のデジタルテストリソースを同期させるように構成される、請求項1から10のいずれか1項に記載の自動テスト装置。
【請求項12】
前記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースを制御するためのローカル通信インターフェースを有し、および/または、前記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースを同期させるためのローカル同期インターフェースを有する、請求項1から11のいずれか1項に記載の自動テスト装置。
【請求項13】
前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、受信した前記コマンドおよび/または受信した前記データに応じてテスト実行フローを適合させるように構成される、請求項1から12のいずれか1項に記載の自動テスト装置。
【請求項14】
前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、受信した前記コマンドおよび/または受信した前記データに応じてテストリソースを適合させるように構成される、請求項1から13のいずれか1項に記載の自動テスト装置。
【請求項15】
前記オンチップシステムテストコントローラが、組み込みソフトウェア環境を提供するように構成される中央装置と、前記少なくとも1つのデバッグインターフェースおよび/または前記少なくとも1つの制御インターフェースおよび/または前記少なくとも1つの高帯域幅インターフェースを実装する1つまたは複数のインターフェースブロックとを有し、前記オンチップシステムテストコントローラが、前記テスト対象デバイスに1つまたは複数の信号を提供し、前記テスト対象デバイスから1つまたは複数の信号を受信するためのフロントエンド電子機器を有し、前記オンチップシステムテストコントローラが、前記自動テスト装置の1つまたは複数の他の構成要素と通信するように、および/または前記自動テスト装置の1つまたは複数の他の構成要素と同期するように構成される1つまたは複数のバックエンドインターフェースを有する、請求項1から14のいずれか1項に記載の自動テスト装置。
【請求項16】
前記自動テスト装置が、1つまたは複数の開発およびデバッグ環境へのインターフェース(242、244)を有する、請求項1から15のいずれか1項に記載の自動テスト装置。
【請求項17】
前記1つまたは複数の開発およびデバッグ環境が、前記テスト対象デバイス上で実行するためのオンチップシステムテストソフトウェアおよび、前記自動テスト装置によって実行されるテストプログラムの両方を開発およびデバッグするように適合される、請求項16に記載の自動テスト装置。
【請求項18】
前記1つまたは複数の開発およびデバッグ環境は、前記テスト対象デバイス上で実行されるオンチップシステムテストソフトウェアを開発および/またはデバッグするときに、前記自動テスト装置のテストリソースへのアクセスを可能にする、請求項17に記載の自動テスト装置。
【請求項19】
前記1つまたは複数の開発およびデバッグ環境が、前記自動テスト装置の前記少なくとも1つのデバッグインターフェース、前記少なくとも1つの制御インターフェースおよび前記少なくとも1つの高帯域幅インターフェースを介して、前記テスト対象デバイスから、メモリコンテンツへのアクセスを可能にするためのプログラムコードを有する、請求項17または請求項18に記載の自動テスト装置。
【請求項20】
前記1つまたは複数の開発およびデバッグ環境が、デバッグソフトウェアが前記テスト対象デバイスへのプログラムおよび/または1つまたは複数のパラメータセットのアップロードを制御することを可能にするためのインターフェース(242)を有する、請求項17から19のいずれか1項に記載の自動テスト装置。
【請求項21】
前記1つまたは複数の開発およびデバッグ環境が、デバッグソフトウェアが前記テスト対象デバイスのデバッグインターフェースにアクセスすることを可能にするためのインターフェース(244)を有する、請求項17から20のいずれか1項に記載の自動テスト装置。
【請求項22】
前記1つまたは複数の開発およびデバッグ環境が、デバッグソフトウェアに前記テスト対象デバイスのデバッグインターフェースへの直接アクセスを提供するように構成される、請求項17から21のいずれか1項に記載の自動テスト装置。
【請求項23】
前記1つまたは複数の開発およびデバッグ環境が、オンチップシステムソフトウェアの開発で使用するためのアプリケーションプログラミングインターフェースを有し、開発された前記オンチップシステムテストソフトウェアが前記テスト対象デバイス上で実行されるときに、前記テスト対象デバイスと前記自動テスト装置のテストリソースとの間の通信を可能にする、請求項17から22のいずれか1項に記載の自動テスト装置。
【請求項24】
前記開発およびデバッグインターフェースが、前記開発されたオンチップシステムテストソフトウェアを実行するテスト対象デバイスとの前記自動テスト装置の通信をサポートするためのテスタソフトウェアも有する、請求項23に記載の自動テスト装置。
【請求項25】
前記1つまたは複数の開発およびデバッグ環境が、オンチップシステムテストソフトウェアの開発に使用するためのプログラム(246b、246c)を有し、前記自動テスト装置から前記テスト対象デバイスへのさらなるソフトウェアのアップロードを可能にする、および/または前記自動テスト装置によって前記テスト対象デバイス上でのプログラム実行の制御を可能にする、請求項17から24のいずれか1項に記載の自動テスト装置。
【請求項26】
前記1つまたは複数の開発およびデバッグ環境が、オンチップシステムテストソフトウェアの開発で使用するためのプログラム(246d)を有し、前記テスト対象デバイス上でのプログラムの実行を監視する、請求項17から25のいずれか1項に記載の自動テスト装置。
【請求項27】
前記自動テスト装置が、1つまたは複数のテスタリソース、前記オンチップシステムテストコントローラ、および前記テスト対象デバイスで実行されるオンチップシステムテストを同期させるように構成される、請求項1から26のいずれか1項に記載の自動テスト装置。
【請求項28】
前記自動テスト装置が、前記テスト対象デバイス上で実行される前記オンチップシステムテストによって提供される制御情報に応答して条件付き飛び越しを実行するように構成される、請求項8、9、13、14および27のいずれか1項に記載の自動テスト装置。
【請求項29】
前記自動テスト装置は、前記テスト対象デバイス上で実行されるオンチップシステムテストの完了を待つように構成される、請求項1から28のいずれか1項に記載の自動テスト装置。
【請求項30】
テスト対象デバイスをテストするための自動テスト装置であって、前記自動テスト装置が、オンチップシステムテストコントローラを備え、前記オンチップシステムテストコントローラが、前記テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェースまたは少なくとも1つの少なくとも1つの制御インターフェースを有し、前記オンチップシステムテストコントローラが、
統合された中央処理装置コアを有するシステムオンチップである前記テスト対象デバイスのテストを制御するように構成され、前記オンチップシステムテストコントローラによって制御される前記テストが、前記テスト対象デバイス上で実行され、前記実行が、前記システムオンチップの前記中央処理装置コアによって行われ、前記オンチップシステムテストコントローラが、オンチップシステムテスト環境を前記テスト対象デバイスにアップロードするように構成される、少なくとも1つの高帯域幅インターフェースを有する、自動テスト装置。
【請求項31】
前記少なくとも1つの高帯域幅インターフェースが、大規模なプログラムおよび/またはテストデータを前記テスト対象デバイスと通信するように構成され、前記少なくとも1つのデバッグインターフェースまたは前記少なくとも1つの制御インターフェースが、前記テスト対象デバイスのソフトウェアに依存することなく、前記テスト対象デバイスに対するCPUレジスタコンテンツまたはメモリコンテンツの基本的な調整を行うことを可能にする、請求項30に記載の自動テスト装置。
【請求項32】
前記少なくとも1つの高帯域幅インターフェースが、前記少なくとも1つのデバッグインターフェースまたは前記少なくとも1つの制御インターフェースのデータレートより少なくとも10倍高いデータレートを処理できる、請求項30または31に記載の自動テスト装置。
【請求項33】
前記テスト対象デバイス上で実行されるオペレーティングシステムまたはドライバソフトウェアが前記通信をサポートする、請求項30から32のいずれか1項に記載の自動テスト装置。
【請求項34】
テスト対象デバイスをテストするための自動テスト装置であって、前記自動テスト装置が、オンチップシステムテストコントローラを備え、前記オンチップシステムテストコントローラが、前記テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェースまたは少なくとも1つの制御インターフェースを有し、前記オンチップシステムテストコントローラが、
統合された中央処理装置コアを有するシステムオンチップである前記テスト対象デバイスのテストを制御するように構成され、前記オンチップシステムテストコントローラによって制御される前記テストが、前記テスト対象デバイス上で実行され、前記実行が、前記システムオンチップの前記中央処理装置コアによって行われ、前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、受信した前記コマンドおよび/または受信した前記データに応じてテスト実行フローを適合させるように構成される、自動テスト装置。
【請求項35】
前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、テスト実行フローの制御が、前記テスト対象デバイスで実行されるプログラムに含まれるように、前記受信したコマンドおよび/または前記受信したデータに応じて前記テスト実行フローを適合させるように構成される、請求項34に記載の自動テスト装置。
【請求項36】
前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、テスト実行フローが、前記テスト対象デバイスで実行されるプログラムの非決定論的実行に動的に適合されるように、前記受信したコマンドおよび/または前記受信したデータに応じて前記テスト実行フローを適合させるように構成される、請求項34に記載の自動テスト装置。
【請求項37】
前記自動テスト装置が、前記テスト対象デバイスに適切な入力信号を提供するように、および/または前記テスト対象デバイスによって提供される信号の測定を行うように構成されるように、前記自動テスト装置が、前記テスト対象デバイス上での前記プログラムの非決定論的実行に適合するように構成される、請求項35または36に記載の自動テスト装置。
【請求項38】
テスト対象デバイスをテストするための自動テスト装置であって、前記自動テスト装置が、オンチップシステムテストコントローラを備え、前記オンチップシステムテストコントローラが、前記テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェースまたは少なくとも1つの制御インターフェースを有し、前記オンチップシステムテストコントローラが、
統合された中央処理装置コアを有するシステムオンチップである前記テスト対象デバイスのテストを制御するように構成され、前記オンチップシステムテストコントローラによって制御される前記テストが、前記テスト対象デバイス上で実行され、前記実行が、前記システムオンチップの前記中央処理装置コアによって行われ、前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、前記受信したコマンドおよび/または前記受信したデータに応じてテストリソースを適合させるように構成される、自動テスト装置。
【請求項39】
前記オンチップシステムテストコントローラが、前記テスト対象デバイス上で実行されるオンチップシステムテストからコマンドおよび/またはデータを受信し、前記テスト対象デバイスでのプログラムの非決定論的実行と、前記自動テスト装置のアクティビティとの間の調整が実現されるように、前記受信したコマンドおよび/または前記受信したデータに応じてテストリソースを適合させるように構成される、請求項38に記載の自動テスト装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明による実施形態では、自動テスト装置を作成する。
一般的に言えば、本発明による実施形態は、オンチップシステムテストのための効果的なテスト環境を作成する。本発明によるさらなる実施形態は、オンチップシステムテストを作成する。
【背景技術】
【0002】
以下では、本発明による実施形態を使用できるいくつかの技術分野について説明する。
【0003】
近年、システムオンチップ(SOC)、システムインパッケージ(SIT)、または少なくとも1つの統合プロセッサを搭載したモジュールのテストに対する需要が高まっている。以下の開示は「SOC」または「DUT」のみを記載しているが、パッケージまたは(サブ)システムを実装するあらゆる種類のモジュールへのより高いレベルの統合に適用可能であることに留意されたい。
【0004】
以下では、いくつかのシステムオンチップ(SoCまたはSOC)の傾向について説明する。最近では、至る所に中央処理装置コア(CPUコア)が存在する傾向にある。例えば、昨年は、ARM CPUコアを搭載した装置が約170億個出荷されていることに留意されたい。また、純粋なハードウェア設計は、ハードウェア/ソフトウェアコデザインに変わる傾向にある。
【0005】
さらに、IPリソースが広く普及する傾向にある。これにより、例えば、新しいプロセスノードでの非常に高度な統合が可能になる。さらに、例えば、この傾向を支援するために、一般的なオンチップ相互接続アーキテクチャが確立されている。例として、これらの相互接続に広く使用されている標準規格は、ARMのAMBAである。
【0006】
さらに、モバイルアプリケーションが高度な電力管理技術を推進する傾向にある。例えば、コアを最適なクロックレートおよび供給電圧で動作させることが望まれる。さらに、クロックレンジおよび供給電圧を動的に変化させることが望まれる。さらに、アイドル状態のコアを動的にオフにすることが望まれる。
【0007】
さらに、マルチチップモジュールの提供数が増える傾向もある。例えば、モジュールインターフェースのピン数を減らすことで、プリント回路基板の設計(PCB設計)が簡素化される。さらに、例として、2.5Dおよび3Dパッケージング技術により、モバイルアプリケーションのフォームファクタをより小さくすることが可能になる。
【0008】
以下では、典型的なSoCの構造について簡単に説明する。システムオンチップは、例えば、本明細書に開示される概念を使用してテストされ得ることに留意されたい。
【0009】
図4は、システムオンチップのブロック概略図を示す。システム全体を400とする。システムは、例えば、中央処理装置コア(CPUコア)410、スタティックランダムアクセスメモリ(SRAM)404、L2キャッシュ408、不揮発性ランダムアクセスメモリ(NVRAM)412、および読み取り専用メモリ416を備える。例えば、CPUコア410、SRAM、L2キャッシュ、NVRAMおよびROMはすべて、非同期アプリケーション相互接続420に結合され得る。
【0010】
さらに、システムは、テストのためのデバッグ/設計(DFT)アクセスブロック430、周辺機器ブロック440、およびコプロセッサ450を含み得る。例えば、周辺機器ブロック440およびコプロセッサ450はまた、非同期アプリケーション相互接続420によって結合され得る。
【0011】
さらに、デバッグ/DFTアクセスブロック430はまた、非同期アプリケーション相互接続420に結合され、非同期アプリケーション相互接続に接続された任意のブロックにデータを転送し得ることに留意されたい。
【0012】
さらに、CPUコア410およびデバッグ/DFTアクセスブロック430はまた、非同期デバッグ相互接続460に結合され得る。周辺機器ブロック440およびコプロセッサ450はまた、任意選択で、非同期デバッグ相互接続460に結合され得る。
【0013】
デバッグ/DFTアクセスブロック430は、例えば、デバッグアクセスのための専用の入力/出力(I/O)に結合され得る。デバッグアクセス専用の入力/出力は、例えば、JTAGインターフェースまたはシリアルワイヤデバッグ(SWD)インターフェースであり得る。
【0014】
さらに、システム400は、任意選択で、SoC400のどの入力/出力ラインがSoC400のパッケージのどのピンに接続されるかを決定するように構成され得る入力/出力マルチプレクサ470を備える。例えば、システム400は、低速デジタル、スキャン(例えば、レジスタを読み取るおよび/または設定するためのスキャンチェーン)およびトレース出力のための共有入力/出力を備え得る。ただし、デバッグアクセスのための専用の入力/出力があり得ること、また、1つまたは複数の周辺機器ブロック440によって提供される、および/または1つまたは複数の周辺機器ブロック440によって受信される、アナログ信号、無線周波数(RF)信号、および/または高速デジタル信号のための専用の入力/出力があり得ることに留意されたい。
【0015】
さらに、I/Oマルチプレクサ470は、例えば、デバッグ/DFTアクセスブロック430と結合され得て、デバッグ/DFTアクセスブロック430は、例えば、I/Oマルチプレクサの機能を制御し得ることに留意されたい。ただし、デバッグ/DFTアクセスブロック430からの、または、デバッグ/DFTアクセスブロック430への1つまたは複数の信号のルーティングも、I/Oマルチプレクサ470によって決定され得る。
【0016】
さらに、SoCのブロックのうちの1つまたは複数内の信号への(例えば、レジスタコンテンツへの)、例えば、CPUコア410内の信号への、1つまたは複数の周辺機器ブロック440内の信号への、および1つまたは複数のコプロセッサ450内の信号へのスキャンアクセスがあり得ることに留意されたい。スキャンアクセスは、例えば、上記ブロックに信号(例えば、レジスタコンテンツ)を設定すること、および/または上記ブロックから信号(例えば、レジスタコンテンツ)を読み取ることを可能にし得る。スキャンアクセスは、例えば、デバッグ/DFTアクセスブロック430によって制御され得るか、あるいは、1つまたは複数の他の信号によって制御され得る。ただし、SoC400は単なる例として考慮されるべきであることに注意されたい。
【0017】
図5に、典型的なモジュールの構造を示す。言い換えれば、
図5は、本明細書で論じられる概念に従って、または本明細書で開示される自動テスト装置によってテストできる、モジュール500のブロック概略図を示す。
【0018】
モジュール500は、例えば、
図4に関して説明されたSoC400と同様であり得るので、同等または対応するブロックは、本明細書では再度説明しない。むしろ、上記の説明を参照すること。
【0019】
モジュール500は、例えば、CPUコア510、SRAM504、L2キャッシュ508、不揮発性ランダムアクセスメモリ512、読み取り専用メモリ516、非同期アプリケーション相互接続520、デバッグ/DFTアクセスブロック530、1つまたは複数の周辺機器ブロック540、1つまたは複数のコプロセッサ550、および非同期デバッグ相互接続560を有する。ブロック510、504、508、512、516、520、530、540、550、560は、ブロック410、404、408、412、416、420、430、440、450、460に対応し得る。
【0020】
しかし、モジュール512は、場合によっては、入力/出力マルチプレクサを有し得ないことに留意されたい。
【0021】
一方では、モジュール500は、任意選択で、1つまたは複数のホストインターフェース580、1つまたは複数のメモリコントローラ584、および1つまたは複数のフラッシュコントローラ588を有する。例えば、1つまたは複数のホストインターフェース580は、非同期アプリケーション相互接続520と結合され得て、例えば、モジュールの外部高帯域幅インターフェース(例えば、PCIeインターフェース、USBインターフェース、または、SDIOインターフェースなど)を提供し得る。1つまたは複数のメモリコントローラは、例えば、非同期アプリケーション相互接続520と結合し得て、また、ダナミックランダムアクセスメモリ(DRAM)と結合し得る。したがって、1つまたは複数のメモリコントローラ584は、CPUコアによる使用のために比較的大きなメモリを提供し得る。
【0022】
さらに、1つまたは複数のフラッシュコントローラ588は、非同期アプリケーション相互接続520と結合し得て、また、フラッシュメモリ(例えば、NANDフラッシュ)と結合し得る。したがって、CPUコア510は、1つまたは複数のフラッシュコントローラ588を介してフラッシュメモリにアクセスでき得る。
【0023】
さらに、1つまたは複数のホストインターフェース580、1つまたは複数のメモリコントローラ584、および1つまたは複数のフラッシュコントローラ588はまた、任意選択で、非同期デバッグ相互接続560に結合し得て、これは、例えば、デバッグ/DFTアクセスブロック530によって制御され得る、上記ブロック580、584、588の内部信号(または内部状態)の設定またはデバッグを可能にし得ることに留意されたい。しかし、SOCのテストおよび検証には、いくつかの課題があることが見出された。
【0024】
例えば、非同期通信の欠陥はACスキャンでは十分にカバーされないことが見出された。むしろ、非同期通信チャネルは機能的にテストすべき(または、場合によっては、テストしなければならない)ことが見い出された。
【0025】
さらに、動的電力管理の欠陥もACスキャンでは十分にカバーされないことも見い出された。オンチップ電力管理は、機能的にテストすべき(または場合によっては、テストしなければならない)と結論付けられている(パラメトリックDFTによってサポートされる可能性がある)。
【0026】
さらに、複雑さおよび非同期構造のために、デバイスの応答は動作モデルを用いてのみ評価できることが見出された。また、従来のATE機能パターンは機能しなくなったことが見出され結論付けられている。
【0027】
さらに、その結果、カバレッジギャップが増加していることが見出された。ATEテストは、アプリケーション環境およびソフトウェアを利用したシステムレベルのテストで強化されていると結論付けられている。
【0028】
さらに、アプリケーション環境およびソフトウェアでは、すべてのコーナーケースがカバーされているわけではないことが見出された。システムレベルテスト(SLT)後も、依然としてカバレッジギャップがあると結論付けられている。
【0029】
また、ソフトウェアのバグは、設計の限界によって活性化され得ることも見出された。ポストシリコン検証を通じていくつかのサンプルを実行するだけでは、関連するすべてのハードウェアおよびソフトウェアの問題を見出すのに十分ではないと結論付けらている。
【0030】
結論として、システムオンチップをテストするための改善された概念が必要であることが見出された。
【発明の概要】
【0031】
本発明による実施形態は、テスト対象デバイス(例えば、システムオンチップ)をテストするための自動テスト装置を作成するものであり、自動テスト装置は、オンチップシステムテストコントローラを有するものである。
【0032】
オンチップシステムテストコントローラは、テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェースまたは制御インターフェース(例えば、JTAG、SWD、SPI、I2C、UART)を有する。オンチップシステムテストコントローラは、必須ではないが、好ましくは、テスト対象デバイスと通信するように構成される少なくとも1つの高帯域幅インターフェース(例えば、USBまたはPCI)を有し、オンチップシステムテストコントローラは、システムオンチップであるテスト対象デバイス(例えば、単一の組み込みプロセッサを有するかなり単純なテスト対象デバイス、または複雑なメニーコアデバイス)のテスト(例えば、プログラムのアップロード、および/またはテストプログラムの1つまたは複数の部分の実行、および/または結果データの取得、および/またはデバッグ)を制御するように構成される。本発明による実施形態は、組み込みプロセッサを有するかなり単純なデバイス(すなわち、単純なSoC)とメニーコアデバイス(すなわち、複雑なSoC)の両方を含む組み込みプロセッサを有する限り、テスト対象デバイスの多くの異なるタイプのテストに使用できることに留意されたい。
【0033】
本自動テスト装置は、チップまたはモジュール上のシステムが、デバッグインターフェースまたは制御インターフェースを介して、任意選択で、高帯域幅インターフェースとの両方を介して、テスト対象デバイスと通信するように適合された専用のオンチップシステムテストコントローラを有する自動テスト装置を使用して、テスト工数、テストカバレッジ、およびテスト速度の間で適切な妥協点を持ってテストできるという発見に基づいている(本発明の多くの態様は、HSIOなしで実装でき、動作することに留意されたい。すべての制御は、デバッグインターフェースおよび/または制御インターフェースを介して行われる)。
【0034】
そのような専用のオンチップシステムテストコントローラを有することにより、例えば、従来のテスタ構成で発生し得るボトルネックを回避しながら、テスト対象デバイスのデバッグインターフェースまたは制御インターフェースの機能と高帯域幅インターフェースの速度の利点の両方を活用することが可能になる。
【0035】
例えば、デバッグインターフェースまたは制御インターフェースを使用すると、テスト対象デバイス上のソフトウェアに依存することなく、テスト対象デバイスに対して非常に基本的な調整(例えば、CPUレジスタコンテンツまたはメモリコンテンツ)を行うことが可能になる。
【0036】
対照的に、任意選択の高帯域幅インターフェースは、自動テスト装置とテスト対象デバイスとの間で非常に高速なデータ交換を可能にし、一般にテスト対象デバイス上で実行されるオペレーティングシステムまたはドライバソフトウェアが通信をサポートする。
【0037】
したがって、オンチップシステムテストコントローラを有する自動テスト装置は、例えば、テスト対象デバイスのスキャンチェーン、およびテスト対象デバイスと自動テスト装置との間で大量のデータを交換するシステムレベルのテストを使用して実行し得る基本的なハードウェアテストを効率的に実行できる。例えば、デバッグインターフェースは、テストの構成および基本的なテストフローを制御に使用し得る。高帯域幅インターフェースがない単純な実施形態では、デバッグインターフェースを使用して、デバッグインターフェースまたは制御インターフェースを介して、より大きなテストプログラムおよび/またはテストデータおよび/またはテストパラメータをアップロードすることもできる。
【0038】
しかし、オンチップシステムテストコントローラが任意選択の高帯域幅インターフェースも有する場合、より大きなテストプログラムおよび/またはテストデータが高帯域幅インターフェースを介して通信され、それによりテスト効率を高め、テスト時間を短縮し得る。
【0039】
ここで、高帯域幅インターフェースは、例えば、デバッグインターフェースまたは制御インターフェースの(最大)データレートより少なくとも10倍高いデータレートを処理でき得ること、場合によっては、さらにデバッグインターフェースまたは制御インターフェースで処理される(最大)データレートよりも少なくとも100倍高速であり得ることに留意されたい。しかし、専用のオンチップシステムテストコントローラは、通常、デバッグインターフェースまたは制御インターフェースを介してテスト対象デバイスに「フルアクセス」しながら、高帯域幅インターフェースの非常に高いデータレートを問題なく処理するように設計されている。
【0040】
好ましい実施形態では、自動テスト装置は、デバッグインターフェースまたは制御インターフェースまたは高帯域幅インターフェースをテスト対象デバイスインターフェースに可変的に割り当てるように構成される。
【0041】
デバッグインターフェース、または制御インターフェース、または高帯域幅インターフェースをテスト対象デバイスインターフェースに可変的に割り当てることにより、自動テスト装置は、任意のテスト対象デバイスおよび/または任意のロードボードを処理するように構成される。例えば、自動テスト装置は、(例えば、テスト構成情報の制御下で)デバッグインターフェースまたは制御インターフェースを、テスト対象デバイスインターフェースの異なるピンに可変的に割り当てることが可能になるように設計され得て、自動テスト装置はまた、(例えば、テスト構成情報の制御下で)高帯域幅インターフェースを、テスト対象デバイスインターフェースの異なるピンに可変的に割り当てるように適合され得る。したがって、高い柔軟性が実現される。
【0042】
好ましい実施形態では、自動テスト装置は、1つまたは複数のパラメトリックテストリソースをテスト対象デバイスに可変的に割り当てるように構成される。
【0043】
例えば、オンチップシステムテストコントローラの制御下で、1つまたは複数のパラメトリックテストリソースをテスト対象デバイスに可変的に割り当てることにより、テストカバレッジを大幅に拡大させることが可能になる。
【0044】
1つまたは複数のパラメトリックテストリソースは、例えば、1つまたは複数の調整可能なデバイス電源および/または1つまたは複数の調整可能なクロックソースを含み得る。したがって、非常に広範囲の条件にわたってテスト対象デバイスをテストすることが可能になり、これにより、テスト対象デバイスの多数の欠陥または問題を特定することが可能になる。さらに、1つまたは複数のパラメトリックテストリソースはまた、例えば、調整可能なパラメータを使用して、テスト対象デバイスにアナログ信号または無線周波数信号を提供し得る信号発生器を含み得る。したがって、テスト対象デバイスは、デバッグインターフェースまたは制御インターフェースを使用して、また高帯域幅インターフェースを使用して、テストフローを制御できるオンチップシステムテストコントローラの制御下で、異なる刺激でテストできる。
【0045】
さらに、1つまたは複数のパラメトリックテストリソースはまた、テスト対象デバイスの信号入力および/またはテスト対象デバイスの信号出力および/またはテスト対象デバイスによって生成された信号のアナログ特性を特徴付けることができる1つまたは複数の測定デバイスを含み得る。したがって、オンチップシステムテストコントローラは、例えば、テスト対象デバイスへのテストプログラムのアップロード、テスト対象デバイス上でのテストプログラムの実行、さらにテスト対象デバイスの動作条件(例えば、供給電圧またはクロック周波数)の変化を制御できる。したがって、変更された動作条件がテスト対象デバイスに与える影響を調査し、テスト対象デバイス上でのテストプログラムの実行と同期してアナログ(パラメトリック)テスト結果を取得できる。
【0046】
好ましい実施形態では、オンチップシステムテストコントローラは、オペレーティングシステム、オンチップシステムテストサービスソフトウェア、およびインターフェースを介してテスト対象デバイスと通信するための1つまたは複数のドライバを有するソフトウェアスタックを実行するように構成される。
【0047】
オペレーティングシステム、オンチップシステムテストサービスソフトウェア、およびインターフェースを介してテスト対象デバイスと通信するためのドライバを使用することにより、非常に効率的にオンチップシステムテストコントローラを様々な要件に適合させることができる。オペレーティングシステムを使用することで、非常に効率的なソフトウェア開発が可能になり、インターフェースを介してテスト対象デバイスと通信するためのドライバを使用することで、非常に高い性能が得られ、ソフトウェア環境全体を再設計することなく、適度な労力で様々なタイプのインターフェースに適合することも可能になる。
【0048】
好ましい実施形態では、オンチップシステムテストコントローラは、ユーザによって提供される(例えば、オペレーティングシステムを超えて、特定のテスト対象デバイスに適合される)アプリケーション固有のルーチンを実行するように構成される。
【0049】
自動テスト装置のユーザによって提供され得るアプリケーション固有のルーチンの実行を可能にすることによって、非常に高い自由度がユーザに提供され得る。具体的には、ユーザは、テスト対象デバイス上で実行されるアプリケーション固有のルーチンだけでなく、オンチップシステムテストコントローラによって実行されるアプリケーション固有のルーチンも開発できる。したがって、自動テスト装置のユーザは、オンチップシステムテストコントローラによって実行され、例えば、オンチップシステムテストコントローラの高帯域幅インターフェースを使用して、テスト対象デバイス上で実行されているルーチンと通信するルーチンを生成できる。したがって、テストを大幅に改善でき、自動テスト装置のユーザは、オンチップシステムテストコントローラによって制御される任意のハードウェアリソースに非常に柔軟にアクセスできる。
【0050】
好ましい実施形態では、オンチップシステムテストコントローラは、オンチップシステムテスト環境(例えば、DUTのインターフェースにアクセスするためのドライバを提供し得る、例えば、1つまたは複数のオンチップシステムテストの実行を制御するソフトウェア)をテスト対象デバイスに(例えば、1つまたは複数のテスト対象デバイスインターフェースを介して)ロードするように構成される。例えば、オンチップシステムテスト環境、例えば、オンチップシステムテスト環境を実装するプログラムは、オンチップシステムテストコントローラのメモリに格納される。
【0051】
代替的に、またはそれに加えて、オンチップシステムテストコントローラは、オンチップシステムテスト(例えば、複数のテストステップのうちの1つのテストステップを実行するための個別のオンチップシステムテストプログラム)をテスト対象デバイスに(例えば、1つまたは複数のテスト対象デバイスインターフェースを介して)ロードするように構成される。例えば、オンチップシステムテスト、例えば、オンチップシステムテストを実装するプログラムは、オンチップシステムテストコントローラのメモリに格納される。
【0052】
代替的に、またはそれに加えて、オンチップシステムテストコントローラは、テスト対象デバイス上のオンチップシステムテスト環境を初期化するように構成される。
【0053】
オンチップシステムテスト環境をテスト対象デバイスにロードすることにより、オンチップシステムテストコントローラは、テスト対象デバイスをテスト用に構成できる。例えば、オンチップシステムテスト環境は、オンチップシステムテストコントローラが、テスト対象デバイス上でのテストの実行に影響を与えるように、オンチップシステムテストコントローラと通信しているソフトウェアであり得る。さらに、オンチップシステムテストコントローラのメモリからのそのようなオンチップシステムテスト環境のアップロードは、通常、非常に高速であり、オンチップシステムテスト環境は、著しい量のデータを有し得ることに留意されたい。したがって、オンチップシステムテストコントローラは、通常、デバッグインターフェースまたは制御インターフェースおよび高帯域幅インターフェースに直接アクセスできるため、オンチップシステムテストコントローラのメモリを直接使用することにより、具体的には、複数のテスト対象デバイスをテストするときに、自動テスト装置のボトルネックを回避できる。したがって、オンチップシステムテストコントローラは、オンチップシステムテスト環境をテスト対象デバイスにアップロードするために高帯域幅インターフェースを使用ことさえし得る。
【0054】
結論として、そのような概念を使用すると、複数のテスト対象デバイスの同時テストが容易になり、テスト対象デバイスとオンチップシステムテストコントローラとの間の緊密な連携を実現できる。
【0055】
同様に、オンチップシステムテストコントローラの制御下で、テスト対象デバイスに単一のオンチップシステムテストをアップロードすると、テスト手順をきめ細かく調整することが可能になる。したがって、オンチップシステムテストコントローラは、例えば、前のテストステップが完了したときはいつでも、新しいオンチップシステムテスト(すなわち、複数のテストステップのうちの1つのテストステップを実行するための個別のオンチップシステムテストプログラム)、および任意選択で、そのテストパラメータをロードし得る。
【0056】
オンチップシステムテストは、任意選択で、オンチップシステムテストがすでにロードされていることを判断し得て、オンチップシステムテストの新しいテストパラメータのみを設定し得る。
【0057】
任意選択で、オンチップシステムテストコントローラはまた、以前のテスト結果に従って、テスト対象デバイスにロードされるオンチップシステムテストを動的に適合させ得て、これにより、特によく適合されたテストが可能になる。
【0058】
さらに、オンチップシステムテストコントローラは、テスト対象デバイス上でオンチップシステムテスト環境を初期化することにより、テスト対象デバイスをテスト用に準備し、テストフローを構成できる。さらに、オンチップシステムテスト環境を初期化することにより、オンチップテストコントローラは、例えば、複数のテスト対象デバイスのテストを同期させるために、例えば、テストのタイミングを制御し得る。
【0059】
自動テスト装置の好ましい実施形態では、オンチップシステムテストコントローラは、オンチップシステムテストをパラメータ化するパラメータセットをテスト対象デバイスにアップロードするように構成される。例えば、オンチップシステムテストコントローラはまた、新しくアップロードされたパラメータセットを使用して以前にアップロードされたオンチップシステムテスト(別のパラメータセットを使用する前に、テスト対象デバイスによって実行される)の再実行を開始し、それによって異なるパラメータセットでオンチップシステムテストを実行するように構成され得る。
【0060】
したがって、完全なオンチップシステムテストをテスト対象デバイスに複数回アップロードすることなく、異なるパラメータセットを使用してオンチップシステムテストを複数回実行することが可能になる。むしろ、オンチップシステムテストのプログラムコード部分は、テスト対象デバイスに1回だけアップロードされ、オンチップシステムテストの実行をパラメータ化するために使用されるパラメータセットは、オンチップシステムテストの実行後に更新される。ただし、パラメータセットを構成するデータ(例えば、パラメータ値)の量は、通常、オンチップシステムテスト自体を構成するデータ(例えば、プログラムコード)の量よりもはるかに少なくなる。さらに、オンチップシステムテストをパラメータ化するパラメータセットは、事前に決定され得る(例えば、テストフローによって事前に決定され得る)か、またはテスト対象デバイスからの結果データに応答して(例えば、オンチップシステムテストコントローラによって)動的に適合され得ることに留意されたい。したがって、典型的な手順は、テスト対象デバイスへのオンチップシステムテストのアップロード、テスト対象デバイスへのパラメータの第1のセットのアップロード、第1のパラメータセットを使用したテスト対象デバイス上でのオンチップシステムテストの実行、オンチップシステムテストコントローラへの結果情報の提供、テスト対象デバイスへの第2のパラメータセット(パラメータの第2のセット)のアップロード、第2のパラメータセットを使用したテスト対象デバイス上でのオンチップシステムテストの再実行(オンチップシステムテストの再アップロードなし)、およびオンチップシステムテストコントローラへの結果情報の別の提供を有し得る。
【0061】
例えば、パラメータセットは、オンチップシステムテストの実行で処理されるデータの量、および/または同時にアクティブ化されるいくつかのテスト対象デバイス構成要素(テスト対象デバイスに適用されるストレスを定義する)、および/またはインターフェースを介して転送されるデータのデータレート、および/またはアナログインターフェースのパラメータ(例えば、高周波インターフェースの周波数パラメータまたは変調パラメータ)、および/またはオンチップシステムテストの実行中に発生するストレスを記述するその他のパラメータおよび/またはオンチップシステムテストなどの実行中のDUT構成要素のテストカバレッジを記述するパラメータを定義する1つまたは複数のパラメータを有し得る。
【0062】
結論として、本発明の態様によれば、オンチップシステムテスト自体のロードとは関係なく、テストパラメータをDUTにロードすることが可能になる。例えば、OCST(例えば、以前にロードされたOCST)はロードされたままであり得るが、次の実行(例えば、再実行)の前にパラメータは変更され得る。これは、より効率的であり、通常、例えば、OCSTの特性評価時に行われる。
【0063】
好ましい実施形態では、オンチップシステムテストコントローラは、(例えば、オンチップシステムテスト環境との通信を使用して、またはデバッグインターフェースを使用して)テスト対象デバイスにロードされたオンチップシステムテスト(例えば、特定のOCST)を開始するように構成される。
【0064】
オンチップシステムテストを開始することにより、オンチップシステムテストコントローラは、テストフローの高度な制御を実行できる。例えば、オンチップシステムテストコントローラは、デバッグインターフェース(または制御インターフェース)を使用して、または高帯域幅インターフェースを介したデータ送信を使用して、オンチップシステムテストを開始できる。したがって、オンチップシステムテストコントローラは、複数のテスト対象デバイスのテストの実行を調整でき、オンチップシステムテストコントローラは、テスト対象デバイスでのオンチップシステムテストの実行を他のテスタリソースと調整することもできる。
【0065】
好ましい実施形態では、オンチップシステムテストコントローラは、テストシーケンス言語(例えば、ユニバーサルテストシーケンス言語)での全体的なテスト実行プログラム(例えば、ユーザによってプログラムされた)に基づいて、テスト対象デバイスのテストを制御するように構成される。
【0066】
全体的なテスト実行プログラムに基づいてテスト対象デバイスのテストを制御することにより、オンチップシステムコントローラは、例えば、複数のオンチップシステムテストの実行をガイドし得て、例えば、前のテストが失敗した場合にさらなるテストを回避するために、特定の中止基準が評価され得る。さらに、全体的なテスト実行プログラムをテストシーケンス言語で処理することにより、テストフロー全体の構成に高度な柔軟性が得られる。
【0067】
好ましい実施形態では、オンチップシステムテストコントローラは、1つまたは複数のアナログテストリソース(例えば、テスト対象デバイスの電源および/またはアナログ測定装置)を、例えば、オンチップシステムテストコントローラおよび1つまたは複数のアナログテストリソースの下位にある(または、階層的にオンチップシステムテストコントローラおよび1つまたは複数のアナログテストリソースの上位にある)高レベルのソフトウェアと通信せずに、例えば、直接制御するように構成される。
【0068】
代替的に、またはそれに加えて、オンチップシステムテストコントローラは、インターフェースに加えて、1つまたは複数のデジタルテストリソース(例えば、デジタル出力またはデジタル入力)を、例えば、オンチップシステムテストコントローラおよび1つまたは複数のデジタルテストリソースの下位にある(または、階層的にオンチップシステムテストコントローラおよび1つまたは複数のデジタルテストリソースの上位にある)高レベルのソフトウェアと通信せずに、例えば、直接制御するように構成される。
【0069】
代替的に、またはそれに加えて、オンチップシステムテストコントローラは、1つまたは複数のアナログテストリソース(例えば、テスト対象デバイスの電源および/またはアナログ測定装置)を、例えば、オンチップシステムテストコントローラおよび1つまたは複数のアナログテストリソースの下位にある(または、階層的にオンチップシステムテストコントローラおよび1つまたは複数のアナログテストリソースの上位にある)高レベルのソフトウェアと通信せずに、例えば、直接同期させるように構成される。
【0070】
代替的に、またはそれに加えて、オンチップシステムテストコントローラは、インターフェースに加えて、1つまたは複数のデジタルテストリソース(例えば、デジタル出力またはデジタル入力)を、例えば、オンチップシステムテストコントローラおよび1つまたは複数のデジタルテストリソースの下位にある(または、階層的にオンチップシステムテストコントローラおよび1つまたは複数のデジタルテストリソースの上位にある)高レベルのソフトウェアと通信せずに、例えば、直接同期させるように構成される。
【0071】
1つまたは複数のアナログテストリソースまたは1つまたは複数のデジタルテストリソースを、高レベルのソフトウェアと通信せずに、直接制御することにより、ボトルネックを回避できる。これは、複数のテスト対象デバイスを同時にテストする場合に特に重要である。したがって、オンチップシステムテストコントローラは、(例えば、テストプロセス全体を制御するワークステーションで実行する)高レベルのソフトウェアとの相互作用なしに、テストフローのうちの少なくとも一部を実行できる。例えば、オンチップシステムテストコントローラは、オンチップシステムテストコントローラ「専用」の接続リソース、または異なるオンチップシステムテストコントローラ間で共有されない接続リソースを使用して、1つまたは複数のデジタルテストリソースおよび/または1つまたは複数のアナログテストリソースに結合され得る。あるいは、オンチップシステムテストコントローラは、1つまたは複数の他のオンチップシステムテストコントローラと共有される接続リソースを介して、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースと結合され得るが、高(階層)レベルの構成要素または高(階層)レベルのソフトウェアを介さずに、オンチップシステムテストコントローラの制御下で使用できる。その結果、テストの速度を上げることができ、ボトルネックが発生することを回避できる。
【0072】
同様に、1つまたは複数のデジタルテストリソースおよび/または1つまたは複数のアナログテストリソースを同期させるように構成されるオンチップシステムテストコントローラを有することにより、テスト対象デバイスの完全なテストを高いタイミング精度で実行できる。具体的には、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースを同期する機能を有することにより、オンチップシステムテストコントローラは、テスト対象デバイスのテストを実行でき、アナログ品質の生成またはアナログ量の測定またはデジタル刺激信号の生成またはデジタル出力信号の捕捉(これらは、1つまたは複数のアナログテストリソースおよび/または1つ又は複数のデジタルテストリソースによって実行され得る)の適合は、オンチップシステムテストコントローラによっても(少なくとも部分的に)制御される1つまたは複数のオンチップシステムテストの実行と密接に時間的に同期できる。言い換えれば、オンチップシステムテストコントローラは、個々のテスト対象デバイスに近く、テスト対象デバイス上でのプログラム実行および追加のテストリソース(アナログテストリソースおよび/またはデジタルテストリソース)の両方を正確に同期できる分散制御エンティティとして機能できる。
【0073】
好ましい実施形態では、オンチップシステムテストコントローラは、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースを制御するためのローカル通信インターフェースを有する。代替的に、またはそれに加えて、オンチップシステムテストコントローラは、1つまたは複数のアナログテストリソースおよび/または1つまたは複数のデジタルテストリソースを同期させるためのローカル同期インターフェースを有する(例えば、オンチップシステムテストコントローラをアナログテストリソースおよび/またはデジタルテストリソースに直接接続する)。
【0074】
例えば、他のオンチップテストコントローラと共有されないローカル通信インターフェースおよび/またはローカル同期インターフェースを使用することで、高いタイミング精度を確保でき、同時に異なるテスト対象デバイスをテストし得る異なるオンチップシステムテストコントローラ間の影響を回避できる。その結果、高度なタイミング精度および再現性を実現できる。
【0075】
好ましい実施形態では、オンチップシステムテストコントローラは、テスト対象デバイス上で実行されているオンチップシステムテストからコマンドおよび/またはデータを受信し、受信したコマンドおよび/または受信したデータに応じてテスト実行フローを適合させるように構成される。
【0076】
テスト実行フローを、テスト対象デバイスで実行されているオンチップシステムテストのコマンドおよび/またはデータに適合させることにより、テストフローの制御は、少なくともある程度、テスト対象デバイス上で実行されているプログラムに含めることができるため、テストプログラムの開発を容易にすることができる。一方、テストフローは、テスト対象デバイス上で実行されているプログラムの非決定論的実行に動的に適合させることもできる。具体的には、テストプログラムを実行するシステムオンチップをテストする場合、テストフローのタイミングを簡単に予測することはできなくなる。オンチップシステムテストコントローラにコマンドを提供することによって、テスト対象デバイスにテストフローをある程度制御できる可能性を提供することにより、自動テスト装置が、テスト対象デバイス上でのプログラムの非決定論的実行に適合することを実現できる。その結果、自動テスト装置は、適切な入力信号をテスト対象デバイスに適切なタイミングで提供でき、および/またはテスト対象デバイスによって提供される信号の測定を適切なタイミングで行うことができる。
【0077】
好ましい実施形態では、オンチップシステムテストコントローラは、テスト対象デバイス上で実行されているオンチップシステムテストからコマンドおよび/またはデータを受信し、受信したコマンドおよび/または受信データに応じてテストリソース(例えば、テスト対象デバイスによって提供される信号を判断するための、1つまたは複数の供給電圧、またはテスト対象デバイスに提供される1つまたは複数の刺激信号、または1つまたは複数の評価パラメータ、例えば、閾値などのアナログ量)を適合させるように構成される。
【0078】
(テストプログラム、すなわち、オンチップシステムテストを実行している場合がある)テスト対象デバイスからのコマンドおよび/またはデータの受信に応じてテストリソースを適合させることにより、テスト対象デバイス上でのプログラムの通常は非決定論的実行と自動テスト装置のアクティビティ(例えば、供給電圧または刺激信号の提供、またはテスト対象デバイスからの信号の評価)との間の適切な調整を実現できる。
【0079】
好ましい実施形態では、オンチップシステムテストコントローラは、組み込みソフトウェア環境を提供するように構成される中央装置(例えば、システムSOC)および、デバッグインターフェースおよび/または制御インターフェースおよび/または高帯域幅インターフェースを実装する1つまたは複数のインターフェースブロックを有する。
【0080】
オンチップシステムテストコントローラは、テスト対象デバイスに1つまたは複数の信号を提供し、テスト対象デバイスから1つまたは複数の信号を受信するためのフロントエンド電子機器を有する。
【0081】
オンチップシステムテストコントローラはまた、自動テスト装置の1つまたは複数の他の構成要素と通信するように、および/または自動テスト装置の1つまたは複数の他の構成要素と同期するように構成される1つまたは複数のバックエンドインターフェースを有する。
【0082】
オンチップシステムテストコントローラに中央装置、フロントエンド電子機器、さらに1つまたは複数のバックエンドインターフェースを設けることにより、オンチップシステムテストコントローラは、高レベルの制御から独立して、テストフローのうちの少なくとも一部を効率的に実行できる。例えば、オンチップシステムテストコントローラは、バックエンドインターフェースの1つを介して高レベルの制御から構成情報を受信でき、1つまたは複数の他のテスタリソース、例えば、デバイス電源および/または1つまたは複数のデジタルチャネルおよび/または1つまたは複数のアナログ信号生成デバイスおよび/または1つまたは複数のアナログ測定デバイスも制御できる。しかし、オンチップシステムテストコントローラにフロントエンド電子機器を有することにより、オンチップシステムテストコントローラは、例えば、他の構成要素を使用せずに、テスト対象デバイスから直接最もタイムクリティカルな信号を受信できる、および/またはテスト対象デバイスに直接最もタイムクリティカルな信号を送信できる。言い換えれば、上記のオンチップシステムテストコントローラは、他のテストリソースから独立していくつかの基本的なテスト機能を実行できるが、そのような追加のテストリソースをさらに制御して、より複雑なテストを実行できる(例えば、テスト対象デバイスの電源電圧、またはテスト対象デバイスに印加されるクロック周波数、またはその他の追加パラメータを変化させる)。結論として、本明細書で説明するオンチップシステムテストコントローラは、システムオンチップであるテスト対象デバイスをテストするために使用されるテストフローの大部分を独立して実行(または、少なくとも制御)できる。
【0083】
好ましい実施形態では、自動テスト装置は、1つまたは複数の開発およびデバッグ環境へのインターフェースを有する。
【0084】
1つまたは複数の開発およびデバッグ環境へのインターフェースを提供することにより、テストプログラムの開発を容易にすることができる。これに関連して、このような「テストプログラム」は、通常、テスト対象デバイス上で実行されるテストプログラム部分および、自動テスト装置によって、または自動テスト装置のオンチップシステムテストコントローラによって実行されるテストプログラム部分の両方を含むため、システムオンチップのテストプログラムの開発は非常に困難であることに留意されたい。したがって、プログラムコードは2つの物理エンティティ(DUTおよび自動テスト装置)用に開発する必要があるため、自動テスト装置によって、サードパーティソフトウェアを使用して少なくとも部分的に実行されることが多いこのような開発をサポートすることが望ましい。
【0085】
自動テスト装置と1つまたは複数の開発およびデバッグ環境との間のインターフェースは、例えば、サードパーティの開発およびデバッグ環境で、オンチップシステムテストコントローラを使用して(または、一般的に言えば、自動テスト装置のハードウェアを使用して)テスト対象デバイスにプログラムをアップロードすることを可能し得て、さらに開発およびデバッグ環境で、オンチップシステムテストコントローラを介して(または、一般的に言えば、自動テスト装置のハードウェアを使用して)テスト対象デバイスからデバッグ情報を取得することを可能にし得る。さらに、自動テスト装置と開発およびデバッグ環境との間のインターフェースはまた、開発およびデバッグ環境に、テスタリソースに関する情報および/または自動テスト装置の1つまたは複数のリソース(例えば、アナログリソースまたはデジタルリソース)を制御するためのアプリケーションプログラミングインターフェースを提供し得る。一般的に言えば、自動テスト装置と開発およびデバッグ環境との間のインターフェースは、テスタリソースにアクセスするために、またはテスト対象デバイスのアクティビティを自動テスト装置のアクティビティと調整するために必要な(ソフトウェア)モジュール(例えば、APIなど)の1つまたは複数の、またはそのいずれかを開発およびデバッグ環境に提供し得る。さらに、プログラムアップロード機能へのアクセスおよび/またはテスト対象デバイスのデバッグ情報へのアクセスは、ソフトウェア開発およびデバッグがサードパーティの開発およびデバッグ環境を使用して効率的に実行され得るように、インターフェースによって提供され得る。
【0086】
好ましい実施形態では、自動テスト装置は、テスト対象デバイス上で実行するためのオンチップシステムテストソフトウェアおよび、自動テスト装置によって実行されるテストプログラムの両方を開発およびデバッグするように適合される開発およびデバッグ環境を有する。
【0087】
自動テスト装置の一部として開発およびデバッグ環境を提供することにより、開発およびデバッグ環境は、テスト対象デバイス上で実行するためのオンチップシステムテストソフトウェアおよび自動テスト装置によって実行されるテストプログラムの両方を開発およびデバッグするように適合され、テストソフトウェアの開発が大幅に容易になる。具体的には、自動テスト装置とテスト対象デバイスとの間で制御情報またはデータを交換するための対応(嵌合)ルーチンを提供する、共同開発およびデバッグ環境が提供される。共同開発およびデバッグ環境は、自動テスト装置とテスト対象デバイスとの間のインターフェースを認識し得るため、共同開発およびデバッグ環境では、テスト対象デバイス側と自動テスト装置側の両方で同じ変数へのアクセスを可能にし得て、テスト対象デバイスから自動テスト装置へのこれらの変数の通信、またはその逆方向のこれらの変数の通信は、共同開発およびデバッグ環境によって、例えば、対応する通信コード部分を、テスト対象デバイス上で実行するためのオンチップシステムテストソフトウェアおよび自動テスト装置によって実行されるテストプログラムに挿入することによって自動的に処理され得る。したがって、通信関係の両側(すなわち、テスト対象デバイスおよび自動テスト装置)のソフトウェア開発を処理することにより、共同開発およびデバッグ環境で、開発プロセスを大幅に簡略化し得て、ソフトウェア開発者に共通の変数名、インターフェース名などを使用して、均一環境を提供し得る。
【0088】
具体的には、共同デバッグ環境および開発環境は、単一のアクション(例えば、テスト対象デバイスから自動テスト装置へのデータの通信)のコード部分を、そのようなアクションが所望されていることを示す単一のユーザの相互作用に応答して導入するためのツールを提供し得る。その結果、ソフトウェア開発者は、異なるプログラミング概念、変数名、APIなどを使用して別々の開発環境を切り替える必要がなくなった。
【0089】
さらに、デバッグ機能(テスト対象デバイス上のコードをデバッグするため)が必要な場合はいつでも、共同開発デバッグ環境は、自動テスト装置上で実行されるテストプログラムのコード部分を自動的に生成し、テスト対象デバイスからデバッグ情報を取得し、上記デバッグ情報を共同開発およびデバッグ環境に転送し得る。その結果、開発者は、テスト対象デバイスにどのデバッグ機能が必要かという問題に集中でき、共同開発およびデバッグ環境は、デバッグ情報をテスト対象デバイスから開発およびデバッグ環境に(例えば、オンチップシステムテストコントローラを介して)転送する自動テスト装置のプログラムコードを自動的に生成する。
【0090】
結論として、テスト対象デバイス上で実行するためのオンチップシステムテストソフトウェアおよび、自動テスト装置によって実行されるテストプログラムの両方の開発は、従来、テストエンジニアにとって非常に困難なものであったが、オンチップシステムテストソフトウェアおよび自動テスト装置によって(例えば、オンチップシステムテストコントローラによって)実行されるテストプログラムの両方を対象とする開発およびデバッグ環境の使用により、非常に効率的なソフトウェア開発が可能になる。
【0091】
好ましい実施形態では、開発およびデバッグ環境は、テスト対象デバイス上で実行されるオンチップシステムテストソフトウェアを開発および/またはデバッグするときに、自動テスト装置のテストリソースへのアクセスを可能にする(例えば、インターフェースまたはAPIを提供する)。
【0092】
自動テスト装置のテストリソースへのアクセスは、テスト対象デバイスへのプログラムコードのアップロード、テストパラメータのアップロード、結果情報のダウンロード、およびテスト対象デバイスから開発およびデバッグ環境へのトレースのストリーミング、テスト対象デバイス上のプログラム実行と、自動テスト装置によってテスト対象デバイスに提供される環境との間の調整などをサポートし得るため、自動テスト装置のテストリソースへのアクセスを可能にすると、オンチップシステムテストソフトウェアの開発および/またはデバッグが強力にサポートされる。例えば、開発およびデバッグ環境は、テスト対象デバイス上で実行されているプログラムに含まれている場合、テスト対象デバイスがテスタリソースにアクセスする、および/または自動テスト装置と通信することを可能にするインターフェースまたはアプリケーションプログラミングインターフェース(API)を提供し得る。
【0093】
その結果、テスト対象デバイスをテストするときに自動テスト装置によって実行されるテストプログラムの開発を簡素化または回避できるように、自動テスト装置の機能は、DUTのテストで効率的に活用でき、DUTは、自動テスト装置のテストリソースをある程度制御することも(または完全に制御することも)し得る。
【0094】
好ましい実施形態では、開発およびデバッグ環境は、自動テスト装置のインターフェース(例えば、HSIO)を介してオンチップシステムから(例えば、自動テスト装置のメモリの)メモリコンテンツへのアクセスを可能にするためのプログラムコードを含む。
【0095】
自動テスト装置のインターフェースを介してオンチップシステムから(テスト対象デバイスから)メモリコンテンツへのアクセスを可能にするプログラムコードを提供することにより、メモリの存在をエミュレートできる。これは、テスト対象デバイスが、実際のテスト環境には存在しない一部の外部メモリを使用して通常動作する場合に有用である。この場合、テスト対象デバイスは、開発およびデバッグ環境によって提供されるプログラムコードによって有効になり、自動テスト装置の(例えば、オンチップシステムテストコントローラの)メモリにアクセスして、通常テスト対象デバイスに直接接続すべきメモリを効果的に置き換え得る。したがって、テスト対象デバイスは、テスト対象デバイスに直接結合される実際のメモリを設けることが不可能な状況においても、依然として合理的に動作でき、高速入力出力インターフェースを介して、または高帯域幅インターフェースを介して自動テスト装置のメモリのメモリコンテンツへのアクセスを可能にするプログラムコードは、不足している物理メモリをエミュレートするためのドライバとして機能できる。具体的には、上記プログラムコードは、通常、オンチップシステムテストコントローラのメモリに通常格納されるメモリコンテンツが、インターフェース(例えば、高速IOまたは高帯域幅インターフェース)を介してどのようにアクセス(例えば、アドレス指定)できるかを認識しており、したがって、テスト対象デバイス上でプログラムコードが実行されたときに、テスト対象デバイスがメモリコンテンツに正しくアクセスすることを可能にする。その結果、自動テスト装置の開発およびデバッグ環境が、適切なエミュレーションプログラムコードの提供を担うため、メモリのエミュレーションは、テスト対象デバイスのプログラムを開発するプログラマに対して実質的に透過的である。
【0096】
好ましい実施形態では、開発およびデバッグ環境は、デバッグソフトウェアが、テスト対象デバイス(例えば、オンチップシステム)へのプログラムのアップロードを制御することを可能にするためのインターフェースを有する。
【0097】
デバッグソフトウェアがテスト対象デバイスへのプログラムのアップロードを制御することを可能にするためのインターフェースを提供することにより、テスト対象デバイスのプログラムコードを開発するソフトウェアエンジニアによく知られているサードパーティの開発ソフトウェアまたはデバッグソフトウェアを使用することを可能にする。したがって、ソフトウェアエンジニアは、テスト対象デバイスがテスト環境に置かれている(すなわち、オンチップシステムテストコントローラに結合されている)場合でも、テスト対象デバイスのソフトウェアをテストおよびデバッグできる。
【0098】
好ましい実施形態では、開発およびデバッグ環境は、デバッグソフトウェアが、テスト対象デバイス(例えば、オンチップシステム上)のデバッグインターフェース(例えば、JTAG)にアクセスすることを可能にするためのインターフェースを有する。
【0099】
デバッグソフトウェアがテスト対象デバイスのデバッグインターフェースにアクセスすることを可能にするためのインターフェースを提供することにより、サードパーティのデバッグソフトウェアを使用したデバッグは、テスト対象デバイスが実際のテスト環境に置かれている(例えば、オンチップシステムテストコントローラに結合されている)場合に有効にできる。したがって、テスト対象デバイスによって実行されるオンチップシステムテストのデバッグは、実際のテスト条件下で実行できる。
【0100】
好ましい実施形態では、開発およびデバッグ環境は、テスト対象デバイス(例えば、オンチップシステム上)のデバッグインターフェース(例えば、JTAG)への(例えば、開発インターフェースおよびデバッグインターフェースを回避またはバイパスする)デバッグソフトウェアの直接アクセスを提供するように構成される。例えば、直接アクセスは、DUTのJTAG接続を、オンチップシステムテストコントローラならびに開発およびデバッグ環境を通る経路と、例えば、オンチップシステムテストコントローラならびに開発およびデバッグ環境をバイパスしてデバッグソフトウェアに向かう直接経路との間で切り替えることによって提供され得る。
【0101】
デバッグインターフェースへの直接アクセスを提供することにより、オンチップシステムテストコントローラを介したデバッグインターフェースの転送によって発生し得る遅延を回避できる。また、テスト対象デバイスのデバッグインターフェースにアクセスするための自動テスト装置のインターフェースに対応していないデバッグソフトウェアを使用することも可能になる。言い換えれば、自動テスト装置のオンチップシステムテストコントローラならびに開発およびデバッグ環境をバイパスする、テスト対象デバイスのデバッグインターフェースへのアクセスを提供することにより、サードパーティのデバッグソフトウェアとの最大の互換性を維持できる。
【0102】
好ましい実施形態では、開発およびデバッグ環境は、オンチップシステムソフトウェアの開発で使用するためのアプリケーションプログラミングインターフェースを有し、開発されたオンチップシステムテストソフトウェアがテスト対象デバイス上で実行されるとき、(例えば、自動テスト装置からテストパラメータを受信するため、および/または自動テスト装置またはオンチップシステムテストコントローラに制御コマンドを送信するため)テスト対象デバイスと自動テスト装置のテストリソースとの間の通信を可能にする。
【0103】
このようなアプリケーションプログラミングインターフェースをデバッグ環境に提供することにより、テスト対象デバイス上で実行され、自動テスト装置と通信するオンチップシステムテストソフトウェアを容易に開発することが可能になる。自動テスト装置のテストリソースの動作に関する知識に基づいて、アプリケーションプログラミングインターフェースが自動テスト装置のテストリソースに完全に適合するように、アプリケーションプログラミングインターフェースを提供できる。したがって、テスト対象デバイス上で実行されるオンチップシステムテストソフトウェアの開発者は、自動テスト装置に関する詳細な知識を必要とせず、自動テスト装置のテストリソースを抽象的な方法で表しているアプリケーションプログラミングインターフェースを使用するだけでよい。また、オンチップシステムテストソフトウェアを再設計することなく、自動テスト装置のテストリソースの詳細を変更することも可能になる。むしろ、そのような場合、アプリケーションプログラミングインターフェースを適合させることだけが必要である。さらに、例えば、アプリケーションプログラミングインターフェースがインターフェースの実際の物理実装から独立するように設計されている場合、または、異なるタイプのインターフェースに関連付けられたアプリケーションプログラミングインターフェースが類似している場合、テスト対象デバイスと自動テスト装置との間で異なるインターフェースを切り替えることも容易に可能になる。したがって、オンチップシステムテストソフトウェアの開発が容易になり、コストも節約できる。
【0104】
好ましい実施形態では、開発およびデバッグ環境は、開発されたオンチップシステムテストソフトウェア(上記アプリケーションプログラミングインターフェースを使用する)を実行しているテスト対象デバイスとの自動テスト装置の通信をサポートするテスタソフトウェアも有する。
【0105】
また、自動テスト装置とテスト対象デバイスとの通信をサポートするテストソフトウェアを提供することにより、デバッグ環境および開発環境では、テスト対象デバイスと自動テスト装置との間の簡単な通信が可能になる。具体的には、テスト対象デバイス上で実行されるオンチップシステムテストソフトウェア、さらにテスタソフトウェアを、十分に同期して容易に開発することが可能になる。具体的には、テスト対象デバイスと自動テスト装置との間の通信は、テスト対象デバイス上で実行されるオンチップシステムテストソフトウェアと、例えば、オンチップシステムテストコントローラによって実行されるテスタソフトウェアとの間の「嵌合」が必要であることに留意されたい。特に、開発およびデバッグ環境は、テスト対象デバイスおよび自動テスト装置の両方にこのような「嵌合」ソフトウェア構成要素を提供でき、したがって、機能テストソフトウェアの迅速な開発が可能になり得る。
【0106】
好ましい実施形態では、(例えば、オンチップシステムテストソフトウェアに含めるための)オンチップシステムテストソフトウェアの開発で使用するためのプログラム(例えば、「OCSTテストランナ」)を有し、開発およびデバッグ環境は、自動テスト装置からテスト対象デバイスへのさらなるソフトウェア(例えば、さらなるオンチップシステムテストソフトウェア)のアップロードを可能にする、および/または自動テスト装置によって(例えば、オンチップシステムテストソフトウェアの)テスト対象デバイス上でのプログラム実行の制御を可能にする。
【0107】
自動テスト装置からテスト対象デバイスへのさらなるソフトウェアのアップロードを可能にする、および/またはテスト対象デバイス上でのプログラム実行の制御を可能にする、プログラムコードを提供することにより、システムオンチップをテストするときに発生するいくつかの問題を解決できる。例えば、通常、テスト対象デバイスは、完全なオンチップシステムテストソフトウェア(テスト対象デバイス上で実行される)を1つのステップでアップロードするにはメモリ不足である。したがって、(自動テスト装置、例えば、オンチップシステムテストコントローラのメモリから)テスト対象デバイスへのソフトウェアの「動的」ロードを処理するプログラムを提供することにより、テスト対象デバイスのテストをサポートできる。このようなソフトウェアルーチンはデバッグ環境および開発環境によって提供されるため、オンチップシステムテストソフトウェアを開発するソフトウェアエンジニアは、実際のオンチップシステムテストルーチンに完全に集中できる。さらに、自動テスト装置によってテスト対象デバイス上でのプログラム実行を制御することを可能にするプログラムを提供することによっても、自動テスト装置によって(例えば、オンチップシステムテストコントローラによって)テスト実行の全体的な制御を行うことができる。したがって、オンチップシステムテストコントローラは、自動テスト装置の追加機能(例えば、アナログテストリソースおよび/またはデジタルテストリソース)を使用して、テスト対象デバイス上でのオンチップシステムテストソフトウェアの実行を簡単に調整できる。具体的には、自動テスト装置の開発およびデバッグ環境でそのようなソフトウェアモジュールを提供することにより、オンチップシステムテストソフトウェアを開発するソフトウェアエンジニアは、ソフトウェア開発を容易および早める自動テスト装置によってテスト対象デバイスを制御するための機構に関する詳細を認識する必要はない。
【0108】
好ましい実施形態では、開発およびデバッグ環境は、例えば、ウォッチドッグ機能を実装することによって(例えば、オンチップシステムテストソフトウェアの)テスト対象デバイス上でのプログラム実行を監視し、任意選択で、テスト対象デバイスの応答性を保証する、オンチップシステムテストソフトウェアの開発(例えば、オンチップシステムテストソフトウェアへの組み込み)で使用するためのプログラム(例えば、「OCSTテストランナ」)を有する。
【0109】
テスト対象デバイス上でのプログラム実行を監視するプログラムを提供することにより、テスト対象デバイスの誤動作を容易に検出できる。例えば、オンチップシステムテストソフトウェアの開発で使用するために開発およびデバッグ環境によって提供される上記プログラムは、「ウォッチドッグ」、すなわち、テスト対象デバイス上で実行されるオンチップシステムテストプログラムが「動かなくなる」かどうか、すなわち、正常に機能しなくなるかどうかを認識する機能を引き継ぎ得る。そのようなプログラム実行の中止は、テスト対象デバイスの問題を示し得て、ウォッチドッグプログラムは、例えば、自動テスト装置にそのようなイベントを通知し得る。したがって、例えば、テスト対象デバイスのテストを中止することによって、およびテスト対象デバイスを障害としてマークすることによって、自動テスト装置はそれに応じて応答し得る。したがって、そのような監視プログラムまたはウォッチドッグプログラムを使用して、テスト対象デバイスを迅速に認識することにより、テスト時間を短縮し得る。この場合も、プログラムは自動テスト装置の開発およびデバッグ環境によって提供されるため、ソフトウェアエンジニアは詳細を気にする必要がない場合がある。
【0110】
好ましい実施形態では、自動テスト装置は、1つまたは複数のテスタリソース、オンチップシステムテストコントローラおよびテスト対象デバイス上で実行されるオンチップシステムテストを同期させるように構成される。
【0111】
1つまたは複数のテスタリソース、オンチップシステムテストコントローラ、およびテスト対象デバイス上で実行されるオンチップシステムテストを同期させることにより、オンチップシステムテストコントローラ、1つまたは複数の追加のテスタリソースとテスト対象デバイスとの間の連携を利用したテストを実行できる。言い換えれば、自動テスト装置のリソースをオンチップシステムテストの実行時に適用でき、特に徹底したテストを行うことできるようになる。
【0112】
好ましい実施形態では、自動テスト装置は、テスト対象デバイス上で実行されるオンチップシステムテストによって提供される制御情報に応答して(例えば、自動テスト装置によって実行されるテストプログラムで)条件付き飛び越しを実行するように構成される。
【0113】
テスト対象デバイス上で実行されているオンチップシステムテストによって提供される制御情報に応答して条件付き飛び越しを実行することにより、自動テスト装置の動作は、テスト対象デバイス上で実行されているオンチップシステムテストの非決定論的動作(例えば、非決定論的または予測不能なタイミング)に適合させることができる。例えば、テスト対象デバイス上で実行されているオンチップシステムテストの部分がどの順序で実行されるかがわからない場合があり、これは、予測が困難な要因または予測不能な要因に依存し得るためである。したがって、テスト対象デバイスは、自動テスト装置に制御情報を提供して、オンチップシステムテストの実行に関する詳細をシグナリングし、それによって、自動テスト装置がそれに応じて(例えば、適切な刺激信号を提供することによって)応答することを可能にし得る。
【0114】
したがって、自動テスト装置は、オンチップシステムテストの非決定論的性質に十分に適合できる。
【0115】
好ましい実施形態では、自動テスト装置は、テスト対象デバイス上で実行されるオンチップシステムテストの完了を待つように構成される。
【0116】
テスト対象デバイス上で実行されているオンチップシステムテストの完了を待つことにより、オンチップシステムテストの(通常は非決定論的)実行と自動テスト装置の機能との間の同期を実現できる。
【図面の簡単な説明】
【0117】
続いて、本発明による実施形態を、以下の添付した図を参照して説明する。
【
図1】本発明の実施形態による、自動テスト装置のブロック概略図を示す。
【
図2】本発明の実施形態による、自動テスト装置のブロック概略図を示す。
【
図3】
図2による自動テスト装置で使用するための開発およびデバッグ環境の概略図を示す。
【
図4】本明細書に開示される自動テスト装置を使用してテストできる、システムオンチップのブロック概略図を示す。
【
図5】本明細書に記載の自動テスト装置を使用してテストできる、モジュールのブロック概略図を示す。
【
図7】アナログテストおよび/またはRF受信機テストが実行される第1のシナリオの概略図を示す。
【
図8】アナログテストおよび/またはRF送信機テストが実行される第2のシナリオの概略図を示す。
【
図9】高速入力出力(HSIO)パラメトリックテストが実行される第3のシナリオの概略図を示す。
【
図10】高速入力出力(HSIO)プロトコルエンジンテストが実行される第4のシナリオの概略図を示す。
【
図11】相互接続ストレステストが実行される第5のシナリオの概略図を示す。
【
図12】オペレーティングシステム環境でのオンチップシステムテスト(OCST)の概略図を示す。
【
図13】組み込みオペレーティングシステムのブートシーケンスの概略図を示す。
【
図14】ベアメタル環境でのオンチップシステムテストの概略図を示す。
【
図15】デバッグポートを介した組み込みベアメタルブートの概略図を示す。
【
図16a】物理OCSTコントローラのブロック概略図を示す。
【
図16b】物理OCSTコントローラのブロック概略図を示す。
【発明を実施するための形態】
【0118】
[1.
図1による自動テスト装置]
図1は、本発明の実施形態による、自動テスト装置100のブロック概略図を示す。自動テスト装置100は、例えば、システムオンチップ(SoC)であり得るテスト対象デバイス104をテストするために適合されていることに留意されたい。
【0119】
自動テスト装置100は、オンチップシステムテストコントローラ110を備える。オンチップシステムテストコントローラ110は、テスト対象デバイス104と通信するように構成される少なくとも1つのデバッグインターフェースまたは制御インターフェース112を有する。さらに、オンチップシステムテストコントローラ110はまた、任意選択で、少なくとも1つの高帯域幅インターフェース114を有する(例えば、USBインターフェース、またはPCIインターフェース、またはPCI-expressインターフェース、またはPCI-express準拠インターフェース、またはサンダーボルト(商標)インターフェース、またはイーサネット(登録商標)インターフェース、またはIEEE-1394インターフェース、またはSATAインターフェースまたはIEEE-1149インターフェースまたはIEEE-1500インターフェース、またはIEEE-1687インターフェースであり得る)。
【0120】
さらに、オンチップシステムテストコントローラ110は、システムオンチップであるテスト対象デバイス104のテストを制御するように構成されていることに留意されたい。
【0121】
テスト対象デバイス104との通信に利用可能な2つ以上の異なるインターフェースを有することによって、オンチップシステムテストコントローラ110は、非常に低レベル、例えば、ハードウェアレベルで(例えば、テスト対象デバイスのハードウェア構成要素に直接アクセスするデバッグインターフェースを介して)テスト対象デバイス104を制御できてよく、オンチップシステムテストコントローラは、高帯域幅インターフェースを介して、テスト対象デバイス104に向けて大量のプログラムコードまたはデータを高速で通信することも可能になる。したがって、オンチップシステムテストコントローラは、(好ましくは、デバッグインターフェースまたは制御インターフェース112を使用して)テスト対象デバイスへの低レベルのハードウェアアクセスを必要とするテストタスク、およびテスト対象デバイス104上で実行されるソフトウェア(例えば、オンチップシステムテストプログラム)によって通常制御される高帯域幅通信を必要とするテストタスクの両方を管理できる。したがって、テスト対象デバイスの高カバレッジテストは、オンチップシステムテストコントローラ110の制御下で実行できる。
【0122】
さらに、テストを制御するために、デバッグインターフェースまたは制御インターフェース112および高帯域幅インターフェース114を有する専用のオンチップシステムテストコントローラ110を使用することにより、自動テスト装置でのボトルネックを回避でき、デバッグインターフェースまたは制御インターフェース112を使用して実行される制御と、高帯域幅インターフェース114を使用したデータ交換との間の高度な同期を実現できる。したがって、インターフェース112およびインターフェース114の両方を含むオンチップシステムテストコントローラ110を有することにより、高効率な構造が提供される。
【0123】
さらに、自動テスト装置100は、任意選択で、本明細書に開示される特徴、機能、および詳細のいずれかによって、個別でも組み合わせても、補足できることに留意されたい。
[2.
図2による自動テスト装置]
【0124】
図2は本発明の実施形態による、自動テスト装置200のブロック概略図を示す。
【0125】
自動テスト装置200は、例えば、オンチップシステムテストコントローラ110に対応し得るオンチップシステムテストコントローラ210を備える。さらに、自動テスト装置200は、例えば、インターフェース112、114の機能を組み合わせ得る、テスト対象デバイスインターフェース216を備える。自動テスト装置200は、1つまたは複数のパラメトリックテストリソースまたはアナログテストリソース220および1つまたは複数のデジタルテストリソース230をさらに備える。自動テスト装置は、開発およびデバッグ環境240をさらに備える。
【0126】
以下では、オンチップシステムテストコントローラ210についてより詳細に説明する。オンチップシステムテストコントローラ210は、例えば、システムオンチップであり得る、例えば、中央装置250を有する。しかし、中央装置250はまた、マイクロプロセッサを使用して、アプリケーション固有の個々の回路を使用して、またはフィールドプログラマブルゲートアレイを使用して実装され得る。オンチップシステムテストコントローラ210は、デバッグインターフェース252、制御インターフェース254、および任意選択で高帯域幅インターフェース256をさらに有する。さらに、オンチップシステムテストコントローラは、中央装置250によって、または複数の中央装置もしくは中央処理装置によっても実行され得るソフトウェアスタック258を有する。さらに、オンチップシステムテストコントローラ210は、DUTソフトウェア、すなわち、テスト対象デバイスの中央処理装置によって実行されるソフトウェアを含むソフトウェアリポジトリ260を有し得る。
【0127】
ただし、オンチップシステムテストコントローラは、必ずしもすべての構成要素250、252、254、256、258、260を有する必要はないことに留意されたい。むしろ、任意選択で、上記構成要素のうちの1つまたは複数を省略または変更できる。以下では、様々な構成要素のいくつかの追加の詳細について説明する。
【0128】
具体的には、デバッグインターフェース252によってテスト対象デバイスに提供される信号、またはデバッグインターフェース252によってテスト対象デバイスから受信される信号は、例えば、構成可能なルーティングマトリクスを使用して、テスト対象デバイスインターフェース216に可変的に割り当てられ得ることに留意されたい。同様に、制御インターフェース254によってテスト対象デバイスに提供される1つまたは複数の信号、および/または制御インターフェース254によってテスト対象デバイスから受信される1つまたは複数の信号は、テスト対象デバイスインターフェース216に可変的に割り当てられ得る。同様に、高帯域幅インターフェース256によってテスト対象デバイスに提供される1つまたは複数の信号、および/または高帯域幅インターフェース256によってテスト対象デバイスから受信される1つまたは複数の信号は、テスト対象デバイスインターフェース216に可変的に割り当てることできる。したがって、オンチップシステムテストコントローラ(または、一般に、自動テスト装置)は、デバッグインターフェース252および/または制御インターフェース254および/または高帯域幅インターフェース256の1つまたは複数のテスト対象デバイスポートを、例えば、調整可能なルーティングマトリクスを使用して、テスト対象デバイスインターフェース216のピンに可変的に割り当て得る。
【0129】
例えば、中央装置250によって実行され得るソフトウェアスタック258は、複数の層を有し得る。例えば、ソフトウェアスタックは、オペレーティングシステム、オンチップシステムテストサービスソフトウェア、およびテスト対象デバイスと通信するためのドライバを有し得る。例えば、オペレーティングシステムがソフトウェアの全体的な実行を制御し得る。オンチップシステムテストサービスシステムソフトウェアは、例えば、他のテスタリソース(またはテストリソース)および/またはより高い階層レベルのコントローラ(例えば、全体的なテストプロセスを制御するワークステーション)との通信を制御し得る。オンチップシステムテストサービスソフトウェアは、例えば、テスト対象デバイスから取得されたデータに基づいてテスト結果の評価を実行し得る。
【0130】
ソフトウェアスタック258の一部でもあるドライバは、例えば、デバッグインターフェース252を介して、および/または制御インターフェース254を介して、および/または高帯域幅インターフェース256を介して、テスト対象デバイスとの通信を制御し得る。場合によっては、物理インターフェースの実際のタイプに応じて、高レベルのソフトウェアに共通のインターフェースを提供するようにドライバを設計することもあり得る。したがって、ドライバは、例えば、高レベルのソフトウェアを特定のタイプの高帯域幅インターフェースに適合させる必要がないように、実際のタイプの高帯域幅インターフェースをより高いレベルのソフトウェアに「隠し」得る。したがって、ドライバは、ソフトウェア開発を単純にし、ソフトウェア設計者がオンチップシステムテストコントローラとテスト対象デバイスとの間の物理インターフェースに関する詳細を知る必要をなくすのに役立つ。さらに、ソフトウェアスタック258はまた、ユーザによって提供される1つまたは複数のアプリケーション固有のルーチンを有し得る。ユーザによって提供されるアプリケーション固有のルーチンは、特定のタイプのテスト対象デバイスのテストに適合させ得る。ユーザによって提供されるアプリケーション固有のルーチンは、オペレーティングシステムによって提供される機能に依存し得て、また、ソフトウェアスタックのドライバを使用して、テスト対象デバイスと通信でき得る。
【0131】
ここで、オンチップシステムテストコントローラ210は、例えば、ソフトウェアスタック258を使用して、テスト対象デバイスとの高度な相互作用および通信を実行し得ることに留意されたい。例えば、オンチップシステムテストコントローラ210は、1つまたは複数のプログラムおよび/またはテストパラメータセットをテスト対象デバイスにアップロードし得て、デバッグインターフェース252および/または制御インターフェース254および/または高帯域幅インターフェース256を使用して、1つまたは複数のプログラムおよび/またはテストパラメータセットを、テスト対象デバイスインターフェース216を介してテスト対象デバイスにアップロードし得る。例えば、テスト対象デバイスにアップロードされる1つまたは複数のプログラムおよび/またはテストパラメータセットは、オンチップシステムテストコントローラの一部であり得て、DUTソフトウェアを格納し得るソフトウェアリポジトリ260から取得され得る。例えば、オンチップシステムテストコントローラは、オンチップシステムテスト環境をテスト対象デバイスにアップロードするように構成され得て、また、1つまたは複数のオンチップシステムテストをテスト対象デバイスインターフェース216を介してテスト対象デバイスにアップロードするように構成され得る。例えば、オンチップシステムテスト環境はテスト対象デバイス上のオペレーティングシステムの役割を果たし得て、例えば、自動テスト装置と通信するために、テスト対象デバイス上に1つまたは複数のドライバを提供し得る。さらに、個々のオンチップシステムテストは、例えば、テスト対象デバイスをテストするために実行される全体的なテスト手順のステップ(またはサブステップ)を定義し得る。
【0132】
さらに、オンチップシステムテストコントローラ210は、例えば、1つまたは複数のオンチップシステムテストを開始し得て、異なる概念が適用され得る。1つまたは複数のオンチップシステムテストは、例えば、デバッグインターフェース252を介して実行され得る(および、例えば、テスト対象デバイスのCPUの1つまたは複数のレジスタであり得る)、例えば、テスト対象デバイスへのハードウェアアクセスによってトリガ(または開始)され得る。あるいは、1つまたは複数のオンチップシステムテストは、最初にテスト対象デバイスにアップロードされ、テスト対象デバイス上で実行される、対応するコマンドをオンチップシステムテスト環境に提供することによって開始し得る。
【0133】
さらに、オンチップシステムテストコントローラはまた、例えば、全体的なテスト実行プログラムに基づいて、テスト対象デバイスのテストを制御し得る。例えば、オンチップシステムテストコントローラ210は、オンチップシステムテストプログラムのパラメータを調整したり、複数のオンチップシステムテストプログラムの実行をスケジュールしたり、必要に応じて、1つまたは複数のオンチップシステムテストプログラムの実行を中止したりなどをし得る。
【0134】
さらに、オンチップシステムテストコントローラ250はまた、以前に実行された1つまたは複数のオンチップシステムテストプログラムの完了に応答して、さらなるオンチップシステムテストプログラムをアップロードし得る。
【0135】
テスト対象デバイスのテストの制御は、テスト対象デバイスへのハードウェアレベルのアクセスを介して(例えば、デバッグインターフェースを介して)、および/またはテスト対象デバイス上で実行されるオンチップシステムテスト環境に送信されるコマンドを使用して実行され得る。
【0136】
さらに、オンチップシステムテストコントローラ210はまた、インターフェース252、254、256の1つを介してテスト対象デバイスからコマンドおよび/または制御情報を受信し、上記コマンドおよび/または制御情報に反応し得る。例えば、テスト対象デバイスは、特定のテスト条件(例えば、供給電圧またはクロック周波数)の適合を要求し得て、オンチップシステムテストコントローラ210は、テスト環境を適切に適合させることによって、そのようなコマンドまたは制御情報に応答し得る。
【0137】
さらに、オンチップシステムテストコントローラ210はまた、(例えば、インターフェース252、254、256の1つを使用して)テスト対象デバイスからデータを受信し得る。オンチップシステムテストコントローラ210は、上記データを使用して、テスト対象デバイスが要件を満たしているかどうかを決定し得る(すなわち、テスト対象デバイスが許容可能として分類すべきかまたは障害として分類すべきかを決定する)。さらに、オンチップシステムテストコントローラはまた、データに応じてテスト実行フローを適合させるために、テスト対象デバイスから受信したデータを使用し得る。例えば、テスト実行フローは、テスト対象デバイスから受信したデータと参照データとの比較に応答して適合させ得る。例えば、テスト対象デバイスから受信したデータは、テスト実行を特徴付け得て、例えば、テスト対象デバイスによって受信された信号の特性(例えば、信号対雑音比、符号誤り率など)を記述し得る。例えば、テストフローの適合は、ユーザによって提供されるアプリケーション固有のルーチンによって実行され得る。しかし、テスト対象デバイスから受信したデータに応じて、テストフローの実行を適合させるための様々な概念が可能である。
【0138】
ただし、オンチップシステムテストコントローラ210は、必ずしも本明細書に記載のすべての機能を実装する必要はないことに留意されたい。むしろ、いくつかの実施形態では、オンチップシステムテストコントローラが、本明細書で説明する機能のうちの1つまたは複数を実装していれば十分であり得る。一方、オンチップシステムテストコントローラは、本明細書では説明されていない様々な機能を有することも可能である。
【0139】
さらに、オンチップシステムテストコントローラはまた、1つまたは複数の追加のテストリソースを制御および/または同期させ得ることに留意されたい。例えば、オンチップシステムテストコントローラは、例えば、電源、電圧源、電流源、電圧測定デバイスまたは電流測定デバイスのような1つまたは複数のパラメトリックテストリソースまたはアナログテストリソース220を制御および/または同期させ得る。例えば、オンチップシステムテストコントローラは、オンチップシステムテストコントローラの中央装置250によって実行されるプログラムに応じて、1つまたは複数のパラメトリックテストリソースを制御し得る。オンチップシステムテストコントローラは、例えば、1つまたは複数のパラメトリックテストリソースを設定する方法を自ら決定し得るか、またはオンチップシステムテストコントローラは、コマンドまたはテスト対象デバイスから受信した制御情報に応じて(すなわち、テスト対象デバイスからの要求に応答して)1つまたは複数のパラメトリックテストリソースを設定し得る。ただし、パラメトリックテストリソースまたはアナログテストリソースはまた、無線周波数信号の生成または無線周波数信号の受信および/または評価を有し得ることに留意されたい。同様に、したがって、パラメトリックテストリソースは、テスト対象デバイスをテストするときに使用される光信号の生成または受信または評価を有する。
【0140】
同様に、オンチップシステムテストコントローラは、例えば、テスト対象デバイスをテストするためのデジタル刺激信号を提供する、および/またはテスト対象デバイスからのデジタル応答信号を評価する、1つまたは複数のデジタルテストリソース230を制御および/または同期させ得る。ただし、パラメトリックテストリソース/アナログテストリソース220およびデジタルテストリソース230はまた、パラメトリックテストリソース/アナログテストリソースおよび/またはデジタルテストリソースが、テスト対象デバイスインターフェース216の異なるピンと可変的に結合され得るように、可変割り当てを使用して、テスト対象デバイスインターフェース216に結合され得ることに留意されたい。
【0141】
しかし、オンチップシステムテストコントローラ210は、自動テスト装置に存在し得る他のオンチップシステムテストコントローラとは共有されない、1つまたは複数の「ローカル」通信インターフェースを使用して、パラメトリックテストリソース/アナログテストリソース220および/またはデジタルテストリソース230を制御および/または同期させるように構成され得る。したがって、オンチップシステムテストコントローラは、パラメトリックテストリソース/アナログテストリソース220および/またはデジタルテストリソース230を制御および/または同期させるときに、非常に優れたリアルタイム機能を有し得る。
【0142】
さらに、自動テスト装置は、テスト対象デバイスおよび追加のテストリソース220、230のオンチップシステムテストコントローラの同期を提供し得ることに留意されたい。例えば、自動テスト装置の別の構成要素は、同期信号を、オンチップシステムテストコントローラ、テスト対象デバイス、および他のテストリソース220、230に提供し得る。したがって、高度な同期性を実現できる。
【0143】
以下では、任意選択で自動テスト装置200に含まれ得る開発およびデバッグ環境240について、
図3を参照して説明する。
【0144】
例えば、開発およびデバッグ環境240は、例えば、ソフトウェアリポジトリ260に格納され得るDUT上で実行するためのオンチップシステムテストソフトウェアおよび、自動テスト装置上で実行するため(例えば、ソフトウェアスタック258で実行するため)のテストプログラムの両方を提供するように適合され得る。しかし、開発およびデバッグ環境はまた、オンチップシステムテストコントローラ210によって考慮され得る制御情報を提供し得る。
【0145】
開発およびデバッグ環境240は、例えば、ソフトウェアエンジニアがオンチップシステムテストソフトウェアおよび/またはテストプログラムを開発することを可能にするためのユーザインターフェースを有し得る。さらに、開発およびデバッグ環境は、任意選択で、デバッグソフトウェアがテスト対象デバイスへのプログラムのアップロードを制御することを可能にするように適合されたインターフェース242を有し得る。したがって、開発およびデバッグ環境240は、サードパーティのデバッグソフトウェアと連携して、オンチップシステムテストソフトウェアの効率的なデバッグを可能にし得る。さらに、開発およびデバッグ環境240はまた、デバッグソフトウェアがDUTのデバッグインターフェースにアクセスすることを可能にするためのインターフェース244を有する。例えば、DUTのデバッグインターフェースへのアクセスは、デバッグインターフェース252への直接アクセスするオンチップシステムテストコントローラを介して行われ得る。
【0146】
さらに、開発およびデバッグ環境は、テスト対象デバイス上で実行されるオンチップシステムテストソフトウェアの開発および、自動テスト装置上で実行するためのテストプログラムの開発の両方でソフトウェアエンジニアをサポートし得る。
【0147】
この目的のために、開発およびデバッグ環境は、ATEのテストリソースへのアクセスを提供するプログラムコードを有し得る。例えば、上記プログラムコード246aは、例えば、テスト対象デバイスが、ソフトウェアエンジニアの要求に応じて、開発およびデバッグ環境によってオンチップシステムテストソフトウェアに含まれ得る、プログラム246aへの関数呼び出しを使用して、テストリソース220および/または230の特性を変更できるように、テスト対象デバイスが、オンチップシステムテストコントローラを介してATEのテストリソースにアクセスすることを可能にし得る。
【0148】
さらに、開発およびデバッグ環境はまた、自動テスト装置からテスト対象デバイスへのさらなるソフトウェアのアップロードを可能にするためのプログラム246bを有し得る。例えば、上記プログラム246bは、テスト対象デバイス上で実行されるプログラムコードを受信するために、テスト対象デバイスの高帯域幅インターフェースを構成し得る。このプログラム246bは、ソフトウェアエンジニアの要求に応じて、オンチップシステムテストソフトウェアに含まれ得る。同様に、開発およびデバッグ環境は、自動テスト装置上(例えば、オンチップシステムテストコントローラ上)で実行するためのテストプログラムに、自動テスト装置から(例えば、オンチップシステムテストコントローラのソフトウェアリポジトリから)テスト対象デバイスへのさらなるソフトウェアのアップロードを可能にするプログラムを含み得る。したがって、開発およびデバッグ環境は、オンチップシステムテストソフトウェアおよび自動テスト装置で実行するためのテストプログラムに含めるための嵌合プログラムコードを含み得る。
【0149】
さらに、開発およびデバッグ環境は、テスト対象デバイス上でのプログラム実行の制御を可能にするためのプログラム246cを有する。例えば、上記プログラム246cは、ソフトウェアエンジニアの要求に応じて、オンチップシステムテストソフトウェアに含まれ得る。プログラム246cは、例えば、テスト対象デバイスのインターフェースの1つを介して、オンチップシステムテストコントローラからプログラム制御コマンドを受信するように適合させ得る。しかし、オンチップシステムテストソフトウェアは、例えば、自動テスト装置で実行するために、対応するプログラムをテストプログラムに含め得る。したがって、オンチップシステムテストソフトウェアおよび、ソフトウェアエンジニアの要求に応じて自動テスト装置上で実行するためのテストプログラムに含まれる「嵌合」プログラムモジュールがある、オンチップシステムテストコントローラの側から、テスト対象デバイス上でのプログラムの実行を制御することが可能になる。
【0150】
さらに、開発およびデバッグ環境は、テスト対象デバイス上でのプログラム実行を監視するように適合されたプログラム246dを有する。例えば、上記プログラム246dは、ソフトウェアエンジニアの要求に応じて、オンチップシステムテストソフトウェアに含まれ得る。プログラム246dは、例えば、オンチップシステムテストソフトウェアが適切に実行されているかどうか、またはオンチップシステムテストソフトウェアが故障状態にあるかどうかを監視し得る。したがって、プログラム246dは、テスト対象デバイス上で実行されているソフトウェアが障害状態にあるかどうかをオンチップシステムテストコントローラに通知し得て、オンチップシステムテストコントローラはそれに応じて(例えば、デバイスを障害として分類することによって、またはテスト対象デバイスをリセットすることによって、またはテスト対象デバイスに新しいオンチップシステムテストソフトウェアをアップロードまたは開始することによって)反応し得る。
【0151】
開発およびデバッグ環境はまた、自動テスト装置のインターフェースを介して、オンチップシステムから(例えば、ATEの)メモリコンテンツへのアクセスを可能にするためのプログラム246eを有する。このプログラムは、ソフトウェアエンジニアの要求に応じて、オンチップシステムテストソフトウェアに含まれ得る。したがって、テスト対象デバイスは、上記プログラムコード246eを呼び出すことによって、自動テスト装置のメモリから(例えば、オンチップシステムテストコントローラのメモリから)データを読み取ることができる。代替的に、またはそれに加えて、テスト対象デバイスは、プログラムコード246eを呼び出すことによって、自動テスト装置(例えば、オンチップシステムテストコントローラ)のメモリにデータを書き込み得る。さらに、開発およびデバッグ環境はまた、自動テスト装置のメモリへのテスト対象デバイスのこのアクセスをサポートするために、オンチップシステムテストコントローラのプログラムまたは構成情報を提供し得て、(DUT上で実行するための)オンチップシステムテストソフトウェアに含まれるプログラムコードとオンチップシステムテストコントローラの構成情報が一致することが保証され得る。
【0152】
開発およびデバッグ環境はまた、テスト対象デバイスと自動テスト装置のテストリソース(例えば、テストリソース220、230)との間の通信を可能にするアプリケーションプログラミングインターフェース246fを有し得る。したがって、ソフトウェアエンジニアの要求に応じてこのアプリケーションプログラムインターフェース246fを使用することにより、テスト対象デバイスは、自動テスト装置のテストリソースを制御することを可能にできる。
【0153】
さらに、開発およびデバッグ環境はまた、自動テスト装置とテスト対象デバイスとの通信をサポートするためのテスタソフトウェア246gを有する。このテスタソフトウェア246gは、例えば、ソフトウェアエンジニアの要求に応じて自動テスト装置上で実行するためのテストプログラムに含まれ、自動テスト装置とテスト対象デバイスとの間の通信をサポートし得る。
【0154】
さらに、開発およびデバッグ環境はまた、ATEからDUTへのパラメータのセットのアップロードを可能にするためのプログラム246hを有する。したがって、例えば、オンチップシステムテストの後続の実行の間に、オンチップシステムテスト(例えば、プログラム246bを使用してアップロードされ、プログラム246cによって開始される)の実行のためのパラメータを更新して、それによって、パラメータの数だけが異なる同様のオンチップシステムテストを複数回アップロードする必要性を克服することが可能になる。
【0155】
結論として、開発およびデバッグ環境240は、オンチップシステムテストソフトウェアの開発、また、自動テスト装置上で実行するためのテストプログラムの開発をサポートするいくつかのソフトウェアブロック246aから246hを有し得る。例えば、嵌合ソフトウェア構成要素は、開発およびデバッグ環境によって、オンチップシステムテストソフトウェアおよび自動テスト装置上で実行するためのテストプログラムの両方に自動的に導入され得て、例えば、構成要素のパラメータセットはまた、開発およびデバッグ環境によって適切な値に自動的に調整され得る。
【0156】
しかし、開発およびデバッグ環境は、本明細書に記載のソフトウェア部分246aから246gのすべてを必ずしも有する必要はないことに留意されたい。むしろ、場合によっては、開発およびデバッグ環境240が、上記ソフトウェア部分のうちの1つまたは複数を有することで十分である。
【0157】
別の態様によれば、オンチップシステムテスト自体をロードすることとは無関係に、テストパラメータをDUTにロードすることが可能である(例えば、パラメータセットをテスト対象デバイスにアップロードすることが可能である)。例えば、オンチップシステムテスト(OCST)はロードされたままである場合があるが、次の実行の前にパラメータが変更される場合がある。これは、より効率的であり、通常、OCSTの特性評価時に行われる。
【0158】
さらに、本明細書に記載の自動テスト装置200は、任意選択で、本文書に開示される特徴、機能、および詳細のいずれかによって、個別でも組み合わせても、補足され得ることに留意されたい。
[3.
図6によるオンチップシステムテスト]
【0159】
図6は、本発明の実施形態による、オンチップシステムテストの概略図を示す。
【0160】
図6によるオンチップシステムテストは、ワークステーション610、テストシステム620、およびSoC630の3つの主要構成要素に基づいている。例えば、SoC630は、上記の説明を参照するように、
図4に示すSoC400に対応し得る。
【0161】
自動テスト装置の一部であり得るワークステーション610は、例えば、統合開発環境612および統合テストエグゼキュータ614を有する。
【0162】
例えば、統合開発環境612は、自動テスト装置プログラムの開発、デバッグ、および実行を有し得て、組み込みソフトウェアの開発、デバッグおよび実行も有し得る。例えば、統合開発環境612は、開発およびデバッグ環境240の機能を有し得る。しかし、示された開発環境612が、組み込みソフトウェア、すなわち、テスト対象デバイス630上で実行されるソフトウェアの開発、デバッグ、および実行を可能にすることは、従来の開発環境との重要な違いであることに留意されたい。
【0163】
さらに、統合テストエグゼキュータ614は、例えば、ATEテストプログラムを含み得て、テストシステム620と協調し得る。例えば、統合エグゼキュータは、ATEテストプログラムを実行し得て、上記ATEテストプログラムは、テストシステム620の機能を制御し得ると共に、テストシステム620からデータ(例えば、テスト結果情報)を受信し得る。
【0164】
通常、自動テスト装置の一部でもあるテストシステム620は、例えば、オンチップシステムテストコントローラ110またはオンチップシステムテストコントローラ210に対応し得る、1つまたは複数のオンチップシステムテストコントローラ622を有する。
【0165】
テストシステム620はまた、例えば、前述のデジタルテストリソース230に対応し得る、1つまたは複数のデジタル入力/出力機器624有する。さらに、テストシステム620はまた、例えば、パラメトリックテストリソース220に対応し得る、1つまたは複数のアナログ/無線周波数(RF)/高速入力出力(HSIO)機器626を有する。
【0166】
テストシステム620はまた、例えば、デジタルテストリソース230にも対応し得る、1つまたは複数のデジタル入力/出力機器628有する。さらに、テストシステム620は、例えば、パラメトリックテストリソース220に対応し得る、1つまたは複数のデバイス電源機器629を有する。さらに、テストシステム620は、同期バス629aを有し、1つまたは複数のオンチップシステムテストコントローラ622、1つまたは複数のデジタル入力/出力機器624、1つまたは複数のアナログ/RF/HSIO機器626、1つまたは複数のデジタル入力/出力機器628、および1つまたは複数のデバイス電源機器629はすべて同期バス629に結合される。したがって、オンチップシステムテストコントローラ622は、例えば、上述のパラメトリックテストリソース220の役割およびデジタルテストリソース230の役割を引き継ぎ得る、例えば、機器624、626、628、629を同期させ得る。
【0167】
例えば、デジタル入力/出力機器624は、SoC630の入力/出力マルチプレクサに結合され得て、1つまたは複数のデジタル信号をSoCに提供し得て、および/またはSoC630から1つまたは複数のデジタル信号を受信し得る。アナログ/無線周波数/HSIO機器626は、例えば、SoCの1つまたは複数の周辺機器インターフェースに結合され得る。
【0168】
1つまたは複数のデジタル入力/出力機器628は、例えば、SoCにクロック信号、リセット信号などのような補助信号を提供し得て、したがって、テスト手順を制御するのにも役立ち得る。1つまたは複数のデバイス電源629は、SoCに1つまたは複数の供給電圧を提供し得て、例えば、オンチップシステムテストコントローラ622の制御下で異なる供給電圧に対してSoCをテストするために、SoCのテスト環境を変化させるためにも使用され得る。
【0169】
統合テストエグゼキュータ614は、例えば、自動テスト装置によって実行される全体的なテストフローを制御し得て、例えば、特定のテストフローを実行するようにオンチップシステムテストコントローラ622を構成し得る。例えば、統合テストエグゼキュータ614は、オンチップシステムテストコントローラを初期化し得て、オンチップシステムテストコントローラは、その後、テストプロセスを自律的に実行および制御する。しかし、統合テストエグゼキュータ614はまた、オンチップシステムテストコントローラによって実行されるテスト実行に対してある程度制御を実行し得る。
【0170】
例えば、統合テストエグゼキュータ614は、例えば、SoCのデバッグインターフェースを介して、オンチップシステムテストソフトウェアをテスト対象デバイス630にアップロードするようにオンチップシステムテストコントローラに指示し得る。したがって、オンチップシステムテストコード(オンチップシステムテストプログラムまたは簡潔にオンチップシステムテストとも示す)は、テスト対象デバイス630上で実行され得て、実行は、SoCのメモリを利用して(例えば、SRAM、L2キャッシュ、およびNVRAMを利用して)、SoCのCPUコアによって行われ得る。
【0171】
SoCによって実行されるオンチップテストコードは、例えば、統合開発環境612で開発およびデバッグされ得て、OCSTコントローラ622およびSoCのデバッグインターフェースを介して統合テストエグゼキュータの制御下でSoCにアップロードされ得る。
【0172】
結論として、本明細書に記載の自動テスト装置は、SoC(または、一般的に言えば、テスト対象デバイス)のテストを実行し得て、OCSTコントローラは、テストの制御において重要な部分を引き継ぎ、1つまたは複数の機器の同期を担い得る。OCSTコントローラはまた、オンチップシステムテストソフトウェアをテスト対象デバイスにアップロードし得て、上記オンチップシステムテストソフトウェア(「組み込みソフトウェア」)の開発は、例えば、自動テスト装置の一部であるワークステーション610を使用して実行される。全体的なテストフローは、統合テストエグゼキュータ614を使用してワークステーション610によっても実行されるATEテストプログラムによって制御され得る。
【0173】
テスト対象デバイスとの直接通信、また、(任意選択で)複数の機器の同期を担うOCSTコントローラ622を有することにより、通信のボトルネックを回避でき、高スループットを実現できる。これは、高帯域幅インターフェースを使用する多くの最新テスト対象デバイスにとって望ましいことである。
【0174】
ただし、
図6に示すオンチップシステムテストは、任意選択で、本明細書に開示される特徴、機能、および詳細のいずれかによって、個別でも組み合わせても、補足し得ることに留意されたい。
[4. オンチップシステムテストの中心概念]
【0175】
以下では、任意選択で、本明細書に記載の自動テスト装置のいずれかに実装し得る、いくつかのオンチップシステムテストコアの中心概念について説明する。
【0176】
第1の態様によれば、既存のATEテストコントローラソフトウェアに、組み込みソフトウェアの開発、デバッグおよび開発環境を含めることが可能である。
【0177】
第2の態様によれば、DUTのCPU上で実行されているテストプログラムフラグメントにランタイムおよびAPIを提供することが望ましい。
【0178】
第3の態様によれば、メインテストプログラムフラグメントと、ATE機器を制御するメインATEテストプログラムとの間の同期およびデータ転送のための機能を提供することが望ましい。
【0179】
第4の態様によれば、これを平均的なテストエンジニア(またはソフトウェアエンジニア)にとって使いやすいようにすることが望ましい。例えば、テストエンジニアが、彼らの検証グループまたはソフトウェア/ファームウェア開発グループから必要なDUT固有のソフトウェアを簡単に入手できるようにすることが望ましい。
【0180】
第5の態様によれば、限られたリソース(例えば、ウェハソートでのメモリ不足)でも環境が実行できるようにすることが望ましい。
【0181】
第6の態様によれば、広く使用されているインフラストラクチャ(例えば、AMBAバスストレステスト)での一般的なテスト課題のために、すぐに使用できるテストプログラムフラグメントを提供することが望ましい。
【0182】
結論として、上述した態様のいずれかは、任意選択で、個別でも組み合わせても、本明細書に記載の自動テスト装置に導入され得る。
[5. アプリケーション]
以下では、
図7~
図11を参照して、いくつかのアプリケーションについて説明する。
【0183】
図7は、アナログ/RF受信機テストが実行される第1のシナリオの概略図を示す。この場合、例えば、ワークステーション610に対応し得るワークステーション710を有し、例えば、テストシステム620に対応し得るテストシステム720も有する、自動テスト装置が使用される。さらに、テスト対象デバイス730は、例えば、テスト対象デバイス630に対応し得る。
【0184】
図に示すように、例えば、統合テストエグゼキュータによって実行される自動テスト装置プログラムは、オンチップシステムテストコントローラに、アナログ/RF受信機テストを可能にするオンチップシステムテストコードをテスト対象デバイス上にアップロードするように指示する。例えば、テスト対象デバイス上で実行される上記オンチップシステムテストコードは、アナログ信号または無線周波数信号の受信のためにテスト対象デバイス730の周辺機器インターフェースを構成し得る。
【0185】
さらに、統合テストエグゼキュータは、テストシステム720のアナログ/無線周波数発生器を制御して、テスト対象デバイス730の周辺機器インターフェースにアナログ信号または無線周波数信号を提供し得る。例えば、統合テストエグゼキュータおよびワークステーション710は、アナログ/無線周波数発生器を直接制御し得る。しかし、好ましい実施形態では、オンチップシステムテストコントローラは、実際に、テストシステムのアナログ/無線周波数発生器を制御および同期させる。その結果、テスト対象デバイスの周辺機器インターフェースは、通常、(周辺機器インターフェースによって受信された)受信したアナログ信号または無線周波数信号を反映するデジタル情報を生成し、オンチップテストコードは、例えば、周辺機器インターフェースによって提供されるデジタルデータを評価し、および/または評価のために(例えば、OCSTコントローラによって)周辺機器インターフェースから受信したデジタルデータをテストシステムに転送し得る。したがって、テスト結果は、テスト対象デバイスを、例えば、正常または障害として判断することを可能にする、OCSTコントローラによって統合テストエグゼキュータに提供され得る。
【0186】
結論として、オンチップテストコードによってサポートされ得て、テスト対象デバイス上で実行され、OCSTコントローラでもサポートでき、例えば、オンチップテストコードをテスト対象デバイスにアップロードし、アナログ/無線周波数発生器を制御し、また、テスト対象デバイスからの結果情報の取得および結果情報のワークステーション710への転送を処理し得る、テスト対象デバイスのアナログ/RF受信機テストを実行できる。
【0187】
図8は、アナログ/無線周波数送信機テストが実行される第2のシナリオの概略図を示す。
【0188】
第2のシナリオでは、ワークステーション610またはワークステーション710に対応し得るワークステーション810、テストシステム720またはテストシステム620に対応し得るテストシステム820があり、テスト対象デバイス730またはテスト対象デバイス630に対応し得る、テスト対象デバイス830がある。具体的には、第2のシナリオは第1のシナリオとよく似ていることに留意されたい。
【0189】
しかし、第2のシナリオでは、オンチップテストコードがテスト対象デバイス830に(例えば、OCSTコントローラを介して)アップロードされ、これにより、テスト対象デバイス830は、周辺機器インターフェースを介してアナログ信号または無線周波数信号を送信する。例えば、テスト対象デバイス830の周辺機器インターフェースを介して送信されるデータは、テスト対象デバイス830上で実行されるオンチップテストコードによって提供される。さらに、テストシステム820のアナログサンプラ/無線周波数サンプラは、テスト対象デバイス830によって生成されたアナログ信号または無線周波数信号を受信する。テスト対象デバイス830からテストシステム820によって受信されたアナログ信号または無線周波数信号に関する情報は、例えば、OCSTコントローラによって評価され得るか、または、例えば、OCSTコントローラによってワークステーション810上の統合テストエグゼキュータに転送され得る。したがって、例えば、OCSTコントローラによって、またはワークステーション810上で実行されている統合テストエグゼキュータによって、テスト対象デバイスによって提供されるアナログ信号が期待または要件を満たすかどうかが判断され得る。したがって、テスト対象デバイスを正常として分類するか、または障害として分類するかを決定できる。
【0190】
ここで、自動テスト装置(ワークステーション810およびテストシステム820を備える)とテスト対象デバイス830との間に連携があることに留意されたい。テスト対象デバイス830にアップロードされたオンチップテストコード(またはオンチップシステムテストソフトウェア)は、アナログ信号または無線周波数信号の提供を制御し、テストシステムは、好ましくは、通常、アナログ/無線周波数サンプラへの高速で直接的なインターフェースを有する、OCSTコントローラの制御下で、アナログ信号を受信して評価する。OCSTコントローラは、通常、非常に直接的な方法でテスト対象デバイス830と通信することもできるので、OCSTコントローラはまた、テスト対象デバイスによって提供されるアナログ信号およびアナログ信号が提供されるタイミングをある程度制御し得る。
【0191】
結論として、本明細書に開示される自動テスト装置は、任意選択で、第2のシナリオを処理するように適合され得る。
【0192】
図9は、高速入力出力(HSIO)パラメトリックテストが実行される第3のシナリオの概略図を示す。第3のシナリオでは、ワークステーション910およびテストシステム920は、テスト対象デバイス930をテストするために使用され、ワークステーション910は、前述のワークステーション610、710、810に対応し得て、テスト対象システム920は、前述のテストシステム620、720、820に対応し得る。
【0193】
しかし、第3のシナリオでは、テストシステム920の高速入力出力機器を使用して、テスト対象デバイスにデータを送信し、テスト対象デバイスからデータを受信し得る。例えば、テストシステム920の高速入力出力機器は、テスト対象デバイスの周辺機器インターフェース(例えば、HSIO周辺機器インターフェース)に結合され得る。例えば、テストシステムは、テストシステム920のHSIOインターフェースを介してテスト対象デバイス930にデータを提供し得て、データは、統合テストエグゼキュータ上で実行されるATEテストプログラムによって決定され得る。例えば、テストシステム920の高速入力出力インターフェースを介したテスト対象デバイスへのデータの送信に対する制御は、統合テストエグゼキュータ上で実行されているATEテストプログラムからデータを受信するOCSTコントローラによって実行され得る。
【0194】
DUT930の周辺機器インターフェースは、例えば、周辺機器インターフェースの適切な構成(例えば、周辺機器インターフェースのテストのためのいくつかの設計を利用する)によって、例えば、テストシステムによって提供されるデータをループバックし得る。ただし、ループバック機能はまた、オンチップテストコードによって提供され得て、周辺機器インターフェースから受信したデータを読み取り、読み取ったデータを周辺機器インターフェースの出力バッファにコピーして戻し得る。
【0195】
テストシステム920は、テスト対象デバイス930の周辺機器インターフェースによって送信されたデータを受信し得て、受信したデータは、OCSTコントローラによって評価され得て、および/または統合テストエグゼキュータ上で実行されるATEテストプログラムに転送され得る。したがって、テスト対象デバイス930の高速入力出力インターフェースがテストされ得て、送信のパラメータは、テスト対象デバイス930の高速入力出力インターフェースのパラメータを決定できるように、例えば、OCSTコントローラの制御下で、テストシステム920の高速入力出力機器によって調整され得る。さらに、例えば、OCSTコントローラが、テスト対象デバイスの周辺機器インターフェースへのデータの送信、また、周辺機器インターフェースからのデータの受信、さらには、テスト対象デバイスの構成を制御する場合、特に高い効率が得られる。したがって、高速入力出力パラメトリックテストを非常に効率的に実行できる。
【0196】
図10は、HSIOプロトコルエンジンテストが実行される第4のシナリオの概略図を示す。第4のシナリオでは、ワークステーション1010およびテストシステム1020は、テスト対象デバイス1030をテストするために使用され、ワークステーション1010は、ワークステーション610、710、810、910に対応し得て、テストシステム1020は、テストシステム620、720、820、920に対応し得て、テスト対象デバイス1030は、テスト対象デバイス630、730、830、930に対応し得る。
【0197】
第4のシナリオでは、テスト対象デバイス1030の周辺機器インターフェースは、例えば、テスト設計回路を使用して実現され得る、ループバックモードになるように構成され得る。したがって、自動テスト装置は、周辺機器インターフェースをルックバックモードになるように構成し、データを周辺機器インターフェースに送信し、周辺機器インターフェースによってループバックされたデータを受信および評価するテスト対象デバイス1030にオンチップテストコードをアップロードし得る。例えば、テスト対象デバイス上で実行されるオンチップテストコードは、周辺機器インターフェースからループバックされたデータが期待されるデータと一致しているかどうかを評価する場合もある。したがって、高速入力出力インターフェースのプロトコルエンジンをテストできる。具体的には、オンチップテストコードは、周辺機器インターフェースによって提供されるプロトコル情報も評価し得る。
【0198】
結論として、第4のシナリオでは、オンチップシステムテストコントローラは、例えば、適切なオンチップテストコードをテスト対象デバイス1030にアップロードし、テスト対象デバイスから結果情報を受信し、結果情報をワークステーション(例えば、統合テストエグゼキュータ)に転送するすことのみを担い得る。したがって、高速入力出力プロトコルエンジンテストを高効率で実行できる。
【0199】
図11は、相互接続ストレステストが実行される第5のシナリオの概略図を示す。第5のシナリオでは、ワークステーション1110およびテストシステム1120は、テスト対象デバイス1130をテストするために使用される。例えば、ワークステーション1110およびテストシステム1120を備える自動テスト装置は、テスト対象デバイスの異なるブロック間でデータ転送を実行するように構成されるテスト対象デバイスにオンチップテストコードをアップロードし、それによって、非同期アプリケーション相互接続に「ストレス」を与えるように構成される。例えば、データ転送は、CPUコアとSRAMとの間、テスト対象デバイスの周辺機器ブロックとSRAMとの間、およびテスト対象デバイスのコプロセッサとSRAMとの間で行われ得る。例えば、オンチップテストコードは、非同期アプリケーション相互接続を介してこのような「ストレスの多い」データトラフィックを開始するように構成され得て、データ転送の整合性も監視し得る。したがって、テストシステム1120のOCSTコントローラは、例えば、デバッグインターフェースを介して、テスト対象デバイス1130から結果情報を取得し得て、例えば、結果情報を、統合テストエグゼキュータ上で実行される自動テスト装置テストプログラムに転送し得る。したがって、テスト対象デバイス1130の相互接続は、効率的にテストされ得て、テストシステムの負荷は比較的小さい。
[6. テスト対象デバイス(SoC)の動作モード]
【0200】
以下では、テスト対象デバイスを動作させるための様々なモードについて説明する。また、ブートプロセスに関するいくつかの詳細および自動テスト装置に関するオプションの詳細についても論じる。オペレーティングシステム環境でのOCST
【0201】
以下では、オペレーティングシステム環境でオンチップシステムテストを実行する方法について説明する。
図12は、オペレーティングシステム環境での、そのようなオンチップシステムテストの概略図を示す。
【0202】
図12に示すように、自動テスト装置は、例えば、ワークステーション1210および自動テスト装置ハードウェア1220を備え得る。例えば、ワークステーション1210は、上述のワークステーション610、710、810、910、1010、1110に対応し得て、自動テスト装置ハードウェアは、例えば、テストシステム620、720、820、920、1020、1120に対応し得る。しかし、自動テスト装置1202は、例えば、本明細書に開示される自動テスト装置の機能の一部または全部を備え得る。あるいは、しかし、自動テスト装置に関して本明細書に記載される機能のいずれかは、任意選択で、個別でも組み合わせても、本明細書に開示される他の自動テスト装置のいずれかに引き継がれ得る。
【0203】
ワークステーション1210は、通常、いくつかのソフトウェアモジュールを実行することに留意されたい。例えば、ワークステーションは、例えば、前述の開発およびデバッグ環境240に対応し得る、統合開発環境1212を実行するように構成され得る。統合開発環境は、組み込みソフトウェアデバッガ1214aおよびATEデバッガ1214bを有するか、またはそれらと連携し得る。例えば、組み込みソフトウェアデバッガは、「組み込みソフトウェア」、すなわち、テスト対象デバイス上で実行されるソフトウェア(本明細書では、簡潔に「オンチップシステムテスト」とも示す)をデバッグするように適合され得る。ATEデバッガ1214bは、例えば、ユーザが提供し得る、例えば、ATEフロー1216などの自動テスト装置ソフトウェアを、例えば、デバッグするように構成され得る。例えば、統合開発環境1212は、組み込みソフトウェアデバッガ1214aおよび自動テスト装置デバッガ1214bと通信し、ATEフロー1216を編集するように構成され得る。さらに、ATEデバッガ1214bは、ATEフロー1216を評価するように構成され得る。組み込みソフトウェアデバッガ1214aは、例えば、ワークステーション1210およびATEハードウェア1220を介してテスト対象デバイスと通信し得る。さらに、ワークステーション上で実行される自動テスト装置テストスイート1218、ならびに自動テスト装置ランタイム環境1219もある。例えば、自動テスト装置ランタイム環境1219は、ワークステーション(またはワークステーションのオペレーティングシステム)とATEテストスイート1218aとの間にあるソフトウェア層である。さらに、ATEテストスイート1218は、通常、ATEフロー1217を実行し、ATEデバッガ1214bと連携することに留意されたい。
【0204】
結論として、統合開発環境1212は、例えば、組み込みソフトウェアデバッガ1214、ATEデバッガ1214bへのアクセス(例えば、ユーザのための)を提供し得て、さらに、ATEフローの実行を制御することを可能にする。
【0205】
さらに、テスト対象デバイスハードウェア1230はまた、様々なソフトウェアモジュールを実行し得る。例えば、1つまたは複数のデバイスドライバ1234a、1234bを使用して、テスト対象デバイスのハードウェア(例えば、1つまたは複数のインターフェース)にアクセスする、オペレーティングシステムのカーネル1232がある。さらに、オペレーティングシステムカーネルは、例えば、DUTハードウェアのインターフェース、また、場合によっては、DUTハードウェアに結合された追加のメモリを定義し得る、「デバイスツリー」1236にアクセスし得る。さらに、典型的には、例えば、オンチップテストコード1240の実行を制御し得る「OCSTランナ」1238が存在する。オンチップテストコード1240は、例えば、いくつかの機能を提供し得る、例えば、オンチップシステムテストランタイム環境1242を利用し得る。OCSTランタイム環境1242は、(例えば、OSカーネル1232の関数を呼び出すことによって)オペレーティングシステムカーネル1232と連携するように構成される。さらに、OCSTランナ1238はまた、DUTハードウェアと直接通信し、例えば、ATEハードウェアとOCSTランナ1238との間の直接通信を可能にし得ることに留意されたい。さらに、オンチップテストコード1240は、例えば、OSカーネル1232の機能に直接アクセスし得て、また、OCSTランタイム環境1242の機能にアクセスし得て、次いで、OCSTランタイム環境1242が、OSカーネル1232の機能にアクセスし得ることに留意されたい。さらに、OSカーネル1232は、例えば、1つまたは複数のデバイスドライバ1232a、1232bを介してDUTハードウェアにアクセスすることに加えて、DUTハードウェアと直接通信し得る。
【0206】
テスト対象デバイスハードウェア1230上で実行されているソフトウェアモジュールのいずれも、例えば、本明細書に記載されるように、自動テスト装置の開発およびデバッグ環境によって提供され得ることに留意されたい。したがって、開発およびデバッグ環境は、ソフトウェアモジュール1232、1232a、1232b、1238、1244を定義する1つまたは複数のプログラムを有し得て、オンチップテストコード1240は、通常、開発およびデバッグ環境へのユーザ入力に基づく。
[組み込みオペレーティングシステムのブートシーケンス]
【0207】
以下では、組み込みオペレーティングシステムのブートシーケンスの例を、そのような組み込みオペレーティングシステムのブートシーケンスの概略図を示す
図13を参照して説明する。
図13は、前述のテスト対象デバイスと同様であり得る、テスト対象デバイス、例えば、SoC1310を示す。図に示すように、システムオンチップ1310は、同期アプリケーション相互接続に結合される、CPUコア1320、SRAM1322、L2キャッシュ1324、NVRAM1326、およびROM1328を有する。さらに、システムオンチップ1310は、周辺機器インターフェース1330およびメモリコントローラ1332を有し得て、周辺機器インターフェースは、例えば、異なるタイプのフラッシュメモリにアクセスするように、および/またはダイレクトメモリアクセス(例えば、PCIe DMA)を介してメモリにアクセスするように適合され得る。さらに、メモリコントローラ1332は、例えば、ダイナミックランダムアクセスメモリDRAMにアクセスするように構成され得る。
【0208】
ブートシーケンスでは、例えば、ROM1328に格納されている1次ブートローダにより、周辺機器インターフェース1330を介して2次ブートローダがSRAM1322にロードされ得る。さらに、次いで、2次ブートローダは、フラッシュメモリから、または別の「外部」メモリからDRAMへオペレーティングシステムプログラムをコピーさせ得て、フラッシュメモリまたは外部メモリは、周辺機器インターフェース1330を介してアクセスされ、DRAMは、メモリコントローラ1332を介してアクセスされる。したがって、オペレーティングシステムは、DRAMにコピーされ、DRAMは通常、外部メモリ(フラッシュメモリまたはダイレクトメモリアクセスDMAを介してアクセス可能なメモリ)よりもはるかに高速にアクセス可能である。続いて、オペレーティングシステムプログラムは、CPUコア1320によって実行され得て、L2キャッシュ1324は、キャッシュ戦略に従って、オペレーティングシステムプログラムの一部をキャッシュし得る。ただし、従来のオペレーティングシステムの実行には通常、DRAMの存在が必要であり、一部のテスト環境では保証できないことに留意されたい。具体的には、DRAMの提供は一部のテスト環境では困難である。以下では、OS候補、つまりSoC上のLinux(登録商標)について簡単に説明する。
【0209】
このOS候補は、様々な組み込みCPUコアでサポートされており、また、十分に文書化されている。
【0210】
OS候補は、デバイスツリーを利用して、組み込みCPUの一般的な変形形態を記述する。これにより、新しいCPUバリアントへの調整が容易になる。
【0211】
上記のOS候補は、基本的なシステム構成(すなわち、メモリコントローラの初期化)を処理しない。むしろ、OS候補はこのシステム構成を処理するためにブートローダに依存している。
【0212】
上記のOS候補については、複数のCPUコアおよびメモリ仮想化が既定でサポートされている。さらに、上記のOS候補については、カーネルとユーザスペースが分離されている。ユーザスペースから、すべてのハードウェアは共通の抽象的なAPIを介してアクセスされる。
【0213】
さらに、上記のOS候補は、モジュラハードウェアドライバを含む。多くのドライバは、カーネルコードの配布により簡単に入手できる。また、顧客固有のドライバも簡単に統合できる。
【0214】
さらに、上記のOS候補については、ハードウェアデバッグサポート(GDB)なしでソフトウェアデバッグが可能である。
【0215】
上記のOS候補については、JTAG/SWDを介したデバッグには、(例えば、Lauterbachからの)カーネルのアドレス変換およびプロセステーブルを認識するデバッガが必要である。
【0216】
上記のオペレーティングシステム候補に関しては、(オープンソースの)ビルドルート環境で、カーネル、必要なハードウェアドライバ、および単一のユーザスペースプログラムのみで構成される、簡素化されたLinuxシステムを簡単に構築できることにも留意されたい。このようなシステムは数秒で起動できることが見出された。
【0217】
結論として、SoC上のLinuxは、例えば、テスト対象デバイス上で実行するためのオペレーティングシステムとして使用できることが見出された。
[ベアメタル環境でのOCST]
【0218】
以下では、ベアメタル環境でのオンチップシステムテストを、ベアメタル環境でのこのようなオンチップシステムテストの概略図を示す
図14を参照して説明する。
【0219】
この問題に関して、ワークステーション1410および自動テスト装置ハードウェア1420を備える自動テスト装置1402は、原則として、自動テスト装置1202と同一であり得ることに留意されたい。また、統合開発環境1412は、統合開発環境1212に対応し得て、組み込みソフトウェアデバッガ1414aは、組み込みソフトウェアデバッガ1214aに対応し得て、ATEデバッガ1414bは、ATEデバッガ1214bに対応し得て、ATEテストスイート1418は、ATEテストスイート1218に対応し得て、ATEランタイム環境1419は、ATEランタイム環境1219に対応し得る。しかし、ソフトウェアモジュール1412、1414a、1414b、1418、1419は、テスト対象デバイス上で実行されているオペレーティングシステムがないことを反映するように適合され得ることに留意されたい。
【0220】
テスト対象デバイスハードウェア1430に関して、このシナリオでは、テスト対象デバイスハードウェア上でオペレーティングシステムカーネルソフトウェアが実行されないことに留意されたい。むしろ、OCSTランタイム環境1442があり、これは、DUTハードウェア1430に直接アクセスし得る。OCSTランタイム環境1442は、例えば、DUTハードウェア1430のインターフェースを定義し得る、例えば、デバイスツリー1444によってサポートされ得る。さらに、オンチップテストコード1440があり、これは、OCSTランタイム環境1442の機能にアクセスし得て、さらにDUTハードウェア1430に直接アクセスし得る。さらに、例えば、オンチップテストコード1440と通信(または制御)し得るOCSTランナ1438が存在する。また、OCSTランナ1438は、DUTハードウェア1430と直接通信し得て、例えば、DUTハードウェア1430から制御コマンドを直接受信し得る(制御コマンドは、例えば、自動テスト装置のオンチップシステムテストコントローラによって提供される)。したがって、オンチップシステムテストランナ1438は、オンチップテストコード1440の実行を制御し得て、オンチップテストコード1440は、DUTハードウェア1430のテストを実行するときに、オンチップシステムテストランタイム環境1442を使用し得る。
【0221】
結論として、オンチップシステムテストランタイム環境がDUTハードウェアへのアクセスをサポートしていれば、テスト対象デバイス上でオペレーティングシステムを実行せずにオンチップシステムテストを実行することもできる。
[デバッグポートを介した組み込みベアメタルブート]
【0222】
以下では、オペレーティングシステム(「ベアメタル」)を実行しないテスト対象デバイス(SoC)を起動するための概念について説明する。
図15に、デバッグポートを介したこのような組み込みベアメタルブートのブロック概略図を示す。
【0223】
テスト対象デバイス1510は、例えば、本明細書に記載の他のテスト対象デバイスのいずれかと同様であり得ることに留意されたい。
【0224】
ただし、テスト対象デバイス1510は、通常ROMに格納されている1次ブートローダを有する。
【0225】
ただし、デバッグポートを介してベアメタルブートを使用する場合、通常、1次ブートローダは使用されない。むしろ、デバイスは、例えば、オンチップテストシステムコントローラの制御下で、デバッグインターフェースを使用して構成される。例えば、オンチップシステムテストコントローラは、デバッグインターフェース(例えば、JTAGインターフェースまたはSWDインターフェース)を介してCPUコアにアクセスし得て、ベアメタルプログラムをSRAMにコピーするようにCPUコアを構成し得る。例えば、オンチップシステムテストコントローラは、適切なデバッグコマンドまたはスキャン情報を提供して、CPUコアに目的のベアメタルプログラムをSRAMにコピーさせ得る。あるいは、しかし、テスト対象デバイスの設計を考慮して可能であれば、オンチップシステムテストコントローラはまた、デバッグインターフェースを介してSRAMに直接アクセスし得る。ベアメタルプログラムのこのアップロードを行うとき、オンチップシステムテストコントローラは、例えば、1次ブートローダの実行を停止し得る。さらに、オンチップシステムテストコントローラはまた、例えば、CPUコアのプログラムカウンタをデバッグポートを介して、SRAMの適切なメモリアドレスに設定することによって、SRAMに格納されたベアメタルプログラムを実行するようにCPUコアに指示し得る。そのような概念は、十分に文書化され得ないオペレーティングシステムの非決定論的動作が回避されるため、有利であり得る。むしろ、ソフトウェアエンジニアによってより詳細に理解され得て、したがって、場合によっては、より再現性の高いテスト結果を提供し得る、ベアメタルプログラムが提供される。
【0226】
また、ベアメタルプログラムを使用すると、プログラムがより「スリム」になり、外部DRAMを使用する必要がなくなり得るという利点があり得る。
[ベアメタル候補のU-BOOTブートローダ]
【0227】
いわゆる「U-Boot」ブートローダは、システムオンチップの有力な候補となり得ることが見出された。このベアメタル候補は、SoCで最も一般的に使用されているブートローダであることが見出された。
【0228】
さらに、ベアメタル候補は、デバイスツリーを利用して、組み込みCPUの一般的な変形形態を記述することが見出された。これにより、新しいCPUバリアントへの調整が容易になる。さらに、上記のベアメタル候補は、基本的なハードウェアの初期化を処理する。
【0229】
さらに、上記のベアメタル候補は、メモリ仮想化を使用せず、最小のメモリフットプリントを有することが見出された。
【0230】
さらに、上記のベアメタル候補は、マルチコアシステムでも、既定で単一のCPUでのみ実行されることが見出された。ただし、上記のベアメタル候補は、OSロード用のローカルおよびネットワークインターフェースの基本セットをサポートする。
【0231】
上記のベアメタル候補は、シリアルインターフェースを介してアクセス可能なコマンドラインインターフェースを提供する。上記のベアメタル候補は、ミリ秒の範囲で起動することが見出された。
【0232】
さらに、上記のベアメタル候補はオープンソースで拡張可能である。したがって、不足している機能(例えば、マルチCPUサポート)を追加することにより、組み込みテストランタイム環境のベースとしてブートローダを使用することが可能であり得る。
[組み込みテストフレームワーク:OS対ベアメタル]
【0233】
以下では、オペレーティングシステムを使用することのいくつかの利点およびベアメタル(例えば、オペレーティングシステムなし)を使用することのいくつかの利点について説明する。
[OSの利点]
【0234】
1. 既存のデバイスドライバは「そのまま」使用できる。最も一般的な周辺機器インターフェースでは、デバイスドライバはすでに入手可能である。
2. 複数のCPUでのマルチタスクの既定のサポート
3. メモリ仮想化では、物理メモリレイアウトは表示されない。これにより、プログラミングおよびデバッグが簡素化される。
[ベアメタルの利点]
1. 起動時間を秒からマイクロ秒に短縮
2. 大幅に削減されたメモリフットプリント
3. 低レベルのアクセスによる完全なハードウェア制御。これにより、テストカバレッジおよび再現性が向上する
4. 不足しているDRAMなどの不完全なハードウェアリソースへの調整が容易。
【0235】
結論として、ベアメタル手法は、ウェハソートでの組み込みテストに最適であると言える。さらに、結論として、OS手法は単純化された使用モデルを提供すると言える。特にポストシリコン検証では、起動時間の延長およびメモリフットプリントの拡大が許容され得ることが見出された。
[7. 物理OCSTコントローラ]
【0236】
以下では、物理オンチップシステムテストコントローラの実施形態について説明する。ただし、本明細書に記載の物理オンチップシステムテストコントローラは、任意選択で、本明細書でオンチップシステムテストコントローラに関して記載されている特徴、機能および詳細のいずれかによって、個別でも組み合わせても、補足し得ることに留意されたい。さらに、
図16のオンチップシステムテストコントローラに関して記載されている特徴、機能、および詳細のいずれかを、任意選択で、個別でも組み合わせても、他のオンチップシステムテストコントローラのいずれかに引き継ぐことができることに留意されたい。
【0237】
図16は、自動テスト装置の一部であり得る、物理オンチップシステムテストコントローラの概略図を示す。さらに、
図16は、物理オンチップシステムテストコントローラと連携するワークステーションの概略図も示す。言い換えれば、自動テスト装置は、ワークステーションハードウェア1610およびオンチップシステムテストコントローラハードウェア1620を備える。
【0238】
ワークステーションハードウェア1610は、ワークステーションソフトウェア1612を実行するように適合され、オンチップシステムテストコントローラハードウェア1620は、オンチップシステムテストコントローラソフトウェア1622を実行するように構成される。ワークステーションソフトウェア1612は、例えば、上述の開発およびデバッグ環境240に対応し得る、例えば、統合開発環境1612aを有し得る。しかし、このワークステーションソフトウェア1612の任意の特徴、機能、および詳細のいずれかはまた、任意選択で、開発およびデバッグ環境240に含まれ得る。
【0239】
具体的には、ワークステーションソフトウェアは、例えば、組み込みソフトウェアデバッガ1214aに対応し得る、組み込みデバッガ1612bを有する。さらに、ワークステーションソフトウェアはまた、例えば、ATEデバッガ1214bに対応し得る、ATEデバッガ1612cを有し得る。ワークステーションソフトウェア1612は、例えば、ATEテストスイート1218に対応し得る、ATEテストスイート1612dをさらに有し得る。ワークステーションソフトウェア1612は、例えば、ATEランタイム環境1219に対応し得る、ATEランタイム環境1612eをさらに有し得る。
【0240】
さらに、ワークステーションソフトウェアは、例えば、カーネルスペースにおいて、例えば、ソケットを介してATEランタイム環境1612eによってアクセスされ得る、Linuxカーネル1612fを有し得る。同様に、ハードウェアインターフェースの抽象化も有し得る組み込みデバッガ1612bは、Linuxカーネルのソケットを介してLinuxカーネル1612fと通信し得る。
【0241】
さらに、Linuxカーネルは、OCSTコントローラハードウェアとの通信が可能になり得る、いわゆる「テストデータバスドライバ」1612gを使用し得る。ただし、OCSTコントローラハードウェアとの通信を可能にする任意の他のドライバも使用できる。
【0242】
さらに、OCSTコントローラソフトウェア1622は、例えば、ユーザスペースで実行される、いわゆるOCSTデーモン1622aを有する。さらに、OCSTコントローラソフトウェア1622はまた、例えば、カーネルスペースで実行され得る、Linuxカーネル1622bを有する。例えば、OCSTデーモン1622aとLinuxカーネル1622bとの間の通信は、Linuxカーネルの1つまたは複数のソケットを使用して実行され得る。
【0243】
さらに、OCSTコントローラソフトウェア1622は、例えば、JTAGドライバ1622c、PCIeドライバ1622d、「テストデータバスドライバ」1622e、および同期バスドライバ1622fなどの複数のドライバを有し得る。例えば、テストデータバスドライバ1622eは、ワークステーションとの通信をサポートし得る。ただし、ワークステーションとの通信を可能にする他のドライバも適している。同期バスドライバ1622fは、他のテストリソース(例えば、上述のテストリソース220、230など)との同期を可能にする、同期バスへのアクセスを可能にする。さらに、JTAGドライバ(または一般的には任意のデバッグインターフェースドライバ)は、デバッグインターフェースを介してテスト対象デバイスとの通信を可能にする。同様に、PCIeドライバ(または、その他の高帯域幅インターフェースドライバ)は、高帯域幅インターフェースを介してテスト対象デバイスとの通信を可能にする。
【0244】
以下では、物理OCSTコントローラのハードウェア機能についても説明する。例えば、物理OCSTコントローラは、例えば、1つまたは複数の中央処理装置CPUを実装するように構成され得る、フィールドプログラマブルゲートアレイ1640を有し得る。さらに、フィールドプログラマブルゲートアレイ1640は、任意の内部または外部ランダムアクセスメモリ、例えば、DRAM1642と通信するように構成され得る。フィールドプログラマブルゲートアレイ1640は、例えば、他のATE機器とも結合し得る、例えば、同期バス1644と結合し得る。例えば、同期バスは、物理オンチップシステムテストコントローラと、(例えば、上述したような)パラメトリックテストリソースおよび/またはデジタルテストリソースなどの他のテストリソースとの間の同期を可能にし得る。さらに、フィールドプログラマブルゲートアレイ1640はまた、ワークステーション1610との通信を可能にする、データバス(または、一般的に言えば、データインターフェース)1646に結合される。提供されている例では、いわゆる「テストデータバス」が使用されているが、ワークステーションへの他のインターフェースを使用することもできる。
【0245】
オンチップシステムテストコントローラは、複数のレベルシフタ1650をさらに有し、任意選択で、PCIe物理インターフェース1652およびUSB物理インターフェース1654(例えば、USB3物理インターフェース)も有する。例えば、レベルシフタ1650は、フィールドプログラマブルゲートアレイ1640の汎用入力/出力ピンに結合されている。一方、任意選択のPCIe物理インターフェースおよび任意選択のUSB物理インターフェースは、フィールドプログラマブルゲートアレイ1640の高速ピン(例えば、LVDSピン)に結合され得る。
【0246】
レベルシフタ1650、PCIe物理インターフェース1652、およびUSB物理インターフェース1654のデバイス側ピンは、例えば、複数の入力/出力マルチプレクサ1660a、1660b(任意選択)、1660c(任意選択)を介してDUTインターフェースに結合され得る。
【0247】
入力/出力マルチプレクサ1660a、1660b、1660cを使用して、レベルシフタ1650、PCIe物理インターフェースおよびUSB物理インターフェース1654をテスト対象デバイスの適切なピンに結合できる。例えば、レベルシフタ1650によって提供される信号は、好ましくは、テスト対象デバイスのデバッグインターフェースまたは制御インターフェースに、例えば、JTAGインターフェース、SWDインターフェース、UARTインターフェース、TWIインターフェースなどに結合され得る。しかし、PCIe物理インターフェースによって提供される信号は、通常、それぞれの入力/出力マルチプレクサ1660bを介してテスト対象デバイスのPCIeインターフェースに接続され、USB物理インターフェース1654によって提供される信号は、通常、それぞれの入力/出力マルチプレクサ1660cを介してテスト対象デバイスのUSBインターフェース(例えば、USB3インターフェース)に結合される。さらに、入力/出力マルチプレクサ1660a、1660b、1660cは、パラメトリック測定ユニット1670を、調整可能な(可変の)方法で、テスト対象デバイスの1つまたは複数のピンと結合するように構成され得る。したがって、テスト対象デバイスのそれぞれのピンのアナログ特性は、物理測定ユニット1670によって特徴付けることができる。
【0248】
結論として、物理OCSTコントローラの実装例を
図16を参照して説明した。例えば、
図16に記載されているオンチップシステムテストコントローラハードウェアは、任意選択で、本明細書に記載のオンチップシステムテストコントローラのいずれかを実装するために使用され得る。しかし、任意選択で、
図16によるオンチップシステムテストコントローラの1つまたは複数の構成要素を、本明細書に開示されるオンチップシステムテストコントローラのいずれかで使用できる。
【0249】
さらに、本明細書に記載の自動テスト装置は、任意選択で、本明細書に開示される特徴、機能、および詳細のいずれかによって、個別でも組み合わせても、補足し得ることに留意されたい。
[8. 代替ソリューションの観点からの議論]
【0250】
以下では、いくつかの代替ソリューションについて論じ、オンチップシステムテストコントローラを使用する利点を示す。
【0251】
第1の代替ソリューションは、システムレベルテストを実行することである。この手法は、既存の評価ボードを使用するか、またはそこから特別なバージョンを派生させる。ベンチ機器は、外部環境を提供するために使用される。テストの自動化には、専用のシステムレベルのテスト機器が使用される。アプリケーションの既存の検証テストが実行され、正しく実行されているかどうかのチェックが実行される。
【0252】
この手法にはいくつかの利点がある。例えば、設計者および検証エンジニアのためのネイティブ環境が使用される。既存のアプリケーション/検証ソフトウェアが活用される。この手法はモジュールテストで十分に確立されており、独自ソリューションが利用可能である。この手法は、安価な機器でも機能する。
【0253】
ただし、この手法にはいくつかの欠点もあり、これについては、以下で概説する。例えば、アプリケーションボードを使用しているため、再現性および可観測性が低い。さらに、アプリケーションソフトウェアを使用する場合、長いテスト時間および疑わしいカバレッジがある。最大ストレス条件を適用できないか、またはアプリケーションボード上でクロックおよび供給電圧を制御できる場合にのみ適用できる。これは通常当てはまらない。さらに、この手法はウェハソートに展開させることはできない。通常、アプリケーションボードをウェハプローバと統合することは技術的に困難である。さらに、高価なプローブ装置での長いテスト時間に関する商業上の問題もある。さらに、この手法は通常、製造プロセスの後半に追加のテストステップが必要である。
【0254】
さらに、別の手法として、いわゆる「エンドツーエンドテスト」も考えられる。この手法は、専用の「プロトコルアウェア」機器を有するATEを使用する。DUTの内部信号パスは、エンドツーエンド通信でテストされる。
【0255】
このような手法にはいくつかの利点がある。例えば、この手法は、デバイスインターフェースを監視するという従来のATEの考え方をサポートしている。さらに、この手法は、内部相互接続ファブリック、プロトコルエンジン、およびアナログインターフェース回路を1回でカバーする。この手法は、クロックおよび電源電圧のストレスを印加することを可能にする。さらに、この手法は、ウェハソート中にはかなりの量を除外している。この手法は、ウェハソート中のポストシリコン検証を可能にし、設計への早期フィードバックを可能にする。
【0256】
しかし、エンドツーエンドのテスト手法には、いくつかの欠点もある。具体的には、内部相互接続は通常、インターフェースよりも高速であるため、この手法は、最大トラフィックで内部相互接続にストレスをかけるには不十分である。さらに、リアルタイムプロトコル処理には通常、専用のASIC設計が必要なため、高速トラフィックを汎用のATE機器でカバーすることはできない。さらに、検証テストケースは、ホワイトボックステストの観点からは効果的ではないため、エンドツーエンドの通信をカバーしていない可能性が高い。テストケースは、テストエンジニアが最初から生成しなければならない。
【0257】
以下では、「統計的相関」手法について説明する。この手法は、量産立ち上がり時に、ほとんどすべての利用可能なスキャンベクトルが、ウェハソートで異なるクロックおよび電圧ストレス条件下で実行される。ただし、公称条件下で障害が発生したDUTのみがビニングで除去される。さらに、SLTテストを実行して、ウェハソートエスケープを識別する。さらに、全体的な障害のあるDUTは、ストレス条件下での障害のあるスキャンベクトルと相関している。これらの障害が発生したテストは、SLTを排除するために、最終的な製造ソートプログラムに追加される。
【0258】
この手法には、トリアージプロセスを完全に自動化でき、人間の介入を必要としないという利点がある。
【0259】
しかし、この手法にはいくつかの欠点があり、これについては、以下で説明する。ACスキャンの方法論は、縮退故障および遅延障害をカバーするように設計されている。電圧およびクロックストレスの条件下でも、テストエスケープが実際にこれらのカテゴリに対応しているかどうかは不明である。さらに、この手法は、サードパーティの周辺機器IPが仕様の範囲内で機能することは保証されない。また、ユーザは、このIPで提供されるスキャンベクトルを信頼し得ない。さらに、この手法は、追加のスキャンベクトルおよび最終テストプログラムでのテスト条件の切り替えが必要である。これは、ウェハソートのテスト時間の増加につながる。
【0260】
以下では、オンチップシステムテスト(OCST)手法について説明する。この手法は、DUTの組み込みCPUを使用してテストプログラムの一部を実行する。また、ATE製品の一部として、これらのフラグメント用のランタイム環境が提供されている。
【0261】
この手法にはいくつかの利点がある。例えば、この手法は、内部相互接続ファブリック、プロトコルエンジン、およびアナログインターフェース回路を1回でカバーする。また、この手法は、クロックおよび電源電圧のストレスを印加することを可能にする。この手法はさらに、ウェハソート中には発生している可能性のあるテストエスケープのすべてのクラスに対処する。さらに、この手法は、検証からわずかに変更されたコアロジックテストを実行できる。この手法は、標準化された柔軟性のあるATE機器で機能する。さらに、この手法は、ウェハソート中のポストシリコン検証を可能にし、設計への早期フィードバックも可能にする。
【0262】
しかし、この手法にはいくつかの欠点もある。具体的には、この手法はMPUビジネス以外の新しい手法である。この手法は、テストエンジニアには組み込みソフトウェア開発を経験させ、設計者および検証エンジニアにはATEを経験させる。さらに、標準化され、事前準備されたテストケースを提供できない限り、テストケースは手動で生成しなければならない。テストカバレッジは、これらのケースの品質に依存する。さらに、この手法は、専用のHSIO機器の必要性を排除するため、DFT(テスト用の設計)に依存する。以下では、異なる手法間の比較を提供する。
【0263】
SLTおよびエンドツーエンドテストは、多くのユーザ、特に検証エンジニアが慣れている2つの手法であることに留意されたい。
【0264】
さらに、SLTは追加のテスト挿入を必要とするため、ATEテストステップと組み合わせることは商業的に不可能であることに留意されたい。
【0265】
さらに、エンドツーエンドテストは、他のATEテストセットアップに統合できることに留意されたい。ただし、「プロトコルアウェア」のATE機器が必要である。また、DUTを最大ストレスの状態にすることは非常に困難である。
【0266】
さらに、タイミングレベルのストレス条件下でのスキャンパターンとの統計的相関は、従来のスキャンパターンのギャップをカバーするための興味深い手法である。ただし、スキャンテストは個別の障害モデルに基づいている。今日のATEエスケープを、この方法ですべてカバーできるかどうかは不明である。
【0267】
組み込みテストを使用すると、ウェハソート中にはATE上で今日のテストエスケープを識別することが可能である。新しい専用のATE機器の必要性は、適切なDFTによってのみ排除できる。排除をうまく適用するには、テストエンジニアリングでは利用できないが、検証および設計では利用できる、DUTの知識が必要である。長期的には、組み込みテストが実行すべき方法であると考えられる。
[9. 結論-パート1]
以下では、いくつかの結論が提供される。
【0268】
SoC設計の複雑さが増すと、ポストシリコン検証とATEテストとの間の収束が促進されることが見出された。
1. 検証でのハードウェア/ソフトウェアの相互作用のコーナーケースを見出すためには、ATE機能が必要である。
2. コーナーケースの欠陥を識別するためには、組み込みCPU上で実行するテストが必要である。
【0269】
したがって、ATE上で組み込みソフトウェアテストを実行することは、検証およびデバイス製造の両方に大きなメリットをもたらす。ただし、ATE上のアプリケーション環境は不完全であるため、参入障壁が高くなる。これは、新しいタイプのATE製品であるオンチップシステムテスト環境の機会を広げる。
【0270】
このような環境のための技術的な構成要素が利用可能であり、既存のATEエコシステムのほとんどの部分を活用できることが見出された。
【0271】
また、SoC構成要素の収束により、標準化された製品に焦点を当てることが可能であることも見出された。市場でのARMの優位性により、最初はある特定のアーキテクチャに集中することも可能である。
【0272】
結論として、本発明による実施形態は、システムオンチップを効率的な方法でテストするために使用され得て、したがって、他の概念よりも有利である。
[10. 結論-パート2]
[以前のソリューション]
【0273】
以下では、本発明による実施形態においても任意選択で適用され得る、いくつかの従来のソリューションが説明および議論され、背景情報が提供される。
【0274】
オンチップシステムテスト(OCST)は、SOCの組み込みプロセッサコアで実行されている組み込みソフトウェアを使用した、SOCの1つまたは複数のブロックまたはインターフェースの機能テストを指す。組み込みソフトウェアは、テスト刺激を直接作成し、テスト応答を受信し、および/またはテストセットアップ(例えば、レジスタプログラミング)またはテスト分析およびレポートを制御し得る。例えば、テスト応答を分析し、外部(例えば、テスタ)がテスト結果にアクセスできるように、結果を保存/伝達し得る。
【0275】
- 以前のソリューションは、組み込みソフトウェア開発のためにシステム環境でのテストの開発およびデバッグに依存しているが、テスト環境には依存していない。テスト環境では、例えば、シリアルポートを介した中間値およびテキスト文字列の印刷などのデバッグサポートが存在しないか、または脆弱である。
【0276】
- 以前のソリューションは、独自の方法を使用してテスト制御/条件コマンドを受信し、テスト結果を外部に伝達するためにOCSTに依存している。これには、テスト環境がこれらのコマンド/結果を送信/受信するための独自のソリューションも必要である。多くの場合、これには、テスタ環境とOCSTとの間の通信および制御を可能にするために、テスタリソース(例えば、UART、SWD、I2C、または独自のGPIO通信)の面倒な低レベルプログラミング、(例えば、USBポートを使用する場合)それぞれ専用のテスタコントローラインターフェースが必要である。これにより、開発の手間が増え、OCSTの再利用性が制限されてしまう。
【0277】
- 以前のソリューションは、OCST(すなわち、テストコンテンツ)を、テスト環境のSOCがOCSTをロードするために利用可能な不揮発性メモリに格納することに依存している。
課題は以下のとおりである。
・ NVメモリは通常、ソフトウェア開発環境でプログラムされてから、テスト環境に引き継がれる。
・NVメモリはSOCを使用してテスト環境でプログラムし得るが、これは他のタイプのSOCには適用できない独自のソリューションである。
・NVメモリの再プログラミングは、製造現場での例外的で効果のない、エラーが発生しやすいプロセスである。
【0278】
- 以前のソリューションでは、個々のOCSTの制御を提供するのではなく、1回の実行で行われる一連のOCSTを格納することが多く、(テストシステムの一般的なニーズである)各テストのデバッグ、特性評価、およびオン/オフの切り替えが困難である。
【0279】
- 以前のソリューションは、OCSTの実行に利用可能な大容量RAMに依存している場合があるが、大容量RAMが利用可能でない場合がある(例えば、プローブテスト)。典型的なケースは、リッチOSを起動し、それが、他のOCSTの基盤となることである。
【0280】
本発明による実施形態は、従来のソリューションの説明で前述した欠点のすべて(または、いくつか)を完全に解決するか、または少なくとも軽減する。
[本発明の実施形態により解決される課題]
【0281】
以下では、従来のソリューションに対する本発明の実施形態のいくつかの利点について論じる。しかし、本発明による実施形態が、以下に記載される利点の一部または全部を含む必要はないことに留意されたい。
【0282】
本発明によるいくつかの実施形態は、以前のソリューションの説明に記載された欠点のすべてを完全に解決するか、または軽減する。
【0283】
さらに、記載された発明による実施形態は、任意選択で、将来のソリューションを可能にする。
- 標準インターフェースを定義することにより、本発明は、各テストの効果的な実行および認定のためのテスト環境へのSOC検証テスト(組み込みソフトウェアとして実装される)の自動フローを可能にする。
- DUT状態の高帯域幅トレースおよびダンプに依存する高度なテストおよび診断の方法論は、例えば、「バグポジショニングシステム」に記載されるような統計的手法により、有効な実行動作を決定し、根本原因分析の障害領域を特定するものなどである。
- テスト環境とSOCとの間に効果的な機能インターフェースを提供することにより、他のテスト方法論が、例えば、構造テスト刺激をDUTに柔軟に供給して、それぞれが構造テスト刺激を受信することなどに役立ち得る。
[以前に行われたことに対する本発明の利点]
【0284】
本発明による実施形態は、OCST自体のDUT固有の性質を、テストに必要なインフラストラクチャおよび機能から分離することによって、オンチップシステムテストのための効果的なテスト環境を確立する。したがって、テスト環境が、例えば、以下のようなすべての標準的なテストのユースケースをサポートする必要がある新しいテストタイプとして、OCSTの柔軟なソリューションを提案する。
- 開発
- デバッグ
- 特性評価
- 効率的な実行
- データロギング
- 製造現場での開発
【0285】
これにより、OCST開発者(通常、設計、ベンチ、または組み込みソフトウェア開発者)とテストエンジニアの間の効果的な協力が可能になる。各ユーザは、例えば、以下のような自分の環境で直感的に作業を続けることができる。
【0286】
- OCST開発者は、テスタ上に生産的な開発およびデバッグ環境を見つける。これは、高圧の第1のシリコンのターンオン時に特に重要である。
- テストエンジニアリングは、他のテストタイプで行われるのと同じ方法、例えば、VddをスイープしてVminを決定するなどで、各OCSTを特性評価できる。
- OCSTを製造現場で展開する場合、ロードボードにあるNVメモリに最新バージョンのOCSTをインストールするために、オペレータが追加のステップを実行する必要はない。さらに、上記の問題ごとの利点を列挙することが可能である。
本発明による実施形態の構築および動作の説明
【0287】
以下では、本発明によるいくつかの実施形態の構築動作の説明が提供される。しかし、以下に説明する実施形態は、個別に使用され得ることに留意されたい。しかし、以下に述べる実施形態の特徴、機能、および詳細は、個別でも組み合わせても、他の実施形態のいずれかに導入できることにも留意されたい。
【0288】
最高レベルでのソリューションは、効果的なOCST環境のために組み合わされる次の主要構成要素を提案する(構成要素は個別に使用することもできる)。
【0289】
1. OCSTテストコントローラ:
a.
以下の機能(または、いくつかの実施形態では、以下の機能のうちの1つまたは複数)を提供する新規のテスト構成要素:
i.
例えば、以下のような物理インターフェースを介したDUTとの通信
1.
例えば、JTAG、SWD、SPI、I2C、UARTなどの低遅延のデバッグおよび制御インターフェース
2.
例えば、USB、PCIなどの高帯域幅機能インターフェース
ii.
DUTインターフェースに適切な通信インターフェースを柔軟に割り当てる、または物理DUTインターフェースの接点およびDCのテストに通常使用されるパラメトリックテストリソースを割り当てる
iii.
通常、OS(例えば、組み込みLinux)、OCSTの汎用サービス、物理インターフェースを介してDUTと通信するためのドライバ、アプリケーション固有のセットアップおよびユーザが提供するルーチン(すなわち、実行可能コード)を含む多用途のソフトウェアスタックを実行する。
iv.
DUTおよびDUTインターフェースでOCST環境をそれぞれロードして初期化する機能。例えば、テストプログラムの一部として準備および保守され、各DUTの迅速な初期化のためにOCSTテストコントローラメモリに格納される。
v. OCSTをDUT RAM、DUT NVメモリ、またはDUTインターフェース上のNVメモリにロードする機能。例えば、各OCSTは、テストプログラムの一部として準備および保守され、各DUTに迅速にロードするためにOCSTテストコントローラメモリに格納される。
vi.
OCSTパラメータセットをDUT RAM、DUT NVメモリ、またはDUTインターフェース上のNVメモリにロードする機能。例えば、各OCSTパラメータセットは、テストプログラムの一部として準備および保守され、各DUTに迅速にロードするためにOCSTテストコントローラメモリに格納される。
vii.
DUTにロードされた特定のOCSTを開始する機能
viii.
例えば、93000 SmarTest 8で使用される動作シーケンスなど、すべてのテスタリソースに適用されるユニバーサルテストシーケンス言語でユーザがプログラムした全体的なテスト実行制御。
ix.
例えば、OCSTテストコントローラは、DUTに印加される電力を直接制御できるなど、他のテストリソースの効率的な制御および同期。好ましくは、これらのアクションの実行は、通常テスタコントローラで実行されている高レベルのソフトウェアとの通信を必要としない。代わりに、例えば、テスタリソースを直接接続するローカル通信および同期インターフェースによって実装される。
x. 例えば、DUT上で実行されているOCSTによって実行される監視に応じて、条件付き実行を実装する、または外部テスト条件を変更するなど、DUT上で実行されているOCSTからコマンドおよびデータを受信して、テスト実行フローおよびそれに関連するテストリソースを制御する機能。
b. 物理実装と仮想実装の両方が可能であり、例えば、以下のような様々な長所および短所がある。
i. 物理:好ましくは、例えば、以下を含む多用途の専用テスタサブシステムに実装される。
1.
組み込みソフトウェア環境、FPGAブロック、および通信用の様々な物理インスタンス(例えば、USB、GPIO)を提供するシステムSOC(例えば、Xilinx Zync)、あるいは、別の例として、x86組み込みPCを使用することもできる。
2.
例えば、DC測定用のPMU、ルーティング用のスイッチ、特定のインターフェース規格に適合させるためのレベルシフタなど、DUTに向けたフロントエンド電子機器。
3.
他のテスタ構成要素と通信および同期するためのバックエンドインターフェース
ii.
仮想:好ましくは、汎用テストモジュール(例えば、デジタルテスタカード)を再利用して実装する。通常、このカードのフロントエンドおよびバックエンド機能をOCSTに使用できる。ただし、以下の機能を追加する必要があり得る。
1.
物理インターフェースを介してDUT/OCSTと通信するための効果的な高レベルのプログラミングモデル。これは、拡張テストモジュールによって速度および機能が制限され得る。
2.
OCSTソフトウェアスタックを分割して、モジュールで直接実行する(使用可能な組み込みプロセッサを想定)か、またはテスタコントローラ上で実行する機能
【0290】
2.
OCST開発およびデバッグツール(任意選択で、機能のうちの1つまたは複数を実装し得る)
a. ツールセット:
i.通常、OCSTの開発を担当する組み込みソフトウェア開発者は、優先または事前に決定された開発およびデバッグ環境を有する。提案されたソリューションは、例えば、様々なツールセットをサポートするためのインターフェースを提供する。
ii.
このソリューションは、テスタ環境に統合された特定のOCST開発およびデバッグ環境を提供する(例えば、93000のEclipse Work Center)。
1.
これにより、例えば、OCST開発およびデバッグツールは、OCSTソースコードが(OCSTランタイム環境を介して)アクセスできるテストリソース、例えば、テスト制限、テスト条件、または他のテストの結果を認識し得るなど、OCSTソースコードおよびテスタで実行されているテストプログラムの構成要素の一貫した命名および使用が容易になる。
2.
コンパイルされたコードを、利用可能な限られたメモリリソース、例えば、統合SRAM、L2-キャッシュにマッピングすることをサポートする。必要に応じて、SOCのメモリサブシステムを調整するコードを含める。
b.
デバッグソフトウェア、テスタ環境、およびDUT間のインターフェース
i.
デバッグソフトウェアとテスタ環境との間のインターフェース:
1.
リモートコントロール:デバッグおよびテストの実行中に、テスト環境は(通常はサードパーティまたはオープンソースの)デバッグソフトウェアを使用して、開発された特定の動作、例えば、DUTへのOCSTのロードなどを実行し得る。テスト環境は、これらの目的のためにデバッグ環境を使用するために「リモートコントロールAPI」に依存している。
2.
DUTドライバ:デバッグおよびテストの実行中に、デバッグソフトウェアは、物理インターフェース、例えば、JTAGなどを介してDUTにアクセスする必要があり得る。デバッグソフトウェアは、DUTへの独自の物理インターフェースを有するのではなく、OCSTテストコントローラのDUTへの物理インターフェースに依存し得る。したがって、テスト環境は、デバッグソフトウェアの機能をサポートするDUTドライバを実装する。
ii.
デバッグソフトウェアとDUTとの間の物理インターフェース
1.
例えば、ロードボードで切り替えられ得るJTAGポートへのアクセスなど、デバッグ環境による直接の物理アクセス
2.
通信チャネルとしてのOCSTテストコントローラの使用。
【0291】
3.
OCSTの効果的な使用を可能にするソフトウェア構成要素および環境
a. テスト方法論のシームレスな開発および実行をサポートするための分散環境は、テスタ環境(すなわち、テスタコントローラワークステーションおよびOCSTテストコントローラ)およびDUT環境(すなわち、OCST自体およびDUTインターフェース上の他の構成要素、例えば、NVメモリなど)で実行されるテストセットアップおよびコードで構成される。これは、OCSTテストコントローラとDUTとの間の様々な通信インターフェースから独立して実装される。
i. OCSTランタイム環境(DUT上):
1.
OCSTが、一般にテスタ環境と通信するため(例えば、テストパラメータを受信し、制御コマンドをOCSTテストコントローラに送信するため)、およびテスタ環境で実行されている特定のテスト方法と通信するため(例えば、テスタワークステーションのより高い計算能力を活用して中間変数を交換するため)に信頼できるAPIおよびサービス。
2.
OCSTランタイム環境は、様々なDUT間でOCSTを再利用できるように標準化されている。これは、例えば、ハードウェアの違いを説明するLinuxデバイスツリーを使用するなど、様々なハードウェア環境を抽象化するソフトウェアの基盤となる層によって可能になる。
ii. OCSTテストランナ(DUT上):
1.
テスタ環境と連携してOCSTをロードおよび実行する(好ましくは、別のプロセスとして実行している)プログラム。また、DUTが部分的に壊れていたり、OCSTに障害が発生したりしても、テスタ環境への継続的な実行および応答性を保証するウォッチドッグとして機能し得る。
2.
この重要な機能は、テスタ環境からDUTのデバッグインターフェースを使用して行うこともできるため、この機能は任意選択である。
iii.
OCST用に拡張されたテスタランタイム環境:
1.
ユーザのテスト方法が、OCSTテストコントローラをセットアップし、OCSTテストコントローラと通信するために信頼できるAPIおよびサービス
2.
ユーザのテスト方法がDUT上で実行されているOCSTをセットアップし、OCSTと通信するために信頼できるAPIおよびサービス
iv.
テスタリソース、OCSTテストコントローラ、およびOCSTの同期:
1.
例えば、OCSTからの制御情報に応じた条件付き飛び越しなど、OCSTをサポートするテスト実行中にOCSTテストコントローラが実行できるアクション
2.
例えば、OCSTが完了するのを待つなど、OCSTをサポートするためのテスタモジュールの機能または一連のアクションの拡張
3.
テスタコントローラワークステーションソフトウェアを必要とせずに、テスタリソースとOCSTテストコントローラとの間で効率的に信号を送信して通信するために必要なハードウェアインフラストラクチャ。
b. 代替ソフトウェア環境
i. OCSTオペレーティングシステムの使用:豊富な実行環境(例えば、十分なRAM)が提供されると、DUTはOSおよび必要なデバイスドライバをロードし得る。これにより、テストカバレッジが追加され、OCST、OCSTランタイム環境、およびOCSTランナに、例えば、ファイルシステムへのアクセスなど、高度なサービスが提供され得る。
1.
OCST OSは、例えば、物理的なディスプレイがないなど、DUTの限られたシステム環境に依存するOSの特定のバージョンである。したがって、標準のデバイスドライバのセットは制限され構成され得る。
2.
OCST OSは、様々なDUT間でOCSTを再利用できるように標準化されている。これは、例えば、ハードウェアの違いを説明するLinuxデバイスツリーを使用するなど、様々なハードウェア環境を抽象化するソフトウェアの基盤となる層によって可能になる。
3.
OCST OSは、DUTまたはアプリケーション固有のデバイスドライバをサポートする
ii.
ベアメタル:DUTの実行環境は制約があり、高度なOSサービスを必要としない場合がある。したがって、OCSTオペレーティングシステムは使用されない可能性があり、OCSTランタイム環境の機能はハードウェアに直接実装される(ブートローダの環境に相当する)。
【0292】
詳細については、すべて任意選択と見なすべきであり、完全な説明を参照すること。
【0293】
本発明による実施形態は、例えば、少なくとも1つの組み込みプロセッサを有するSOC、SIP、またはモジュールのテストに使用できる。以下の開示は「SOC」または「DUT」のみを記載しているが、パッケージまたは(サブ)システムを実装するあらゆる種類のモジュールへのより高いレベルの統合に適用可能である。
【0294】
本発明による実施形態は、例えば、93000チップテスタで使用できるが、一般に、任意のテストソリューションの拡張として使用できる。
[11. 実装の代替手段]
【0295】
いくつかの態様は装置の文脈で説明されてきたが、これらの態様が対応する方法の説明も表すことは明らかであり、ブロックまたはデバイスは方法の段階方法の段階または方法の段階の特徴に対応する。同様に、方法の段階の文脈で説明される態様はまた、対応するブロックまたはアイテム、または対応する装置の特徴の説明を表す。方法の段階の一部または全部は、例えば、マイクロプロセッサ、プログラマブルコンピュータ、または電子回路のようなハードウェア装置によって(または使用して)実行され得る。いくつかの実施形態では、1つまたは複数の最も重要な方法の段階は、そのような装置によって実行され得る。
【0296】
特定の実装要件に応じて、本発明の実施形態は、ハードウェアまたはソフトウェアで実装できる。実装は、それぞれの方法が実行されるように、プログラマブルコンピュータコンピュータシステムと協調する(または協調することが可能である)、その上に格納される電子可読制御信号を有するデジタル記憶媒体、例えば、フロッピー(登録商標)ディスク、DVD、Blu-Ray(登録商標)、CD、ROM、PROM、EPROM、EEPROMまたはフラッシュメモリを使用して実行できる。したがって、デジタル記憶媒体はコンピュータ可読であり得る。
【0297】
本発明によるいくつかの実施形態は、本明細書に記載の方法の1つが実行されるように、プログラマブルコンピュータコンピュータシステムと協調することが可能である、電子可読制御信号を含むデータキャリアを有する。
【0298】
一般に、本発明の実施形態は、プログラムコードを有するコンピュータプログラム製品として実装でき、プログラムコードは、コンピュータプログラム製品がコンピュータ上で実行されるときに、方法の1つを実行するために動作可能である。プログラムコードは、例えば、機械可読キャリア上に格納され得る。
【0299】
他の実施形態は、機械可読キャリア上に格納された、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを有する。
【0300】
言い換えれば、本発明の方法の実施形態は、したがって、コンピュータプログラムがコンピュータ上で実行されるときに、本明細書に記載の方法の1つを実行するためのプログラムコードを有するコンピュータプログラムである。
【0301】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを含み、その上に記録する、データキャリア(またはデジタル記憶媒体、またはコンピュータ可読媒体)である。データキャリア、デジタル記憶媒体、または記録媒体は、通常、有形および/または非遷移的である。
【0302】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを表すデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、例えば、データ通信接続を介して、例えば、インターネットを介して転送されるように構成され得る。
【0303】
さらなる実施形態は、本明細書に記載の方法の1つを実行するように構成されるか、または適合される、処理手段、例えば、コンピュータ、またはプログラマブルコンピュータロジックデバイスを有する。
【0304】
さらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムをその上にインストールしているコンピュータを有する。
【0305】
本発明によるさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを、受信機に(例えば、電子的または光学的に)転送するように構成される装置またはシステムを有する。受信機は、例えば、コンピュータ、モバイルデバイス、メモリデバイスなどであり得る。装置またはシステムは、例えば、コンピュータプログラムを受信機に転送するためのファイルサーバを有し得る。
【0306】
いくつかの実施形態では、本明細書に記載の方法の機能の一部または全部を実行するために、プログラマブルロジックデバイス(例えば、フィールドプログラマブルゲートアレイ)を使用し得る。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書に記載の方法の1つを実行するためにマイクロプロセッサと協調し得る。概して、これらの方法は、好ましくは、任意のハードウェア装置によって実行される。
【0307】
本明細書に記載の装置は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組み合わせを使用して実装され得る。
【0308】
本明細書に記載の装置、または本明細書に記載の装置の任意の構成要素は、少なくとも部分的にハードウェアおよび/またはソフトウェアで実装され得る。
【0309】
本明細書に記載の方法は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組み合わせを使用して実行され得る。
【0310】
本明細書に記載の方法、または本明細書に記載の装置の任意の構成要素は、少なくとも部分的にハードウェアによって、および/またはソフトウェアによって実行され得る。
【0311】
上述した実施形態は、本発明の原理を単に例示するものである。本明細書に記載の配置および詳細の修正および変形は、当業者には明らかであることが理解されよう。したがって、間近に迫った添付の特許請求の範囲によってのみ制限され、本明細書の実施形態の記載および説明によって示される特定の詳細によっては制限されないことが意図されている。
[他の可能な項目]
(項目1)
テスト対象デバイス(104;400;500;630;730;830;930;1030;1130;1230;1310;1430;1510)をテストするための自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)であって、上記自動テスト装置が、オンチップシステムテストコントローラ(110;210;1620)を備え、上記オンチップシステムテストコントローラが、上記テスト対象デバイスと通信するように構成される少なくとも1つのデバッグインターフェース(112;252;1650)または制御インターフェース(112;254;1650)を有し、上記オンチップシステムテストコントローラが、システムオンチップであるテスト対象デバイスのテストを制御するように構成される、自動テスト装置自動。
(項目2)
上記オンチップシステムテストコントローラが、上記テスト対象デバイスと通信するように構成される少なくとも1つの高帯域幅インターフェース(114;256;1652、1654)を備える、項目1に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目3)
上記自動テスト装置が、上記デバッグインターフェース(112;252;1650または上記制御インターフェース(114;254;1650)または上記高帯域幅インターフェース(114;256;1652、1654)をテスト対象デバイスインターフェース(216)に可変的に割り当てるように構成される、項目1または2に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目4)
上記自動テスト装置が、1つまたは複数のパラメトリックテストリソース(220、626、629)を上記テスト対象デバイスに可変的に割り当てるように構成される、項目1から3のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目5)
上記オンチップシステムテストコントローラが、オペレーティングシステム(1622b)、オンチップシステムテストサービスソフトウェア(1622a)、上記インターフェース(112、114;252、254、256;1650、1652、1654)を介して上記テスト対象デバイスと通信するための1つまたは複数のドライバ(1622c、1622d、1622e、1622f)を有するソフトウェアスタック(258;1622)を実行するように構成される、項目1から4のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目6)
上記オンチップシステムテストコントローラ(110;210;1620)が、ユーザによって提供されるアプリケーション固有のルーチンを実行するように構成される、項目1から5のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目7)
上記オンチップシステムテストコントローラ(110;210;1620)が、オンチップシステムテスト環境(246a、246b、246c、246d、246e、246f;1232、1232a、1232b、1236、1238、1242;1438、1440)をテスト対象デバイスにロードするように構成され、および/または、上記オンチップシステムテストコントローラが、オンチップシステムテスト(1240;1440)をテスト対象デバイスにロードするように構成され、および/または、上記オンチップシステムテストコントローラが、テスト対象デバイス上のオンチップシステムテスト環境(246a、246b、246c、246d、246e、246f;1232、1232a、1232b、1236、1238、1242;1438、1440)を初期化するように構成される、項目1から6のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目8)
上記オンチップシステムテストコントローラ(110;210;1620)が、オンチップシステムテストをパラメータ化するパラメータセットをテスト対象デバイスにアップロードするように構成される、項目1から7のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目9)
上記オンチップシステムテストコントローラが、テスト対象デバイスにロードされるオンチップシステムテスト(1240;1440)を開始するように構成される、項目1から8のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目10)
上記オンチップシステムテストコントローラが、テストシーケンス言語での全体的なテスト実行プログラムに基づいて、上記テスト対象デバイスの上記テストを制御するように構成される、項目1から9のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目11)
上記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソース(220、626、629)を制御するように構成され、および/または、上記オンチップシステムテストコントローラが、上記インターフェース(112、114;252、254、256;1650、1652、1654)に加えて、1つまたは複数のデジタルテストリソース(230、624、628)を制御するように構成され、および/または、上記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソース(220、626、629)を同期するように構成され、および/または、上記オンチップシステムテストコントローラが、上記インターフェースに加えて、1つまたは複数のデジタルテストリソース(230、624、628)を同期させるように構成される、項目1から10のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目12)
上記オンチップシステムテストコントローラ(110;210;1620)が、1つまたは複数のアナログテストリソース(220、626、629)および/または1つまたは複数のデジタルテストリソース(230、624、628)を制御するためのローカル通信インターフェースを有し、および/または、上記オンチップシステムテストコントローラが、1つまたは複数のアナログテストリソース(220、626、629)および/または1つまたは複数のデジタルテストリソース(230、624、628)を同期させるためのローカル同期インターフェースを有する、項目1から11のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目13)
上記オンチップシステムテストコントローラ(110;210;1620)が、上記テスト対象デバイス上で実行されるオンチップシステムテスト(1240;1440)からコマンドおよび/またはデータを受信し、上記受信したコマンドおよび/または上記受信したデータに応じてテスト実行フローを適合させるように構成される、項目1から12のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目14)
上記オンチップシステムテストコントローラ(110;210;1620)が、上記テスト対象デバイス上で実行されるオンチップシステムテスト(1240;1440)からコマンドおよび/またはデータを受信し、上記受信したコマンドおよび/または上記受信したデータに応じてテストリソース(220、230;624、626、628、629)を適合させるように構成される、項目1から13のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目15)
上記オンチップシステムテストコントローラが、組み込みソフトウェア環境を提供するように構成される中央装置(250;1640)と、上記デバッグインターフェースおよび/または上記制御インターフェースおよび/または上記高帯域幅インターフェースを実装する1つまたは複数のインターフェースブロックとを有し、上記オンチップシステムテストコントローラが、上記テスト対象デバイスに1つまたは複数の信号を提供し、上記テスト対象デバイスから1つまたは複数の信号を受信するためのフロントエンド電子機器(252、254、256;1650、1652、1654)を有し、上記オンチップシステムテストコントローラが、上記自動テスト装置の1つまたは複数の他の構成要素と通信するように、および/または上記自動テスト装置の1つまたは複数の他の構成要素と同期するように構成される1つまたは複数のバックエンドインターフェースを有する、項目1から14のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目16)
上記自動テスト装置が、1つまたは複数の開発およびデバッグ環境へのインターフェース(242、244)を備える、項目1から15のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目17)
上記自動テスト装置が、上記テスト対象デバイスで実行するためのオンチップシステムテストソフトウェアおよび、上記自動テスト装置によって実行されるテストプログラムの両方を開発およびデバッグするように適合される開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)を有する、項目1から16のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目18)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)は、上記テスト対象デバイス上で実行されるオンチップシステムテストソフトウェア(1240;1440)を開発および/またはデバッグするときに、上記自動テスト装置のテストリソース(220、230;624、626、628、629)へのアクセスを可能にする、項目17に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目19)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、上記自動テスト装置のインターフェース(112、114;252、254、256;1650、1652、1654)を介して、上記オンチップシステム(104;400;500;630;730;830;930;1030;1130;1230;1310;1430;1510)から、メモリコンテンツへのアクセスを可能にするためのプログラムコード(246e)を有する、項目17または項目18に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目20)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、デバッグソフトウェアが上記テスト対象デバイスへのプログラムおよび/または1つまたは複数のパラメータセットのアップロードを制御することを可能にするためのインターフェース(242)を有する、項目17から19のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目21)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、デバッグソフトウェアが上記テスト対象デバイスのデバッグインターフェースにアクセスすることを可能にするためのインターフェース(244)を有する、項目17から20のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目22)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、上記テスト対象デバイスのデバッグインターフェースへのデバッグソフトウェアの直接アクセスできるように構成される、項目17から21のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目23)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、オンチップシステムソフトウェアの開発で使用するためのアプリケーションプログラミングインターフェース(246f)を有し、上記開発されたオンチップシステムテストソフトウェアが上記テスト対象デバイス上で実行されるときに、上記テスト対象デバイスと上記自動テスト装置のテストリソース(220、230;624、626、628、629)との間の通信を可能にする、項目17から22のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目24)
上記開発インターフェースおよび上記デバッグインターフェース(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、上記開発されたオンチップシステムテストソフトウェアを実行するテスト対象デバイスとの上記自動テスト装置の通信をサポートするためのテスタソフトウェア(246g)も有する、項目23に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目25)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、オンチップシステムテストソフトウェア(1240;1440)の開発に使用するためのプログラム(246b、246c)を有し、上記自動テスト装置から上記テスト対象デバイスへのさらなるソフトウェアのアップロードを可能にする、および/または上記自動テスト装置によって上記テスト対象デバイス上でのプログラム実行の制御を可能にする、項目17から24のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目26)
上記開発およびデバッグ環境(240;612、614;1412、1414a、1414b、1418、1419;1612a、1612b、1612c、1612e、1612f)が、オンチップシステムテストソフトウェアの開発で使用するためのプログラム(246d)を有し、上記テスト対象デバイス上でのプログラムの実行を監視する、項目17から25のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目27)
上記自動テスト装置が、1つまたは複数のテスタリソース、上記オンチップシステムテストコントローラ、および上記テスト対象デバイスで実行されるオンチップシステムテストを同期させるように構成される、項目1から26のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目28)
上記自動テスト装置が、上記テスト対象デバイス上で実行される上記オンチップシステムテスト(1240;1440)によって提供される制御情報に応答して条件付き飛び越しを実行するように構成される、項目1から27のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。
(項目29)
上記自動テスト装置は、上記テスト対象デバイス上で実行されるオンチップシステムテストの完了を待つように構成される、項目1から28のいずれか1項に記載の自動テスト装置(100;200;610、620;710、720;810、820;910、920;1010、1020;1110、1120;1210、1220;1410、1420)。