DE3854636T2 - Automatischer Prüfprozess für logische Geräte. - Google Patents
Automatischer Prüfprozess für logische Geräte.Info
- Publication number
- DE3854636T2 DE3854636T2 DE3854636T DE3854636T DE3854636T2 DE 3854636 T2 DE3854636 T2 DE 3854636T2 DE 3854636 T DE3854636 T DE 3854636T DE 3854636 T DE3854636 T DE 3854636T DE 3854636 T2 DE3854636 T2 DE 3854636T2
- Authority
- DE
- Germany
- Prior art keywords
- state
- boolean
- predecessor
- equations
- product
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 80
- 238000012360 testing method Methods 0.000 title claims description 65
- 230000008569 process Effects 0.000 title claims description 7
- 239000013598 vector Substances 0.000 claims description 133
- 238000001514 detection method Methods 0.000 claims description 76
- 230000007704 transition Effects 0.000 claims description 32
- 230000014509 gene expression Effects 0.000 claims description 19
- 238000013138 pruning Methods 0.000 claims description 12
- 238000007781 pre-processing Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 48
- 230000003068 static effect Effects 0.000 description 7
- 239000000243 solution Substances 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000012085 test solution Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318342—Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/26—Testing of individual semiconductor devices
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318371—Methodologies therefor, e.g. algorithms, procedures
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L22/00—Testing or measuring during manufacture or treatment; Reliability measurements, i.e. testing of parts without further processing to modify the parts as such; Structural arrangements therefor
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Manufacturing & Machinery (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
Description
- Die vorliegende Erfindung bezieht sich allgemein auf automatische Testtechniken für Halbleiter-Zustandsmaschinen oder logische Geräte, deren Ausgaben eine Funktion ihrer vorherigen Zustände sowie ihrer Eingaben sind, und insbesondere auf ein Verfahren zum automatischen Erzeugen von Tests mittels einer algebraischen Rekursionstechnik, die für ein beliebiges Gerät geeignet ist, das geeignet ist, durch Boolsche Zustandsgleichungen beschrieben zu werden.
- Es gibt zwei primäre Lösungsansätze für eine automatische Testerzeugung (ATG; ATG = automatic test generation) für sequentielle Netzwerke. Der erste ist die topologische Technik, die auf dem Gatterpegel eines logischen Netzwerks arbeitet und eine schematische Überquerung der inneren Architektur des Geräts einschließt, um einen Ausgang für einen Fehler empfindlich zu machen. Die zweite ist die algebraische Technik, die unabhängig von einer speziellen architektonischen Implementierung der Gerätefunktionalität ist und sich nur mit externen Anschlußstiftfehlern befaßt. Das topologische Verfahren wurde früher verwendet, um Tests für Geräte mit kombinatorischer Logik zu erzeugen, jedoch gab es keine allgemeine Lösung für sequentielle Vorrichtungen, da das Problem der Initialisierung (das Setzen der inneren Register eines logischen Geräts auf einen bekannten Zustand) aufgrund der großen Anzahl von möglichen vorherigen Zuständen eines Geräts als schwer zu handhaben betrachtet wurde. Ein automatisiertes algebraisches Testverfahren, um statische Anschlußstiftfehler für Geräte mit seguentieller Logik schaltungsintern zu identifizieren, würde die Testentwicklung stark beschleunigen und wäre beim Implementieren von Entwürfen, die testbar sind, wertvoll.
- Die Funktion eines logischen Geräts kann durch einen Satz von Boolschen Produktsummen-Gleichungen (die Boolschen Zustandsgleichungen des Geräts) für jeden Ausgang des Geräts ausgedrückt werden. Andere Formen der Darstellung dieser Geräte schließen Wahrheitstabellen und Zustandsdiagramme ein. Jedoch muß die Verwendung des Verfahrens der vorliegenden Erfindung diese anderen Darstellungen in Boolsche Zustandsgleichungen umwandeln. Bei komplexen logischen Geräten gibt es Merkmale, die ein schaltungsinterner Testprogrammgenerator adressieren muß, um eine vollständige Testlösung zu entwickeln. Diese Merkmale sind in neueren logischen Geräten implementiert, welche konf igurierbare Makrozellen enthalten. Wenn Makrozellen vorhanden sind, kann ein Anschlußstift des Geräts als ein Eingang, ein Ausgang oder eine bidirektionale Leitung programmiert sein. Ferner gibt es eine Vielzahl von Optionen für das Konfigurieren eines Ausgangs. Ein Ausgang kann kombinatorisch oder registriert sein. Wenn der Ausgang registriert ist, können asynchrone Steuerfunktionen, wie z.B. Löschen, Setzen und Ausgang aktivieren, aktiviert werden, wenn vorbestimmte Produktterme logisch wahr sind. Außerdem kann der Takt für ein Register durch einen eindeutigen Produktterm definiert sein. Alle diese Merkmale stellen gegenwärtig Herausforderungen für eine automatische Testerzeugung dieser Geräte dar.
- Im allgemeinen können statische Anschlußstiftfehler identifiziert werden, wenn mehrere Bedingungen erfüllt sind. Erstens muß ein Zustand des Geräts eingerichtet sein, bei dem ein Ausgangsanschlußstift zu einer direkten Funktion einer speziellen Eingabe gemacht ist. Bei einem Gerät mit kombinatorischer Logik kann dieser Zustand unter der alleinigen Verwendung von Eingaben eingerichtet werden. Bei sequentiellen Geräten kann es jedoch erforderlich sein, daß interne Register auf spezifische Werte gesetzt werden müssen. Wenn dies der Fall ist, muß eine Initialisierungssequenz bestimmt werden, um die internen Register des Geräts auf den gewünschten vorbestimmten Zustand zu initialisieren oder zu setzen.
- Das D-Algorithmusverfahren wurde von Roth, J.P. "Diagnosis of Automata Failures: A Calculus and a Method," IBM J. Res. Dev., Ausg. 10, Nr. 4, Juli 1966, Seiten 278 - 291, als eine allgemeine Lösung für kombinatorische Netzwerke geboten, jedoch existiert kein derartiger Allgemeinheitsanspruch für den seguentiellen Fall. Ein Überblick der automatisierten Testerzeugungstechniken für sequentielle Netzwerke wird von Miczo in Miczo, A., "Digital Logic Testing and Simulation," New York: Harper & Row., 1986, Kap. 3, geliefert. Ein Beispiel ist Hsiao's Verfahren der Boolschen Differenzen, das Boolsche Algebra verwendet, um dem Testproblem bei sequentiellen Netzwerken zu begegnen (Hsiao, M. Y., und D. K. Chia, "Boolean Difference for Fault Detection in Asynchronous Sequential Machines," IEEE Trans. Comput. Ausgabe C-20, November 1971, Seiten 1356 - 1361). Das Verfahren der Boolschen Differenzen definiert erfolgreich einen Zustand des Netzwerks, der einen Fehler erfassen kann, schlägt jedoch keinen allgemeinen Lösungsansatz vor, um das Netzwerk auf einen gewünschten Zustand derart zu initialisieren, daß ein Test ausgeführt werden kann. Das Ziel der automatischen Testgeneratoren besteht darin, statische Anschlußstiftfehler zu isolieren, die entweder schaltungsintern oder in Testumgebungen außerhalb der Schaltung identifiziert werden können. Eine manuelle Testerzeugung für Geräte mit sequentieller Logik kann extrem zeitaufwendig sein, so daß eine automatisierte Lösung erwünscht ist, um die Testentwicklung zu vereinfachen und zu beschleunigen. Automatische Testgeneratoren existieren für bestimmte Geräte mit kombinatorischer Logik, jedoch gibt es keine allgemeine automatisierte Testerzeugungslösung für Geräte mit sequentieller Logik.
- Die GB-A-1381413 (Erfinder D. K. Chia und M. Y. Hsiao) richtet sich auf automatische Testtechniken für Halbleiter-Zustandsmaschinen oder logische Geräte, deren Ausgaben eine Funktion ihrer vorherigen Zustände ebenso wie ihrer Eingaben sind. In derselben ist eine Zielsequenz zum Plazieren einer Schaltung mit sequentieller Logik in einen vorbestimmten Zustand offenbart, die kompatibel mit dem Testen mittels einer Testsequenz ist, welche durch eine Datenverarbeitungsvorrichtung erzeugt wird, die vorgesehen ist, um die Sequenz in umgekehrter Reihenfolge bezüglich des Gesamtzustands (Eingangsvariablen und Schaltungszustandvariablen) herzuleiten, der dem gewünschten eingestellten Zustand entspricht. Eine Sequenz von Gesamtzuständen wird hergeleitet, bis ein Zustand erreicht ist, der keine Schaltungszustandsvariablen besitzt, wobei dieser Zustand den Start der Zielsequenz definiert. Dieser offenbarte Lösungsansatz beginnt folglich bei einem erforderlichen Zustand des Geräts und sucht dann zeitlich rückwärts nach einem interessierenden Zustand. Jedoch ist es möglich, daß dieser Lösungsansatz den interessierenden Zustand nicht erreicht, und wenn dies der Fall ist, nicht sicherstellt, daß dasselbe mit der minimalen Anzahl von Taktzyklen erreicht werden kann.
- Die vorliegende Erfindung überwindet die Nachteile und Begrenzungen gemäß dem Stand der Technik durch Schaffen eines algebraischen Verfahrens der Testerzeugung für logische Geräte, die durch Boolsche Zustandsgleichungen beschrieben sind. Das Verfahren der vorliegenden Erfindung schafft eine allgemeine Lösung für das Initialisierungsproblem, die für alle Klassen von Geräten mit kombinatorischer und sequentieller Logik oder Gruppierungen dieser Geräte brauchbar ist. Die einzige Beschränkung für die Initialisierungssequenz besteht darin, daß der erste Übergang der Sequenz unabhängig von dem Zustand des Geräts auftreten muß. Das Verfahren liefert ein Verfahren des anfänglichen Bestimmens, ob ein Gerät die Bedingungen erfüllt, die notwendig sind, damit das Testen fortfahren kann. Wenn ein Test möglich ist, identifiziert das Verfahren alle externen Blockiert-auf-Eins- und Blockiert-auf-Null-Anschlußstiftfehler für eine interessierende Eingabe und Ausgabe. Das Verfahren liefert ferner einen hohen Grad (obwohl unquantifiziert) einer Testabdeckung für interne Fehler. Das Verfahren liefert automatische Tests für Geräte mit kombinatorischer und sequentieller Logik, kann mit entweder synchronen oder asynchronen Registern verwendet werden und kann auf die schaltungsinterne Topologie des logischen Geräts angepaßt sein. Die einzige Beschränkung besteht darin, daß das Gerät in Boolschen Zustandsgleichungen beschreibbar sein muß und die notwendigen und hinreichenden Bedingungen für einen Test erfüllen muß. Das Testerzeugungsverfahren der vorliegenden Erfindung ist erfolgreich beim Erzeugen von Tests für viele kommerzielle logische Geräteentwürfe in einer großen kundenspezifischen Testentwicklungsumgebung. Ein wichtiger Beitrag des Verfahrens ist eine Lösung des Initialisierungsproblems eines sequentiellen Netzwerks.
- Gemäß der vorliegenden Erfindung wird ein automatisches Testerzeugungsverfahren für ein zu testendes Gerät geschaffen, das durch Boolsche Zustandsgleichungen beschrieben werden kann, welches folgende Schritte aufweist: Herleiten von Fehlererfassungsgleichungen aus den Boolschen Zustandsgleichungen; Bestimmen von Boolschen Fehlererfassungsprodukten, die einen Zustand beschreiben, bei dem die Fehlererfassungsgleichungen wahr sind; Herleiten von Initialisierungssequenzen über den Aufbau eines Zustandsbaums, welche den Anforderungen der Boolschen Fehlererfassungsprodukte genügen, so daß ein erster Übergang der Initialisierungssequenz unabhängig vom Zustand des zu testenden Geräts sequentiell geordnet werden kann, wobei die Schritte des Herleitens der Initialisierungssequenzen folgende Schritte aufweisen: Erzeugen von Vorgängerzuständen mittels des Durchführens einer Boolschen UND-Operation mit den minimierten logisch wahren und minimierten logisch falschen Gerätezustandsgleichungen eines Folgezustands, um einen Boolschen Vorgängerausdruck zu erhalten, der die Bedingungen erfüllt, die durch die Ausgangszuweisungen der Folgezustände definiert sind; Eliminieren von Termen aus dem Boolschen Vorgängerausdruck, der Ausgangszuweisungen aufweist, die Ausgangszuweisungen der Boolschen Ausdrücke für Folgezustände entsprechen und durch dieselben abgedeckt sind, und Anwenden einer Übereinstimmungsoperation (consensus) auf den Boolschen Vorgängerausdruck unter Verwendung des Theorems xy + /xz = xy + /xz + yz, um einen erweiterten Boolschen Vorgängerausdruck zu erhalten; und Anwenden der Initialisierungssequenz auf das zu testende Gerät.
- Bei dem Verfahren der Erfindung, wie es in dem vorherigen Abschnitt definiert ist, wird der gewünschte interessierende Zustand gefunden, wenn eine Initialisierungsseguenz existiert, bei der der erste Übergang zustandsunabhängig ist. Die GB-A-1381413 offenbart keinen derartigen Pegel an Bestimmtheit. Außerdem stellt die Art und Weise, auf die der Zustandsbaum in dem Verfahren der Erfindung, wie es in dem vorherigen Abschnitt definiert ist, aufgebaut ist, sicher, daß der gewünschte interessierende Zustand mit der minimalen Anzahl von Taktsequenzen erreicht wird, wohingegen dieses Merkmal durch das Verfahren, das in der GB-A-1381413 offenbart ist, nicht sichergestellt ist.
- Fig. 1 ist ein schematisches Flußdiagramm des Verfahrens der vorliegenden Erfindung.
- Fig. 2 ist ein schematisches Diagramm eines typischen logischen Geräts mit einem Eingang, zwei Ausgängen und einem Takt.
- Fig. 3 ist ein schematisches Diagramm eines generischen Zustandsbaums, das die Beziehung zwischen Folgezuständen und Vorgängerzuständen zeigt (N2, N3 sind Folgezustände zum Vorgänger N1 usw.).
- Fig. 4 ist ein Zustandsbaum für den Fehlererfassungsvektor (e,1,1) und zeigt einen vollen Zustandsbaum, bei dem keine Initialisierungssequenz existiert.
- Fig. 5 ist der Zustandsbaum für den Fehlererfassungsvektor (e,0,0) und zeigt die Verwendung des Zustandsbaums, um die Initialisierungssequenz für den Fehlererfassungsvektor (e,0,0) herzuleiten.
- Fig. 6 ist eine Karnaugh-Tafel für ein j-k-Flip-Flop und zeigt die Konzepte der Miniaturisierung und der Übereinstimmung.
- Vor der detaillierten Beschreibung des Verfahrens werden folgende Schreibweisen und Techniken definiert:
- Eine elementare Struktur, die verwendet wird, um ein logisches Gerät zu beschreiben, ist das Boolsche Produkt. Eine Form des Boolschen Produkts, die zur rechnerischen Handhabung geeignet ist, ist der Produktvektor. Ein Produktvektor ist eine Zuweisung (x1, ....., xn, yl, ...., ym) = (e1, e2, .... e m+n), wobei sich x auf die primären Eingaben bezieht, sich y auf die primären Ausgaben bezieht und e ein Element der Menge: {1, 0, x} ist. Eine Eins zeigt an, daß ein Term aktiviert ist, wenn er logisch wahr ist. Eine Null zeigt an, daß ein Term aktiviert ist, wenn er logisch falsch ist. Ein x zeigt ein "nicht beachten" für einen Term an, was in anderen Worten heißt, daß ein Term, der durch x angezeigt ist, entweder Eins oder Null sein kann, und daß die Logik des Gerätes davon unbeeinflußt ist, wobei ein Term, der durch ein x dargestellt ist, daher logisch irrelevant ist. Eingaben und Ausgaben bedeuten bezüglich des Geräts externe Eingaben und Ausgaben. Im allgemeinen bedeuten Eingaben und Ausgaben primäre Eingaben und Ausgaben. Als Beispiel lautet die Zustandsgleichung für ein j-k-Flip-Flop wie folgt:
- q(t+1) = j * /q(t) + /k * q(t)
- Die Produktvektoren für q(t+1) sind: j, k und q. Ein Neuschreiben der Gleichung für q(t+1) ergibt unter Verwendung der Produktvektoren:
- q(t+1) = (1,x,0) + (x,0,1)
- Bei diesem Beispiel besteht jeder Produktvektor aus drei Elementen. Die ersten zwei Elemente bezeichnen j bzw. k (primäre Eingaben) und das dritte Elemente bezeichnet q (die primäre Ausgabe).
- Die Boolsche UND-Verknüpfung zweier Produkte wird mit Produktvektoren ohne weiters implementiert, indem die folgende Verknüpfungstabelle definiert wird, in der ein n Null anzeigt.
- Unter der Annahme zweier Eingaben und einer Ausgabe lautet die UND-Verknüpfung der zwei Boolschen Produkte:
- (j * q(t) ) * (/k) = j * /k * q(t)
- bezüglich der Produktvektoren durch eine Schnittoperation von (1,x,1) und (x,0,x) realisiert, um (1,0,1) zu erhalten.
- Die UND-Verknüpfung der zwei Boolschen Produkte:
- (j * q(t) ) * (/j)
- ist Null und ist bezüglich der Produktvektoren durch eine Schnittoperation von (1,x,1) und (0,x,x) realisiert, um den Null-Produktvektor zu erhalten. Der Null-Produktvektor zeigt an, daß die Schnittoperation nicht existiert. Allgemein bezieht sich der Ausdruck Schnittoperation (Intersection) auf Prcduktvektoren und der Ausdruck UND-Verknüpfung bezieht sich auf Boolsche Produkte.
- Eine weitere wichtige Boolsche Operation ist die Übereinstimmungs-Operation, die auf dem Theorem xy + /xz = xy + /xz + yz basiert. Die Übereinstimmungsoperation wird verwendet, um das redundante Produkt yz herzuleiten. Die Übereinstimmungs-Operation wird unter Verwendung von Produktvektoren ohne weiteres implementiert. Eine Übereinstimmungsoperation zwischen zwei Produktvektoren v1 und v2 der Funktion F erzeugt, wenn sie existiert, einen dritten Produktvektor v3 und ist in der folgenden Form definiert. Ein Term muß sowohl in v1 als auch in v2 in komplementärer Form vorliegen (das heißt Null und Eins für den gleichen Term in getrennten Produktvektoren). Die verbleibenden Elemente von v1 und v2 sind mit einer Schnittoperation verknüpft. Wenn diese Schnittoperation nicht Null ist, ist dieselbe ein gültiger Produkt vektor der Funktion F.
- Als Beispiel seien die zwei Produktvektoren einer Funktion F betrachtet: (1,1,0) und (0,x,0). Der erste Term liegt in beiden Produktvektoren in komplementärer Form vor. Die Produktvektoren können als (x,1,0) und (x,x,0) neu geschrieben werden. Durchführen der Schnittoperation von (x,1,0) und (x,x,0) ergibt (x,1,0). Der Produktvektor (x,1,0) ist nicht Null und ist daher ein gültiger Produktvektor der Funktion F.
- Das Konzept der Abdeckungsoperation (covering) basiert schließlich auf dem Theorem x + xy = x. Die Abdeckungsoperation wird verwendet, um redundante Produkte aus einer Boolschen Funktion zu eliminieren. Die Abdeckungsoperation ist ein wichtiges Werkzeug für den Aufbau des Zustandsbaums. Es wird gesagt, daß ein Produktvektor v1 einen Produktvektor v2 abdeckt, wenn vl durch Ändern der geeigneten x in entweder eine Eins oder eine Null in v2 umgewandelt werden kann. Z.B. deckt (x,0,x,x) (x,0,x,0) ab, so daß, mittels des Anwendens der Abdeckungsoperation, zwei Produktvektoren durch den einzelnen Produktvektor (x,0,x,x) dargestellt werden können, ohne irgendwelche Informationen bezüglich der Funktion, die sie beschreiben, zu verlieren.
- Fig. 1 zeigt ein Schema des Flußdiagramms des Verfahrens. Der Geräteeditor 2 ermöglicht Eingabe- und Editier-Funktionen bezüglich der Beschreibung des Geräts und stellt keinen Gegenstand der Erfindung dar. Der nächste Abschnitt sind Vorverarbeitungshandlungen 4 und 5, bei denen die Gerätezustandsgleichungen und deren Komplemente hergeleitet werden. Wenn es für die Testbarkeit erforderlich ist, wird im Schritt 6 die Übereinstimmungsoperation auf die Zustandsgleichungen angewendet, und wenn die notwendigen Bedingungen nicht erfüllt sind, wird das Verfahren beendet 7 und das Gerät ist nicht testbar.
- Der nächste Schritt des Verfahrens ist das Herleiten der Fehlererfassungsgleichungen 8, die alle Eingangs-Ausgangs- Anschlußstifte des Geräts einschließen. Wenn dies abgeschlossen ist, werden im Schritt 10 für jede Fehlererfassungsgleichung Fehlererfassungsvektoren hergeleitet, die Gerätezustände beschreiben, in denen die Fehlererfassungsgleichung wahr ist.
- Im Schritt 11 wird der Fehlererfassungsvektor, in dem die meisten Ausgaben mit x bezeichnet sind, für den Wurzelknoten des ersten Zustandsbaums, der im Schritt 12 aufgebaut wird, ausgewählt. Wenn der Baum voll ist, bevor ein Zustand erreicht wird, in dem die Ausgaben unabhängig von den internen Registern des Geräts sind, springe zu Schritt 11 zurück, wähle einen anderen Fehlererfassungsvektor und baue einen neuen Baum auf. Wiederhole dieses Verfahren, bis ein Knoten gefunden ist, der unabhängig von den internen Registern 16 des Geräts ist, oder bis bestimmt ist, daß kein derartiger Knoten existiert, wobei in diesem Fall das Gerät nicht testbar ist. Wenn jeder Zustandsbaum aufgebaut ist, wird er unter Verwendung von Ausästtechniken 17 derart ausgeästet, daß die Initialisierungssequenzen bestimmt werden, so daß die internen Register des Geräts eingestellt werden können 18, um ein Fortfahren des Testens 20 zu ermöglichen.
- Das Ziel der Vorverarbeitung, den Schritten 4, 5, 6 und 7, besteht darin, die minimierten logisch wahren und logisch falschen Funktionen für jede Ausgabe des Geräts zu bestimmen. Zusätzlich muß die Gleichung angepaßt sein, um die Plattentopologie wiederzuspiegeln. Es ist ferner notwendig, Kernterme zu bestimmen, die die Möglichkeit eines Tests unter Verwendung dieses Verfahrens identifizieren.
- Die Darstellung jeder Ausgabe des Geräts besitzt die Form einer Boolschen Zustandsgleichung. Der Sinn der Gleichung ist entweder logisch wahr oder logisch falsch. Dann wird das Komplement jeder Gleichung hergeleitet. Dies kann durch die Anwendung des Demorgan-Theorems und nachfolgendes Minimieren des resultierenden Ausdrucks unter Verwendung der Technik, die von McCluskey (McCluskey, E. J. Jr., "Introduction to the Theory of Switching Circuits," New York: NMcGraw-Hill Book Co., 1965, Kap. 4), beschrieben ist, erreicht werden. Die minimierten logisch wahren und falschen Gleichungen werden für jede Ausgabe des Geräts benötigt; diese Gleichungen werden verwendet, um den Zustandsbaum aufzubauen. Außerdem sind die Gleichungen für beliebige vergrabene Register des Geräts notwendig. Ein vergrabenes Register ist jedes Register, dessen Ausgabe an einem externen Anschlußstift des Geräts nicht verfügbar ist.
- Zu Darstellungszwecken zeigt Fig. 2 ein typisches Gerät mit einem Eingang und zwei Ausgängen, das als Gerät 22 bezeichnet ist. Das Gerät 22 besitzt zwei registrierte Ausgänge, die mit q0 (24) und q1 (26) bezeichnet sind, und einen Eingang, der mit i (28) bezeichnet ist, sowie einen Takt 30 und ist durch folgende Boolsche Gleichungen beschrieben:
- q0(t+1) = /i * q0(t) + q0(t) * /q1(t)
- q1(t+1) = i * /q1(t) + i * q0(t)
- Typischerweise sind die logischen Boolschen Gleichungen durch den Hersteller spezifiziert, so daß eine Herleitung derselben nicht notwendig ist, es sei denn das Gerät ist durch eine alternative Zustandsbeschreibung beschrieben. Die Herleitung der minimierten Boolschen Ausdrücke unter Verwendung des Demorgan-Theorems für /q0(t+1) und /q1(t+1) ergibt:
- /q0(t+1) = i * q1(t) + /q0(t)
- /q1(t+1) = /i + /q0(t) * q1(t)
- Diese Informationen können unter Verwendung von Produktvektoren wie folgt dargestellt werden:
- q0 (logisch wahr): {(0,1,x), (x,1,0)}
- q0 (logisch falsch): {(1,x,1), (x,0,x)}
- q1 (logisch wahr): {(1,x,0), (1,1,x)}
- q1 (logisch falsch): {(0,x,x), (x,0,1)}
- Durch die Verwendung flexibler Verbinder (Jumper) oder fester Spuren kann das Gerät auf der gedruckten Schaltungsanordnung in einer anderen Form erscheinen als das Gerät erscheint, wenn es nicht mit anderen Schaltungskomponenten verbunden ist (in dem Fall, daß alle Anschlußstifte frei sind). Dies kann durchgeführt werden, indem die Eingänge fest auf einem vorbestimmten Zustand festgehalten werden. Die Gerätegleichungen sind leicht modifiziert, um diese Modifikationen wiederzuspiegeln, indem die algebraischen Implikationen der festgehaltenen Eingangs leitungen beachtet werden. Z.B. wird ein Produktterm, der einen Eingangsanschlußstift in der Form eines logischen Wahr enthält, verschwinden, wenn der Stift auf tieffestgehalten ist. Das allgemeine Verfahren für jede Blockiert-auf-Bedingung für einen Eingangsanschlußstift ist wie folgt: Betrachte einen logischen Pegel Blockiert-auf-Eins an einem Eingangsanschlußstift i. Betrachte ferner jeden Produktvektor aus der Menge, die die minimierten logisch wahren und logisch falschen Gleichungen des Geräts darstellt. Für jeden Produkt vektor, bei dem das i-te Element nicht ein x ist, ist folgende Modifikation erforderlich:
- (1) Wenn die i-te Zuweisung 1 ist, wird die Zuweisung auf ein x geändert.
- (2) Wenn die i-te Zuweisung /1 ist, verschwindet der Produktvektor.
- (3) Wenn (i) wahr ist und allen anderen Elementen eines Produktvektors ein x zugewiesen ist, dann ist dieser Ausgangszustand immer wahr.
- Nun ist es möglich, notwendige, aber nicht hinreichende Bedingungen zu identifizieren, damit die Testerzeugung durch das Verfahren der Erfindung möglich ist. Zumindest einer der Produktvektoren, die die minimierten logisch wahren und logisch falschen Boolschen Gleichungen für die registrierten Ausgänge des Geräts darstellen, muß alle x (berücksichtige nicht oder logisch irrelevant) für die Ausgangszuweisung des Produktvektors enthalten. Wenn die Ausgangszuweisung eines der Produktvektoren durch alle x dargestellt ist, kann ein Ausgang unter der alleinigen Verwendung der Eingänge auf wahr oder falsch gesetzt werden. Wenn keiner dieser Produktvektoren diesen Anforderungen genügt, kann die Übereinstimmungsoperation auf die Produktvektoren jeder Gleichung, die sich auf die Ausgaben bezieht, angewendet werden, um zusätzliche Boolsche Produkte herzuleiten, die eine gegebene Gleichung beschreiben. Diese erweiterten Produktvektoren des Gerätes werden als die logisch wahren und logisch falschen Kernterme des Geräts bezeichnet. Wenn keiner der Produktvektoren, die die logisch wahren oder logisch falschen Kernterme des Geräts darstellen, alle x bezüglich ihrer Ausgangszuweisung enthalten, ist das Gerät mittels des Verfahrens nicht testbar. Dies liefert eine Basis für Entwurf-für-Testbarkeit-Regeln, wenn logische Geräte entworfen werden. Die einzige Ausnahme für diese Beschränkung ist der Fall, bei dem Register mit einer Einstellen- oder Löschen- Funktion versehen sind.
- Für das Gerät 22 sehen wir, daß der Produktvektor (0,x,x) für jede seiner Ausgaben eine x-Zuweisung besitzt, wodurch wir notwendige, aber nicht hinreichende Bedingungen für unseren Algorithmus besitzen, um einen Test zu erzeugen.
- Ein Beispiel eines Geräts, das durch dieses Verfahren nicht getestet werden kann, ist ein einfacher Zähler, der keine primären Eingaben enthält, mit Ausnahme des Taktes, und daher ausschließlich eine Funktion seines vorherigen Zustands ist. Günstigerweise ermöglichen die meisten praktischen Entwürfe eine Initialisierungssequenz, um eine Zustandsmaschine in einen bekannten Zustand zu bringen. Der Zustandsbaum ist als das Mittel geboten, um diese Sequenz bezüglich des Verfahrens der Erfindung zu bestimmen.
- Bevor die Fehlererfassungsgleichungen für das Gerät 22 aufgebaut werden, wird ein neues Element, e, das einen Produkt vektor aufweisen kann, verwendet, um einen Produktvektor auszuschließen, der für eine spezielle interessierende Eingabe eine Nicht-x-Zuweisung enthält. Dies ist notwendig, um die Möglichkeit zu eliminieren, den Zustand des Geräts mit der interessierenden Eingabe einzustellen. Eine Erweiterung der Definition der Schnittoperation von zwei Produktvektoren ergibt:
- wobei u undefiniert ist.
- Um die Fehlererfassungsgleichungen für das Gerät 22 zu erzeugen, müssen die Zustandsgleichungen für das Gerät 22 verfügbar sein. Dieselben sind:
- q0(t+1) = /i * q0(t) + q0(t) * /q1(t)
- q1(t+1) = i * /q1(t) + i * q0(t)
- Das Gerät kann vollständig getestet werden, wenn die Anforderungen der folgenden Fehlererfassungsgleichungen erfüllt sind.
- q0(t+1) = /i
- q1(t+1) = i
- Beginnend mit q0(t+1) = /i besteht das Ziel darin, die Menge von Zuweisungen von q0(t) und q1(t) zu finden, so daß q0(t+1) = /i. Dies geschieht durch Auswählen eines zufälligen Boolschen Produkts von q0(t+1), das die interessierende Eingabe enthält, und Bezeichnen desselben mit primäres Boolsches Produkt. Bei dem Gerät 22 ist die interessierende Eingabe i und das primäre Produkt ist /i * q0(t). Aus diesem primären Boolschen Produkt wird dann ein Produktvektor aufgebaut, um (0,1,x) zu erhalten. Die Zuweisung für i wird auf e geändert (um die interessierende Eingabe auszuschließen) und (e,1,x) wird erhalten. Dies wird als der primäre Produktvektor bezeichnet.
- Die verbleibenden Produkte von q0(t+1) werden sekundäre Boolsche Produkte genannt. Eine Funktion wird aufgebaut, die die Summe dieser sekundären Produkte ist, das Demorgan-Theorem wird auf diese Funktion angewendet und der resultierende Ausdruck wird minimiert, um die minimierten sekundären Boolschen Produkte zu erhalten. Für das Gerät 22 ist diese Funktion gegeben durch:
- q0'(t+1) = q0(t) * /q1(t)
- Anwenden des DeMorgan-Theorems und Minimieren ergibt:
- /q0'(t+1) = /q0(t) + q1(t)
- Die sekundären Produktvektoren werden als nächstes dargestellt durch /q0'(t) aufgebaut und mit sekundäre Produktvektoren bezeichnet. Der nächste Schritt bei der Herleitung der Fehlererfassungsvektoren besteht darin, zwischen dem primären Produktvektor und jedem der sekundären Produktvektoren die Schnittoperation durchzuführen. Die Übereinstimmungsoperation wird bezüglich der Ausgangszuweisungen der Produktvektoren angewendet, die das Ergebnis dieser Schnittoperation sind. Die Produktvektoren der resultierenden Menge werden Boolsche Fehlererfassungsprodukte für die Fehlererfassungsgleichung q0(t+1) = /i bezogen auf das primäre Produkt bezeichnet. Diese Menge von Boolschen Fehlererfassungsprodukten kann durch eine Menge von Produktvektoren dargestellt werden, die die Menge von Fehlererfassungsvektoren genannt wird. Es sei bemerkt, daß eine weitere eindeutige Menge von Fehlererfassungsvektoren für andere Produkte in der Fehlererfassungsgleichung existieren kann, welche die interessierende Eingabe enthält.
- Es sei bemerkt, daß dieser Lösungsansatz die vollständige Menge von Boolschen Fehlererfassungsprodukten liefert, die die Anforderungen der Fehlererfassungsgleichung q0(t+1) = erfüllen. Dies ist wichtig, da eine Initialisierungssequenz, die für einen der Fehlererfassungsvektoren nicht existiert, für einen anderen existieren könnte. Wenn die Ausgangszuweisungen für einen beliebigen dieser Fehlererfassungsvektoren alle x enthält, ist keine Initialisierungssequenz erforderlich und dieser Produktvektor wird den Zustand des Geräts einstellen.
- Der nächste Schritt beim Herleiten der Fehlererfassungsvektoren des Geräts 22 besteht darin, eine Schnittoperation zwischen (e,1,x) und (x,0,x) und (x,x,1) herzustellen, um (e,1,1) zu erhalten. Es gibt keine Gelegenheit, die Übereinstimmungsoperation anzuwenden (die Ausgaben enthalten keine Komplemente), und der Satz von Fehlererfassungsvektoren wird (e 1,1)
- Springe schließlich zu der Fehlererfassungsgleichung ql(t+1) = i. Wird i * /q1(t) als das primäre Produkt ausgewählt, ist der Satz von Fehlererfassungsvektoren durch (e,0,0) gegeben. Bei Auswahl von i * q0(t) als das primäre Produkt ist die Menge der Fehlererfassungsvektoren (e,1,1).
- Ein spezieller Fall existiert, bei dem eine Gleichung nur eine Funktion der Ausgaben ist. Finde eine Fehlererfassungsgleichung der Form qn(t+1) = f(qm(t)), wobei qm(t) eine willkürliche Ausgabe ist, von der qn(t+1) eine Funktion ist, um diese Ausgabe zu testen. Betrachte z.B. die folgende Gleichung für ein Gerät mit einem Eingang und drei Ausgängen:
- q0(t+1) = /q2(t) * q0(t) + q0(t) * /q1(t)
- Um die Menge der Fehlererfassungsvektoren zu finden, die die Fehlererfassungsgleichung q0(t+1) = /q2(t) erfüllen, bilde den primären und den sekundären Produktvektor gemäß den Regeln, die oben beschrieben sind, und erhalte den Fehlererfassungsvektor: (x,1,1,x). Wenn eine Initialisierungssequenz für (x,1,1,1) und (x,1,1,0) existiert, sind q0 und q2 fehlerfrei. Wenn diese Suche nicht erfolgreich ist, bilde neue Fehlererfassungsgleichungen der Form:
- q0(t+1) = f(q0(t))
- q0(t+1) = f(q1(t))
- bis ein Paar von Fehlererfassungsvektoren hergeleitet ist, für das eine Initialisierungssequenz existiert.
- Ein Mittel zum Definieren einer Initialisierungsseguenz für einen gegebenen Fehlererfassungsvektor ist der Zustandsbaum, der eine Struktur ist, die vorherige Zustände eines logischen Geräts definiert, um einen Übergangs Zustand einer gegebenen Initialisierungssequenz zu finden, der unabhängig von dem Zustand einer gegebenen Maschine initiiert werden kann. Eine Initialisierungssequenz wird gefunden, sofern dieselbe existiert, wenn der erste Übergang der Sequenz unabhängig vom Zustand des Geräts initiiert werden kann. In anderen Worten heißt das, daß die Ausgaben der Produktvektoren x sind oder ohne Bedeutung (logisch irrelevant), wie z.B. die, die durch den Knoten 84 in Fig. 5 dargestellt sind, welches der erste Übergang der Initialisierungsseguenz ist.
- Die allgemeine Form des Zustandsbaums 32 ist in Fig. 3 gezeigt. Jede Ebene 34, 36, 38, 40 des Baums 32 entspricht einer diskreten Zeiterhöhung. Ein Knoten, wie z.B. die Knoten 42, 44, 46, 48, 50, 52 des Baums, wird als Zustandsknoten bezeichnet und stellt einen Zustand des Geräts dar. Ein Zustandsknoten besitzt die Form eines Produktvektors. Die Wurzel des Zustandsbaums ist als Knoten 42 gezeigt und ist ein Fehlererfassungsvektor. Die Kinder eines Zustandsknotens werden die Vorgängerzustände, die für den Knoten möglich sind, genannt. Die Eltern werden als der Folgezustand eines Zustandsknoten bezeichnet.
- In Fig. 3 sind die Knoten 44 (N2) und Knoten 46 (N3) die Vorgängerzustände des Knotens 42 (N1). Wenn der Knoten 42 (N1) zur Zeit t existiert, sind die Knoten 44 und 46 (N2, N3) mögliche Zustände zur Zeit t-1, und der Knoten 42 (N1) ist der Folgezustand der Knoten 44 und 46 (N2 und N3). Die Bedeutung dieser Beziehung liegt darin, daß das Gerät entweder von dem Knoten 44 oder dem Knoten 46 (N2 oder N3) zum Knoten 42 (N1) übergehen wird, durch einen Taktzyklus der Register, die im Knoten 42 (N1) definiert sind. Die Beziehung zwischen Vorgängerzuständen und einem Folgezustand ist ähnlich der Beziehung von logisch hohen und logisch tiefen Kerntermen zu einer Funktion. Wenn ein Vorgängerzustand existiert, bei dem jede Ausgangszuweisung ein x ist, kann ein Übergang in dem Zustandsbaum unabhängig von dem Zustand eines beliebigen Registers des Geräts stattfinden.
- Um eine Initialisierungssequenz herzuleiten, muß aus vorhergehenden Gerätezuständen ein Zustandsbaum gebildet werden, bis ein Vorgängerzustand gefunden ist, der alle x (logisch irrelevanten Terme) für seine Ausgangszuweisungen enthält, es sei denn, es wird bestimmt, daß kein solcher Vorgängerzustand existiert. Wenn ein solcher Vorgängerzustand existiert, wird eine Initialisierungssequenz definiert, bei der der erste Übergang unabhängig vom Zustand der Vorrichtung ist.
- Betrachte z.B. den Zustandsbaum von Fig. 3 und nimm an, daß der Produktvektor, der den Knoten 52 (N6) beschreibt, für jede Ausgangszuweisung ein x enthält. Die Initialisierungssequenz wird gefunden, indem der Zustandsbaum vom Knoten 52 (N6) durch die Folgezustände überquert wird, bis der Wurzelknoten 42 (N1) erreicht ist. Bei diesem Beispiel, die Verwendung eines globalen Takts vorausgesetzt, sind die Eingaben, die durch den Knoten 52 (N6) definiert sind, verwendet, um die Sequenz zur Zeit t-3, dargestellt durch den Zeitebenenschritt 40, begonnen. Das Gerät wird dann getaktet und die Ausgaben, die durch den Knoten 48 (N4) definiert sind, werden zur Zeit t-2 38 beobachtet und mit den Ausgaben des Knoten 48 (N4), die durch den Zustandsbaum vorhergesagt werden, verglichen. Als nächstes werden die Eingaben, wie sie durch den Knoten 48 (N4) definiert sind, eingestellt, und das Gerät wird zum nächsten Zeitschritt t-1 getaktet, der uns zum Knoten 44 (N2) bringt. Dieses Verfahren wird wiederholt, bis der Wurzelknoten 42 (N1) erreicht ist. An diesem Punkt ist eine Fehlererfassungsgleichung bestätigt.
- Der vorbestimmte Fehlererfassungsvektor (e,0,0) ist als der Wurzelknoten für den ersten Zustand des Geräts 22 gewählt. Sammle die logisch falschen Produktvektoren für /q0(t+1) und /q1(t+1):
- /q0 (logisch falsch): {(1,x,1), (x,0,x)}
- /q1 (logisch falsch): {(0,x,x), (x,0,1)}
- Die logische Schnittoperation von /q0(t+1) mit /q1(t+1) ergibt folgende Vorgängerzustände:
- .(0,x,x,), (0,0,x), (x,0,1)
- Um ein weiteres Beispiel des Aufbaus von Vorgängerzuständen darzustellen sei eine Vorrichtung mit einem Eingang und drei Ausgängen betrachtet, bei der die minimierten logisch hohen und logisch tiefen Produktterme sind wie folgt gegeben:
- q1(t+1) = p1(t) + p2(t)
- q2(t+1) = p3(t) + p4(t)
- q3(t+1) = p5(t)
- /q1(t+1) = p6(t) + p7(t)
- /q2(t+1) = p8(t) + p9(t)
- /q3(t+1) = p10(t)
- wobei p1(t) bis p10(t) Boolsche Produkte sind. Nun seien die Vorgängerzustände des Folgezustands, der durch (x,1,0,1) gegeben ist, zu finden. Führe die Boolsche UND-Verknüpfung der minimierten logisch wahren und logisch falschen Ausgaben, die durch den Folgezustand angezeigt sind, durch, um eine Menge von Vorgängerzustandsknoten zu erhalten. Diese Funktion ist gegeben durch:
- (p1(t) + p2(t) ) * (p8(t) + p9(t)) * (p5(t))
- Die resultierende Funktion wird minimiert, um redundante Vorgängerzustandsknoten zu eliminieren. Die Übereinstimmungsoperation wird bezüglich der Ausgangszuweisungen der Produktvektoren, die die minimierte Funktion darstellen, auf die minimierte Funktion angewendet, um einen erweiterten Boolschen Vorgängerausdruck zu erhalten, der auch als die erweiterte Menge von Vorgängerzustandsknoten bekannt ist. Schließlich wird die erweiterte Menge von Produktvektoren bezüglich der überdeckten Ausgangszuweisungen reduziert, um redundante Terme zu eliminieren, um einen Boolschen Vorgängerausdruck für die Ausgaben zu erhalten, die durch die Ausgangszuweisung eines Folgezustands definiert sind. Die resultierenden Produktvektoren sind die Vorgänger Zustände von (x,1,0,1). Bei dieser Operation ist zu beobachten, daß, wenn ein Produktvektor existiert, der unabhängig vom Zustand des Geräts in seinen Folgezustand übergehen kann, derselbe in der Menge der Vorgängerzustände vorliegt.
- Um den Aufbau der Vorgängerzustände darzustellen, sei der Fehlererfassungsvektor (e,1,1) für das Gerät A betrachtet. Beginne durch das Sammeln der logisch wahren Produktvektoren für q0(t+1) und q1(t+1):
- q0 (logisch wahr): {(0,1,x), (x,1,0)}
- q1 (logisch wahr): {(1,x,0), (1,1,x)}
- Der Aufbau der Vorgängerzustände wird durch eine Schnittoperation zwischen q0(t+1) und q1(t+1) vollendet, die ergibt:
- {(1,1,0) , (1,1,0)}
- Minimieren mittels des McCluskey Verfahren ergibt:
- {(1,1,0)}
- Es gibt keine Gelegenheit, die Übereinstimmungsoperation anzuwenden (es gibt keine komplementären Ausgabepaare), so daß die Menge der Vorgängerzustände für (e,1,1) durch (1,1,0) gegeben ist.
- Der Zustandsbaum wird rekursiv aufgebaut, indem die Vorgängerzustände für jeden Knoten des Baums erzeugt werden. Es ist möglich, den Baum in einer Form aufzubauen, die eine minimale Initialisierungssequenz bewirkt, indem der Baum Ebene für Ebene aufgebaut wird. Ausschließlich nachdem eine Ebene 34 beendet ist, Fig. 3, fahren wir fort, die Ebene 36 aufzubauen, usw.. Dieses Verfahren wird fortgesetzt, bis ein Zustandsknoten gefunden ist, der unabhängig vom Zustand beliebiger Register des Geräts ist, oder bis der Baum voll ist Ein Baum ist voll, wenn Ausästtechniken ein weiteres Wachstum verhindern und keine Initialisierungssequenz für beliebige der Knoten, die für ein spezielles Gerät in dem Baum vorliegen, existiert.
- Die Ausäst-Techniken, die hierin angegeben sind, legen den Zustandsknoten Beschränkungen auf, wobei es möglich ist, daß dieselben den Zustandsbaum betreten und ein finites Durchsuchen der vorherigen Zustände des Geräts bewirken.
- Die erste beschriebene Ausäst-Technik ist das Verfahren der redundanten Zustände, das einen reduzierten Satz von Vorgängerzustandsknoten liefert. Es sei ein Zustandsknoten 44 (N2) betrachtet, wie in Fig. 3 gezeigt ist, der schon in dem Zustandsbaum vorliegt, und ein weiterer Vorgängerzustandsknoten 46 (N3) der für einen Eintrag in den Zustandsbaum betrachtet werden soll. Wenn die Ausgangszuweisung des Produktvektors, der durch den Knoten 46 (N3) dargestellt ist, die gleiche ist wie die Ausgangszuweisung für den Produkt vektor, der durch den Knoten 44 (N2) dargestellt ist, wird dem Knoten 46 (N3) der Eintrag in den Zustandsvektor verweigert, da derselbe eine redundante Ausgangszuweisung besitzt. In dem Beispiel des Geräts 22, Fig. 4, sind die Ausgangszuweisungen für den Knoten 56 = (1,0) und den Knoten 60 = (1,0), weshalb der Eintrag des Knoten 60 nicht erlaubt ist. Die Vorgängerzustände sind eine Funktion der Ausgangszuweisung des Folgezustands, wobei deshalb der Wert der Eingangszuweisungen nicht von Bedeutung ist. Die Teilbäume, die unter (0,1,0) erzeugt werden, werden identisch den Teilbäumen sein, die unter (1,1,0) erzeugt werden. Daher fügen die Zustandsablauf informationen, die durch den Teilbaum des Zustandsknotens (1,1,0) hinzugefügt werden, keine Informationen zusätzlich zu den Ablaufdaten, die aus (0,1,0) erhalten werden, hinzu.
- Eine weitere Ausäst-Technik umf aßt das Konzept von Überzuständen, das eine weitere Reduzierung der Vorgängerzustandsknoten liefert. Es seien wiederum die zwei Zustandsknoten 42 und 46 (N1 und N3) in Fig. 3 betrachtet, wobei der Knoten 42 (N1) bereits in dem Baum vorliegt und der Knoten 46 (N3) bezüglich eines Eintrags in den Zustandsbaum betrachtet wird. Der Knoten 42 (N1) wird als Überzustand des Knoten 46 (N3) bezeichnet, wenn die Ausgangszuweisung des Knotens 42 (N1) die Ausgangszuweisung des Knoten 46 (N3) abdeckt. Wenn beispielsweise der Knoten 42 (N1) durch (1,0,x) definiert ist und der Knoten 46 (N3) durch (0,0,0) definiert ist, sehen wir, daß die Ausgangszuweisung von (1,0,x) (0,0,0) abdeckt. Da der Knoten 42 (N1) ein Überzustand des Knoten 46 (N3) ist, wird der Eintrag des Knoten 46 (N3) in den Zustandsbaum verweigert. Es sei ferner bemerkt, daß diese Beschränkung eine Erforschung neuer Regionen des Zustandsdiagramms bei jedem neuen Eintrag in den Zustandsbaum erzwingt. Das Konzept der Überzustände ermöglicht es, die Anzahl von potentiellen Knoten eines Zustandsbaums von 3n auf 2n zu reduzieren, wobei n die Anzahl der Ausgänge des Geräts ist. Die elementare Drei stammt von den drei verschiedenen Elementen 1, 0 und x, welche die Ausgangszuweisung eines Produktvektors aufweisen kann. Ferner stellt die Technik des Ausästens ein finites Wachstum des Baums sicher.
- Ein zusätzliches Verfahren des Ausästens existiert, wenn bereits eine Initialisierungssequenz existiert, die durch einen Zustandsbaum definiert wurde. Dann werden die Ausgangszuweisungen der Produktvektoren, die die Initialisierungssequenz darstellen, mittels der Verwendung einer Standard-Lern-Hash-Tabelle (Kontroll-Tabelle) gelernt. Wenn zukünftige Zustandsbäume aufgebaut werden und ein Zustandsknoten n bezüglich eines Eintrags betrachtet wird, füge denselben in die Lern-Hash-Tabelle ein, um zu bestimmen, ob die Ausgangszuweisung von n vorliegt. Wenn dieselbe vorliegt, mische die Initialisierungsdaten, die in dem vorliegenden Zustandsbaum enthalten sind, mit den Initialisierungsdaten, auf die durch die Lern-Hash-Tabelle gezeigt wird.
- Ein weiteres Ausäst-Verfahren schließt Knoten voller Bäume ein. Zustandsknoten von vollen Bäumen werden in einer ähnlichen Form gelernt. Es sei daran erinnert, daß ein voller Baum anzeigt, daß keine Initialisierungssequenz für irgendeinen der Zustandsknoten existiert, welche der Baum enthält. Wenn ein Zustandsknoten n bezüglich eines Eintrags in einen gegenwärtigen Zustandsbaum betrachtet wird, muß durch Kontrollsummieren (hashing) bestimmt werden, ob die Ausgangszuweisung von n durch die Ausgangszuweisung 7eines Knotens, der Teil eines vollen Baumes ist, abgedeckt ist. Wenn n durch die Ausgangszuweisung eines Knotens eines vorherigen vollen Baums abgedeckt war, werden keine Werte durch Eingeben von n zu dem gegenwärtigen Zustandsbaum hinzugefügt.
- Zurückkehrend zum Gerät 22 ist der Zustandsbaum 53 für den Fehlererfassungsvektor (e,1,1) in Fig. 4 gezeigt. Gemäß der redundanten Zustands-Ausäst-Bedingung wird ein Eintrag der Zustandsknoten 60, 62 und 64 in den Baum verhindert. Es sei bemerkt, daß dieser Zustandsbaum 53 voll ist und daher keine Initialisierungssequenz existiert, bei der der erste Übergang unabhängig von irgendeinem internen Registerzustand initiiert werden kann.
- Der nächste Schritt besteht darin, einen Zustandsbaum für (e,0,0) aufzubauen, der die Fehlererfassungsgleichung ql(t+1) = i erfüllt. Der Zustandsbaum für (e,0,0) ist in Fig. 5 gezeigt.
- Es sei bemerkt, daß die Ausgangszuweisung für den Zustandsknoten 84 durch alle x dargestellt ist. Es sei ferner bemerkt, daß ein Eintrag des Knotens 80 in den Baum verhindert ist, da die Ausgangszuweisung von (1,1,x) äquivalent zu der Ausgangszuweisung eines Zustandsknotens des vollen Baums für (e,1,1) ist. Der Eintrag des Knotens 76 wurde aufgrund der redundanten Zustands-Ausäst-Beschränkung nicht erlaubt. Ein Eintrag des Knotens 82 war nicht erlaubt, da seine Ausgangszuweisung durch die Ausgangszuweisung des Knotens 70 (Knoten 70 ist der Überzustand des Knoten 82) abgedeckt war.
- Die Initialisierungssequenz für (e,0,0) wird leicht durch Überqueren des Zustandsbaums vom Knoten 84 über die Folgezustände 78, 74 und 70 bis zum Erreichen des Wurzelknotens 66 hergeleitet. Diese Sequenz lautet:
- 1. Eingabe 0 - Taktgerät - überprüfe q1 = 0
- 2. Eingabe 1 - Taktgerät - überprüfe q1 = 1
- 3. Eingabe 1 - Taktgerät - überprüfe q0 = 0
- 4. Eingabe 0 - Taktgerät - überprüfe q0 = 0, q1 = 0
- Die Fehlerabdeckung für dieses Gerät beträgt bezüglich i und q1 100%. q0 wurde bezüglich eines Blockiert-auf-Eins-Fehlers überprüft. Ein ähnliches Verfahren ist verwendet, um das Gerät A bezüglich eines Blockiert-auf-Null-Fehlers zu testen.
- Ein bestehender Fehler kann die Initialisierung der ordnungsgemäßen Initialisierungssequenz verhindern. Z.B. könnte es beim Versuch, den Ausgang 2 eines Gerätes, der auf Eins blockiert ist, zu testen, unsere Initialisierungssequenz ohne weiteres erfordern, daß der Ausgang 2 eine Null ist. Eine Eigenschaft von Folgezuständen besteht darin, daß die Ausgaben, die in einem gegebenen Folgezustand definiert sind, bezüglich der Vorgängerzustände der Ausgabe empfindlich gemacht sind. Dies bedeutet daß die Ausgabe 2 fehlerhaft ist, wenn sie es während der Initialisierungssequenz nicht schafft, eine logische Null zu erreichen. Folglich wurde noch ein Test durchgeführt.
- Register eines logischen Geräts können asynchrone Lösch-, Aktivier- und Einstell-Funktionen besitzen. Zusätzlich kann der Takt eines Registers durch einen eindeutigen asynchronen Term definiert sein. Diese Merkmale können wirksam sein, um die Aufgabe der automatischen Testerzeugung sowohl zu vereinfachen als auch zu komplizieren. Die Einstell- und Lösch-Funktionen können beim Erfüllen der Zustandsanforderungen eines gegebenen Fehlererfassungsvektors oder eines gegebenen Knotens in dem Zustandsbaum hilfreich sein. Jedoch können die eindeutigen Taktanforderungen der Register wirksam sein, um eine gewünschte sequentielle Zustandsordnung des Geräts zu beschränken oder sogar zu verhindern.
- Es sei angenommen, daß ein gegebenes Register eines logischen Geräts bis zu vier Merkmale haben kann, die aktiviert sind, wenn ein Boolsches Produkt logisch wahr ist. Dies sind die Takt-, Einstell-, Lösch- und Aktivier-Funktionen. Die Takt- und Aktivier-Mericinale eines Geräts sind darauf beschränkt, nur eine Funktion der Eingaben zu sein. Die Einstell- und Lösch-Merkmale eines Registers können eine Funktion von Ausgaben sein, wenn es eine spezielle Anwendung erfordert, daß ein Merkmal negiert wird, wobei es möglich ist, das Merkmal unter Verwendung von Eingaben zu negieren. Das Verfahren der vorliegenden Erfindung ist in Fällen ohne weiteres verallgemeinert, in denen diese Merkmale in einer Produktsummenform ausgedrückt sind.
- Für jedes Register des Geräts wird eine Menge von Produktvektoren benötigt, die definieren, wie das Register getaktet, eingestellt, gelöscht oder aktiviert werden kann.
- Es sei ein aktives hohes Boolsches Produkt betrachtet, das definiert ist, um ein Register zu takten. Dieses Produkt wird eine UND-Verknüpfung der Terme t1 bis tN sein, wobei es für einen Kantenebenenübergang N eindeutige Möglichkeiten gibt, das Register zu takten. Unter der Annahme, daß das Boolsche Produkt logisch wahr beginnt, kann das Register durch Hin- und Herschalten von t1, t2, usw. bis tN getaktet werden. Eine Gesamtzahl von N Übergangsmengen sind für ein Register definiert, wobei eine Übergangsmenge eine Menge von Produktvektoren anzeigt, die mit einer gegebenen primären Eingabe, tn, die das Register taktet, kompatibel sind. Für tn wird eine Übergangsmenge wie folgt aufgebaut. Zuerst müssen die Einstell- und Lösch-Funktionen negiert werden, während die Aktivier-Funktion aktiviert wird. Die Menge der Produktvektoren, die anzeigt, wie eine Funktion negiert werden könnte, wird durch Anwenden des Demorgan-Theorems auf das Boolsche Produkt erhalten, welches die aktivierte Form der Funktion beschreibt. Dann müssen die Produktvektoren, die die Lösch-, Einstell- und Aktivier-Anforderungen für eine gegebene Ausgabe erfüllen, gebildet werden. Dies geschieht durch Schneiden der negierten Lösch-Produktvektoren und der negierten Einstell-Produktvektoren. Der resultierende Ausdruck wird mit den aktivierten Aktivier-Produktvektoren geschnitten und dann minimiert.
- Es sei nun ein Gerät mit drei Eingängen und einem Ausgang betrachtet, bei dem der Takt für den Ausgang durch i1 * /i2 gegeben ist. Bilde eine Übergangsmenge für i1 und i2, durch Schneiden des Produktvektors (e,0,x,x) und der Produktvektoren, die das Ergebnis der Löschen- und Einstellen-Falschund der Aktivieren-Wahr-Schnittoperation waren. Die resultierenden Produktvektoren stellen die Menge der Übergangsproduktvektoren dar, die zu i1 gehören. Wenn beispielsweise die Menge von Übergangsproduktvektoren für i1 durch (e,0,0,x) gegeben ist, ist es möglich, die Ausgabe zu takten, indem i1 auf tief gebracht wird, und dann auf hoch. Wiederhole dieses Verfahren für /i2 durch Schneiden von (1,e,x,x) und den Produktvektoren, die das Ergebnis der Löschen- und Einstellen-Falsch und der Aktivieren-Wahr- Schnittoperation waren.
- Für eine Registereinstellung muß sichergestellt sein, daß die Einstell- und Aktivier-Funktionen einer gegebenen Ausgabe aktiviert sind, und daß die Löschfunktion negiert ist. Das Verfahren umf aßt das Schneiden der Produktvektoren, die diesen Zustand beschreiben, und das Sichern dieser Informationen bezüglich jeder Ausgabe. Für eine Registerlöschung sind die produktvektoren für jede Ausgabe zu sammeln, für die die Aktivier- und Lösch-Funktionen aktiviert sind und die Einstellfunktion negiert ist. Für eine Ausgabeaktivierung sind die Produktvektoren für jede Ausgabe zu sammeln, für die die Einstell- und Lösch-Funktionen negiert sind und die Aktivier-Funktion aktiviert ist.
- Wenn Register eines Geräts asynchrone Merkmale besitzen, sind zusätzliche Beschränkungen für die Vorgängerzustandsknoten erforderlich, deren Eintrag in einen bestimmten Zustandsbaum betrachtet wird. Es sei angenommen, daß bei einem Gerät mit drei Eingängen und drei Ausgängen zwei Produktvektoren S und P zwei Zustandsknoten in einem Zustandsbaum darstellen. S ist der Folgezustand von P. Es sei angenommen, daß S die Form (1,x,x,1,0,x) besitzt und P die Form (1,1,x,x,0,1). Um einen Übergang des Geräts von P zu S durchzuführen, müssen folgende Bedingungen erfüllt sein. Die Ausgaben q2 und q3 von P müssen aktiviert sein. Zusätzlich müssen Einstellen und Löschen für q2 und q3 deaktiviert sein. Schließlich müssen die Taktanforderungen für die Ausgaben q1 und q2 von S erfüllt sein. Alle diese Beschränkungen müssen mit der Eingangszuweisung von P kompatibel sein. Beginne durch Schneiden der Eingangszuweisung von P und den Produktvektoren, was die Aktivier- Einstell- und Lösch-Bedingungen für q2 und q3 erzwingt. Dann schneide diese Produktvektoren mit der UND-Verknüpfung der Übergangsmengen für q1 und q2 durch. Die Schnittoperation der Übergangsmengen für q1 und q2 wird durch eine Schnittoperation der Menge der Produktvektoren, die alle Übergangsmengen von q1 darstellen, und der Menge der Produktvektoren, die alle Übergänge der Übergangsmengen von q2 darstellen, erhalten. Die erste Nicht-Null-Schnittoperation zwischen den Aktivier-, Einstell- und Lösch-Produktvektoren P und den Übergangsmengen- Produktvektoren von S sei als P' bezeichnet. Es sei bemerkt, daß P' die Anforderungen für einen Übergang von P zu S erfüllt. P' wird als der Vorgängerknoten von S in den Zustandsbaum eingegeben.
- Bevor mit dem vorherigen Schritt fortgefahren wird, kann es möglich sein, einen Vorteil aus der Löschfunktion von q2 und der Einstellfunktion von q3 zu ziehen, um die Ausgangszuweisung von P zu erfüllen. Wenn dies der Fall ist, wird P der erste Übergang unserer Initialisierungssequenz für einen gegebenen Fehlererfassungsvektor. Diese Möglichkeit wird durch das folgende Verfahren überprüft. Führe eine Schnittoperation der Eingangszuweisung von P und der Produktvektoren, die q2 und q3 aktivieren, und der Produktvektoren, die q2 löschen und q3 einstellen, durch. Dann schneide diese Produktvektoren mit der Schnittmenge der Übergangsmengen für q1 und q2. Wenn diese Schnittmenge nicht Null ist, ist es möglich, die Ausgangszuweisung von P asynchron einzustellen und dann den Übergang von P zu S unter Verwendung der Takteingaben, die durch die Schnittoperation der Übergangsmengen von q1 und q2 angezeigt sind.
- Das folgende Beispiel ist gegeben, um einen intuitiven Überblick der Erfindung zu geben. Die detaillierten Schritte der Erfindung sind weggelassen. Die Beschreibung des Geräts ist in der Form einer Zustandsgleichung gegeben:
- q(t+1) = j * /q(t) + /k * q(t)
- wobei "*" eine Boolsche UND-Verknüpfung bezeichnet und "/" das Komplement eines Terms bezeichnet. Das Ziel ist es, alle Blockiert-auf-Eins- und Blockiert-auf-Null-Fehler für die Eingaben j und k und die Ausgabe q zu identifizieren. Die Strategie wird sein, einen Zustand des Geräts zu finden, bei dem q als eine Funktion von j beschrieben ist, und einen weiteren Zustand, bei dem q als eine Funktion von k beschrieben ist. Als nächstes ist die Initialisierungssequenz zu bestimmen, um das j-k-Flip-Flop auf den gewünschten Zustand für den Test einzustellen.
- Beginnend mit der Eingabe j ist zu beobachten, daß q(t+1) eine direkte Funktion ausschließlich des Eingangs j ist, wenn q(t) logisch falsch ist. Der Zustand, bei dem (t) falsch ist, wird durch das Verfahren hergeleitet, das verwendet wird, um die Fehlererfassungsvektoren zu bestimmen. Die Zustandsgleichung wird dann:
- q(t+1) = j * 1 + 0
- oder
- q(t+1) = j
- Die Gleichung g(t+1) = j ist die Fehlererfassungsgleichung für j und q. Eine Initialisierungssequenz ist nun erforderlich, um q(t) logisch auffalsch zu setzen.
- Der minimierte Ausdruck für /q(t) ist leicht unter Verwendung der Boolschen Logik (Demorgan-Theorem) oder einer Karnaugh-Tafel eines j-k-Flip-Flops herzuleiten: (siehe Fig. 6).
- /q(t) = /j * /q(t+1) + k * q(t+1)
- Aus dieser Gleichung ist nicht offensichtlich, wie q(t) auf logisch falsch einzustellen ist, da beide Produktterme eine Funktion des Zustands des Geräts zur Zeit t-1 sind. Die Übereinstimmungsoperation ermöglicht die Herleitung eines zusätzlichen Terms für /q(t). Das Anwenden der Übereinstimmungsoperation auf /q(t) bezüglich q(t-1) ergibt:
- /q(t) = /j * /q(t-1) + * q (t-1) + /j * k
- Das Übereinstimmungsverfahren ergibt den redundanten Produktterm /j * k. Dieser Term ist notwendig, da er zeigt, daß q(t) unter der alleinigen Verwendung von Eingaben auffalsch eingestellt werden kann. Fig. 6 zeigt eine Karnaugh-Tafel, die graphisch den Ursprung des redundanten Produktterms /j * k zeigt.
- Es ist nun möglich, eine Testsequenz zu bilden, um auf statische Fehler der Eingabe j und der Ausgabe q zu testen.
- Es ist nun ein Zustand des Geräts eingerichtet, der die Anforderungen der Fehlererfassungsgleichung erfüllt, und es gibt eine Initialisierungssequenz, um diesen Fehlererfassungszustand zu erreichen. Die Testsequenz lautet: Initialisierung: Fehlererfassungs-Gleichung wahr: Fehlererfassung für j, q Blockiert-auf-Null: Fehlererfassung für j, q Blockiert-auf-Eins:
- Nun ist die Fehlererfassungsgleichung zu identifizieren, bei der q als eine Funktion der Eingabe k beschrieben ist. Unter Beachtung, daß q(t) logisch wahr ist, wird die Zustandsgleichung für das j-k-Flip-Flop:
- q(t+1) = /k
- Unter Verwendung dieser Gleichung wird ein ähnliches Verfahren verwendet, um die Testsequenz für statische Fehler, die die Eingabe k einschließen, bestimmt. Die Testsequenz wird bestimmt, um wie folgt zu lauten: Initialisierung: Fehlererfassungs- Gleichung wahr: Fehlererfassung für k Blockiert-auf-Null, q Blockiert-auf-Eins:
- Wenn die obige Testsequenz bestanden ist, werden alle statischen Anschlußstiftfehler für das j-k-Flip-Flop identifiziert sein. Daher sind die Anforderungen des schaltungsinternen Tests für dieses Gerät erfüllt.
- Das Verfahren der vorliegenden Erfindung liefert daher ein einzigartiges Verfahren der automatischen Testerzeugung (ATG) für die meisten logischen Geräte, die durch Boolsche Zustandsgleichungen beschrieben werden können, das ökonomisch und schnell ist. Dieses Verfahren kann mittels eines Computers entweder in einer Programmiersprache oder in einer Compilersprache implementiert werden und identifiziert quantitativ alle statischen Blockiert-auf-Eins- und Blockiertauf-Null-Anschlußstiftfehler, während ferner ein hoher Grad einer test-internen Fehlerabdeckung geschaffen wird. Der Test, der mittels dieses Verfahrens erzeugt wird, kann auf Geräten mit sequentieller Logik verwendet werden und kann auf eine schaltungsinterne Topologie und asynchrone Register angepaßt werden. Die vorhergehende Beschreibung der Erfindung wurde zu Zwecken der Darstellung und der Beschreibung geboten. Das Ausführungsbeispiel wurde ausgewählt und beschrieben, um die Grundsätze der Erfindung und ihre praktische Anwendung am besten zu erklären, um es dadurch zu ermöglichen, daß Fachleute die Erfindung in verschiedenen Ausführungsbeispielen und verschiedenen Modifikationen, wie diese für eine spezielle betrachtete Verwendung geeignet sind, bestmöglich nutzen.
Claims (10)
1. Ein Automatiktest-Erzeugungsverfahren für ein zu
testendes Gerät, das geeignet ist, um durch Boolsche
Zustandsgleichungen beschrieben zu werden, das folgende Schritte
aufweist: Herleiten (5, 6, 8) von
Fehlererfassungsgleichungen aus den Boolschen Zustandsgleichungen; Bestimmen
(10) von Boolschen Fehlererfassungsprodukten, die einen
Zustand beschreiben, bei dem die
Fehlererfassungsgleichungen wahr sind; Herleiten (11, 12, 14, 16, 17) von
Initialisierungssequenzen durch den Aufbau eines
Zustandsbaums, welche die Anforderungen des Boolschen
Fehlererfassungsprodukte derart erfüllen, daß ein erster
Übergang der Initialisierungssequenz unabhängig vom
Zustand des zu testenden Geräts sequentiell geordnet
werden kann, wobei der Schritt des Herleitens der
Initialisierungssequenzen folgende Schritte aufweist: Erzeugen
von Vorgängerzuständen mittels des Durchführens einer
Boolschen UND-Operation mit den minimierten logisch
wahren und den minimierten logisch falschen
Gerätezustandsgleichungen eines Folgezustands, um einen Boolschen
Vorgängerausdruck zu erhalten, der die Bedingungen erfüllt,
die durch die Ausgangszuweisungen der Folgezustände
definiert sind; Eliminieren der Terme von dem Boolschen
Vorgängerausdruck, der Ausgangszuweisungen aufweist, die
Ausgangszuweisungen der Boolschen Ausdrücke für
Folgezustände entsprechen und durch dieselben abgedeckt sind,
und Anwenden der Übereinstimmungsoperation auf den
Boolschen Vorgängerausdruck unter Verwendung des Theorems xy
+ /xz = xy + /xz + yz, um einen erweiterten Boolschen
Vorgängerausdruck zu erhalten; und Anwenden (18, 20) der
Initialisierungssequenz auf das zu testende Gerät.
2. Ein Verfahren gemäß Anspruch l, das ferner das
Durchführen eines Vorverarbeitungsschrittes (5) einer
Zustandsbeschreibung
des zu testenden Geräts aufweist, um
die Boolschen Zustandsgleichungen zu erhalten.
3. Ein Verfahren gemäß Anspruch 2, dadurch gekennzeichnet,
daß der Vorverarbeitungsschritt (5) das Anwenden des
Demorgan-Theorems auf die Boolschen Zustandsgleichungen
einschließt, um die Komplemente der Boolschen
Zustandsgleichungen herzuleiten und die minimierten logisch
wahren und die minimierten logisch falschen
Gerätezustandsgleichungen zu erhalten.
4. Ein Verfahren gemäß Anspruch 2, dadurch gekennzeichnet,
daß der Vorverarbeitungsschritt (5) das Anwenden der
Übereinstimmungsoperation auf die Boolschen
Zustandsgleichungen einschließt, die auf dem Theorem xy + /xz =
xy + /xz + yz basieren, um zusätzliche Boolsche
Produkte herzuleiten, um zu bestimmen, ob notwendige, jedoch
nicht hinreichende Bedingungen für das Testen des
Geräts existieren.
5. Ein Verfahren gemäß Anspruch 2, dadurch gekennzeichnet,
daß der Vorverarbeitungsschritt (5) das Herleiten von
Boolschen Zustandsgleichungen einschließt, die Geräte
beschreiben, welche asynchrone Merkmale, wie z.B.
Register-Einstellen, -Löschen, -Takten und -Aktivieren
aufweisen.
6. Ein Verfahren gemäß Anspruch 2, dadurch gekennzeichnet,
daß der Vorverarbeitungsschritt (5) das Anpassen der
Boolschen Zustandsgleichungen auf die Topologie des zu
testenden Geräts gemäß dem Erscheinen desselben in
einer Schaltung infolgedessen, daß die Eingänge des
Geräts auf einem vorbestimmten Zustand festgehalten sind,
einschließt.
7. Ein Verfahren gemäß einem beliebigen vorhergehenden
Anspruch, dadurch gekennzeichnet, daß der Schritt (10)
des Bestimmens der Boolschen Fehlererfassungsprodukte
folgende Schritte aufweist: Auswählen eines primären
Boolschen Produkts aus den minimierten logisch wahren
und den minimierten logisch falschen
Gerätezustandsgleichungen, das eine Eingabe enthält, die getestet
werden soll; Definieren aller von dem primären
Boolschen Produkt verschiedenen Boolschen Produkte der
Gerätezustandsgleichung als sekundäre Boolsche Produkte;
Anwenden des Demorgan-Theorems auf die sekundären
Boolschen Produkte, um einen Ausdruck zu erzeugen, der eine
Bedingung definiert, bei der die sekundären Boolschen
Produkte logisch falsch sind; und Minimieren des
Ausdrucks, um eine Menge von minimierten sekundären
Boolschen Produkten zu erhalten.
8. Ein Verfahren gemäß Anspruch 7, dadurch gekennzeichnet,
daß der Schritt des Bestimmens (10) der Boolschen
Fehlererfassungsprodukte, die einen Zustand beschreiben,
bei dem die Fehlererfassungsgleichungen wahr sind,
folgende Schritte aufweist: Herleiten eines primären
Produktvektors aus dem primären Boolschen Produkt;
Darstellen der minimierten sekundären Boolschen Produkte
als sekundäre Produktvektoren; und Schneiden des
primären Produktvektors mit den sekundären Produktvektoren,
um eine Menge von Fehlererfassungsvektoren zu erhalten,
die einen Zustand beschreiben, bei dem die
Fehlererfassungsgleichungen wahr sind.
9. Ein Verfahren gemäß Anspruch 8, dadurch gekennzeichnet,
daß es ferner das Anwenden der
Übereinstimmungsoperation auf die Ausgangszuweisungen der Menge von
Fehlererfassungsvektoren einschließt, um eine zusätzliche
Menge von Fehlererfassungsvektoren herzuleiten.
10. Ein Verfahren gemäß Anspruch 9, dadurch gekennzeichnet,
daß der Schritt des Herleitens von
Initialisierungssequenzen (11, 12, 14, 16, 17) folgende Schritte
einschließt Sequentielles Bestimmen von
Vorgängerzuständen (12) durch Auswählen eines vorbestimmten
Fehlererfassungsvektors
aus der zusätzlichen Menge von
Fehlererfassungsvektoren zum Herleiten einer
Initialisierungssequenz; Bestimmen von Ausgangszuweisungen (12)
des vorbestimmten Fehlererfassungsvektors, Durchführen
einer Boolschen UND-Operation auf den minimierten
logisch wahren und den minimierten logisch falschen
Gerätezustandsgleichungen eines Folgezustands, um eine
Menge von Vorgängerzustandsanzeigen zu erhalten,
Minimieren der Menge der Vorgängerzustandsknoten durch
Eliminieren redundanter Vorgängerzustandsknoten, Anwenden
eines Übereinstimmungsverfahrens, das auf dem Theorem
xy + /xz = xy + /xz + yz basiert, um eine erweiterte
Menge von Vorgängerzustandsknoten zu erhalten,
Eliminieren der Knoten der Vorgängerzustände unter
Verwendung des Ausäst-Verfahrens, indem die reduzierte Menge
von Vorgängerzustandsknoten durch Eliminieren der
Knoten reduziert wird, die redundante Ausgangszuweisungen
aufweisen, die aus dem vorbestiininten
Fehlererfassungsvektor hergeleitet wurden, um eine weiter reduzierte
Menge von Vorgängerzustandsknoten zu erhalten,
Reduzieren der reduzierten Menge von
Vorgängerzustandsknoten bezüglich abgedeckter Ausgangszuweisungen,
basierend auf dem Theorem x + xy = x, um eine weiter
reduzierte Menge von Vorgängerzustandsknoten zu erhalten,
Reduzieren der weiter reduzierten Menge von
Vorgängerzustandsknoten durch Eliminieren der Knoten, die von
irgendeinem anderen Fehlererfassungsvektor der Menge
von Fehlererfassungsvektoren hergeleitet wurden, für
die keine Initialisierungssequenz existiert, und
Fortsetzen eines Verfahrens des sequentiellen Bestimmens
der Vorgängerzustände und des Eliminierens von Knoten
der Vorgängerzustände, um die Initialisierungssequenz
zu erhalten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/090,869 US4853928A (en) | 1987-08-28 | 1987-08-28 | Automatic test generator for logic devices |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3854636D1 DE3854636D1 (de) | 1995-12-07 |
DE3854636T2 true DE3854636T2 (de) | 1996-05-02 |
Family
ID=22224717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3854636T Expired - Fee Related DE3854636T2 (de) | 1987-08-28 | 1988-08-26 | Automatischer Prüfprozess für logische Geräte. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4853928A (de) |
EP (1) | EP0305217B1 (de) |
JP (1) | JPH01152379A (de) |
KR (1) | KR920006969B1 (de) |
DE (1) | DE3854636T2 (de) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1246467B (it) * | 1990-10-22 | 1994-11-19 | St Microelectronics Srl | Macchina a stati finiti per sistemi affidabili di computazione e regolazione |
US5321701A (en) * | 1990-12-06 | 1994-06-14 | Teradyne, Inc. | Method and apparatus for a minimal memory in-circuit digital tester |
US5377201A (en) * | 1991-06-18 | 1994-12-27 | Nec Research Institute, Inc. | Transitive closure based process for generating test vectors for VLSI circuit |
US5331570A (en) * | 1992-03-27 | 1994-07-19 | Mitsubishi Electric Research Laboratories, Inc. | Method for generating test access procedures |
EP0584385B1 (de) * | 1992-08-25 | 1996-11-06 | International Business Machines Corporation | Verfahren und System zum Testen eines integrierten Schaltkreises mit Abfragedesign |
US5517506A (en) * | 1994-03-28 | 1996-05-14 | Motorola, Inc. | Method and data processing system for testing circuits using boolean differences |
US5546408A (en) * | 1994-06-09 | 1996-08-13 | International Business Machines Corporation | Hierarchical pattern faults for describing logic circuit failure mechanisms |
US6134689A (en) | 1998-02-12 | 2000-10-17 | Motorola Inc. | Method of testing logic devices |
FR2798472B1 (fr) * | 1999-09-15 | 2001-12-14 | Centre Nat Etd Spatiales | Procede de localisation d'elements defectueux dans un circuit integre |
EP1364286B1 (de) * | 2001-02-20 | 2009-08-19 | Siemens Aktiengesellschaft | Verfahren und anordnung zur ermittlung einer gesamtfehlerbeschreibung zumindest eines teils eines technischen systems, computer programm-element und computerlesbares speichermedium |
US6654701B2 (en) * | 2001-08-30 | 2003-11-25 | Spirent Communications | Method and apparatus for measuring protocol performance in a data communication network |
US7437638B2 (en) * | 2002-11-12 | 2008-10-14 | Agilent Technologies, Inc. | Boundary-Scan methods and apparatus |
US7376876B2 (en) * | 2004-12-23 | 2008-05-20 | Honeywell International Inc. | Test program set generation tool |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1381413A (en) * | 1920-01-06 | 1921-06-14 | Henry A Gardner | Fabric for airships and process of making same |
GB1381413A (en) * | 1972-06-21 | 1975-01-22 | Ibm | Methods of testing asynchronous sequential circuits |
US4204633A (en) * | 1978-11-20 | 1980-05-27 | International Business Machines Corporation | Logic chip test system with path oriented decision making test pattern generator |
GB8327753D0 (en) * | 1983-10-17 | 1983-11-16 | Robinson G D | Test generation system |
FR2573887B1 (fr) * | 1984-11-26 | 1992-09-04 | Nec Corp | Procede de generation de configurations de test pour dispositifs a reseaux logiques |
US4692921A (en) * | 1985-08-22 | 1987-09-08 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method for generating verification tests |
-
1987
- 1987-08-28 US US07/090,869 patent/US4853928A/en not_active Expired - Fee Related
-
1988
- 1988-08-26 EP EP88307982A patent/EP0305217B1/de not_active Expired - Lifetime
- 1988-08-26 DE DE3854636T patent/DE3854636T2/de not_active Expired - Fee Related
- 1988-08-26 JP JP63213479A patent/JPH01152379A/ja active Pending
- 1988-08-27 KR KR1019880010953A patent/KR920006969B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP0305217A3 (en) | 1990-10-24 |
DE3854636D1 (de) | 1995-12-07 |
EP0305217B1 (de) | 1995-11-02 |
US4853928A (en) | 1989-08-01 |
KR890004172A (ko) | 1989-04-20 |
KR920006969B1 (ko) | 1992-08-22 |
JPH01152379A (ja) | 1989-06-14 |
EP0305217A2 (de) | 1989-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69033360T2 (de) | Simulation von ausgewählten Logik-Schaltungsentwürfen | |
DE69321124T2 (de) | Verfahren zur simulation einer elektronischen schaltung mit verbesserter genauigkeit. | |
DE69229889T2 (de) | Automatische Logikmodell-Erzeugung aus einer Schaltschema-Datenbank | |
DE2346617C3 (de) | Verfahren zur Prüfung der einseitig begrenzten Laufzeitverzögerung einer Funktionseinheit | |
DE3689228T2 (de) | Verfahren zur Modellierung und zur Fehlersimulation von komplementären Metalloxidhalbleiterschaltungen. | |
DE69223787T2 (de) | System fuer qualitative schlussfolgerung mit paralleler verarbeitung | |
DE2349324C2 (de) | Verfahren zum Prüfen einer Funktionseinheit und Einrichtung zur Durchführung des Verfahrens | |
DE3856079T2 (de) | Verfahren für einen Blockdiagramm-Simulator | |
EP0010173B1 (de) | Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen | |
DE69225527T2 (de) | Verfahren und System zur automatischen Bestimmung der logischen Funktion einer Schaltung | |
DE69502952T2 (de) | Vorrichtung zur erzeugung von instruktionen | |
DE3854636T2 (de) | Automatischer Prüfprozess für logische Geräte. | |
DE68923086T2 (de) | Verfahren zum Testen von hierarchisch organisierten integrierten Schaltungen und integrierte Schaltungen, geeignet für einen solchen Test. | |
DE19903633A1 (de) | Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware | |
DE3900750A1 (de) | Wissensbasis - verfahren - vorrichtung zum entwerfen integrierter schaltungen mittels funktionaler spezifikationen | |
DE69226937T2 (de) | Prüfverfahren für Leiterplatten | |
EP0580663B1 (de) | Verfahren zur verifikation datenverarbeitender systeme | |
EP0186724A1 (de) | Prüf- und Diagnoseeinrichtung für Digitalrechner | |
DE19536203A1 (de) | Fehlerdiagnoseverfahren für eine sequentielle Schaltung | |
DE68927984T2 (de) | Logikschaltung mit einer Prüffunktion | |
DE69533567T2 (de) | Vorrichtung und Verfahren zum Auffinden von False-Timing-Paths in digitalen Schaltkreisen | |
DE4327660C2 (de) | Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung | |
DE69127798T2 (de) | Verfahren und Gerät zum Organisieren und Analysieren von Zeitsteuerungsinformationen | |
DE10038499A1 (de) | Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung | |
DE19748016A1 (de) | Kostengünstiges Prüfverfahren für Registerübertragungspegelschaltungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: AGILENT TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELA |
|
8339 | Ceased/non-payment of the annual fee |