-
Hintergrund
der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf ein Design für eine Prüfbarkeit
und eine Prüfsequenz-Erzeugung
für integrierte
Schaltungen (LSIs).
-
Ein
Scan-Design ist ein herkömmlich
verwendetes Design als ein typisches Design für eine Prüftechnologie. In einem Scan-Design-Verfahren werden
Flip-Flops (FFs) in einer logisch-ausgelegten, integrierten Schaltung
durch Scan-FFs ersetzt und können
demzufolge gesteuert werden (scan-in) und beobachtet werden (scan-out),
und zwar direkt von der Außenseite,
und das Problem von sequenziellen Schaltungen wird zu demjenigen
von kombinatorischen Schaltungen vereinfacht, und zwar für eine Erleichterung
einer Testfolge-Erzeugung. Eine solche Technologie ist in Digital
Systems Testing and Testable Design, Chapter 9, Design For Testability, veröffentlicht
1990 von Computer Science Press, beschrieben.
-
Ein
Scan-Design kann in zwei Typen klassifiziert werden, nämlich in
ein Voll-Scan-Design-Verfahren
und ein Teil-Scan-Design-Verfahren. In dem ersteren Design-Verfahren
werden alle FFs in einer Schaltung durch Scan-FFs ersetzt. Andererseits
werden in dem letzteren Design-Verfahren nur einige FFs in einer
Schaltung durch Scan-FFs ersetzt. Ein Verfahren zum Identifizieren
(Auswählen)
von Scan-FFs in einem Teil-Scan-Design ist vollständig in einer
Veröffentlichung
mit dem Titel "An
Exact Algorithm for Selecting Partial Scan Flip-Flops", DAC (Design Automation
Conference), Seiten 81–86,
1994, ebenso wie in deren Referenzen, diskutiert.
-
Weiterhin
ist, um eine Sequenz-Erzeugung für
sequenzielle Schaltungen zu testen, eine Prüfsequenz-Kompaktierung vollständig in
einer Veröffentlichung
mit dem Titel "Dynamic
Test Compaction for Synchronous Sequential Circuits using Static
Compaction Technique",
FTCS ( Fault Tolerant Computing Symposium), Seiten 53–61, 1996,
ebenso wie in deren Referenzen, beschrieben.
-
Die
vorstehend angeführten
Techniken nach dem Stand der Technik haben allerdings deren jeweilige
Probleme. Ein herkömmliches
Teil-Scan-Design-Verfahren ruft ein Problem dahingehend hervor, dass
eine Identifizierung von FFs, die durch Scan-FF zu ersetzen sind,
nicht immer möglich
ist, um eine ausreichend hohe Fehler-Effektivität zu garantieren, d.h. 95%
oder mehr. Zusätzlich
ruft ein herkömmliches
Prüfsequenz-Kompaktierungs-Verfahren
für sequenzielle
Schaltungen auch das Problem hervor, dass es schlecht in der Kompaktierungsrate
ist.
-
Ein
automatisches Testmuster-Erzeugungssystem ist in „PLANE:
A New ATPG System for PLAs" von
Huang J-D et al, Proceedings Asian Test Symposium, Being, China,
Nov. 1993, IEEE Comput. Soc., 1993, beschrieben. Ein Kreuzungspunkt-Fehler-Modell
wird zum Testen programmierbarer, logischer Felder angewandt. Ein
Testwürfel – ein Testvektor,
in dem ein Bit, nicht zugeordnet durch ATPG, als „don't care" bezeichnet ist – wird für einen
Kreuzungspunkt-Fehler erzeugt und wird in einem Puffer einer finiten
Länge gespeichert.
Eine Test-Kompaktierung wird durch Kombinieren – falls möglich – von neu erzeugten Testwürfeln mit
existierenden Testwürfeln
erreicht, wenn neue Testwürfel
zu dem Puffer hinzugefügt
werden.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein verbessertes Test-Erzeugungsverfahren
zu schaffen.
-
Diese
wird durch die Merkmale des Anspruchs 1 gelöst.
-
Weitere
Ausführungsformen
sind Gegenstand der abhängigen
Ansprüche.
-
1 zeigt
ein Flussdiagramm, das Vorgänge
in einem Verfahren für
einen prüfgerechten
Entwurf gemäß einem
ersten Beispiel, das für
das Verständnis
der vorliegenden Erfindung nützlich
ist, darstellt.
-
2 zeigt
eine erläuternde
Darstellung einer integrierten Schaltung (LSI), die ein Gegenstand des
Verfahrens für
einen prüfgerechten
Entwurf wird.
-
3(a)–(e)
stellen Timeframe-Expansionen dar, wenn FF r1 der integrierten Schaltung
der 2 als ein FF ausgewählt wird, das durch ein Nicht-Scan-FF
zu ersetzen ist.
-
4(a)–(d)
stellen Timeframe-Expansionen dar, wenn ein FF r2 der integrierten
Schaltung der 2 als ein FF ausgewählt wird,
das durch ein Nicht-Scan-FF zu ersetzen ist.
-
5 stellt
eine Timeframe-Expansion dar, wenn ein FF r4 der integrierten Schaltung
der 2 als ein FF ausgewählt wird, das durch ein Nicht-Scan-FF
zu ersetzen ist.
-
6 zeigt
eine Darstellung eines Verfahrens für einen prüfgerechten Entwurf des ersten
Beispiels, angewandt bei der integrierten Schaltung der 2.
-
7(a) und 7(b) stellen
jeweils UH-FFs dar.
-
8 zeigt
ein Flussdiagramm, das Abläufe in
einem Verfahren einer Prüfsequenz-Erzeugung gemäß einer
ersten Ausführungsform
der Erfindung darstellt.
-
9 zeigt
ein Flussdiagramm, das die Details von Schritt SG11 der 8 darstellt.
-
10(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der ersten Ausführungsform
nützlich
sind.
-
11(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der ersten Ausführungsform
nützlich
sind.
-
12(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens einer Prüfsequenz-Erzeugung
der ersten Ausführungsform
nützlich
sind.
-
13 zeigt
ein Diagramm, das für
das Verständnis
des Verfahrens einer Prüfsequenz-Erzeugung
der ersten Ausführungsform
nützlich
ist.
-
14 zeigt
ein Flussdiagramm, das Abläufe
in einem Verfahren einer Prüfsequenz-Erzeugung gemäß einer
zweiten Ausführungsform
der Erfindung darstellt.
-
15 zeigt
ein Flussdiagramm, das die Details von Schritt SH13 der 14 darstellt.
-
16(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der zweiten Ausführungsform nützlich sind.
-
17(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der zweiten Ausführungsform nützlich sind.
-
18(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der zweiten Ausführungsform nützlich sind.
-
19(a) und (b) zeigen Diagramme, die für das Verständnis des
Verfahrens für
eine Prüfsequenz-Erzeugung
der zweiten Ausführungsform nützlich sind.
-
1 zeigt
ein Flussdiagramm, das Abläufe in
einem Verfahren für
einen prüfgerechten
Entwurf gemäß einem
ersten Beispiel, das zum Verständnis der
vorliegenden Erfindung nützlich
ist, darstellt. In 1 werden in einem Schritt SA1,
als ein Voll-Scan-Schritt,
alle die Flip-Flops (FFs) in einer bestimmten, integrierten Schaltung
temporär
als FFs ausgewählt,
die durch Scan-FF ersetzt werden. Es ist anzumerken, dass ein solches FF
temporär
als FF ausgewählt
wird, das durch Scan-FFs zu ersetzen ist. Es ist anzumerken, dass
ein solches FF, temporär ausgewählt als
FF, das durch ein Scan-FF zu ersetzen ist, nachfolgend als temporäres Scan-FF
bezeichnet wird. An den Schritten SA2 bis SA8 wird, für jedes
temporäre
Scan-FF, geprüft,
ob die vorgesehene, integrierte Schaltung eine n-fache Reihen- bzw. Line-up-Struktur
besitzt oder nicht, unter der Annahme, dass jedes der temporären Scan-FFs
als FF ausgewählt
wird, das durch ein Nicht-Scan-FF ersetzt wird (Schritt SA7), und
falls eine solche Prüfung zeigt,
dass die vorgesehene, integrierte Schaltung eine n-fache Line-up-Struktur
besitzt, wird das temporäre
Scan-FF, das in Rede steht, temporär als ein FF ausgewählt, das
durch ein Nicht-Scan-FF ersetzt wird. Am Schritt SA9 werden temporäre Scan-FFs, d.h.
FFs, temporär
ausgewählt
als FFs, die durch Scan-FF zu ersetzen sind, und zwar durch die
Schritte SA1 bis SA8, schließlich
als Flip-Flops ausgewählt,
die gegen ein Scan-FF ersetzt werden.
-
Eine
n-fache Reihen- bzw. Line-up-Struktur bedeutet eine Schaltungs-Struktur,
bei der alle Pfade zwischen einem Flip-Flop und einem Ausgang n, oder
weniger, sequenzielle Tiefen haben. Eine Schaltung, die eine n-fache
Line-up-Struktur-Schaltung besitzt, hat eine Charakteristik, bei
der höchstens
n identische FFs in einer Timeframe-Expansion in Bezug auf einen
primären
Ausgang existieren. Zum Beispiel besitzt eine 1-fache Line-up-Struktur (wenn n gleich
zu 1 ist) eine Charakteristik so, dass die Zahl von identischen
FFs "eins" in einer Timeframe-Expansion
in Bezug auf einen primären
Ausgang ist. Gemäß dem vorliegenden
Beispiel wird das Auswählen
von FFs, die durch Scan-FF zu ersetzen sind, vorgenommen, damit
eine vorgesehene, integrierte Schaltung eine n-fache Line-up-Struktur besitzt,
wobei ein Eingang und ein Ausgang eines FFs, das gegen ein Scan-FF
ersetzt wird, als ein pseudo-primärer Ausgang und als ein pseudo-primärere Eingang, jeweils,
angenommen werden.
-
SA2
ist der Schritt eines Erkennens eines Flip-Flops, das eine Selbst-Schleifen-Struktur besitzt. Wenn
ein Flip-Flop, ausgewählt
am Schritt SA4, als ein FF erkannt wird, das eine Selbst-Schleifen-Struktur
besitzt, und zwar am Schritt SA2, kehrt der Vorgang zu Schritt SA3
(Schritt SA5) zurück.
Mit anderen Worten wird Schritt SA7 für das FF weggelassen, das eine
Selbst-Schleifen-Struktur besitzt, was das FF als temporäres Scan-FF
verbleibend belässt.
-
Das
Verfahren für
einen prüfgerechten
Entwurf dieses Beispiels wird unter Bezugnahme auf die 2–6 beschrieben.
Hierbei ist n eine 1 in der n-fachen Line-up- Struktur, und im Schritt SA7 wird geprüft, ob eine
vorgesehene, integrierte Schaltung eine 1-fache Line-up-Struktur
besitzt.
-
2 stellt
eine vorgesehene, integrierte Schaltung (eine sequenzielle Schaltung)
für das
Verfahren für
einen prüfgerechten
Entwurf dieses Beispiels dar. A-E sind kombinatorische Schaltungen. r1-r4
sind Flip-Flops (FFs). PI1 und PI2 sind primäre Eingänge. PO1 und PO2 sind primäre Ausgänge. Zwischenverbindungen
unter Elementen sind durch Pfeile dargestellt. Alle Taktanschlüsse von
FF r1-FF r4 sind mit demselben Takteingang gekoppelt, wobei die
Beschreibung davon in 2 weggelassen wird.
-
In
Bezug auf ein temporäres
Scan-FF werden sein Daten-Eingang und Ausgang als pseudo-primärer Ausgang
und als pseudo-primärer
Eingang, jeweils, angenommen. PPOi und PPIi stellen, jeweils, einen
pseudo-primären
Ausgang und einen pseudoprimären
Eingang dar, wobei das Zeichen i für ein entsprechendes FF kennzeichnend
ist. Zum Beispiel werden, falls FF r1 ein temporäres Scan-FF ist, sein Daten-Eingang
und -Ausgang als ein pseudo-primärer
Ausgang PPO1 und als ein pseudo-primärer Eingang PPI1, jeweils,
angenommen.
-
Am
Schritt SA1 werden alle Flip-Flops in 2, d.h.
FF r1-r4, als temporäre
Scan-FFs ausgewählt.
Am Schritt SA2 wird die Schaltungs-Struktur von 2 analysiert
und das Ergebnis zeigt, dass FF r3 das einzige FF ist, das eine
Selbst-Schleifen-Struktur
besitzt.
-
Nachfolgend
werden die Schritte SA4-SA8 an jedem FF r1-r4 durchgeführt.
-
Am
Schritt Sa4 wird FF r1 ausgewählt.
Da FF r1 keine Selbst-Schleifen-Struktur besitzt, wird am Schritt
SA6 FF r1 temporär
als FF ausgewählt,
das durch ein Nicht-Scan-FF zu ersetzen ist, und am Schritt SA7
wird die Schaltung geprüft,
ob sie eine 1-fache Line-up-Struktur
besitzt.
-
3 stellt eine Timeframe-Expansion dar, wenn
FF r1 temporär
als FF ausgewählt
wird, das durch ein Nicht-Scan-FF zu ersetzen ist. Am Schritt SA7c
wird eine Timeframe-Expansion in Bezug auf den primären Ausgang
PO1, ausgewählt
am Schritt SA7b (3(a)), durchgeführt. Da
dort kein FF in dem erweiterten Timeframe existiert, kehrt der Vorgang
zu Schritt SA7a von Schritt SA7d zurück. Dann wird der primäre Ausgang
PO2 ausgewählt
und eine Timeframe-Expansion wird durchgeführt (3(b)). Da
dort kein FF in dem erweiterten Timeframe existiert, kehrt der Vorgang
wieder zurück
zu Schritt SA7a. Dann wird der pseudo-primäre Ausgang PPO2 (d.h. der Daten-Eingang
von FF r2 als ein temporäres
Scan-FF) ausgewählt,
und eine Timeframe-Expansion wird durchgeführt (3(c)).
Da dabei nur ein FF r1 in dem erweiterten Timeframe existiert, kehrt
der Vorgang wieder zurück
zu Schritt SA7a. Dann wird der primäre Ausgang PPO3 (d.h. der Daten-Eingang
von FF r3 als ein temporäres Scan-FF)
ausgewählt
und eine Timeframe-Expansion wird durchgeführt (3(d)).
Da dabei nur ein FF r1 in dem erweiterten Timeframe existiert, kehrt
der Vorgang wieder zu Schritt SA7a zurück. Dann wird der pseudo-primäre Ausgang
PPO4 (d.h. der Daten-Eingang von FF r4 als ein temporäres Scan-FF) ausgewählt, und
die Timeframe-Expansion wird durchgeführt (3(e)).
Da dabei kein FF in dem erweiterten Timeframe existiert, kehrt der
Vorgang wieder zurück
zu Schritt SA7a. Die Timeframe-Expansion-Verarbeitung ist nun in
Bezug auf alle primären Ausgänge und
alle der pseudo-primären
Ausgänge abgeschlossen.
Der Vorgang kehrt deshalb zu Schritt SA3 zurück. Am Schritt SA4 wird ein
nächstes
FF ausgewählt.
-
Am
Schritt SA4 wird FF r2 ausgewählt.
Da FF r2 keine Selbst-Schleifen-Struktur besitzt, wird, am Schritt
SA6, FF r2 temporär
als ein FF ausgewählt,
das durch ein Nicht-Scan-FF
zu ersetzen ist. Schritt SA7 prüft,
ob die Schaltung eine 1-fache Line-up-Struktur besitzt.
-
4 stellt eine Timeframe-Expansion dar, wenn
FF r2 temporär
als ein FF ausgewählt
ist, das durch ein Nicht-Scan-FF ersetzt wird. Am Schritt SA7c wird
eine Timeframe-Expansion in Bezug auf den primären Ausgang PO1, ausgewählt am Schritt SA7b
(4(a)), durchgeführt. Da dabei nur ein FF r1
und ein FF r2 in dem erweiterten Timeframe existiert, kehrt der
Vorgang zu Schritt SA7a vom Schritt SA7d zurück. Dann wird der primäre Ausgang
PO2 ausgewählt,
und eine Timeframe-Expansion wird durchgeführt (4(b)).
Da dabei kein FF in dem erweiterten Timeframe existiert, kehrt der
Vorgang wieder zu Schritt SA7a zurück. Dann wird der pseudo-primäre Ausgang
PPO3 ausgewählt,
und die Timeframe-Expansion wird durchgeführt (4(c)). Da
dabei nur ein FF r1 in dem erweiterten Timeframe existiert, kehrt
der Vorgang wieder zu Schritt SA7a zurück. Dann wird der pseudo-primäre Ausgang PPO4
ausgewählt,
und eine Timeframe-Expansion wird durchgeführt (4(d)).
Da dabei nur ein FF r1 und nur ein FF r2 in dem erweiterten Timeframe
existiert, kehrt der Vorgang wieder zu Schritt SA7a zurück. Eine
Timeframe-Expansion-Verarbeitung ist nun in Bezug auf alle die primären Ausgänge und
alle die pseudo-primären
Ausgänge
abgeschlossen. Der Vorgang kehrt deshalb zu Schritt SA3 zurück. Am Schritt
SA4 wird ein nächstes
FF ausgewählt.
-
Am
Schritt SA4 wird FF r3 ausgewählt.
Allerdings kehrt, da FF r3 bereits als ein FF erkannt wurde, das
eine Selbst-Schleifen-Struktur besitzt, der Vorgang zu Schritt SA3
von Schritt SA5 zurück.
Am Schritt SA4 wird ein nächstes
FF ausgewählt.
-
Am
Schritt SA4 wird FF r4 ausgewählt.
FF r4 besitzt keine Selbst-Schleifen-Struktur. Dementsprechend wird, am Schritt
SA6, FF r4 temporär
als ein FF ausgewählt,
das durch ein Nicht-Scan-FF ersetzt wird. Schritt SA7 prüft, ob die
Schaltung eine 1-fache Line-up-Struktur besitzt.
-
5 stellt
eine Timeframe-Expansion dar, wenn FF r4 temporär als ein FF ausgewählt wird,
das durch ein Nicht-Scan-FF ersetzt wird. Am Schritt SA7c wird eine
Timeframe-Expansion in Bezug auf den Ausgangs-Anschluss PO1, ausgewählt am Schritt
SA7b, durchgeführt.
Dabei existieren zwei FFs r1 und zwei FFs r2 in dem erweiterten
Timeframe, was bedeutet, dass die Schaltung keine 1-fache Line-up-Struktur
besitzt. Der Vorgang geht weiter zu Schritt SA8 von Schritt SA7d,
und FF r4 wird als ein temporäres
Scan-FF ausgewählt.
-
Die
Schritte SA4–SA8
sind für
alle die FF r1-r4 durchgeführt
worden. Die temporären Scan-FFs,
d.h. FF r3 und FF r4, werden schließlich als Flip-Flops ausgewählt, die
durch FFs ersetzt werden, am Schritt SA9, und der Vorgang ist abgeschlossen.
-
6 stellt
ein Ergebnis des Verfahrens eines prüfgerechten Entwurfs des vorliegenden
Beispiels für
die integrierte Schaltung der 2 dar. In 6 sind
FF r3 und r4, die abschließend
als Flip-Flops ausgewählt
sind, um ersetzt zu werden, bereits durch Scan-FFs ersetzt. SI stellt
einen Scan-In-Primär-Eingang
dar. SO stellt einen Scan-Out-Primär-Ausgang
dar. SE stellt einen Scan-Freigabe-Primär-Eingang dar. Ein Scan-Pfad ist so aufgebaut,
dass er sich von dem Scan-In-Primär-Eingang SI zu dem Scan-Out-Primär-Ausgang SO
mittels eines Scan-Eingangs DT und eines Scan-Ausgangs Q des Scan-FF
r4 und eines Scan-Eingangs DTT und eines Scan-Ausgangs Q des Scan-FF
r3 erstreckt.
-
Entsprechend
dem vorliegenden Verfahren für
einen prüfgerechten
Entwurf werden FFs, die durch Scan-FFs ersetzt werden, bestimmt,
damit eine sequenzielle Schaltung eine n-fache Line-up-Struktur
besitzt, wodurch demzufolge eine hohe Fehler-Effektivität bei einer
Scan-FF-Identifizierung garantiert werden kann.
-
Der
beschriebene Algorithmus kann einfach bei Verfahren für einen
prüfgerechten
Entwurf für eine
integrierte Schaltung, ausgelegt unter einem Register-Transfer-Level (RTL),
angewandt werden. Zuerst wird ein Voll-Scan-Schritt durchgeführt, in dem
alle Register in einer RTL-ausgelegten, integrierten Schaltung temporär als Register
ausgewählt werden,
um durch Scan-Register ersetzt zu werden. Dann wird ein Nicht-Scan-Register-Auswahl-Schritt durchgeführt, in
dem, für
jedes temporäre
Scan-Register, ausgewählt
durch den Voll-Scan-Schritt, geprüft wird, ob die RTL-ausgelegte,
integrierte Schaltung eine n-fache Line-up-Struktur besitzt oder
nicht, unter der Annahme, dass jedes Temporär-Scan-Register als ein Register
ausgewählt
ist, um durch ein Nicht-Scan-Register ersetzt zu werden, und falls
eine solche Prüfung
zeigt, dass die RTL-ausgelegten, integrierten Schaltungen eine n-fache
Line-up-Struktur haben, wird jedes der Temporär-Scan-Register, das in Rede steht, temporär als ein
Register ausgewählt, um
durch ein Nicht-Scan-Register
ersetzt zu werden. Und die Register, temporär ausgewählt als Register, die durch
Scan-Register ersetzt werden, durch den Voll-Scan-Schritt und den
Nicht-Scan-Register-Auswahlschritt,
werden schließlich
als Register ausgewählt,
die durch Scan-Register
ersetzt werden.
-
8 zeigt
ein Flussdiagramm, das Vorgänge
in einem Verfahren für
eine Prüfsequenz-Erzeugung
gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung darstellt. Gemäß dem vorliegenden Verfahren
einer Prüfsequenz-Erzeugung
wird eine Prüfsequenz
für eine
gegebene Schaltung erzeugt, während
sequenziell kompaktierungsmäßig Prüfsequenzen,
erzeugt für
jeweilige Fehler in Puffern, gespeichert werden.
-
In 8 ist
SG1 der Schritt eines Prüfens der
gegebenen Schaltung hinsichtlich einer Schleife. Bei dem Vorhandensein
einer Schleife geht der Vorgang zu Schritt SG2, während beim
Nicht-Vorhandensein einer Schleife der Vorgang zu Schritt SG3 übergeht.
SG2 ist der Schritt eines Einstellens eines vorbestimmten Werts
als Puffer-Länge,
was einen einzelnen Puffer ergibt, der eine solche Puffer-Länge besitzt,
und alle Daten davon zu "don't care" initialisiert. SG3
ist ein Schritt eines Einstellens eines Werts, erhalten durch Addieren
von 1 zu der sequenziellen Tiefe der Schaltung als Puffer-Länge, was
einen einzelnen Puffer ergibt, der eine solche Puffer-Länge besitzt,
und Initialisieren aller Daten davon auf "don't
care".
-
Nach
Einstellen der Puffer-Längen
an den Schritten SG2 oder SG3 wird die maximale Zahl von Puffern
am Schritt SG4 angegeben.
-
SG5
ist der Schritt eines Bestimmens, ob die Prüfsequenz für jeden Fehler erzeugt worden
ist (ATPG). Falls JA, schreitet der Vorgang weiter zu Schritt SG6,
während
dann, falls NEIN, der Vorgang zu Schritt SG7 fortschreitet. Am Schritt
SG6 wird eine Fehler-Simulation
unter Verwendung von allen Prüfsequenzen,
gespeichert in einer Gruppe von Puffern, durchgeführt.
-
SG7
ist der Schritt eines Auswählens
eines einzelnen Fehlers als ein Soll-Fehler, für den keine Prüfsequenzen
erzeugt worden sind. SG8 ist der Schritt eines Erzeugens einer Prüfsequenz
für den Soll-Fehler,
ausgewählt
am Schritt SG7.
-
SG9
ist der Schritt eines Bestimmens, ob die Prüfsequenz, erzeugt am Schritt
SG8, eine größere Länge als
eine Puffer-Länge,
eingestellt am Schritt SG2 oder SG3, besitzt. Falls JA, geht der
Vorgang weiter zu Schritt SG10, während dann, falls NEIN gilt, der
Vorgang zu Schritt SG11 weitergeht. Es ist anzumerken, dass, ohne
das Vorhandensein einer Schleife in der Schaltung, die Prüfsequenz-Länge nicht
die Puffer-Länge übersteigt,
die auf die sequenzielle Tiefe plus 1 am Schritt SG3 eingestellt
ist. Am Schritt SG10 wird eine Fehler-Simulation unter Verwendung der
erzeugten Prüfsequenz
durchgeführt.
Am Schritt SG11 wird die erzeugte Prüfsequenz kompaktierungsmäßig in dem
Puffer gespeichert.
-
Die
Details von Schritt SG11 werden später beschrieben.
-
SG12
ist der Schritt eines Bestimmens, ob die Zahl von Puffern größer als
die maximale Zahl von Puffern, bezeichnet am Schritt SG4, bei der Kompaktierungs-Speicherung
am Schritt SG11, ist. Falls JA, geht der Vorgang weiter zu Schritt
SG13, während
dann, falls NEIN gilt, der Vorgang zu Schritt SG5 zurückkehrt.
Am Schritt SG13 wird eine Fehler-Simulation
unter Verwendung einer Prüfsequenz, gehalten
in einem Puffer, mit der minimalen Zahl von "don't
cares", durchgeführt, und
dieser Puffer wird gelöscht.
-
9 zeigt
ein Flussdiagramm, das die Details von Schritt SG11 der 8 darstellt.
SG11a ist der Schritt eines Bestimmens, ob eine Kompaktierungs-Speicherung
der Prüfsequenz,
erzeugt am Schritt SG8, für
jeden Puffer versucht worden ist. Falls die Kompaktierungs-Speicherung
für jeden
Puffer versucht worden ist, geht der Vorgang weiter zu Schritt SG11,
während
dann, wenn dies nicht der Fall ist, der Vorgang zu Schritt SG11b übergeht.
-
SG11b
ist der Schritt eines Auswählens
eines Puffers, für
den die Kompaktierungs-Speicherung
nicht versucht worden ist. SG11c ist der Schritt eines Bestimmens,
ob eine Kompaktierungs-Speicherung an jeder Start-Position, für den Puffer,
ausgewählt
am Schritt SG11b, versucht worden ist. Falls JA, geht der Vorgang
zurück
zu Schritt SG11a, während
dann, falls dies nicht der Fall ist, der Vorgang zu Schritt SG11d
fortschreitet.
-
SG11d
ist der Schritt eines Auswählens
einer Start-Position, für
die die Kompaktierungs-Speicherung
versucht ist. Es ist möglich,
(BL – TPL
+ 1) Start-Positionen pro Puffer auszuwählen, wobei BL die Puffer-Länge ist
und TPL die Prüfsequenz-Länge ist.
-
SG11e
ist der Schritt eines Bestimmens, ob eine Kompaktierungs-Speicherung
in dem Puffer, ausgewählt
am Schritt SG11b, erfolgreich von der Start-Position aus ist, ausgewählt am Schritt
SG11d. Schritt SG11e bestimmt, ob die Prüfsequenz kompaktierungsmäßig gespeichert
werden kann, basierend auf der Kompaktierungs-Regel, während die "0" der Prüfsequenz mit "0" oder "don't
care" kompaktibel ist,
allerdings nicht mit "1" im Puffer kompaktibel
ist, und die "1" der Prüfsequenz
mit "1" oder "don't care" kompaktibel ist,
allerdings nicht mit einer logischen "0" im
Puffer kompaktibel ist.
-
Wenn
Schritt SG11e bestimmt, dass die Prüfsequenz kompaktierungsmäßig gespeichert
werden kann, wird die Prüfsequenz
kompaktierungsmäßig in dem
Puffer, basierend auf den vorstehenden Kompaktierungs-Regeln, am
Schritt SG11f gespeichert.
-
Wenn
die Prüfsequenz
nicht kompaktierungsmäßig in irgendeinem
Puffer gespeichert werden kann, wird, am Schritt SG11g, ein neuer
Puffer, in dem die Prüfsequenz
zu speichern ist, zusätzlich vorgesehen.
SG11h ist der Schritt eines Speicherns der Puffer aufgrund der Zahl
von "don't care"s.
-
Das
Verfahren einer Prüfsequenz-Erzeugung
der 8 und der 9 wird unter
Bezugnahme auf die 10–13 beschrieben.
Hierbei wird angenommen, dass die vorgesehene Schaltung keine Schleifen
besitzt und eine sequenzielle Tiefe von 3 hat, und vier Fehler hat,
d.h. FAULT-a, FAULT-b, FAULT-c und FAULT-d, als nicht erfasste Fehler.
In den 10–13 sind
X1-X3 primäre
Eingänge.
A und B sind Puffer. In den Puffern stellt 0 einen logischen Wert "0" dar. 1 stellt einen logischen Wert "1" dar. X stellt "don't
care" dar.
-
Da
die vorgesehene Schaltung keine Schleife besitzt, wird, am Schritt
SG3, ein Wert von 3, erhalten durch Addition von 1 zu der sequenziellen
Tiefe, als Puffer-Länge
eingestellt. Wie in 10(a) dargestellt
ist, werden ein Puffer A, dessen Puffer-Länge 3 ist, erzeugt,
und alle Daten von Puffer A werden auf "don't
care" initialisiert.
Am Schritt SG4 wird ein Wert von 2 als die maximale Zahl von Puffern
bezeichnet.
-
Als
nächstes
wird, am Schritt SG8, eine Prüfsequenz
für FAULT-a,
ausgewählt
am Schritt SG7, erzeugt. Am Schritt SG11 wird die Prüfsequenz,
erzeugt für
FAULT-a, kompaktierungsmäßig in dem Puffer
A gespeichert. Eine solche Kompaktierungs-Speicherung ist erfolgreich
basierend auf den vorstehenden Kompaktierungs-Regeln. 0 ist die
einzige, mögliche
Start-Position, da die Puffer-Länge gleich
zu der Länge
einer Prüfsequenz
für FAULT-a ist,
und, zusätzlich,
alle Daten des Puffers A auf "don't care" initialisiert worden
sind. Als eine Folge wird, wie in 10(b) dargestellt
ist, die Prüfsequenz für FAULT-a
kompaktierungsmäßig in dem
Puffer A gespeichert.
-
Darauf
folgend wird, am Schritt SG8, eine Prüfsequenz für FAULT-b, ausgewählt am Schritt SG7,
erzeugt. Die Puffer-Länge
ist gleich zu der Länge
der Prüfsequenz
für FAULT-a
und 0 und ist deshalb die einzige, mögliche Start-Position. Wie
in 11(a) dargestellt ist, ist der
Kompaktierungs-Speicher, basierend auf den vorstehenden Kompaktierungs-Regeln,
nicht erfolgreich. Ein neuer Puffer B, in dem die Prüfsequenz
zu speichern ist, wird zusätzlich
vorgesehen, wie dies in 11(b) dargestellt
ist. Die Zahl von "don't care"s in dem Puffer A
ist vier und die Zahl von "don't care"s in dem Puffer B
ist fünf.
Dementsprechend werden die Puffer A, B in der Reihenfolge von B,
A sortiert.
-
Darauf
folgend wird, am Schritt SG8, eine Prüfsequenz für FAULT-c, ausgewählt am Schritt SG7,
erzeugt. Die Prüfsequenz,
erzeugt für
FAULT-c, besitzt eine Länge
von 2, und 0 und 1 sind deshalb die einzigen möglichen Start-Positionen. Wie
in 12(a) dargestellt ist, wird,
basierend auf den vorstehenden Kompaktierungs-Regeln, eine Kompaktierungs-Speicherung
der Prüfsequenz
für sowohl
den Puffer A als auch den Puffer B versucht. In dem Puffer B ist
eine Kompaktierungs-Speicherung nicht erfolgreich, nicht nur dann,
wenn die Start-Position eine 0 ist, sondern auch dann, wenn die
Start-Position eine 1 ist. In dem Puffer A ist eine Kompaktierungs-Speicherung
nicht erfolgreich, wenn die Start-Position eine 0 ist, allerdings
erfolgreich, wenn die Start-Position eine 1 ist. Als Folge wird
die Prüfsequenz,
erzeugt für
FAULT-c, kompakt in dem Puffer A in Bezug auf die Start-Position
bei 1 (siehe 12(b)) erzeugt. Die Zahl von "don't care"s in dem Puffer A
ist 1 und die Zahl von "don't care"s in dem Puffer B
ist fünf.
Dementsprechend werden die Puffer B, A in der Reihenfolge von B,
A sortiert.
-
Darauf
folgend wird, am Schritt SG8, eine Prüfsequenz für FAULT-d, ausgewählt am Schritt SG7,
erzeugt. Die Länge
der Prüfsequenz,
erzeugt für
FAULT-d, ist gleich zu der Puffer-Länge, und 0 ist deshalb die
einzige, mögliche
Start-Position. Basierend auf den vorstehenden Kompaktierungs-Regeln wird
eine Kompaktierungs-Speicherung für die Prüfsequenz für beide Puffer A und B versucht.
Eine Kompaktierungs-Speicherung ist nicht in beiden Puffern A und
B erfolgreich. Ein neuer Puffer C, in dem die Prüfsequenz zu speichern ist,
wird zusätzlich
vorgesehen. Die Zahl von "don't care"s in dem Puffer A ist
eins und die Zahl von "don't care" s in dem Puffer B
ist fünf,
und die Zahl von "don't care"s in dem Puffer C
ist drei. Dementsprechend werden die Puffer A, B, C in der Reihenfolge
von B, C, A sortiert.
-
Da
die Zahl von Puffern 2 übersteigt,
was die maximale Zahl von Puffern ist (Schritt SG12), wird jedes "don't care" zufällig mit
entweder "0" oder "1" in einem Puffer mit der minimalen Anzahl
von "don't care"s der Puffer A, B
und C ersetzt, d.h. der Puffer A, um eine Fehler-Simulation auszuführen. Der
Puffer A wird dann gelöscht,
und der Puffer C, in dem die Prüfsequenz
für FAULT-d
gespeichert ist, dient nun als ein neuer Puffer A (Schritt SG13).
-
Da
Prüfsequenzen
für alle
nicht erfassten Fehler erzeugt werden (Schritt SG5), wird jedes "don't care" zufällig gegen
entweder "0" oder "1" in den Puffen A und B ersetzt, um eine
Fehler-Simulation auszuführen
(Schritt SG6).
-
Gemäß der vorliegenden
Ausführungsform wird
eine Kompaktierung dynamisch mit Puffern in der Prüfsequenz-Erzeugung
durchgeführt.
Dies ergibt eine Erzeugung von kürzeren
Prüfsequenzen.
-
14 zeigt
ein Flussdiagramm, das Abläufe
in einem Verfahren einer Prüfsequenz-Erzeugung gemäß einer
zweiten Ausführungsform
der vorliegenden Erfindung darstellt. Gemäß dem vorliegenden Verfahren
einer Prüfsequenz-Erzeugung
wird eine Prüfsequenz
für eine
gegebene Schaltung erzeugt, während
sequenziell kompaktierungsmäßig Prüfsequenzen,
erzeugt für
jeweilige Fehler, in Puffern gespeichert werden. Die vorliegende
Ausführungsform ist
in einem Algorithmus für
eine Kompaktierungs-Speicherung von Prüfsequenzen im Puffer gegenüber der
ersten Ausführungsform
unterschiedlich.
-
In 14 ist
SH1 der Schritt eines Prüfens der
gegebenen Schaltung für
eine Schleife. Bei dem Vorhandensein einer Schleife geht der Ablauf
weiter zu Schritt SH2 über,
während
bei dem Nicht-Vorhandensein einer Schleife der Ablauf zu Schritt
SH3 übergeht.
SH2 ist der Schritt eines Einstellens eines vorbestimmten Werts
L als Puffer-Länge und
Bereitstellen von N Puffern, die eine solche Puffer-Länge L haben,
wobei die Zahl N eine positive, ganze Zahl ist, und eines Initialisierens
aller Daten davon auf "don't care". SH3 ist der Schritt
eines Einstellens eines Werts, erhalten durch Addition von 1 zu
der sequenziellen Tiefe der Schaltung als Puffer-Länge, und
Bereitstellen von N Puffern, die eine solche Puffer-Länge haben,
und Initialisieren aller Daten davon auf "don't
care".
-
SH4
ist der Schritt einer Bestimmung, ob das "don't
care" Verhältnis in
den N Puffern eine vorbestimmte, obere Grenze P übersteigt. Falls das "don't care" Verhältnis die
obere Grenze P übersteigt,
und zwar am Schritt SH5, wird jedes "don't
care" gegen entweder "0" oder "1" in
den N Puffern ersetzt, um eine Fehler-Simulation auszuführen. Am
Schritt SH6 werden alle Daten der Puffer auf "don't
care" initialisiert.
Dagegen geht dann, wenn das "don't care" Verhältnis nicht
die obere Grenze P übersteigt,
der Vorgang weiter zu Schritt SH7.
-
SH7
ist der Schritt einer Bestimmung, ob Prüfsequenzen für alle Fehler
garantiert worden sind. Falls JA, am Schritt SH8, wird jedes "don't care" gegen entweder "0" oder "1" ersetzt,
um eine Fehler-Simulation auszuführen.
-
SH9
ist der Schritt eines Auswählens
eines einzelnen Fehlers als einen Soll-Fehler, für den keine Prüfsequenzen
garantiert worden sind. SH10 ist der Schritt eines Erzeugens einer
Prüfsequenz
für den Soll-Fehler,
ausgewählt
am Schritt SH9.
-
SH11
ist der Schritt eines Bestimmens, ob die Prüfsequenz, erzeugt am Schritt
SH10, eine größere Länge als
die Puffer-Länge,
eingestellt am Schritt SH2 oder SH3, besitzt. Falls JA, geht der
Vorgang weiter zu Schritt SH12, während dann, falls NEIN vorliegt,
der Vorgang zu Schritt SH13 weiter geht. Es ist anzumerken, dass
beim Nicht-Vorhandensein
einer Schleife in der Schaltung die Prüfsequenz-Länge nicht die Puffer-Länge übersteigt, die auf die sequenzielle
Tiefe plus 1 am Schritt SH3 eingestellt ist. Am Schritt SH12 wird
eine Fehler-Simulation mit der erzeugten Prüfsequenz durchgeführt. Im Schritt
SH13 wird die erzeugte Prüfsequenz
kompaktierungsmäßig in den
N Puffern gespeichert. Die Details von Schritt SH13 werden später beschrieben. Schritt
SH14 bestimmt, ob eine solche Kompaktierungs-Speicherung erfolgreich
durchgeführt
ist. Falls JA gilt, kehrt der Vorgang zu Schritt SH4 zurück, während dann,
falls NEIN gilt, eine Fehler-Simulation
unter Verwendung dieser Prüfsequenz
am Schritt SH12 ausgeführt
wird, bevor zum Schritt SH4 zurückgekehrt
wird.
-
15 zeigt
ein Flussdiagramm, das die Details von Schritt SH13 der 14 darstellt.
In 15 ist SH13a der Schritt eines Initialisierens
einer Start-Position, i, auf 0. SH13b–SH13e sind die Schritte eines
Bestimmens, ob die Prüfsequenz
kompaktierungsmäßig in den
N Puffern gespeichert werden kann, während die Start-Position i
erhöht
wird. Falls JA gilt, wird die Prüfsequenz
kompaktierungsmäßig in den
N Puffern gespeichert, während
dann, falls NEIN gilt, die Bearbeitung abgeschlossen wird.
-
Das
Verfahren einer Prüfsequenz-Erzeugung
der 14 und der 15 wird
unter Bezugnahme auf die 16–19 beschrieben. Hierbei wird angenommen,
dass eine vorgesehene Schaltung keine Schleifen besitzt und eine
sequenzielle Tiefe von 2 besitzt. Die Zahl von Puffern N ist zwei.
Die obere Grenze P des "don't care" Verhältnisses
ist 60%. Die vorgesehene Schaltung besitzt vier Fehler, d.h. FAULT-a,
FAULT-b, FAULT-c und FAULT-d, als nicht erfasste Fehler. In den 16–19 sind X1-X3 primäre Eingänge. In Puffern stellt 0 einen
logischen Wert "0" dar, 1 stellt einen
logischen Wert "1" dar. X stellt "don't care" dar. Auch wird ein
Satz von N Puffern als ein einzelner Puffer in dieser Ausführungsform
angesehen.
-
Da
die vorgesehene Schaltung keine Schleifen bei SH3 besitzt, wird
ein Wert von 3, erhalten durch Addition von 1 zu der sequenziellen
Tiefe, als Puffer-Länge
eingestellt. Wie in 16(a) dargestellt ist,
werden zwei Puffer, deren Puffer-Länge 3 ist, erzeugt.
Diese zwei Puffer werden als ein einzelner Puffer angesehen, dessen
Puffer-Länge 6 ist,
wobei alle Daten, die darin gespeichert sind, auf "don't care" initialisiert werden.
-
Am
Schritt SH4 wird bestimmt, ob das "don't care" Verhältnis die
obere Grenze P übersteigt.
Hier ist das "don't care" Verhältnis 0%
und der Vorgang geht weiter zu Schritt SH7.
-
Als
nächstes
wird eine Prüfsequenz
am Schritt SH10 für
FAULT-a, ausgewählt
am Schritt SH9, erzeugt. Am Schritt SH13 wird die Prüfsequenz, die
so erzeugt ist, kompaktierungsmäßig in dem
Puffer gespeichert. Wie in 16(a) dargestellt
ist, ist eine solche Kompaktierungs-Speicherung erfolgreich, wenn
die Start-Position 0 ist. Deshalb wird die erzeugte Prüfsequenz
kompaktierungsmäßig so gespeichert,
wie dies in 16(b) dargestellt ist. Das "don't care" Verhältnis ist
5/18, was kleiner als die obere Grenze P ist (= 60%).
-
Als
nächstes
wird eine Prüfsequenz
am Schritt SH10 für
FAULT-a, ausgewählt
am Schritt SH9, erzeugt. Am Schritt SH13 wird die Prüfsequenz, die
so erzeugt ist, kompaktierungsmäßig in dem
Puffer gespeichert. Wie in 17(a) dargestellt
ist, ist eine solche Kompaktierungs-Speicherung dann erfolgreich,
wenn die Start-Position 1 ist. Deshalb wird die erzeugte Prüfsequenz
kompaktierungsmäßig so gespeichert,
wie dies in 17(b) gespeichert ist. Das "don't care" Verhältnis ist
8/18, was kleiner als die obere Grenze P ist (= 60%).
-
Als
nächstes
wird eine Prüfsequenz
am Schritt SH10 für
FAULT-c, ausgewählt
am Schritt SH9, erzeugt. Am Schritt SH13 wird die Prüfsequenz, die
so erzeugt ist, kompaktierungsmäßig in dem
Puffer gespeichert. Wie in 18(a) dargestellt
ist, ist eine solche Kompaktierungs-Speicherung dann erfolgreich,
wenn die Start-Position 4 ist. Deshalb wird die erzeugte Prüfsequenz
kompaktierungsmäßig so gespeichert,
wie dies in 18(b) gespeichert ist. Das "don't care" Verhältnis ist
12/18, was größer als die
obere Grenze P (= 60%) ist. Eine Fehler-Simulation wird entsprechend
am Schritt SH5 durchgeführt und
alle Puffer-Daten werden auf "don't care" am Schritt SH6 initialisiert.
-
Auf
das Vorstehende folgend wird eine Prüfsequenz am Schritt SH10 für FAULT-d,
ausgewählt am
Schritt SH9, erzeugt. Am Schritt SH13 wird die Prüfsequenz,
die so erzeugt ist, kompaktierungsmäßig in dem Puffer gespeichert.
Wie in 19(a) dargestellt ist, ist eine
solche Kompaktierungs-Speicherung dann erfolgreich, wenn die Start-Position
1 ist. Deshalb wird die erzeugte Prüfsequenz kompaktierungsmäßig so gespeichert,
wie dies in 19(b) gespeichert ist. Das "don't care" Verhältnis ist
6/18, was kleiner als die oberer Grenze P (= 60%) ist.
-
Gemäß der vorliegenden
Ausführungsform wird
bestimmt, ob eine weitere Kompaktierungs-Speicherung erfolgreich
entsprechend einem "don't care" Verhältnis in
dem Puffer durchgeführt werden
kann. Dies führt
zu einer dynamischen Prüfsequenz-Kompaktierung
mit einer hohen Effektivität. Zusätzlich wird
es möglich,
eine Kompaktierungs-Speicherung über
eine Mehrzahl von Puffern unter Berücksichtigen einer Mehrzahl
von Puffern als ein einzelner Puffer durchzuführen, wodurch sich demzufolge
Kompaktierungs-Raten erhöhen.