-
Die
vorliegende Erfindung bezieht sich auf integrierte Halbleiterschaltungen
und insbesondere auf Testschaltungen, die in integrierte Schaltungen (IC)
eingebaut sind, die ein wirkungsvolles Testen eines eingebetteten
Speichers, insbesondere eines Lese-/Schreib-Speichers, ermöglichen.
-
Da
integrierte Schaltungen immer höhere
Integrationsstufen erreichen, ist es allgemein üblich, dass man mehrere Speicherblöcke unterschiedlicher Größen anfindet,
die innerhalb von Logikblöcken
in der integrierten Schaltung eingebettet sind. Ein typisches Beispiel
einer eingebetteten Schaltung sind die Daten- und Anweisungs-Cachespeicher
zusammen mit ihrer zugeordneten Kennung sowie Cachespeicher für gültige Daten,
wobei die Cachespeicher in den meisten modernen Mikroprozessoren
eingebettet sind. Diese Speicher werden als "eingebettet" bezeichnet, da sie von den Eingangs-
und Ausgangs-Kontaktstiften des integrierten Schaltungschips nicht
unmittelbar zugänglich
sind. Stattdessen ist ein eingebetteter Speicher durch Logikblöcke von den
Eingangs- und Ausgangs-Kontaktstiften im gewöhnlichen Betrieb der Schaltung
getrennt. Das Testen dieser eingebetteten Speicher ist daher kompliziert,
da jeglicher Zugriff auf diese Speicher während des Normalbetriebs des
Chips über
die zugeordnete Logikschaltung vermittelt wird.
-
Integrierte
Schaltungen werden im Umfang verwendet, da sie eine hohe Funktionalität pro Kosteneinheit
bieten. Um die bei der Herstellung moderner integrierter Schaltungen
notwendige Wirtschaftlichkeit zu erzielen, ist es notwendig, sowohl
die Kosten der Rohschaltung als auch die Kosten ihres Testens zu
minimieren. In vielen Fällen
sind die Kosten des Testens der Vorrichtung vergleichbar zu den
Kosten der Herstellung der Rohform in der Fabrik. Die Kosten einer
funktionellen Form sind ungefähr
proportional zur umgekehrten Exponentialfunktion der Formfläche. Es
ist daher notwendig, die Formfläche
zu minimieren, um die Kosten zu minimieren. Die Kosten des Testens
sind näherungsweise
proportional zum Produkt aus der Testzeit und den Kosten der Testgeräte. Es ist
daher wünschenswert,
sowohl die Testzeit als auch die Komplexität der Testgeräte zu minimieren,
um die Testkosten zu minimieren.
-
Das
Testen von Speichern wird im allgemeinen erreicht, indem man Testvektoren
an den Speicher anlegt und die Ergebnisse ausliest, um einen richtigen
Speicherbetrieb zu gewährleisten.
Das Testen eines eingebetteten Speichers durch die umgebenden Logikschaltungen
hindurch kann jedoch eine Anzahl von Testvektoren erfordern, die
größer als
der verfügbare
Speicher in den automatischen Testgeräten sind, die zum Testen der
Vorrichtung verwendet werden, und es ist auf jeden Fall sehr zeitaufwändig. Es
ist außerdem
unerwünscht,
weil das Entwickeln von Programmen zur Durchführung derartiger Tests eine
große
Menge an Zeit von qualifizierten Prüfingenieuren erfordert, was
zu den Gemeinkosten beiträgt.
-
Ein
weiterer möglicher
Ansatz zum Testen eingebetteter Speicher besteht darin, die Steuerung, die
Adresse und die Datenleitungen der Speicher mit externen Kontaktflächen der
integrierten Schaltung zu verbinden. Multiplexer-Blöcke werden
innerhalb der integrierten Schaltung implementiert, um die ein gebetteten
Speicher entweder mit den externen Kontaktflächen für das Testen oder mit internen
Bussen für
den standardmäßigen Schaltungsbetrieb
zu verbinden. Ein Nachteil dieses Ansatzes besteht darin, dass die
zusätzlichen
Busleitungen und Kontaktflächen
die Größe der Halbleiterform
erhöhen
und die zusätzlichen
Kontaktflächen
die Anzahl der benötigten
Kontaktstifte der Testvorrichtung erhöhen. Die Kosten der Testvorrichtung
sind im allgemeinen ungefähr
proportional zur Anzahl der Kontaktstifte. Da bei modernen ICs ein
Trend zu großen
Speichern und zunehmend hoher Kapazität besteht, kann die Anzahl
der zusätzlichen
Busse und Kontaktflächen häufig mehr
als 100 betragen, was eine untragbare Kostenbelastung darstellt.
-
Um übermäßige Kosten
zu verhindern und gleichzeitig eine angemessene Fehlerüberdeckung bereitzustellen,
gab es eine Entwicklung zum eingebauten Selbsttest (BIST, Built-In
Self Test) von integrierten Schaltungen. Dieser Ansatz beruht auf
in die integrierte Schaltung eingebauten Schaltungen zum Testen
der Speicher und Berichten der Ergebnisse an eine Elektronik außerhalb
des Chips mit Hilfe einer eingeschränkten Anzahl von Kontaktstiften.
Ein Beispiel der BIST-Verfahrensweise,
sind die allgemein verwendeten Joint Test Action Group (JTAG) Standards.
Spezielle Test-Betriebsarten, die den Normalbetrieb der Schaltung
außer
Betrieb setzen, werden verwendet, um einen BIST zu ermöglichen.
-
BIST
versucht, eine vollständige
Fehlerüberdeckung
bereitzustellen bei gleichzeitiger Minimierung der Testzeit und
der Fläche
der Form, die durch die BIST-Schaltung belegt wird. Bei einigen
Anwendungen ist es auch wünschenswert,
dass Diagnose-Information für
Fehler zur Verfügung
steht, die erfasst werden. Diese Anforderungen stehen im Konflikt
zueinander, da das Hinzufügen
von Diagnose-Fähigkeit
die Größe des BIST
er höht.
Es wurden verschiedene Schemen entwickelt, die einen der Faktoren
auf Kosten der anderen optimieren.
-
Ein
derartiges Verfahren zum Reduzieren der Fläche auf dem Chip, die den Datenbussen
zugeordnet ist, besteht darin, eine serielle Eingangsdaten-Leitung
und eine serielle Ausgangsdaten-Leitung zu verwenden. Es werden
Puffer seriell geladen und dann für einen Parallelbetrieb während des
Schreibens, Lesens und Vergleichens der aus dem Speicher ausgelesenen
Daten mit den abgespeicherten Daten verwendet. Ein Nachteil dieses
Ansatzes besteht darin, dass die maximale Betriebsfrequenz durch
die Breite des Datenworts verringert wird (z.B. 32 Bit), so dass
der Speicher mit einer kleineren als der Betriebsfrequenz getestet
wird. Somit werden Fehler, die nur bei Betrieb mit Normalgeschwindigkeit auftreten,
wie z.B. kapazitive Kopplungsfehler und Übergangsfehler, nicht erfasst.
Eine weitere Folge besteht darin, dass die zum Testen des Speichers
benötigte
Zeit um die Zeit erhöht
wird, die zum seriellen Laden der Puffer notwendig ist. Dies kann
die Testzeit um einen Faktor erhöhen,
der näherungsweise gleich
groß wie
die Breite der Speicherwörter
ist.
-
Ein
weiterer Ansatz besteht darin, den Speicher-Eingabe-/Ausgabe-Leitungen
Multiplexer hinzuzufügen,
so dass die aus dem Speicher ausgelesenen Daten während des
anschließenden
Schreibens in benachbarte Bits zurückgeladen werden können, während sich
der Speicher in der Test-Betriebsart befindet. Somit stehen die
Daten von Bit 1 für
das Schreiben in Bit 2 zur Verfügung;
die Daten von Bit 2 stehen zum Schreiben in Bit 3 zur Verfügung; etc.. Das
erste Bit empfängt
neue Daten, und die von dem letzten Bit ausgegebenen Daten werden
zum Vergleich zu der BIST-Steuerungsvorrichtung der Finite-Zustände-Maschine
zurückgeleitet.
Im Betriebsmodus verbinden die Multiplexer die Speicher-Datenleitungen
mit dem Chip- Datenbus.
Da Daten stets zum Schreiben verfügbar sind, wenn ein Lesebetrieb abgeschlossen
ist, kann der Speicher mit Betriebgeschwindigkeit getestet werden,
wodurch die Qualität und
Genauigkeit des Testablaufs erhöht
wird.
-
Mehrere
Möglichkeiten
zum Implementieren dieses Schemas sind möglich. Bei einer möglichen Implementierung
wird die Ausgabe des letzten Bits eines Wortes in dem ersten Speicher
in die Eingabe des ersten Bits eines Wortes in dem zweiten Speicher
eingegeben, etc., um alle Speicher zu effektiv zu einem sehr breiten
Speicher für
Testzwecke umzuwandeln. Eine weitere Implementierung verwendet das
Hinzufügen
einer Serie von Steuerungsleitungen, so dass jeder Speicher gesondert
freigegeben werden kann. Dies ermöglicht es, dass jeder Speicher
sequenziell getestet wird. Für
den Fall, dass die eingebetteten Speicher unterschiedliche Tiefen
haben, muss das zweite Verfahren verwendet werden, da das erste
Verfahren erfordert, dass die Speichertiefen dieselben sind.
-
Es
gibt einige Nachteile bei diesen Ansätzen. Obwohl die obige Implementierung
den Vorteil der Verwendung kleiner Flächen bietet, ist sie z.B. dennoch
relativ langsam. Darüber
hinaus ist im Falle eines Fehlers alles, was man weiß, die Wortadresse des
Fehlers. Information bezüglich
des fehlerhaften Bits ist nicht verfügbar, da das Wort so strukturiert
ist, dass es als serielles Schieberegister ohne interne Beobachtbarkeit
arbeitet. Für
den Fall, dass das erste vorgeschlagene Verfahren der parallelen
Verkettung von Wörtern
verwendet wird, kann in der Tat nicht einmal der fehlerhafte Speicher
mit Gewissheit bestimmt werden. Für einen einfachen Bestanden/Nicht-Bestanden-Test
ist es ausreichend, zu identifizieren, dass ein Fehler aufgetreten
ist. Wenn jedoch eine Redundanz verwendet wird, um den Fehler zu
reparieren, oder wenn die Ursache des Fehlers analysiert werden
soll, steht kriti sche Information nicht zur Verfügung. Erzielte das Wort eine
gerade Anzahl von Übergangs-
oder kapazitiven Kopplungsfehlern, die dazu führen, dass das Bit das Gegenteil der
beabsichtigten Daten liest, kann dies sogar dazu führen, dass
das Vorhandensein von Fehlern maskiert wird.
-
Ein
alternativer Ansatz besteht darin, Datenmuster und Adressensequenzen
zentral zu erzeugen und sie zu den eingebetteten Speichern zu leiten. Dieser
Ansatz ist schneller als der obige serielle Testansatz, und zwar
insbesondere dann, wenn mehrere eingebettete Speicher parallel getestet
werden. Ein Nachteil dieses Lösungsansatzes
besteht darin, dass das Wegleiten der zusätzlichen Daten und Adressenbusse
beachtliche Mengen an Fläche
auf dem Chip verbrauchen, wenn die Datenweg-Breite von der historischen Größe von 8
Bit auf 32 Bit oder 64 Bit ansteigt, was zunehmend üblich wird.
Es kann sein, dass es nicht möglich
ist, dieselben Busse für
das Testen und den Normalbetrieb zu verwenden, da die Testsignale
parallel zu den eingebetteten Speichern geleitet werden sollten,
während
die Busse im Betrieb oftmals gesondert sind, wie z.B. im Falle von Cache-Speicherdaten
und Anweisungen. Dies bedeutet, dass das Testen zusätzliche
Busse plus einen Multiplexer pro Dateneinheit und Adressenleitung
benötigt.
-
Es
wurde vorgeschlagen, die Busfläche durch
Verwenden eines gesonderten Muster-Generators für jede zu prüfende Anordnung
zu verringern und nur eine einfache codierte Anweisung von der Steuerungsvorrichtung
zu dem Muster-Generator zu leiten, um den Muster-Generator anzuweisen,
welche Gruppe konfektionierter Tests, die in dem Muster-Generator
gespeichert sind, auszuführen
ist. Dieser Lösungsansatz
spart bei der Wegleitungsfläche auf
Kosten der Fläche,
die notwendig ist, um individuelle Muster-Generatoren zu erzeugen,
um eine Vielzahl von Speichern zu testen.
-
Das
parallele Testen eingebetteter Speicher ist zwar vom Standpunkt
der Geschwindigkeit wünschenswert,
doch haben eingebettete Speicher (z.B. Daten-Cache-RAM und der zugeordnete
Kennzeichen-Cache-RAM) in einer integrierten Schaltung oftmals nicht
dieselbe Größe. Wenn
zwei Speicher unterschiedlicher Größe getestet werden, indem sie
mit demselben Datenmuster beschrieben werden, werden die Daten in
dem kleineren Speicher ausgehend von dem Adressenraum niedriger
Ordnung mit den Daten überschrieben,
die dazu bestimmt sind, den verbleibenden Raum in dem größeren Speicher
zu füllen,
falls der Prozess des Schreibens in den kleineren Speicher nicht
gehemmt wird, wenn sein Adressenraum überschritten wird. Diese Situation
könnte leicht
zu fehlerhaften Testergebnissen für den kleineren Speicher führen.
-
Ein
zum Lösen
dieses Problems vorgeschlagener Ansatz besteht darin, den Zustand
der Adressen höherer
Ordnung zu verwenden, um das Schreibsignal an dem kleineren Speicher
zu blockieren, was in einigen wenigen speziellen Fällen sehr
effizient sein kann. Wenn z.B. ein Speicher in der Zeilenrichtung
kleiner ist und die Größe des Zeilen-Adressenraums
des kleineren Speichers ein binäres
Vielfaches (z.B. 2k) der größeren Anordnung ist,
erzeugt eine ODER-Verknüpfung
der Zeilenadressen höherer
Ordnung, die in dem kleineren Speicher nicht verwendet werden, ein
einfaches Mittel zum Erzeugen des benötigten Blockiersignals. Für den allgemeineren
Fall, bei dem die kleinere Anordnung eine willkürliche Größe hat, die kein binäres Vielfaches
der größeren Anordnung
ist, wird ein Grössen-Komparator
benötigt,
der für
größere Adressenräume unzulässig groß wird und
folglich eine nicht akzeptierbar große Chipfläche verbraucht.
-
Das
US-Patent 5675545 beschreibt ein BIST-System für in eine IC eingebettete Testspeicher mit
einer zentralen BIST- Steuerungsvorrichtung
und einem separaten BIST-Modul, das jedem Speicher entspricht. Wenn
ein BIST-Modul seinen entsprechenden Speicher testen soll, sendet
die BIST-Steuerungsvorrichtung
eine Sequenz aus Datenwörtern, die
in den entsprechenden Speicher geschrieben werden sollen, zu den
BIST-Modulen. Das BIST-Modul erzeugt eine Sequenz aus Speicheradressen,
auf die während
des Tests ein Schreib- und Lese-Zugriff erfolgt, schreibt ein hereinkommendes
Datenwort in jede Speicheradresse, liest das Datenwort aus der Speicheradresse
wieder aus und übersendet
dann das ausgelesene Datenwort an die BIST-Steuerungsvorrichtung
zurück.
Die zentrale BIST-Steuerungsvorrichtung vergleicht dann die in die
Speicheradressen geschriebenen Daten mit den auf der Speicheradresse
ausgelesenen Daten, um zu bestimmen, ob der Speicher fehlerhaft
ist. Dieses BIST-System kann relativ langsam sein, weil die Speichermodule
sequenziell und nicht gleichzeitig getestet werden.
-
Das
US-Patent 5572712 beschreibt ein BIST-Modul zum unabhängigen Durchführen aller Gesichtspunkte
eines Tests auf einem einzigen eingebetteten Speicher, um Ausgabedaten
zu erzeugen, die anzeigen, ob der Speicher fehlerhaft ist, und beschreibt
ein Verfahren zum Auslegen und Herstellen einer IC mit einer derartigen
BIST-Schaltung. Das Bereitstellen eines vollständig unabhängigen BIST-Moduls, wie es
das US-Patent 5572712 für
jeden eingebetteten Speicher lehrt, würde zwar das gleichzeitige
Testen aller Speicher ermöglichen,
doch würden
derartige BIST-Module mehr Platz in einer IC belegen als dies bei
den in dem US-Patent 5675545 beschriebenen BIST-Modulen der Fall
wäre.
-
Ein
Problem, das bei der praktischen Implementierung eines BIST auftritt,
besteht darin, dass trotz seiner Wichtigkeit für den wirtschaftlichen Erfolg eines
Entwurfs seine Anforde rungen nicht unmittelbar mit den Systemanforderungen
verbunden sind. Da komplexe integrierte Schaltungen sich zu "Systemen auf einem
Chip" entwickelt
haben, wie dies der Slogan der internationalen Konferenz für Festkörper-Schaltungen
1996 der Fall war (1996 International Solid State Cirquits Conference),
gibt es strukturierte Verfahrensweisen (Topdown-Methoden) für ihre Definition und ihren
Entwurf. Dennoch besteht die Tendenz, dass die Auslegung des BIST
für die Speicher,
die in diesen Schaltungen eingebettet sind, auf einer ad hoc Basis
durchgeführt
wird. Die Kosten dieser Auslegung sind eine beachtliche Belastung insbesondere
für anwendungsspezifische
integrierte Schaltungen (ASICs), bei denen der Entwicklungszyklus
kurz sein sollte und das Herstellungsvolumen relativ klein ist.
Man benötigt
daher ein Verfahren für den
automatischen Entwurf eines effizienten BIST für eingebettete Speicher.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Erfindung stellt ein Mittel bereit zum automatischen Erzeugen der
Auslegung des BIST für eingebettete
Speicher. Der Lösungsansatz
beruht auf Speichern oder Pseudo-Zufalls-Generatoren für die Implementierung vieler
der Funktionen. Die Erfindung beinhaltet Software, welche die Gleichungen erzeugt,
die als Eingaben für
ein logisches Synthese-Hilfsmittel
verwendet werden. Die Ausgabe des Synthese-Hilfsmittels wird einem automatischen Wegleitungs-Hilfsmittel
zugeführt,
wo sie mit der Ausgabe der Synthese der anderen Abschnitte der integrierten
Schaltung IC zusammengeführt
wird. Das Wegleitungs-Hilfsmittel ordnet die Signale an und leitet
sie zusammen mit dem Rest der IC durch die Logik hindurch, die durch
das Synthese-Werkzeug beschrieben wird. Das Ergebnis ist ein vollständiger IC-Entwurf,
der effiziente Speicher-BIST-Schaltungen enthält.
-
Eine
Ausführung
der vorliegenden Erfindung stellt ein Verfahren bereit zum automatischen
Generieren einer eingebauten Selbsttestschaltung (BIST-Schaltung)
zum Testen eines eingebetteten Speichers eines integrierten Schaltungschips,
wobei das Verfahren die folgenden Schritte aufweist: Bereitstellen
von Eingabedaten, die für
gewünschte BIST-Merkmale
kennzeichnend sind; Berechnen von Ausgabedaten von mindestens einem
Teil der Eingabedaten, wobei die Ausgabedaten für die BIST-Schaltungsfunktion kennzeichnend sind;
Synthetisieren von BIST-Daten aus den Ausgabedaten, wobei die BIST-Daten
kennzeichnend für
eine BIST-Schaltung sind, in der die gewünschten BIST-Merkmale enthalten
sind; Bereitstellen von IC-Daten, die für eine Schaltung des IC-Chips
kennzeichnend sind; und Synthetisieren der BIST-Daten und der IC-Daten,
um die Anordnung von Schaltungsblöcken auf dem IC-Chip und die
Wegleitung zwischen den Blöcken
zu bestimmen. Diese Ausführung
ermöglicht
die automatische Generierung eines BIST-Entwurfs, wobei an den Benutzer
des Verfahrens geringe Anforderungen gestellt werden. Somit wird
ein komplizierter BIST-Entwurf vereinfacht.
-
Das
Verfahren kann zusätzlich
das automatische Generieren einer Maske zur Verwendung beim Herstellen
des integrierten Schaltungschips enthalten. Dies trägt zur Effizienz
des Entwurfs bei, wodurch die Schritte verringert werden, die ein
Schaltungsentwickler gehen muss, um die Chipproduktion vorzubereiten.
-
Darüber hinaus
ermöglicht
diese Ausführung eine
Duplizierung des BIST-Entwurfs für ähnliche Speicher
auf dem Chip und die Generierung anderer Entwürfe, falls die Speicher auf
dem Chip nicht vollständig
gleich sind. Dies ermöglicht
die Anwendung für
IC-Chips mit verschiedenen Arten und Größen von Speichern, wie es üblich ist.
-
Ein
weiteres Ausführungsbeispiel
der vorliegenden Erfindung stellt ein Rechnersystem bereit mit einem
Rechnerprogramm zum automatischen Generieren eines BIST-Schaltungsentwurfs
zum Testen eines eingebetteten Speichers einer integrierten Schaltung,
wobei das Rechnersystem einen rechner-lesbaren Speicher enthält, der
aufweist: einen Code, der Eingabedaten empfängt, die für die gewünschten BIST-Merkmale kennzeichnend
ist; einen Code, der die Eingabedaten verarbeitet und Ausgabedaten
erzeugt, die für
den BIST-Betrieb kennzeichnend sind; einen Code, der die Ausgabedaten
verarbeitet und BIST-Daten erzeugt, die für die BIST-Schaltungskomponenten
und die Kopplung kennzeichnend sind; einen Code, der IC-Daten empfängt, die
für die IC-Schaltungskomponenten
und die Kopplung kennzeichnend sind; und einen Code, der die BIST-Daten und
die IC-Daten verarbeitet und Entwurfsdaten erzeugt, die für den Entwurf
der IC-Schaltungskomponenten und die Wegleitung zwischen den Komponenten
kennzeichnend sind.
-
Ein
besseres Verständnis
der Eigenschaften und Vorteile der Erfindung ergibt sich anhand
der restlichen Abschnitte der Beschreibung und der beigefügten Zeichnung.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
1A ist
ein Flussdiagramm für
einen Entwurfsprozess zum automatischen Generieren einer integrierten
BIST-Schaltung.
-
1B ist
eine Darstellung der Informationskategorien, die bei der Definition
einer integrierten BIST-Schaltung zugeführt werden müssen.
-
2 ist
ein ausführlicheres
Flussdiagramm für
die Generierung der Gleichungen für den Speicher-BIST-Entwurf.
-
3 ist
ein Blockdiagramm der Inhalte der Haupt-Steuerungsvorrichtung, die in Übereinstimmung
mit der Lehre dieser Erfindung ausgelegt ist.
-
4 ist
ein Flussdiagramm, das die Prozedur kennzeichnet, die beim Definieren
der Logikgleichungen für
die BIST-Implementierung verwendet werden.
-
5 ist
ein Gesamt-Blockdiagramm einer BIST-Schaltung und von Wegleitungs-Verbindungen, die
in Übereinstimmung
mit der Lehre dieser Erfindung ausgelegt sind.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
1A zeigt
ein Flussdiagramm 110 der Funktionsweise eines bevorzugten
Ausführungsbeispiels
dieser Erfindung mit einer Integration eines Gesamtentwurfs einer
integrierten Schaltung. Eines der Ziele dieser Erfindung besteht
darin, den Entwurf von BIST-Funktionen den Verfahrensweisen für den Gesamtentwurf
des Produktes kompatibel zu machen. Die Definition eines BIST-Systems
zum Testen eines eingebetteten Speichers bei Schritt 112 liefert Information
zum Generieren von BIST-Logikgleichungen bei Schritt 114.
Bei Schritt 116 werden die BIST-Logikschaltungen synthetisiert,
um Daten zu erzeugen, die für
eine BIST-Schaltung einschliesslich Komponenten und Kopplung kennzeichnend
sind. Unabhängig
von der Definition der BIST-Schaltung enthält Schritt 118 das
Definieren einer Funktion, die eine IC während des Systembetriebs durchführen soll,
die z.B. eine arithmetische Logikeinheit einer digitalen Signalprozessor-Funktion
enthalten kann. Bei Schritt 120 wird der Funktionsabschnitt
der IC entworfen. Bei Schritt 122 werden die funktionellen
und die BIST-Elemente der IC zusammengefügt, und die in Schritt 112 bis 120 bestimmten
Schaltungsblöcke werden
angeordnet und somit Wegleitungsverbindungen zwischen ihnen bestimmt.
Bei Schritt 124 wird die Anordnung und Wegleitungsinformation
verwendet, um eine oder mehrere Masken zur Verwendung bei der Herstellung
eines IC-Chips zu erzeugen.
-
Die
Definition des BIST-Systems enthält
das Zuführen
von Information in den in 1B gezeigten Kategorien.
Um die Anwendung dieser Erfindung so leicht wie möglich zu
machen, verwendet dieses Ausführungsbeispiel
der vorliegenden Erfindung eine strukturierte Eingabe für die Information
von 1B, wie z.B. Auswahlmenüs oder auszufüllende Formulare,
wobei dies jedoch nicht notwendig ist.
-
Die
Speichertyp-Kategorie 152 bezieht sich auf die Art des
Speichers, der durch die BIST-Schaltung getestet wird. Unter den
Arten des Speichers sind DRAM, SRAM und EEPROM enthalten, doch sind
sie nicht hierauf beschränkt.
Die Art des getesteten Speichers schlägt weitere Merkmale der BIST-Schaltung
vor. So kann z.B. die Art des Speichers anzeigen, welche Arten von
Steuerungssignalen benötigt
werden und welche Arten unnötig
sind.
-
Die
Steuerungssignal-Definition-Kategorie 158 bezieht sich
auf die Art der gewünschten
Steuerungssignale, wie z.B. "Lesen" oder "Schreiben". Das Hinzufügen von
Steuerungssignalen ermöglicht
ein ausführlicheres
Testen und Diagnostizieren, wobei eine Abwägung mit der Benötigung von
mehr Chipraum für
Leitungen zum Führen
der Signale erfolgt.
-
Die
Adressen-Sequenzen-Kategorie 160 bezieht sich auf eine
Reihenfolge, in der Adressen innerhalb eines Adressenraums adressiert
werden sollen.
-
Eine
Datenmuster-Kategorie 162 bezieht sich auf ein in ein Wort
geschriebenes Muster. So könnte
z.B. ein 4-Wort-Datenmuster,
das 16-Bit-Wörter
verwendet, aus lauter "Nullen" (0000 hex), aus lauter "Einsen" (FFFF hex), aus
hex S5S5, hex AAAA, etc. bestehen.
-
Eine
Testmuster-Kategorie 164 bezieht sich auf die Art der Aktionssequenz/Sequenzen,
die während
eines Tests durchgeführt
wird/werden. Bei einer Aktionssequenz handelt es sich z.B. um Lese[Datenmuster
0]/Schreibe[Datenmuster i1]/Lese[Datenmuster 11] mit ausgewählten Adressensequenz.
-
Eine
BIST-Entwurfsoptionen-Kategorie 168 bezieht sich auf benutzer-selektierbare
Merkmale der BIST-Schaltung. Diese Optionen können z.B. enthalten, ob die
Zeilen- und Spalten-Adressenräume segmentiert
werden, wie dies in einer ebenfalls anhängigen und ebenfalls übertragenen
Anmeldung mit der Seriennummer 08/917013 beschrieben ist mit dem Titel "Method and Apparatus
for Built-In Self Test of Integrated Circuits Providing for Separate
Row and Column Addresses",
die hier durch Bezugnahme in ihrer Gesamtheit für sämtliche Zwecke mit aufgenommen
wird.
-
2 zeigt
ein Flussdiagramm 200 für
die Generierung der Haupt-BIST-Steuerungsvorrichtung.
-
Bei
Schritt 204 wird ein Zähler
für die
Anzahl der Takte pro Aktion generiert. Dieser Zähler hängt von der Lese/Schreib-Zeitabstimmungsinformation von
der BIST-Definition ab (siehe Kategorie 166 der 1B).
Die Länge
des Zählers
kann einen niedrigen Wert von 1092 haben (Anzahl der Takte pro Aktion).
Für die
meisten Speicher führt
dies zu einem Zähler
mit einer kleinen Anzahl von Stufen. In gewissen Fällen, insbesondere
bei nicht-flüchtigen
Speichern, kann der Zähler
bis zu 10 Stufen haben. In solchen Fällen kann man die Verwendung
eines Schieberegisters mit linearer Rückkopplung (LFSR), anstatt
die Verwendung eines Welligkeitszählers auswählen, wobei jedoch jede Form
des Zählers
akzeptabel ist.
-
Andere
Zähler
werden ähnlich
definiert für die
Anzahl der Aktionen pro Adresse, die Anzahl der Aktionssequenzen
pro Test, sowie der Anzahl der Adressen bei den jeweiligen Schritten 206, 208 und 210.
Einen Unterschied zwischen der Anzahl der Aktionen pro Adresse und
der Anzahl der Aktionen pro Test erkennt man, wenn man ein Beispiel
betrachtet. Man nehme an, dass der Test darin besteht, in einer Adressensequenz
alle "Nullen" zu schreiben, alle "Nullen" zu lesen und alle "Einsen" zu schreiben und dann
in einer weiteren Adressensequenz alle "Einsen" zu lesen, alle "Nullen" zu schreiben und alle "Nullen" zu lesen. In diesem
Beispiel gibt es drei Aktionen pro Adresse (das heisst jede Adresse
erfährt ein
Gemisch aus dreimal Lesen und Schreiben, bevor sich die Adresse ändert),
jedoch sechs Aktionen pro Testsequenz.
-
Eine
Definition der Zählergleichungen
folgt aus der Kenntnis der Anzahl von Gegenständen, die jeder Zähler zählen muss.
Die Anzahl der Stufen für alle
diese Zähler
einschliesslich der Adressenzähler kann
einen niedrigen Wert von log2 haben (Anzahl der gezählten Gegenstände). Hiervon
ausgehend können
bekannte Techniken verwendet werden, um die Gleichungen für diese
Zähler
zu definieren. So kann z.B. Synthese-Software, die von Exemplar
Logic, Inc., einer Gesellschaft mit Sitz in Alameda, Californien,
unter dem Handelsnamen "Leonardo(TM)" hergestellt wird,
die Zählergleichungen
auf der Grundlage einer Kenntnis der Anzahl der gezählten Gegenstände erzeugen.
-
Die
Definition eines Steuerungs-Freigabe-Generators erfolgt bei Schritt 212.
Die Steuerungs-Freigabe-Generator-Definition hängt von den ausgewählten Steuerungssignalen
ab (siehe Steuerungssignal-Definition-Kategorie 158 in 1B).
Ein Entwurf dieser Schaltung und derjenigen, die in Schritt 214-218 folgen,
kann durch die Synthese-Software generiert werden, die von Exemplar
Logic, Inc., einer Gesellschaft mit Sitz in Alameda, Californien,
unter dem Handelsnamen "Leonardo(TM)" hergestellt wird.
-
Bei
Schritt 214 wird ein Codierte-Daten-Generator definiert.
Die Codierte-Daten-Generator-Gleichungen können durch das Verfahren gefunden
werden, das in einer verwandten Anmeldung mit der Seriennummer 08/697968
beschrieben ist unter dem Titel "Efficient
Filtering of Differing Address Spaces in Built-In Self Test for
Embedded Memories",
die ebenfalls auf den Namen des Anmelders dieser Anmeldung läuft und
durch Verweis in ihrer Gesamtheit für alle Zwecke hier enthalten
ist.
-
Bei
Schritt 216 erfolgt eine Definition eines Steuerungssignal-Generators.
Der Steuerungssignal-Generator hängt
von den BIST-Optionen ab. Es können
mehrere Optionen für
diesen Generator auf der Grundlage der erlaubten BIST-Optionen vorab entworfen
werden. Der richtige Entwurf wird auf der Grundlage der ausgewählten Optionen
ausgewählt.
-
Bei
Schritt 218 erfolgt eine Definition einer Finite-Zustände-Maschine.
Die Finite-Zustände-Maschine
ist abhängig
von der Anzahl der Tests auf eine vorbestimmte Weise, weshalb ihre
Entwurfsgleichungen generiert werden, sobald die Anzahl der Tests definiert
ist.
-
Bei
Schritt 220 erfolgt die Definition von Signal-Wegleitungen zwischen
den zuvor definierten Blöcken.
Ein Beispiel der Signal-Wegleitung ist in 3 gezeigt.
Die "Cell Ensemble" Software, gefertigt
von Cadence Design Systems, Inc., eine Gesellschaft mit Sitz in
San Jose, Californien, kann die Schaltungsblock-Anordnung und die
Signal-Wegleitung zwischen den Schaltungsblöcken bestimmen. Dieselbe Software
kann verwendet werden, um die Schaltungsblock-Anordnung und die
Wegleitung der integrierten BIST- und IC-Schaltungen zu bestimmen (siehe
Schritt 122 von 1A).
-
3 zeigt
ein Blockdiagramm einer Haupt-Steuerungsvorrichtung.
Die Haupt-Steuerungsvorrichtung enthält vorwiegend Zähler, weil Zähler so
entworfen werden können,
dass sie sowohl kompakt sind (das heisst eine kleine Entwurfsfläche belegen)
und zu einem Betrieb mit voller Betriebs-Taktgeschwindigkeit in
der Lage sind. In dieser Schaltung steuert eine Haupt-Finite-Zustände-Maschine 20 vier
Zähler 21, 22, 23 und 24 mit
einem Zustandssignal 29 an. Ein Warte-Zustand-Zähler 24 zählt die
Anzahl der Takte pro Aktion und leitet die Ergebnisse zu einem Aktionszähler 23 und
dem Steuerungs-Freigabe-Generator 26. Der Aktionszähler zählt die
Anzahl der verschiedenen Aktionen pro Adresse und leitet die Ergebnisse
zu der Haupt-Finite-Zustände-Maschine 20,
dem Steuerungs-Freigabe-Generator, einem Codierte-Daten-Generator 50, einem
Muster-Zähler 22,
einem Adressenzähler 21 und
einem Generator von Steuerungssignalen für andere Module 25.
-
Der
Adressenzähler
empfängt
das Zustandsignal und ein Aktion-Getan-Signal 32 und
generiert einen Adressen-Zählwert 30,
der zu dem Steuerungssignal-Generator geleitet wird (z.B. ein kleiner Block
aus kombinatorischer Logik), der dieses Signal mit dem Zustandssignal
und dem Aktion-Getan-Signal kombiniert, um ein BIST-Getan-Signal,
ein Diagnose/Schiebe-Signal 17, ein Adressentakt-Signal 13, ein
Adressen-Initialisier-Signal 14 und
ein Adressen-Rücksetz-Signal 15 zu
generieren. Diese Signale werden allesamt zu der verteilten BIST-Schaltung gesendet,
die sich bei den Speicherblöcken
befindet, die getestet werden sollen.
-
Der
Codierte-Daten-Generator empfängt
das Muster-Komplett-Signal,
das Zustandssignal und das Aktion-Komplett-Signal und generiert
codierte Datenmuster. Diese codierten Daten werden zu einem Decodierer 60 gesendet
(siehe 5), der sich bei den zu testenden Speichern befindet.
-
Der
Steuerungs-Freigabe-Generator 26 kombiniert das Zustandssignal,
das Aktion-Komplett-Signal, das Muster-Komplett-Signal und das Warten-Komplett-Signal,
um ein Steuerungs-Freigabe-Signal 11,
ein Incrementier/Decrementier-Signal 16 und ein Lese-Freigabe-Signal 18 zu
bilden. Diese Signale werden ebenfalls zu der verteilten BIST-Schaltung
gesendet (siehe 5 und die zugehörige Diskussion).
-
Ein
Verfahren 400 zum Generieren der Gleichungen für die restliche
BIST-Schaltung ist in 4 dargestellt. Der Prozess beginnt
bei Schritt 402 und schreitet zu Schritt 404 fort,
um die Haupt-Steuerungsvorrichtung für die größte Anordnung auf die zuvor
beschriebene Art und Weise zu definieren: Gleichungen für den Daten-Decodierer,
der dem Daten-Codierer
in der Haupt-Steuerungsvorrichtung entspricht, werden dann bei Schritt 406 generiert.
Bei den Schritten 408 und 410 werden ein Adressen-Generator
bzw. ein Daten-Komparator definiert. Der Adressen-Generator und
der Daten-Komparator können
definiert werden gemäss
der Beschreibungen der verwandten Anmeldungen mit der Seriennummer 08/707062
mit dem Titel "Efficient
Built-In Self Test for Embedded Memories with Differing Address
Spaces" und mit
der Seriennummer 08/697969 mit dem Titel "Method and Apparatus for Built-In Self
Test of Integrated Circuits",
die ebenfalls auf den Anmelder der vorliegenden Anmeldung laufen
und hiermit in ihrer Gesamtheit für alle Zwecke durch Verweis
enthalten sind. Falls die Entwurfsoptionen eine bei Schritt 412 zu
definierende Entzerrungsschaltung enthalten, wird ein entsprechender
Entwurf in den verwandten Anmeldungen mit der Seriennummer 08/697968
und in der ebenfalls anhängigen
und ebenfalls übertragenen
Anmeldung mit der Nummer 08/917013 mit dem Titel "Method and Apparatus
for Built-In Self Test of Integrated Circuits Providing for Separate
Row and Column Adresses" vorgeschlagen
(auf beide wurde weiter oben verwiesen). Anschließend kann
bei Schritt 414 die Wegleitung definiert werden. Dies vervollständigt den
Entwurf der BIST-Schaltung für
diese Anordnung. Der Rest von 4 wird in
Verbindung mit der Funktionsweise dieses Ausführungsbeispiels der vorliegenden
Erfindung diskutiert.
-
Ein
Ausführungsbeispiel
eines Entwurfs gemäss
der Lehre dieser Erfindung ist in 5 gezeigt. Eine
BIST-Schaltung, wie z.B. die in 5 gezeigte, kann
durch einen Logik-Synthetisierer
generiert werden, der Eingabe-Daten in einer Entwurfssprache empfängt, welche
die durchzuführende
Funktion beschreibt. Diejenigen Leitungen, bei denen es sich tatsächlich um
Busse handelt, sind mit einer diagonalen Linie durch sie hindurch
gekennzeichnet, wie z.B. das Decodierte-Daten-Signal 103 zwischen einer lokalen
Zeitabstimmungs-Entzerrungsschaltung 90 und
einem getesteten Speicher 100. Die Haupt-Steuerungsvorrichtung 10 ist
links von der gestrichelten Linie gezeigt. Blöcke, die auf der rechten Seite
von der gestrichelten Linie erscheinen, sind verteilt, und zwar
einer pro geprüftem
eingebetteten Speicher. Es sind die lokalen Logikblöcke gezeigt,
die einem Speicher zugeordnet sind.
-
Im
allgemeinen gibt es einen dieser lokalen Logikblöcke für jeden Speicher. Die Blöcke, die
für die
BIST-Funktion verteilt sind, sind ein Adressen-Generator 40,
ein Daten-Decodierer 60,
ein Daten-Komparator 80 und eine lokale Zeitabstimmungs-Entzerrungsschaltung 90.
In dem gezeigten Ausführungsbeispiel
ist nur eine der Leitungen, die von der zentralen Steuerungsvorrichtung
zu den verteilten Blöcken
verlaufen, ein Bus, und zwar die Codierte-Daten-Leitung 12.
Selbst für
diesen Bus ist der Anzahl der Leitungen in dem Bus kleiner oder
gleich zu log2 (Anzahl der Muster) bei einer Codierschaltung, welche
die Breite des Codierte-Daten-Busses richtig minimiert, wie dies
in einer verwandten Anmeldung mit der Seriennummer 08/697969 gezeigt
ist (auf sie wurde weiter oben verwiesen). Die kleine Anzahl von
Leitungen, die einer Wegleitung unterzogen werden müssen, trägt dazu
bei, diese Erfindung effizient zu machen.
-
Die
Haupt-Steuerungsvorrichtung koordiniert und synchronisiert die Tests,
die an den individuellen Speichern durchgeführt werden. Das Adressen-Taktsignal 13,
das Adressen-Initialisierungs-Signal 14, das
Adressen-Rücksetzsignal 15 und
das Inkrementier/Dekrementier-Signal 16 steuern die Generierung der
Adressen für
den Speicher.
-
Die
Decodiervorrichtung 60 decodiert die Musterinformation
und liefert Daten zu dem getesteten Speicher 100. Diese
Daten werden decodiert und auf den Datenbus 103 bestätigt. Die
Signal auf dem Datenbus, einem Adressenbus 101 und einer
Steuerungsleitung 102 wirken auf den Speicher ein, indem sie
von allen Speicherorten in beiden Polaritäten mit unterschiedlichen Adressensequenzen
schreiben und lesen.
-
Die
lokale Zeitabstimmung-Entzerrungsschaltung 90 erzeugt eine
Impuls-Formung und eine Rand-Anordnung für das Adressen-, das Steuerungs-
und das Decodierte-Daten-Signal für jeden lokalen Speicher. Die
Entzerrungsschalung verringert Probleme, die im Zusammenhang mit
dem Zugriff auf unterschiedliche eingebettete Speicher auftreten,
die um Entfernungen beabstandet sind, bei denen Zeitabstimmungsprobleme
auftreten könnten,
wie z.B. 1 cm oder mehr. Bei einigen Fällen mögen diese Schaltungen nicht
notwenig sein, wodurch die bei der Implementierung dieser Erfindung
verwendete Fläche noch
weiter verringert wird.
-
Der
Daten-Komparator 80 vergleicht aus dem Speicher 100 ausgelesene
Daten mit entsprechenden Eingabedaten und berichtet die Ergebnisse, nämlich bestanden/nichtbestanden,
unter der Steuerung eines Lese-Freigabe-Signals 18 und
eines Diagnose/Schiebe-Signals 17. Sollte die Information
als bewertbar erachtet werden, ermöglicht das Hinzufügen von
zwei Leitungen, dass der Daten-Komparator den Adressenort eines
beliebigen fehlerhaften Bits zurück
zu der Steuerungsvorrichtung berichtet. Diese Information kann mit
Information kombiniert werden bezüglich der Art des Musters und
der Daten-Polarität,
die den Fehler verursacht hat, und eine externe Testvorrichtung
für eine
weitere Analyse, Redundanz-Reparatur oder andere Aktionen berichtet
werden.
-
Wie
man in 4 sieht, erfolgt nach dem Auffinden der Gleichungen
für die
BIST-Schaltung für die
größte Anordnung
eine Überprüfung, um
zu sehen, ob es bei Schritt 416 noch mehr Anordnungen gibt.
Wenn noch mehr Anordnungen vorhanden sind, wird die nächstgrößere Anordnung
ausgewählt.
-
Bei
Schritt 418 wird überprüft, ob die
nächstgrößere Anordnung
die Zeitabstimmung der Anordnung hat, für die der BIST-Entwurf abgeschlossen wurde.
-
Wenn
sich die Zeitabstimmungen der beiden Anordnungen unterscheiden,
wird die nächstgrößere Anordnung
für eine
spätere
Bearbeitung bei Schritt 419 abgetrennt. Die Anordnungs-Zeitabstimmungen können sich
z.B. unterscheiden, wenn ein SRAM und ein nicht-flüchtiger
Speicher auf derselben IC eingebettet sind.
-
Wenn
die Zeitabstimmungen bei den Anordnungen gleich sind, schreitet
der Prozess zu Schritt 420 fort, wo der Adressen-Generator und der
Daten-Komparator dupliziert werden. Da die Kosten des zusätzlichen
ungenutzten Datenmusters gering ist, schlägt eine gute Entwurfspraxis
vor, dass die Datenmuster für
Anordnungen mit üblicher
Zeitabstimmung üblich
sind. Es gibt keine Anforderung, dass die Testmuster alle der verfügbaren Datenmuster
verwenden. Dies ermöglicht,
dass alle Anordnungen mit einer üblichen
Zeitabstimmung dieselbe Steuerungsvorrichtung und denselben Codierte-Daten-Bus
verwenden und die Tests zur gleichen Zeit durchführen.
-
Nach
dem Duplizieren des Adressen-Generators, des Daten-Decodierers und des
Daten-Komparators wird bei Schritt 422 eine Überprüfung durchgeführt, ob
die nächstgrößere Anordnung
denselben Adressenraum wie der Vorgänger hat oder nicht.
-
Wenn
die Adressenräume
der beiden Anordnungen unterschiedlich sind, fügt der Prozess Adressen-Filterungsschaltungen
bei Schritt 424 zu und definiert die Signal-Wegleitung
bei Schritt 426. Ein Beispiel einer Adressen-Filterung
ist in einer verwandten Anmeldung mit der Seriennummer 08/967968
beschrieben (weiter oben zitiert).
-
Wenn
die Adressenräume
der beiden Anordnungen dieselben sind, werden die Gleichungen für die Entzerrung
und die Wegleitung der vorhergehenden Anordnung bei Schritt 428 dupliziert.
-
Der
Prozess kehrt dann zu Schritt 416 zurück und überprüft, ob es noch weitere Anordnungen
gibt. Falls dies der Fall ist, wird die Schleife fortgesetzt.
-
Wenn
es keine weiteren Anordnungen mit der Zeitabstimmung der ursprünglichen
Anordnung gibt, für
welche die BIST-Entwurfsgleichungen
erzeugt werden, wird bei Schritt 430 überprüft, ob irgendwelche Anordnungen
wegen einer unterschiedlichen Zeitabstimmung abgetrennt wurden.
Falls dies der Fall ist, werden die Gleichungen für eine zweite Haupt-Steuerungsvorrichtung
bei Schritt 432 generiert. Man folgt dann demselben Weg
zum Generieren der Gleichungen für
die andere BIST-Schaltung, wobei man bei Schritt 406 beginnt.
Dieser Prozess wird fortgesetzt, bis die Entwurfsgleichungen für alle BIST-Schaltungen
gefunden sind, wonach der Prozess bei Schritt 434 gestoppt
wird.
-
Die
obige Beschreibung dient der Veranschaulichung und ist nicht einschränkend aufzufassen.
Zahlreiche Veränderungen
der Erfindung ergeben sich dem Fachmann beim Lesen dieser Offenbarung.
So können
z.B. zahlreiche Adressenräume
und andere Datenmuster verwendet werden, die zu anderen Logik-Gleichungen und Logik-Diagrammen
führen
würden.
Darüber
hinaus können
dieselben Logik-Funktionen auf zahlreiche Arten und Weisen realisiert
werden. Der Umfang der Erfindung sollte daher nicht unter Bezugnahme
auf die obige Beschreibung, sondern vielmehr unter Bezugnahme auf
die beigefügten
Ansprüche
bestimmt werden.