(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-13
(45)【発行日】2024-06-21
(54)【発明の名称】1つ以上の被試験デバイスをテストするための自動試験装置、方法およびコンピュータプログラムであって、異なるテストアクティビティが被試験デバイスのリソースのサブセットを使用する、自動試験装置、方法およびコンピュータプログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20240614BHJP
【FI】
G06F11/36 184
G06F11/36 188
(21)【出願番号】P 2023503050
(86)(22)【出願日】2020-07-21
(86)【国際出願番号】 EP2020070599
(87)【国際公開番号】W WO2022017589
(87)【国際公開日】2022-01-27
【審査請求日】2023-01-16
(73)【特許権者】
【識別番号】390005175
【氏名又は名称】株式会社アドバンテスト
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100133215
【氏名又は名称】真家 大樹
(72)【発明者】
【氏名】ルヴォアール、ヨッヘン
【審査官】武田 広太郎
(56)【参考文献】
【文献】特表2013-531779(JP,A)
【文献】特開2002-055843(JP,A)
【文献】米国特許出願公開第2019/0213115(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
1つ以上の被試験デバイスをテストするための自動試験装置であって、
前記自動試験装置は、複数のテストアクティビティを含む1つ以上のテストシナリオを生成するように構成されており、
異なるテストアクティビティは、前記被試験デバイスのリソースのサブセットを使用し、
前記自動試験装置は、テストシナリオの複数のテストアクティビティに関連する前記被試験デバイスのリソースが互いに競合しないように、複数のテストシナリオを生成するように構成されている、
自動試験装置。
【請求項2】
所与のテストシナリオの前記複数のテストアクティビティは、同時に実行されるように構成されている、
請求項1に記載の自動試験装置。
【請求項3】
前記テストアクティビティの1つ以上は、それぞれのテストパラメータ値によって特徴付けられる1つ以上のテストパラメータに関連付けられ、および/または1つ以上の制約に関連付けられる、
請求項1または2に記載の自動試験装置。
【請求項4】
前記テストアクティビティの1つ以上は、所定の制限の外にある1つ以上のテストパラメータ値によって特徴付けられる、
請求項1~3のいずれか一項に記載の自動試験装置。
【請求項5】
テストシナリオの前記複数のテストアクティビティは、前記テストシナリオの前記複数のテストアクティビティに関連する前記被試験デバイスのリソースが互いに競合しない制約の下で、ランダムで選択される、
請求項1~4のいずれか一項に記載の自動試験装置。
【請求項6】
前記自動試験装置は、前記被試験デバイスの前記リソースの間における競合の発生を防止するために、テストシナリオを生成するための制約ソルバを備える、
請求項1~5のいずれか一項に記載の自動試験装置。
【請求項7】
前記テストアクティビティの1つ以上は、前記被試験デバイスに配置された応力発生器を作動させることを含む、
請求項1~6のいずれか一項に記載の自動試験装置。
【請求項8】
前記自動試験装置は、テストシナリオのテストシーケンスを生成するように構成されている、
請求項1~7のいずれか一項に記載の自動試験装置。
【請求項9】
前記テストシーケンスは、同じテストアクティビティを有する2つ以上のテストシナリオを含み、
前記テストシナリオは、少なくとも1つのテストパラメータ値によって異なる、
請求項8に記載の自動試験装置。
【請求項10】
前記テストシーケンスの前記複数のテストシナリオは、ランダムで選択および/または順序付けされる、
請求項8または9に記載の自動試験装置。
【請求項11】
前記自動試験装置は、テストデータを収集するためにテストシーケンスがコントローラによって実行されるように、前記テストシーケンスを生成するように構成されている、
請求項7~10のいずれか一項に記載の自動試験装置。
【請求項12】
前記コントローラは、前記自動試験装置および前記被試験デバイスと通信するように構成されたオンチッププロセッサまたはコントローラカードである、
請求項11に記載の自動試験装置。
【請求項13】
前記コントローラは、被試験デバイスデータおよび/または被試験デバイスセンサデータを読み出すように構成された1つまたは複数のインタフェースを有する、
請求項11または12に記載の自動試験装置。
【請求項14】
前記コントローラは、前記コントローラが前記1つ以上のセンサのセンサテストデータを読み出すように構成されるように、前記被試験デバイスの領域上に配された1つ以上のセンサを備える、
請求項11~13のいずれか一項に記載の自動試験装置。
【請求項15】
前記コントローラは、収集されたテストデータが所定の条件を満たす場合に反応するように構成されている、
請求項11~14のいずれか一項に記載の自動試験装置。
【請求項16】
前記コントローラは、収集されたテストデータを前記自動試験装置に伝達するように構成されている、
請求項11~15のいずれか一項に記載の自動試験装置。
【請求項17】
前記コントローラまたは前記自動試験装置は、テストアクティビティの制約に基づき、および/または収集されたテストデータに基づき、テストパラメータ値を動的に作成するように構成されている、
請求項11~16のいずれか一項に記載の自動試験装置。
【請求項18】
前記コントローラまたは前記自動試験装置は、テストシーケンスを最適化するために収集されたテストデータを分析するように構成されている、
請求項11~17のいずれか一項に記載の自動試験装置。
【請求項19】
前記コントローラまたは前記自動試験装置は、テストシーケンスを最適化するために、所定の制限内のシステムレベルテストの結果と、所定の制限内および/または制限外の収集されたテストデータとを比較するように構成されている、
請求項11~18のいずれか一項に記載の自動試験装置。
【請求項20】
前記自動試験装置は、人工知能または機械学習ユニットを備え、
前記コントローラまたは前記自動試験装置は、テストシーケンスを最適化するために、システムレベルテストの結果
、収集されたテストデータ、および/またはシステムレベルテストの結果と収集されたテストデータとの比較結果を用いて、前記人工知能または前記機械学習ユニットを訓練するように構成され、
前記訓練された人工知能または機械学習ユニットは、
前記コントローラまたは前記自動試験装置によって、前記収集されたテストデータを入力データとし、前記システムレベルのテスト結果を出力データとする教師データを用いて訓練されたものである、
請求項11~19のいずれか一項に記載の自動試験装置。
【請求項21】
前記訓練された人工知能または機械学習ユニットは、前記収集されたテストデータに基づいてシステムレベルテストの結果を予測するように構成される、
請求項20に記載の自動試験装置。
【請求項22】
前記コントローラまたは前記自動試験装置は、テスト結果を得るために、収集されたテストデータを分析するように構成されている、
請求項11~21のいずれか一項に記載の自動試験装置。
【請求項23】
訓練された人工知能または機械学習ユニットは、テストシーケンスを最適化するため、および/またはテスト結果を得るために、収集されたテストデータを分析するように構成される、
請求項17~22のいずれか一項に記載の自動試験装置。
【請求項24】
自動試験装置によって1つ以上の被試験デバイスをテストするための方法であって、
前記自動試験装置は、複数のテストアクティビティを含む1つまたは複数のテストシナリオを生成し、
異なるテストアクティビティは、前記被試験デバイスのリソースのサブセットを使用し、
前記自動試験装置は、テストシナリオの複数のテストアクティビティに関連する前記被試験デバイスのリソースが互いに競合しないように、前記複数のテストシナリオを生成する、
方法。
【請求項25】
コンピュータまたは信号処理装置に、請求項24に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明に係る実施形態は、自動試験装置に関するものである。本発明に係る更なる実施形態は、システムレベルテストに関するものである。本発明に係る更なる実施形態は、オンチップシステムテストに関するものである。本発明に係る実施形態は、カバーリング試験に関するものである。
【背景技術】
【0002】
発明の背景
構造テストおよびパラメトリック試験には合格しても、システムレベルテスト(SLT)に不合格となるデバイスがあることは、経験則または真実である。これは、通常、構造テスト中の非現実的なテスト条件に起因する。
【0003】
たとえば、ダイ領域全体のアクティビティパターンは、システムレベルテストと構造テストとでは大きく異なる。構造テストでは、ほとんどの時間をシフト操作に費やし、頻度は非常に低いものの、パターンのアクティビティは非常に高くなる。このため、電源に不自然な負荷がかかり、ダイ上の位置および時間に対して非現実的な電圧プロファイルが発生する。
【0004】
さらに、テストパターンの自動生成が困難であるため、パワードメインの交差および/またはクロックドメインの交差が構造テストに含まれないことがよくある。このような場合、この部分の故障は感度が上がらず、検出されないことになる。
【0005】
構造テストは、非現実的なテスト条件であるため、優れた故障検出能力を得るために最適化されている。これに対し、SLTは、正当なユーザーシナリオのみで構成されている。故障モデルを知らなくても、SLTの失敗が本当に悪いデバイスであることを特定することは、合意されているか、一般的に信じられている。
【0006】
たとえば、被試験デバイス(DUT)は、電源電圧、周波数、温度など、選択された1つの環境において、考えられる用途とシナリオのごく一部しか実行できないため、SLTは決して網羅的ではない。
【0007】
また、故障の感受から検出までの時間が非常に長くなったり、すべての動作の正確な順序が不明であったり、SLTのシミュレーション時間が長すぎたりするため、SLTの失敗はデバッグが困難であるという欠点がある。
【0008】
さらに、SLTは、実行時間が非常に長く、10分以上も例外ではない。
【0009】
さらに、SLTは、DUTごとに多数のシステムボードを管理する必要があるため、テストハウスへの導入が困難である。
【0010】
システムレベルテストでは、想定されるユーザーシナリオ、実行時間、実用性のトレードオフを改善することが求められている。
【発明の概要】
【0011】
本発明に係る一実施形態は、1つ以上の被試験デバイス(DUT)、たとえばシステムオンチップ(SoC)をテストするための自動試験装置を備える。自動試験装置(ATE)は、複数のテストアクティビティを有する1つ以上の、好ましくは複数のテストシナリオを自動的に、動的に生成するように構成される。異なるテストアクティビティ、たとえばA1、A2、A3は、たとえばA1:CPU2、Mem3、A2:Mem3、A3:MPEGのように、重複し得るDUTリソースのサブセットを使用する。自動試験装置は、テストシナリオの複数のテストアクティビティに関連するDUTのリソースが互いに競合しないように、複数のテストシナリオを生成するように構成される。
【0012】
オンチップシステムテスト(OCST)は、SLTよりも多種多様な正当なテスト条件にDUTをさらすため、SLTよりも関連性の高い問題を発見することが期待できる。問題は、実際のユースケースをシミュレートしたり、その一部であるようなテストアクティビティの組み合わせの中で発生した場合、関連性があると考えることができる。
【0013】
OCSTは、作業負荷に関連する故障を感作するために、供給電圧および周波数などの外部テスト条件、および/またはテストアクティビティの強度(データ移動速度など)などの内部テスト条件を変化させることができる。一旦故障が感作されると、OCSTは、故障動作を検出するための優れた観測性を提供する。
【0014】
OCSTは、SLTのどの部分集合の不合格を見つけることができるかを示すことで、その有効性を証明することができる。言い換えれば、OCSTは、SLTの故障するサブセットを見つけることができるかもしれない。
【0015】
理想的には、OCSTのテストは、デバッグなどのためにシミュレーション環境で再現できることが望ましい。OCSTは、DFT(Design for Test)、DFD(Design for Debug)、スキャンチェーン、LBIST(Logic Builtin Self Tests)、MBIST(Memory Builtin Self Tests)などの既存のオンチップリソースを活用することも必要である。また、マルチコアDUTおよび複数のATEリソースの間のインタフェースでは、マルチスレッドがサポートされる場合がある。
【0016】
好ましい一実施形態では、所定のテストシナリオの複数のテストアクティビティは、同時に実行されるように構成される。
【0017】
ATEは、テストアクティビティが重複しないDUTリソースを使用するテストシナリオを生成するように構成されているため、テストシナリオのテストアクティビティが互いに競合することはない。すなわち、与えられたテストシナリオのテストアクティビティを同時に実行することによって、テストを高速化できる。
【0018】
本発明の一般的な考え方は、データブロック移動または内蔵のセルフテストのようなDUTリソースを使用して、テストアクティビティの強度および並行性の組み合わせを変えながら、DUT上で多数の単純で現実的な自己チェックテストアクティビティを同時に実行することである。各テストアクティビティは、選択したIPブロックまたは関連するIPブロックをチェックできるが、電源のロード、クロックツリー、熱結合を通じて他のブロックのテスト条件にも貢献する。
【0019】
一実施形態によれば、1つ以上のテストアクティビティは、電圧、速度、データ転送のサイズ、データ転送間の時間、総データ転送が分割されるブロックサイズなどの1つ以上のテストパラメータと関連付けられる。テストパラメータは、テストアクティビティの動作を制御する。テストパラメータは、オン/オフ、5V、50GB/sなどのそれぞれのテストパラメータ値によって特徴付けられ、および/または、テストパラメータ値の動的生成のためなどに、一つ以上の制約または限界と関連付けられる。
【0020】
異なるパラメータ値を持つ同じテストアクティビティは、1つ以上のテストシナリオを有するテストシーケンスで実行されてもよい。テストアクティビティは、複数のテストパラメータおよび/または制約に関連付けられることがある。たとえば、テストパラメータ値、すなわち電圧などのテストパラメータ値は、テストアクティビティからテストアクティビティへと変化させることができる。テストアクティビティは、たとえば、DUTまたはDUTリソースを保護するため、または実際の使用では発生しないシナリオを回避するために、いくつかの制約または制限を有することもある。そのような制約とは、書き込み速度の制限、温度制限、メモリの使用制限などであろう。
【0021】
一実施形態によれば、テストアクティビティの1つ以上は、低すぎる電圧値および/または速すぎる周波数など、所定の制限外またはチップ仕様外の1つ以上のテストパラメータ値によって特徴づけられる。
【0022】
所定の制限、またはチップ仕様の外側またはわずかに外側のDUTをテストした結果は、所定の制限またはチップ仕様の内側のDUTの性能と相関があるかもしれない。すなわち、チップ仕様の外側で良好なテスト結果を得たDUTは、チップ仕様の内側でのDUTの良好な性能を示唆する可能性がある。逆に、チップ仕様外のテストが不合格であることは、チップ仕様内のテストが不合格であることの確固たるヒントおよび証明にはならず、弱点を示していると考えられる。
【0023】
一実施形態によれば、所定のテストシナリオの複数のテストアクティビティは、異なるテストアクティビティからの使用またはテストパラメータ値に関する要件の競合を避けるために、所定のテストシナリオの複数のテストアクティビティに関連する被試験デバイスのリソースが互いに競合しないという制約下で、ランダムで選択される。
【0024】
テストシナリオ内のテストアクティビティのランダムな混合は、実際の作業環境で発生するアクティビティまたはテストアクティビティ間の未知の相互作用をテストするために必要である。パラメトリックなテストアクティビティのランダム化は、ローカルな作業負荷の多くの組み合わせをカバーするため、多くのシステムレベルの欠陥の原因と考えられる現実的な作業負荷のパターンを多く模倣すできる。
【0025】
好ましい一実施形態では、自動試験装置は、被試験デバイスのリソース間の競合の発生を防止するために、テストシナリオを生成するための制約ソルバを含んでいる。
【0026】
各テストアクティビティは、テストパラメータおよびオプションの制約を持つことができる。たとえば、データブロックの書き込みおよび読み出しのテストアクティビティは、初期時間遅延、ブロックサイズ、開始アドレス、サブブロックサイズ、読み出し前の時間遅延のテストパラメータを持つことができる。制約はまた、複数のテストアクティビティからのテストパラメータを含むテストシナリオレベルとすることもできる。
【0027】
ワークステーション、またはオンチップOCSTコントローラおよびOCSTカードなどのコントローラは、制約ソルバを使用して、テストアクティビティからテストシナリオを自動的に生成できる。制約ソルバは、リソース制約に違反することなく、同時に共存できるテストアクティビティをマッチングさせる。
【0028】
好ましい一実施形態では、テストアクティビティの1つ以上は、被試験デバイス上に配置された応力発生器、たとえばオンチップ応力発生器、たとえば内部および/または外部バスへのトラフィック発生器を起動することを含む。
【0029】
たとえば、既存または新規のテスト用設計(DFT)構造は、検出の可能性を高めるために(またはより可能性の高い故障検出のために)制御された応力を生成し、観測可能性を高めることができる。応力発生器は、内部バスへのトラフィック発生器、および/または、行方不明の外部デバイスからのトラフィックを模倣するための外部入力へのトラフィック発生器で構成される場合がある。応力発生器は、選択されたラップIPブロックにおいて、メモリまたはロジック組み込みセルフテスト(MBIST、LBIST)などの組み込みセルフテスト(BIST)を実行することを可能にする。さらに、応力発生器は、入力/出力(I/O)ルックバックテストを実行することができる。また、応力発生器は、IEEE1500ラッパーなどのラッパーを使用してIPブロックを分離し、そのスキャンチェーンをリニアフィードバックシフトレジスタ(LFSR)に切り替えてもよい。
【0030】
一実施形態によれば、自動試験装置は、テストシーケンス、たとえば、テストシナリオのテストステップのシーケンスを生成するように構成される。
【0031】
テストシナリオのテストシーケンスは、可能な現実的な作業負荷の組み合わせを模倣するために、同時進行のテストアクティビティの異なる混合物をテストするために生成される。
【0032】
一実施形態によれば、テストシーケンスは、同じテストアクティビティを有する2つ以上のテストシナリオを有し、テストシナリオは、少なくとも1つのテストパラメータ値によって異なる。
【0033】
テストシーケンスでは、テストパラメータがテスト結果に与える影響をテストするために、異なるテストパラメータ値で同じテストアクティビティを持つテストシナリオを構成できる。DUTのIPブロックの1つのテストパラメータ値のみを変更すると、DUTの別のIPブロックにも影響を与えるか、または影響を与える可能性がある。
【0034】
さらに、同じテストアクティビティで異なるテストパラメータ値でテストシナリオを実施すると、テスト評価プロセスで不良IPブロックを特定するのにさらに役立つことがある。
【0035】
好ましい一実施形態では、テストシーケンスの複数のテストシナリオは、たとえば、自動試験装置またはコントローラによって、現実的な作業負荷パターンを模倣するために、ランダムで選択および/または順序付けされる。
【0036】
テストシーケンスのテストシナリオのランダム化は、現実的な作業負荷を作成または生成することにより、テストプロセスをさらに改善する。理想的には、テストシナリオは互いに独立しており、テストシナリオの実行順序を変更しても、DUTの動作が変化することはないと考えられる。そのシナリオの実行順序の無作為化は、たとえば、以前のテストシナリオからの休止熱または休止データが、現在のテストシナリオに影響を与えることができるかどうかをテストできる。
【0037】
好ましい一実施形態では、自動試験装置は、テストデータを収集するためにコントローラによって実行されるように構成されたテストシーケンスを生成するように構成されている。
【0038】
生成されたテストシーケンスは、コントローラまたはOCSTコントローラによって実行される。コントローラのタスクは、複数のテストアクティビティの実行をトリガし、合格/不合格の結果および/または測定結果などのテスト結果を読み出すことである。コントローラは、どのテストシナリオがどのテストパラメータ値で実行されているかを把握している。これは、エラーが発生した場合のデバッグに必要である。
【0039】
一実施形態によれば、コントローラは、たとえばオペレーティングシステムとともにオンチッププロセッサ、または、たとえば自動試験装置および被試験デバイスと通信するように構成された自動試験装置の一部としてのコントローラカードである。
【0040】
コントローラは、DUTに対してテストシーケンスを実行し、測定データまたは測定結果をATEに提供する。ATE内のオペレーティングシステム付きオンチッププロセッサまたはコントローラカードは、測定値またはテスト結果または収集したデータをDUTからATEに伝達する。
【0041】
好ましい一実施形態では、コントローラは、メモリデータおよび/または被試験デバイスのセンサデータ、たとえばオンチップセンサデータなどのDUTデータを読み出すように構成された1つまたは複数のインタフェースを有する。したがって、ATEは、DUTデータおよび/またはDUTセンサデータを読み出すようにコントローラを設定するように構成される。
【0042】
DUTテストデータおよび/またはDUTセンサデータをインターフェースを介して読み出すことにより、結果データおよび/または結果センサデータを予想される結果データまたは予想されるセンサデータと比較することができ、テストがさらに改善される。コントローラ、OCSTコントローラは、好ましくは、オプションのテストオペレーティングシステムと共にオンチッププロセッサであり、オンチップセンサデータを読み出すためにオンチップIJTAGにインターフェースする。
【0043】
一実施形態によれば、コントローラは、被試験デバイス領域上に分布する1つ以上のセンサにインターフェースし、コントローラは、1つ以上のセンサのセンサテストデータを読み出すように構成される。したがって、自動試験装置は、コントローラによって構成される被試験デバイス領域上に分布する1つまたは複数のセンサのセンサテストデータを読み出すようにコントローラを設定するように構成される。
【0044】
コントローラがオンチッププロセッサであっても、DUTまたはATEワークステーションと通信するOCST制御カードであっても、コントローラは、局所的な異常を検出するためにDUTのダイ領域上に分散した追加のセンサで構成されてもよい。適用されるセンサは、たとえば、温度、電流および/または電圧センサを含んでよい。
【0045】
好ましい一実施形態では、コントローラは、たとえば、収集されたテストデータが1つ以上の所定の閾値を超えるなどの所定の条件を満たす場合に、保存されたシステムデータ、プログラムカウンタまたはメモリレジスタ情報などの追加データを収集するなど、反応するように構成される。したがって、自動試験装置は、収集されたテストデータが所定の条件を満たす場合に反応するようにコントローラを設定するように構成される。
【0046】
たとえば、コントローラは、電流/最大/最小ピーク温度などの温度値、電流/最大/最小ピーク電圧などの電圧値、および/またはレイザー回路などのタイミング違反に対するオプションの閾値アラーム機能を備えた1つまたは複数のセンサにインターフェースできる。アラーム機能は、たとえば、デバッグを容易にするために、プログラムカウンタ、メモリコントローラレジスタなどの重要なシステムデータの保存をトリガーできる。
【0047】
一実施形態によれば、コントローラは、収集されたテストデータを自動試験装置に通信するように構成される。
【0048】
テスト結果データであろうと、測定データであろうと、測定データまたはテスト結果データをトリガーとする任意の収集データであろうと、収集されたテストデータは、コントローラからATEに提供される。
【0049】
一実施形態によれば、コントローラまたは自動試験装置は、テストアクティビティ制約に基づき、および/または収集されたテストデータに基づき、テストパラメータ値を動的に作成するように構成されている。
【0050】
収集されたテストデータは、既存のテストパラメータ値を修正するため、または新しいテストパラメータ値で1つ以上のテストシナリオをテストシーケンスに追加するために、テストプロセス中にATEまたはコントローラによって分析される場合がある。新しいテストパラメータ値の作成は、所定のテストアクティビティの制約を考慮してもよい。
【0051】
好ましい一実施形態では、コントローラまたは自動試験装置は、テストシーケンスを最適化するために、たとえば、最小被覆集合問題を解決するために、冗長性を減らし、および/またはテストアクティビティを決して失敗させないために、収集したテストデータを分析するように構成されている。
【0052】
収集されたテストデータは、テストパラメータ値を動的に作成するためだけでなく、テストシーケンスを最適化するためにも使用される。テストの一般的な考え方は、テスト失敗の発生に影響を与えるテストパラメータを特定することである。冗長なテストアクティビティは、たとえば、単一または少数のテストパラメータのグループの影響を評価するのに役立つ場合がある。最も影響力のあるテストアクティビティおよび/またはテストシナリオを特定した後、テストシナリオの数またはテストアクティビティの数を、テストシーケンスの実行時間を短縮するために最小限のテストアクティビティの集合に減らすことができる。
【0053】
一実施形態によれば、自動試験装置のコントローラは、テスト時間を最適化するために、所定の制限内のシステムレベルテストの結果の相関関係を、所定の制限内および/または制限外の収集されたテストデータ、たとえばテスト中のデバイスデータ、テスト中のデバイスセンサデータ、センサテストデータと比較または計算するように構成される。
【0054】
DUTの所定の制限または仕様の範囲外でテストを実施し、所定の制限内のシステムレベルテストと比較する。所定の制限の外で肯定的なテスト結果を持つテストアクティビティは、所定の制限内のシステムレベルテストに合格することを示すかもしれない。所定の制限内のテスト結果と所定の制限外のテスト結果とを比較することは、テストシナリオおよび/またはテストシナリオ内のテストアクティビティの数を減らすのに役立つ場合がある。また、所定の制限の内側および外側で行われたテストの間に良好な相関関係を提供するために、テストパラメータ値が所定の制限の外側でどの程度まで可能であるかを特定または決定するのに役立つ場合がある。
【0055】
好ましい一実施形態では、自動試験装置は、人工知能または機械学習ユニットを備え、コントローラまたは自動試験装置は、テストシーケンスを最適化するために、システムレベルテストの結果および/または収集されたテストデータおよび/またはシステムレベルテストと収集されたテストデータとの比較により、人工知能または機械学習ユニットを訓練するように構成される。
【0056】
さらに、好ましい一実施形態では、訓練された人工知能または機械学習ユニットは、収集されたテストデータに基づいてシステムレベルのテスト結果を予測するように構成される。
【0057】
人工知能または機械学習ユニットは、収集されたテストデータまたは測定データに基づいてシステムレベルのテスト結果を予測するために、収集されたテストデータとシステムレベルのテスト結果とを比較するために、システムレベルのテスト結果と収集されたセンサデータとを組み合わせたもので訓練されてもよい。
【0058】
収集されたテストデータに基づくシステムレベルのテスト結果の予測を使用することは、テストシナリオの数および/またはテストシーケンスのテストシナリオにおけるテストアクティビティの数をさらに減少させることができる。
【0059】
好ましい一実施形態において、コントローラまたは自動試験装置は、テスト結果を得るために、たとえば、被試験欠陥デバイスおよび/または被試験欠陥デバイスリソースを特定するために、および/または被試験デバイスを分類するために、収集したテストデータを分析するように構成されている。
【0060】
たとえば統計的な方法を用いて収集されたテストデータを分析することは、DUTの欠陥のあるIPブロックを定義すること、またはDUTのIPブロックを分類することを有してよい。
【0061】
好ましい一実施形態では、訓練された人工知能または機械学習ユニットは、テストシーケンスおよび/または得られたテスト結果を最適化するために、収集されたテストデータを分析するように構成されている。
【0062】
既に訓練された機械学習ユニットは、DUTのIPブロックを分類し、および/またはDUTの欠陥IPブロックを定義するために、テストシーケンスをさらに改善し、および/または統計的方法を改善できる。
【0063】
本発明によるさらなる実施形態は、それぞれの方法およびそれぞれのコンピュータプログラムを作成する。
【0064】
しかしながら、この方法は、対応する自動試験装置と同じ考察に基づいていることに留意されたい。さらに、この方法は、自動試験装置に関して本明細書に記載されている特徴、機能および詳細のいずれかによって、個別におよび組み合わせて補足されてよい。
【図面の簡単な説明】
【0065】
以下、本願による実施形態を添付の図を参照して説明する。
【
図1】
図1は、一実施形態に係る、1つ以上の被試験デバイスをテストするための自動試験装置を含む試験配置構成の概略図である。
【
図2】
図2は、一実施形態に係る、試験配置構成によって実施されるテストプロセスを説明するブロック図である。
【
図3】
図3は、一実施形態に係る、制約ソルバの入力である例示的なテストアクティビティテーブルを示す図である。
【
図4】
図4は、一実施形態に係る、制約ソルバによって使用される例示的なリソース競合テーブルを示す図である。
【
図5】
図5は、一実施形態に係る、制約ソルバが使用する例示的なテストシナリオテーブルを示す図である。
【
図6】
図6は、一実施形態に係る、制約ソルバが使用する例示的なテストステップテーブルを示す図である。
【
図7】
図7は、一実施形態に係る、制約ソルバによって作成された例示的なテストシーケンスを有する空のテスト結果テーブルを示す図である。
【
図8】
図8は、一実施形態に係る、テストステップ数を最適化するために使用されるテストステップごとの不合格テーブルを例示する図である。
【
図9】
図9は、一実施形態に係る、SLT試験とOCST試験との比較テーブルである。
【
図10】
図10は、一実施形態に係る、機械学習モジュールのための訓練データセットとして使用されるSLTの結果と収集されたテストデータとを組み合わせたテーブルを示す図である。
【
図11】
図11は、一実施形態に係る、収集したテストデータと機械学習モジュールの訓練データセットとして使用されるOCST結果とを組み合わせたテーブルである。
【発明を実施するための形態】
【0066】
以下では、異なる発明の実施形態および態様について説明する。また、さらなる実施形態は、添付の特許請求の範囲によって定義される。
【0067】
特許請求の範囲によって定義される任意の実施形態は、本明細書に記載される詳細、特徴および機能性のいずれかによって補足され得ることに留意されたい。また、本明細書に記載された実施形態は、個別に使用でき、また、任意に、特許請求の範囲に含まれる詳細、特徴、および機能性のいずれかによって補完できる。また、本明細書に記載された個々の態様は、個別にまたは組み合わせて使用できることに留意されたい。したがって、上記側面の別のものに詳細を追加することなく、上記個々の側面の各々に詳細を追加できる。また、本開示は、自動試験装置において使用可能な特徴を明示的または暗黙的に記述していることに留意されたい。したがって、本明細書に記載された特徴のいずれもが、自動試験装置の文脈で使用され得る。
【0068】
さらに、方法に関する本明細書に開示された特徴および機能性は、そのような機能性を実行するように構成された、装置において使用することも可能である。さらに、装置に関して本明細書に開示された任意の特徴および機能性は、対応する方法においても使用できる。言い換えれば、本明細書に開示された方法は、装置に関して説明された特徴および機能性のいずれかによって補完できる。
【0069】
本発明は、以下に与えられる詳細な説明と、本発明の実施形態の添付図面からより完全に理解されるであろうが、これらは、しかし、本発明を説明された特定の実施形態に限定するために取られるべきものではなく、説明と理解のためだけのものである。
【0070】
図1に係る実施形態
図1は、1つ以上の被試験デバイス(DUT)120をテストするための自動試験装置(ATE)110を含む試験配置構成100を模式的に示す図である。
図1は、複数のDUTリソース130a~eを有する例示的なDUT120をさらに含む。DUTリソース130a~eは、CPU、メモリ、MPEGなどの異なるIPブロックを備えてよい。
【0071】
ATE110は、それぞれが複数のテストアクティビティを有する複数のテストシナリオ140a~cを生成するように構成される。たとえば、テストシナリオ140cは、テストアクティビティ150a~cを含む。
【0072】
各テストアクティビティは、1つまたは複数のDUTリソース130a~eを利用するように構成される。たとえば、テストアクティビティ150aは、DUTリソース130eを使用するように構成されている。またはたとえば、テストアクティビティ150bは、DUTリソース130cおよび130dを使用するように構成される。別の例は、DUTリソース130aおよび130bを使用するように構成されるテストアクティビティ150cであってもよい。
【0073】
自動試験装置110は、テストアクティビティ150a~cのような複数のテストアクティビティに関連するDUTリソース130a~eのようなDUTリソースが互いに競合しないように、テストシナリオ140a~cのような複数のテストシナリオを生成するように構成される。たとえばテストアクティビティ150a~cは、テストアクティビティ150a~cのDUTリソース130a~eが競合しないように、テストシナリオ140cにグループ化され、所定のテストシナリオ140cのテストアクティビティ150a~cの同時実行を可能にする。
【0074】
オンチップシステムテスト(OCST)の一般的な考え方は、DUTリソース130a~eを使用してDUT120上で多数の単純で現実的なテストアクティビティを同時に実行することであり、同時実行するテストアクティビティの組み合わせおよび/または強度は様々である。各テストアクティビティは、関連するIPブロックをチェックできるが、電源のロード、クロックツリーおよび熱結合を通じて他のIPブロックのテスト条件に寄与することもできる。テストアクティビティの例は、データブロックの移動、またはメモリ内蔵セルフテスト(MBIST)、またはロジック内蔵セルフテスト(LBIST)などの内蔵セルフテストの実行で構成され得る。
【0075】
たとえば、OCSTコントローラは、いくつかのIPブロックにおいて、LBIST、MBISTなどの構造テストをローカルに実行する。これらのテストアクティビティは明らかに自己チェックであるが、同時に実行される他のテストアクティビティのテスト条件を制御するための応力発生器としても機能する。テストシナリオでは、一部のIPコアは構造テストを実行し、他の一部のコアはコードベースのテストアクティビティなどに関与する。
【0076】
関連するIPブロックは、応力を発生させて故障を増感したり、観測性を高めて増感した故障を検出したり、既存の構造にアクセスしてデバッグおよびシステム内テストを行うなど、テスト用設計(DFT)構造または技術を適用できる。
【0077】
テストアクティビティのランダム化またはパラメータ化可能なテストアクティビティは、ローカルな作業負荷の多くの組み合わせをカバーするため、多くのシステムレベルの欠陥の原因と考えられる現実的な作業負荷のパターンを多く模倣できる。既存または新規のテスト用設計(DFT)構造は、故障検出の可能性を高めるため(または故障検出の可能性を高めるため)、制御された応力を生成し、観測可能性を高めることができる。
【0078】
DFT構造は、たとえば、オンチップOCSTコントローラがオンチップIJTAGにインターフェースし、オンチップセンサデータを読み出すことで観測性を向上させることができる。
【0079】
たとえば、レイザー回路などで、電流/最大ピーク/最小ピーク温度および/または電流/最大ピーク/最小ピーク電圧および/またはタイミング違反に対するオプションの閾値アラーム機能を持つセンサを追加すると、観測性をさらに向上させることができる。アラームは、デバッグを容易にするために、プログラムカウンタ、メモリコントローラレジスタなどの重要なシステムステータスの保存または蓄積をトリガーできる。
【0080】
また、局所的な異常を検出するために、ダイ領域上に配置された追加のセンサによって、観測性をさらに向上させることができる。また、プロセッサを接続してメモリをトレースし、その内容を期待値と比較することも可能である。さらに、プロトコルチェッカー、CRC、バストラフィックロガーなどのアサーションチェッカーを追加して、カバレッジを測定し、デバッグを支援できる。
【0081】
テストアクティビティは、たとえばオンチップシステムテスト(OCST)コントローラによって制御され、最も効果的なテスト条件を決定し、不合格を特定のテストアクティビティおよびそのテストパラメータ値に帰着させることができるようにする。
【0082】
図2に係る実施形態
図2は、
図1の試験配置構成100と同様の試験配置構成によって行われるテストプロセスを説明するブロック
図200である。
【0083】
ブロック
図200は、テストアクティビティテーブル210から始まる。テストアクティビティテーブル210は、テストアクティビティ212の列を含み、各テストアクティビティ212は、1つまたは複数のDUTリソース214を使用することができる。対応するDUTリソース214は、DUTリソース214の欄に提供される。さらに、テストアクティビティ212は、別々の列に提供される対応するテストパラメータ216および/または制約218を有してもよい。制約条件は、テストシナリオレベルであり、複数のテストアクティビティからのテストパラメータを参照できる。
【0084】
テストアクティビティテーブル210は、制約ソルバ250に供給される。制約ソルバ250は、
図2に示すように、ATE220によって構成されてもよいし、コントローラ270によって構成されてもよいし、別個の存在であってもよい。
図2の制約ソルバ250は、1つの入力と1つの出力を有する。制約ソルバ250の入力は、テストアクティビティテーブル210から供給される。制約ソルバの出力は、テストシーケンステーブル260である。
【0085】
テストシーケンステーブル260は、
図1のテストシナリオ140a~cと同様のテストシナリオ262を有する。テストシナリオは、1つ以上のテストアクティビティ212a~eを有してよく、各テストアクティビティ212a~eは、テストパラメータ値216a~eかを有してよい。テストシーケンステーブル260は、ATE220またはコントローラ270に提供される。
【0086】
たとえば、第1のシナリオは、テストパラメータP1 216a、P2 216bを有する第1のテストアクティビティ212aと、テストパラメータP3 216c、P4 216dを有するテストアクティビティ212bとを有してよい。第2のシナリオは、テストパラメータP3 216cおよびテストパラメータP4 216dを有する第2のテストアクティビティ212bを有してよい。第3のシナリオは、テストパラメータP3 216cおよびP5 216eを有する第3のテストアクティビティ212cを有してよい。第4のシナリオは、テストパラメータP2 216bおよびテストパラメータP4 266dを有する第4のテストアクティビティ212dを有してよい。
【0087】
コントローラ270は、テストシーケンステーブル260を入力とし、テスト結果テーブル280を出力する。テストブロック270が提供するテスト結果テーブル280は、DUT282上で実行されるテストシナリオ262の1つ以上のテストアクティビティ212のテスト結果288を有する。テスト結果テーブル280は、ATE220に供給され、および/またはコントローラ270に戻される。
【0088】
ATE220またはコントローラ270は、テスト結果テーブル280を入力として受け入れ、改良されたテストシーケンステーブル260および/または結果テーブル292を出力として提供するようになっている。
【0089】
改良されたテストシーケンステーブル260は、さらに、ATE220またはコントローラ270にフィードバックできる新しいテスト結果テーブル280を提供するために、コントローラ270の入力として使用されてもよい。
【0090】
ATE220またはコントローラ270によって提供される結果テーブル292は、DUTリソース296の合格/不合格のテスト結果298を有する。さらに、および/または代替的に、結果テーブル292は、DUTリソース296の分類を有してよい。
【0091】
テストアクティビティ212が必要とする制約218、テストパラメータ216およびリソース214を有するテストアクティビティテーブル210は、制約ソルバ250に提供される。テストアクティビティテーブル210またはテストアクティビティのライブラリは、さらに、コントローラ270またはOCSTコントローラ270がテストアクティビティ212を活性化または実行するためのコードのプールを有してよい。ライブラリは、どのDUTまたはオンチップおよびATEリソースが所定のテストアクティビティ212によって使用されるかを知ることもできる。
【0092】
制約ソルバ250は、テストアクティビティテーブル210からテストシーケンステーブル260を作成するように構成される。テストシーケンステーブル260は、テストシナリオ262を有し、テストシナリオ262は、リソース制約218に違反することなく共存可能または同時実行可能な1つ以上のテストアクティビティ212a~eを有する。テストシナリオ262は、OCSTカードまたはオンチップOCSTコントローラなどの、ワークステーション上および/またはコントローラ270上で動作する制約ソルバ250によって自動的に生成される。制約は、PSSでモデル化されてもよい。
【0093】
制約ソルバ250によって提供されるテストシーケンステーブル260は、1つ以上のテストパラメータ216a~eに関連する1つ以上のテストアクティビティ212a~dが同時に実行され得るシナリオ262を構成する。それぞれのテストパラメータ216a-eを特徴付けるテストパラメータ値は、ランダムに、または極値を強調するように選択される。テストシナリオ262の順序は、たとえば、現実の作業負荷をシミュレートするために、ランダムに生成される。
【0094】
生成されたテストシーケンステーブル260は、オンチップOCSTコントローラなどのコントローラ270に提供され、テストシーケンステーブル260のテストシナリオ262を実行するように構成され、テストデータ280を収集するために、オンチップOCSTコントローラは、テストシーケンステーブル260のテストシナリオを実行する。コントローラ270は、ATEと通信するためのインタフェースおよび/またはDUTと通信するためのインタフェースを有してよい。コントローラ270は、DUTテストデータおよび/またはDUTセンサデータを読み出してもよく、および/またはコントローラは、局所的な異常を検出するためにDUT領域またはダイ領域上にセンサを有してよい。測定値または収集データ280は、測定値および/またはセンサ値が特定の事前定義された条件を満たす場合、コントローラ270がDUTのメモリ情報またはステータス情報などのさらなる情報を収集するトリガーとなり得る。
【0095】
コントローラ270は、シナリオ262のテストアクティビティ212の収集されたテストデータ280またはテスト結果288をATE220に伝達するように構成される。ATE220またはコントローラ270は、テストプロセスをさらに改善し、および/またはDUTをデバッグもしくは診断するように構成される。
【0096】
オンチップOCSTコントローラまたはOCSTカードなどのコントローラ270、またはATE220は、制約を満たし得るテストシナリオのテストパラメータセットを動的に作成または修正するように構成され、デバッグのために現在のテストパラメータを知ることができるようにしてもよい。テストアクティビティ212のためのテストパラメータ値セットを作成する方法は、極値を任意に強調する所望の分布に従うランダム化、たとえば、カバレッジを最大化するための制約ソルバの使用、または、たとえば、少数のテストパラメータの網羅のための入れ子ループを使用することを含む。
【0097】
テスト環境をさらに改善するために、テスト学習環境が必要な場合がある。広範な特性テストは、多くのDUTが多くのテストステップまたは多くのテストシナリオにさらされる、テスト学習の基礎となるものである。好ましくは、テストパラメータ216の大量の組み合わせをカバーするために、すべてのDUT282が同じテストステップまたはテストシナリオにさらされるわけではない。特定のDUT282に対するテストシナリオの偏りを避けるために、テストステップまたはテストシナリオは、ランダムな並べ換え順序で実行される。
【0098】
ATE220またはコントローラ270は、収集したテスト結果データ280およびシステムレベルのテスト結果で訓練させた、機械学習またはAIモジュールも使用できる。機械学習モジュールは、収集されたテスト結果データ280およびシステムレベルのテスト結果を分析してもよく、収集されたテストデータ280の新しいセットに基づいて、システムレベルのテスト結果を予測してもよい。
【0099】
AIモジュールは、テスト結果からシステムレベルテストの不合格を予測するために、オンチップセンサデータなどの仕様制限のない測定結果データによって、または低すぎる電圧および速すぎる周波数などの仕様制限のないテストパラメータによってさらに訓練されてもよい。仕様範囲外のテストステップおよびテストアクティビティを失敗することは、不良DUTの証拠にはならない。
【0100】
しかし、機械学習モジュールおよびモデルは、仕様範囲外または仕様範囲外の測定結果や、仕様範囲外のテストパラメータやテストステップまたはシナリオに関連する特性(関与したテストアクティビティやテストリソースなど)を含むテストステップまたはテストアクティビティ結果からシステムレベルのテスト結果を予測するために構築できる。
【0101】
このようなモデルは、以前に逃れたSLTの不合格のいくつかを見つける可能性が高いが、SLTに合格し、他のすべての正当なOCST試験に合格したDUTも不合格とする可能性がある。これらのケースは、テストによる歩留まり損失とみなされ、できればコストモデルに基づいて、追加で見つかったSLTの不合格と慎重に取引される可能性がある。そのようなモデルによって必要とされる追加のテストステップまたはシナリオのみが、生産ステップに含まれてもよい。その他の追加テストステップは、再び削除できる。
【0102】
ATE220またはコントローラ270は、DUTをデバッグおよび/または診断するようにさらに構成されてもよい。テスト結果テーブル280は、テストシナリオ262の同時に実行されたテストアクティビティ212の結果288を有するため、不良DUTまたはDUTリソースを識別および/または分類するために、収集したテストデータ280のさらなる分析が必要である。
【0103】
デバッグまたは診断のための一般的な考え方は、OCSTの不合格の発生に最も影響を与えるテストパラメータ216を特定することである。特定のIPブロックにおける特定のアクションを含むテストアクティビティ212に関連するテストパラメータ216は、デバッグのための情報的なヒントを提供する。
【0104】
テストステップまたはシナリオと、テストアクティビティ、DUTリソース、テストパラメータ、テスト結果、および全体的なOCST結果を組み合わせたテーブルによって訓練された機械学習モジュールは、任意で複数のDUTについて、不良DUTリソースを分類または特定するために使用されてもよい。機械学習モジュールまたは機械学習特徴選択アルゴリズムは、どのテストアクティビティ、テストまたはDUTリソースおよびテスト結果が、OCSTの不合格の発生に寄与するOCST結果を説明するために重要であるかを特定してもよい。
【0105】
つまり、コントローラ270は、テストプロセスを制御している。コントローラ、すなわちOCSTコントローラは、好ましくは、オプションのテストオペレーティングシステムとともにオンチッププロセッサであるが、DUTまたはATEワークステーションと通信するOCSTカードであってもよい。
【0106】
OCSTコントローラのタスクは、たとえば、複数のテストアクティビティの実行をトリガし、その合格/不合格の結果および/または測定結果を読み出すことである。テストアクティビティは、オプションの応力発生および/またはオプションの故障検出の組み合わせを含むことができる。
【0107】
以下に、テストアクティビティの例を示す。
・ ATEは、DUTの外部テスト条件、たとえばDUTの電源電圧および周波数を設定し、すなわちOCSTコントローラは、ATEリソースを制御できる。
・ ATEは、測定(たとえば電源電流測定)を実行する。
・ IPコア間でデータブロックを移動し、移動前および移動後の内容をチェックする。
・ オンチップCPUのメモリテストを実行する。
・ メモリのセルフテストを実行する。
・ 画像の圧縮および伸張を行い、元の画像と伸張後の画像の差分を確認する。(応力&チェック)
・ I/Oループバックテストを実施する。
・ DFT技術を使用して、応力生成を適用する。
・ DFT技術を使用して、観測可能な構造体をアクティブ化して読み出す。
【0108】
コントローラは、どのテストシナリオがどのテスト(アクティビティ)パラメータで実行されているかを常に把握しているため、エラー発生時のデバッグに必要な情報を得ることができる。
【0109】
さらに、コントローラまたはOCSTコントローラは、制約条件に基づいてテストアクティビティパラメータを動的に作成または修正でき、および/または、事前に計算されたリストからそれらを作業またはインポートすることができる。また、コントローラ、または、OCSTコントローラコードを実行するプロセッサは、テストアクティビティを生成することもできる。
【0110】
図3に係るテストアクティビティテーブルの例
図3は、一実施形態に係る例示的なテストアクティビティテーブル300を示す図である。テストアクティビティテーブル300は、
図2のテストアクティビティテーブル210と類似しているか、またはその一例である。
【0111】
テストアクティビティテーブル300は、テストアクティビティ、リソース、テストパラメータ、および可能な結果の列を含む。テストアクティビティテーブルは、必要なリソース、調整可能なパラメータ、および可能な結果または結果を有するDUT上で実行されるすべての可能なテストをリストアップするように構成される。
【0112】
テストアクティビティテーブル300は、テストシーケンスを作成するための入力として、
図2の制約ソルバ250のような制約ソルバによって使用され得る。テストシーケンスでは、どのテストアクティビティがどのテストパラメータでどのDUTに対してどのような順序で実行されるかを定義できる。
【0113】
テストアクティビティテーブル300は、一般的なテストアクティビティを有してよいし、DUT固有のテストアクティビティを有してよい。テストアクティビティのいくつかの例は、例示的なテストアクティビティテーブル300によって含まれる。
【0114】
たとえば、第1のテストアクティビティA1は、処理ユニット2(CPU2)がメモリ3(MEM3)にデータを書き込み、MEM3の内容をチェックすることを含んでよい。アクティビティA1は、リソースR1:CPU2、R2:MEM3、R3:コア供給用のATE DPSを必要とする。テストアクティビティA1の調整可能なテストパラメータは、P1:帯域幅、P2:DPS電圧である。結果は、不合格/合格値であるr1および電流値であるr2の2つの値を含んでよい。
【0115】
たとえば、テストアクティビティA2は、リソースR2、つまりMEM3を必要とする、MEM3のメモリ内蔵セルフテスト(MBIST)であり、調整可能なパラメータはなく、結果として合格/不合格の値が得られる。
【0116】
たとえば、テストアクティビティA3は、MPEGセルフテストであり、テストパラメータP3として調整可能なブロックサイズを有するMPEGリソースを必要とし、結果は合格/不合格の値である。
【0117】
図4に係るリソース競合テーブル
図4は、
図2の制約ソルバ250によって使用および/または作成される可能性のあるリソース競合テーブル400を示す図である。リソース競合テーブル400は、テストアクティビティ列と、DUTの各リソースに対する列とを有する。テーブル400の各テストアクティビティは、1つ以上のDUTテストリソースを使用し、これは、それぞれのリソース欄の「X」によって表される。
【0118】
図2の制約ソルバ250のような制約ソルバは、テストシーケンスを作成するために、
図3のテーブル300のようなテストアクティビティテーブルを入力として取り得る。テストシーケンスを作成するステップは、リソース競合テーブル400のような、リソース競合テーブルを作成することである。リソース競合テーブル400は、どのテストアクティビティが同じDUTリソースを使用しているか、したがって、どのテストアクティビティが同時に実行できないかを示す。
【0119】
たとえば、リソース競合テーブル400は、テストアクティビティテーブル300のテストアクティビティの競合するリソースを示している。たとえば、テストアクティビティA1は、リソースR1、R2、R3を使用し、R4を使用しない。たとえば、テストアクティビティA2は、リソースとしてR2のみを使用する。たとえば、テストアクティビティA3は、DUTリソースR4を使用する。
【0120】
リソース競合テーブル400が示すように、テストアクティビティA1およびテストアクティビティA2は、どちらもテストリソースR2を必要とするため、競合するテストアクティビティとなる。テストアクティビティA1およびA2は、両方ともテストリソースR2を必要とするので、同時に実行することができない。つまり、テストアクティビティA1およびテストアクティビティA2は同時に実行できない。リソースの競合がないテストアクティビティは、テストシナリオに組み合わせることができる。
【0121】
図5に係るテストシナリオテーブル
図5は、
図2の制約ソルバ250によって使用または作成される可能性のあるテストシナリオテーブル500を示す。テストシナリオテーブル500は、テストシナリオ列と、提供される各テストアクティビティの列とを有する。テストシナリオテーブル500は、可能な全てのテストシナリオを有する。テストシナリオの1つ以上のテストアクティビティは、同時に実行される。
【0122】
テストシナリオテーブル500は、
図3のテストアクティビティテーブル300のテストアクティビティA1、A2、A3のように、テストアクティビティから作成される可能性のある全てのテストシナリオを示している。テストシナリオのテストアクティビティは、非競合的であることが要求される。競合するテストアクティビティは、
図4のリソース競合テーブル400のようなリソース競合テーブルで示される。リソース競合テーブルから取り出した、競合するテストアクティビティを持つテストシナリオを、可能なすべてのテストシナリオから除外すると、テストシナリオテーブル500のような、競合しないテストアクティビティを持つテストシナリオテーブルになる。
【0123】
たとえば、テストシナリオテーブル500は、テストシナリオ欄と、A1、A2、A3といったテストアクティビティ毎の欄とを有する。
図4のリソース競合テーブル400によれば、A1およびA2は同じリソースR2を使用しているので、テストアクティビティA1およびテストアクティビティA2は同時には実行できず、同じテストシナリオにはなり得ない。
【0124】
たとえば、
図3の例示的なテストアクティビティのテストシナリオは、テストアクティビティA1を有するテストシナリオS1、テストアクティビティA2を有するテストシナリオS2、テストアクティビティA3を有するテストシナリオS3、テストアクティビティA1、A3を同時に有するテストシナリオS4、およびテストアクティビティA2、A3を同時に有するテストシナリオS5である。リソースの制約上、どのテストシナリオもテストアクティビティA1およびA2を同時に実行することはない。
【0125】
テストアクティビティを本当に同時進行させるかどうかは、テストパラメータの設定やその他の未知の要因に依存することがある。テストシーケンスまたはテストスイートは、テストアクティビティに指定されたテストパラメータ値で所定のテストシナリオを実行する複数のテストステップで構成される。
【0126】
図6に係るテストステップテーブル
図6は、
図2の制約ソルバ250が使用または作成することができるテストステップテーブル600を示す図である。テストステップテーブルは、テストステップ、テストシナリオ、テストアクティビティ、およびテストアクティビティに対応するテストパラメータの列を有する。
【0127】
テストステップテーブル600のテストステップ欄は、異なるテストステップを識別するために、実行番号を有する。テストシナリオ欄は、少なくとも1回可能な全てのテストシナリオを有してよい。テストシナリオは、複数の異なるテストパラメータで複数回テストされてもよい。
図5のテストシナリオテーブル500と同様に、テストシナリオのテストアクティビティは、対応するテストアクティビティ列の「X」によって表される。
【0128】
テストシナリオがテストアクティビティを有する場合、対応するテストパラメータ列は、テストパラメータ値を有する。テストパラメータ値は、好ましくはランダムで生成され、所定の分布に任意に従い、および/または任意に、ランダムで生成されたテストパラメータ値よりも問題を誘発する傾向がある極値に対して一定の割合を集中させた状態で、生成される。
【0129】
テストステップテーブル600から、ランダムでマッピングされたテストシーケンスよりも多くの問題を誘発するために、テストステップテーブル600のテストステップをランダムでまたは所定の分布に従ってDUTにマッピングし、
図2のテストシーケンステーブル260のようなテストシーケンスを生成する。
【0130】
テストシナリオ欄は、テストシナリオテーブル500からのテストシナリオS1~S5など、可能なすべてのテストシナリオを有し、テストシナリオは、いくつかの異なるテストパラメータでテストされてよい。
【0131】
たとえば、最初のテストステップは、テストパラメータP1、帯域幅10GB/S、テストパラメータP2、DPS電圧0.9Vに対応するテストアクティビティA1を有する最初のテストシナリオS1であってよい。たとえば、テストステップ2は、異なるテストパラメータP1、帯域幅20GB/S、DPS電圧0.86VのP2、同じテストシナリオS1を含む。
【0132】
たとえば、テストステップ3は、調整可能なテストパラメータを一切使用しないテストアクティビティA2を含むテストシナリオS2を有してよい。
【0133】
たとえば、テストステップ4は、テストパラメータP3が128kBのブロックサイズであるテストアクティビティA3を有するテストシナリオS3を含む。たとえば、テストステップ5は、テストパラメータP3が1MBのブロックサイズである同じシナリオS3を含む。
【0134】
たとえば、テストステップ6は、テストアクティビティA1およびA3によるテストシナリオS4を含み、テストパラメータは、P1を帯域幅50GB/S、P2をDPS電圧1.04V、テストパラメータP3をブロックサイズ6MBとする。たとえば、ステップ7は、同じシナリオS4で、テストパラメータP3、帯域幅3GB/SのP2、DPS電圧0.97Vおよびブロックサイズ500KBのP3から構成される。たとえば、ステップ8は、テストパラメータP1を27GB/Sの帯域幅、P2を0.88VのDPS電圧、P3を21MBのブロックサイズとして、同じシナリオS4から構成されている。
【0135】
たとえば、テストステップ9は、テストパラメータなしのテストアクティビティA2と、ブロックサイズ7MBのテストパラメータP3のテストアクティビティA3とのS5のテストシナリオを有する。たとえば、テストステップ10は、780KBのブロックサイズのP3のテストパラメータを持つ、S5と同じテストシナリオを有する。たとえば、ステップ11は、S5と同じテストシナリオで、テストパラメータP3を13MBのブロックサイズとしたものである。
【0136】
図7に係るテスト結果テーブル
図7は、
図2のテストシーケンステーブル260のテストアクティビティを実施した後に、コントローラによって記入される可能性のある空のテスト結果テーブル700を示す。テスト結果テーブルは、DUTs、テストステップ、テストアクティビティのテスト結果、および総合テスト結果欄を有する。
【0137】
テスト結果テーブル700は、
図2のテストシーケンステーブル260のようなテストシーケンスを有する。テスト結果テーブル700の最初の2列、DUT列およびテストステップ列は、どのテストステップがどのDUTに対して行われるかを定義している。テストシーケンスは、
図6のテストステップテーブル600から、ランダムでマッピングされたテストシーケンスよりも多くの問題を誘発するために、テストステップテーブル600のテストステップをDUTにランダムに、または所定の分布に従って、および/または所定の条件を満たすようにマッピングすることによって、生成される。
【0138】
例示的なテストシーケンスは、たとえば、テストステップ6、11、7、1および8によってテストされるDUT1と、5、2、10、4および9のテストステップによってテストされるDUT2とを有してよい。
【0139】
オンチップコントローラおよびコントローラカードなどのコントローラは、テストシーケンスに従ってテストを実行する。列r1(#不合格)、r2(電流)、r3(#不合格)、r4(p/f)で表されるテストアクティビティの結果は、コントローラによって収集される。全体的なOCSTの結果は、テストアクティビティの結果の全てに基づいてもよいし、テストアクティビティの結果のサブセットに基づいてもよい。追加的または代替的に、OCST結果は、テストアクティビティ結果またはテストアクティビティ結果の一部に基づくDUTの分類を有してよい。
【0140】
この例では、全体のOCST結果は結果r1、r3、r4から計算され、つまり、測定結果r2は、この例では仕様限界を持たないので、オーバーテスト結果には寄与しない。
【0141】
図8に係るテストステップ毎の不合格テーブル
図8は、DUT列およびテストステップ毎の列を有するテストステップ毎の不合格テーブル800を示す。DUT欄には、テストされたDUTが記載されている。テストされたDUTの行は、DUTが所定のテストステップに合格した場合、所定のテストステップ列の文字「P」を有し、DUTが所定のテストステップで不合格だった場合、背景が強調された文字「F」である。
【0142】
コントローラまたはATEは、テストステップ毎の不合格テーブル800を、テストステップの数を最適化する、好ましくは減らすために使用するように構成される。たとえば、決して不合格にならないテストおよび/または冗長なテストステップの数は、低減され得る。コントローラまたはATEのタスクは、既知の解を有する最小被覆集合問題として知られる、テストステップの最小集合を選択することを含んでいてもよい。
【0143】
たとえば、テストステップ毎の不合格テーブル800の場合、DUT1~4の4つのDUTのテスト結果を有してよい。たとえば、DUT1は、テストステップ6を除く全てのテストステップに合格してよい。たとえば、DUT2は、テストステップ2およびテストステップ4を除く全てのテストステップに合格してよい。たとえば、DUT3は、テストステップ1および6を除くすべてのテストステップに合格してもよい。たとえば、DUT4は、テストステップ8を除くすべてのテストステップに合格してよい。
【0144】
たとえば、コントローラまたはATEがテストステップ毎の不合格テーブル800を分析すると、コントローラは、テストステップ3、5および7は決して不合格にならず、したがって、製造テストから削除することができるという結論に達することができる。さらに、テストステップ4は、テストステップ2に対して冗長であり、また、削除されてもよい。
【0145】
図9に係るOCSTとSLTとの比較
図9は、OCSTテスト結果とSLTテスト結果との例示的な比較テーブル900を示す図である。例示的な比較テーブル900は、同じセットのDUTをOCSTおよびSLTの両方のテスト方法でテストするときに生じ得る差異を示す。
【0146】
この例では、9900個のデバイスがOCSTとSLTの両方のテスト方法に合格し、70個が不合格となった。OCST試験に不合格でSLT試験に合格したデバイスまたはDUTは25個であったが、OCST試験に合格でSLT試験に不合格だったDUTは5個だけであった。
【0147】
つまり、上記の例では、OCSTはSLTで不合格になる5個のデバイスを見逃すが、SLTが発見できない25個のDUTに問題を発見する。これは、すべてのテストステップが現実的なシナリオを現実的なテストパラメータ値で記述すると仮定すると、良いバランスと言える。
【0148】
図10に係るテスト結果およびSLT結果を組み合わせた訓練テーブル
図10は、収集したテストデータおよびSLTの結果を組み合わせた訓練テーブル1000を示す図である。訓練テーブル1000は、機械学習またはAIモジュールのための訓練テーブルまたは訓練データセットとして使用されるように構成される。訓練テーブル1000は、対応するSLT結果を有するDUTに対して実施されたテストステップのすべてのテストアクティビティ、テストリソース、およびテスト結果を有してよい。訓練テーブル1000は、複数のDUTに対して実施された複数のテストステップを有してよい。
【0149】
訓練テーブル1000は、SLTテストがDUTの仕様内で実施された、DUTの仕様外、または若干の仕様外において収集されたテストデータとSLT結果とを組み合わせて構成されてもよい。たとえば、この場合、OCSTの結果が不合格であることはDUTが不合格であることの強い印とはみなされないが、仕様範囲外のOCST試験に合格したことは、良好なDUTの強い印とみなされ、DUTを高品質のDUTとして分類する結果になり得る。
【0150】
ATEまたはコントローラは、訓練テーブル1000によって訓練され、DUTに対して新たに実施されたテストステップからSLT結果を予測するように構成され得る、機械学習ユニットまたはAIモジュールを含んでよい。機械学習ユニットは、テストプロセスを改善するためにも使用されてもよい。
【0151】
図11に係るテスト結果付き学習テーブル
図11は、収集したテストデータおよびOCSTの総合結果を有する訓練テーブル1100を示す図である。訓練テーブル1100は、機械学習またはAIモジュールのための訓練テーブルまたは訓練データセットとして使用されるように構成される。訓練テーブル1100は、DUTに対して実施されたテストステップのテストアクティビティ、テストリソースおよびテスト結果を、対応する全体的なOCSTの結果と一緒に構成できる。
【0152】
テーブル1100は、デバッグや診断の目的で使用される。デバッグの一般的な考え方は、OCSTフェイルの発生に最も影響を与えるテストパラメータを特定することである。ATEまたはコントローラは、頻繁にフェイルするDUTリソースまたはDUTを特定および/または分類するために、AIまたは機械学習ユニットを含んでよい。効率上の理由から、テーブルは故障するデバイスに限定され得る。頻繁に発生する故障メカニズムを特定するために、多くのDUTにわたって分析を行うことができる。
【0153】
機械学習ユニットまたはモジュールは、故障したDUT、またはDUTリソースを予測するために、テスト結果テーブル1100によって訓練されてよい。
【0154】
実装の選択肢
いくつかの態様を装置の文脈で説明してきたが、これらの態様は、ブロックまたは装置が方法ステップまたは方法ステップの特徴に対応する、対応する方法の説明も表していることは明らかである。同様に、方法ステップの文脈で説明された側面は、対応するブロックまたは項目または対応する装置の特徴の説明も表す。
【0155】
特定の実装要件に応じて、本発明の実施形態は、ハードウェアで実装することも、ソフトウェアで実装することも可能である。実装は、デジタル記憶媒体、たとえばフロッピー(登録商標)ディスク、DVD、CD、ROM、PROM、EPROM、EEPROMまたはフラッシュメモリであって、その上に格納された電子的に読み取り可能な制御信号を有し、それぞれの方法が実行されるようにプログラム可能なコンピュータシステムと協力する(または協力できる)ものを使用して実行することができる。
【0156】
本発明に係るいくつかの実施形態は、電子的に読み取り可能な制御信号を有するデータキャリアであって、本明細書に記載の方法の1つが実行されるように、プログラム可能なコンピュータシステムと協働することが可能であるデータキャリアを備える。
【0157】
一般に、本発明に係る実施形態は、プログラムコードを有するコンピュータプログラム製品として実装でき、そのプログラムコードは、コンピュータプログラム製品がコンピュータ上で実行されるときに、方法の1つを実行するために動作可能である。プログラムコードは、たとえば、機械読み取り可能な担体上に格納できる。
【0158】
他の実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムが、機械可読担体に格納されてなる。
【0159】
すなわち、本発明の方法の一実施形態は、したがって、コンピュータプログラムがコンピュータ上で実行される場合に、本明細書に記載の方法の1つを実行するためのプログラムコードを有するコンピュータプログラムである。
【0160】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムをその上に記録してなるデータキャリア(またはデジタル記憶媒体、またはコンピュータ読み取り可能な媒体)である。データキャリア、デジタル記憶媒体、または記録媒体は、典型的には、有形および/または非一時的である。
【0161】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを表すデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、たとえば、データ通信接続、たとえばインターネットを介して転送されるように構成されてよい。
【0162】
さらなる実施形態は、本明細書に記載された方法の1つを実行するように構成されたまたは適合された、たとえばコンピュータ、またはプログラマブルロジックデバイスなどの処理手段を含む。
【0163】
さらなる実施形態は、本明細書に記載された方法の1つを実行するためのコンピュータプログラムをその上にインストールしたコンピュータを備える。
【0164】
本発明によるさらなる実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを受信機に(たとえば、電子的または光学的に)転送するように構成された装置またはシステムである。受信機は、たとえば、コンピュータ、モバイルデバイス、メモリデバイスなどとすることができる。装置またはシステムは、たとえば、コンピュータプログラムを受信機に転送するためのファイルサーバを含んでよい。
【0165】
いくつかの実施形態では、プログラマブルロジックデバイス(たとえば、フィールドプログラマブルゲートアレイ)を使用して、本明細書に記載の方法の機能性の一部または全部を実行することが可能である。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書に記載される方法の1つを実行するためにマイクロプロセッサと協働できる。一般に、本方法は、任意のハードウェア装置によって実行されることが好ましい。
【0166】
本明細書に記載された装置は、ハードウェア装置を用いて、またはコンピュータを用いて、あるいはハードウェア装置およびコンピュータの組合せを用いて実装できる。
【0167】
本明細書に記載の装置、または本明細書に記載の装置の任意の構成要素は、少なくとも部分的にハードウェアおよび/またはソフトウェアで実装できる。
【0168】
本明細書に記載された方法は、ハードウェア装置を用いて、またはコンピュータを用いて、あるいはハードウェア装置およびコンピュータの組合せを用いて実行できる。