DE68910461T2 - GERäT ZUR RECHNERGESTÜTZEN ERZEUGUNG VON PRÜFPROGRAMMEN FÜR DIGITALE SCHALTUNGEN. - Google Patents

GERäT ZUR RECHNERGESTÜTZEN ERZEUGUNG VON PRÜFPROGRAMMEN FÜR DIGITALE SCHALTUNGEN.

Info

Publication number
DE68910461T2
DE68910461T2 DE89904134T DE68910461T DE68910461T2 DE 68910461 T2 DE68910461 T2 DE 68910461T2 DE 89904134 T DE89904134 T DE 89904134T DE 68910461 T DE68910461 T DE 68910461T DE 68910461 T2 DE68910461 T2 DE 68910461T2
Authority
DE
Germany
Prior art keywords
processor
arrangement
rules
discrimination
bus
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
Application number
DE89904134T
Other languages
English (en)
Other versions
DE68910461D1 (de
Inventor
Ajay Gupta
Robert Welham
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agilent Technologies Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE68910461D1 publication Critical patent/DE68910461D1/de
Publication of DE68910461T2 publication Critical patent/DE68910461T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318307Generation of test inputs, e.g. test vectors, patterns or sequences computer-aided, e.g. automatic test program generator [ATPG], program translations, test program debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

  • Die vorliegende Erfindung betrifft das Testen digitaler elektronischer Anordnungen.
  • Derartige Anordnungen gibt es mit einer großen Bandbreite von Komplexitäten, beginnend bei Schaltungen, die aus diskreten Widerständen und Transistoren bestehen, über Schaltungsplatinen, die eine große Anzahl von höchstintegrierten Schaltungen tragen, bis hin zu kompletten Computersystemen. Es ist regelmäßig wünschenswert oder nötig, in der Lage zu sein, derartige Anordnungen zu testen.
  • Bei den untersten Ebenen erfordert das Testen einzelner Komponenten, wie beispielsweise von Widerständen oder Transistoren, häufig das Prüfen von Parameterwerten; in diesem Fall werden die Komponenten selbst nicht als digitale Geräte behandelt. In den höchsten Ebenen wird das Testen durch die Anordnungen selbst durchgeführt, indem diese selbst Testprogramme ablaufen lassen. Zwischen diesen beiden Extremen geht das Testen mit dem Anlegen von speziell ausgewählten Eingangskombinationen an die Anordnung und mit dem Überwachen der Ausgänge einher. Die vorliegende Erfindung befaßt sich hauptsächlich mit diesem mittleren Niveau.
  • Das Testen derartiger Anordnungen wird häufig bei einer Sequenz unterschiedlicher Niveaus stattfinden; wenn eine Anordnung als fehlerhaft ermittelt wurde, kann sie in Untereinheiten heruntergebrochen werden, die dann einzeln getestet werden. Dieses Herunterbrechen kann durch physikalisches Auseinanderbauen oder durch Verwendung von Sonden (z.B. Nagelbettestern), welche die einzelnen Unteranordnungen in der vollständigen Anordnung erreichen, erfolgen. Im letztgenannten Fall werden die Unteranordnungen prinzipiell einzeln getestet, obgleich deren Antwortsignale durch die Antworten der anderen Untereinheiten verkompliziert werden, mit denen sie verbunden sind.
  • Die vorliegende Erfindung befaßt sich insbesondere mit dem Testen von Anordnungen, welche als Einheiten behandelt werden - d.h. mit dem Testen, welches lediglich das Anlegen von Eingangssignalen an und das Überwachen von Ausgangssignalen von Gesamtanordnungen umfaßt, ohne daß ein direkter Zugriff zu Innenpunkten oder Komponenten der Anordnung erfolgt.
  • Ein weiteres Problem, das mit dem Testen einhergeht, ist dasjenige von Zwischenfehlern. Diese sind bekanntermaßen schwer zu identifizieren. Die vorliegende Erfindung befaßt sich nicht mit derartigen Fehlern.
  • Es sei eine Anordnung gegeben, welche getestet werden muß, so muß ein Testprogramm - eine Kombination von Testeingangssignalen oder eine Sequenz derartiger Kombinationen - für diese Anordnung entworfen werden. Bei ausreichend einfachen Anordnungen gibt es kein Problem bei dem Entwurf einer Testsequenz; das Testen kann erschöpfend sein. Ein UND-Gatter mit zwei Eingängen kann beispielsweise getestet werden, indem sämtliche vier möglichen Kombinationen der Eingangssignale an dieses angelegt werden und indem der Ausgang (oder beide Ausgänge), falls das Gatter gleichfalls einen komplementären Ausgang hat) überwacht wird bzw. werden. Bei noch komplizierteren Anordnungen ist jedoch ein erschöpfendes Testen nicht möglich, da die Anzahl der möglichen Kombinationen der Eingangsbits exponentiell mit der Anzahl der Eingänge ansteigt und da die Anzahl der möglichen inneren Zustände der Anordnung gleichfalls in Betracht gezogen werden muß, falls die Anordnung über eine reine kombinatorische Logik hinausreicht und jegliche Form von Flip-Flops oder anderen Speicherelementen umfaßt.
  • Es ist möglich, eine Zufallssequenz oder eine pseudo-zufällige Sequenz von Testprogrammen bei der Verwendung mit derartigen Anordnungen zu wählen, ausgehend von der Annahme, daß eine vernünftig lange derartige Sequenz annähernd sicher jegliche Fehler erfassen wird. Abweichend ist es möglich, vorab zu beurteilen, welche Fehler wahrscheinlich sind, und es zu versuchen, ein Testprogramm zu entwerfen, das derartige Fehler erfassen wird. Dieser letztgenannte Ansatz hat es bislang mit sich gebracht, den Entwurf der Testprogramme als ein intellektuelles Puzzle zu behandeln.
  • Die Fachveröffentlichung mit dem Titel "A Test Pattern Generation Environment for Complex Test Digital Circuits" in der siebten European Conference on Electrotechnics, Advanced Technologies and Processes in Communication and Power Systems, 21. - 23. April 1986, Paris, Sitzung AII: New Software and Expert Systems, Communications AII-1, R. Lbath et al beschreibt eine Einrichtung für die Unterstützung der Unterstützung der Erzeugung von Testprogrammen beim Testen digitaler Schaltungsanordnungen. Diese Veröffentlichung schlägt die Verwendung von Expertensystemen vor, um die Autimatisierung von Verfahren zu unterstützen, welche durch menschliche Experten verwendet werden, welche eine Unterteilung der Schaltung in Makrokomponenten und die Bestimmung von Testwegen durch die Schaltung einschließen. Diese Veröffentlichung offenbart die Modellierung des Systemes als ein graphisches Netzwerk des hierarchischen Modell-Types, einschließlich eines funktionalen Modells, welches bei den funktional unterteilenden Verfahrensschritten und den Testwegbestimmungsverfahrensschritten verwendet wird. Der Testwegbestimmungsschritt umfaßt das Identifizieren sämtlicher möglicher Testwege durch die Schaltungsplatine.
  • In der Fachveröffentlichung mit dem Titel "Automating Test Generation Closes the Design Loop" in Electronics, Band 54, Nummer 24, 30. November 1981 New York, R. Hickling et al, Seiten 129 - 133, wird der bekannte Ansatz der geläufigen Simulation diskutiert, bei der gute und fehlerhafte Schaltungselemente simuliert werden. Eine Entscheidung von unterschiedlichen Ausgängen der guten und fehlerhaften Modelle wird verwendet, um eine optimale Testsequenzerzeugung zu ermitteln.
  • Es ist das Ziel der vorliegenden Erfindung, eine automatische Einrichtung zum Erzeugen oder für die Unterstützung bei der Erzeugung von Testprogrammen für digitale elektronische Anordnungen zum Erfassen vorbestimmter Fehler zu schaffen.
  • Demgemäß liefert die Erfindung eine Einrichtung für die Unterstützung bei der Erzeugung eines Testprogrammes zum Testen einer digitalen Schaltungsanordnung bezüglich eines vorbestimmten Fehlers, gekennzeichnet durch eine Einrichtung zum Speichern formaler hierarchischer Beschreibungen, die ausreichen, um die Anordnung ohne und mit dem Fehler zu beschreiben; eine Registereinrichtung zum Halten für jede Anordnung (d.h. die Anordnung ohne den Fehler und diejenige mit dem Fehler) einer Darstellung von wenigstens einem Teil der Anordnung, abgeleitet von deren formaler Beschreibung; drei Prozessoreinrichtungen (17, 18, 10) zum Bearbeiten der Inhalte der Registereinrichtung (15, 16), wobei die drei Prozessoreinrichtungen (17, 18, 19) folgende Merkmale umfassen: eine Entfaltungsprozessoreinrichtung zum hierarchischen Expandieren der Inhalte der Registereinrichtung, eine Vereinfachungsprozessoreinrichtung zum Anlegen von Vereinfachungsregeln an die Inhalte der Registereinrichtung; und eine Unterscheidungsbedingungextraktionsprozessoreinrichtung zum Extrahieren von Unterscheidungsbedingungen aus den Inhalten der Registereinrichtung.
  • Bevorzugterweise umfaßt die Einrichtung zum Speichern der formalen hierarchischen Beschreibungen der beiden Anordnungen eine primäre Speichereinrichtung zum Speichern der jeweiligen Beschreibungen der beiden Anordnungen, bestehend aus einer ersten Speichereinrichtung zum Speichern einer vollständigen Beschreibung von einer der Anordnungen und einer zweiten Speichereinrichtung zum Speichern einer Beschreibung des Fehlers, und einer Untermodulspeichereinrichtung, die mit dieser verbunden ist, um die Beschreibungen des Untermodules zu speichern, welches in den Anordnungen und/oder gemeinsam für beide wiederholt werden kann.
  • Bevorzugterweise ist gleichfalls der Unterscheidungsbedingungsextraktionsprozessor mit einer Unterscheidungszustandsspeichervorrichtung verbunden, um aufeinanderfolgende Unterscheidungsbedingungen, die durch diesen Prozessor bestimmt sind, zu akkumulieren.
  • Die durch den Prozessor gespeicherten Vereinfachungsregeln können aus logischen Regeln, arithmetischen Regeln und Regeln bezüglich spezieller Schaltungseigenschaften der beiden Anordnungen bestehen. Wahlweise kann dieser Prozessor der Bedienungsperson einen Eingriff erlauben, so daß die Vereinfachung, insbesondere bezüglich arithmetischer Ausdrücke und spezieller Schaltungseigenschaften der beiden Anordnungen durch die Bedienungsperson ausgeführt werden kann.
  • Spezielles Ausführungsbeispiel
  • Ein Ausführungsbeispiel der Erfindung wird nachfolgend beispielshaft unter Bezugnahme auf die Zeichnungen beschrieben. Es zeigen:
  • Fig. 1 ein Blockdiagramm einer typischen digitalen elektronischen Anordnung, für die Testprogramme zu entwerfen sind;
  • Fig. 2 ein Blockdiagramm eines Komponentenmodules dieser Anordnung;
  • Fig. 3 ein Diagramm der hierarchischen Anordnung der Module dieser Anordnung;
  • Fig. 4 ein Blockdiagramm der Vorrichtung zum Ausführen der Erfindung; und
  • Fig. 5 ein Blockdiagramm eines rekursiven Modules.
  • Einführender Überblick
  • Die vorliegende Erfindung befaßt sich mit dem Testen von digitalen Schaltungsanordnungen und insbesondere mit dem Entwurf oder der Erzeugung von Testprogrammen zu diesem Zweck. Diesbezüglich muß die Anordnung in einer formalen Beschreibungssprache geschrieben werden, welche das Verhalten der Anordnung mit einem ausreichenden Grad an Detailliertheit definiert. Ferner muß die Natur des Fehlers, der zu testen ist, in ähnlicher Weise festgelegt werden.
  • Genauer gesagt wird die fehlerhafte Anordnung in der gleichen Weise wie die funktionsfähige Anordnung beschrieben. Daher gibt es tatsächlich zwei Anordnungen, nämlich die Fehlerlose und die Fehlerhafte. Die Beschreibungen dieser beiden Anordnungen können ausgedehnt, analysiert und verglichen werden, wobei ein dreistufiger Zyklus des Entfaltens, der Vereinfachung und der Extraktion von Unterscheidungsbedingungen (oder Unterscheidbarkeiten) verwendet wird.
  • Die Beschreibung einer jeden Anordnung hat eine baumartige (hierarchische) Form, bestehend aus einer Reihe von funktionalen Aussagen, von denen eine jede erweitert oder entfaltet werden kann, indem man entlang des Baumes nach unten geht. Die anfängliche Aussage oder die anfänglichen Aussagen, welche die Anordnung beschreibt bzw. beschreiben - das Modul des höchsten Niveaus - enthalten explizite Bezugnahmen auf bildende Module bei dem nächsten Nivau nach unten der Hierarchie. Diese Bezugnahmen beziehen sich implizit auf die Funktionen dieser Module, wobei das Entfalten das Kopieren der Funktionen dieser Module in die anfängliche Aussage oder die anfänglichen Aussagen umfaßt, so daß die Funktionen dieser Module explizit in den sich ergebenden Versionen oder Transformationen der anfänglichen Aussagen ergeben.
  • Die Vereinfachungsstufe umfaßt das Anwenden einer Vielzahl von logischen und arithmetischen Regeln zum Manipulieren der sich ergebenden Aussagen, um diese in eine geeignetere Form zu bringen. Die Vereinfachungen beziehen sich, soweit dies möglich ist, auf das Ermöglichen der nächsten Stufe - die Extraktion von Unterscheidungsbedingungen. Zu diesem Zweck werden zwei parallele Sätze von Aussagen für die fehlerfreie und die fehlerhafte Anordnung bezüglich Zuständen verglichen, welche in diesen beiden Sätzen übereinstimmen. Derartige Zustände sind gemeinsam in dem Sinn, daß sie die gleichen für beide Sätze sind, und nötig in dem Sinn, daß sie als Teil einer jeglichen letzlich erzeugten Kombination von Testeingängen erfüllt sein müssen. Daher werden sie von diesen beiden Sätzen von Bedingungen entfernt und aufgezeichnet. Die sich ergebenden beiden Sätze von reduzierten Bedingungen werden dann erneut durch den dreistufigen Zyklus gegeben. Letzlich definieren die beiden Sätze der reduzierten Bedingungen einfach die gleiche Bedingung, wobei dies die letztendliche Unterscheidungsbedingung ist.
  • Daher wird eine Sequenz von Unterscheidungsbedingungen gefunden. Wenn sich diese akkumulieren, wirken sie tatsächlich im Sinne einer allmählichen Fokussierung herab auf den Punkt, bei dem die beiden Anordnungen, die fehlerfreie und die fehlerbehaftete - sich voneinander unterscheiden. Dies ist dann gradlinig für die Erzeugung eines tatsächlichen Testprogrammes ausgehend hiervon. (Die vorliegende Erfindung befaßt sich nicht mit diesem letztgenannten Schritt, der aus diesem Grunde nicht beschrieben wird).
  • Die Vereinfachungs- und Unterscheidungs-Bedingungsextraktionsprozesse beruhen erheblich auf Ausdrücken in der Wenn- Dann-Anderenfalls-Form (if-then-else-form).
  • Prolog
  • Die vorliegende Beschreibung geht von der Annahme einer grundlegenden Kenntnis der logischen Programmierung in der Art aus, wie sie von jedem Fachmann besessen wird. Insbesondere wird eine gewisse Kenntnis der logischen Programmierungssprachen prolog vorausgesetzt. (Für einen grundlegenden Text wird Bezug genommen auf "Programming in Prolog", W.F. Clocksin und C.S. Mellish, Springer-Verlag 1984). Als Hilfe für das Verständnis der Erfindung wird jedoch eine ausgesprochen kurze Zusammenfassung von Prolog folgendermaßen wiedergegeben. Diese Zusammenfassung ist jedoch weit von einer präzisen Darstellung entfernt; zum Zwecke der Genauigkeit muß man auf einen Standardtext bezüglich Prolog Bezug nehmen, wie beispielsweise das genannte Buch von Clocksin und Mellish.
  • Prolog ist eine erklärende Sprache, die primär für symbolische, nicht-numerische Berechnungen entworfen worden ist. Ein Prolog-Programm besteht aus einem Satz von Tatsachen- und Regel-Aussagen. Es gibt so gut wie nichts Entsprechendes zu der Programmstruktur von beispielsweise Fortran.
  • Für die vorliegenden Zwecke sind die letzten Elemente von Prolog Konstanten. Selbstverständlich existieren auch Variable in Prolog, obwohl diese "letztlich" (in dem gerade gebrauchten Sinn) als ("ersetzt durch") - Konstanten betrachtet werden. Eine Konstante wird üblicherweise mit einem kleinen Anfangsbuchstaben (z.B. john) während eine Variable mit einem anfänglich großen Buchstaben (z.B. X oder Father) geschrieben wird.
  • Eine typische einfache Prolog-Tatsachen-Aussage hat die Form parent (john, susan), welche derart verstanden werden kann, daß john ein Elternteil von susan ist. Eine Anfrage oder ein Ziel hat die gleiche Form wie eine Tatsachen-Aussage, der ein Fragezeichen ? vorhergeht. Daher ist ? parent (john, Child) eine Frage. Ein Prolog-System wird eine Frage erkennen, und die darin enthaltene Variable identifizieren (im vorliegenden Fall wird Child als Variable durch seinen großen Anfangsbuchstaben identifiziert), so daß das System eine (Lösung) zu dem darinliegenden Ziel des Findens einer Konstante zu finden versucht, durch die diese Frage-Aussage "wahr" wird. (Im vorliegenden Fall ist die Variable Child der Konstanten susan zugeschrieben). Eine Tatsachenaussage kann eine Anzahl von Argumenten haben, wobei jedes dieser Argumente Variable sein können; falls die Tatsachenaussage eine Frage ist, versucht das System, Konstante für sämtliche Variable zu finden. (Ein Ziel oder eine Frage kann aus einer Kombination von Aussagen bestehen, so daß beispielsweise eine Variable zwei oder mehr Frage-Aussagen gleichzeitig erfüllen muß).
  • Allgemeinere Beziehungen werden als Regeln ausgedrückt, welche aus Aussagen bestehen, die die gleiche allgemeine Form wie Tatsachen-Aussagen haben. Ein Beispiel einer Beziehung lautet: grandfather (X,Y) :father (X,Z), father (Z,Y); father (X,Z), mother (Z,Y).
  • (Hier bezeichnet ein Komma das logische UND, so daß beispielsweise father (X,Z) und father (X,Y) gleichzeitig erfüllt sein müssen, während das Semikolon das logische ODER bezeichnet, so daß die Großelternschaft väterlicherseits oder mütterlicherseits sein kann). Das System ist dazu in der Lage, die Regeln zu verwenden, um logische Schlüsse bei dem Versuch zu ziehen, ein Ziel oder eine Frage zu erfüllen; wenn mit anderen Worten das System findet, daß der linksseitige Teil einer Regel eine Frage erfüllen könnte, ist es dazu in der Lage, den rechtsseitigen Teil als eine Unterfrage oder mehrere Unterfragen aufzustellen.
  • Ein grundlegendes Merkmal von Prolog besteht darin, daß die Regeln rekursiv sein können. Ein einfaches Beispiel lautet: ancestor (X,Y) :parent (X,Y). ancestor (X,Z) :parent (X,Y), ancestor (Y,Z).
  • Die zweite Regel definiert die ancestorhood-Beziehung (Vorfahren-Beziehung) in einer rekursiven Form. Eine rekursive Beziehung wie diese muß immer von einer alternativen, nicht- rekursiven Regel für die gleiche Beziehung begleitet sein; hier definiert die erste Regel die benötigte Alternative ancestorhood-Beziehung (Vorfahren-Beziehung). (Es sind gleichfalls weitere Beschränkungen vorhanden, die beachtet werden müssen, wenn die Gefahr eines unendlichen Rückgreifens vermieden werden soll.)
  • Prolog ist hauptsächlich eine deklarative Sprache und nicht eine prozedurale Sprache. Die hauptsächliche Art, etwas in Prolog zu erhalten, besteht daher in der Formulierung eines Zieles - einer Aussage, welcher ein Fragesymbol vorangeht. Das System versucht, dieses Ziel zu erfüllen, indem nach Konstanten gesucht wird, die die Variablen innerhalb des Ziels ersetzen können. Indem dies getan wird, sucht das System verschiedene Aussagen durch, und sucht nach solchen, die mit dem Ziel oder einem Teil des Zieles zusammenpassen. Diese Vorgehensweise kann das Ersetzen einer Variablen in dem Ziel durch eine Aussage in dem System mit sich bringen, welche dann ein Unterziel wird. So können die Aussagen oft als deklarative Formulierungen dessen angesehen werden, was innerhalb eines prozeduralen Systemes eine Unterroutine darstellen würde: (die obigen ancestor-Regeln ( Vorfahren-Regeln) sind ein einfaches Beispiel dieses Zusammenhanges.) Die Aufstellung eines Unterzieles innerhalb eines Prolog- Systemes ist im breitesten Sinne ähnlich zu einem Aufruf einer Unterroutine in einem prozeduralen System.
  • Obwohl Prolog hauptsächlich symbolisch ist, ist es möglich, numerische Funktionen hierin aufzunehmen. Tatsächlich sind einige Grundfunktionen, wie beispielsweise die Addition von ganzen Zahlen, normalerweise in das System eingebaut, wobei kompliziertere Funktionen in Termen dieser Grundfunktionen definiert werden können.
  • Innerhalb der nachfolgenden Beschreibung werden die Konventionen von Prolog verwendet, obwohl dies in einer etwas lockeren und informellen Art geschieht. Ferner werden einige Aspekte der Erfindung prozedural und nicht deklarativ beschrieben. Man wird erkennen, daß einerseits die Erfindung im wesentlichen mittels deklarativer Aussagen implementiert werden kann, welche durch ein übliches Prolog-System oder prolog-artiges System gestützt werden; andererseits kann die Erfindung über weite Strecken prozedural implementiert werden.
  • Formale Beschreibung der Hardware
  • Die Erfindung befaßt sich mit der automatischen oder halbautomatischen Erzeugung eines Testprogrammes - eines Satzes von Testzuständen - zum Testen der Betriebsweise eines definierten Hardwareteiles. Diesbezüglich muß die zu testenden Hardware in einer vorbestimmten formalen Art beschrieben werden - d.h. unter Verwendung einer formalen Sprache, welche bei dem bevorzugten Ausführungsbeispiel eine prologähnliche Sprache ist. Die Natur dieser Sprache wird aufgrund eines Ausführungsbeispieles weiter deutlich.
  • Ein Ausführungsbeispiel einer Hardwareschaltung
  • Fig. 1 ist ein Blockdiagramm einer Schaltung zum Überwachen des Verhaltens eines Speichers. (Diese Schaltung ist tatsächlich eine vereinfachte Version einer praktischen Schaltung, in der es eine Bank von 24 Flankenpulsgeneratoren gibt, welche parallel betrieben werden). Ein Mikroprozessor mc steuert einen Schleifenpulsgenerator pgen, dessen Ausgang einem Pulsflanken-Flip-Flop peff zugeführt und zu dem Mikroprozessor rückgekoppelt wird, sowie einen Pulsflankengenerator egen, dessen Ausgang zu dem Pulsflanken-Flip-Flop peff zugeführt wird, wobei der Ausgang dieses Flip-Flop beobachtet werden kann. Der Schleifenpulsgenerator und der Flankenpulsgenerator haben eine ähnliche Bauweise.
  • Die Betriebsweise dieser Schaltung besteht darin, daß der Mikroprozessor anfänglich die beiden Generatoren mit unterschiedlichen Verzögerungszeiten programmiert. Dann schickt er eine Sequenz von Signalen zu den beiden Generatoren, wobei jedes Signal die nächste Verzögerung der gespeicherten Sequenz von Verzögerungen auswählt. Der Pulsschleifengenerator pgen sendet sein Ausgangssignal zurück zu dem Mikroprozessor am Ende einer jeden Verzögerung (eines jeden Zyklus), woraufhin der Mikroprozessor das nächste Signal an die beiden Generatoren aussendet. Der Flankengenerator egen spricht in ähnlicher Weise auf die Signale von dem Mikroprozessor an und erzeugt ein Signal nach jeder seiner voreingestellten Verzögerungszeiten. Diese Signale werden an das Pulsflanken-Flip-Flop ausgesandt, um dieses zu setzen. Die Verzögerung des Flankengenerators egen kann diejenige der Pulsgenerators pgen übersteigen, so daß der Flankengenerator eqen dazu in der Lage sein muß, zwei Verzögerungen gleichzeitig zu messen, von denen eine mit dem jüngsten Auswahlsignal von dem Mikroprozessor beginnt und die andere immer noch von dem vorhergehenden derartigen Signal läuft. Er umfaßt daher zwei Verzögerungsschaltungen im Gegensatz zu dem Pulsflankengenerator. Der Mikroprozessor überprüft den Zustand des Pulsflanken-Flip-Flop bei Empfang des Pulses von dem Schleifenpulsgenerator; dieser Puls setzt gleichfalls das Pulsflanken-Flip-Flop zurück, falls dieses während des Zyklus gesetzt worden ist, welches durch den vorliegenden Puls beendet worden ist.
  • Fig. 2 ist ein Blockdiagramm der Flankengeneratoreinheit egen. Diese umfaßt einen Testsignalspeicher mit wahlfreiem Zugriff tsram, zwei Zähler even_counter und odd_counter, und ein ODER-Gatter or (gleichfalls als edgeor 1 bezeichnet), wie dies dargestellt ist. Das RAM speichert anfänglich eine Reihe von Verzögerungen als eine Reihe von Werten eines Signales addr_bus auf einem 16-Bit-Bus (wobei die RAM-Größe 256 x 16 Bits beträgt). Der Mikroprozessor sendet dann eine Sequenz von Adressen; wenn jede Adresse empfangen worden ist, wird der entsprechende gespeicherte Wert aus dem RAM ausgelesen und durchläuft dann die geraden und ungeraden Zähler über einen Bus data_bus. Ein Auswahlsignal select, das durch den Mikroprozessor erzeugt wird, ändert den Zustand bei jedem "Zyklus", so daß der ungerade und der gerade Zähler abwechselnd ausgewählt werden. In dem ausgewählten Zähler wird der gespeicherte Wert von dem RAM eingestellt, woraufhin dieser dann ständig in Reaktion auf Taktpulse herabzählt; wenn der Zählwert 0 erreicht, erzeugt der Zähler einen Ausgangspuls. Dieser Ausgangspuls durchläuft das ODER- Gatter zum Erzeugen eines Signales edgeout, welches zu dem Pulsflanken-Flip-Flop peff zugeführt wird.
  • Formale Beschreibung dieser Schaltung
  • Die formale Beschreibung dieser Schaltung wird mittels prolog-ähnlichen Aussagen entwickelt, wobei die Schaltung als eine Hierarchie von Modulen behandelt wird. (Es wird selbstverständlich zur Kenntnis genommen, daß andere formale Typen der Beschreibung existieren und anstelle der vorliegenden prolog-artigen Form verwendet werden können).
  • Die Schaltung selbst ist ein Modul und besteht aus einfacheren Modulen, von denen einige selbst aus noch einfacheren Modulen bestehen können. Bei dem niedrigsten Niveau gibt es elementare Module, die nicht aus noch einfacheren Modulen bestehen. Die Schaltungsbeschreibung erfolgt in Termen der Modul-Typen und benannten Module; jeder Modul-Typ ist bezüglich seiner Funktion festgelegt, wobei jedes benannte Modul mit seinen Eingängen und Ausgängen festgelegt ist und bezüglich seiner Bauweise festgelegt ist (falls es aus einfacheren Modulen besteht) oder bezüglich seines Types festgelegt ist (falls es sich um ein elementares Modul handelt), wobei die Verbindungen zwischen den Modulen definiert sind. Fig. 3 ist ein Diagramm, das allgemein die Hierarchie der Module der obigen Schaltung beschreibt. (Das Modul bus'(data) sollte im Moment außer Acht gelassen werden).
  • Das Flankengeneratormodul selbst ist als eine Reihe von Aussagen definiert. Die erste erklärt sich selbst, wobei sie das Modul selbst benennt:
  • module (eqen)
  • Als nächstes werden die Tore definiert: port(egen,eram,input,array[1_2**N] of integer (M)) port(egen,select,input,bit) port(egen,addr,input,integer) port(egen,edgeout,output,integer)
  • Die letzten drei dieser Aussagen sind weitgehend selbst-erläuternd; es gibt Tore des Modules egen, wobei die zweite Variable in jeder Aussage der Name des Signales an dem Tor ist, wobei es vom Fall abhängig Eingänge oder Ausgänge haben kann und wobei die Signale an den Eingängen bzw. Ausgängen Bits oder ganze Zahlen sein können, je nach Lage des Falles. Die letzte Variable in der ersten Aussage ist eine formale Art der Angabe, daß das Eingangssignal eine Liste oder ein Feld von zwei 2N Elementen ist, von denen ein jedes eine ganze Zahl ist.
  • Als nächstes werden die Komponenten oder Teile des Modules definiert. Das vorliegende Modul hat sechs Teile, die beiden Zähler, das ODER-Gatter, die Adress- und Daten-Busse und das RAM. Typische Teilaussagen lauten: part(egen,odd_counter,counter) part(egen,even_counter,counter) part(egen,data_bus,bus (M)) part(egen,tsram,ram (M,N))
  • Diese Aussagen sind weitgehend selbst-erläuternd. Die dritte Variable definiert den Typ des Teiles: ein Zähler, ein M-Bit-Bus oder ein M x N - RAM. Es sei angemerkt, daß das Modul mit zwei Zählern even_counter und odd_counter festgelegt ist, die beide vom gleichen Typ sind; die dritte Variable in den beiden Aussagen ist in beiden Fällen gleich. Daher würde in der Praxis eine Bibliothek von Teile-Typen üblicherweise existieren und allmählich erweitert werden, wobei die formale Spezifikation der speziellen Module nach und nach im wesentlichen eine Sache des Heraussuchens der Teile-Typen und des Festlegens der Module als Kombinationen von bekannten Teile-Typen miteinander mit ihren Verbindungen wird.
  • Als nächstes werden die Verbindungen zwischen den verschiedenen Geräten des Modules festgelegt. Die Aussagen sind weitgehend selbst-erläuternd, wobei typische Aussagen folgendermaßen lauten: connected(egen,select,enable(odd_counter)) connected(egen,out(odd_counter),in1(edgeor1))
  • Dieses vervollständigt die Beschreibung der Anordnung als solches, d.h. das Modul egen. Jedoch müssen die Komponententeile festgelegt werden. Falls ein Komponententeil selbst in Termen von weiteren Modulen festgelegt ist, wird es in der genau gleichen Art wie die gesamte Anordnung definiert. Falls es sich jedoch um ein elementares Modul handelt, hat dessen Definition Tor-Aussagen, jedoch keine Teile oder Verbindungs-Aussagen; anstelle dessen hat es eine Ausgangsgleichungsaussage. Beispielsweise wird ein Bus durch folgende Aussagen festgelegt: module (bus (M)) port(bus(M),in,input,integer (M)) port(bus(M),out,output,integer (M)) OutputEqn(bus,out) = in
  • Ein ODER-Gatter wird folgendermaßen festgelegt: module(edgeor) port(edgeor,in1,input,integer) port(edgeor,in2,input,integer) port(edgeor,out,output,integer) OutputEqn(edgeor,out) = if (in1 = 0) then in2 else if (in2 = 0) then in1.
  • Für Merkmale des Modules, die mit zeitlichen Betrachtungen einher gehen - d.h. solche, welche nicht einfache reine kombinatorische Logikschaltungen sind - müssen zeitliche Aspekte in Betracht gezogen werden. Dieses ermöglicht eine Auswahl bezüglich des Niveaus der einbezogenen Details. Bei dem vorliegenden Modul gibt es beispielsweise "Zyklen", die durch den Schleifenpulsgenerator pgen festgelegt werden, wobei die "Taktschläge" des Taktes die Zähler in den Pulsgeneratoren versorgen; unterschiedliche Zyklen sind verschieden und (allgemein) eine ziemlich große Anzahl von Taktschlägen lang. Es ist erwünschenswert, das Niveau der Detailliertheit in geeigneter Weise zu wählen, wie beispielsweise die Größe der "elementaren Zeitdauer", welche für die formale Beschreibung verwendet wird. Falls diese Größe zu groß gewählt wird, kann es unmöglich werden, Testprogramme des Signales zu erhalten; falls sie zu klein gewählt wird, kann die Aufgabe der Bestimmung eines Testprogrammes in unnötiger Weise verkompliziert werden.
  • Obwohl bei dem vorliegenden Modul Ereignisse innerhalb eines Zyklus auftreten, wie beispielsweise Zähler, die ihre voreingestellten Zählwerte erreichen, ist es in dem vorliegenden Fall klar, daß das Verhalten der bei derartigen Ereignissen eingebundenen Komponenten in geeigneter Weise festgelegt werden kann, indem deren Zustände an dem Ende eines jeden Zyklus festgelegt werden. Ebenfalls beobachtet der Mikroprozessor lediglich den Zustand des Systemes an dem Ende eines jeden Zyklus - er kann nicht Ereignisse beachten, die innerhalb eines Zyklus stattfinden. Es ist daher geeignet, den "Zyklus" als elementare Periode zu wählen.
  • Für das Flip-Flop peff wird daher die Ausgangsgleichung durch innere Zustandsaussagen zusammen mit Zustandsgleichungen aufgestellt, welche den Zustand des Flip-Flop an dem Ende eines jeden Zyklus in Termen der Ereignisse festlegen, die während des momentanen Zyklus aufgetreten sind, sowie in Abhängigkeit von dessen Zustand am Ende des vorhergehenden Zyklus. Die Zustände und Gleichungen lauten folgendermaßen: OutputEqn(peff,out) = edgeseen state(peff,pendingedge,bit,false) state(peff,edgeseen,bit,false) StateEqn(peff,pendingedge) = if edge > period then 1 else pendingedge.old StateEqn(peff,edgeseen) = if pendingedge then 1 else if period > edge > 0 then 1 else edgeseen.old
  • Es ist daher offenkundig, daß jegliche Anordnung formal mittels prolog-ähnlicher Aussagen definiert werden kann. Die Anordnung selbst und Komponentenmodule, welche nicht elementar sind, werden in Termen ihrer Eingänge, Ausgänge, Komponentenmodule und Verbindungen definiert, wobei jedes elementare Modul in Termen seiner Eingänge, Ausgänge, Verbindungen, Ausgangsgleichungen und - falls dies nötig ist -seiner Zustandsgleichungen definiert wird.
  • Festlegung des Fehlers
  • Wie oben bereits erwähnt wurde, ist es erforderlich, vorab die Natur des zu erfassenden Fehlers zu definieren. Für die vorliegenden Zwecke sei angenommen, daß der zu erfassende Fehler das fehlerhafte Hängenbleiben bei der logischen 1 auf einer der Busleitungen ist. Das gewünschte Verhalten einer Busleitung ist folgendermaßen: bus(Name,Value) == Value
  • wobei das Verhalten eines Busses bus' mit einem Fehler folgendermaßen lautet: bus'(Name,Value) == if(Name = data & bit(Value,n) = 0) then Value + 2**n else Value
  • Es wird die Konvention verwendet, daß die fehlerhafte Version eines Gerätes durch einen Apostroph bezeichnet wird. Wiederum bezugnehmend auf Fig. 3 ist gleichfalls die Hierarchie für das fehlerhafte Modul dargestellt, welche das Modul bus'(data) (verbunden durch gestrichelte Linien) anstelle des fehlerfreien Modules bus(data) umfaßt.
  • Es sei angemerkt, daß dieser Fehler in einer parametrischen Art festgelegt ist. Mit anderen Worten legt die Beschreibung dieses Fehlers 16 getrennte mögliche Fehler fest, welche 16 möglichen Zuständen, bei denen ein Hängenbleiben bei der logischen 1 erfolgt, auf den 16 Leitungen des Bus entsprechen. Es ist ausgesprochen vorteilhaft, die Fehler in dieser Art zu beschreiben, da es hierdurch ermöglicht wird, daß ein einziges Programm von Festeingangssignalen für das gesamte Bündel der Fehler ermittelt wird, oder zumindest ein Satz der Programme mit einer gemeinsamen parametrischen Festlegung.
  • Gerät zum Erzeugen von Testzuständen
  • Wenn man von der Annahme ausgeht, daß eine formale Beschreibung der Anordnung und der herauszufindenden Fehler gegeben ist, so muß ein Programm - eine Testkombination oder eine Sequenz von Kombinationen - der Eingangssignale von diesen Beschreibungen ermittelt werden, welche den Fehler erfassen - d.h. welche unterschiedliche Kombinationen der Ausgangssignale in Abhängigkeit davon ergeben, ob oder ob nicht der Fehler vorliegt. Genauergesagt gibt es zwei Versionen der Anordnung - die fehlerfreie und eine fehlerbehaftete - wobei ein Testprogramm entdeckt werden muß, welches unterschiedliche Ausgangskombinationen ergibt, wenn zwei Versionen der Anordnung angelegt werden. Dies wird erreicht, indem mit zwei Sätzen von Aussagen begonnen wird, welche die beiden Versionen der Anordnung festlegen, wobei eine Serie von Entfaltungs- und Vereinfachungs-Schritten hieran angelegt wird und die Unterscheidungs- oder Unterscheidbarkeits-Zustände (DCs) herausgezogen werden. Aufgrund dieser kann ein Testprogramm erhalten werden.
  • Bei diesem Verfahren werden zwei Versionen der Anordnung in der gleichen Art behandelt, um den Isomorphismus zwischen deren Strukturen zu bewahren und auszunutzen. Während der anfänglichen Stufe dieses Verfahrens erscheinen die beiden Versionen der Anordnung identisch, so daß es erst bei Auftreten der Differenz zwischen den beiden Versionen erforderlich wird, daß diese beiden Versionen unterschiedlich behandelt werden müssen.
  • Fig. 4 ist ein vereinfachtes Blockdiagramm einer Vorrichtung zum Ausführen dieses Prozesses. Eine Steuereinheit 10 steuert die Sequenz der Operation des Ruhezustands der Einheiten des Gerätes.
  • Eine Speichereinheit 11 umfaßt zwei Speicher 12 und 13, welche die formalen, hierarchischen Beschreibungen der fehlerfreien Anordnung und der fehlerhaften Anordnung jeweils enthalten. Diese Speicher sind jeweils mit einem Speicher 14 verbunden, welcher eine Bibliothek von formalen Beschreibungen der Standardmodule enthält - d.h. der Module, welche wahrscheinlich einen Teil der Anordnung bilden, für die ein Satz von Testzuständen zu ermitteln ist. Daher können die Module, die in den beiden Anordnungen gleich sind, in den Beschreibungen der Speicher 12 und 13 identifizieren, wobei jedoch Details der Beschreibungen in dem Speicher 14 gespeichert werden können. Auf diese Details kann durch die Speicher 12 und 13 zugegriffen werden, falls dies erforderlich ist. Falls zwei oder mehr identische Module in einer Anordnung enthalten sind, wird die Beschreibung der Anordnung derartige Module identifizieren, während die Details der Beschreibung in dem Speicher 14 gespeichert werden können und durch die Speicher 12 oder 13 jedesmal dann durch Zugriff erfaßt werden können, wenn diese für irgendeines der identischen Module benötigt werden. (Offenkundig können Module in ähnlicher Weise aus Unter-Modulen zusammengesetzt werden).
  • Man wird erkennen, daß es grundsätzlich möglich ist, daß jeder Speicher 12 und 13 eine komplette Beschreibung seiner Anordnung enthält. Dieses würde jedoch eine erhebliche Verdoppelung der Information mit sich bringen.
  • Während andererseits einer der Speicher 12 und 13 eine vollständige Beschreibung seiner Anordnung (z.B. der fehlerfreien Anordnung) enthalten muß, muß der andere Speicher lediglich eine Beschreibung der Unterschiede zwischen den beiden Anordnungen enthalten; d.h. denjenigen Teil seiner Anordnung, welche den Fehler in einer Form enthält, in der der entsprechende fehlerfreie Teil in dem Speicher 12 identifiziert werden kann. Die Beschreibung des Restes der fehlerhaften Anordnung kann dann von dem Speicher 12 kopiert werden, falls dies erforderlich ist.
  • Es gibt zwei Darstellungsregister 15 und 16 zum Speichern der formalen Beschreibungen der fehlerfreien und der fehlerhaften Anordnung. Diese formalen Darstellungen werden anfänglich von den beiden Speichern 12 und 13 erhalten und verschiedenen Manipulationen unterworfen. Die beiden Register sind durch einen Bus 20 an drei Verarbeitungseinheiten gekoppelt: einen Entfaltungsprozessor 17, einen Vereinfachungs-Prozessor 18 und einen Unterscheidungs- (oder Unterscheidbarkeits-) -Zustands (DC-Extraktionsprozessor 19. (Dieser Prozessor und andere Einheiten des Systemes können selbstverständlich Module eines geeigneten Programmes oder im Falle von Speichereinheiten Speicherbereiche, die durch ein derartiges Programm festgelegt werden, sein). Diese Prozessoren arbeiten im breitesten Sinne in einer Reihenfolge.
  • Jeder dieser Prozessoren kann bestimmte Manipulationen der Ausdrücke in den Registern 15 und 16 ausführen. Der Entfaltungs-Prozessor 17 kann Aufrufe an die Speichereinheit 11 schicken, um das anfängliche Laden dieser Register zu steuern und um die Ausdrücke in diesen Registern zu entfalten. Wenn der Unterscheidungszustand-Extraktionsprozessor 19 Unterscheidungszustände erfaßt, kann er diese von den Ausdrükken in diesen Registern beseitigen. Wenn die Ausdrücke in den Registern 15 und 16 auf nichts reduziert worden sind, bildet die Liste der unterscheidbaren Zustände in dem Speicher 21 den benötigten Satz von Testzuständen, welche eine Unterscheidung der fehlerhaften Anordnung von der fehlerfreien Anordnung ermöglichen.
  • Wenn der Unterscheidungszustands-Extraktionsprozessor 19 einen Unterscheidungszustand erfaßt, so leitet er diesen zu einem Unterscheidungszustands-Konsistenzüberprüfungsprozessor 22, welcher den Unterscheidungszustand von dem Prozessor 19 mit den bereits in dem Unterscheidungszustandsspeicher 21 gespeicherten Unterscheidungszuständen vergleicht, um zu bestimmen, ob die neuen Unterscheidungszustände logisch mit den gespeicherten Unterscheidungszuständen konsistent sind. Falls diese Zustände logisch konsistent sind, werden sie in dem Unterscheidungszustandsspeicher 21 gespeichert. Falls der Zustand jedoch inkonsistent ist, wird er als Unterscheidungszustand zurückgewiesen und verbleibt bei den Ausdrücken in den Registern 15 und 16, wobei das System weiterhin nach weiteren Unterscheidungszuständen und Vereinfachungen sucht. Die durch die Prozessoren 18, 19 und 22 verwendeten logischen Regeln sind in einem Speicher 23 für logische Regeln gespeichert, welcher mit sämtlichen Prozessoren gekoppelt ist. (Tatsächlich verwenden speziell die Prozessoren 18 und 22 die gleichen Regeln zu einem erheblichen Ausmaß). Wenn der Unterscheidungszustand von dem Prozessor 22 akzeptiert oder zurückgewiesen worden ist, geht die Steuerung zurück zu dem Prozessor 17 für die nächste Stufe der Entfaltung.
  • Man wird erkennen, daß es möglich ist, eine Wechselwirkung mit der Bedienungsperson zuzulassen, indem die Inhalte der beiden Register 15 und 16 angezeigt werden und indem es der Bedienungsperson ermöglicht wird, den Betrieb der Prozessoren 17 bis 19 zu leiten. Diese Option ist insbesondere bezüglich des Betriebes des Vereinfachungsprozessors 18 aus verschiedenen Gründen zweckmäßig.
  • Einer der Gründe besteht darin, daß Operationen der allgemeinen Klasse, mit denen sich die Erfindung befaßt, dazu neigen, an einer Erscheinung zu leiden, die als exponentielle Explosion bezeichnet wird; dies bedeutet, daß die Anzahl der möglichen Wege exponentiell ansteigt und daher dazu neigt, unsteuerbar zu werden. Bei der vorliegenden Erfindung besteht die größte Gefahr des exponentiellen Anstiegs in der Vereinfachungsstufe, wobei die Führung durch die Bedienungsperson dazu beitragen kann, einen derartigen Anstieg bzw. Anwuchs zu begrenzen.
  • Der zweite Grund betrifft die Natur der Vereinfachung. Wie man erkennt, kann die Vereinfachung eine logische Manipulation, eine arithmetische Manipulation und die Verwendung spezieller Eigenschaften der Anordnung (wie beispielsweise der Tatsache, daß die beiden verschiedenen Unter-Module nicht gleichzeitig aktiv sein können) mit sich bringen. Es ist eine weitgehend geradlinige Angelegenheit, die Regeln für die logische Manipulation in dem Prozessor 18 einzubauen. Jedoch sind die Regeln für die arithmetische Manipulation schwieriger in Wirkung zu setzen, da die Arithmetik ein komplizierteres formales System ist als die Logik. (Tatsächlich hat ein hinreichend einfaches formales logisches System eine vollständige Überprüfbarkeit, während die Arithmetik aufgrund des Theorems von Gödel nicht vollständig prüfbar ist). Es kann daher wünschenswert sein, daß die Bedienungsperson arithmetische Äquivalenzen erkennt, die nicht in einfacher Weise in den Prozessor eingebaut werden können. (Es wäre beispielsweise schwierig, die arithmetischen Regeln in das System einzubringen, welche dazu in der Lage wären, mit polynomen oder zyklischen Redundanzüberprüfungsfunktionen fertig zu werden). In ähnlicher Weise kann es für die Bedienungsperson einfacher sein, spezielle Eigenschaften der Anordnung zu erkennen, als daß diese in einer erweiterten formalen Systembeschreibung vorab festzulegen oder als das System selbst diese als Konsequenzen der formalen Systembeschreibung entdeckt.
  • Die Vereinfachung besteht, wie man nachfolgend erkennen wird, im wesentlichen aus der Handhabung logischer Ausdrükke. Dies kann von innen nach außen erfolgen, wobei man innerhalb der innersten Klammer eines Ausdruckes beginnt und jegliche mögliche Manipulation bei diesem Niveau zuerst ausführt, worauf dann allmählich ein Abarbeiten durch die Klammern bis zu dem äußersten Ausdruck erfolgt; von außen nach innen, beginnend mit klammerfreien Ausdrücken, und allmählich herabarbeitend innerhalb einer jeglichen Klammerhierarchie; oder durch eine Kombination dieser beiden Techniken.
  • Betrieb des Systemes
  • Die Art, in der das System arbeitet, um die Unterscheidungszustände für die Schaltung gemäß den Fig. 1 bis 3 zu erhalten, ist folgendermaßen:
  • Entfalten
  • Das Entfalten wird durch einen Entfaltungsprozessor 17 ausgeführt, welcher die formalen Beschreibungen bearbeitet, die in den Registern 15 und 16 gespeichert werden. Zu diesem Zweck wählt der Prozessor 17 ein Element innerhalb des Inhaltes der formalen Beschreibungen aus und veranlaßt, daß dieses durch die Definition des Elementes in Termen einfacher Elemente ersetzt wird. Der Prozessor arbeitet vorzugsweise im breitesten Sinne in einer von oben nach unten gerichteten Art, wobei die unterschiedlichen Zweige mehr oder weniger in einem Schritt miteinander entfaltet werden. Daher wird bei dem Entfalten des in Fig. 3 gezeigten Baumes bei Auswahl des even_counter für die Entfaltung nach der Entfaltung des edgeor das System anschließend den odd_counter zum Entfalten auswählen und nicht versuchen, den data_bus zu enthalten. Tatsächlich ist es offenkundig, daß data_bus nicht entfaltet werden kann, bis beide Zähler entfaltet worden sind). Gleichfalls entfaltet der Prozessor die beiden Ausdrücke (jeweils für die fehlerfreie Anordnung und für die fehlerbehaftete Anordnung) innerhalb eines Schrittes miteinander, soweit dies möglich ist. Der Flankengenerator (edge generator) ist folgendermaßen festgelegt: egen(Name,Eram,Select,Addr) == edgeor(edgeor1, counter(even_counter, Select, bus(data_bus,ram(tsram,Eram,bus(address_bus,Addr)))), counter(odd_counter, Select, bus(date_bus,ram(tsram,Eram,bus(address_bus,Addr)))).
  • Um das Entfalten zu beginnen, wird die Anforderung bezüglich edgeor geöffnet, wobei diese Funktion folgendermaßen definiert ist: edgeor(Name,E1,E2) == if (E1 = 0) then E2 else (if (2 = 0) then E1).
  • hierbei gilt: E1 = counter(even_counter,Select,bus (_)) E2 = counter(odd_counter,Select,bus(_)).
  • (Die bus-Definition wird aus Gründen der Einfachheit mit _ abgekürzt). Der Entfaltungsprozessor 17 entfernt den Term edgeor aus dem Register 13 und bewirkt, daß dieser durch den soeben gegebenen Ausdrucke ersetzt wird. Daher lautet das Entfalten, welches sich aus diesem Aufruf ergibt, folgendermaßen: egen(Name,Eram,Select,Addr) == if (counter(even_counter,select,bus(_) = 0) then counter(odd_counter,Select,bus(_)) else if (counter(odd_counter,Select,bus(_) = 0) then counter(even_counter,Select,bus(_)).
  • Der Aufruf an den Zähler (counter) wird nun in diesem letzten Ausdruck entfaltet, wobei dies auf die gleiche Art geschieht. Die Funktion counter ist folgendermaßen definiert: counter(Name,Select,Arg) == if (Name = select) & (Arg =/= e_off_c)) then Arg else 0.
  • Das Entfalten ergibt: egen(Name,Eram,Select,Addr) == if ((if (even_counter = select) & bus(_)=/=e_off_c then bus (_) else 0) = 0) then (if (odd_counter = Select) & bus(_)=/=e_off_c)) then bus (_) else 0) else if((if (odd_counter = select) & bus(_)=/=e_off_c then bus (_) else 0) = 0) then (if ((even_counter = Select) & bus(_)=/=e_off_c)) then bus(_) else 0) -
  • Vereinfachung
  • Nach jedem Entfalten versucht der Vereinfachungsprozessor 18, Vereinfachungen durchzuführen, und der Unterscheidungsbedingungs-Extraktionsprozessor 19 versucht, Unterscheidungsbedingungen zu extrahieren. Bei diesem speziellen Ausführungsbeispiel war bislang keine Vereinfachung oder keine Extraktion von Unterscheidungsbedingungen möglich. An dem vorliegenden sind Punkt jedoch verschiedene Stufen von Vereinfachungen möglich. Diese werden durch den Vereinfachungsprozessor 18 durchgeführt, welcher einen Satz von Regeln enthält, zusammen mit einer Einrichtung zum Erkennen des Auftretens ihrer linken Seiten in den Ausdrücken in den Registern 15 und 16 und zum Anwenden der Vereinfachungen durch Ersetzen der relevanten Elemente dieser Ausdrücke durch ihre rechtsseitigen Äquivalente. Diese Regeln bestehen aus standardmäßigen logischen Vereinfachungsregeln, standardmäßigen arithmetischen Vereinfachungsregeln und Regeln, die eine gewisse Eigenschaft der Anordnung ausdrücken.
  • Es gibt einige logische Vereinfachungsregeln, die auf die obigen Ausdrücke folgendermaßen angewendet werden können: (if c then x else Y) = q --> if c then (x=q) else (y=q). if (if c then x else y ) then a else b) --> if (c&x)or(not(c)&Y)then a else b. x = x --> true. x & true --> x. not(a & b) --> not(a) or not (b). if(c1 or c2) then x1 else(if (c2 or c4) then x3 else x4 --> if(c1 or c2) then x1 else (if (false or c4) then x3 else x4). if(c1 and c2) then x1 else (if (c2 or c4) then x3 else x4) --> if (c2 and c2) then x1 else (if (true or c4) then x3 else x4). if true then x else y --> x. if false then x else y --> y. if c then x else x --> x. p or (not(p) & q) --> p or q. if c1 then (if c2 then x1 else x2) else x3) --> if (c1 and c2) then x1 else (if not c1 then x3 else x2). if c2 then x else (if x2 then x 4 else y) --> if (c2 or c2) then x else y. if p = q then p else q --> q.
  • Bezüglich derjenigen Regeln, die gewisse Eigenschaften der Anordnung ausdrücken, besteht eine Eigenschaft der Anordnung bei dem vorliegenden Ausführungsbeispiel in Folgendem: not(Select = even_counter) < --> (Select = odd_counter).
  • Durch Anwendung sämtlicher dieser Regeln in der geeigneten Reihenfolge auf den Ausdruck für egen vereinfacht sich dieser Ausdruck auf Folgendes: egen(Eram,Select,Addr) == if (bus(data,tsram(Eram,bus(addr,Addr)))=/=e_off_c) then bus(date,tsram(Eram,bus(addr,Addr)))) else 0.
  • Entfalten
  • Bislang gab es keine signifikante Unterscheidung zwischen den beiden Versionen der Anordnung, so daß der Ausdruck für egen' der gleiche ist mit Ausnahme der Tatsache, daß bus' anstelle von bus erscheint. Der Unterscheidungsbedingungs- Extraktionsprozessor 19 ist daher nicht in der Lage, jetzt irgendwelche Unterscheidungs-Zustände zu extrahieren. Es folgt daher ein weiterer Entfaltungsschritt, um bus und bus' in den Ausdrücken für die beiden Versionen der Vorrichtung aufzurufen. Wie bereits oben erwähnt, sind diese beiden Funktionen folgendermaßen definiert: bus (Name,In) == In bus'(Name,In) == if (Name = date) & (bit(In,n) = 0 then In + 2**n else In.
  • Das Entfalten der Aufrufe bezüglich bus innerhalb egen ergibt egen(Eram,Select,Addr) == if (nthof(Eram,Addr) =/= e_of_c) then nthof(Eram,Addr) else 0.
  • für die fehlerfreie Version und egen'(Eram,Select,Addr) == if (nthof(Eram,Addr) =/= e_of_c) then if (bit(nthof(Eram,Addr),n) =0) then nthof(Eram,Addr) + 2**n else nthof(Eram,Addr) else 0.
  • Extraktion von unterscheidbaren Bedingungen
  • Nach der Ausführung der Entfaltungs- und Vereinfachungs- Regeln können nunmehr einige unterscheidbare Zustände bzw. unterscheidbare Bedingungen identifiziert werden. Dies erfolgt durch den Unterscheidungsbedingungs-Extraktionsprozessor 19. Verschiedene Unterscheidungsregeln sind in diesem Prozessor gespeichert, welcher diese verwendet, um systematisch zwischen den beiden Funktionen in einer geeigneten, passenden Form zu unterscheiden.
  • Man verwende die Schreibweise F1 =?= F2, um anzuzeigen, daß zwei Funktionen F1 und F2 untescheidbar sind. Die beiden Unterscheidungsregeln, die auf diese Unterscheidungsfunktionen anwendbar sind, lauten: if (F1 == (if C then X else Y)) and (F2 == (if C then X' else Y) then (F1 =?= F2 iff (C and X =?= X')). X =?= (if C then X' else X) iff (C and X =?= X').
  • indem man Folgendes nimmt: C als (nthof(Eram),Addr) =/= e_of_c)), X als (nthof(Eram,Addr), und X'als (if (bit(_) then nthof (_) else nthof (_))),
  • können wir die erste Unterscheidungsregel auf die Ausdrücke für egen und egen' anwenden und erhalten: egen =?= egen' iff (nthof(Eram,Addr)) =/= e_of_c) and (nthof(Eram,Addr) =/= if (bit(nthof(Eram,Addr),n) = 0) then nthof(Eram,Addr) + 2**n else nthof(Eram,Addr).
  • Daher haben wir nun eine unterscheidbare Bedingung erhalten: nthof(Eram,Addr) =/= e_of_c,
  • wobei wir ferner ein neues Unterscheidungsziel erhalten haben. Die Anwendung der zweiten Unterscheidungsregel ergibt dann: bit(nthof(Eram,Addr),n) = 0 und nthof(Eram,Addr) =?= nthof(Eram,Addr) + 2**n
  • Daher wird der zweite Unterscheidungszustand bit(nthof(Eram,Addr),n) = 0,
  • erhalten.
  • Durch Fortsetzen des Prozesses des Entfaltens, der Einfachung und der Extraktion von Unterscheidungsbedingungen wird eine Folge von Unterscheidungsbedingungen erhalten, die es ermöglichen, ein Testprogramm für die Schaltung zu entwerfen.
  • Die einfachste Art der Steuerung der Sequenz des Betriebes der Prozessoren 17, 18, 19 und 20 besteht darin, daß diese in einer strikten Reihenfolge arbeiten. Jedoch ist diese Strategie unflexibel, obgleich sie einige Vorteile bezüglich des Wirkungsgrades haben kann. Die Steuereinheit 10 steuert daher vorzugsweise diese Ablaufsteuerung der Prozessoren 17, 18, 19 und 22 mittels Regeln, welche in diese eingebaut sind, welche die Bedingungen festlegen, unter denen ein jeder die Steuerung erhält. Diese Anordnung vereinfacht das Schreiben von speziellen Strategien zum Umgang mit Schaltungen, die einer speziellen Entwurfstechnik folgen (z.B. teilweise Abtastung oder Grenzabtastung) und für welche ein entsprechendes spezielles Testverfahren besonders geeignet ist.
  • Testbedingung für die beschriebene Schaltung
  • Im Falle der betrachteten Schaltung (d.h. der Schaltung nach den Fig. 1 und 2) ist es offenkundig, daß es für ein Testen des Fehlers des Festhängens bei einer logischen Eins für eine der Leitungen des Datenbusses erforderlich ist, eine Testsituation zu schaffen, in der dieser Fehler einen Unterschied für das Verhalten der Schaltung ausmacht. Das einzige Merkmal des Modules, welches von außen beobachtbar ist, ist der Zustand des Puls-Flanken-Flip-Flop peff am Ende des Zyklus, welcher durch den Schleifenpulsgenerator pgen festgelegt wird. Daher muß die Testsituation derart sein, daß für das fehlerfreie System der Zustand dieses Flip-Flop zu diesem Zeitpunkt sich von dem Zustand des fehlerhaften Systemes unterscheidet. Die Signaleinstellung dieses Flip-Flop kommt von dem Flankengenerator egen, wobei dessen Zeitverhalten zum Erhalten einer Unterscheidung zwischen dem Zeitpunkt vor und nach dem Puls von dem Schleifenpulsgenerator durch den Fehler verschoben werden muß. Dieses Zeitverhalten wird durch das Signal auf den Datenbus und den Fehler (falls einer vorliegt) auf diesem Bus bestimmt. Daher muß für die Erfassung des Fehlers die gespeicherte Verzögerung in dem Test-RAM derart sein, daß die Änderung von einem Null-Bit auf der fehlerhaften Leitung in eine Eins (wobei der Fehler das Festhängen bei der logischen Eins ist) die Verzögerung von unterhalb der Verzögerung des Schleifenpulsgenerators nach oberhalb verschieben muß.
  • Das vorliegende System erreicht dies in erfolgreicher Weise; dies bedeutet, daß es erfolgreich einen Satz von Unterscheidungszuständen erzeugt, welche diese Anforderung verkörpern.
  • Umgedrehte Schaltungserweiterung
  • Das oben beschriebene Verfahren kann als oben-nach-unten-Ansatz der Schaltungsentwicklung bezeichnet werden (d.h. bezüglich der Erweiterung der formalen Beschreibungen der fehlerfreien und fehlerhaften Module). Dieses kann in informeller Weise als Beginn mit einer Spitzenniveau-Definition des Systemes mit und ohne Fehler in den Registern 15 und 16 und Entfalten dieser Definitionen in der Weise, daß sichergestellt wird, wie bei diesem hohen Niveau unterschieden wird, bevor man sich nach unten bewegt, beschrieben werden. Ein abweichender Ansatz, der als unten/nach-oben-Ansatz bezeichnet werden kann, kann anstelle dessen verwendet werden. Dies geht damit einher, daß man mit der Definition eines speziellen Modules mit und ohne den Fehler (d.h. eine Definition von niedrigem Pegel) in den Registern 15 und 16 beginnt und daß man diese Definitionen entfaltet, um sicherzustellen, wie man eine Unterscheidung bei diesem niedrigen Niveau trifft. Das Verfahren geht dann mit dem Aufwärtsgehen zu den Ausdrücken, die einen größeren Teil des Gesamtsystemes beschreiben, einschließlich des anfänglich gewählten Modules, und mit dem Entfalten dieses Ausdruckes einher.
  • Der umgekehrte Ansatz erleichtert die Verwendung einer flexiblen und oppertunistischen Steuerstrategie, die sich auf den Teil des Suchbaumes konzentrieren kann, welcher eine höhere Wahrscheinlichkeit des Auffindens eines konsistenten Satzes von Unterscheidungsbedingungen hat, wodurch die Wahrscheinlichkeit vermindert wird, daß man in Sackgassen gerät. Die Vorsehung einer expliziten Steuerung liefert gleichfalls einen Weg, um in jegliche Testbarkeitsstrategie einzutreten, die der Schaltungskonstrukteur im Sinne haben kann (unabhängig davon, ob man einem formalen oder informalen Design für ein Testverfahren folgt).
  • Im Falle der einfachen oben-nach-unten Strategie ist das Laden der Register 15 und 16 tribial. Definitionen von hohem Niveau für die fehlerfreie und fehlerbehaftete Anordnung werden in die Register 15 und 16 kopiert, bevor die Entfaltungs-, Vereinfachungs- und Unterscheidungs-Schleife begonnen wird. Der Entfaltungsprozessor wurde derart beschrieben, daß er dieses steuert. Jedoch ist es bei dem ungekehrten Ansatz mit der allgemeineren Folgesteuerungsstrategie wünschenswert, einen zusätzlichen Prozessor, nämlich den Ladeprozessor 24, vorzusehen. Dessen Aufgabe ist es im weitesten Sinne, das Niveau auszusuchen, bei dem die Unterscheidung durchgeführt wird. Dieser Prozessor lädt die Arbeitsregister 15 und 16 unter Verwendung der Information von der Speichereinheit 10. Tatsächlich entscheidet er bei jeder Stufe, wie man sich entlang des Baumes (von dem Ausführungsbeispiele in Fig. 3 gezeigt sind), welche die zu testenden Schaltungen darstellt, nach oben bewegt. (Offenkundig würde die Steuerleitung von dem Entfaltungsprozessor 17 zu der Steuereinheit 10 entfernt werden).
  • Rekursive Geräte
  • In der Schaltung gemäß den Fig. 1 und 2 ist die Länge der Testprogramme (d.h. die Anzahl der aufeinanderfolgenden Kombinationen von benötigten Testsignalen) unabhängig von dem Fehlerparameter. Jedoch ist dies nicht immer der Fall, wobei ein einfaches Ausführungsbeispiel die Schaltung gemäß Fig. 5 ist, welche als fred (erstes rekursives elektronisches Gerät) bezeichnet wird. Diese Schaltung umfaßt einen Multiplexer mux und ein Zählerregister register, wobei diese Schaltung jede Leitung der Reihe nach des Eingangsdatenbusses Data auswählt. Um einen Test bezüglich des Fehlers des Hängenbleibens bei einer logischen Null für die nte Leitung des Datenbusses auszuführen, ist eine Testsequenz von wenigstens n Bits erforderlich. Es hat sich herausgestellt, daß für einen derartigen Fehler die Unterscheidungsbedingungen am besten durch eine rekursive Gleichung ausgedrückt werden können: Unterscheidungsbedingungen == bit(Data,n) = 0 und P(n,Clock,0)
  • wobei das Prädikat P rekursiv folgendermaßen festgelegt ist P(n,Clock,Register) == (n = Register and not(Clock=0)) or P(n,rest(Clock),s(Register)).
  • Für die gegebenen Größen n und data sind die gewünschten Testbedingungen in Clock und Register bei diesen Gleichungen. Die Größe Register ist eine geradlinige Sache; sie ist der Zählwert in dem Register. Die Größe Clock ist eine solche Größe, die im wesentlichen eine zeitliche Sequenz von Signalen ist; sie kann als Liste [s&sub1;, s&sub2;, s&sub3;, ...] betrachtet werden, in der die Terme die aufeinanderfolgenden Werte des Signalbits sind; rest(Clock) ist der Schwanz dieser Liste (d.h. die Liste bei fortgelassenem führenden Term). Daher bestimmt die rekursive Form des Prädikats P tatsächlich die Wirkung der Bits des Bitstromes Clock bitweise. (Man erkennt, daß der Ausdruck Clock so verstanden werden muß, daß er einen willkürlichen Strom von Nullen und Einsen und und nicht einen ständigen Strom von Einsen darstellt).
  • Die Darstellung der rekursiven Module in dieser Art ermöglicht es, daß das System mit derartigen Modulen sowie mit nicht-rekursiven Modulen fertig wird.

Claims (10)

1. Vorrichtung für die Unterstützung bei der Erzeugung eines Testprogrammes zum Testen einer digitalen Schaltungsanordnung bezüglich eines vorbestimmten Fehlers, gekennzeichnet durch:
eine Einrichtung (12 bis 14) zum Speichern formaler hierarchischer Beschreibungen, die ausreichend sind, um die Anordnung ohne den Fehler und mit dem Fehler zu definieren;
eine Registereinrichtung (15, 16), zum Speichern einer Darstellung von wenigstens einem Teil der Anordnung, abgeleitet von deren formaler Beschreibung, für jede Anordnung (d.h. die Anordnung ohne den Fehler und die Anordnung mit dem Fehler);
drei Prozessoreinrichtungen (17, 18, 10) zum Bearbeiten der Inhalte der Registereinrichtung (15, 16), wobei die drei Prozessoreinrichtungen (17, 18, 19) umfassen:
eine Entfaltungsprozessoreinrichtung (17) zum hierarchischen Erweitern der Inhalte der Registereinrichtung;
eine Vereinfachungsprozessoreinrichtung (18) zum Anlegen von Vereinfachungsregeln an die Inhalte der Registereinrichtung; und
eine Unterscheidungsbedingungs-Extraktionsprozessoreinrichtung (19) zum Extrahieren von Unterscheidungsbedingungen von den Inhalten der Registereinrichtung.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Einrichtung (12 bis 14) zum Speichern der formalen hierarchischen Beschreibungen eine primäre Speichereinrichtung (12, 13) zum Speichern der jeweiligen Beschreibungen bezüglich der beiden Anordnungen und eine mit dieser verbundene Untermodulspeichereinrichtung (14) zum Speichern von Beschreibungen von Untermodulen, die sich in den Anordnungen wiederholen können und/oder den Anordnungen gemeinsam sein können, umfaßt.
3. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die primäre Einrichtung eine erste Speichereinrichtung (12) zum Speichern einer vollständigen Beschreibung von einer der Anordnungen und eine zweite Speichereinrichtung (13) zum Speichern einer Beschreibung derjenigen Art, in der sich die fehlerhafte Anordnung von der fehlerfreien Anordnung unterscheidet, umfaßt.
4. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Unterscheidungsbedingungs-Extraktionsprozessoreinrichtung (19) an eine Unterscheidungsbedingungs- Speichereinrichtung (21) zum Akkumulieren aufeinanderfolgender Unterscheidungsbedingungen, die durch den Prozessor bestimmt sind, angeschlossen ist.
5. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, daß an die Unterscheidungsbedingungs-Extraktionsprozessoreinrichtung (19) und die Unterscheidungsbedingungs- Speichereinrichtung (21) eine Unterscheidungsbedingungs-Konsistenz-Prüfeinrichtung (22) angeschlossen sind, um die Konsistenz der aufeinanderfolgenden Unterscheidungsbedingungen, die durch die Erstgenannte bestimmt werden, gegen die akkumulierten Unterscheidungsbedingungen, die in der Letztgenannten gespeichert sind, zu vergleichen.
6. Vorrichtung nach einem der vorhergehenden Ansprüche, gekennzeichnet durch eine Speichereinrichtung (23) für logische Relationen, die an wenigstens zwei der drei Prozessoren (17, 18, 19) und die Unterscheidungsbedingungs-Konsistenz-Prüfeinrichtung (21) angeschlossen ist und Regeln speichert, die gemeinsam von diesen verwendet werden.
7. Vorrichtung nach Anspruch 6, dadurch gekennzeichnet, daß die in der Speichereinrichtung für logische Beziehungen gespeicherten Regeln logische Regeln, arithmetische Regeln und Regeln bezüglich spezieller Schaltungseigenschaften der beiden Anordnungen umfassen.
8. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Vereinfachungsprozessor (18) es der Bedienungsperson ermöglicht, einzugreifen, um Vereinfachungen auszuführen.
9. Vorrichtung nach einem der vorhergehenden Ansprüche, gekennzeichnet durch eine Ladeprozessoreinrichtung (24) zum Laden einer Mehrzahl von Posten in der formalen Beschreibung in der Sequenz mit der Verarbeitung der Inhalte der Registereinrichtung durch die anderen Prozessoreinrichtungen (17, 18, 19) in die Registereinrichtung (15, 16).
10. Vorrichtung nach einem der vorhergehenden Ansprüche, gekennzeichnet durch eine Steuereinrichtung (10) zum Steuern der Abfolge der Verarbeitung durch die unterschiedlichen Prozessoreinrichtungen (17, 18, 19, 24).
DE89904134T 1988-03-03 1989-03-03 GERäT ZUR RECHNERGESTÜTZEN ERZEUGUNG VON PRÜFPROGRAMMEN FÜR DIGITALE SCHALTUNGEN. Expired - Fee Related DE68910461T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB888805120A GB8805120D0 (en) 1988-03-03 1988-03-03 Testing digital circuits

Publications (2)

Publication Number Publication Date
DE68910461D1 DE68910461D1 (de) 1993-12-09
DE68910461T2 true DE68910461T2 (de) 1994-03-03

Family

ID=10632809

Family Applications (1)

Application Number Title Priority Date Filing Date
DE89904134T Expired - Fee Related DE68910461T2 (de) 1988-03-03 1989-03-03 GERäT ZUR RECHNERGESTÜTZEN ERZEUGUNG VON PRÜFPROGRAMMEN FÜR DIGITALE SCHALTUNGEN.

Country Status (6)

Country Link
US (1) US5084876A (de)
EP (1) EP0363465B1 (de)
JP (1) JP2960740B2 (de)
DE (1) DE68910461T2 (de)
GB (1) GB8805120D0 (de)
WO (1) WO1989008297A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03158779A (ja) * 1989-11-15 1991-07-08 Nec Corp Lsiのテストパタン作成方式
US5321701A (en) * 1990-12-06 1994-06-14 Teradyne, Inc. Method and apparatus for a minimal memory in-circuit digital tester
US5323108A (en) * 1992-01-23 1994-06-21 Hewlett-Packard Company Method for generating functional tests for printed circuit boards based on pattern matching of models
US20020091850A1 (en) * 1992-10-23 2002-07-11 Cybex Corporation System and method for remote monitoring and operation of personal computers
US5450349A (en) * 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
US5410548A (en) * 1992-10-28 1995-04-25 Motorola, Inc. Test pattern fault equivalence
US5475695A (en) * 1993-03-19 1995-12-12 Semiconductor Diagnosis & Test Corporation Automatic failure analysis system
US5513118A (en) * 1993-08-25 1996-04-30 Nec Usa, Inc. High level synthesis for partial scan testing
US5815713A (en) * 1995-04-13 1998-09-29 Sterling Software, Inc. Method and system for automated transformation of declarative language process specifications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228537A (en) * 1978-08-29 1980-10-14 Genrad, Inc. Method of and apparatus for automatic fault diagnosis of electrical circuits employing on-line simulation of faults in such circuits during diagnosis
ATE87755T1 (de) * 1986-06-06 1993-04-15 Siemens Ag Verfahren zur simulation eines unterbrechungsfehlers in einer logikschaltung mit feldeffekttransistoren und anordnungen zur durchfuehrung des verfahrens.
US4961156A (en) * 1987-10-27 1990-10-02 Nec Corporation Simulation capable of simultaneously simulating a logic circuit model in response to a plurality of input logic signals

Also Published As

Publication number Publication date
WO1989008297A1 (en) 1989-09-08
GB8805120D0 (en) 1988-03-30
JPH02503487A (ja) 1990-10-18
DE68910461D1 (de) 1993-12-09
US5084876A (en) 1992-01-28
EP0363465B1 (de) 1993-11-03
JP2960740B2 (ja) 1999-10-12
EP0363465A1 (de) 1990-04-18

Similar Documents

Publication Publication Date Title
DE3689228T2 (de) Verfahren zur Modellierung und zur Fehlersimulation von komplementären Metalloxidhalbleiterschaltungen.
DE3787431T2 (de) Verfahren zur Generierung einer Kandidatenliste von fehlerhaften Schaltungselementen und Verfahren zur Isolierung von Fehlern in einer logischen Schaltung unter Verwendung dieser Kandidatenliste.
DE69831732T2 (de) Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem
DE3882266T2 (de) Abfrageprüfgerät für digitale Systeme mit dynamischem Direktzugriffspeicher.
DE102006009224B4 (de) Auswahl eines Testalgorithmus in einer Steuerung für eingebauten Speicherselbsttest
DE3903835C2 (de)
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
EP0186724B1 (de) Prüf- und Diagnoseeinrichtung für Digitalrechner
DE68923086T2 (de) Verfahren zum Testen von hierarchisch organisierten integrierten Schaltungen und integrierte Schaltungen, geeignet für einen solchen Test.
DE2515297A1 (de) Pruefsystem fuer logische netzwerke mit simulatororientiertem fehlerpruefgenerator
DE10127337A1 (de) Verfahren und Vorrichtung zum Erzeugen von beim Testen von Halbleiter-ICs verwendeten Testmustern
DE2346617A1 (de) Verfahren zur pruefung der laufzeitverzoegerung einer funktionalen logischen einheit
DE3751949T2 (de) Verfahren zum Starten eines Untersystems in einem verteilten Verarbeitungssystem
DE3702408C2 (de)
EP0580663B1 (de) Verfahren zur verifikation datenverarbeitender systeme
DE19536203A1 (de) Fehlerdiagnoseverfahren für eine sequentielle Schaltung
DE69017169T2 (de) Testen integrierter Schaltungen unter Verwendung von Taktgeberstössen.
DE4031136C2 (de)
DE68910461T2 (de) GERäT ZUR RECHNERGESTÜTZEN ERZEUGUNG VON PRÜFPROGRAMMEN FÜR DIGITALE SCHALTUNGEN.
DE68927984T2 (de) Logikschaltung mit einer Prüffunktion
EP1127323A1 (de) Verfahren und anordnung zum vergleich einer ersten eigenschaft mit vorgegebenen eigenschaften eines technischen systems
DE3854636T2 (de) Automatischer Prüfprozess für logische Geräte.
DE60012735T2 (de) Verfahren zur unterscheidung von verschiedenen typen von abtastfehlern, rechnerbasierte schaltungsemulation und fehlerdetektionssystem
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

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