-
HINTERGRUND DER ERFINDUNG
-
Computerchips werden in der Regel von Herstellern vor dem Einsatz getestet, um zu überprüfen, ob die Chips ordnungsgemäß funktionieren und ob Herstellungsfehler vorhanden sind. Die Chips können z.B. vor dem Einsatz unter Verwendung von automatisierten Testgeräten (ATE) getestet werden. Einige Chips entwickeln jedoch nach ihrem Einsatz aufgrund verschiedener potenzieller Faktoren - z.B. Umweltgefahren, Alterung usw. - Fehler. Die Identifizierung von latenten Fehlern auf einem Chip, nachdem der Chip im Feld eingesetzt wurde, ist auch notwendig, um bestimmte Industriestandards zu erfüllen, wie z.B. die ISO26262 ASIL-C-Anforderung für Automobilkomponenten (z.B. ein Chip, der eine Automobilplattform unterstützt). Um diesem Bedarf gerecht zu werden, wurden eingebaute bzw. integrierte Selbsttest (BIST)-Systeme zum Durchführen von sowohl Logik-BIST (LBIST) als auch Speicher-BIST (MBIST) auf integrierten Schaltungen (ICs) entwickelt.
-
In einigen Fällen kann es sich bei diesen ICs, die mit BIST getestet werden können, zum Beispiel um einen komplexen IC handeln, wie beispielsweise einen Chip, ein System-on-a-Chip (SoC) oder eine Computerplattform, die mehrere Vorrichtungen (z.B. einen oder mehrere Chips und einen oder mehrere Prozessoren) umfasst. Als solche können konventionelle Systeme BIST auf mehreren Feldvorrichtungen eines einzelnen integrierten Systems oder einer Plattform (z.B. einer Computerplattform eines autonomen Fahrzeugs, einer Plattform für medizinische Bildgebung- oder Diagnose, einer Hochleistungs-Rechenplattform in einem Rechenzentrum usw.) durchführen, und oft wird BIST auf den mehreren Vorrichtungen unter Verwendung von Testdaten durchgeführt, die in Systemspeicher außerhalb des Chips bzw. Off-Chip-Systemspeicher (z.B. Flash-Speicher, einem eingebetteten Multi-Media-Controller (eMMC)) gespeichert sind. In einigen Fällen hat jedoch nur einer der getesteten Vorrichtungen (z.B. ein SoC) direkten Zugriff auf den Systemspeicher außerhalb des Chips, während eine andere zu testende Vorrichtung (z.B. ein Prozessor) keinen direkten Zugriff hat und daher nur Informationen mit dem Systemspeicher außerhalb des Chips durch Verwenden der Vorrichtung mit direktem Zugriff als Proxy austauschen kann. Da in diesen herkömmlichen Systemen die Vorrichtung mit indirektem Zugriff auf den Speicher außerhalb des Chips warten muss, bis die Vorrichtung mit direktem Zugriff einen Test abgeschlossen hat, um auf den Systemspeicher außerhalb des Chips zugreifen zu können, wird die Vorrichtung mit indirektem Zugriff möglicherweise nicht so häufig getestet, wie es für die Einhaltung von Industriestandards erforderlich ist, oder kann die Zeitansammlung für das Testen beider Vorrichtungen für den Zweck oder die Betriebsbedingungen der Vorrichtung unerwünscht sein.
-
Darüber hinaus können bei einigen konventionellen Systemen andere Probleme auftreten, wie z.B. ein Erfordernis, separate Kopien von Testdaten für jeden einer Anzahl zu testender Chiplets in der Vorrichtung zu speichern. In einem solchen Beispiel könnte eine Vorrichtung in mehrere logische Chiplets unterteilt sein, die mit denselben Testdaten getestet werden, aber diese konventionellen Systeme können separate Kopien der Testdaten für jedes Chiplet speichern, was zu einer großen Menge an redundanten Testdaten und erheblichem Speicherverbrauch führt, um diese zu speichern. Ferner kann in einigen konventionellen Systemen eine Vorrichtung vom Gerätehersteller mit verschiedenen SKU (Stock Keeping Unit)-Konfigurationen ausgeliefert werden, und kann jede SKU-Konfiguration unterschiedliche Testdaten verwenden. Infolgedessen können diese konventionellen Systeme ein separates Abbild von Systemspeicher außerhalb des Chips für die Testdaten jeder SKU-Konfiguration verwenden, was den Speicherverbrauch und die Anforderungen für die Bereitstellung von BIST-Funktionen weiter erhöht.
-
KURZBESCHREIBUNG DER ERFINDUNG
-
Die Erfindung bezieht sich auf ein Testsystem zur Identifizierung latenter Fehler auf Vorrichtungen - wie z.B. Chips - während deren Einsatzes im Feld durch Ausführen eines integrierten Speicher-Selbsttests (MBIST) und eines integrierten Logik-Selbsttests (LBIST). Genauer gesagt, beschreibt die Erfindung ein Header-Datenpaket, das kommenden Daten vorausgeht und das eine Reihe von Informationsfeldern enthält, die einen Testablauf steuern und eine gleichzeitige BIST-Ausführung auf separaten Chips ermöglichen. Zum Beispiel können ein oder mehrere Informationsfelder Daten enthalten, die eine erste Vorrichtung, die getestet wird, anweisen, eine Pause einzulegen, während BIST ausgeführt wird, was es einer zweiten Vorrichtung ermöglicht, parallel Daten zum Testen abzurufen. Darüber hinaus beinhaltet die Erfindung eine Speicherorganisation (z.B. in einem Systemspeicher außerhalb des Chips), die die Informationsfelder der Header-Paketstruktur nutzt und die die Testsequenzdaten (z.B. Testsequenzen oder Ergebnisse oder deren Verarbeitung) speichert.
-
Im Gegensatz zu herkömmlichen Systemen, wie den oben beschriebenen, kann die Struktur des Testsequenz-Header-Pakets die Planung und die Ausführung gleichzeitiger Tests auf mehreren Vorrichtungen ermöglichen, einschließlich einer ersten Vorrichtung mit direktem Zugriff auf gemeinsamen Off-Chip-Systemspeicher bzw. Systemspeicher außerhalb des Chips und einer zweiten Vorrichtung mit indirektem Zugriff auf den gemeinsamen Systemspeicher außerhalb des Chips. In einem anderen Aspekt der Erfindung können mehrere Felder des Header-Pakets Verknüpfungen zu Daten in dem Systemspeicher außerhalb des Chips enthalten, so dass die Daten nur einmal gespeichert zu werden brauchen und mit mehreren Instanzen von BIST auf verschiedenen Chiplets verknüpft werden können. Im Gegensatz zum Speichern eines separaten Abbilds des Systemspeichers außerhalb des Chips für jede Stock Keeping Unit (SKU) beinhaltet ein Aspekt der Erfindung ferner das Speichern einer Obermenge aller SKU-Konfigurationen in einem einzigen Abbild und das Einfügen eines SKU-Pakets vor dem Header-Paket, damit eine Vorrichtung bestimmen kann, ob ein mit dieser SKU verbundenes Header-Paket abgerufen werden soll. Diese Aspekte können die Effizienz verbessern und den mit der BIST-Ausführung verbundenen Speicherplatz reduzieren.
-
Figurenliste
-
Die vorliegenden Systeme und Verfahren für ein Testsystem zur Ausführung eines eingebauten bzw. integrierten Selbsttests (BIST) im Feld werden nachstehend unter Bezugnahme auf die beigefügten Figuren, die hier durch Bezugnahme einbezogen sind, detailliert beschrieben:
- 1 ist ein Blockdiagramm einer Computerumgebung, einschließlich einer integrierten Schaltung mit einer ersten Vorrichtung (z.B. einem SoC) und einer zweiten Vorrichtung (z.B. einem Prozessor) mit Komponenten zum Ausführen von BIST auf jeder Vorrichtung, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 2 ist ein Blockdiagramm eines In-System-Test (IST)-Hardware-Controllers in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 3A und 3B stellen ein Ablaufdiagramm dar, das einen Prozess für einen IST-Master-Sequenzer zeigt, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 4 stellt ein Ablaufdiagramm dar, das einen Prozess für einen IST-Slave-Sequenzer zeigt, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 5 stellt einen Testplan für eine Vorrichtung A und eine Vorrichtung B dar, der die Gleichzeitigkeit von Testschritten gemäß einigen Ausführungsformen der Erfindung zeigt;
- 6 stellt eine Tabelle dar, die ein logisches Abbild von Speicher-Speicherpaketen repräsentiert, die zwischen einer Speichervorrichtung, einem IST-Master-Sequenzer und einem IST-Slave-Sequenzer ausgetauscht werden können, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 7 stellt eine Tabelle dar, die ein physikalisches Abbild des Speichers repräsentiert, der die in 6 identifizierten Pakete speichert, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 8 stellt eine Tabelle dar, die ein logisches Abbild von Speicher und eine Tabelle, die ein physikalisches Abbild des Speichers repräsentiert, repräsentiert, wobei beide Pakete speichern, die mit Chiplets ausgetauscht werden, die dieselben D1-Daten verwenden, um BIST auszuführen, in Übereinstimmung mit einigen Ausführungsformen der Erfindung;
- 9 stellt ein Flussdiagramm dar, das einen Prozess für einen IST-Master-Sequenzer und einen IST-Slave-Sequenzer beim Empfang eines Stock Keeping Unit (SKU)-Datenpakets zeigt, in Übereinstimmung mit einigen Ausführungsformen der Erfindung; und
- 10 stellt eine Tabelle dar, die ein logisches Abbild von Speicher darstellt, der eine Obermenge von SKU-Konfigurationen speichert, in Übereinstimmung mit einigen Ausführungsformen der Erfindung.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Systeme und Verfahren werden in Bezug auf ein Testsystem zur Ausführung eines eingebauten Selbsttests (BIST) von integrierten Schaltungen (ICs) im Feld offenbart. Ein oder mehrere der ICs können z.B. ein komplexer IC wie beispielsweise ein Chip, ein System-on-a-Chip (SoC) oder eine Computerplattform sein, der einen oder mehrere Chips und einen oder mehrere Prozessoren (z.B. eine Grafikverarbeitungseinheit (GPU) oder eine Zentralverarbeitungseinheit (CPU)) beinhaltet. Auf einer hohen Ebene beinhaltet der In-System-Test (IST) Software und Hardware, die zusammenarbeiten, um das Testen des ICs zu ermöglichen, einschließlich des Testens eines einzelnen Chips, des Testens mehrerer Chips oder einer Kombination davon. Die Testhardware kann beispielsweise dazu programmiert sein, sie Testsequenzen abzurufen, die Testausführung zu erleichtern und/oder Testergebnisse in den Speicher zu schreiben. In einigen Ausführungsformen kann eine Testsequenz-Header-Paketstruktur, die eine Reihe bzw. einen Satz von Informationsfeldern enthält, verwendet werden, um einen Testablauf zu steuern und eine gleichzeitige BIST-Ausführung auf separaten Chips zu ermöglichen. Darüber hinaus kann die Erfindung eine Speicherorganisation (z.B. in dem Systemspeicher außerhalb des Chips) beinhalten, die die Informationsfelder der Header-Paketstruktur nutzt und die Testsequenzdaten (z.B. Testsequenzen oder -ergebnisse) speichert.
-
In einigen Ausführungsformen kann eine Testsequenz-Header-Paketstruktur dazu verwendet werden, die Planung und die Ausführung gleichzeitiger Tests auf mehreren Vorrichtungen durchzuführen, einschließlich einer ersten Vorrichtung mit direktem Zugriff auf gemeinsamen Systemspeicher außerhalb des Chips und einer zweiten Vorrichtung mit indirektem Zugriff auf den gemeinsamen Systemspeicher außerhalb des Chips - im Gegensatz zu herkömmlichen Systemen. Genauer gesagt kann, nachdem ein BIST - z.B. ein Speicher-BIST (MBIST) - auf der ersten Vorrichtung ausgelöst wurde, zumindest eines der Informationsfelder in dem Header-Paket eine WARTE-Anweisung enthalten, die einen Wartezykluszähler auf der ersten Vorrichtung auslösen kann. Als solches kann eine Pause für das nächste, für die erste Vorrichtung bestimmte Paket ausgegeben werden, bis der Zähler abgelaufen ist, und können während dieser Pause Pakete abgeholt und an die zweite Vorrichtung übermittelt werden. Dies steht im Gegensatz zu herkömmlichen Systemen, bei denen die erste Vorrichtung typischerweise Pakete an die zweite Vorrichtung blockiert, wenn die erste Vorrichtung damit beschäftigt ist, BIST auszuführen, bis BIST auf der ersten Vorrichtung abgeschlossen ist. Insoweit blockiert in Übereinstimmung mit der Erfindung die erste Vorrichtung durch Auslösen des Wartezykluszählers der ersten Vorrichtung, wenn die erste Vorrichtung mit der Ausführung von BIST beschäftigt ist, keine Pakete an die zweite Vorrichtung und ermöglicht so, dass BIST auf beiden Vorrichtungen parallel läuft. Unter Verwendung dieser Technik kann die Laufzeit des Systems für die Ausführung von BIST im Vergleich zu herkömmlichen Systemen reduziert werden, wodurch das System in Echtzeit-Einsatzszenarien (z.B. in Automobilanwendungen, medizinischen Diagnose- oder Bildgebungsanwendungen, Hochleistungs-Computeranwendungen usw.) eingesetzt werden kann.
-
In einem anderen Aspekt der Erfindung können mehrere Felder des Header-Pakets Verknüpfungen (z.B. Speicheradressen) zu Daten in dem Systemspeicher außerhalb des Chips enthalten, und kann jedes dieser verknüpften Header-Paket-Felder eine höhere Effizienz und einen geringeren Speicherbedarf im Zusammenhang mit der Ausführung von BIST ermöglichen. Beispielsweise kann das Header-Paket ein Feld „Datenpaketadresse“ enthalten, das eine Adresse eines „Datenpakets“ im Systemspeicher außerhalb des Chips speichert. In einem anderen Beispiel kann das Header-Paket ein Feld „Testergebnisadresse“ enthalten, das einen Ort in dem Systemspeicher außerhalb des Chips angibt, an den Testergebnisse geschrieben werden können, sowie ein Feld „Teststatusadresse“, das einen Ort in dem Systemspeicher außerhalb des Chips angibt, an den Teststatusdaten geschrieben werden können.
-
Jedes verknüpfte Header-Paketfeld kann auf verschiedene Weise zu einem verbesserten BIST beitragen. Zum Beispiel kann die verknüpfte Datenpaketadresse die Speicherung einer einzelnen Instanz von Testdaten in dem Systemspeicher außerhalb des Chips ermöglichen, und können verschiedene Header-Pakete für verschiedene BIST auf die einzelne Instanz zeigen. Das heißt, ein Gerät könnte in mehrere logische Chiplets unterteilt sein, die unter Verwendung derselben Testdaten getestet werden. Im Gegensatz zu konventionellen Systemen, die eine separate Kopie der Testdaten für jedes Chiplets verwenden, kann das erfindungsgemäße System als solches einen separaten Header für jedes Chiplets programmieren, und kann jeder separate Header auf dieselbe Datenpaketadresse zeigen, die die einzelne Instanz der Testdaten speichert. In dieser Hinsicht kann die Speichermenge für die Testdaten reduziert werden, da nur eine einzige Instanz der Testdaten gespeichert wird.
-
In einem anderen Aspekt der Erfindung können die Adresse der Testergebnisse und die Adresse des Teststatus die Speicherung der Ergebnisse und des Status in unmittelbarer Nähe in dem Systemspeicher außerhalb des Chips ermöglichen. Das heißt, nachdem BIST ausgeführt wurde, können Vorrichtungen heruntergefahren werden, und können beim anschließenden Systemstart die Ergebnisse und der Status aus dem Systemspeicher außerhalb des Chips (z.B. durch Software) gelesen werden, um zu bestimmen, ob eine oder mehrere Vorrichtungen, die BIST unterzogen wurden, entweder bestanden haben oder nicht. Demgegenüber können herkömmliche Systeme die Ergebnisse und den Status in derselben Reihenfolge der Ausführung speichern, was dazu führen kann, dass Pakete an Orten gespeichert werden, die nicht in unmittelbarer Nähe zueinander liegen, wodurch das Lesen der Pakete erschwert wird. In zumindest einer Ausführungsform der Erfindung können durch Spezifizieren vorbestimmter Speicherplätze, an die die Ergebnisse in dem Header-Paket zu schreiben sind, Ergebnis- und Statuspakete in dem Systemspeicher außerhalb des Chips in unmittelbarer Nähe zueinander gespeichert werden. Als solches kann ein diskretes Segment des Speichers effizienter gelesen werden, um die Ergebnisse von BIST zu überprüfen, wodurch die Laufzeit des Systems weiter reduziert wird.
-
In einigen Fällen kann eine Vorrichtung von einem Hersteller mit verschiedenen Stock Keeping Units (SKUs) bereitgestellt werden, von welchen jede unterschiedliche Sicherungskonfigurationen verwenden können und unterschiedliche Testdaten verwenden können, um BIST auszuführen. Konventionelle Ansätze können ein separates Abbild des Off-Chip-Systemspeichers für jede SKU speichern. Demgegenüber umfasst ein Aspekt der Erfindung das Speichern einer Obermenge aller SKU-Konfigurationen in einem einzigen Abbild und das Einfügen eines SKU-Pakets vor dem Header-Paket, damit eine Vorrichtung bestimmen kann, ob ein mit dieser SKU verbundenes Header-Paket abgerufen werden soll. Das SKU-Paket kann eine SKU-ID enthalten, die mit einer Sicherungskonfiguration korreliert, und als Ergebnis kann jede Vorrichtung die SKU-ID mit einer aktuellen Sicherungskonfiguration (z.B. in einem Floor Sweep) vergleichen, um zu beurteilen, ob die SKU übereinstimmt. Falls die SKU nicht übereinstimmt und/oder es nicht das letzte SKU-Paket ist, dann kann das nächste SKU-Paket gelesen werden und/oder kann sich, falls es das letzte SKU-Paket ist, die Vorrichtung abschalten. Falls die SKU übereinstimmt, dann kann das nächste Header-Paket gelesen werden, um mit dem Testen fortzufahren, wie oben beschrieben wurde. Durch Programmieren eines SKU-Pakets in den Paketstrom stellt die Erfindung einen Mechanismus bereit zur Auswahl eines bestimmten Header-Pakets und verknüpfter Testdaten auf der Grundlage, ob die SKU-Konfiguration übereinstimmt. Darüber hinaus stellt die Programmierung eines SKU-Pakets in den Paketstrom einen Mechanismus bereit, durch welchen SKU-spezifische Testdaten aus einem einzigen Abbild des Systemspeichers abgerufen werden können. Ferner können die durch Verweis auf eine einzige Kopie der Testdaten gewonnenen Effizienzen in dem Kontext mehrerer SKUs, die BIST unter Verwendung derselben Testdaten ausführen, realisiert werden.
-
Mit Bezug auf 1 veranschaulicht 1 ein Blockdiagramm einer Ausführungsform einer integrierten Schaltung (IC) 100. Der IC 100 kann eine funktionelle Computerplattform mit einer ersten Vorrichtung und einer zweiten Vorrichtung sein. In 1 ist die erste Vorrichtung als „Vorrichtung A“ 110 (z.B. ein System auf einem Chip (SoC)) und die zweite Vorrichtung als „Vorrichtung B“ 120 (z.B. Vorrichtung B 120) bezeichnet. In anderen Aspekten können die Vorrichtung A 110 und die Vorrichtung B 120 jedoch verschiedene andere oder alternative Typen von ICs oder Chips enthalten. Sowohl die Vorrichtung A 110 als auch die Vorrichtung B 120 enthalten entsprechende Komponenten zur Ausführung von BIST (z.B. einen IST-Hardware-Controller 112 und einen IST-Hardware-Controller 122) und sind entweder direkt oder indirekt mit Plattformkomponenten 130 gekoppelt. Für ein nicht beschränkendes Beispiel ist in 1 die Vorrichtung A 110 direkt mit den Plattformkomponenten 130 verbunden, und ist die Vorrichtung B 120 indirekt über die Vorrichtung A 110 mit den Plattformkomponenten 130 verbunden (z.B. über eine Verbindung (z.B. PCIe-Verbindung) 142 zwischen einer Chip-Schnittstelle 119 der Vorrichtung A und einer Chip-Schnittstelle 129 der Vorrichtung B).
-
Der IC 100 enthält auch verschiedene Plattformkomponenten, die mit zumindest einem der IST-Hardware-Controller während des IST des IC 100 interagieren. Beispiele für Plattformkomponenten beinhalten, ohne darauf beschränkt zu sein: Systemspeicher 131 (z.B. Flash-Speicher, Speicher eines eingebetteten Multi-Media-Controllers (eMMC) bzw. eMMC-Speicher usw.); einen Leistungsverwaltungs-IC bzw. Power Management-IC (PMIC) 133; einen Mikrocontroller 135; einen Wärmesensor 137; und einen Wärmesensor 139. Diese verschiedenen Plattformkomponenten können hierin gemeinsam als Plattformkomponenten 130 bezeichnet werden. Verbindungen zwischen den Komponenten des IC 100 können über jedes geeignete Mittel erfolgen. Der IC 100 kann Teil eines funktionellen Systems sein, dessen Produktion abgeschlossen ist und das im Feld eingesetzt worden ist (oder bereit ist, eingesetzt zu werden). Beispielhafte funktionelle Systeme können sein: eingesetzte autonome Fahrzeuge, Flugzeuge, Drohnen, Wasserfahrzeuge, Baumaschinen und/oder andere Fahrzeugtypen; medizinische Bildgebungssysteme; medizinische Diagnosesysteme; und Hochleistungs-Computersysteme. Die Einsatzsysteme sind jedoch nicht auf diese Beispiele beschränkt, und jede Anwendung mit integrierten Chips (z.B., wo latente, permanente, transiente oder andere Fehlertypen im Einsatz entstehen können) kann für die Aspekte der Erfindung geeignet sein.
-
Nachdem der IC 100 allgemeiner beschrieben wurde, werden nun einige der spezifischen Komponenten der Vorrichtung A 110 und der Vorrichtung B 120 genauer beschrieben. Die Vorrichtung A 110 beinhaltet einen IST-Hardware-Controller 112, einen JTAG-Controller 116, einen Abtast-Kompressions-Controller 118 und eine Chip-Schnittstelle 119. In ähnlicher Weise beinhaltet die Vorrichtung B 120 einen IST-Hardware-Controller 122, einen JTAG-Controller 126, einen Abtast-Kompressions-Controller 128 und eine Chip-Schnittstelle 129. Die Komponenten der Vorrichtung A 110 und der Vorrichtung B 120 sind nur beispielhaft, und diese Vorrichtungen können zusätzliche und/oder alternative Komponenten enthalten, die in 1 nicht dargestellt sind - wie z.B. Komponenten, die in einem Chip oder Chiplet (z.B. einem SoC oder einem Prozessor) enthalten sein können. Beispielsweise kann die Vorrichtung A 110 einen Betriebscontroller für ein SoC beinhalten, der sich von dem dedizierten IST-Hardware-Controller 112 unterscheiden kann. Andere Komponenten können Eingangs-/Ausgangs-Kontakte und Steuerschaltungen, ein MBIST-Netzwerk, ein Abtast-Test-Netzwerk, einen Boot-Prozessor und/oder funktionelle Logik beinhalten.
-
Der IST-Hardware-Controller 112 kann Logikschaltungen beinhalten, die den IST für die Vorrichtung A 110 und/oder Kommunikationsschnittstellen (siehe z.B. 2) steuern, die während des IST mit den Plattformkomponenten 130, dem JTAG-Controller 116, dem Abtast-Kompressions-Controller 118 und der Chip-Schnittstelle 119 kommunizieren. Der IST-Hardware-Controller 112 kann vorteilhaft den IST eines Chips in einem funktionellen System ermöglichen. Zum Beispiel kann der IST-Hardware-Controller 112 einen IST-Trigger bzw. -Auslöser (z.B. einen Software-Trigger bzw. Software-Auslöser) empfangen, um den IST zu initiieren. In einigen Ausführungsformen kann der IST-Trigger von dem Mikrocontroller 135 während eines Boot-Prozesses (z.B. eines Power-up- oder Power-down-Prozesses) für die Vorrichtung A 110 bereitgestellt oder erzeugt werden.
-
Nach Empfangen des IST-Triggers kann der IST-Hardware-Controller 112 Testmuster und andere Testdaten aus dem Speicher 131 abrufen und die Testmuster an den JTAG-Controller 116 und den Abtast-Kompressions-Controller 118 zur Durchführung des IST übertragen. Als solcher kann der IST-Hardware-Controller 112 dazu konfiguriert sein, sowohl mit dem JTAG-Controller 116 als auch mit dem Abtast-Kompressions-Controller 118 zu interagieren, um durch Anwenden von Testmustern auf das MBIST-Netzwerk und das Abtast-Test-Netzwerk der Vorrichtung A 110 einen IST zu initiieren.
-
Der JTAG-Controller 116 und der Abtast-Kompressions-Controller 118 können Controller bzw. Steuereinrichtungen sein, die sich in Chips befinden, die zur Steuerung des Testens von MBIST-Netzwerken und Abtast-Netzwerken der Chips verwendet werden. In nicht beschränkenden Ausführungsformen kann der JTAG-Controller 116 dem Standard IEEE 1500 entsprechen.
-
Die Plattformkomponenten 130 können Komponenten beinhalten, die in funktionellen Systemen enthalten sind oder verwendet werden. Die Plattformkomponenten 130 beinhalten auch zusätzliche Funktionalität, die mit IST verbunden ist, wie hierin offenbart. Zum Beispiel kann der Speicher 131 die strukturellen Testmuster, die für den IST verwendet werden, und die Testergebnisse des IST speichern. In einem solchen Beispiel kann der IST-Hardware-Controller 112 einen direkten Kommunikationspfad mit dem Speicher 131 aufweisen.
-
Der PMIC 133 kann die Energieverwaltung für das System 100 bereitstellen, und der Mikrocontroller 135 kann Betriebsabläufe des Systems 100 verwalten und/oder den Boot-Prozess für das System 100 steuern, um in den Funktionsmodus zu gelangen. Der Boot-Prozess für den funktionellen Modus kann Standard-Boot-Befehle enthalten. Darüber hinaus kann der Mikrocontroller 135 den Übergang vom Booten für den funktionellen Modus zu dem IST-Modus steuern. Als solcher kann der Mikrocontroller 135 die Vorrichtung A 110 und die Vorrichtung B 120 in den IST-Modus versetzen. Sobald die Vorrichtung A 110 eingeschaltet ist, kann der Mikrocontroller 135 den Boot-Prozess durchlaufen, in dem ein Teil des Boot-Codes, der den Boot-Prozess steuert, Testinformationen extrahiert, die zum Ausführen des IST-Modus und zum Laden von Softwareblöcken verwendet werden, die das Einrichten des Systems 100 für den IST steuern. In einigen Ausführungsformen kann die Vorrichtung A 110 einen Boot-Prozessor beinhalten, der ein Boot-ROM ausführt und die Vorrichtung A 110 zum Laufen bringt. In solchen Ausführungsformen kann der Boot-Prozessor Softwarebefehle beinhalten, die den Übergang in den IST-Modus steuern.
-
Die Vorbereitung des Systems für den IST-Modus kann die Vorbereitung aller Taktgeber und die Spannungseinstellungen der Vorrichtung A 110 für den Test beinhalten, so dass der IST mit korrekten Takteinstellungen, korrekten Spannungseinstellungen und korrekten E/A-Steuerungen ausgeführt werden kann, um die Vorrichtung A 110 von anderen Komponenten des IC 100 zu isolieren, während sie sich in dem IST-Modus befindet, und den anderen Komponenten mitzuteilen, dass die Vorrichtung A 110 in den IST-Modus eintritt. Vor dem Eintritt in den IST-Modus können die E/A-Kontakte in einen plattformfreundlichen Zustand versetzt werden, der während des IST beibehalten wird. Der PMIC 133 und die Wärmesensoren 137, 139 können ebenfalls auf IST eingestellt werden. Dementsprechend können die Wärmesensoren 137, 139 für den IST-Modus anstelle für funktionelles Verhalten verwendet werden. Der Übergang in den IST-Modus führt dazu, dass sich der Mikrocontroller 135 auf IST-Auslöser, z.B. von den Wärmesensoren 137, 139, konzentriert und andere Auslöser ignoriert, wenn er sich im IST-Modus befindet.
-
Der Wärmesensor 137 kann ein externer thermischer Sensor bzw. Wärmesensor sein, der für die Vorrichtung A 110 dediziert ist, und der Wärmesensor 139 kann ein externer thermischer Sensor bzw. Wärmesensor sein, der für die Vorrichtung B 120 dediziert ist. Für die Wärmesensoren 137, 139 können für den IST-Modus andere Auslöser eingestellt sein als für den funktionellen Modus.
-
Die Chip-Schnittstelle 119 kann für die Kommunikation zwischen dem IST-Hardware-Controller 112 der Vorrichtung A 110 und dem IST-Hardware-Controller 122 der Vorrichtung B 120 dediziert sein. In nicht beschränkenden Ausführungsformen kann die Chip-Schnittstelle 119 ein Multiplexer („Mux“) sein. Die Chip-Schnittstelle 119 kann mit dem IST-Hardware-Controller 122 über die Chip-Schnittstelle 129 kommunizieren, die auch für die IST-Kommunikation zwischen den IST-Hardware-Controllern 112, 122 dediziert sein kann. In einem Beispiel können die IST-Hardware-Controller 112, 122 eine Verbindung 142 (z.B. über eine PCle-Verbindung) zwischen den Chip-Schnittstellen 119, 129 herstellen, um Testdaten und -ergebnisse zwischen der Vorrichtung B 120 und dem Speicher 131 zu transportieren. Die Chip-Schnittstellen 119, 129 können das Multiplexen eines IST-spezifischen Datenpfads auf einen Verbindungs-Datenbus (z.B. einen PCIe-Datenbus) ermöglichen. Ein IST-spezifisches Protokoll kann dazu verwendet werden, über den Verbindungs-Datenbus zwischen den Chip-Schnittstellen 119, 129 zu kommunizieren. Als solche können die Chip-Schnittstellen 119, 129 derart gepaart sein, dass sie sich nur gegenseitig verstehen. In einigen Ausführungsformen können eine oder mehrere der Chip-Schnittstellen 119, 129 in ihren jeweiligen IST-Hardware-Controller integriert sein.
-
Der IST-Hardware-Controller 122 kann dazu konfiguriert sein, den IST für die Vorrichtung B 120 durchzuführen, und der IST-Hardware-Controller 122 kann ähnlich wie der IST-Hardware-Controller 112 funktionieren, indem er Testmuster aus dem Speicher 131 an den JTAG-Controller 126 und den Abtast-Kompressions-Controller 128 für den IST der Vorrichtung B 120 liefert. Wie der JTAG-Controller 116 und der Abtast-Kompressions-Controller 118 können auch der JTAG-Controller 126 und der Abtast-Kompressions-Controller 128 Controller bzw. Steuereinrichtungen sein, die sich innerhalb eines Prozessors, wie beispielsweise einer GPU, befinden. Wie oben erwähnt wurde, kann der IST-Hardware-Controller 122 im Gegensatz zu dem IST-Hardware-Controller 112 über die Multiplexer 119, 129 mit dem Speicher 131 kommunizieren, um Testmuster für die Vorrichtung B 120 zu empfangen und Testergebnisse zu liefern.
-
2 veranschaulicht ein Blockdiagramm einer Ausführungsform eines In-System-Test (IST)-Hardware-Controllers 200. Obwohl nicht dargestellt, können einige oder alle der in 2 dargestellten Komponenten Operationen des IST-Hardware-Controllers 200 ausführen. Zum Beispiel können der IST-Hardware-Controller 112 und der IST-Hardware-Controller 122 eine oder mehrere der Komponenten des IST-Hardware-Controllers 200 enthalten. Der IST-Hardware-Controller 200 kann sich innerhalb eines Chips eines funktionellen Computersystems bzw. Rechensystems befinden, das dazu konfiguriert ist, den IST des Chips auszuführen. Das funktionale Computersystem kann zum Beispiel eine Computerplattform sein. Der IST-Hardware-Controller 200 kann einen Prozessor 210 zur Steuerung des Betriebsablaufs des IST und Schnittstellen zur Kommunikation mit anderen Komponenten enthalten. Die Schnittstellen können eine Auslöserschnittstelle 220, eine Schnittstelle zu externen Komponenten 230, eine Testschnittstelle 240 und/oder eine Chip-Schnittstelle 250 beinhalten. Die Auslöserschnittstelle 220, die Schnittstelle für externe Komponenten 230 und/oder die Testschnittstelle 240 können Kommunikationsports enthalten, von denen Signale empfangen und gesendet werden. Wie oben in Bezug auf die Chip-Schnittstellen 119, 129 beschrieben wurde, kann die Chip-Schnittstelle 250 speziell für IST-Kommunikationen dediziert sein. In einigen Ausführungsformen kann die Chip-Schnittstelle 250 zum Kommunizieren mit Plattformkomponenten verwendet werden.
-
Der Prozessor 210 kann den IST des Chips steuern. Als solcher kann der Prozessor 210 dazu konfiguriert sein, den IST für den Chip zu initiieren, Testmuster für den IST zu erhalten, die Lieferung der Testmuster an Test-Controller des Chips zu leiten und/oder die Lieferung der Testergebnisse des IST zur Speicherung zu leiten. Der Prozessor 210 kann die Reihenfolge des Testens verschiedener Abschnitte des Chips steuern. Darüber hinaus kann der Prozessor 210 mit einem anderen IST-Hardware-Controller eines anderen Chips zusammenarbeiten, um die Tests für beide Chips zu koordinieren. In einem Aspekt der Erfindung kann der Prozessor 210 einen IST-Sequenzer 260 enthalten, um eingehende Daten zu lesen und zu leiten, und um ausgehende Daten zu leiten. Der IST-Sequenzer 260 kann entweder ein IST-Master-Sequenzer (z.B. ein IST-Master-Sequenzer 146 in 1) oder ein IST-Slave-Sequenzer (z.B. ein IST-Slave-Sequenzer 148 in 1) sein.
-
Die Auslöser-Schnittstelle 220 kann dazu konfiguriert sein, einen IST-Trigger bzw. Auslöser zu empfangen, um den IST in dem IST-Hardware-Controller 200 zu initiieren. Der IST-Trigger kann ein Software-Trigger bzw. Software-Auslöser sein, der von einer Plattformkomponente, wie z.B. einem Mikrocontroller oder einem Boot-Controller, oder einer anderen Komponente außerhalb des IST-Hardwarecontrollers 200 empfangen wird.
-
Die Plattformkomponenten-Schnittstelle 230 kann dazu konfiguriert sein, mit verschiedenen Komponenten zu kommunizieren, wie beispielsweise den Plattformkomponenten 130 von 1. Die Testschnittstelle 240 kann dazu konfiguriert sein, mit On-Chip-Test-Controllern, wie beispielsweise einem JTAG-Controller und einem Abtast-Kompressions-Controller, zu kommunizieren, um Testmuster für IST zu übertragen und Ergebnisse der Tests zu empfangen.
-
Die Chip-Schnittstelle 250 kann eine IST-Kommunikation mit einem anderen IST-Hardware-Controller durchführen. Als solche braucht die Chip-Schnittstelle 250 in einigen Anwendungen nicht für IST verwendet zu werden, sondern kann durch Multiplexen eines IST-spezifischen Datenpfads auf einen Verbindungsdatenbus (z.B. einen PCIe-Datenbus) zur Herstellung einer Verbindung (z.B. einer PCIe-Verbindung) zur Kommunikation mit dem anderen IST-Hardware-Controller verwendet werden.
-
Zu 1 zurückkehrend, können in zumindest einer Ausführungsform die Vorrichtung A 110 und die Vorrichtung B 120 Daten mit dem Speicher 131 austauschen (z.B. seriell), basierend auf der Konfiguration der Verbindung 142. Zum Beispiel kann der Speicher 131 Testdaten 144 enthalten, die Testanweisungen, Testsequenzen (z.B. zur Ausführung von BIST), Testergebnisse, Teststatus usw. enthalten können. In einigen Beispielen können Testdaten entweder von der Vorrichtung A 110 oder der Vorrichtung B 120 abgerufen werden, sind aber möglicherweise nicht gleichzeitig für die Vorrichtung A 110 und die Vorrichtung B 120 zugänglich. Wenn beispielsweise die Vorrichtung A 110 Testdaten 144 aus dem Speicher 131 abruft (oder Testdaten an den Speicher 131 übermittelt), dann kann die Vorrichtung B 120 möglicherweise nicht gleichzeitig Testdaten aus dem Speicher 131 abrufen (z.B. über die Verbindung 142). Ebenso kann die Vorrichtung A 110 nicht gleichzeitig Daten mit dem Speicher 131 austauschen, wenn die Vorrichtung B 120 Testdaten 144 aus dem Speicher 131 abruft (oder Testdaten über die Verbindung 142 an den Speicher 131 übermittelt).
-
Als solches kann das erfindungsgemäße Testsystem eine Kombination aus Hardware und Software enthalten, um ein gleichzeitiges Testen der Vorrichtung A 110 und der Vorrichtung B 120 zu ermöglichen. Genauer gesagt können die Vorrichtung A 110 und die Vorrichtung B 120 Pakete testbezogener Daten mit dem Speicher 131 austauschen (z.B. Pakete mit Testsequenzen, Testergebnissen, Teststatus usw.). Wie in 1 dargestellt ist, enthält der IST-Hardware-Controller 112 der Vorrichtung A 110 einen IST-Master-Sequenzer 146, der Pakete mit dem Speicher 131 austauschen kann. Wie ebenfalls in 1 dargestellt ist, kann der IST-Hardware-Controller 122 der Vorrichtung B 120 einen IST-Slave-Sequenzer 148 enthalten, der über den IST-Master-Sequenzer 146 auf die Testdaten 144 zugreifen kann. In zumindest einer Ausführungsform können „Master-Sequenzer“ und „Slave-Sequenzer“ die Beziehung der Sequenzer 146 und 148 beschreiben, da der IST-Slave-Sequenzer 148 über den IST-Master-Sequenzer 146 unter Verwendung der Verbindung 142 auf den Speicher 131 zugreifen kann. Im weiteren Gegensatz zu herkömmlichen Systemen kann ein Aspekt der Erfindung ein Header-Datenpaket enthalten, das anstehenden Testdaten vorausgeht und das eine Vorrichtung (z.B. den IST-Master-Sequenzer 146 oder den IST-Slave-Sequenzer 148) anweist, wie anstehende Testdaten zu verarbeiten sind.
-
Ein Header-Datenpaket kann eine Vielzahl verschiedener Datenfelder enthalten, und eine nicht beschränkende Liste beispielhafter Datenfelder ist nachstehend in Tabelle 1 bereitgestellt.
Tabelle 1: Header-Datenpaket-Informationsfelder |
Feldname | Beschreibung |
Vorrichtung A oder B (z.B., Vorrichtungs-ID) | zeigt an, ob dieses Paket für Vorrichtung A (z.B. Vorrichtung A 110) oder B (z.B. Vorrichtung B 120) ist |
Pakettyp | zeigt an, ob der Pakettyp JTAG, LBIST oder WARTEN ist |
Datenpaketadresse | zeigt auf das DATEN-Paket (z.B. im Speicher 131) |
Datenpaketgröße |
Nächste Header-Adresse | Nach der Ausführung dieses Headers und entsprechender DATEN ->ERGEBNISSE-> STATUS-Pakete wird der nächste Header aus diesem Ort geholt (z.B. aus diesem Ort im Speicher 131) |
Ist letzter Header | Zeigt an, ob dies der letzte Header ist. Falls hochpegelig, erfolgt der IST nach dem STATUS-Paket, das diesem HEADER entspricht. |
Wartezyklen | Anwendbar, falls der Pakettyp „WARTEN“ ist. Wird verwendet, um WARTE-Zyklen zwischen beliebigen Paketen einzuführen |
Adresse Testergebnisse | Testergebnisse, die zu diesem HEADER-Paket gehören, werden an diese Adresse geschrieben (z.B. an diese Adresse im Speicher 131) |
Größe Testergebnisse |
Adresse Teststatus | Das STATUS-Paket wird an diese Adresse geschrieben (z.B. an diese Adresse im Speicher 131) |
Chiplet-ID | Zeigt die Chiplet-ID(s) an. Es gibt ein Bit pro Chiplet, daher kann das gleiche DATEN-Paket an mehrere Chiplets gesendet werden, um Gleichzeitigkeit zu erreichen |
-
Jedes Informationsfeld des Header-Datenpakets kann verschiedene Arten von Informationen enthalten. Zum Beispiel können einige Informationsfelder Anweisungen an den IST-Master-Sequenzer 146 oder an den IST-Slave-Sequenzer 148 enthalten, während andere Informationsfelder Verknüpfungen zu Adressen im Speicher 131 enthalten können, an denen/die Testdaten von dem IST-Master-Sequenzer 146 oder von dem IST-Slave-Sequenzer 148 gelesen oder geschrieben werden können. Beispiele für andere Testdaten, die mit dem Header-Datenpaket verknüpft werden können, beinhalten das DATEN-Paket (z.B. das je nach Pakettyp JTAG-Befehle oder LBIST-Seed enthalten kann), das ERGEBNISSE-Paket (z.B. werden nach dem IST-Lauf die Daten aus dem ERGEBNISSE-Paket in das externe Flash-Speichermodul geschrieben) und/oder das STATUS-Paket (z.B. das z.B. anzeigt, ob der Master oder der Slave das STATUS-Paket geschrieben hat und/oder Fehlercodes enthält, wie beispielsweise darüber, ob Zeitüberschreitungen oder irgendwelche thermische Unterbrechungen aufgetreten sind).
-
Sobald ein Software-Trigger IST initiiert, können der IST-Master-Sequenzer 146 und der IST-Slave-Sequenzer 148 eine Reihe von Operationen basierend auf den empfangenen Header-Datenpaketen ausführen. Zum Beispiel zeigen 3A und 3B ein Ablaufdiagramm mit einer Reihe von Operationen des IST-Master-Sequenzers 146, und zeigt 4 ein Ablaufdiagramm mit einer Reihe von Operationen des IST-Slave-Sequenzers 146. Sowohl der IST-Master-Sequenzer 146 als auch der IST-Slave-Sequenzer 148 können mit Software programmiert sein, um die jeweiligen Betriebsabläufe in 3A, 3B und 4 auszuführen. Sobald Vorrichtung A 110 in den IST-Modus eintritt, liest der IST-Master-Sequenzer 146 das erste Header-Datenpaket aus dem Speicher 131, das dem IST-Master-Sequenzer 146 per Software bereitgestellt wird. Sobald Vorrichtung B 120 in den IST-Modus eintritt, läuft der IST-Slave-Sequenzer 148 parallel zum IST-Master-Sequenzer 146.
-
In einem Aspekt der Erfindung kann ein Testen gleichzeitig auf der Vorrichtung A 110 und auf der Vorrichtung B 120 geplant werden, und kann die Architektur kann eine gleichzeitige Testplanung in verschiedenen Konfigurationen erlauben. Bezug nehmend auf 5 ist z.B. ein beispielhafter Testplan für MBIST und LBIST auf Vorrichtung A 110 und Vorrichtung B 120 dargestellt, in dem die Zeit auf der X-Achse, von links nach rechts, von einem früheren Zeitpunkt zu einem späteren Zeitpunkt dargestellt ist. Zum Beispiel werden zu einem Zeitpunkt T1, während MBIST auf Vorrichtung A 110 ausgeführt wird, Testdaten für die Ausführung von MBIST auf Vorrichtung B abgerufen. Zu einem Zeitpunkt T2 werden, während MBIST auf Vorrichtung B ausgeführt wird, MBIST-Ergebnisse von Vorrichtung A in Flash geschrieben, usw.
-
Während 5 einen beispielhaften Testplan zeigt, einschließlich einer Reihenfolge, in der Operationen von der Vorrichtung A 110 und der Vorrichtung B 120 ausgeführt werden könnten, kann die Konfiguration der Pakete in dem Speicher 131 vor dem Abruf durch den IST-Master-Sequenzer 146 dazu beitragen, dass das gleichzeitige Testen durchgeführt werden kann. Bezug nehmend auf 6 veranschaulicht z.B. ein Diagramm eine Verschachtelung von Sequenzen in dem logischen Abbild des Speichers 131. Die in 6 dargestellten Sequenzen sind ein Beispiel für einen Aspekt der Erfindung, und in anderen Aspekten können die Verschachtelungssequenzen zusätzliche Sequenzen, alternative Sequenzen oder weniger Sequenzen beinhalten, abhängig von dem BIST.
-
Mit dem in 6 dargestellten logischen Abbild kann IST auf der Vorrichtung A 110 und der Vorrichtung B 120 parallel ablaufen bzw. ausgeführt werden. Genauer gesagt löst in SEQ-A1 die Header-Sequenz H1 (6) MBIST auf Vorrichtung A 110 aus, und zwar zeitlich bei T0 und T1 von 5. H1 könnte verschiedene in Tabelle 1 identifizierte Daten enthalten. Zum Beispiel könnte H1 eine Vorrichtungs-ID (z.B. eine Kennung bzw. einen Identifikator der Vorrichtung A 110), einen Pakettyp-Indikator (z.B. JTAG), eine Verknüpfung zu den JTAG-Testdaten im Speicher 131 (z.B. eine Adresse im Speicher 131, an der die JTAG-Testdaten gespeichert sind) und/oder eine Angabe zur Größe der JTAG-Testdaten enthalten. Mit diesem H1 kann der IST-Master-Sequenzer 146 mehrere der in 3A skizzierten Prozesse durchlaufen. Zum Beispiel kann der IST-Master-Sequenzer nacheinander die Schritte 310, 312, 314, 316, 318, 320 und 322 ausführen, während er alle mit 315, 319 und 324 verbundenen Schritte oder Operationen nicht durchführt.
-
Unter fortgesetzter Bezugnahme auf 6 löst in SEQ-A2 die Header-Sequenz H2 einen Wartezykluszähler auf Vorrichtung A 110 aus, um die MBIST-Laufzeit zu berücksichtigen, und kann H2 verschiedene in Tabelle 1 identifizierte Daten enthalten. H2 kann beispielsweise eine Vorrichtungs-ID (z.B. eine Kennung bzw. einen Identifikator der Vorrichtung A 110), einen Pakettyp-Indikator (z.B. WARTEN) und/oder eine Spezifikation einer Anzahl von Zyklen, während derer Vorrichtung A warten soll (z.B. Wartezyklen), enthalten. Mit diesem H2 kann der IST-Master-Sequencer 146 mehrere der in 3A skizzierten Prozesse durchlaufen, einschließlich 310, 312, 314, 316, 318 und 319. Während dieser Zeit können nachfolgende Pakete, die für Vorrichtung A bestimmt sind, nicht zugelassen sein, bis der Zähler abgelaufen ist; stattdessen kann eine Pause für das nächste Vorrichtung A-Paket ausgegeben werden, bis der Zähler abgelaufen ist. Falls der IST-Master-Sequenzer 146 zum Beispiel ein weiteres Paket empfängt und die Entscheidung 314 erreicht hat, könnte der IST-Master-Sequenzer 146 zu der Pause 315 übergehen, bis der Zähler nicht mehr länger aktiv war. Sobald der Wartezähler abgelaufen ist, kann der IST-Master-Sequenzer 146 zu Prozess 332 des in 3B dargestellten Ablaufs übergehen, an welchem Punkt der IST-Master-Sequenzer 146 STATUS-Daten in den Speicher 131 an eine in H2 identifizierte Adresse (z.B. „Teststatusadresse“ in Tabelle 1) schreiben kann. Außerdem kann der IST-Master-Sequenzer 146 zu 334 (3B) fortschreiten, um zu bestimmen, ob H2 das letzte Header-Datenpaket ist. H2 kann z.B. eine Angabe im Feld „Ist letzter Header“ enthalten, die repräsentiert, ob H2 der letzte Header ist. Falls die Daten in H2 anzeigen, dass H2 nicht das letzte Header-Datenpaket ist, kann der IST-Master-Sequenzer 146 zu 336 fortschreiten, um ein nächstes Header-Datenpaket abzurufen, das auch in H2 im Feld „Nächste Header-Adresse“ identifiziert sein kann (welches ebenfalls in Tabelle 1 aufgeführt ist).
-
Während des aktiven Zählers (z.B. Prozess 319 in Verbindung mit H2) werden, falls es irgendwelche Pakete gibt, die für Vorrichtung B bestimmt sind, diese weiterhin abgeholt und über die Prozesse 310, 312 und 324 an den IST-Slave-Sequenzer 148 weitergeleitet. Zum Beispiel wird, während MBIST in Vorrichtung A ausgeführt wird, die Header-Sequenz H3 von SEQ-B1 (6) abgeholt, um MBIST in Vorrichtung B auszulösen, und dies kann während T1 von 5 geschehen. H3 kann verschiedene in Tabelle 1 identifizierte Daten enthalten, einschließlich einer Vorrichtungs-ID (z.B. eine Kennung bzw. ein Identifikator der Vorrichtung B 120), ein Pakettyp-Indikator (z.B. JTAG), eine Verknüpfung zu den JTAG-Testdaten im Speicher 131 (z.B. die Adresse im Speicher 131, unter der die JTAG-Testdaten gespeichert sind) und/oder eine Angabe zur Größe der JTAG-Testdaten. Mit diesem H3 kann der IST-Master-Sequenzer 146 mehrere der in 3A skizzierten Prozesse durchlaufen. Zum Beispiel kann der IST-Master-Sequenzer 146 nacheinander die Prozesse 310, 312, 324, 326, 328 und 330 ausführen. Außerdem kann der IST-Slave-Sequenzer 148 parallel laufen, sobald der Prozess 324 ausgeführt wird und H3 auch an den IST-Slave-Sequenzer 148 weitergeleitet wurde. Zum Beispiel kann Bezug nehmend auf 4 bei Empfang von H3 von dem IST-Master-Sequenzer 146 der IST-Slave-Sequenzer 148 verschiedene Prozesse des Ablaufs durchlaufen, einschließlich 410, 412, 414, 416, 418 und 420.
-
In 6 triggert die Header-Sequenz H4 von SEQ-B2 einen Wartezykluszähler auf Vorrichtung B, um die MBIST-Laufzeit auf Vorrichtung B 120 zu berücksichtigen, und zeitlich kann dies bei T2 von 5 auftreten. H4 kann verschiedene in Tabelle 1 identifizierte Daten enthalten. Beispielsweise kann H4 eine Vorrichtungs-ID (z.B. eine Kennung bzw. einen Identifikator der Vorrichtung B 120), einen Pakettyp-Indikator (z.B. WARTEN) und/oder eine Spezifikation einer Anzahl von Zyklen, während derer Vorrichtung B warten soll (z.B. Wartezyklen), enthalten. Mit diesem H4 können der IST-Master-Sequenzer 146 und der IST-Slave-Sequenzer 148 mehrere der in 3A und 4 umrissenen Prozesse durchlaufen. Zum Beispiel kann der IST-Master-Sequenzer 146 die Prozesse 310, 312, 324 und 326 durchlaufen, und kann der IST-Slave-Sequenzer 148 die Prozesse 410, 412, 414, 416 und 417 durchlaufen. Bei 417 gibt der IST-Slave-Sequenzer 148 eine Pause für weitere Pakete aus, bis der Zähler abgelaufen ist. Sobald der Zähler abgelaufen ist, kann der IST-Slave-Sequenzer 148 zu Prozess 426 des in 4 dargestellten Ablaufs übergehen, an welchem Punkt der IST-Slave-Sequenzer 148 ein STATUS-Paket an den IST-Master-Sequenzer 146 senden kann, der es in den Speicher 131 an eine in H4 identifizierte Adresse (z.B. „Teststatusadresse“ in Tabelle 1) schreibt. Dies ist bei Prozess 342 in 3B angegeben. Sowohl der IST-Master-Sequenzer 146 als auch der IST-Slave-Sequenzer 148 können entsprechend vorgehen, abhängig davon, ob H4 das letzte Header-Datenpaket ist, basierend auf dem Feld „Ist letzter Header“ von H4.
-
Mit 6 fortfahrend werden für die Header-Sequenz H5 von SEQ-A3 dann, wenn der Wartezähler an dem IST-Master-Sequenzer 146 der primären Vorrichtung (Vorrichtung A) abgelaufen ist, MBIST-Ergebnisse von Vorrichtung A 110 gelesen und an eine in H5 identifizierte Speicheradresse geschrieben, und zeitlich geschieht dies bei T2 von 5. H5 könnte verschiedene in Tabelle 1 identifizierte Daten enthalten. Beispielsweise könnte H5 eine Vorrichtungs-ID (z.B. eine Kennung bzw. einen Identifikator der Vorrichtung A 110), einen Pakettyp-Indikator (z.B. JTAG), eine Testergebnisadresse im Speicher 131, an die Ergebnisse geschrieben werden sollen (z.B. eine Adresse im Speicher 131, an der Ergebnisse der JTAG-Testdaten gespeichert werden), und/oder eine Angabe der Größe der JTAG-Testergebnisdaten enthalten. Mit diesem H5 kann der IST-Master-Sequenzer 146 mehrere der in 3A skizzierten Prozesse durchlaufen. Zum Beispiel könnte der IST-Master-Sequenzer nacheinander die Schritte 310, 312, 314, 316, 318 und 320 von 3A ausführen. Falls dann die Datenpaketgröße Null ist, schreitet der IST-Master-Sequenzer 146 mit 337 und 338 von 3B fort. Falls der Zähler bei 314 noch nicht abgelaufen ist, kann das RESULT-Paket pausiert werden, bis der Zähler abgelaufen ist.
-
Mit den nächsten Daten in dem logischen Abbild von 6 fortfahrend, enthält SEQ-B3 die Header-Sequenz H6. Ähnlich zu H5 werden dann, wenn der Wartezähler an dem IST-Slave-Sequenzer 148 der sekundären Vorrichtung (Vorrichtung B) abgelaufen ist, MBIST-Ergebnisse von Vorrichtung B 120 gelesen und an eine in H6 identifizierte Speicheradresse geschrieben, was zeitlich bei T3 von 5 geschieht. H6 könnte verschiedene in Tabelle 1 identifizierte Daten enthalten. Beispielsweise könnte H6 eine Vorrichtungs-ID (z.B. eine Kennung bzw. einen Identifikator der Vorrichtung B 120), einen Pakettyp-Indikator (z.B. JTAG), eine Testergebnisadresse im Speicher 131, an die Ergebnisse geschrieben werden sollen (z.B. eine Adresse im Speicher 131, an der Ergebnisse der JTAG-Testdaten gespeichert werden), und/oder eine Angabe der Größe der JTAG-Testergebnisdaten enthalten. Mit diesem H6 können der IST-Master-Sequenzer 146 und der IST-Slave-Sequenzer 148 mehrere der in 3A, 3B und 4 umrissenen Prozesse durchlaufen. Zum Beispiel kann der IST-Master-Sequenzer nacheinander die Schritte 310, 312, 324, 326 und 328 von 3A ausführen. Dann, wenn die Datenpaketgröße Null ist, kann der IST-Master-Sequenzer 146 mit 339 und 340 von 3B fortfahren. Parallel dazu kann der IST-Slave-Sequenzer 148 mit 410, 412, 414, 416, 418, 422 und 424 in 4 fortfahren. Nach Prozess 424 sendet der IST-Slave-Sequenzer 148 Ergebnisse an den IST-Master-Sequenzer, der das ERGEBNISSE-Paket abruft und in den Speicher 131 schreibt, wie bei 340 von 3B angegeben.
-
Das logische Abbild von 6 enthält eine Vielzahl anderer Sequenzen, einschließlich Paketen zur Ausführung von LBIST auf der Vorrichtung A 110 und der Vorrichtung B 120. Diese Sequenzen können zwischen dem Speicher 131, der Vorrichtung A 110 und der Vorrichtung B 120 in ähnlicher Weise ausgetauscht werden, wie dies in Bezug auf SEQ-A1 bis SEQ-B3 beschrieben wurde. In dieser Hinsicht kann, während LBIST auf der Vorrichtung A 110 läuft, der Seed in die Vorrichtung B 120 verschoben werden, und wenn LBIST in der Vorrichtung B 120 läuft, können die Ergebnisse aus der Vorrichtung A 112 gelesen und in den Speicher 131 geschrieben werden. Infolgedessen können in Übereinstimmung mit der Erfindung, während eine Vorrichtung beschäftigt ist, deren eigene Pakete blockiert werden, aber werden die Pakete der anderen Vorrichtung nicht blockiert. Im Gegensatz zu herkömmlichen Testsystemen kann ein IST in beiden Vorrichtungen parallel ausgeführt werden, um die Laufzeit zu verbessern.
-
In Übereinstimmung mit einem Aspekt der Erfindung können nach der Ausführung des IST (z.B. wie durch das in Tabelle 1 aufgeführte Datenfeld „Ist letzter Header“ angezeigt) beide Vorrichtungen heruntergefahren werden. Wenn das System das nächste Mal hochfährt, können die ERGEBNISSE- und STATUS-Pakete von der Software aus dem Speicher 131 gelesen werden, um zu bestimmen, ob die Ergebnisse des vorherigen IST ein PASS oder ein FAIL sind.
-
Das IST-Abbild in dem Speicher 131 kann sowohl Testdaten als auch Speicherplatz enthalten, in welchen Hardware Ergebnisse schreiben kann. Weil die DATEN-Pakete und die ERGEBNISSE-Pakete über die Header-Datenpakete in Form einer verknüpften Liste kommuniziert werden können, muss die physische Position der Pakete in dem Flash-Speichermodul nicht in der gleichen Reihenfolge wie die Ausführung sein. Mit anderen Worten kann das verschachtelte logische Abbild wie in 6 dargestellt organisiert sein, und kann das physische Abbild anders organisiert sein als das logische Abbild. 7 stellt ein Schema einer beispielhaften Organisation eines verschachtelten physischen Abbilds bereit. Als solches können in Übereinstimmung mit einem Aspekt der Erfindung in dem physischen Abbild alle RESULT- und STATUS-Pakete in einem Speicherabschnitt 712 organisiert sein (z.B. von R1 bis S10). In diesem Fall verweist jeder Header auf das entsprechende DATA-, RESULT- und STATUS-Paket (wie durch die geraden Pfeile angedeutet), und verweist auch auf das nächste Header-Paket - wie durch die gebogenen Pfeile angedeutet (z.B. durch Identifizieren einer Position des nächsten Header-Pakets in dem Feld „Nächste Header-Adresse“, das in Tabelle 1 identifiziert ist). Da alle RESULT- und STATUS-Pakete nebeneinander liegen, kann im Gegensatz zu konventionellen Systemen ein Teil des Speichers 131 verglichen werden, um ein PASS oder FAIL zu bestimmen, welches weniger kompliziert und schneller sein kann als das Lesen derselben aus verschiedenen Orten.
-
Die Vorrichtung A 110 und die Vorrichtung B 120 können einen oder mehrere Chiplets enthalten, die unter Verwendung derselben Testdaten getestet werden. Manchmal können ein oder mehrere Chiplets parallel getestet werden. In anderen Fällen kann der Test jedoch in Tests für kleinere Teilmengen von Chiplets aufgeteilt werden, wie beispielsweise dann, wenn eine Stromversorgung nicht in der Lage ist, das für den parallelen Test größerer Mengen von Chiplets erforderliche Leistungsbudget zu erfüllen. Im Gegensatz zu herkömmlichen Systemen, die für jedes Chiplets oder für jede Aufteilung eine separate Kopie der Testdaten speichern und abrufen können, verwenden einige Ausführungsformen mehrere Header-Pakete, die auf dasselbe DATEN-Paket über mehrere Chiplets hinweg verweisen. Auch hier wird diese Verknüpfung unter Verwendung der Struktur des Header-Pakets mit den in Tabelle 1 identifizierten Datenfeldern ermöglicht, und zeigt ein „Chiplet-ID“-Feld in dem HEADER-Paket an, in welchem/welchen Chiplet(s) der IST ausgeführt wird. Infolgedessen werden kleinere Mengen an Testdaten in dem Speicher 131 gespeichert, welches die Speichernutzung reduzieren kann.
-
Nun auf 8 Bezug nehmend veranschaulicht ein logisches Abbild 810 des aufgeteilten IST-Flash-Abbilds den logischen Ablauf von IST, der in drei Aufteilungen bzw. Splits durch die Header-Pakete H1, H2 und H3 ausgeführt wird. Alle Aufteilungen können dasselbe Datenpaket (z.B. D1) verwenden, und im Gegensatz zu herkömmlichen Systemen, bei denen für jedes Chiplet mehrere Kopien des Datenpakets gespeichert werden können, können Ausführungsformen der Erfindung die Größe des Speichers 131, der zum Speichern des Datenpakets verwendet wird, durch Verlinkung bzw. Verknüpfung zu einer einzigen Kopie des Datenpakets reduzieren. Beispielsweise ist, wie durch das physische Abbild 812 dargestellt wird, jedes Header-Paket so strukturiert, dass es sowohl einen Zeiger oder eine Verknüpfung für das DATEN-Paket als auch einen Zeiger oder eine Verknüpfung zu dem nächsten Header-Paket enthält. Als solches kann das Abbild als ein Fehler! Verweisquelle konnte nicht gefunden werden, organisiert sein, um den Ablauf in dem Fehler! Verweisquelle konnte nicht gefunden werden, zu erzielen. Auf diese Weise kann das DATEN-Paket an einem Ort gespeichert werden, aber können mehrere Header-Pakete darauf verweisen - wodurch der (Flash-)Speicherbedarf reduziert wird.
-
Das Chiplet-ID-Feld kann auf verschiedene Weise verwendet werden. In einem Aspekt der Erfindung enthält die Chiplet-ID ein Bit pro Chiplet (wie in Tabelle 1 angegeben). Falls eine Vorrichtung beispielsweise drei Chiplets enthält (z.B. g0, g1 und g2), dann können die drei niedrigstwertigen Bits (LSB) des Chiplet-ID-Felds mit diesen drei Chiplets übereinstimmen (alle anderen Bits werden nicht verwendet). Die Header-Pakete können H1 mit der Chiplet-ID „001“ zum Zielen auf Chip g0, H2 mit der Chiplet-ID „010“ zum Zielen auf Chip g1 und H3 mit der Chiplet-ID „100“ zum Zielen auf g2 enthalten. In einem Split-Image-Modus kann jedoch ein Abbild verwendet werden, indem das üblicherweise verwendete DATEN-Paket an alle drei Chiplets gesendet wird. Als solches beinhaltet ein Aspekt der Erfindung das Setzen der Chiplet-ID auf „111“.
-
In einem anderen Aspekt der Erfindung können die Vorrichtung A
110 und/oder die Vorrichtung B
120 unterschiedliche SKU-Konfigurationen enthalten (z.B. bereitgestellt von dem Hersteller abhängig von Kundenanforderungen). Unterschiedliche SKU-Konfigurationen können unterschiedliche Testdaten benötigen, und herkömmliche Testsysteme bieten möglicherweise keinen Mechanismus, der in der Lage ist, ein einziges externes Abbild (z.B. von einer Flash-Quelle) zu verwenden, um unterschiedlichen SKU-Konfigurationen gerecht zu werden. Demgegenüber können in zumindest einer Ausführungsform der Erfindung die gespeicherten Testdaten eine Obermenge aller SKU-Konfigurationen in dem Flash-Speichermodul enthalten, und können die richtigen Testdaten für eine SKU-Kombination der Vorrichtungen A und B ausgewählt werden (z.B. unter Verwendung von Hardware). Zum Beispiel kann in einigen Ausführungsformen ein SKU-Paket vor dem ersten Header-Paket kommuniziert werden, und kann das SKU-Paket Informationen unter seinen Datenfeldern enthalten, die verwendbar sind, um zu bestimmen, ob die eine oder die mehreren Vorrichtungen gegenwärtig in Übereinstimmung mit der SKU konfiguriert sind. Das heißt, es kann ein SKU-Paket für jede SKU-Kombination der Vorrichtung A
110 und der Vorrichtung B
120 geben. Jedes SKU-Paket kann eine SKU-ID für beide der Vorrichtungen enthalten und die SKU-ID kann durch einen Satz von Schmelzsicherungen bzw. Fuses auf dem jeweiligen Chip bestimmt werden. Dies sind einige Beispiele für die Informationsfelder und Daten, die in einem SKU-Paket enthalten sein könnten, und Tabelle 2 (unten) stellt weitere Beispiele bereit.
Tabelle 2: SKU-Paket-Informationsfelder |
Feldname | Beschreibung |
Vorrichtung A SKU-ID | Zeigt eine von Vorrichtung A SKU-IDs an, zu der dieses SKU-Paket gehört. |
Vorrichtung B SKU-ID | Zeigt eine von Vorrichtung B SKU-IDs an, zu der dieses SKU-Paket gehört. |
Nächste SKU-Paketadresse | Falls eine von „Vorrichtung A SKU ID“ oder „Vorrichtung B SKU ID“ nicht mit der SKU übereinstimmt, zu der die Vorrichtungen gehören, dann wird das nächste SKU-Paket von dieser Adresse geholt |
Erste Header-Paketadresse | Falls die beiden SKU IDS mit der jeweiligen Vorrichtung übereinstimmen, dann wird das nächste Paket von dieser Adresse abgeholt |
Ist letztes SKU-Paket? | Zeigt an, ob dies das letzte SKU-Paket ist (z.B. einzelnes Bit 1 oder 0). Falls die SKU-Übereinstimmung in keinem der SKU-Pakete gefunden wird, dann löst der IST-Master-Sequenzer das Herunterfahren beider Vorrichtungen aus. |
-
Sobald ein Software-Trigger einen IST initiiert, können der IST-Master-Sequenzer 146 und der IST-Slave-Sequenzer 148 eine Reihe von Operationen basierend auf den empfangenen SKU-Paketen ausführen. 9 zeigt zum Beispiel ein Ablaufdiagramm mit einer Reihe von Operationen des IST-Master-Sequenzers 146 und des IST-Slave-Sequenzers 148. Sowohl der IST-Master-Sequenzer 146 als auch der IST-Slave-Sequenzer 148 können mit Software programmiert sein, um die jeweiligen Operationen in 9 auszuführen. Sobald Vorrichtung A 110 in den IST-Modus eintritt, liest der IST-Master-Sequenzer 146 das erste SKU-Datenpaket aus dem Speicher 131, das dem IST-Master-Sequenzer 146 per Software bereitgestellt werden kann. Sobald Vorrichtung B 120 in den IST-Modus eintritt, läuft der IST-Slave-Sequenzer 148 parallel zu dem IST-Master-Sequenzer 146.
-
Ein Beispiel, das verschiedene Pakete zeigt, ist in 10 dargestellt, das drei SKU-Pakete SKU X, SKU Y und SKU Z beinhaltet. Jedes SKU-Paket kann verschiedene Daten enthalten, die in Tabelle 2 identifiziert sind, wie z.B. eine SKU-ID von Vorrichtung A, eine SKU-ID von Vorrichtung B, eine Adresse des nächsten SKU-Pakets, eine Adresse des ersten Header-Pakets und eine Angabe, ob dies das letzte SKU-Paket ist. Insoweit auf 9 Bezug nehmend, kann der IST-Master-Sequenzer 146 bei Prozess 910 zunächst das SKU X-Paket lesen und dekodieren und das SKU X-Paket an den IST-Slave-Sequenzer 148 weiterleiten, der das SKU X-Paket ebenfalls dekodiert. Bei 912 vergleicht der IST-Slave-Sequenzer die „Vorrichtung B SKU ID“ mit den Sicherungen in Vorrichtung B, um zu bestimmen, ob sie übereinstimmen. Darüber hinaus zeigt der IST-Slave-Sequenzer in einem STATUS-Paket an, ob die SKU übereinstimmt. Ein Prozess 914 beinhaltet, dass der IST-Slave-Sequenzer 148 das STATUS-Paket an den IST-Master-Sequenzer 146 sendet, der es dekodiert, um zu bestimmen, ob die SKU auf Vorrichtung B 120 übereinstimmt. Bei einem Prozess 916 vergleicht der IST-Master-Sequenzer 146 die SKU-ID von Vorrichtung A mit den Sicherungen in Vorrichtung A, um zu bestimmen, ob Vorrichtung A mit der SKU übereinstimmt, und bei 918, falls beide Vorrichtungen mit der SKU übereinstimmen, kann der IST-Master-Sequenzer 146 das nächste Header-Paket von der Adresse abrufen (920), die in der „Nächstes Header-Paketadresse“ des SKU-Pakets angegeben ist. In 10 verbindet z.B. ein Pfeil das SKUX-Paket mit dem H1-SKUX-Paket, welches die Verknüpfung durch Spezifizieren der Header-Adresse in dem SKU-Paket repräsentiert. Alternativ betrachtet bei 918 dann, wenn beide SKUs nicht übereinstimmen, der IST-Master-Sequenzer 146 dann bei einem Prozess 922 das Informationsfeld „Ist letztes SKU-Paket?“, um zu bestimmen, ob er eine andere SKU abrufen soll. Falls es sich nicht um das letzte SKU-Paket handelt, dann kann der IST-Master-Sequenzer 924 das nächste SKU-Paket abrufen, wie im Feld „Nächstes SKU Paketadresse“ angegeben. Wie in 10 dargestellt ist, enthält das SKUX-Paket beispielsweise eine Richtung zu dem SKUY-Paket, das die Verknüpfung von SKU-Paketen repräsentiert, durch Spezifizieren der Adresse des nächsten SKU-Pakets. Sobald SKUY abgerufen wurde, kann der Ablauf von 9 neu gestartet werden.
-
Obwohl 9 einen Ablauf darstellt, bei dem der IST-Master-Sequenzer 146 bei Prozess 916 bestimmt, ob die SKU von Vorrichtung A übereinstimmt, können in einer alternativen Ausführungsform die Prozesse 916 und 918 übersprungen werden, wenn der IST-Master-Sequenzer 146 bestimmt, dass Vorrichtung B nicht übereinstimmt. In diesem Fall (in 9 nicht explizit dargestellt) kann der IST-Master-Sequenzer 146 von Prozess 914 zu Prozess 922 übergehen.
-
Wie in 10 dargestellt ist, zeigt jedes Header-Paket auf die entsprechenden DATEN-, EREGEBNIS- und STATUS-Pakete. Darüber hinaus kann, weil einige der DATEN-Pakete über SKUs hinweg gemeinschaftlich sein können, außerdem die oben in 8 beschriebene Verknüpfungstechnik implementiert sein. Das heißt, in 10 können H1-SKUX, H1-SKUY und H1-SKUZ auf dasselbe DATEN-Paket D1 zeigen. Dies ist möglich, weil der HEADER die Zeiger auf das DATEN-Paket und auch auf die „nächste HEADER-Adresse“ aufweist. In diesem durch 10 bereitgestellten Beispiel werden D1 und D2 über alle SKUS hinweg gemeinsam genutzt, und als solche zeigt der H1 jeder SKU auf D1 und D2. D3-SKUXY wird von SKUX und SKUY gemeinsam genutzt, wie durch die Pfeile von H2-SKUX und H2-SKUY angezeigt wird, während D3-SKUZ nur von SKUZ verwendet wird. Indem die DATEN-Pakete auf diese Weise mit den HEADER-Paketen verknüpft werden, kann die Erfindung den Speicherverbrauch reduzieren, da weniger Kopien der DATEN-Pakete gespeichert werden. Außerdem können alle SKUS den RESULT- und STATUS-Paketplatz in dem Speicher gemeinsam nutzen, weil jedes HEADER-Paket eine „ERGEBNIS- und STATUS-Paketadresse“ hat und zu jeder Zeit immer nur eine SKU gültig ist.
-
Verschiedene Aspekte der Erfindung wurden in Bezug auf 1 bis 10 beschrieben. Einige zusätzliche Aspekte werden nun beschrieben, wobei auf 1 bis 10 als Beispiele Rückbezug genommen werden kann. Ein Aspekt der Erfindung beinhaltet ein System mit einer Speichervorrichtung (z.B. dem Speicher 131 mit Daten 144); einem Datenbus (z.B. der Verbindung 142, wie beispielsweise einer PCIe-Verbindung); und einer integrierten Chip-(IC)-Vorrichtung (z.B. der Vorrichtung A 110 oder der Vorrichtung B 120), die durch den Bus kommunikativ mit der Speichervorrichtung gekoppelt sind. Die IC-Vorrichtung soll einen eingebauten Selbsttest (BIST) unter Verwendung eines Datenpakets (z.B. HEADER-Datenpaket) durchführen, und das Datenpaket enthält ein Vorrichtungsidentifikator (ID)-Feld (z.B. gibt „Vorrichtung A oder B“ in Tabelle 1 an, für welche Vorrichtung das Paket bestimmt ist); ein Feld für den Pakettyp (z.B. „Pakettyp“ in Tabelle 1, das JTAG, LBIST oder WARTEN angibt); und/oder ein Feld für das letzte Paket (z.B. „Ist letzter Header“ in Tabelle 1, das angibt, ob dies das letzte HEADER-Paket ist). Das Vorrichtungs-ID-Feld enthält erste Daten, die für einen Vorrichtungsidentifikator einer Vorrichtung repräsentativ sind, wobei die Vorrichtung für die Ausführung von BIST vorgesehen ist und durch einen Bus mit einer Speichervorrichtung verbunden ist. Beispielsweise könnte das Vorrichtungs-ID-Feld einige Daten enthalten, die eine Kennung bzw. einen Identifikator der Vorrichtung A 110 oder der Vorrichtung B 120 repräsentieren, die über eine Verbindung (z.B. PCIe-Verbindung) mit dem Speicher 131 verbunden sind. Darüber hinaus kann das Pakettyp-Feld zweite Daten enthalten, die eine Angabe entweder, dass das Datenpaket eine Datenpaketadresse enthält, die einen Speicherplatz in der Speichervorrichtung identifiziert, an dem BIST-Testdaten gespeichert sind, oder dass das Datenpaket eine Quantität enthält, die eine Anzahl von Zyklen spezifiziert, die die Vorrichtung für den Zugriff auf den Bus pausieren soll, repräsentieren. Falls zum Beispiel die zweiten Daten des Pakettyp-Felds beispielsweise „JTAG“ anzeigen, signalisiert dies, dass das HEADER-Datenpaket auch eine Adresse des Speichers 131 enthalten kann, an der BIST-Testdaten gespeichert sind (z.B. in der „Datenpaketadresse“ von Tabelle 1). Alternativ signalisiert dann, wenn die zweiten Daten des Pakettyp-Felds „WARTEN“ anzeigt, dieses, dass das HEADER-Datenpaket eine Quantität im Datenfeld „Wait Cycles“ (Wartezyklen) enthält, und zählt die Quantität eine Anzahl von Zyklen auf, die die Vorrichtung (z.B. Vorrichtung A oder B, abhängig von der Vorrichtungs-ID) mit dem Zugriff auf den Bus pausieren soll. Diese Pause ermöglicht den Zugriff auf den Bus durch die andere Vorrichtung, die gleichzeitig BIST ausführt. Außerdem enthält das Feld für das letzte Paket dritte Daten, die eine Angabe darüber repräsentieren, ob das Datenpaket ein letztes für BIST programmiertes Paket ist. Zum Beispiel können die dritten Daten ein Bit (z.B. 0 oder 1) enthalten, das anzeigt, ob das HEADER-Datenpaket das letzte ist. Falls die dritten Daten anzeigen, dass das HEADER-Datenpaket nicht das letzte ist, dann kann ein IST-Sequenzer das nächste HEADER-Datenpaket unter Verwendung der im Feld „Nächste Header-Adresse“ bereitgestellten Daten abrufen. Diese Verknüpfung ermöglicht die Planung nachfolgender BIST-Vorgänge, die parallel ausgeführt werden können.
-
Ein weiterer Aspekt der Erfindung beinhaltet eine integrierte Schaltung, die eine erste Vorrichtung (z.B. die Vorrichtung A 110), die für die Ausführung eines ersten BIST vorgesehen ist; eine zweite Vorrichtung (z.B. die Vorrichtung B 120), die für die Ausführung eines zweiten BIST vorgesehen ist; und/oder eine Speichervorrichtung (z.B. den Speicher 131) umfasst. Der Speicher speichert ein erstes Header-Datenpaket (z.B. H1 in 6) und einen ersten Satz von BIST-Testdaten (z.B. D1 in 6), und das erste Header-Datenpaket enthält erste Daten, die für eine Kennung bzw. einen Identifikator der ersten Vorrichtung (z.B. der Vorrichtung A oder B in Tabelle 1) repräsentativ sind. Der Speicher speichert auch ein zweites Header-Datenpaket (z.B. H2 in 6), das zweite Daten enthält (z.B. Wartezyklen in Tabelle 1), die für eine Anzahl von Zyklen repräsentativ sind, die die erste Vorrichtung für den Zugriff auf die Speichervorrichtung pausieren soll, während sie den ersten Satz von BIST-Testdaten ausführt. Der Speicher speichert auch ein drittes Header-Datenpaket (z.B. H3 in 6) und einen zweiten Satz von BIST-Testdaten (z.B. D2 in 6), wobei das dritte Header-Datenpaket dritte Daten enthält, die für eine Kennung bzw. einen Identifikator der zweiten Vorrichtung repräsentativ sind (z.B. Vorrichtung A oder B in Tabelle 1). In einem logischen Abbild des Speichers können diese HEADER-Pakete mit den DATEN-Paketen verschachtelt sein, um das gleichzeitige Testen von Vorrichtung A und Vorrichtung B zu erleichtern. Darüber hinaus können in dem physischen Abbild des Speichers die DATEN-Pakete nahe beieinander in einer Gruppe gespeichert sein, und können die HEADER-Pakete nahe beieinander in einer separaten Gruppe gespeichert sein.
-
Die integrierte Schaltung könnte zusätzliche Elemente enthalten. Beispielsweise könnte der Speicher ein viertes Header-Datenpaket (z.B. H4 in 6) speichern, das vierte Daten enthält, die für eine Anzahl von Zyklen repräsentativ sind, die die zweite Vorrichtung für den Zugriff auf die Speichervorrichtung pausieren soll, während sie den zweiten Satz von BIST-Testdaten ausführt (z.B. Wartezyklen in Tabelle 1). Darüber hinaus kann der Speicher ein fünftes Header-Datenpaket enthalten (z.B. H5 in 6), das fünfte Daten enthält, die für einen ersten Ort in der Speichervorrichtung repräsentativ sind, in den ein Satz von Testergebnissen, die aus dem ersten Satz von BIST-Testdaten erzeugt wurden, geschrieben werden soll (z.B. Testergebnisadresse in Tabelle 1). Der Speicher kann auch ein sechstes Header-Datenpaket (z.B. H6 in 6) speichern, das sechste Daten enthält, die für einen zweiten Ort in der Speichervorrichtung repräsentativ sind, in den ein Satz von Testergebnissen, die aus dem zweiten Satz von BIST-Testdaten erzeugt wurden, geschrieben werden soll (z.B. Testergebnisadresse in Tabelle 1). In dem physischen Abbild des Speichers können der erste Ort und der zweite Ort nahe beieinander liegen (z.B. nebeneinander), was ein effizienteres Auslesen der Testergebnisse ermöglichen kann, um ein PASS oder FAIL zu bestimmen, im Gegensatz zu anderen Testsystemen, bei denen der erste und der zweite Ort weiter auseinander liegen können.
-
Ein weiterer Aspekt der Erfindung beinhaltet eine integrierte Schaltung, die eine Vorrichtung (z.B. die Vorrichtung A 110 oder die Vorrichtung B 120) zur Ausführung von BIST und eine Speichervorrichtung (z.B. den Speicher 131) umfasst. Die Speichervorrichtung speichert ein Testdatenpaket mit BIST-Testdaten (z.B. D1 in 8). Darüber hinaus speichert die Speichervorrichtung ein erstes Header-Datenpaket (z.B. H1 in 8), das einer ersten Ausführung des BIST (z.B. auf einem ersten Chiplet) zugeordnet ist und erste Daten enthält, die für eine Adresse der Speichervorrichtung repräsentativ sind, an der die BIST-Testdaten gespeichert sind (z.B. „Datenpaketadresse“ von Tabelle 1, die auf D1 in 8 zeigt). Die Speichervorrichtung speichert auch ein zweites Header-Datenpaket (z.B. H2 in 8), das einer zweiten Ausführung des BIST (z.B. auf einem zweiten Chiplet) zugeordnet ist und zweite Daten enthält, die für die Adresse repräsentativ sind (z.B. „Datenpaketadresse“ der Tabelle 1, die auf D1 in 8 zeigt). In dieser integrierten Schaltung kann die Speichernutzung reduziert werden, da die BIST-Testdaten einmal an dem Ort gespeichert werden und durch die Header von separaten Chiplets darauf gezeigt wird.
-
In einem weiteren Aspekt kann die integrierte Schaltung auch ein erstes SKU-Paket (z.B. SKUX in 10) und ein zweites SKU-Paket (z.B. SKUY in 10) enthalten. Das erste SKU-Paket enthält dritte Daten, die für einen Identifikator einer ersten SKU-Konfiguration repräsentativ sind (z.B. Vorrichtung A SKU-ID oder Vorrichtung B SKU-ID in Tabelle 2), und vierte Daten, die für eine erste Header-Adresse repräsentativ sind (z.B. Adresse des ersten Header-Pakets in Tabelle 2), die eine Adresse in der Speichervorrichtung identifiziert, an der das erste Header-Datenpaket gespeichert ist (z.B. H1-SKUX in 10). Das zweite SKU-Paket enthält fünfte Daten, die für einen Identifikator einer zweiten SKU-Konfiguration repräsentativ sind (z.B. Vorrichtung A SKU-ID oder Vorrichtung B SKU-ID in Tabelle 2), und sechste Daten, die für eine zweite Header-Adresse repräsentativ sind (z.B. erste Header-Paketadresse in Tabelle 2), die eine Adresse in der Speichervorrichtung identifiziert, an der das zweite Header-Datenpaket (z.B. H1-SKUY in 10) gespeichert ist. In einem weiteren Aspekt enthalten das erste Header-Datenpaket (z.B. H1-SKUX in 10) und das zweite Header-Datenpaket (z.B. H1-SKUY in 10) Daten, die für eine Datenpaketadresse (z.B. Datenpaketadresse in Tabelle 1) repräsentativ sind, die eine Adresse in der Speichervorrichtung identifiziert, an der BIST-Testdaten (z.B., D1 in 10) gespeichert sind, wobei die BIST-Testdaten für die erste SKU-Konfiguration und die zweite SKU-Konfiguration gelten (z.B. wie in 10 durch einen Pfeil, der von H1-SKUX auf D1 zeigt, und einen anderen Pfeil, der von H1-SKUY auf D1 zeigt, angegeben wird).
-
In einer anderen Ausführungsform beinhaltet die Erfindung ein Verfahren. Das Verfahren beinhaltet das Empfangen (z.B. 310 von 3A oder 410 von 4) eines ersten Header-Datenpakets (z.B. H1 oder H3 von 6), das erste Daten umfasst, die für eine erste Datenpaketadresse (z.B. Datenpaketadresse in Tabelle 1) repräsentativ sind, die einen ersten Ort in einer Speichervorrichtung (z.B. Speicher 131) identifizieren, an dem erste eingebaute Selbsttestdaten (BIST) gespeichert sind (z.B. D1 oder D2 in 6), wobei die ersten BIST-Testdaten zum Ausführen eines ersten BIST auf einer ersten IC-Vorrichtung (z.B. der Vorrichtung A 110 oder der Vorrichtung B 120) dienen, die mit der Speichervorrichtung durch einen Bus (z.B. die Verbindung 142) kommunikativ gekoppelt ist. Die ersten BIST-Testdaten werden von dem ersten Ort in der Speichervorrichtung durch Zugriff auf den Bus abgerufen (z.B. 322 oder 330 von 3A). Darüber hinaus wird auf ein Testnetzwerk der ersten IC-Vorrichtung zugegriffen (z.B. 322 von 3A oder 420 von 4), um den ersten BIST unter Verwendung der ersten BIST-Testdaten auszuführen. Das Verfahren umfasst darüber hinaus den Empfang eines zweiten Header-Datenpakets (z.B. H2 oder H4 von 6), das zweite Daten umfasst, die für eine Quantität repräsentativ sind, die eine Anzahl von Zyklen spezifiziert, die die erste IC-Vorrichtung für den Zugriff auf den Bus pausieren soll, während das erste BIST ausgeführt wird. Ein Wartezähler wird ausgelöst (z.B. 319 von 3A oder 417 von 4), um die Anzahl von Zyklen zu zählen.
-
Das Verfahren kann zusätzliche Schritte beinhalten. Beispielsweise kann ein drittes Header-Datenpaket empfangen werden, das dritte Daten enthält, die für eine zweite Datenpaketadresse repräsentativ sind, die einen zweiten Ort in der Speichervorrichtung identifiziert, an dem zweite BIST-Testdaten gespeichert sind, wobei die zweiten BIST-Testdaten zum Ausführen eines zweiten BIST auf einer zweiten IC-Vorrichtung dienen, die über den Bus mit der Speichervorrichtung kommunikativ gekoppelt ist. Während die erste IC-Vorrichtung den ersten BIST ausführt und der Zugriff auf den Bus pausiert ist, werden die zweiten BIST-Testdaten abgerufen. In einem weiteren Aspekt umfasst das erste Header-Datenpaket dritte Daten, die für eine zweite Datenpaketadresse (z.B. die Nächster Header-Adresse in Tabelle 1) repräsentativ sind, die einen zweiten Ort in der Speichervorrichtung identifiziert, an dem das zweite Header-Datenpaket gespeichert ist, und das Verfahren umfasst ferner die Verwendung der zweiten Datenpaketadresse zum Abrufen des zweiten Header-Datenpakets. In einer weiteren Ausführungsform umfasst das erste Header-Datenpaket dritte Daten, die für eine Vielzahl von Chiplet-Identifikatoren von Chiplets repräsentativ sind, die für den Empfang einer Übertragung der ersten BIST-Testdaten vorgesehen sind, und umfasst das Verfahren ferner das Ausführen von BIST auf jedem Chiplet der Chiplets unter Verwendung der ersten BIST-Testdaten, die von dem Ort in der Speichervorrichtung abgerufen wurden (z.B. 8, die mehrere Header veranschaulicht, die mit demselben D1 verknüpft sind). In einem nochmals weiteren Aspekt wird ein drittes Header-Datenpaket empfangen, das dritte Daten enthält, die für einen Vorrichtungsidentifikator (z.B. der Vorrichtung A oder B in Tabelle 1) der IC-Vorrichtung repräsentativ sind, und umfasst das Verfahren ein Bestimmen, dass der Wartezähler aktiv ist (z.B. 314 in 3A oder 412 von 4). Wenn der Wartezähler aktiv ist, wird das Lesen des dritten Header-Datenpakets pausiert (z.B. 315 in 3A oder 413 in 4), bis die Anzahl von Zyklen abgelaufen ist. In einer anderen Ausführungsform beinhaltet das Verfahren ein Empfangen eines dritten Header-Datenpakets (z.B. H5 in 6), das dritte Daten enthält, die für einen zweiten Speicherplatz in der Speichervorrichtung repräsentativ sind (z.B. Testergebnisadresse in Tabelle 1), an den ein erster Satz von Testergebnissen (z.B. R1 in 6), der aus den ersten BIST-Testdaten erzeugt wurde, geschrieben werden soll, und ein Empfangen eines vierten Header-Datenpakets (z.B. H6 in 6), das vierte Daten enthält, die für einen zweiten Speicherplatz in der Speichervorrichtung repräsentativ sind (z.B. Testergebnisadresse in Tabelle 1), in den ein zweiter Satz von Testergebnissen (z.B., R2 in 6), der aus zweiten BIST-Testdaten erzeugt wurde, geschrieben werden soll. Der erste Satz von Testergebnissen wird (z.B. 338 in 3B) an den zweiten Ort in einem Speicherabbild geschrieben, und der zweite Satz von Testergebnissen wird (z.B. 340 in 3B) an den dritten Ort in einem Speicherabbild geschrieben. Der zweite Ort und der dritte Ort enthalten keine anderen Datenpakete, die sich dazwischen in dem Speicherabbild verschachteln (z.B. R1 und R2 der Gruppierung 712 in 7). Das Verfahren könnte auch ein Empfangen eines Stock Keeping Unit (SKU)-Datenpakets (z.B. 910 in 9) beinhalten, das dritte Daten enthält, die für eine SKU-Konfiguration repräsentativ sind (z.B. SKU-ID in Tabelle 2), und vierte Daten enthält, die für eine zweite Datenpaketadresse repräsentativ sind (z.B. Erste Header-Paketadresse in Tabelle 2), die einen zweiten Ort in der Speichervorrichtung identifiziert, an dem das erste Header-Datenpaket gespeichert ist. Nach einem Bestimmen, dass die erste IC-Vorrichtung mit der SKU-Konfiguration übereinstimmt (z.B. 916 in 9), wird das erste Header-Datenpaket unter Verwendung der zweiten Datenpaketadresse von dem zweiten Speicherort abgerufen (z.B. 920 in 9).
-
In dieser Erfindung werden verschiedene Ablaufdiagramme (z.B. 3A, 3B, 4 und 9) beschrieben, jeder hierin beschriebene Block kann einen Rechenprozess umfassen, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der in Speicher gespeicherte Anweisungen ausführt. Die durch die Ablaufdiagramme repräsentierten Verfahren können auch als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, verkörpert sein. Die Verfahren können durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt sein, um nur einige zu nennen. Darüber hinaus werden Verfahren beispielhaft in Bezug auf das System von 1 und 2 beschrieben. Diese Verfahren können jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich der, aber nicht beschränkt auf die, hierin beschriebenen Systeme.
-
Die Erfindung kann in dem allgemeinen Kontext von Computercode oder maschinell verwendbaren Anweisungen, einschließlich von computerausführbaren Anweisungen wie beispielsweise Programmmodulen, beschrieben werden, die von einem Computer oder einer anderen Maschine, z.B. einem Personal Data Assistant oder einem anderen Handheld-Gerät, ausgeführt werden. Allgemein beziehen sich Programmmodule, einschließlich Routinen, Programmen, Objekten, Komponenten, Datenstrukturen usw., auf Code, der bestimmte Aufgaben ausführt oder bestimmte abstrakte Datentypen implementiert. Die Erfindung kann in einer Vielzahl von Systemkonfigurationen praktisch umgesetzt werden, einschließlich von Handheld-Geräten, Unterhaltungselektronik, Universalcomputern, spezielleren Computervorrichtungen usw. Die Erfindung kann auch in verteilten Computerumgebungen angewendet werden, in denen Aufgaben durch Fernverarbeitungsvorrichtungen ausgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind.
-
Wie hierin verwendet ist eine Angabe von „und/oder“ in Bezug auf zwei oder mehr Elemente so zu interpretieren, dass nur ein Element oder eine Kombination von Elementen gemeint ist. Zum Beispiel kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder die Elemente A, B und C beinhalten. Darüber hinaus kann „zumindest eines von Element A oder Element B‟ zumindest eines von Element A, zumindest eines von Element B oder zumindest eines von Element A und zumindest eines von Element B beinhalten.
-
Der Gegenstand der Erfindung wird hierin spezifisch beschrieben, um gesetzliche Anforderungen zu erfüllen. Die Beschreibung selbst soll jedoch den Umfang dieser Erfindung nicht beschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch auf andere Weise verkörpert werden kann, um verschiedene Prozesse oder Kombinationen von Prozessen, die den in diesem Dokument beschriebenen ähnlich sind, in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien einzuschließen. Außerdem sind, obwohl die Begriffe „Schritt“, „Prozess“ und/oder „Block“ hierin verwendet werden können, um verschiedene Elemente verwendeter Verfahren zu bezeichnen, diese Begriffe nicht derart zu interpretieren, dass sie eine bestimmte Reihenfolge unter oder zwischen hierin offenbarten, verschiedenen Prozessen implizieren, es sei denn, die Reihenfolge einzelner Prozesse wird ausdrücklich beschrieben.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-