-
Einige
Formen von Schaltungstests liefern einem Techniker große Volumen
von Testergebnissen. Um den Techniker beim Verwalten und bei der Bezugnahme
auf diese Testergebnisse zu unterstützen, kann jedem Testergebnis
eine Testzahl zugeordnet werden. Testzahlen helfen dem Techniker,
ein Testergebnis von dem anderen zu unterscheiden, und können dem
Techniker manchmal dabei helfen, den Test zu identifizieren, der
das Ergebnis erzeugt hat. Bisweilen kann ein Techniker Testzahlen
verwenden, um bestimmte Testergebnisse zu kategorisieren oder zu
gruppieren, wie zum Beispiel durch das Zuweisen von Testzahlen der „500-Reihe" zu allen Lecktests.
Normalerweise müssen
aber derartige kategorisierte oder gruppierte Testzahlen manuell
zugewiesen werden.
-
Manchmal
können
Testzahlen automatisch erzeugt werden, wobei jedem neuen Testergebnis eine
nächste
sequentielle Testzahl zugewiesen wird. Falls jedoch der gleiche
Testsatz mehrere Male durchgeführt
wird, bestimmte Tests aber bei einigen Durchgängen übersprungen werden, da zum
Beispiel unterschiedliche Testbedingungen erfüllt werden, ist es möglich, dass
unterschiedliche Ausführungen
des gleichen Tests zu unterschiedlichen Testzahlen führen, die
den Testergebnissen dieses Tests zugeordnet sind. Außerdem ist
es manchmal möglich, dass
eine Teststeuerung (zum Beispiel ein Testverfahren, eine Testfunktion
oder eine Benutzerprozedur) eine Mehrzahl von Testergebnissen erzeugt.
Es ist erwünscht,
identifizieren zu können,
welcher „Teiltest" welches Ergebnis
erzeugt hat, da die unterschiedlichen Ergebnisse unter unterschiedlichen
Bedingungen erzeugt worden sein können. In der Vergangenheit
wiesen jedoch Testnummerierungssysteme normalerweise jedem dieser
Ergebnisse die gleiche Testzahl zu oder wiesen unterschiedliche „automatische" Testzahlen zu, die
keinen implizierten Informations wert besaßen und manchmal die Beziehungen
zwischen später
erzeugten Testergebnissen und ihren Testzahlen verzerrten.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Zuweisen
von Testzahlen und eine Testzahlmaschine mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 sowie eine Testzahlmaschine
gemäß Anspruch
12 gelöst.
-
Ein
Aspekt der Erfindung ist in einem Verfahren zum Zuweisen von Testzahlen
ausgeführt.
Gemäß dem Verfahren
werden aktuelle Testflusskontextinformationen während der Ausführung eines
Testflusses aufrechterhalten. Auf die Ausführung eines Teiltests in dem
Testfluss hin wird eine Datenbank von Testzahlen unter Verwendung
von Indexinformationen indexiert, die 1) eine Kennung des Teiltests und
2) die aktuellen Testflusskontextinformationen aufweisen. Falls
eine Testzahl, die den Indexinformationen entspricht, in der Datenbank
existiert, wird die Testzahl einem Ergebnis des Teiltests zugewiesen. Falls
keine Testzahl, die den Indexinformationen entspricht, in der Datenbank
existiert, wird dem Ergebnis des Teiltests eine neue Testzahl zugewiesen,
und die Indexinformationen und die neue Testzahl werden einander
in der Datenbank zugeordnet.
-
Ein
weiterer Aspekt der Erfindung ist in einer Testzahlmaschine ausgeführt. Die
Testzahlmaschine weist ein computerlesbares Medium und einen Programmcode
auf, der auf dem computerlesbaren Medium gespeichert ist. Der Programmcode
weist einen Code auf, um ansprechend auf eine Anforderung einer
Testzahl eine Datenbank von Testzahlen unter Verwendung von Indexinformationen
zu indexieren, die 1) eine Kennung eines Teiltests und 2) aktuelle Testflusskontextinformationen
aufweisen. Der Programmcode weist ferner einen Code auf, um auf
ein Gewinnen einer Testzahl von der Datenbank hin die Anforderung
durch ein Zurücksenden
der Testzahl zu erfüllen.
Außerdem
weist der Programmcode einen Co de auf, um daraufhin, dass beim Indexieren
der Datenbank kein Treffer gelandet wurde, eine neue Testzahl zu
erzeugen; die Anforderung durch ein Zurücksenden der neuen Testzahl
zu erfüllen;
und die Indexinformationen und die neue Testzahl einander in der
Datenbank zuzuordnen.
-
Andere
Ausführungsbeispiele
der Erfindung werden ebenfalls offenbart.
-
Veranschaulichende
und derzeit bevorzugte Ausführungsbeispiele
der Erfindung werden in den Zeichnungen veranschaulicht. Es zeigen:
-
1 ein
exemplarisches Verfahren zum Zuweisen von Testzahlen;
-
2 einen
exemplarischen Testfluss;
-
3 eine
Progression von Testflusskontextinformationen für den Testfluss von 2;
-
4 eine
Datenbank von Testzahlen, die ansprechend auf eine Ausführung des
Testflusses von 2 erzeugt werden kann;
-
5 eine
Datenbank von Testergebnissen, die ansprechend auf eine Ausführung des
Testflusses von 2 erzeugen werden kann;
-
6 eine
editierte Version des Testflusses von 2;
-
7 ein
Fortschreiten von Testflusskontextinformationen für den Testfluss
von 6;
-
8 Modifizierungen
der Datenbank von Testzahlen, die in 4 gezeigt
ist, nach der Ausführung
des Testflusses von 6; und
-
9 eine
exemplarische Testzahlmaschine zum Zurücksenden von Testzahlen ansprechend
auf eine Anforderung derselben.
-
1 veranschaulicht
ein Verfahren 100 zum Zuweisen von Testzahlen. Gemäß dem Verfahren 100 werden
aktuelle Testflusskontextinformationen während der Ausführung eines
Testflusses aufrechterhalten 102. Wie es hier definiert
ist, handelt es sich bei einem „Testfluss" um einen beliebigen Teil eines Testprogramms,
der verwendet wird, um den Typ, die Anzahl oder die Reihenfolge
von Tests zu spezifizieren, die während eines Schaltungstests ausgeführt werden
können.
Testflusskontextinformationen können
beliebige Informationen aufweisen, die beim Definieren unterstützen, welcher
Teil eines Testprogramms ausgeführt
wird. Beispielsweise können
Testflusskontextinformationen Informationen wie z.B. einen Testfolgebezeichner,
einen Torbezeichner, ein Vektoretikett, einen Vektorbezeichner oder
einen Anschlussbezeichner aufweisen. Testflusskontextinformationen
können
auch einen Schleifenbezeichner und/oder einen Schleifeniterationsbezeichner
für jede
einer Anzahl von Schleifenschichten (z.B. verschachtelte Schleifen)
aufweisen, in die während
der Ausführung
eines Testflusses eingetreten wurde. Wie derselbe hier verwendet
ist, umfasst der Ausdruck „Bezeichner" eine Zeichenfolge,
Zahl oder ein beliebiges anderes Mittel, das verwendet werden kann, um
eine Testfolge, eine Schleife oder einen anderen Testflusskontext
zu bezeichnen.
-
2 veranschaulicht
einen exemplarischen Testfluss 200, für den Testflusskontextinformationen aufrechterhalten
werden können.
Beispielsweise könnte
es sich bei dem Testfluss 200 um einen System-auf-einem-Chip-Testfluss
des Testers der Reihe 93000 SOC von Agilent handeln (hergestellt
durch Agilent Technologies, Inc., Palo Alto, California, USA). Der
Testfluss 200 weist drei Testfolgen 202, 204, 206 auf,
die mit AAA, BBB bzw. CCC bezeichnet sind. Jede dieser Testfolgen 202 bis 206 dient
dazu, eine Anzahl von Teiltests zu enthalten und/oder zu spezifizieren,
und kann eine oder mehr Teststeuerungen (z. B. Testverfahren, Testfunktionen
oder Benutzerprozeduren) umfassen. Der Testfluss 200 weist auch
zwei Schleifen 208, 210 auf, die mit Schleife_X bzw.
Schleife_Y bezeichnet sind. Beispielsweise spezifiziert jede Schleife 208, 210,
dass ihre Schleife drei Mal (d.h. 1..3) iterativ zu wiederholen
ist.
-
3 veranschaulicht
eine Progression von Testflusskontextinformationen 300,
die durch das Verfahren 100 während der Ausführung des
Testflusses 200 aufrechterhalten werden können. Es
sei darauf hingewiesen, dass der Anfangstestflusskontext 302 lediglich „AAA" oder die Bezeichnung
der ersten angetroffenen Testfolge ist. Nachdem die Testfolge AAA
ausgeführt
worden ist, wechselt der Testflusskontext zu „L1", was die erste Iteration von Schleife_X
anzeigt.
-
Auf
den Eintritt in die Testfolge BBB hin wechselt der Testflusskontext
dann zu „BBB
: L1". Es sei darauf
hingewiesen, dass zum Zweck eines einfachen Lesens die Testflusskontexte,
die in 3 gezeigt sind, die Konvention annehmen, die Bezeichnung
der aktuellen Testfolge immer am Beginn des Kontextes zu platzieren.
Dies ist jedoch sicherlich nicht für das Verfahren 100 erforderlich
und muss nicht vorgenommen werden.
-
Auf
ein erstes Eintreten in Schleife_Y hin wechselt der Testflusskontext
zu „L1:L1". Die Identitäten von
Schleife_X und Schleife_Y werden deshalb aus der Anzahl und Reihenfolge
von Schleifeniterationen festgestellt, die in dem Testflusskontext
aufrechterhalten werden. Die Identitäten der Schleifen könnten jedoch
auch mit Spezifität
ausgerufen werden, wie zum Beispiel durch ein Notieren des Kontextes
als „X1
: Y1".
-
Während der
Ausführung
eines Testflusses werden schließlich
ein oder mehr Teiltests ausgeführt.
Bei einem „Teiltest", wie derselbe hier
definiert ist, kann es sich um einen Test handeln, der mehrere Testergebnisse
erzeugt, bevorzugt handelt es sich jedoch um einen Test oder einen
Teil eines Tests, der nur ein einziges Testergebnis erzeugt.
-
Auf
die Ausführung
eines Teiltests hin fährt das
Verfahren 100 mit dem Indexieren 104 einer Datenbank
von Testzahlen unter Verwendung von Indexinformationen fort, die
1) eine Kennung des Teiltests und 2) die aktuellen Testflusskontextinformationen aufweisen.
Falls eine Testzahl, die den Indexinformationen entspricht, in der
Datenbank existiert, wird die Testzahl einem Ergebnis des Teiltests
zugewiesen 106. Falls keine Testzahl, die den Indexinformationen entspricht,
in der Datenbank existiert, wird dem Ergebnis des Teiltests eine
neue Testzahl zugewiesen 108, und die Indexinformationen und die
neue Testzahl werden einander in der Datenbank zugeordnet.
-
Es
sei nun angenommen, dass jede der Testfolgen 202-206,
die in 2 gezeigt sind, drei Teiltests aufweist, die als
Subtest1, Subtest2 und Subtest3 identifiziert sind. Es sei darauf
hingewiesen, dass zwar Teiltests mit der gleichen Bezeichnung in jeder
der Testfolgen 202-206 erscheinen können, es sich
bei diesen jedoch nicht um den gleichen Teiltest handeln muss (was
wahrscheinlich auch nicht zutrifft). Auf die Ausführung des
ersten Teiltests in dem Testfluss 200 hin werden die Indexinformationen,
die eine Kennung des Teiltests (Subtest1) und die aktuellen Testflusskontextinformationen
(AAA) aufweisen, verwendet, um eine Datenbank von Testzahlen zu
indexieren. Falls es sich hierbei um die erste Ausführung des
Testflusses 200 handelt, ist die Datenbank leer und eine
neue Testzahl (z. B. 1) wird dem Ergebnis von Subtest1 zugewiesen.
Die neue Testzahl (1) und die Indexinformationen (AAA : Subtest1) werden
auch in der Datenbank einander zugeordnet. Während der ersten Ausführung des
Testflusses 200 werden diese Schritte fortgeführt, wobei
die Verwendung jedes aufeinanderfolgenden Index zu keinem Datenbanktreffer
führt,
was bewirkt, dass eine neue Testzahl und ihre zugeordneten Indexinformationen zu
der Datenbank hinzugefügt
werden. Somit kann nach einer ersten Ausführung des Testflusses 200 die
Datenbank von Testzahlen 400, die in 4 gezeigt
ist, erzeugt worden sein. Gleichzeitig wird jede neu erzeugte Testzahl
einem Testergebnis ihres entsprechenden Teiltests zugewiesen, was
zu der Datenbank von Testergebnissen 500 führt, die
in 5 gezeigt ist. Obwohl die Testergebnisse, die
in 5 gezeigt sind, alle in Form von „pass" (erfolgreich) oder „fail" (fehlgeschlagen)
präsentiert
sind, könnten die
Testergebnisse eines tatsächlichen
Testlaufs auch oder alternativ Spannungsablesungen, Stromablesungen,
Impedanzmessungen oder andere Arten von Testergebnissen aufweisen.
-
Nach
der Ausführung
des Testflusses 200 können
die Datenbank von Testzahlen 400 und die Datenbank von
Testergebnissen 500 beide gespeichert werden. Auf diese
Weise bleiben die Testzahlen in der Datenbank 400 von Testlauf
zu Testlauf bestehen. Während
einer nachfolgenden Testflussausführung können dann Testzahlen von der
Datenbank 400 entnommen und/oder zu derselben hinzugefügt werden.
Falls es sich bei dem nachfolgend ausgeführten Testfluss um den Testfluss 200 handelt,
sind die Testzahlen, die den Ergebnissen der Teiltests des Testflusses
zugeordnet werden, die gleichen Testzahlen, die im Vorhergehenden
den Ergebnissen der Teiltests des Testflusses zugeordnet wurden.
Falls zum Beispiel Bedingungsanweisungen in einer Testfolge bewirken,
dass bestimmte ihrer Teiltests während
der zweiten Ausführung
des Testflusses 200 übersprungen
werden, werden denjenigen Teiltests, die ausgeführt werden, trotzdem die gleichen
Testzahlen zugewiesen, die denselben während der vorhergehenden Ausführung des
Testflusses 200 zugewiesen wurden. Das heißt, dass
Testzahlen nicht nur auf einer Basis der „Reihenfolge der Ausführung" zugewiesen werden,
sondern stattdessen auf einer „Kontext-"Basis zugewiesen
werden.
-
Es
sei nun die Möglichkeit
einer Editierung des Testflusses 200 betrachtet. Der Testfluss 600, der
in 6 gezeigt ist, ist eine editierte Version des Testflusses 200,
der in 2 gezeigt ist, wobei es sich bei der Editierung
um das Hinzufügen
einer neuen Testfolge 602 handelt, die mit DDD bezeichnet
ist. Die Progression der Testflusskontexte 700 für den Testfluss 600 ist
in 7 gezeigt. Während
der Ausführung
des editierten Testflusses 600 werden den gleichen Teiltests
die gleichen Testzahlen zugewiesen, und neuen Teiltests werden neue
Testzahlen zugewiesen. Die neuen Testzahlen (z. B. Testzahlen 40-48)
werden dann zu der Datenbank 400 hinzugefügt, wie
es in 8 gezeigt ist. Somit ist, selbst wenn sich zwei
Testflüsse 200, 600 voneinander
unterscheiden, der Vergleich ihrer Testergebnisse eine einfache
Aufgabe. Andere Editierungen des Testflusses 200 sind ebenfalls
möglich
(z. B. ein Verändern der
Reihenfolge der Testfolgen). Ein Bewegen einer Testfolge in eine
Schleife oder aus einer Schleife heraus verändert jedoch ihren Kontext
und bewirkt deshalb, dass die Testfolge bei nachfolgenden Ausführungen
des Testflusses 200 einem unterschiedlichen Kontext (oder Kontexten)
zugeordnet wird. Ein Testfluss, der in einem unterschiedlichen Kontext
läuft, bewirkt
deshalb, dass der Datenbank 400 neue Testzahlen hinzugefügt werden.
-
Bevorzugt
wird jedem der Teiltests in einer Testfolge eine eindeutige Teiltestbezeichnung
bereitgestellt, und es werden genug Testflusskontextinformationen
aufrechterhalten, um sicherzustellen, dass jeder Index in eine Datenbank
von Testzahlen eine eindeutige Teiltestkennung bildet. Es wird ebenfalls bevorzugt,
dass jede neue Testzahl, die in die Datenbank eingegeben wird, sich
eindeutig von allen anderen Testzahlen in der Datenbank unterscheidet.
Das Verfahren 100 kann jedoch oft nützliche Testzahlen liefern,
selbst wenn die oben genannten Steuerungen nicht aufrechterhalten
werden.
-
9 veranschaulicht
eine Testzahlmaschine 900, die beispielsweise verwendet
werden kann, um das Verfahren 100 zu implementieren. Die
Testzahlmaschine 900 ist in einem Programmcode ausgeführt, der
auf einem computerlesbaren Medium (z.B, einer Magnetplatte oder
optischen Platte, einer Fest- oder Wechselplatte oder einem Direktzugriffs- oder
Nur-Lese-Speicher (RAM oder ROM)) gespeichert ist. Bei einigen Ausführungsbeispielen
kann der Programmcode der Testzahlmaschine 900 auf verschiedene
computerlesbare Medien verteilt sein, die einem oder einer Mehrzahl
von Computersystemen zugeordnet sind.
-
Wie
es gezeigt ist, kann die Testzahlmaschine 900 einen Code 902 aufweisen,
um ansprechend auf eine Anforderung einer Testzahl eine Datenbank von
Testzahlen 904 zu indexieren unter Verwendung von Indexinformationen,
die 1) eine Kennung eines Teiltests und 2) aktuelle Testflusskontextinformationen
aufweisen. Die Testzahlmaschine 900 kann auch einen Code 906 aufweisen,
um auf ein Gewinnen einer Testzahl von der Datenbank 904 hin
die Anforderung durch ein Zurücksenden
der Testzahl zu erfüllen.
Die Testzahlmaschine 900 kann ferner einen Code 908 aufweisen,
um daraufhin, dass beim Indexieren der Datenbank 904 kein
Treffer gelandet wurde, eine neue Testzahl zu erzeugen, die Anforderung durch
ein Zurücksenden
der neuen Testzahl zu erfüllen
und die Indexinformationen und die neue Testzahl einander in der
Datenbank zuzuordnen. Wahlweise könnte die Testzahlmaschine 900 auch
einen Code 910 aufweisen, um eine Datenstruktur zum Aufrechterhalten
der aktuellen Testflusskontextinformationen einzurichten.
-
Das
Verfahren 100 und die Testzahlmaschine 900 können aktuelle
Testflusskontextinformationen auf mehrere Weisen aufrechterhalten.
Eine der Weisen besteht darin, jedes Mal einen neuen Testflusskontext
in eine Datenstruktur zu schieben (z.B. über eine „Schiebe()"-Operation), wenn in einen neuen Testflusskontext
eingetreten wird. Auf ein Verlassen eines Testflusskontextes hin
kann der Testflusskontext dann aus der Datenstruktur entnommen werden
(z.B. über
eine „Entnehme()"-Operation). Testflusskontextinformationen
können
deshalb in ähnlicher
Weise wie ein Datenstapel aufrechterhalten werden. Bei einigen Einträgen in die
Datenstruktur kann es jedoch nötig
sein, dass dieselben inkrementiert oder anderweitig gehandhabt werden.
Zum Beispiel kann es auf ein wiederholtes Eintreten in eine Schleife
hin nötig
sein, dass die Kontextinformationen für die Schleife (z.B. eine Schleifeniterationsanzahl)
inkrementiert werden.
-
Obwohl
veranschaulichende und derzeit bevorzugte Ausführungsbeispiele der Erfindung
hier im Detail beschrieben wurden, sei darauf hingewiesen, dass
die erfindungsgemäßen Konzepte
auf verschiedene Weise anderweitig ausgeführt und verwendet werden können, und
dass die angehängten
Ansprüche
so aufgefasst werden sollen, dass dieselben derartige Variationen
umfassen, es sei denn dies ist durch den Stand der Technik eingeschränkt.