-
Hintergrund
-
Anwendungsspezifische
integrierte Schaltungen (ASICs) müssen unter einer Vielfalt von
Umständen
getestet werden. Beispielsweise erfordert eine ASIC während der
Entwicklung im Allgemeinen gründliches
Testen und Fehlerbeseitigung, um den Entwurf der integrierten Schaltung
zu verifizieren oder festzulegen. Während der Herstellung müssen ASICs
im Allgemeinen getestet werden, um gute Chips von schlechten Chips
zu trennen. Während
der Verwendung wird eine ASIC häufig
getestet, um zu bestimmen, ob die integrierte Schaltung in einem System
ordnungsgemäß funktioniert.
-
Ein
Verfahren zum Testen einer ASIC während der Herstellung verwendet
einen herkömmlichen
ASIC-Tester, wie z. B. einen Agilent-83000-F330, um Testmuster an
die Anschlüsse der
ASIC anzulegen. Die Testmuster führen
idealerweise alle funktionalen Wege der ASIC aus und können alle
Defekte in der ASIC aufdecken. Das Entwickeln der Testmuster, die
für gründliches
Testen erforderlich sind, kann erheblichen Entwicklungsaufwand bedeuten.
Insbesondere kann das Entwickeln eines Testmusters, das alle funktionalen
Wege in mehreren funktionalen Einheiten, einschließlich eingebettetem
Speicher, ausführt,
schwierig sein. Wenn eine ASIC außerdem eine Schnittstelle zu
einem externen Speicher umfasst, müssen die Testmuster den externen
Speicher emulieren, und das Entwickeln eines Testmusters, das die
Zeitgebung eines externen Hochgeschwindigkeitsspeichers emuliert,
kann zeitaufwändig
sein, insbesondere wenn die ASIC eine serielle Schnittstelle verwendet,
um den Pinzählwert zu
reduzieren.
-
Selbst
wenn ein erschöpfendes
Testmuster entwickelt wird, erfordert das Durchführen eines komplexen Testmusters
während
des Testens einer ASIC im Allgemeinen Zeit, was potentiell die Herstellungskosten
der ASIC erhöht.
Weniger erschöpfende Testmuster
können
Testzeiten reduzieren, aber es kann sein, dass einfachere Testmuster
nicht so viele Defekte erfassen, was dazu führt, dass mehr defekte Chips
zu Kunden geliefert werden.
-
Eine
weitere Beschränkung
von ASIC-Tests, die einen Tester erfordern, ist, dass solche Tests
auf die Herstellung oder Entwicklung der ASICs beschränkt sind,
und allgemein unpraktisch sind zum Testen einer ASIC in einem kommerziellen
Produkt oder System. Folglich benötigen ASICs zumindest zwei
Typen von Tests, einen Test, der mit einem externen Test implementiert
wird, und einen eingebauten Selbsttest (BIST; BIST = built-in-self-test),
den die ASIC in einem Produkt durchführt. Das Entwickeln beider
Tests erfordert doppelten Aufwand und doppelte Kosten.
-
BIST-Tests
werden allgemein unter Verwendung spezieller BIST-Logik implementiert,
die bei einem Versuch, die Logikwege auszuführen, deterministische Signalmuster
anlegt. Das Entwickeln von BIST-Logik, die erschöpfende Tests durchführt, ist schwierig,
sowohl weil es keine Garantie gibt, dass die ausgeübten Wege
die tatsächlichen
funktionalen Wege sind, und weil das Erzeugen der Testlogik häufig spezialisierte
Entwicklungstools erfordert. Sobald sie hergestellt ist, ist eine
solche Logik häufig
kompliziert, erhöht
die Größe und Kosten
der ASICs und kann Mehraufwand sein, der die Leistungsfähigkeit der
ASIC verringert.
-
Bezüglich der
Schwierigkeiten im Zusammenhang mit dem Testen werden effizientere
Testverfahren und Strukturen gesucht zum Testen von ASICs während Entwicklung,
Herstellung und Verwendung.
-
Die
US 6,230,290 B1 offenbart
ein Verfahren eines selbstprogrammierbaren eingebauten Selbsttests
(BIST) für
einen DRAM. Der DRAM, der ein DRAM-Chip sein kann, umfasst einen
DRAM-Kern, einen Mikrocode oder Anfangsbefehls-ROM, eine BIST-Maschine,
ein Befehlsregister und eine Selbstprogrammierschaltung. Während des
Selbsttests kann die BIST-Maschine
den DRAM normalerweise testen, bis ein Fehler auftritt, und der
Fehler ausgegeben wird. Wenn ein Fehler auftritt, startet die Selbstprogrammierschaltung
die Selbsttestprozedur neu bei weniger strengen Bedingungen. Optional, wenn
der DRAM DRAM-fehlerfrei getestet wird, kann die Selbstprogrammierschaltung
das Testen bei strengeren Bedingungen neu starten, um die DRAM-Funktionalitätsgrenzen
zu bestimmen.
-
Die
DE 198 35 258 A beschreibt
eine integrierte Schaltung mit einer Selbsttestvorrichtung. Die integrierte
Schaltung umfasst einen Programmspeicher mit zumindest einem externen
Anschluss zum Empfangen externer Testprogramme. Ferner ist eine Selbsttestvorrichtung
vorgesehen, die mit dem Programmspeicher zum Ausführen eines
Selbsttests der Schaltung verbunden ist. Die Selbsttestvorrichtung weist
einen Eingang auf zum Empfangen eines Unterbrechungssignals, auf
der Basis dessen ein ausgeführtes
Testprogramm unterbrochen werden kann. Während des Testens liefert die
Selbsttestvorrichtung Testsignale an die Schaltungseinheit, die
zu testen ist, und empfängt
ansprechend darauf Ausgabesignale von der Schaltungseinheit, die
zu testen ist. Die Selbsttestvorrichtung vergleicht ferner die Signale,
die von der Schaltungseinheit empfangen werden, die zu testen ist,
mit erwarteten Werten für
die Signale und gibt ein jeweiliges Ergebnissignal aus.
-
Es
ist die Aufgabe der vorliegenden Erfindung, effizientere Teststrukturen
und Verfahren zum Testen von ASICs während Entwicklung, Herstellung und
Verwendung zu schaffen.
-
Diese
Aufgabe wird durch eine integrierte Schaltung gemäß Anspruch
1 und durch ein Verfahren gemäß Anspruch
4 gelöst.
-
Zusammenfassung
-
Gemäß einem
Aspekt der Erfindung führt eine
ASIC mit einem eingebetteten Prozessor Testroutinen aus, um den
Betrieb der ASIC zu testen. Die Testroutinen können Bei-Geschwindigkeit-Funktionstests von Schaltungsblöcken wie
z. B. eingebettetem Speicher, Codierern und Decodierern und Schnittstellen
zu externen Geräten
durchführen.
Die Testimplementierung erfordert eine kleine Menge an IC-Fläche, die
dem Speicher zugeordnet ist, der die Testroutinen speichert. Externe
Testausrüstung
kann ein einfaches Testmuster verwenden, das bei einem Ausführungsbeispiel
der Erfindung nur drei Pins der ASIC umfasst. Folglich kann das
Herstellungstesten schnell durchgeführt werden, mit einfacher Testausrüstung und
ohne die ASIC mit komplexer Testlogik zu belasten. Außerdem können die
gleichen oder ähnlichen
Testroutinen in dem eingebetteten Speicher in einem Selbsttest verwendet
werden, wenn die ASIC in einem Produkt ist.
-
Ein
Ausführungsbeispiel
der Erfindung ist eine integrierte Schaltung, die einen Verarbeitungskern
und einen nichtflüchtigen
Speicher umfasst, der Testroutinen enthält, die der Verarbeitungskern
ausführt,
um die integrierte Schaltung zu testen. Ein Schnittstellenblock
in der integrierten Schaltung kann Signale handhaben, die dem Testen
zugeordnet sind. Insbesondere führt
der Verarbeitungskern die Testroutinen aus, die gemäß Steuersignalen
ausgewählt
werden, die über
den Schnittstellenblock eingegeben werden.
-
Bei
einem Ausführungsbeispiel
umfasst der Schnittstellenblock einen ersten und einen zweiten Anschluss.
Der Verarbeitungskern verwendet ein erstes Signal auf dem ersten
Anschluss, um ein Testergebnis anzuzeigen, d. h. um anzuzeigen,
ob die Ausführung
der Testroutinen einen Defekt in der integrierten Schaltung erfasst
hat. Auf dem zweiten Anschluss aktiviert der Verarbeitungskern ein
zweites Signal, um anzuzeigen, wenn das erste Signal das Testergeb nis
anzeigt. Ein dritter Anschluss kann ein Steuersignal empfangen für die Auswahl
der Testroutinen von dem eingebetteten Speicher für einen
Herstellungstest oder einen Systemebenentest oder für die Auswahl
der Ausführung
von Firmware, die von dem externen Speicher heruntergeladen wird.
-
Funktionsblöcke in der
integrierten Schaltung können
Datenwege umfassen, die Softwaretesten der Blöcke ermöglichen. Beispielsweise kann
ein Eingabepuffer, der normalerweise Dateneingabe von einer externen
Quelle empfängt,
verbunden sein, so dass der Prozessor in den Eingabepuffer schreiben kann,
um Datenfluss durch den Eingabepuffer zu testen. Um den Bedarf an
Testroutinen zu reduzieren, die einen gesamten Datenstrom überwachen,
können
Prüfcode-
oder CRC-Rechner
zu spezifischen Einheiten hinzugefügt werden, um einen Code zu
liefern, der ohne weiteres geprüft
werden kann, um Fehler zu erfassen. Weitere Rückschleifenfähigkeiten
können
hinzugefügt
werden, um das Testen der Daten in die und aus den Netzwerkschnittstellen
zu ermöglichen.
-
Ein
weiteres Ausführungsbeispiel
der Erfindung ist ein Testverfahren für eine integrierte Schaltung.
Das Testverfahren verwendet einen eingebetteten Verarbeitungskern
in der integrierten Schaltung, um Testroutinen auszuführen, die
in einem eingebetteten nicht-flüchtigen
Speicher in der integrierten Schaltung gespeichert sind. Die Testroutinen
können komplizierte
Tests implementieren, wie z. B. erschöpfendes Testen eines internen
Speichers oder anderer Funktionsblöcke der integrierten Schaltung,
und ein Signal ausgeben, das ein Tester beobachtet, um ein Testergebnis
zu bestimmen. Allgemein zeigt ein erstes Signal an, ob die Ausführung der
Testroutinen einen Ausfall in der integrierten Schaltung erfasst
hat. Der Verarbeitungskern beim Ausführen der Testroutinen kann
ein zweites Signal aktivieren, um anzuzeigen, wenn ein Zustand des
ersten Signals anzeigt, ob die Testroutinen einen Ausfall erfasst
haben. Das erste Signal kann vor der Aktivierung des zweiten Signals
aktiviert werden, um zu bestätigen
oder zu signalisieren, dass der Verarbeitungskern die Testroutinen
ausführt.
Ein oder mehrere zusätzliche
Signale von der integrierten Schaltung können einen Typ oder Position
eines Ausfalls anzeigen, den das Ausführen der Testroutinen erfasst
hat.
-
Ein
Tester weist somit während
des Herstellungstestens der integrierten Schaltung ein einfaches Testmuster
auf, das nur wenige Pins umfasst, aber ein Testergebnis von einem
erschöpfenden
Test erhält,
der in den Testroutinen implementiert ist. Außerdem kann die Schaltungsanordnung
des Systems während
der Verwendung der integrierten Schaltung in einem System ohne weiteres
einen Test in der integrierten Schaltung einleiten und Ergebnisse überwachen.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm einer ASIC mit Selbsttestfähigkeiten gemäß einem
Ausführungsbeispiel
der Erfindung.
-
2A und 2B sind
Zeitdiagramme von Ausgangssignalen für einen bestandenen Selbsttest bzw.
einen fehlgeschlagenen Selbsttest.
-
3 ist
ein Flussdiagramm eines externen Speicherabschnitts eines Testprozesses
gemäß der Erfindung.
-
4 ist
ein Blockdiagramm einer ASIC, die mit Testausrüstung für die Herstellungstesten gemäß einem
Ausführungsbeispiel
der Erfindung verbunden ist.
-
5 ist
ein Blockdiagramm einer ASIC in einem System, die in der Lage ist
für Systemebenentesten
gemäß einem
Ausführungsbeispiel
des Testens.
-
Die
Verwendung der gleichen Bezugssymbole in unterschiedlichen Figuren
zeigt ähnliche
oder identische Elemente an.
-
Detaillierte
Beschreibung
-
Gemäß einem
Aspekt der Erfindung weist eine ASIC mit einem eingebetteten Prozessor
Testroutinen in einem eingebetteten Speicher auf. Der eingebettete
Prozessor führt
die Testroutinen aus, um den Betrieb der ASIC zu testen. Die Testroutinen können für ASIC-Herstellungstests
und Systemebenen-Einschaltselbsttests
verwendet werden. Für hochintegrierte
Schaltungen, die bereits einen eingebetteten ROM enthalten, ist
die Mehraufwandlogik für diese
Selbsttestfunktionen minimal.
-
1 ist
ein Blockdiagramm einer ASIC 100 gemäß einem beispielhaften Ausführungsbeispiel der
Erfindung. In 1 ist die ASIC 100 ein
Formatierer für
einen Drucker und würde
bei einem Endprodukt teilnehmen bei der Kommunikation zwischen einem
Drucker und einem Host-Computer (nicht gezeigt). Dieses beispielhafte
Ausführungsbeispiel
ist hier beschrieben, um ein konkretes Beispiel einer ASIC-Anwendung
zu liefern, aber breite Aspekte der Erfindung können weiter in jeder integrierten
Schaltung oder ASIC verwendet werden, die einen eingebetteten Prozessor
mit ausreichend Verarbeitungsleistung enthält, um die Testroutinen auszuführen. Ausführungsbeispiele
der Erfindung sind eindeutig nicht auf integrierte Schaltungen begrenzt,
die die spezifischen Funktionseinheiten der ASIC 100 enthalten.
-
Wie
es in 1 dargestellt ist, umfasst die ASIC 100 einen
Verarbeitungskern 110, einen internen Speicher 120,
eine universelle Eingabe-/Ausgabe-(GPIO-)Schnittstelle 130 und
Funktionseinheiten, die einen Codec 140, eine externe Vorrichtungsschnittstelle 150,
eine Druckmaschinenkommunikationseinheit 160, eine DMA-Einheit 170 und
Zeitschaltungen 180 umfassen. Ein mittels Entscheidungen be triebener
interner Bus 190 leitet Kommunikationssignale zwischen
den verschiedenen Blöcken
der ASIC 100.
-
Der
Verarbeitungskern 110 führt
Befehle aus, die in dem internen Speicher 120 oder dem
externen Speicher (nicht gezeigt) gespeichert werden können. Jeder
Prozessortyp kann für
den Prozessor 100 geeignet sein, aber bei einem beispielhaften Ausführungsbeispiel
der Erfindung ist der Verarbeitungskern 110 ein ARM7-Verarbeitungskern,
der von ARM-Ltd lizenziert werden kann.
-
Der
interne Speicher 120 umfasst flüchtigen Speicher, wie z. B.
DRAM 122 und SRAM 124, und nicht-flüchtigen
Speicher, wie z. B. ROM 126. Der ROM 126 kann
jeder nicht-flüchtige
Speichertyp sein, wie z. B. ein Masken-ROM, ein EPROM oder ein EEPROM
und speichert Firmware, einschließlich, aber nicht beschränkt auf
Testroutinen 128. Ein beispielhafter Satz von Testroutinen 128 ist
nachfolgend näher
beschrieben und umfasst allgemein Tests des Betriebs des internen
Speichers 120 und zugeordneter Speicherschnittstellenschaltungen
und Tests der anderen Funktionseinheiten 140, 150, 160, 170 und 180.
-
Bei
dem beispielhaften Ausführungsbeispiel arbeitet
die Schnittstelle 150 in normalem Modus, um eine Universeller-Serieller-Bus-(USB-)Schnittstelle zu
implementieren, für
eine Kommunikation mit einem Host-Computer, aber die Schnittstelle 150 kann auch
arbeiten, um Firmware herunterzuladen, wie es nachfolgend beschrieben
ist. Alternativ kann die GPIO-Schnittstelle 130 als eine
Speicherschnittstelle verwendet werden, um Firmware von einem externen Speicher
herunterzuladen, wie z. B. einem seriellen EEPROM. Heruntergeladene
Firmware kann die gesamte oder Teile der Testroutine 128 ersetzen,
wie es nachfolgend näher
beschrieben ist. Die Druckmaschinenkommunikation 160 implementiert
eine Kommunikationsschnittstelle zu einem Drucker, und DMA 170 implementiert
einen direkten Speicherzugriff für die Übertragung
von Druckbildern. Der Codec 140 führt Codier- und Decodieroperationen
an Druckbildern durch.
-
Die
GPIO-Schnittstelle 130 liefert die Steuer- und Ausgabeschnittstelle
für Selbsttestfunktionen der
ASIC 100. Insbesondere verwendet die GPIO-Schnittstelle 130 drei
Signale, ASICTEST, BISTERROR und BISTDONE. Der Verarbeitungskern 110 prüft das Eingabesignal
ASICTEST über
die GPIO-Schnittstelle 130,
um zu bestimmen, ob der Systempegel-Selbsttest oder ein ASIC-Herstellungstest
auszuführen
ist. Die Testroutinen 128 umfassen im Allgemeinen leichte
Unterschiede für
Systempegeltests oder Herstellungstests. Der Verarbeitungskern 110 steuert
die Signale BISTERROR und BISTDONE, um Testergebnisse anzuzeigen.
-
2A und 2B sind
Zeitdiagramme für die
Signale BISTERROR und BISTDONE und stellen jeweils einen bestandenen
Selbsttest und einen fehlgeschlagenen Selbsttest bei dem beispielhaften
Ausführungsbeispiel
der Erfindung dar.
-
Bei 2A führt der
Verarbeitungskern 110 Testcode 128 aus (für Herstellungs-
oder Systemebenentesten), ansprechend auf ein Zurücksetzen
der ASIC 100. Der Verarbeitungskern 110 beginnt
durch Aktivieren eines einzelnen BISTERROR für eine kurze Periode (z. B.
etwa 100 ns), um zu zeigen, dass das Signal BISTERROR funktional
ist. Externe Testausrüstung
(nicht gezeigt) erfasst ein Versagen, falls der Verarbeitungskern 110 nicht
in der Lage ist, das Signal BISTERROR innerhalb einer Periode nach der
Aktivierung des Rücksetzsignals
zu aktivieren. Nach dem Deaktivieren des Signals BISTERROR führt der
Verarbeitungskern 110 die Abschnitte der Testroutinen 128 aus,
die Eingangssteuersignale, wie z. B. das Signal ASICTEST, bestimmen.
Für das Beispiel
von 2A ist kein Fehler erfasst und der Verarbeitungskern 110 aktiviert
das Signal BISTDONE auf den Abschluss der Ausführung der Testroutine 128 hin.
Externe Testausrüstung
während
des Herstellungstestens oder der Systemschaltungsanordnung während des
In-System-Testens identifiziert den bestandenen Selbsttest von dem
Hin- und Herschalten des Signals BISTERROR gefolgt von der Aktivierung
des Signals BISTDONE, während
das Signal BISTERROR in einem Zustand ist, das keinen Fehler anzeigt
(z. B. inaktiv).
-
Bei 2B schaltet
der Verarbeitungskern 110 das einzelne BISTERROR erneut
hin und her, um zu zeigen, dass das Signal BISTERROR funktional
ist, und führt
dann die Abschnitte der Testroutinen 128 aus, die durch
die Eingangssteuersignale bestimmt werden. Für das Beispiel von 2B erfasst die
Ausführung
der Testroutinen 128 ein Versagen und der Verarbeitungskern 110 reaktiviert
das Signal BISTERROR und aktiviert dann das Signal BISTDONE, um
die Erfassung eines Testversagens anzuzeigen. Externe Testausrüstung oder
Systemschaltungsanordnung identifiziert den fehlgeschlagenen Selbsttest
von der Aktivierung des Signals BISTDONE, während das Signal BISTERROR
in einem Zustand ist, der einen Fehler anzeigt (z. B. aktiv). Der Verarbeitungskern 100 kann
ferner Ausgangssignale von der GPIO-Schnittstelle 130 verwenden,
um den Typ und/oder die Position des Defekts oder Versagens anzuzeigen.
-
Bei
dem beispielhaften Ausführungsbeispiel der
Erfindung sind Testroutinen 128 Teil des Boot-Codes, den
die ASIC 100 während
des Einschaltens ausführt,
und die Testroutinen 128 umfassen drei Hauptabschnitte,
die hierin als BIST, EEPROM und Selbsttest bezeichnet werden. Bei
dem beispielhaften Ausführungsbeispiel
der Erfindung steuert ein Steuersignal, das über die GPIO-Schnittstelle 130 eingegeben
wird, ob der Verarbeitungskern 110 die Testroutinen 128 ausführt oder
versucht, Firmware über
die Schnittstelle 130 oder 150 von dem externen Speicher
herunterzuladen. Falls Testroutinen 128 ausgeführt werden,
beginnt der Verarbeitungskern 110 mit dem BIST-Abschnitt
der Testroutinen 128.
-
Der
BIST-Abschnitt wird ausgeführt,
bevor das System eingerichtet wird, um internen Speicher oder das
interne Be triebssystem der ASIC 100 zu verwenden. Der BIST-Abschnitt
testet internen DRAM 122 und SRAM 124, z. B. durch
Durchführen ausführlicher
Schreib- und Lesemuster und Validieren, ob die gelesenen Daten korrekt
sind. Der Verarbeitungskern 110 prüft einen Fehlercode, der sich von
dem internen Speichertest ergibt, und aktiviert das Signal BISTERROR
und dann BISTDONE, falls ein Fehler erfasst wird. Falls die ASIC 100 den BIST-Test
besteht, ermöglichen
Testroutinen 128 die Verwendung einer Speichersteuerung
in der Schnittstelle 150 zum Herunterladen von Firmware
von einer externen Vorrichtung.
-
Bei
einem Ausführungsbeispiel
der Erfindung wird der BIST-Test
des internen Speichers nur für
Systemebenenselbsttests und nicht für Herstellungstests durchgeführt. Herstellungstesten
von ASICs, die internen Speicher, wie z. B. DRAM umfassen, müssen häufig die
Position von Defekten in dem Speicher identifizieren, um herkömmliche
Laserreparaturoperationen zu ermöglichen.
Um die Position eines Defekts in einem Speicherarray zu identifizieren, kann
die einfache Fehlersignalzeitgebung, die in 2A und 2B gezeigt
ist, vergrößert werden, um
zusätzliche
Ausgangssignale zu liefern, die die exakte Position jedes reparierbaren
Defekts in einem Speicherarray anzeigen. Der resultierende Anstieg der
Komplexität
der Ausgabe der Fehlersignale erhöht jedoch die Komplexität der Testroutinen 128,
so dass ein herkömmliches
Speicherarraytestverfahren für
Herstellungstesten geeignet sein kann. Für einen Systempegeltest ist
die Reparatur allgemein keine Option und der Speicher, der diese
Testroutinen 128 testet, liefert alle erforderlichen Informationen.
Wie es oben angemerkt wurde, wird bei dem beispielhaften Ausführungsbeispiel
das Signal ASICTEST aktiviert oder nicht, um anzuzeigen, ob ein
BIST von internem Speicher erforderlich ist.
-
Nachdem
die ASIC 100 den Test in dem BIST-Abschnitt der Testroutinen 128 besteht,
führt der
Verarbeitungskern 110 den EEPROM-Abschnitt der Testroutinen 128 aus. 3 ist ein
Flussdiagramm eines Prozesses 300, der in dem EEPROM-Abschnitt implementiert
ist. Der Prozess 300 in einem anfänglichen Entscheidungsschritt 310 prüft ein Steuersignal,
das über
eine GPIO-Schnittstelle 130 (z. B. einen Pin GPIO [13])
eingegeben wird. Falls das Steuersignal nicht aktiviert ist, führt der
Verarbeitungskern 110 den Selbsttestabschnitt 370 der Testroutinen 128 aus.
-
Falls
das Steuersignal aktiviert ist, versucht der Verarbeitungskern 110 bei
Schritt 320, einen externen Speicher zurückzusetzen,
wie z. B. einen externen seriellen EEPROM, und springt dann zum Ausführen der
Selbsttestroutinen 370, falls die Rücksetzoperation fehlgeschlagen
ist (z. B. weil kein externer Speicher verbunden ist). Falls die
Rücksetzoperation
erfolgreich ist, liest oder prüft
der Verarbeitungskern 110 bei Schritt 340 Identifizierungsdaten, die
in dem externen Speicher gespeichert sein sollten, und bestimmt
dann in einem Entscheidungsschritt 350, ob der externe
Speicher erwartete Informationen enthält, z. B. ob das erste Wort
einen Wert nicht gleich xFFFF hat. Falls der externe Speicher die erwarteten
Informationen enthält,
lädt der
Verarbeitungskern 110 bei Schritt 350 Firmware
zu dem internen Speicher 120 herunter und führt diese
Firmware aus, anstatt das Ausführen
der Testroutinen 128 fortzusetzen. Falls der externe Speicher
nicht die erwarteten Informationen liefert, springt der Verarbeitungskern 110 von
dem Entscheidungsschritt 350 zum Ausführen des Selbsttestabschnitts 370 der
Testroutinen 128.
-
Die
Fähigkeit,
während
des Boot-Prozesses Firmware von externem Speicher zu laden, ermöglicht die
Implementierung von Tests, die spezialisiert sind für die Fehlerbeseitigung
des Entwurfs von ASIC 100, oder spezialisiert sind für das bestimmte
System, das die ASIC 100 verwendet. Eine der vorliegenden
Anmelderin gehörende
U.S.-Patentanmeldung mit dem Titel „Point-Of-Sale Demonstration
of Computer Peripherals" beschreibt
die Verwendung der Firmwareherunterladefä higkeit zum Implementieren
von Nicht-Test-Funktionen (z. B. Bereitstellen einer Systemdemonstration).
-
Der
Selbsttestabschnitt der Testroutinen 128 verifiziert den
Betrieb der Hauptblöcke
in der ASIC 100. Insbesondere prüft der Selbsttestabschnitt
der Testroutinen 128 bei dem beispielhaften Ausführungsbeispiel
die Schnittstelle 150, den DMA-Block 170 und Codec 140.
Zusätzliches
Testen des internen Speichers 120 kann ebenfalls durchgeführt werden.
-
Die
spezifischen Tests bestimmter Blöcke hängen von
den spezifischen Funktionen des Blocks ab. Beispielsweise kann der
Verarbeitungskern 110 für
den Codec 140 Daten von dem internen Speicher 120 zu
dem Codec 140 richten, zum Codieren oder Decodieren. Der
Verarbeitungskern 110 bestimmt dann, ob die Ausgangsdaten
von dem Codec 140 mit korrekt codierten oder decodierten
Daten übereinstimmen,
die in dem ROM 126 gespeichert sind.
-
Um
Tests zu liefern, die den tatsächlichen Systembetrieb
reproduzieren, können
Testroutinen versuchen, den normalen Datenfluss in der ASIC 100 zu
emulieren. Beispielsweise beginnt ein normaler Datenfluss in dem
beispielhaften Ausführungsbeispiel
mit der Eingabe von Daten in einen Eingabe-FIFO-Puffer in der USB-Schnittstelle 150.
Der Eingabe-FIFO-Puffer kann einen normalen Eingabeweg von externen
Schaltungen umfassen, und einen alternativen Eingabeweg, der es
dem Verarbeitungskern 110 ermöglicht, Daten in den Eingabe-FIFO-Puffer
zu schreiben, um einen Datenfluss zu beginnen. Gleichartig dazu
kann der Verarbeitungskern 110 Daten in einem Ausgabepuffer
lesen, um die Datenausgabe zu prüfen.
-
Ein
Datenfluss kann von dem Eingabe-FIFO-Puffer zu dem internen Speicher 120,
von dem internen Speicher 120 zu dem Codec 140 zum Codieren,
zurück
zu dem internen Speicher 120, von dem internen Speicher 120 zu
dem Codec 140 zum Decodieren oder zu dem DMA-Block 170 verlaufen. Der
ord nungsgemäße Durchgang
von Daten durch das gesamte System liefert einen hohen Grad an Verifizierung
des Betriebs der ASIC 100. Außerdem kann das Testen eines
Datenflusses durch mehrere Funktionsblöcke den Bedarf vermeiden, jeden
Datenübertragungsschritt
getrennt zu testen, weil der Verarbeitungskern 110 die
Daten an der Endstufe des Flusses beobachten kann, um Fehler zu
erfassen. Um Fehlerprüfen
weiter zu ermöglichen,
kann der letzte Funktionsblock in dem Datenfluss, z. B. DMA-Block 170,
einen CRC-Code-Rechner umfassen, so dass der Verarbeitungskern 110 nur
einen CRC-Code anstatt
des gesamten Ausgabedatenstroms prüfen muss.
-
Obwohl
die Funktionsblöcke
des ASIC 100 in der Implementierung herkömmlich sein
können,
können
spezifische Merkmale in verschiedenen Funktionsblöcken eingebaut
sein, um Testoperationen zu ermöglichen,
die durch den eingebetteten Prozessor 110 ausgeführt werden.
Beispielsweise kann der DMA-Block 170 Schaltungsanordnung
umfassen, die die CRC-Berechnungen
durchführt,
um Fehlererfassung zu ermöglichen,
ohne zu erfordern, dass der Verarbeitungskern 110 den gesamten
Datenstrom überwacht.
Eingabeblöcke,
wie z. B. die USB-Schnittstelle 150 können Wege liefern, die es dem
Verarbeitungskern 110 erlauben, Eingangswerte in die Eingabe-FIFO-Puffer
zu schreiben, um Dateneingabe zu simulieren, wenn ein Datenfluss
getestet wird. Implementierungen von „Rückschleifentest"-Fähigkeiten
in dem Funktionsblock können Tests
ermöglichen,
die durch den Verarbeitungskern 110 ausgeführt werden.
Solche Tests wären
besonders sinnvoll zum Testen von chipinternen Netzwerk-Schnittstellen.
-
Der
Verarbeitungskern 110 kann auch Datenfluss durch die Blöcke der
ASIC 100 bei spezifischen Taktgeschwindigkeiten testen,
die bei der ASIC 100 verwendet werden, und bestimmen, ob
die Blöcke
die erforderliche Zeitgebung erfüllen.
Für dieses
Testen können
die Takt- und Rücksetzpins
der ASIC 100 während
der Herstellung oder des Systempegeltestens auf die Weise getrieben
werden, die für den
normalen Betrieb der ASIC 100 erforderlich ist. Herkömmliche
Test ausrüstung 400,
wie sie in 4 dargestellt ist, kann ohne
weiteres das Zeitsignal CLK und die Steuersignale ASICTEST implementieren,
um die ASIC bei voller Geschwindigkeit oder bei einer erhöhten Geschwindigkeit
zu testen, beispielsweise um Zeitgrenzwerte während des Herstellungstestens
zu beweisen.
-
Bei
dem obigen Testprozess kann der Verarbeitungskern 110 einen
Ausfallcode CODE liefern, zusätzlich
zum Aktivieren des Signals BISTERROR. Der Ausfallcode CODE würde die
Art oder die Position des Ausfalls anzeigen, der während des
Testens gefunden wird. Der Wert eines 2-Bit-Ausfallcodes kann beispielsweise
bestimmen, ob der erfasste Ausfall in dem internen Speicher 120,
dem Codec 140, dem DMA-Block 170 oder dem Schnittstellenblock 150 ist.
-
Bei
einem Produkt ist die ASIC 100 mit anderen Systemkomponenten 500 verbunden,
wie es z. B. in 5 dargestellt ist. Bei dem Ausführungsbeispiel von 5 ist
beispielsweise die externe Schnittstelle 150 mit einem
Host-Verbinder 510 verbunden,
für die Verbindung
zu einem Host-Computer
oder externen Speicher, und die Druckmaschinenkommunikation 160 verbindet
mit einem Druckerverbinder 520 eines Druckers. Die Takt-
und Systemsteuerschaltung 540 und ein optionaler externer
Speicher 530 verbinden mit Zeitschaltungen 180 und
der GPIO-Schnittstelle 130. Für Systempegeltesten steuert
die Systemsteuerung 540 das Signal ASICTEST, um einen Systempegeltest
auszuwählen,
und überwacht
die Signale BISTDONE und BISTERROR, um zu bestimmen, ob die ASIC 100 ordnungsgemäß funktioniert.
Wenn bei einem System, wie es in 5 dargestellt
ist, Testroutinen ausgeführt
werden, die von einem internen Speicher 120 sein können oder
von dem Speicher 530 zu der ASIC 100 heruntergeladen
werden können,
kann der Verarbeitungskern 110 die ASIC 100 und
alle anderen Systemkomponenten 500 testen.
-
Obwohl
die Erfindung mit Bezugnahme auf bestimmte Ausführungsbeispiele beschrieben
wurde, ist die Beschreibung nur ein Beispiel der Anwendung der Erfindung
und sollte nicht als Beschränkung
angesehen werden. Obwohl das oben beschriebene Ausführungsbeispiel
ein Formatierer für
einen Drucker ist, können
Ausführungsbeispiele
der Erfindung beispielsweise in anderen integrierten Schaltungstypen
verwendet werden. Verschiedene andere Adaptionen und Kombinationen
von Merkmalen der offenbarten Ausführungsbeispiele liegen innerhalb
des Schutzbereichs der Erfindung, wie er durch die folgenden Ansprüche definiert
ist.