(57)【要約】【課題】テスト番号を割り当てる方法を提供する。【解決手段】テスト番号を割り当てる方法１００において、現行テストフローコンテキスト情報３００は、テストフロー２００の実行中維持される（１０２）。情報は、１つまたは複数のコンテキスト値のアレイ５０２として維持される。テストフロー内のサブテストを実行すると、リンクされたデータノード８０２〜８１４のマップ８００は、（１）サブテストの数値識別子と（２）コンテキスト値のアレイとから形成されたキー５００ａを使用して索引を付けられる（１０４）。キーに対応するデータノードがマップ内に存在し、テスト番号と関連付けられている場合、このデータノードのテスト番号がサブテストの結果に割り当てられ（１０６）、そうでない場合は、新しいテスト番号がサブテストの結果に割り当てられ（１０８）、新しいテスト番号が、マップ内でリンクされたデータノードに関連付けられる。【選択図】図１
2005321397.tif 000002
【特許請求の範囲】
【請求項１】
テスト番号を割り当てるための方法であって、
テストフローの実行中、１つまたは複数のコンテキスト値のアレイとして、現行テストフローコンテキスト情報を維持するステップと、
前記テストフロー内のサブテストを実行すると、（ｉ）該サブテストの数値識別子と（ｉｉ）前記コンテキスト値のアレイとから形成されたキーを使用して、リンクされたデータノードのマップに索引を付けるステップと、
前記キーに対応するデータノードが前記マップ内に存在し、テスト番号に関連付けられている場合、該データノードのテスト番号を前記サブテストの結果に割り当てるステップと、
そうでない場合は、新しいテスト番号を前記サブテストの結果に割り当て、該新しいテスト番号を前記マップ内でリンクされたデータノードと関連付けるステップと、
を含む、方法。
【請求項２】
前記データノードが均質な構造を有する、請求項１に記載の方法。
【請求項３】
前記均質なデータノードの各々が、ノードタイプフィールドと、データノードがリンクされた子ノード索引のアレイとを含む、請求項２に記載の方法。
【請求項４】
前記均質なデータノードの各々が、テスト番号フィールドをさらに含む、請求項３に記載の方法。
【請求項５】
前記キーが、前記サブテストの数値識別子を前記コンテキスト値のアレイに追加することにより形成される、請求項１に記載の方法。
【請求項６】
前記現行テストフローコンテキスト情報を維持するステップが、
文字列である各テストフローコンテキストに関し、該文字列を使用して該文字列の数値等価物をルックアップするステップと、
前記文字列の数値等価物が発見された場合、該数値等価物を前記コンテキスト値のアレイに追加するステップと、
前記文字列の数値等価物が発見されない場合、数値等価物を前記文字列に割り当て、該数値等価物を前記コンテキスト値のアレイに追加し、該数値等価物および文字列をルックアップテーブルに追加するステップと、
を含む、請求項１に記載の方法。
【請求項７】
前記現行テストフローコンテキスト情報を維持するステップが、コンテキストタイプのアレイを維持するステップをさらに含み、該コンテキストタイプは、前記コンテキスト値と１対１で対応している、請求項１に記載の方法。
【請求項８】
前記コンテキストタイプのアレイが、コンテキスト値のアレイとして維持される、請求項７に記載の方法。
【請求項９】
前記キーが、前記コンテキスト値のアレイ内の値の数に等しい深さ数からさらに形成され、前記方法が、前記深さ数を使用して、前記マップ内の一定数のデータノードを横断するステップをさらに含む、請求項７に記載の方法。
【請求項１０】
コンピュータ可読媒体と、
前記コンピュータ可読媒体上に記憶されたプログラムコードであって、
テスト番号に対するコールに応答して、（ｉ）サブテストの数値識別子と（ｉｉ）１つまたは複数の現行テストフローコンテキスト値のアレイとから形成されたキーを使用して、リンクされたデータノードのマップに索引を付けるためのコードと、
テスト番号に関連付けられたデータノードに索引を付けた後、該テスト番号を返すことにより前記コールに応じるためのコードと、
前記マップに索引を付けることに失敗すると、新しいテスト番号を生成し、該新しいテスト番号を返すことにより前記コールに応じ、該新しいテスト番号を前記マップ内でリンクされたデータノードと関連付けるためのコードと、
を有するプログラムコードと、
を備えている、テスト番号エンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、テスト番号の割り当てに関し、特に、リンクされたデータノードのマップを使用したテスト番号の記憶に関する。
【背景技術】
【０００２】
回路テストの形態によっては、多量のテスト結果をエンジニアにもたらす。エンジニアが、こうしたテスト結果を管理および参照するのを支援するには、各々のテスト結果をテスト番号と対応させると良い。
【０００３】
Ｒｏｂｅｒｔ  Ｓ．Ｋｏｌｍａｎ等の「テスト番号を割り当てるための方法および装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｓｓｉｇｎｉｎｇ  Ｔｅｓｔ  Ｎｕｍｂｅｒｓ）」と題する米国特許出願（本願と同日に出願された代理人整理番号第１００４０４３３−１号）は、現行のテストフローコンテキスト情報がテストフローの実行中維持される、テスト番号を割り当てるための方法を開示している。テストフロー内のサブテストが実行されると、テスト番号のデータベースは、（１）サブテストの識別子と（２）現行テストフローコンテキスト情報とを含む索引情報を使用して索引が付けられる。
【０００４】
索引情報に対応するテスト番号がデータベース内に存在する場合、このテスト番号がサブテストの結果に割り当てられる。索引情報に対応するテスト番号がデータベース内に存在しない場合、新しいテスト番号がサブテストの結果に割り当てられ、データベース内で索引情報と新しいテスト番号とが関連付けられる。
【発明の開示】
【０００５】
本発明の一態様は、テスト番号を割り当てるための方法に具現される。この方法によると、現行のテストフローコンテキスト情報は、テストフローの実行中、維持される。情報は、１つまたは複数のコンテキスト値のアレイとして維持される。テストフロー内のサブテストを実行すると、リンクされたデータノードのマップは、（１）サブテストの数値識別子と（２）コンテキスト値のアレイとから形成されたキーを使用して索引を付けられる。キーに対応するデータノードがマップ内に存在し、テスト番号と関連付けられている場合、このデータノードのテスト番号がサブテストの結果に割り当てられ、そうでない場合は、新しいテスト番号がサブテストの結果に割り当てられ、新しいテスト番号が、マップ内でリンクされたデータノードに関連付けられる。
【０００６】
本発明のもう１つの態様は、テスト番号データベースに具現される。このデータベースは、複数のリンクされたデータノードを含み、その少なくとも１つは、少なくとも１つの他のデータノードをポイントするテストスイート（test suite）ノードであり、少なくとも１つは、別のデータノードによりポイントされるテスト番号ノードである。１つまたは複数のテスト番号の各々は、前記テスト番号ノードの１つに関連付けられる。
【０００７】
本発明のもう１つの態様は、テスト番号エンジンに具現される。テスト番号エンジンは、コンピュータ可読媒体と、コンピュータ可読媒体上に記憶されたプログラムコードとを含む。プログラムコードは、テスト番号に対するコールに応じて、（１）サブテストの数値識別子と（２）１つまたは複数の現行テストフローコンテキスト値のアレイとから形成されたキーを使用して、リンクされたデータノードのマップに索引を付けるためのコードを含む。プログラムコードは、テスト番号に関連付けられたデータノードに索引を付けた後、テスト番号を返すことによりコールに応じるためのコードをさらに含む。さらに、プログラムコードは、マップに索引を付けることに失敗すると、新しいテスト番号を生成し、新しいテスト番号を返すことによりコールに応じ、新しいテスト番号をマップ内でリンクされたデータノードと関連付けるためのコードを含む。
【０００８】
本発明のその他の実施態様についても開示する。
【発明を実施するための最良の形態】
【０００９】
本発明の具体的かつ現在好ましい実施態様を図面に示す。
【００１０】
図１は、テスト番号を割り当てるための方法１００を示す。方法１００によると、現行テストフローコンテキスト情報は、テストフローの実行中、維持される１０２。この情報は、１つまたは複数のコンテキスト値のアレイとして維持される。本明細書で定義するとおり、「テストフロー」とは、回路テスト時に実行されるテストのタイプ、番号、または順序を指定するために使用されるテストプログラムの一部である。テストフローコンテキスト情報は、テストプログラムのどの部分が実行されているかを定義するのに役立つ情報を含む。一例として、テストフローコンテキスト情報は、テストスイート指示子、ポート指示子、ベクトルラベル、ベクトル指示子、またはピン指示子などの情報を含む。テストフローコンテキスト情報は、テストフローの実行時に入力された多数のループ・レイヤ（たとえば、入れ子ループ）の各々に対するループ指示子および／またはループ反復指示子も含む。本明細書で使用する場合、「指示子」という用語は、テストスイート、ループ、またはその他のテストフローコンテキストを指示するために使用できる文字列、数値、またはその他の何らかの手段を含む。「コンテキスト値」は、テストフローコンテキスト情報の成分に対する何らかの数値等価物であると定義され、一例として、コンテキスト値は整数または直接メモリ参照（direct memory reference）である。
【００１１】
テストフローの実行時、最終的には１つまたは複数のサブテストが実行される。本明細書で定義する「サブテスト」は、複数のテスト結果を生成するテストであってもよいが、好ましくは、単一のテスト結果のみを生成するテストまたはテストの一部である。
【００１２】
サブテストの実行時、方法１００は、続いて、（１）サブテストの数値識別子と（２）コンテキスト値のアレイとから形成されたキーを使用して、リンクされたデータノードのマップに索引を付ける１０４。キーに対応するデータノードがマップ内に存在し、テスト番号に関連付けられている場合、そのデータノードのテスト番号がサブテストの結果に割り当てられ１０６、そうでない場合は、新しいテスト番号がサブテストの結果に割り当てられ１０８、新しいテスト番号が、マップにリンクするデータノードに関連付けられる。
【００１３】
方法１００の例示的な応用例を図２〜図６に示す。図２は、テストフローコンテキスト情報が維持される例示的なテストフロー２００を示す。一例として、テストフロー２００は、Ａｇｉｌｅｎｔ  ９３０００  ＳＯＣシリーズテスタ（米国、カリフォルニア州、パロアルトのアジレント・テクノロジーズ・インク（Ａｇｉｌｅｎｔ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．）が製造）のシステムオンチップテストフローであることができる。テストフロー２００は、それぞれ「ｌｅａｋａｇｅ２」および「ｌｅａｋａｇｅ３」と命名された２つのテストスイート２０２、２０４を含む。テストスイート２０２、２０４の各々は、多数のサブテストを含むか、および／または指定する機能を果たし、１つまたは複数のテスト制御（たとえば、テスト方法、テスト機能、またはユーザの手順）を含む。一例として、テストスイート２０２、２０４の各々は、「Ｌｅａｋａｇｅ  ｌｏｗ」、「Ｌｅａｋａｇｅ  ｈｉｇｈ」および「Ｆｕｎｃｔｉｏｎａｌ  ｐｒｅ−ｔｅｓｔ」として識別される３つのサブテストを含む。同じ名前のサブテストは、テストスイート２０２、２０４の各々に現れるが、サブテストを同じ名前にする必要はない。さらに、異なるテストスイートにおける同じ名前のサブテストが、同じサブテストを指定する必要はない（恐らく、指定しない）。
【００１４】
テストフロー２００は、Ｌｏｏｐ２０６も含む。一例として、Ｌｏｏｐ２０６は、５回反復されることを指定する（つまり、１．．５）。
【００１５】
図３は、方法１００により、テストフロー２００の実行時に維持されるテストフローコンテキスト情報３００の進行を文字列の形式で示す。最初のテストフローコンテキスト３０２は単に「ｌｅａｋａｇｅ２」、つまり最初に遭遇するテストスイートの名前であることに注意すべきである。テストスイート「ｌｅａｋａｇｅ２」が実行された後、テストフローコンテキストは「Ｌ１」に変化し、これは、Ｌｏｏｐ２０６の最初の反復を示す。
【００１６】
テストスイート「ｌｅａｋａｇｅ３」に入ると、テストフローコンテキストは「ｌｅａｋａｇｅ３：Ｌ１」に変化する。読みやすくするために、図３に示すテストフローコンテキストは、現行テストスイートの名前を常にコンテキストの初めに配置するという規約を採用していることに注意されたい。しかし、これは、方法１００では確実に不要であり、行なう必要はない。
【００１７】
テストフローコンテキスト情報３００に含まれる文字列が、マップキーとして使用するには扱いにくい可能性があると仮定すると（つまり、一般に、数値索引ルックアップに比べて、より多くの時間および処理リソースを文字列の比較に要すると仮定すると）、方法１００は、テストフローコンテキスト情報３００をコンテキスト値のアレイとして維持することができる。したがって、方法１００で新しいテストフローコンテキスト情報を維持する必要があるごとに、情報は文字列かどうか決定され、文字列である場合、文字列の数値等価物がルックアップされる。図４は、ルックアップテーブルのデータベース４００であって、数値等価物が、タイプ［ＴｅｓｔＳｕｉｔｅＮａｍｅｓ］、［ＳｕｂｔｅｓｔＮａｍｅｓ］、［ＶｅｃｔｏｒＮａｍｅｓ］、および［ＰｉｎＮａｍｅｓ］のテストフローコンテキスト情報として提供されるデータベースを示す。例示的なテストフロー２００およびテストフローコンテキスト情報３００は、ベクトル名またはピン名を提供しないため、データベース４００は、これらのテーブルにエントリを示さない点に注意する。好ましくは、ルックアップテーブル４００は適応的であり、対応するルックアップテーブルにまだ現われていない文字列には、その後その対応するルックアップテーブルに追加される数値等価物が割り当てられる。
【００１８】
テストフローコンテキスト文字列をその数値等価物に変換した後、方法１００により形成された「キー」の１つは、図５に示すように表示される。キー５００のＩｎｄｅｘアレイ５０２は、「Ｆｕｎｃｔｉｏｎａｌ  ｐｒｅ−ｔｅｓｔ」（つまり、２）という名前のサブテストの数値識別子を、テストフローコンテキスト「ｌｅａｋａｇｅ３：Ｌ３」を表すコンテキスト値のアレイに追加することにより形成される。したがって、Ｉｎｄｅｘアレイ５０２は［１，３，２］として示される。
【００１９】
また、キー５００は、コンテキストのタイプ（つまり、［ＴｅｓｔＳｕｉｔｅ，Ｌｏｏｐ，Ｓｕｂｔｅｓｔ］のアレイ５０４であって、各々のコンテキストのタイプが、Ｉｎｄｅｘアレイ５０２のコンテキスト値に１対１で対応するアレイ５０４を含むように示される。コンテキストのタイプは、Ｉｎｄｅｘアレイ５０２内の値の数および位置から代替的に推論されるが、コンテキストのタイプのアレイ５０４は、リンクされたデータノードのマップに索引を付ける時に役立てることができる（本明細書で後に詳細に説明する）。
【００２０】
任意に、キー５００のＴｙｐｅアレイ５０４内の文字列は、テストフローコンテキストの文字列を数値等価物に変換する方法と同様に、それぞれの数値等価物に変換することができる。したがって、図６は、こうした変換を行なうためのコンテキストタイプのルックアップテーブル６００を提供する。テーブル６００は、スタンドアロンテーブルであるか、またはルックアップテーブルのデータベース４００に付随して良いことに注意する。テーブル６００を使用して、「コンテキストタイプ」値のアレイ７００を含むキー５００ａ（つまり、［０，１，２］）を導く。
【００２１】
現行テストフローコンテキスト情報の維持に関する図１の方法は、深さ数（depth number）の維持をさらに含む。こうした深さ数５０６を図５および図７のキー５００、５００ａに示す。深さ数５０６（つまり、ｎｕｍＬａｙｅｒｓ＝３）は、ＩｎｅｘおよびＴｙｐｅアレイ５０２、５０４に維持される値の数に等しく、キー５００を使用して、同じマップ内の一定数のデータノードのみを横断することを確実にするために使用することができる。深さ数５０６の目的および用途については、本明細書で後にさらに説明する。
【００２２】
図８は、キー５００ａにより索引を付けることが可能な例示的なテスト番号データベース８００を示す。一例として、データベース８００は、リンクされたデータノードのマップ（たとえば、ノード８０２、８０４、８０６、８０８、８１０、８１２、８１４）を含み、そのうちの少なくとも１つのノードは、少なくとも１つの他のデータノード８０４〜８０８をポイントするテストスイートノード８０２であり、少なくとも１つのノードは、別のデータノード８１０によりポイントされるテスト番号ノード８１２である。１つまたは複数のテスト番号８１６、８１８の各々は、前記テスト番号ノード８１２、８１４の１つに関連付けられる。
【００２３】
好ましくは、データベース８００のデータノード８０２〜８１４は、均質な構造を有する。一例として、均質な構造は、ノードタイプフィールド（Ｔｙｐｅ）８２０と、子ノード索引のアレイ（Ｉｎｄｉｃｅｓ）８２２とを含む。ノードタイプフィールド８２０は、テーブル６００に見られるコンテキストタイプの１つを指定する（図６）。子ノード索引のアレイ８２２は、親データノード８０２がリンクされた子データノード８０４〜８０８をポイントする。
【００２４】
有用な場合、各データノード（たとえば、８０２）は、どの程度多くの子ノード（たとえば、８０４〜８０８）がデータノードに割り当てられたかを指示するフィールド（ＮｕｍＡｌｌｏｃ）８２４を備える。各データノード８０２〜８１４は、テスト番号フィールド（ＴｅｓｔＮｕｍ）８２６も含む。しかし、少なくともテスト番号データノード８１２、８１４がこうしたフィールドを含む。
【００２５】
キー５００ａのＩｎｄｅｘアレイ５０２は、マップ８００の多数のノード８０２、８０８、８１０、８１２を横断するために使用される。マップが、キー５００ａを使用して既に横断されている場合、キー５００ａは最終的にテスト番号データノード８１２に索引を付ける。次に、ノード８１２に割り当てられたテスト番号８１６が検索され、テストフロー内の対応するサブテストの結果に関連付けられる。
【００２６】
キー５００ａのＴｙｐｅアレイ７００および深さ数５０６は、ある点では、ノードの正しいタイプおよび数を横断しているかどうかを確認するための整合性検査として使用される。さらに、キー５００ａが、無効ノード（たとえば、まだ生成されていないか、割り当てられていないか、または満たされていないノード）の横断を指定する場合、Ｔｙｐｅアレイ７００および深さ数５０６が、Ｉｎｄｅｘアレイ５０２と組み合わされて使用され、無効ノードを有効にする（たとえば、データノードを生成するか、割り当てるか、または満たす）。
【００２７】
図９は、テスト結果の例示的なデータベース９００を示し、ここでは、データベース内の各テスト結果は、方法１００およびテスト番号データベース８００によって得られたテスト番号と関連付けられる。図９に示すテスト結果はすべて、「ｐａｓｓ（合格）」または「ｆａｉｌ（不合格）」の観点で提示されるが、実際のテストランのテスト結果は、電圧測定値、電流測定値、インピーダンス測定値、およびその他の種類のテスト結果をさらに、または代わりに含むことができる。
【００２８】
テストフロー（たとえば、テストフロー２００（図２））の最初の実行時、すべてではないにしても、多くのデータベース８００およびルックアップテーブル４００、６００が生成される。次に、データベース８００およびテーブル４００、６００が記憶され、同じかまたは類似するテストフロー（たとえば、テストフロー２００の編集バージョン）をその後実行すると、データベース８００およびテーブル４００、６００を使用してテスト番号の生成が合理化され、新しいサブテストの識別が必要になった時に追加される。
【００２９】
好ましくは、テストスイート内のサブテストの各々に一意のサブテスト名を与え、十分なテストフローコンテキスト情報を維持して、リンクされたデータノードのマップ８００に索引を付けるために使用される各々のキーが、一意のサブテスト識別子を確実に形成するようにする。また、マップ８００に入力される各新しいテスト番号は、マップ内のその他のすべてのテスト番号とは異なることが好ましい。しかし、方法１００は、多くの場合、上記の制御が維持されない場合でも、有用なテスト番号を提供できることが多い。
【００３０】
図１０は、一例として、方法１００を実施するために使用できるテスト番号エンジン１０００を示す。テスト番号エンジン１０００は、コンピュータ可読媒体（たとえば、磁気もしくは光ディスク、固定もしくは取外し可能ディスク、またはランダムアクセスメモリもしくは読出し専用メモリ（ＲＡＭもしくはＲＯＭ））上に記憶されたプログラムコードに具現される。実施態様によっては、テスト番号エンジン１０００のプログラムコードは、１つまたは複数のコンピュータシステムに対応する様々なコンピュータ可読媒体間に分散させることができる。
【００３１】
図示のとおり、テスト番号エンジン１０００は、テスト番号に対するコールに応答して、（１）サブテストの数値識別子と（２）１つまたは複数の現行テストフローコンテキスト値のアレイとから形成されたキーを使用して、リンクされたデータノードのマップ１００４に索引を付けるコード１００２を含む。テスト番号エンジン１０００は、テスト番号に対応するデータノードに索引を付けた後、テスト番号を返すことによりコールに応じるためのコード１００６も含む。テスト番号エンジン１０００は、データベース１００４に索引を付けることに失敗すると、新しいテスト番号を生成し、新しいテスト番号を返すことによりコールに応じ、新しいテスト番号をマップ内でリンクされているデータノードと関連付ける。任意に、テスト番号エンジン１０００は、現行テストフローコンテキスト値のアレイを維持するためのコード１０１０も含むことができる。アレイを維持することの一部として、コード１０１０は、受信したテストフローコンテキスト文字列を使用して、文字列の数値等価物をルックアップする。
【００３２】
一実施態様では、方法１００およびテスト番号エンジン１０００は、新しいテストフローコンテキストが入力されるごとに、コンテキスト値をアレイ内にプッシュする（入れる）ことにより（たとえば、「Ｐｕｓｈ（）」操作を介して）、コンテキスト値のアレイを維持する。テストフローコンテキストを抜け出ると、当該テストフローコンテキストはアレイからポップされる（たとえば、「Ｐｏｐ（）」操作を介して）。したがって、テストフローコンテキスト値は、同様にデータスタックに維持される。しかし、アレイ内への入力によっては、インクリメントするか、さもなければ操作する必要がある。たとえば、ループ内への入力を繰り返すと、当該ループのコンテキスト値（たとえば、ループ反復回数）をインクリメントする必要がある場合がある。
【００３３】
本発明の具体的な実施態様および現在好ましい実施態様について、本明細書で詳細に説明したが、本発明のコンセプトは、他の方法で様々に実施および使用することができると考えるべきであり、添付の請求の範囲は、先行技術により制限されない限り、こうした変形を含むことを意図している。
【図面の簡単な説明】
【００３４】
【図１】テスト番号を割り当てるための例示的な方法を示す図である。
【図２】例示的なテストフローを示す図である。
【図３】図２のテストフローのためのテストフローコンテキスト情報の進行を示す図である。
【図４】図２のテストフローのテストフローコンテキスト情報の文字列を数値等価物に変換するためのルックアップテーブルのデータベースを示す図である。
【図５】リンクされたデータノードのマップに索引を付けるための例示的なキーを示す図である。
【図６】図５に示すキーのＴｙｐｅアレイの文字列を数値等価物に変換するためのルックアップテーブルを示す図である。
【図７】図５のキーの別法による実施態様を示す図である。
【図８】図７のキーにより索引を付けることができる例示的なテスト番号データベースを示す図である。
【図９】図２のテストフローの実行に応じて生成されるテスト結果のデータベースを示す図である。
【図１０】テスト番号に対するコールに応じてテスト番号を返すための例示的なテスト番号エンジンを示す図である。
【符号の説明】
【００３５】
２００：テストフロー
３００：テストフローコンテキスト情報
５００ａ：キー
８００：マップ
８０２〜８１４：データノード
【図１】
2005321397.tif 000003
【図２】
2005321397.tif 000004
【図３】
2005321397.tif 000005
【図４】
2005321397.tif 000006
【図５】
2005321397.tif 000007
【図６】
2005321397.tif 000008
【図７】
2005321397.tif 000009
【図８】
2005321397.tif 000010
【図９】
2005321397.tif 000011
【図１０】
2005321397.tif 000012