-
Es
ist manchmal erforderlich, einen elektronischen Datensatz auf unterschiedliche
Weisen zu formatieren. Eine Möglichkeit,
um einen Datensatz auf unterschiedliche Weisen zu formatieren, ist
mittels einer Mehrzahl von Datenformatierern, von denen jeder konfiguriert
ist, um den Datensatz auf eine unterschiedliche Weise zu formatieren,
und von denen jeder auf den Datensatz in Reihe zugreift (d. h. wenn
einer der Datenformatierer mit einem Formatieren der Daten fertig
ist, greift dann ein anderer der Datenformatierer auf die Daten
zu). Alternativ kann jeder der Datenformatierer auf den Datensatz
parallel zugreifen. Oder der Datensatz kann repliziert werden und
jeder der Datenformatierer kann auf eine unterschiedliche Nachbildung
des Datensatzes zugreifen.
-
Wenn
eine Mehrzahl von Datenformatierern auf einen Datensatz in Reihe
zugreifen, dauert es länger,
den Datensatz zu formatieren, als wenn die Datenformatierer auf
den Datensatz parallel zugreifen. Wenn jedoch Datenformatierer auf
einen Datensatz parallel zugreifen (oder auf Nachbildungen des Datensatzes
parallel zugreifen), werden Speicher-, Speicherungs- und/oder Verarbeitungsressourcen häufig ineffizient
genutzt und kann Speicher-, Speicherungs- und/oder Verarbeitungsbegrenzungen nahe
gekommen oder können
diese erreicht werden.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Vorrichtung und
eine Vorrichtung zum Formatieren von Testergebnissen mit verbesserten
Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 und Anspruch 9
gelöst.
-
Bei
einem Ausführungsbeispiel
weist eine Vorrichtung einen Datenbestücker, eine Anzahl von Datenformatierern
und einen Benachrichtigungsverwalter auf. Der Datenbestücker ist
vorgesehen, um 1) eine Mehrzahl von Ereignissen zu empfangen, 2) eine
Mehrzahl von Datenobjekten in einem Speicher zu erzeugen, wobei
zumindest einige der Datenobjekte logischen Gruppierungen von Daten
entsprechen, die durch einige der Ereignisse impliziert sind, 3)
Daten, die einigen der Ereignisse entsprechen, in Beziehung zu einigen
der Datenobjekte zu setzen, und 4) die Daten in dem Speicher zu
speichern. Die Anzahl von Datenformatierern ist vorgesehen, um 1) auf
einige der Datenobjekte zuzugreifen und 2) die Daten wiederzuerlangen
und zu formatieren, die auf die Datenobjekte bezogen sind, wobei
die Daten ansprechend auf Benachrichtigungen, die durch den(die)
Datenformatierer empfangen werden, wiedererlangt werden. Der Benachrichtigungsverwalter ist
vorgesehen, um Angaben von Ereignissen von dem Datenbestücker zu
empfangen und um Benachrichtigungen von einigen der Ereignisse zu
einem oder mehreren der Datenformatierer zu liefern.
-
Bei
einem anderen Ausführungsbeispiel weist
eine Vorrichtung zum Formatieren von Testergebnissen ebenfalls einen
Datenbestücker,
eine Anzahl von Datenformatierern und einen Benachrichtigungsverwalter
auf. Der Datenbestücker
ist vorgesehen, um 1) eine geordnete Sequenz von Ereignissen zu
empfangen, die einer Ausführung
einer Mehrzahl von Tests an zumindest einer zu testenden Vorrichtung
bzw. Testvorrichtung (DUT) entsprechen, 2) eine Mehrzahl von Datenobjekten
zu erzeugen, wobei zumindest einige der Datenobjekte logischen Gruppierungen
von Testergebnissen entsprechen, die durch einige der Ereignisse
impliziert sind, 3) einige der Datenobjekte in Beziehung zu anderen
der Datenobjekte in einer hierarchischen Baumstruktur zu setzen,
und 4) Daten, die einigen der Ereignisse entsprechen, in der hierarchischen
Baumstruktur zu speichern. Die Daten umfassen Testergebnisse. Die Anzahl
von Datenformatierern ist vorgesehen, um Testergebnisse, die in
der hierarchischen Baumstruktur gespeichert sind, wiederzuerlangen
und zu formatieren, wobei die Testergebnisse ansprechend auf Benachrichtigungen
wiedererlangt werden, die durch den(die) Datenformatierer empfangen
werden. Der Benachrichtigungsverwalter ist vorgesehen, um Angaben
von Ereignissen von dem Datenbestücker zu empfangen und um Benachrichtigungen
von einigen der Ereignisse zu einem oder mehreren der Datenformatierer
zu liefern.
-
Andere
Ausführungsbeispiele
sind ebenfalls offenbart.
-
Darstellende
Ausführungsbeispiele
der Erfindung sind in den Zeichnungen dargestellt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
exemplarisches Verfahren zum Speichern und Formatieren von Daten;
-
2 verschiedene
Funktionseinheiten (oder Prozesse), die als Folge eines Ausführens des in 1 gezeigten
Verfahrens instantiiert oder ausgeführt werden können;
-
3 eine
Variation des in 2 gezeigten Systems, wobei das
System besonders für
eine Verwendung in einer Testumgebung geeignet ist;
-
4 exemplarische
Inhalte einer EDL-Datei, die durch das in 3 gezeigte
System verwendet wird;
-
5 eine
exemplarische hierarchische Baumstruktur zum Speichern der Inhalte
der in 4 gezeigten EDL-Datei; und
-
6 ein
Verfahren, das dem in 1 gezeigten Verfahren ähnlich ist,
aber das besonders für eine
Verwendung in einer Testumgebung angepasst ist.
-
Im
vorhinein sei erwähnt,
dass in der folgenden Beschreibung gleiche Bezugszeichen, die in
unterschiedlichen Zeichnungsfiguren erscheinen, sich auf gleiche
Elemente/Merkmale beziehen. Häufig werden
deshalb gleiche Elemente/Merkmale, die in unterschiedlichen Zeichnungsfiguren
erscheinen, nicht detailliert mit Bezug auf jede der Zeichnungsfiguren
beschrieben.
-
Um
die Art und Weise, in der Daten durch eine Mehrzahl von Datenformatierern
formatiert werden, zu verbessern, stellt 1 ein exemplarisches Verfahren 100 zum
Speichern von Daten dar, auf die durch die Mehrzahl von Datenformatierern
zugegriffen werden soll. Das Verfahren 100 läuft wie
folgt ab. Ansprechend auf eine Mehrzahl von Ereignissen wird eine
Mehrzahl von Datenobjekten bei einem Schritt 102 in einem
Speicher erzeugt. Zum Beispiel und auf dem Gebiet eines Schaltungstests
könnten
die Ereignisse Ereignisse, um das Laden oder Entladen eines neuen
Wafers zu signalisieren, Ereignisse, um den Beginn oder das Ende
eines Testens für
eine bestimmte Vorrichtung an dem Wafer zu signalisieren, und Ereignisse
aufweisen, um den Anfang und das Ende unterschiedlicher Tests und
Untertests zu signalisieren.
-
Nach
einem Erzeugen von einem oder mehreren der Datenobjekte werden Daten,
die einigen der Ereignisse entsprechen, in Beziehung zu einigen der
Datenobjekte gesetzt (bei einem Schritt 104) und in dem
Speicher gespeichert. Während
oder nach einer Erzeugung der Datenobjekte wird eine Anzahl von
Datenformatierern (d. h. einer oder mehrere Datenformatierer) mit
einem Zugriff auf die Mehrzahl von Datenobjekten und Daten in dem
Speicher versehen. Siehe Schritt 106.
-
Bei
einem Ausführungsbeispiel
kann das Verfahren 100 ferner Schritte zum Formatieren
von Daten umfassen. Diese Schritte umfassen für und über jeden einer Anzahl von
aktiven Datenformatierern ein Zugreifen auf einige der Datenobjekte
und Daten, die in dem Speicher gespeichert sind (bei einem Schritt 108),
ein Formatieren der Daten gemäß Regeln,
die durch den Datenformatierer beibehalten sind (bei einem Schritt 110),
und ein Schreiben der formatierten Daten zu einer Datei (bei einem
Schritt 112). Für
Zwecke dieser Beschreibung ist ein „aktiver" Datenformatierer einer von einer Anzahl
von „verfügbaren" Datenformatierern,
die ein Benutzer ausgewählt
hat, um einen speziellen Datensatz zu formatieren. Falls das Verfahren 100 für einen
Schaltungstest angewandt wird, kann einer oder können mehrere der Datenformatierer
Daten als eine Anzahl von Testaufzeichnungen schreiben.
-
Es
ist festzustellen, dass die Reihenfolge der in 1 gezeigten
Verfahrensschritte nicht entscheidend ist und andere Reihenfolgen
von Schritten, einschließlich
einer parallelen Ausführung
der Schritte, möglich
sind.
-
Das
in 1 gezeigte Verfahren 100 kann mittels
eines computerlesbaren Codes implementiert sein, der auf einem computerlesbaren
Medium gespeichert ist. Das computerlesbare Medium kann beispielsweise
eine beliebige Anzahl oder Mischung von festen oder entfernbaren
Medien (wie beispielsweise eine oder mehrere Festplatten, Direktzugriffsspeicher
(RAMs = Random Access Memories), Nur-Lese-Speicher (ROMs = Read-Only
Memories) oder Compact-Disks bzw. CDs) bei entweder einer einzigen
Position oder über
ein Netzwerk verteilt umfassen. Der computerlesbare Code weist typischerweise eine
Software auf, aber könnte
ebenfalls eine Firmware oder eine programmierte Schaltung aufweisen.
-
Bei
einem Ausführungsbeispiel
kann der computerlesbare Code, der das Verfahren 100 implementiert,
bewirken, dass die in 2 gezeigten Funktionseinheiten
(oder Prozesse) instantiiert oder ausgeführt werden. Die Funktionseinheiten
weisen einen Datenbestücker 200 und
eine Anzahl von Daten formatierern 202, 204, 206, 208 sowie
viele andere optionale Komponenten auf. Es ist jedoch festzustellen,
dass die Grenzen zwischen den verschiedenen Funktionseinheiten ein
bisschen amorph sind und bestimmte Funktionen, die unten beschrieben werden,
alternativ durch unterschiedliche der Funktionseinheiten durchgeführt werden
könnten
oder die Funktionen von zwei oder mehr Einheiten zu einer einzigen
Funktionseinheit (oder einem Prozess) kombiniert werden könnten.
-
Der
Datenbestücker 200 1)
empfängt
eine Mehrzahl von Ereignissen 210, 2) erzeugt eine Mehrzahl
von Datenobjekten in einem Speicher 212, 3) setzt Daten,
die einigen der Ereignisse entsprechen, in Beziehung zu einigen
der Datenobjekte und 4) speichert die Daten in dem Speicher 212.
Zumindest einige der Datenobjekte, die durch den Datenbestücker 200 erzeugt
werden, entsprechen logischen Gruppierungen von Daten, die durch
einige der Ereignisse impliziert sind, die durch den Datenbestücker 200 empfangen
werden. Für
Zwecke dieser Offenbarung umfassen „implizierte" Gruppierungen jene,
die spezifisch „ausgedrückt" sind.
-
Die
Anzahl von Datenformatierern 202, 204, 206, 208 greift
auf einige der Datenobjekte zu und erlangt dann die Daten, die auf
die Datenobjekte bezogen sind, wieder und formatiert dieselben.
-
Bei
einem Ausführungsbeispiel
kann der computerlesbare Code ferner einen Benachrichtigungsverwalter 214 instantiieren
oder ausführen.
Der Benachrichtigungsverwalter 214 kann Angaben von Ereignissen
von dem Datenbestücker 200 empfangen
und ansprechend auf diese Angaben Benachrichtigungen von einigen
der Ereignisse zu einem oder mehreren der Datenformatierer 202, 204, 206, 208 liefern.
Die Datenformatierer 202, 204, 206, 208 können dann
konfiguriert werden, um ihren Zugriff auf Datenobjekte (und eine
Wiedererlangung von Daten) ansprechend auf die Benachrichtigungen
zu veranlassen. Es ist festzustellen, dass in einigen Fällen die
Anga ben von Ereignissen, die durch den Benachrichtigungsverwalter 214 empfangen
werden, eventuell weniger oder unterschiedlichen Ereignissen entsprechen
als jene, die durch den Datenbestücker 200 empfangen
werden. Beispielsweise in dem Fall eines Schaltungstests kann der
Datenbestücker 200 Angaben
von Testeinrichtungsereignissen empfangen, die nicht als bedeutsam
genug erachtet werden, um dieselben zu dem Benachrichtigungsverwalter 214 weiterzuleiten,
und die nicht als eine Grundlage zum Erzeugen von Datenobjekten
verwendet werden. Zudem kann es Ereignisse geben, die der Datenbestücker 200 von
den Ereignissen ableitet, die er empfängt. Beispielsweise basierend
auf einer Veränderung
von Teilenummern oder anderen Vermerken könnte der Datenbestücker 200 folgern,
dass ein neues „Los" von Vorrichtungen
getestet wird, und dann eine Angabe eines derartigen Ereignisses
zu dem Benachrichtigungsverwalter 214 liefern (d. h. obwohl
der Datenbestücker 200 selbst
eventuell kein neues „Los"-Ereignis empfängt).
-
Das
Verfahren 100 und die oben offenbarte Vorrichtung können bei
vielen Anwendungen verwendet werden, wobei eine das Speichern und
Formatieren von Testergebnissen ist, wie beispielsweise Schaltungstestergebnissen.
Bei einer speziellen Anwendung können
die Testergebnisse durch einen 93000-SOC-Serie-Tester erzeugt werden, der von Agilent
Technologies, Inc. angeboten wird.
-
Der
93000-SOC-Serie-Tester (im Folgenden als der „93000-Tester" bezeichnet) ist ein SOC-Tester (SOC
= System on a Chip = System auf einem Chip), der Testergebnisse
und Ereignisse zu einer Binärdatendatei
protokolliert, die als eine EDL-Datei (EDL = Event Data Logging
= Ereignisdatenprotokollierung) bekannt ist. Die Ereignisse in dieser
EDL-Datei entsprechen
der Ausführung
einer Mehrzahl von Tests an zumindest einer Testvorrichtung (DUT)
und sind in einer geordneten Sequenz gespeichert. Die Ereignisse,
die in der EDL-Datei gespeichert sind, werden jedoch nicht zu irgendeinem
anderen Prozess „geworfen" und werden lediglich
zu der EDL-Datei protokolliert. Bei einer derartigen Anwendung kann
das in 1 gezeigte Verfahren 100 ferner die Schritte 114, 116 eines
1) syntaktischen Analysierens einer Datendatei, die einer Mehrzahl
von Ereignissen entspricht (z. B. einer EDL-Datei), um die Mehrzahl
von Ereignissen wiederzuerlangen, und dann eines 2) Weiterleitens
der Ereignisse, die aus der Datendatei wiedererlangt wurden, zu
einem Prozess (z. B. dem in 2 gezeigten
Datenbestücker 200)
aufweisen, der die Mehrzahl von Datenobjekten erzeugt und Daten in
dem Speicher 212 speichert.
-
Bei
einem Ausführungsbeispiel
wird die EDL-Datei ansprechend auf Verfahrensaufrufe syntaktisch
analysiert, die durch einen Ereignisverwalter gemacht werden. Wie
es in 3 gezeigt ist, kann der Ereignisverwalter 300 Verfahrensaufrufe
(z. B. Ereignis erlangen; Ereignisattribut erlangen) zu einer gemeinschaftlich
verwendeten Bibliothek 302 vornehmen und die gemeinschaftlich
verwendete Bibliothek 302 kann dann Ereignisse aus der
EDL-Datei 304 wiedererlangen und dieselben zu dem Ereignisverwalter 300 „werfen". Der Ereignisverwalter 300 leitet
dann die Ereignisse zu dem Datenbestücker 200 weiter.
-
Die
gemeinschaftlich verwendete Bibliothek 302 kann die Form
eines kompilierten Codes annehmen, wie beispielsweise einer Datenwiedererlangungsbibliothek
(DRL = Data Retrieval Library), der ein Verfahren oder Verfahren
ausführt,
wenn er durch den Ereignisverwalter 300 aufgerufen wird.
-
Die
Datenobjekte, die in dem Speicher 212 erzeugt werden, können in
verschiedenen Weisen aufeinander bezogen sein. Bei einem Ausführungsbeispiel
jedoch sind dieselben aufeinander in einer hierarchischen Baumstruktur
bezogen. Datenobjekte, die Tochterobjekte anderer Datenobjekte sind, können Zeiger
zu ihren Stammdatenobjekten beibehalten, aber Stammobjekte müssen keine
Liste von Zeigern zu allen ihren Tochterobjekten beibehalten. Wie
es später
in dieser Beschreibung erläutert
wird, können
diese Zeiger von Tochter- Objekten
zu ihren Stammobjekten bei dem Prozess eines Löschens von Datenobjekten helfen,
die nicht mehr benötigt werden.
-
In
dem Fall von Datenobjekten, die auf der Ausführung einer Mehrzahl von Schaltungstests
basieren, können
die logischen Gruppierungen von Daten (z. B. Gruppierungen von Testergebnissen),
die durch die Ereignisse impliziert sind, eine oder mehrere Hardwaregruppierungen,
wie beispielsweise Gruppierungen für Lose, Wafer und DUTs, und
eine oder mehrere Testgruppierungen aufweisen, wie beispielsweise
Gruppierungen von Testergebnissen, die Tests und Untertests entsprechen.
-
Daten
können
auf Datenobjekte in verschiedenen Weisen bezogen sein, einschließlich durch
1) ein direktes Speichern von Daten innerhalb der Datenobjekte oder
2) ein Speichern in Datenstrukturen, die auf die Datenobjekte bezogen
sind (z. B. durch Zeiger oder andere Einrichtungen bezogen sind).
-
In
einer EDL-Datei 304 sind Daten als Attribute von Ereignissen
gespeichert. Falls somit der Datenbestücker 200 Ereignisse
empfängt,
die aus einer EDL-Datei 304 gezogen werden, kann der Datenbestücker 200 Daten,
die Ereignissen entsprechen, durch ein Extrahieren der Daten aus
Attributen der Ereignisse extrahieren. In dem Fall eines Schaltungstests
können
die extrahierten Daten Testergebnisse aufweisen.
-
4 stellt
beispielsweise ein exemplarisches Ausführungsbeispiel der Inhalte
der EDL-Datei 304 dar, wobei einige der Daten, die protokollierten Ereignissen
zugeordnet sind, Testergebnisse aufweisen. 5 stellt
eine exemplarische hierarchische Baumstruktur 500 dar,
die der Datenbestücker 200 aus
den Inhalten der EDL-Datei 304, die in 4 gezeigt
ist, erzeugen könnte.
Die Baumstruktur 500 weist zwei Losobjekte 502, 504 (von
denen jedes einen Zei ger zu einem Stamm-„Waferobjekt" 506 beibehalten
kann) und sechs Vorrichtungsobjekte 508, 510, 512, 514, 516, 518 auf
(von denen jedes einen Zeiger zu einem jeweiligen der Losobjekte 502, 504 beibehält). Gemäß der Darstellung
sind verfügbare Testergebnisse
jedem der Vorrichtungsobjekte 508, 510, 512, 514, 516, 518 zugeordnet.
-
Zusätzlich zu
einem Speichern einzelner Datenelemente in dem Speicher 212 kann
der Datenbestücker 200 Datenstatistiken
ansammeln, wie beispielsweise Testdatenstatistiken, und dann die
Datenstatistiken mit einigen der Datenobjekte (z. B. durch ein Speichern
der Datenstatistiken innerhalb der Datenobjekte oder durch ein Speichern
der Datenstatistiken in Datenstrukturen, die auf die Datenobjekte
bezogen sind) in Beziehung setzen. Bei einem Ausführungsbeispiel
können
die Datenstatistiken durch den Datenbestücker 200 angesammelt und
dann in Beziehung zu einem Datenobjekt gesetzt werden, wenn sie
vollständig
kompiliert sind. Bei einem alternativen Ausführungsbeispiel können unvollständige Datenstatistiken
in Beziehung zu Datenobjekten gesetzt und dann aktualisiert werden. Ähnlich Datenstatistiken
kann der Datenbestücker 200 Dateninterpretationen
ansammeln, wie beispielsweise Testdateninterpolierungen, und diese
in Beziehung zu einigen der Datenobjekte setzen.
-
Die
Wahl, ob der Datenbestücker 200 oder einzelne
Datenformatierer 202, 204, 206, 208 Statistiken
kompilieren und/oder Daten interpretieren sollen, kann auf dem Nutzen
der Statistik oder Interpretation in unterschiedlichen Datenformaten
basieren. Das heißt,
falls eine Statistik oder Interpretation wahrscheinlich durch mehrere
Datenformatierer 202, 204, 206, 208 benötigt wird,
ist es häufig
am besten, die Statistik oder Interpretation einmal durch den Datenbestücker 200 kompilieren
zu lassen. Jedoch werden eventuell Statistiken und Interpretationen,
die formatspezifisch sind, am besten durch einen bestimmten der
Datenformatierer 202, 204, 206, 208 kompiliert.
-
Es
gibt viele Arten und Weisen, auf die die Datenformatierer 202, 204, 206, 208 auf
die Datenobjekte und Daten zugreifen können, die durch den Datenbestücker 200 erzeugt
werden. Bei einem Ausführungsbeispiel
können
die Datenformatierer 202, 204, 206, 208 die
Datenobjekte einfach überwachen. Dies
kann jedoch viel Speicherbandbreite erfordern und ist häufig nicht
sehr effizient. Bei einem bevorzugten Ausführungsbeispiel erzeugt der
Datenbestücker 200 Zeiger
zu den Datenobjekten, die er erzeugt, und leitet dann die Zeiger
zu dem Benachrichtigungsverwalter 214 weiter. Der Benachrichtigungsverwalter 214 verteilt
dann einige der Zeiger zu einigen der Datenformatierer 202, 204, 206, 208.
-
Es
ist festzustellen, dass der Benachrichtigungsverwalter 214 nur
einen Zeiger zu jedem Datenobjekt empfangen muss. Der Benachrichtigungsverwalter 214 kann
dann den Zeiger replizieren oder denselben zu jedem der Datenformatierer 202, 204, 206, 208 rundsenden.
Alternativ repliziert oder rundsendet der Benachrichtigungsverwalter 214 eventuell den
Zeiger nicht für/zu
jedem der Datenformatierer 202, 204, 206, 208 und
repliziert oder rundsendet eventuell lediglich den Zeiger für bestimme/zu
bestimmten Datenformatierern 202, 204, 206, 208,
die an einem Datentyp teilnehmen, der durch das Datenobjekt dargestellt
ist.
-
Typischerweise
wird dem Betrieb des Datenbestückers 200 Priorität gegenüber dem
Betrieb der Datenformatierer 202, 204, 206, 208 gegeben.
Um einen Zugriff auf den Speicher 212 weiter zu steuern, in
dem die Datenobjekte und Daten gespeichert sind, kann der Datenbestücker 200 (oder
ein anderer Prozess, der die Mehrzahl von Datenobjekten erzeugt und
Daten in dem Speicher 212 speichert) mit einem direkten
Zugriff auf die Datenobjekte und die Daten versehen werden. Die
Anzahl der Datenformatierer 202, 204, 206, 208 kann
jedoch mit einem Zugriff auf die Mehrzahl von Datenobjekten über eine
strukturierte Schnittstelle versehen werden, die den Zugriff der
Datenformatierer auf die Datenobjekte und Daten koordiniert/bestimmt.
-
Um
die Anzahl von Datenobjekten zu reduzieren, die in dem Speicher 212 beibehalten
sind, kann der Datenbestücker 200 Reservierungen
der Datenobjekte überwachen
und Datenobjekte löschen,
die nicht mehr durch irgendein Objekt oder irgendeinen Prozess reserviert
sind, der auf die Datenobjekte Bezug nimmt oder zugreift. Bei einem
Ausführungsbeispiel
wird ein Datenobjekt als reserviert betrachtet, wenn ein Zeiger
erzeugt ist, um auf das Datenobjekt Bezug zu nehmen. Der Datenbestücker 200 kann
einen derartigen Zeiger auf eine Erzeugung des Datenobjekts hin
erzeugen und der Benachrichtigungsverwalter 214 kann zusätzliche
Kopien dieses Zeigers erzeugen und zu den Datenformatierern 202, 204, 206, 208 verteilen.
Der Datenbestücker 200 kann
ferner einen Zeiger zu einem Objekt erzeugen, wenn ein Tochterobjekt
des Datenobjekts erzeugt wird. Wenn Zeiger erzeugt werden, kann
ein Zählwert der
Anzahl von Zeigern, die auf ein bestimmtes Datenobjekt Bezug nehmen,
(möglicherweise
innerhalb des Datenobjekts selbst) beibehalten werden. Die Datenformatierer 202, 204, 206, 208 und
andere Prozesse können
dann programmiert werden, um den Zeiger derselben zu einem Datenobjekt
aufzugeben, wenn dieselben mit einem Zugreifen auf das Datenobjekt
fertig sind, und der Datenbestücker 200 kann das
Datenobjekt löschen,
wenn alle derartigen Zeiger freigegeben wurden. Auf Grund dessen,
dass Tochterobjekte auf ihre Stammobjekte Bezug nehmen, kann ein
Stammobjekt erst gelöscht
werden, wenn alle seine Tochterobjekte zuerst gelöscht werden.
-
Angesichts
der obigen Lehren stellt 6 ein Verfahren 600 dar,
das in vielerlei Hinsicht dem in 1 gezeigten
Verfahren ähnlich
ist, aber das speziell für
eine Verwendung in einer Testumgebung angepasst ist. Das Verfahren 600 läuft wie
folgt ab. Ansprechend auf eine geordnete Sequenz von Ereignissen,
die einer Ausführung
einer Mehrzahl von Tests an zumindest einer DUT entsprechen, werden
bei einem Schritt 602 eine Mehrzahl von Datenobjekten erzeugt
und in einer hierarchischen Baumstruktur zueinander in Beziehung
gesetzt. Zumindest einige der Datenobjekte entsprechen lo gischen
Gruppierungen von Testergebnissen, die durch einige der Ereignisse impliziert
sind (z. B. Lose, Wafer, DUTs, Tests und/oder Untertests, um einige
zu nennen). Nach dem Erzeugen von einem oder mehreren der Datenobjekte
werden bei einem Schritt 604 Daten, die einigen der Ereignisse
entsprechen, einschließlich
Testergebnissen, in Beziehung zu einigen der Datenobjekte in der
hierarchischen Baumstruktur gesetzt. Während oder nach der Erzeugung
der Datenobjekte wird eine Anzahl von Datenformatierern mit einem Zugriff
auf die Mehrzahl von Datenobjekten und Daten in der hierarchischen
Baumstruktur versehen. Siehe Schritt 606.
-
Die
in 3 gezeigten Datenformatierer können verschiedene Formen annehmen,
einschließlich
Formen wie einem ASCII-Formatierer 202 (ASCII
= American Standard Code for Information Interchange), einem XML-Formatierer 204 (XML
= eXtensible Markup Language), einem EDL-Formatierer 206 und/oder
einem STDF-Formatierer 208 (STDF = Standard Test Definition
Format = Standardtestdefinitionsformat).
-
Obwohl
die hierarchische Baumstruktur, die durch das Verfahren 600 erzeugt
wird, nicht in dem Speicher 212 gespeichert sein muss,
sei darauf hingewiesen, dass es beinahe immer vorteilhaft ist, dies zu
tun, da dies Datenerzeugungs-/Wiedererlangungsprozesse erheblich
beschleunigt.
-
Abhängig von
ihrer Implementierung können die
hierin offenbarten Datenmodelle (d. h. bei denen Datenobjekte basierend
auf logischen Gruppierungen von Daten erzeugt werden und/oder bei
denen Datenobjekte in einer hierarchischen Baumstruktur zueinander
in Beziehung gesetzt werden) eine Anzahl von Vorteilen liefern – besonders
im Zusammenhang mit Schaltungstests. Beispielsweise durch ein Bereitstellen
eines getrennten Prozesses, um Daten in einem Speicher zu organisieren,
und ein anschließendes
Verfügbarmachen
der Daten für
eine Mehrzahl von Datenformatierern wird ein Großteil des Mehraufwands, Daten
lesen und organisieren zu müssen,
den Datenformatierern abgenommen; und durch ein Er zeugen von Datenobjekten „in einem Speicher" kann auf dieselben
schneller zugegriffen werden als auf Daten, die auf einer Platte
gespeichert sind. Dies ermöglicht,
dass der Code der Datenformatierer leichtgewichtiger sein kann,
und liefert ferner ein Standarddatenmodell, das durch neue Datenformatierer
vorteilhaft genutzt werden kann. Zudem 1) ermöglicht dasselbe einfachere Überarbeitungen und
Korrekturen (Patches) an dem Datenbestücker und einzelnen Datenformatierern,
2) ermöglicht
ein paralleles und schnelleres Codieren jeder dieser Funktionseinheiten
und 3) reduziert die Wahrscheinlichkeit eines Fehlers bei einem
Codieren jeder Funktionseinheit (z. B. weil jede leichtgewichtiger
ist und es weniger Code für
jede Einheit zu testen gibt). Ferner ermöglicht dasselbe, dass ein Tester
Daten in einer Form erzeugen kann, die in einer Laufzeittestumgebung
effizienter zu erzeugen ist, während
Testdaten Datenformatierern (und den Autoren derselben) in einer
Form verfügbar
gemacht werden, die benutzerfreundlicher ist und logisch in einzelne
Teile aufgeteilt ist.
-
Die
hierin offenbarten Datenmodelle und die Weise, auf die Daten bestückt und
aus denselben entfernt werden, helfen zudem, 1) die Geschwindigkeit,
mit der eine Mehrzahl von Datenformatierern einen gemeinsamen Datensatz
formatieren können
(d. h. dieselben können
die Daten des Datensatzes parallel formatieren), mit 2) den Begrenzungen
der realen Welt auf Speicher-, Speicherungs- und/oder Verarbeitungsressourcen
abzugleichen. Auf dem Gebiet von Schaltungstests und insbesondere
bei einem Durchführen
von parametrischen Tests unter Verwendung eines SOC-Testers werden
so viele Daten erzeugt, dass Ressourcenbegrenzungen sogar eines gut
ausgestatteten Computersystems nach einem Testen von bereits 10–20 Chips
erreicht werden können.
Durch ein Verwenden der hierin offenbarten Datenmodelle und ein
Entfernen von Datenobjekten, die nicht mehr benötigt werden, können Ressourcenbegrenzungen
jedoch typischerweise vermieden werden.