DE19903633A1 - Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware - Google Patents
Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer HardwareInfo
- Publication number
- DE19903633A1 DE19903633A1 DE19903633A DE19903633A DE19903633A1 DE 19903633 A1 DE19903633 A1 DE 19903633A1 DE 19903633 A DE19903633 A DE 19903633A DE 19903633 A DE19903633 A DE 19903633A DE 19903633 A1 DE19903633 A1 DE 19903633A1
- Authority
- DE
- Germany
- Prior art keywords
- variable
- backward processing
- value
- leaf
- varying
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
Eine Boolesche SAT-Lösungsvorrichtung verwendet rekonfigurierbare Hardware, um ein spezifisches Eingabeproblem zu lösen. Jede der mehreren geordneten Variablen weist eine entsprechende von mehreren Zustandsmaschinen auf. Jede Zustandsmaschine weist eine Implikationsschaltung für ihre jeweilige Variable auf und arbeitet parallel entsprechend einer identischen Zustandsmaschine. Eine Zustandsmaschine implementiert das Davids-Putnam-Verfahren in Hardware und stellt eine verbesserte Leistung gegenüber Software infolge der parallelen Prüfung von direkten und transitiven Implikationen bereit. Eine andere Zustandsmaschine implementiert ein neuartiges nichtchronologisches Rückwärtsverarbeitungsverfahren, das die parallele Implikationsprüfung ausnutzt und das Bedürfnis vermeidet, im Fall von Rückwärtsverarbeitung einen GRASP-Implikationsgraphen aufrechtzuerhalten oder durchzugehen. Die neuartige nichtchronologische Rückwärtsverarbeitung sorgt dafür, daß eine Sperrvariable als eine Blattvariable gesetzt wird und daß nur der Wert der Blattvariablen geändert wird, jedoch möglicherweise sowohl der Wert als auch die Identität einer Rückwärtsverarbeitungsvariablen geändert werden.
Description
Diese Erfindung betrifft die Beschleunigung einer automa
tischen Testmustererzeugung (ATPG) und logischen Synthese/Veri
fikation durch Beschleunigung des Booleschen Erfüllbarkeits-
(SAT-) Problems. Insbesondere sorgt die Erfindung für ein kon
figurierbares Berechnungsverfahren zum SAT-Lösen, das wesent
liche Beschleunigungen (< 200× in vielen Fällen) gegenüber her
kömmlichen Softwareverfahren bieten kann. Da Boolesche Erfüll
barkeitsverfahren intensive logische Operationen erfordern,
kann das Hardware-Verfahren große Vorteile durch direktes Ab
bilden von Teilen der SAT-Ausdrücke auf Verknüpfungsglieder
(Logikgatter) und durch Nutzbarmachen großer Beträge an Paral
lelität in der Auswertung der Logik zeigen.
Ein FPGA (feldprogrammierbares Gate-Array) ist eine be
kannte integrierte Schaltung, deren Funktionalität in Software
selbst programmiert und verändert werden kann. Da FPGAs wohl
bekannt und kommerziell erhältlich sind (zum Beispiel der VIRTUALOGIC
SLI EMULATOR von IKOS Systems, Inc.), werden deren De
tails zur Klarheit weggelassen. FPGAs sind in konfigurierbaren
Hardware-Systemen nützlich. Das heißt, FPGAs können eine Hard
ware-Maschine bereitstellen, deren Funktionalität sich als Re
aktion auf Programmieren durch Software ändern kann.
Konfigurierbare Hardwaresysteme sind auf unterschiedliche
Arten verwendet worden. Frühere Verwendungen von konfigurier
barer Berechnung sind häufig auf Anwendungen gerichtet gewesen,
die rechenintensiv sind und einheitliche Daten aufweisen. Frü
here konfigurierbare Berechnungsanwendungen sind daher im all
gemeinen dadurch gekennzeichnet gewesen, daß die programmier
bare Logik der FPGAs typischerweise aus einer großen Anzahl von
parallelen Datenwegen und sehr geringer Steuerung besteht. Mit
anderen Worten haben konfigurierbare Berechnungsanwendungen nur
einen einfachen Steuerablauf verwendet.
Die Boolesche SAT ist ein Problem, das mehr als einen ein
fachen Steuerablauf erfordert, und ein erstes konfigurierbares
Hardware-System zum Implementieren der Booleschen SAT wurde
durch dieselben Erfinder in der am 28. August 1997 eingereichten
US-Patentanmeldung 08/919,282 vorgeschlagen, die hierin in ih
rer Gesamtheit als Verweisquelle aufgenommen wird. Dieses erste
SAT-lösende konfigurierbare Hardware-System zeichnete sich
durch eine SAT-Lösungsvorrichtung aus, die allgemein auf dem
Davis-Putnam-Algorithmus beruht. Der Davis-Putnam-Grundalgo
rithmus sorgt für eine Rückwärtsverarbeitung, die chronologisch
ist. Das heißt, der Algorithmus verarbeitet zu der zuletzt zu
gewiesenen Variablen rückwärts.
Die Erfinder kennen zwei andere Vorschläge zur Lösung von
SAT unter Verwendung von rekonfigurierbarer Hardware:
- - T. Suyama, M. Yokoo, und H. Sawada. Solving Satisfiability Problems on FPGA's. In 6th Int'1 Workshop on Field-Pro grammable Logic and Applications, Sept. 1996.
- - M. Abramovici und D. Saab. Satisfiability on Reconfigurable Hardware. In Seventh International Workshop on Field Pro grammable Logic and Applications, Sept. 1997.
Suyama u. a. (Suyama im folgenden) schlagen ihren eigenen
SAT-Algorithmus vor, der kein Davis-Putnam-Verfahren ist. Im
Suyama-Algorithmus weist jede Variable in der SAT-Formel immer
einen gewissen zugewiesenen Wert auf. Der Suyama-Algorithmus
fährt fort, indem er von einem vollständig definierten Satz von
Werten zu einem anderen vollständig definierten Satz von Werten
übergeht. Die Autoren von Suyama schlagen Heuristik vor, um den
Suchraum einzuschränken, geben jedoch zu, daß die Anzahl von
Zuständen, die in ihrem Verfahren aufgesucht werden, achtmal
größer als das Davis-Putnam-Grundverfahren sein kann. Zusätz
lich erfordert das Suyama-Verfahren einen Maximum-Rechner und
einen komplexen Regelprüfer, was es sehr hardwareressourcenin
tensiv macht.
Der oben genannte Vorschlag von Abramovici u. a. (Abramovici
im folgenden) ist ebenfalls keine Implementierung des Davis-
Putnam-SAT-Algorithmus. Der Abramovici-Vorschlag ist im Grunde
eine Implementierung eines auf PODEM beruhenden Algorithmus in
rekonfigurierbarer Hardware. Ein auf PODEM beruhender Algorith
mus setzt voraus, daß eine erfüllende Zuweisung für die gesamte
CNF-Formel gefunden werden kann, indem Werte einem vordefinier
ten Teilsatz von Variablen in der Formel zugewiesen werden. Für
mehr Information über diesen Algorithmustyp, siehe das folgende
Dokumente das hierdurch wegen seiner nützlichen Hintergrundin
formation als Verweisquelle aufgenommen wird:
- - P. Goel. An Implicit Enumeration Algorithm to Generate Tests for Combinational Logic Circuits. IEEE Transactions on Computers, C30(3): 215-222, März 1981.
Dies findet eine direkte Anwendung in dem SAT-Problem, das
in der ATPG-Domäne erzeugt wird, da die getestete Schaltung
wohldefinierte Haupteingänge und -Ausgänge aufweist, und da der
Testvektor an die Haupteingänge angelegt werden muß, wobei das
Ergebnis an einem Hauptausgang beobachtet wird. Der Abramovici-
Vorschlag kann daher keine generische CNF-Formel direkt behan
deln.
Ein anderer Nachteil von PODEM (und folglich Abramovici)
ist es, daß es,obwohl die Anzahl der Variablen im SAT-Entschei
dungsbaum vermindert wird, nicht notwendigerweise eine Vermin
derung der Anzahl von Zuständen gibt, die während der Suche auf
gesucht werden. Es ist gezeigt worden, daß das Gewinnen von Be
ziehungen zwischen internen Variablen in effizienten Daten
strukturen von Davis-Putnam gegenüber PODEM den aufgesuchten
Zustandsraum reduziert und die Ausführungszeit bedeutend redu
ziert.
Ein weiterer Nachteil des Abramovici-Vorschlages sind die
Hardware-Anforderungen. Diese Anforderungen schließen ein: (i)
getrennte Schaltungen zur Vorwärts- und Rückwärtsimplikation,
von denen jede einige Male größer als die ursprüngliche Schal
tung ist, (ii) eine komplexe Steuerschaltung mit 2n Eingängen,
2n Ausgängen und 3 n-Bit-Registern, wobei n die Anzahl der
Haupteingänge ist, (iii) einen sehr großen Stack, der n breit
und n tief ist, (iv) und zwei Kopien der gesamten ursprünglichen
Schaltung, um einen Test auf einen Fehler zu erzeugen. Obwohl
die Autoren des Abramovici-Vorschlages zeigen, daß die Größe
des Stacks potentiell reduziert werden kann, geht eine solche
Verminderung mit den Kosten eines beträchtlich erhöhten Codier- und
Decodierschaltungskomplexes einher. Folglich ist der Abra
movici-Vorschlag darin nachteilig, daß die Hardware-Anforderun
gen sehr groß sind. Wenn eine große Schaltung getestet wird,
überfordert dies die gegenwärtige Chipintegrations- oder Logik
emulationsgrenzen. Folglich sind die Hardware-Kosten um zwei
Schaltungskopien zusätzlich zu Stacks und anderen Steuerstruk
turen zu erhalten, groß.
Die meiste Software zur SAT-Lösung beruht heutzutage auf
dem Davis-Putnam-Algorithmus. Neuere Software-Implementierun
gen des Davis-Putnam-Algorithmus haben ihn auf verschiedene
Weise verbessert, während derselbe grundlegende Ablauf aufrecht
erhalten wird. Um mehr über die Verbesserungen zu erfahren,
siehe die folgenden Dokumente, von denen jedes als Verweis
quelle wegen seiner nützlichen Hintergrundinformation aufgenom
men wird:
- - T. Larrabee. Test Pattern Generation Using Boolean Satis fiability. In IEEE Transactions on Computer-Aided Design, Ausgabe 11, Seiten 4-15, Januar 1992.
- - S. Chakradhar, V. Agrawal und S. Rothweiler. A transitive closure algorithm for test generation. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 12(7): 1015-1028, Juli 1993.
- - P. Stephan, R. Brayton und A Sangiovanni-Vincentelli. Com binational Test Generation Using Satisfiability. Department of Electrical Engineering and Computer Sciences, University of California at Berkeley, 1992. UCB/ERL Memo M92/112.
- - J. Silva und K. Sakallah. GRASP-A New Search Algorithm for Satisfiability. In IEEE ACM International Conference on CAD-96, Seiten 220-227, Nov. 1996.
Der Beitrag der GRASP-Arbeit ist beachtenswert, da sie
nichtchronologische Rückwärtsverarbeitung und eine dynamische
Klauselhinzufügung anwendet, um den Suchraum weiter einzu
schränken. Die oben genannten Dokumente, die die Verbesserungen
am Davis-Putnam-Algorithmus betreffen, sind auf Software-Imple
mentierungen gerichtet. Es gibt einen Bedarf für die Implemen
tierung solcher Verbesserungen in rekonfigurierbarer Hardware,
jedoch haben keine früheren Bemühungen die erforderliche kom
plexe Ablaufsteuerung erfolgreich erreicht. Der Steuerablauf,
der mit nichtchronologischer Rückwärtsverarbeitung verbunden
ist, ist sehr komplex. Nach bestem Wissen der Erfinder sind we
der der Suyama- noch der Abramovici-Vorschlag tatsächlich über
haupt auf einer Hardware-Plattform implementiert worden, und es
sind bis jetzt nur Simulationsergebnisse präsentiert worden.
Die Erfindung ist eine Klasse eingabespezifischer konfigu
rierbarer Hardware-Anwendungen, die sich aggressiv die zuneh
menden Integrationsstufen und Rekonfigurierbarkeit von FPGAs
nutzbar macht, indem sie schablonenbetriebene Hardware-Gestal
tungen für jedes Problem oder jeden Datensatz, der gelöst wird,
durchführt.
Eine beispielhafte Ausführungsform der Erfindung ist eine
neuartige SAT-Lösungsvorrichtung. Die SAT-Lösungsanwendung
konfigurierbarer Berechnung wurde ausgewählt, weil sie die Un
terschiede zwischen früheren Anwendungen konfigurierbarer Be
rechnung und dem erfindungsgemäßen Verfahren hervorhebt. Ins
besondere ist die SAT-Lösung eine suchintensive Anwendung, wo
hingegen frühere Verwendungen konfigurierbarer Berechnung sich
auf Anwendungen gerichtet haben, die rechenintensiv sind und
einheitliche Daten aufweisen. Frühere konfigurierbare Berech
nungsanwendungen haben sich auf das Letztgenannte konzentriert,
wobei die programmierbare Logik typischerweise aus einer großen
Zahl paralleler Datenwege und sehr geringer Steuerung bestand.
Folglich zeigt die beispielhafte SAT-Lösungsvorrichtung, als
eine Ausführungsform, ein Verfahren der Verwendung konfigurier
barer Berechnung für Algorithmen mit komplexem Steuerablauf. Es
wird erkannt werden, daß die Ausführungsform lediglich bei
spielhaft für die breitere Erfindung des Implementierens eines
komplexen Steuerablaufes in rekonfigurierbarer Hardware ist.
Frühere Versuche, konfigurierbare Berechnung in Anwendungen
zu verwenden, haben Implementierungen mit ziemlich einfachen
datenzentrischen verkürzten Gestaltungen bereitgestellt. Diese
Erfindung sorgt für eine Implementierung komplexer Steuerstruk
turen. Wohingegen die Suchalgorithmen, die bisher durch konfi
gurierbare Berechnung implementiert worden sind, im allgemeinen
einfache Signalverarbeitungspipelines aufweisen, offenbart die
Erfindung, wie ein Baumsuchalgorithmus mit einer Hardware-Aus
führung nichtchronologischer Rückwärtsverarbeitung implemen
tiert werden kann, die ähnlich zu jener ist, die in Software-
SAT-Lösungsvorrichtungen zu sehen ist. Dies erfordert komplexe
Steuerstrukturen, um die Rückwärtsverarbeitungsschritte zu ver
walten.
Ein weiterer Grund dafür, daß die SAT-Lösungsvorrichtung
nützlich für die Lehre der Erfindung ist, ist es, daß es wahr
scheinlich ist, daß jede Suchstrategie eine beträchtliche Menge
von Logikoperationen auf Bitebene verwendet. Dieser Aspekt
nutzt die Logikparallelität auf Bitebene direkt aus, die durch
programmierbare Logik angeboten wird, und stellt eine Berech
nungsbeschleunigung bereit.
Der Ausdruck "eingabespezifische" konfigurierbare Hard
ware-Anwendung bedeutet die Verwendung konfigurierbarer Hard
ware (z. B. FPGAs), um Berechnungen zu beschleunigen, die auf
einem spezifischen Problem beruhen. Das heißt, ausgehend von
einer allgemeinen Lösungsschablonengestaltung, sorgt die Erfin
dung für die Spezialisierung der Beschleunigervorrichtungs
gestaltung auf die besondere SAT-Formel, die gelöst wird. Folg
lich wird die Hardware konfiguriert, um die besonderen Probleme
zu lösen, die gelöst werden müssen (d. h. die "Eingabe"). Da die
Hardwarekonfiguration auf die Eingabe oder das Problem zuge
schnitten ist, erwachsen größere Vorteile als in der Situation,
in der die Hardware allgemeiner konfiguriert ist.
Andere Ausführungsformen der Erfindung schließen das neu
artige nichtchronologische Verfahren ein, wie es auf Suchpro
bleme im allgemeinen angewandt wird; wie es auf SAT-Probleme im
besonderen angewandt wird; wie es in einem Computersystem aus
geführt wird, das konfigurierbare Hardware aufweist; wie es in
einem Computersystem ohne konfigurierbare Hardware ausgeführt
wird; und wie es in Softwareanweisungen auf einem computerver
wendbaren Medium ausgeführt wird.
Fig. 1 zeigt einen Pseudocode für einen grundlegenden Suchal
gorithmus.
Fig. 2 zeigt eine Schaltung zur Implikation und Konfliktdetek
tion.
Fig. 3 zeigt eine globale Schaltungstopologie.
Fig. 4 zeigt ein Zustandsdiagramm für eine Maschine mit chro
nologischer Rückwärtsverarbeitung.
Fig. 5 zeigt ein Zustandsdiagramm für eine Maschine mit nicht
chronologischer Rückwärtsverarbeitung.
Fig. 6 zeigt ein Suchbeispiel für grundlegende Rückwärtsverar
beitung.
Fig. 7(a) und 7 (b) zeigen zwei Suchbeispiele für nicht
chronologische Rückwärtsverarbeitung. Insbesondere
zeigt Fig. 7(a) den Algorithmus im Hardware-Algorithmus
der Erfindung, und Fig. 7(b) zeigt einen in GRASP ver
wendeten Software-Algorithmus.
Das Boolesche Erfüllbarkeits-(SAT-) Problem ist ein wohl
bekanntes Zwangserfüllungsproblem mit vielen Anwendungen bei
computergestützter Gestaltung integrierter Schaltungen, wie z. B.
Testerzeugung, Logikprüfung und Timinganalyse. Bei einer gege
benen Booleschen Formel ist die Aufgabe entweder (a) eine Zu
weisung von 0-1 Werten zu den Variablen zu finden, so daß die
Formel sich als wahr berechnet, oder (b) festzustellen, daß eine
solche Zuweisung nicht existiert.
Die Boolesche Formel wird typischerweise in Konjunktivnor
malform (CNF) ausgedrückt, die auch als Summenproduktform be
zeichnet wird. Jede Boolesche Formel kann in CNF ausgedrückt
werden. In dieser Form ist ein Summenausdruck (Klausel) in der
CNF eine Summe von einzelnen Literalen, wobei ein Literal eine
Variable oder deren Negation ist. Eine n-Klausel ist eine Klau
sel mit n Literalen. Zum Beispiel ist (vi + vj + vk) eine 3-Klausel.
Damit sich für die gesamte Formel 1 ergibt, muß jede Klausel
erfüllt werden, d. h. 1 ergeben.
Eine Zuweisung von 0-1 Werten zu einem Teilsatz von Varia
blen (als partielle Zuweisung bezeichnet) könnte einige Klau
seln erfüllen und andere unbestimmt lassen. Zum Beispiel würde
eine Zuweisung von vi = 1 (vi +vj + vk) erfüllen, während vi = 0
die Klausel unbestimmt läßt. Wenn eine unbestimmte Klausel in
sich nur ein nichtzugewiesenes Literal aufweist, muß sich die
ses Literal zu 1 berechnen, um die Klausel zu erfüllen. In einem
solchen Fall heißt es, daß die entsprechende Variable zu jenem
Wert impliziert ist. Zum Beispiel impliziert die partielle Zu
weisung vi = 0, vk = 0, daß vj = 0. Eine Variable, die nicht
impliziert ist, wird als frei betrachtet. Ein Konflikt oder Wi
derspruch tritt auf, wenn der zu einer Variablen implizierte
Wert sich von dem Wert unterscheidet, der vorher zu jener Va
riablen impliziert oder zugewiesen worden ist. Die Detektion
eines Konflikts läßt darauf schließen, daß die entsprechende
partielle Zuweisung kein Teil irgendeiner gültigen Lösung sein
kann.
Die meisten gegenwärtigen SAT-Lösungsvorrichtungen beruhen
auf dem Davis-Putnam-Algorithmus, wie in Fig. 1 dargestellt.
Das folgende wird wegen seinem nützlichen Hintergrund zu diesem
Thema als Verweisquelle aufgenommen: M. Davis und H. Putnam, A
Computing Procedure for Quantification Theory, Journal of the
ACM, 7 :201-215, 1960. Der Grundalgorithmus geht von einer lee
ren partiellen Zuweisung aus. Er fährt fort, indem er jeweils
einen Wert von 0 oder 1 einer freien Variable zuweist. Nach je
der Zuweisung stellt der Algorithmus die direkten und transi
tiven Implikationen jener Zuweisung auf andere Variablen fest.
Wenn kein Widerspruch während der Implikationsprozedur festge
stellt wird, wählt der Algorithmus die nächste freie Variable,
und wiederholt die Prozedur. Andernfalls versucht der Algorith
mus eine neue partielle Zuweisung, indem er das Komplement der
zuletzt zugewiesenen Variable bildet, für die bisher nur ein
Wert ausprobiert worden ist. Dieser Schritt wird Rückwärtsver
arbeitung genannt. Der Algorithmus endet, wenn keine freien Va
riablen verfügbar sind und keine Widersprüche angetroffen wor
den sind (was darauf schließen läßt, daß alle der Klauseln er
füllt worden sind und eine Lösung gefunden worden ist), oder
wenn alle möglichen Zuweisungen erschöpft worden sind. Der Al
gorithmus ist darin vollständig, daß er eine Lösung finden wird,
wenn sie existiert.
Das Bestimmen von Implikationen ist entscheidend für ein
Einschränken des Suchraums, da (1) es dem Algorithmus gestat
tet, ganze Bereiche des Suchraums, die widersprüchlichen par
tiellen Zuweisungen entsprechen, zu überspringen, und (2) jede
implizierte Variable einer freien Variablen weniger entspricht,
an der die Suche ausgeführt werden muß. Leider ist das Detek
tieren von Implikationen in Software sehr langsam, da jede Klau
sel, die die neu zugewiesene oder implizierte Variable enthält,
abgetastet und sequentiell aktualisiert wird, wobei der Prozeß
wiederholt wird, bis keine neuen Implikationen detektiert wer
den.
Die für den Algorithmus zentrale Implikationsprozedur ist
sowohl parallelisierbar als auch auf Grundverknüpfungsglieder
abbildbar. Die gesamte Hardware-Architektur der Erfinder ist so
gestaltet, daß diese Parallelität ausgenutzt wird. Im folgenden
wird die Abbildung des Davis-Putnam-Algorithmus auf rekonfigu
rierbare Hardware in einer formelspezifischen Weise detailliert
dargelegt.
Analog zu Software weist die Hardware-Implementierung der
Erfinder des Davis-Putnam-Algorithmus zwei Teile auf: (i) die
Implikationsschaltung, und (ii) eine Zustandsmaschine, um die
auf Rückwärtsverarbeitung beruhende Untersuchung des Suchraums
zu verwalten. Eine SAT-Formel vorausgesetzt werden beide Hard
ware-Module automatisch erzeugt.
Die Beschleunigung gegenüber Software rührt von der Imple
mentierung der Erfinder der Implikationsschaltung her. Im Ge
gensatz zu Software findet diese Schaltung alle direkten Impli
kationen einer neu zugewiesenen oder aller neu implizierten Va
riablen in einem einzigen Taktzyklus. Folglich können alle
transitiven Implikationen einer neuen Variablenzuweisung in ei
nem kleinen Bruchteil der Taktzyklen bestimmt werden, die bei
Software erforderlich sind.
In der Erfindung weist jede Variable eine Implikations
schaltung auf.
Fig. 2a und Fig. 2b zeigen die Details einer beispielhaften
Implikationsschaltung. Der Zustand jeder Variablen in der
Schaltung wird durch die Werte codiert, die durch seine Literale
angenommen werden. Wenn eine Variable v gegeben ist, hat die
Variable v, wenn ihr Literalpaar (v,v) den Wert (0,0) aufweist,
weder durch Implikation noch durch Zuweisung einen Wert zuge
wiesen bekommen und ist frei. Wenn sie den Wert (1,0) oder (0,1)
aufweist, ist zu verstehen, daß die Variable v jeweils den Wert
1 oder 0 aufweist. Wenn schließlich (v,v) den Wert (1,1) an
nimmt, gibt es einen Widerspruch, da die Variable v nicht
gleichzeitig die Werte 1 und 0 annehmen kann.
Die Rolle der Implikationsschaltung ist es, den implizier
ten Wert jedes Literals zu bestimmen. Ein Literal ergibt 1, wenn
es entweder zu 1 impliziert oder 1 zugewiesen ist. In der Schal
tung ist der Wert jedes Literals daher das Boolesche ODER seiner
implizierten und zugewiesenen Werte. Es tritt ein Widerspruch
auf, wenn beide Literale jeder Variable 1 werden. Das Wider
spruchssignal wird als das Boolesche ODER des UNDs jedes Paares
von Literalen erzeugt.
Um den implizierten Wert eines Literals zu bestimmen, muß
die Schaltung die Beziehungen zwischen Variablen zusammenfas
sen, die sich aus den Klauseln in der CNF-Formel ergeben. Die
Schaltung wird normalerweise für jede Variable unterschiedlich
sein.
Eine beispielhafte Implikationsschaltung für ein Literal a
wird nun unter Bezugnahme auf Fig. 2a beschrieben. Wenn die
Klauseln (c + a) (d + a) (b + c + a) (e + a) (c + a) gegeben sind, kann ge
schlossen werden, daß dann, wenn c = 1, oder wenn d = 1, oder
wenn b = 1 und c = 0, a den Wert 1 annehmen muß, d. h. a ist zu
1 impliziert. Entsprechend ist, wenn e = 0 oder c = 0, a zu 0
impliziert. In diesem Beispiel würde die Gleichung für den im
plizierten Wert des Literals a aimp = c + d + bc sein, wie in Fig. 2a
gezeigt. c, d, b und c sind die Literale für die entsprechen
den Variablen. Entsprechend würde die Gleichung für das Literal
a aimp = e + c sein.
Eine beispielhafte Implikationsschaltung für das Literal c
wird nun unter Bezugnahme auf Fig. 2b beschrieben. Wenn diesel
ben fünf Klauseln (c + a) (d + a) (b + c + a) (e + a) (c + a) gegeben sind,
kann aus der ersten Klausel geschlossen werden, daß dann, wenn
a den Wert 0 annimmt, c zu 1 impliziert ist. Die zweite Klausel.
Die zweite Klausel impliziert c nicht. In der dritten Klausel
kann geschlossen werden, daß dann, wenn a = 0 und b = 0, c zu
1 impliziert ist. Die vierte Klausel impliziert c nicht. Es kann
aus der fünften Klausel geschlossen werden, daß dann, wenn a = 0
ist, c zu 1 impliziert ist. Die Gleichung für den implizierten
Wert des Literals c würde cimp = ab + a sein; diese Gleichung spie
gelt sich in den Verknüpfungsgliedern der Fig. 2b wider. Die
Gleichung für das Literal c würde cimp = a sein. Fig. 2b zeigt
zur Veranschaulichung a als die einzige Eingabe zu einem ODER-Glied.
Folglich variiert die Implikationsschaltung für jedes Li
teral, abhängig von den CNF-Klauseln im zu lösenden Problem.
Selbst das kleine Beispiel oben weist eine Schleife in den
Implikationsabhängigkeiten auf, da die Werte der Literale a und
c voneinander abhängig sind. Theoretisch kann die gesamte Schal
tung zur Berechnung der Werte aller Literale in der Formel ohne
irgendwelche Flipflops implementiert werden, trotz des Vorhan
denseins solcher Schleifen. Da die Schleifen alle nichtinver
tierend sind, gewährleistet die Kombinationsschaltung, daß sie
zu korrekten Werten konvergiert, aber es kann extrem lange Korn
binationswege und sich daraus ergebende lange Zykluszeiten ge
ben.
Um diese Probleme zu vermeiden, wird eine Schaltung verwen
det, in der jedes Literal durch ein getaktetes D-Flipflop zwi
schengespeichert wird, bevor es zurückgeführt wird. Während je
des Taktzyklus bestimmt die Schaltung parallel die direkten Im
plikationen aller Variablen, die im vorhergehenden Zyklus zu
gewiesen oder impliziert wurden. Die Prozedur endet, wenn keine
neuen Implikationen während eines Taktzyklus detektiert werden.
Neue Implikationen werden detektiert, indem eine EXKLUSIV-ODER-Ver
knüpfung der Eingabe und Ausgabe des D-Flipflops für jedes
Literal vorgenommen wird. Wenn irgendeines der EXKLUSIV-ODER-Glie
der eine Ausgabe von 1 aufweist (d. h. LChange 1 ist), muß
die Schaltung einen weiteren Taktzyklus durchlaufen. Die Anzahl
von Taktzyklen vom Anfang der Implikationsprozedur mit der
jüngsten Variablenzuweisung bis zur Erzeugung des Vollendungs
signals ist potentiell sehr viel kleiner als bei Software, da
eine potentiell größere Anzahl neuer Implikationen in jedem
Taktzyklus erzeugt wird, und alle der folgenden direkten Impli
kationen, die sich aus diesen neu implizierten Variablen erge
ben, sofort im nächsten Taktzyklus parallel bestimmt werden.
Diese Parallelität ist in der Praxis ziemlich beachtlich: für
das aim-100-6_0-yes1-1-Beispiel in der DIMACS-Reihe, ergibt
dieses Verfahren einen Mittelwert von 41,9 Parallelklauselbe
rechnungen pro Zyklus. In jenem Beispiel werden 395 Klauseln in
einem einzigen Zyklus effektiv verarbeitet. Diese Zahlen sind
typisch für andere Leistungsvergleiche.
Zwei wichtige Merkmale der erfindungsgemäßen Schaltungsor
ganisation sind es, daß (i) eine getrennte Zustandsmaschine für
jede Variable implementiert wird, (ii) die Reihenfolge, mit der
Variablen zugewiesen werden, im voraus festgelegt wird. Dement
sprechend nimmt die erfindungsgemäße globale Schaltungstopolo
gie die in Fig. 3 gezeigte Form an. Jeder Kasten in der Figur
enthält die Literalberechnungsschaltung und die Zustandsma
schine für jede Variable. Diese verteilte Topologie hält die
globalen Signale auf einem Minimum und verringert die Hardware-
Kosten. Auf jeden Fall übt nur eine Zustandsmaschine die Kon
trolle aus. Sobald jene Zustandsmaschine die Verarbeitung be
endet hat, bestätigt sie Eor (d. h. Freigabesignal zum Abgeben
nach rechts), um die Kontrolle zur Zustandsmaschine auf der
rechten Seite zu übertragen (wenn bei der Berechnung vorwärts
verarbeitet wird) oder sie bestätigt Eol (d. h. Freigabesignal
zum Abgeben nach links), die Kontrolle nach links (wenn rück
wärtsverarbeitet wird). Jede Zustandsmaschine weiß, ob ihre Va
riable zugewiesen worden ist, impliziert oder frei ist.
Die Zustandsmaschine für eine einzelne Variable wird in
Fig. 4 gezeigt. Die fünf Zustände in der Zustandsmaschine werden
durch drei Bit codiert. Jede Zustandsmaschine ist im wesentli
chen identisch. Zwei Bit entsprechen den Werten der positiven
und negativen Literale ihrer Variable. Das dritte Bit zeigt an,
ob diese besondere Zustandsmaschine aktiv ist.
Die Eingänge zu jeder Zustandsmaschine schließen Eil (d. h.
Freigabesignal Eingehen von links), Eir (Freigabesignal Eingehen
von rechts), GContra (das globale Widerspruchssignal), GChange
(das globale Wechselsignal) und GClear (das globale Signal, um
alle Flipflops rückzusetzen) ein. Jede Zustandsmaschine wird in
üblicher Weise durch ein gemeinsames Taktsignal getaktet.
Die Ausgänge von jeder Zustandsmaschine schließen (die be
reits erwähnten) Eol und Eor, LContra (das lokale Widerspruchs
signal), LChange (das lokale Wechselsignal), LClear (das lokale
Löschsignal) ein. In Fig. 3 werden die Eingänge und Ausgänge
für jede Zustandsmaschine gezeigt. Die Maschine vi-1 ist links
von der Maschine vi; die links von der Maschine vi+1 ist. Obwohl
es der Klarheit willen nicht gezeigt wird, werden alle LChange-
Ausgänge miteinander ODER-verknüpft, um GChange zu erzeugen;
werden alle LContra-Ausgänge miteinander ODER-verknüpft, um
GContra zu erzeugen; und werden alle LClear-Ausgänge miteinander
ODER-verknüpft, um GClear zu erzeugen. Ebenfalls der Klarheit
willen nicht gezeigt wird, daß der GChange-Eingang jeder Ma
schine gemeinsam ist, wie es der GContra-Eingang und der GClear-
Eingang sind.
Auch wird in den Figuren nicht gezeigt, daß es ein Impli
kationssignal gibt. Man erinnere sich, daß jede Maschine über
wacht, ob seine Variable frei, zugewiesen oder impliziert ist.
Wenn ein Wert von 1 das Ergebnis für entweder vimp oder vimp ist,
dann ist die Variable impliziert. Ein lokales Implikationssi
gnal kann folglich so verstanden werden, daß es innerhalb einer
bestimmten Zustandsmaschine aus vimp + vimp erhältlich ist. Das
lokale Implikationssignal ist darin nützlich, daß es der Zu
standsmaschine erlaubt, schnell durch Zustände zu springen, wo
ein Wert einer Variablen schon impliziert ist.
In Fig. 4 wird die folgende Konvention verwendet. Nahe bei
jeder Zustandsübergangslinie erscheint eine Legende. Jede Le
gende hat das Format Eingabe/Ausgabe. Das heißt, die Einträge,
die dem Schrägstrich (/) vorangehen, sind die Eingaben, die er
forderlich sind, um die Zustandsmaschine zu veranlassen, von
ihrem gegenwärtigen Zustand zu dem Zustand über zugehen, der
durch die Zustandsübergangslinie angezeigt wird. Die Einträge,
die dem Schrägstrich folgen, sind die Ausgaben, die als ein Er
gebnis des Zustandsübergangs geliefert werden. Insbesondere
sind diese Ausgaben Eol und Eor.
Es gibt zum Beispiel eine Zustandsübergangslinie vom init-
Zustand zum active 1-Zustand. Die Legende, die nahe dieser Zu
standsübergangslinie erscheint, ist Eil()/00. Diese Le
gende bedeutet, daß dann, wenn sich die Zustandsmaschine im init-
Zustand befindet, wenn Eil 1 wird und es keine Werte gibt, die
für die Variable v impliziert sind, der Zustand der Zustands
maschine zum active 1-Zustand übergeht und die Zustandsmaschine
0 für Eol und 0 für Eor ausgibt (wodurch die gegenwärtige Zu
standsmaschine als die aktive Zustandsmaschine gehalten wird).
Vorwärtsberechnung: Nach der Initialisierung befinden sich
alle Zustandsmaschinen im init-Zustand. Wenn eine Zustandsma
schine ein Freigabesignal erhält, werden die gegenwärtigen Li
teralwerte und die Freigaberichtung verwendet, um festzustel
len, ob ein neuer Wert geltend gemacht wird, und welcher neue
Wert geltend gemacht wird. Wenn die Kontrolle von der linken
Seite übertragen wird (d. h. Eil = 1) und der Wert der Variable
gegenwärtig frei ist (d. h. sie sich im init-Zustand befindet und
kein Wert impliziert ist; (v,v) weist den Wert (0,0) auf), dann
macht sie den Wert 1 geltend (der zu active 1 übergegangen ist)
und bestimmt alle der transitiven Implikationen jener Zuwei
sung. Das heißt, (v,v) wird auf (1,0) gesetzt. Auf Fig. 2a be
zugnehmend, würde z. B. das Setzen von (a,a) auf (1,0) erreicht,
indem astate = 1 und astate = 0 gesetzt werden. Während die Impli
kationen sich noch setzen (d. h. solange GChange geltend gemacht
wird) und es keinen Widerspruch gibt (d. h. solange, wie GContra
0 ist), wartet der Prozeß, indem er wiederholt in denselben Zu
stand übergeht. Sobald sich die Implikationen gesetzt haben,
kann es Widersprüche geben. Wenn dem so ist, (d. h. GContra gel
tend gemacht wird) wird sie statt dessen den Wert 0 ausprobieren
(active 0) und den Implikationsschritt wiederholen. Wenn nicht,
überträgt sie die Kontrolle an die Zustandsmaschine zu ihrer
Rechten und geht in den passive 1-Zustand über. Von active 0 wird
sie, wenn ein Widerspruch detektiert wird, rückwärts verarbei
ten. Ihr Zustand wird auf init rückgesetzt und die Kontrolle wird
nach links weitergegeben. Andererseits geht sie, wenn sich Im
plikationen ohne einen Widerspruch gesetzt haben, von active 0
zu passive 0 und gibt die Kontrolle nach rechts weiter.
Wenn, wie oben, die Kontrolle an eine Zustandsmaschine von
links übertragen wird, jedoch ihr Variablenwert schon durch
eine vorhergehende Zuweisung impliziert worden ist (d. h. ent
weder vimp = 1 oder vimp = 1), dann gibt sie beim nächsten Takt
zyklus lediglich die Kontrolle an die Zustandsmaschine zu ihrer
Rechten weiter und verbleibt im init-Zustand.
Rückwärtsverarbeitung: Wenn die Kontrolle auf eine Zu
standsmaschine von der rechten Seite übertragen wird, dann ist
infolge eines Widerspruchs das Berechnen eine Rückwärtsverar
beitung, und das Ziel ist es, zu versuchen, eine neue Zuweisung
zu finden, die den Widerspruch vermeidet. In diesem Szenario
gibt es drei mögliche Reaktionen, die wiederum von den gegen
wärtigen lokalen Variablenwerten abhängen.
Erstens, wenn sich die Zustandsmaschine im init-Zustand be
findet (was der Fall sein kann, wenn die Variable während einer
früheren Vorwärtsberechnung durch eine vorhergehende Zuweisung
impliziert worden ist), dann bleibt die Zustandsmaschine im init-
Zustand und gibt die Kontrolle an die Zustandsmaschine zu ihrer
Linken weiter.
Zweitens, wenn der Variablen gegenwärtig der Wert 1 zuge
wiesen ist (d. h. sie sich im passive 1-Zustand befindet), dann
weist sie ihr statt dessen den Wert 0 zu (geht zu active 0), und
bestimmt die Implikationen jener Zuweisung. Wenn kein Wider
spruch gefunden wird, dann ist der Konflikt aufgeklärt worden,
und die Berechnung kann noch einmal fortschreiten, indem diese
Zustandsmaschine die Kontrolle zu ihrer Rechten weitergibt.
Wenn jedoch wieder ein Widerspruch gefunden wird, dann wird sie
auf init rückgesetzt und überträgt die Kontrolle nach links.
Das dritte mögliche Szenario ist es, daß diese Variable
schon den zugewiesen Wert 0 aufweist (d. h. sich im passive 0-Zu
stand befindet). Dies zeigt an, daß der Prozeß schon beide mög
lichen Werte für diese Variable ausprobiert hat; in diesem Fall
geht er in den init-Zustand über, wodurch die Zuweisung seines
Werts freigegeben wird, und verarbeitet rückwärts, indem die
Kontrolle nach links übertragen wird.
Finden einer Lösung: An jeder Stelle in den obigen Beschrei
bungen ist eine Lösung gefunden worden, wenn die am weitesten
rechts liegende Zustandsmaschine weiter versucht, die Kontrolle
nach rechts weiterzugeben. Andererseits, wenn die am weitesten
links liegende Zustandsmaschine versucht, rückwärts zu verar
beiten, indem sie weiter die Kontrolle nach links weitergibt,
dann zeigt dies an, daß keine Lösung für das Problem existiert.
Wenn der Davis-Putnam-Algorithmus zu der zuletzt zugewie
senen Variable rückwärtsverarbeitet, wird seine Rückwärtsver
arbeitung chronologisch genannt. Wenn andererseits ein Algo
rithmus über mehrere vorher zugewiesene Variablen zu einer Va
riablen springt, die mehr als eine Ebene über der gegenwärtigen
Variablen liegt, wird die Rückwärtsverarbeitung nichtchronolo
gisch genannt. Um direkt zu einer vorhergehenden Ebene zu sprin
gen, muß der Algorithmus zuerst feststellen, daß keine Kombi
nation von Werten bei den übersprungenen Variablen zu einer er
füllenden Zuweisung führen wird. Durch intelligentes Springen
über diese Variablen vermeidet der Algorithmus es, die Zeit zu
verschwenden, die es braucht, um diese Variablen explizit ihrer
vorherigen Kombination von Werten zuzuweisen, nur um festzu
stellen, daß alle diese Kombinationen zu einen Widerspruch füh
ren. GRASP ist eine jüngste Implementierung nichtchronologi
scher Rückwärtsverarbeitung in einer SAT-Lösungsvorrichtung.
Die GRASP-Arbeit demonstrierte, daß nichtchronologische Rück
wärtsverarbeitung zu beträchtlichen Verringerungen der Laufzeit
führen kann.
GRASP erhält eine Datenstruktur aufrecht, die als ein Im
plikationsgraph bezeichnet wird, aus dem man die Kette von Im
plikationen ableiten kann, die zu dem Widerspruch führen. GRASP
verwendet diese Datenstruktur, um die Ebene zu identifizieren,
zu der er springen kann.
Es ist sehr schwierig, in rekonfigurierbarer Hardware einen
solchen Implikationsgraph zu implementieren. Dies würde bein
halten, zusätzliche Hardware hinzuzufügen, um die Implikations
schaltungen zu durchgehen, um die Quelle der Konflikte oder Wi
dersprüche zu identifizieren. Es wird daran erinnert, daß die
Erfindung die schnelle Entwicklung einer kundenspezifischen
Hardwareschaltung beinhaltet, um ein spezifisches Problem zu
lösen. Für dieses Verfahren darf es, um im Vergleich zur Ver
wendung von nur Software insgesamt Zeit einzusparen, nicht zu
lange brauchen, die kundenspezifischen Hardwareschaltung anzu
ordnen, und sie darf nicht zu aufwendig hinsichtlich der Hard
ware-Ressourcen sein.
Das erfindungsgemäße Verfahren nutzt die Tatsache aus, daß
infolge der Parallelität das Bestimmen von Implikationen in der
oben genannten Hardware-Implementierung der SAT-Lösungsvor
richtung sehr schnell ist. Insbesondere wenn ein Widerspruch
für beide Zuweisungen einer bestimmten Variablen auftritt, ist
es das Ziel, auf die Variable zurückzukommen, die der gegenwär
tigen Variable am nächsten ist, so daß, indem der Wert zu dieser
früheren Variablen gekippt wird, der Widerspruch dazu gebracht
werden kann, zu verschwinden. Dieses Verfahren spart Zeit, da
der Prozeß zu dieser früheren Variable zurückkommt, ohne eine
Exponentialzahl von Kombinationen von Werten bei den Variablen
ausprobiert zu haben, die übersprungen wurden.
Es wird angenommen, daß vi die Variable ist, für die ein
Widerspruch für beide Zuweisungen zu vi detektiert wurde, wobei
i ihre Ebene ist. Die erfindungsgemäße Prozedur arbeitet sich
die Ebenen hoch, jeweils eine Ebene auf einmal. Auf jeder Ebene
j (< i), ruft die Prozedur die Implikationsroutine zweimal auf,
einmal für jeden Wert für vi, während vj einen gekippten Wert
aufweist. Die Variablen vk zwischen i und j (j < k < i) bleiben
nicht zugewiesen wenn die Implikationsroutine aufgerufen wird,
d. h. beide Literale vk und vk werden auf 0 gesetzt. Der Algo
rithmus muß zu vj rückwärts verarbeiten, wenn ein Nichtwider
spruchsfall für eine der beiden Zuweisungen gefunden wurde.
Wenn beide Zuweisungen von vi einen Widerspruch verursachen,
kann die Variable vj übersprungen werden, und die Prozedur wie
derholt diesen Schritt für die Variable vj-1.
Weiter unten wird diese Operation erläutert, wobei ein de
taillierteres Beispiel verwendet wird, in dem vi verwendet wird,
und in dem diskutiert wird, daß vk gleich vi-1 ist, und diskutiert
wird, daß vj gleich vi-2 ist.
Dies Prozedur erfordert nur 2n Aufrufe der Implikationsrou
tine, wenn der Algorithmus um n Ebenen zurückkommt. Da die Pro
zedur die Implikationsroutine nicht eine Exponentialzahl von
Malen aufruft, und da die Implikationsroutine in Hardware sehr
schnell ist, kann erwartet werden, daß diese Analyse für nicht
chronologische Rückwärtsverarbeitung ebenfalls sehr schnell
ist. Im Vergleich weist GRASP den Organisationszusatz auf, daß
die Implikationsgraph-Datenstruktur aufrechterhalten wird und
sie analysiert wird, wenn ein Widerspruch gefunden wird, aber
er führt nicht die 2n Implikationen aus.
Das folgende einfache Beispiel, das in Beziehung zu Fig. 6
zu verstehen ist, zeigt, wie die erfindungsgemäße Prozedur ar
beitet. Angenommen, es gibt die folgende Formel:
(v1 + v12 + v13) (v1 + v12 + v13) (v1 + v12 + v14) (v1 + v12 + v14) . . .
Es wird an
genommen, daß jede Zuweisung für die Variablen v2-v11 zu keinem
Widerspruch führt. Der grundlegende Suchbaum für diese Formel
wird in Fig. 6 gezeigt. In der Figur stellt jeder durchgezogene
Pfeil das Zuweisen eines neuen Wertes und Bestimmen seiner Im
plikationen dar. Er beginnt, indem v1 = 1 zugewiesen wird und
geht weiter bis v11 = 1. Zuletzt wird v12 = 1 ausprobiert. Dies
führt zu einem Widerspruch, da es erforderlich ist, daß v13
gleichzeitig 0 und 1 ist (aufgrund der ersten beiden Klauseln
der obigen Formel).
Entsprechend führt auch v12 = 0 zu einem Widerspruch (auf
grund auch der dritten und vierten Klauseln oben). Die normale
Rückwärtsverarbeitungsprozedur würde v12 auf unbekannt rückset
zen und sie würde zu v11 rückwärts verarbeiten. Der Konflikt ver
schwindet zeitweilig, wird aber jedesmal wieder auftauchen,
wenn v12 gesetzt wird.
Fig. 7(a) zeigt die Ausführung der erfindungsgemäßen nicht
chronologischen Rückwärtsverarbeitung. Die gepunkteten Pfeile
zeigen ein Überspringen an und ziehen keinerlei Berechnung nach
sich; sie zeigen nur einfach, welche Werte vor einer Implika
tionsberechnung angenommen werden. Die Suche ist dieselbe wie
vor dem Erreichen von v12. Die Rückwärtsverarbeitung unterschei
det sich jedoch. Wenn bei jeder Ebene rückwärts verarbeitet
wird, wird die Implikationsprozedur zweimal aufgerufen. Das
heißt, eine Rückwärtsverarbeitung zu v1 findet, nachdem die Im
plikationsprozedur effektiv nur 22 mal aufgerufen wird, eher
statt als nach 4082 Versuchen mit dem Standardrückwärtsverar
beitungsverfahren. Während dieses einfache Beispiel hauptsäch
lich pädagogisch ist, existiert auch ein dramatisches Beschleu
nigungspotential bei tatsächlichen Leistungsvergleichen. Zum
Beispiel sucht im aim-100-1_6-yes1-1-Leistungsvergleich aus der
SAT-Reihe, die chronologische Rückwärtsverarbeitung 606578 par
tielle Zuweisungen auf, während der nichtchronologische Rück
wärtsverarbeitungsalgorithmus nur 1384 partielle Zuweisungen
aufsucht.
Das neuartige Rückwärtsverarbeitungsverfahren für die re
konfigurierbare Hardware-SAT-Lösungsvorrichtung wird nun auf
eine andere Weise erläutert. Man kann sagen, daß die SAT-Lö
sungsvorrichtung mehrere Zustandsmaschinen aufweist, wobei jede
nur einer der mehreren Variablen in einem Booleschen SAT-Pro
blem entspricht. Die mehreren Variablen werden beruhend auf ei
ner vorherbestimmten Heuristik geordnet, wodurch auch eine An
ordnung der Zustandsmaschinen bereitgestellt wird, wobei die
erste Zustandsmaschine der ersten Variablen entspricht und die
letzte Zustandsmaschine der letzten Variablen entspricht.
Da die Variablen Boolesche sind, kann der Suchraum als ein
Binärbaum mit der ersten Variablen an der Spitze oder höchsten
Ebene betrachtet werden. Die Variable kann als ein Knoten be
trachtet werden. Die beiden Werte, die die Variable annehmen
kann, definieren Zweige, die vom Knoten zu einer nächst tieferen
Ebene abwärts führen. Die Ebene unter der höchsten Ebene enthält
einen Knoten für jeden der Zweige, und alle Knoten auf dieser
Ebene entsprechen der Variable nach der ersten Variable (d. h.
der zweiten Variable). Der Binärbaum geht weiter bis zur unter
sten Ebene, auf der alle möglichen Knoten der letzten geordneten
Variable entsprechen.
Durch Konvention sind die beiden Zweige, die von allen Kno
ten führen, selbst geordnet (d. h. der Zweig, der dem Wert 1 ent
spricht, ist der am weitesten links gelegene, und der Zweig,
der dem Wert 0 entspricht, ist der am weitesten rechts gele
gene). Zur sprachlichen Bequemlichkeit können die beiden Binär
werte so beschrieben werden, daß sie ein erster Wert und ein
zweiter Wert sind. In den Beispielen wird der erste Wert 1 sein
und der zweite Wert 0, obwohl dies sicherlich beliebig ist und
nur der Erläuterung dient. Auch ist der erste Wert durch Vorgabe
der Wert, der einer Variablen zuerst zugewiesen wird, wenn auf
logische Übereinstimmung oder Widerspruch geprüft wird. Folg
lich werden in den Beispielen freie Variablen normalerweise zu
erst dem ersten Wert (von 1) zum Prüfen gegeben, und dann, falls
notwendig, anschließend dem zweiten Wert (von 0) gegeben.
Während der Verarbeitung weist jede Variable einen Zustand
oder eine Bedingung auf, die entweder zugewiesen, impliziert,
oder frei ist. Um Verwirrung mit den Zuständen der Zustandsma
schine zu vermeiden, die unten beschrieben wird, wird der Aus
druck Bedingung üblicherweise verwendet, um zu bezeichnen, ob
eine Variable zugewiesen, impliziert oder frei ist. Folglich
kann eine Variable als in einer freien Bedingung, einer impli
zierten Bedingung oder einer zugewiesen Bedingung befindlich
bezeichnet werden. Wenn die rekonfigurierbare Hardware-SAT-Lö
sungsvorrichtung nach einer Lösung sucht, ist es normal, daß
einige Variablen sich in einer zugewiesenen Bedingung befinden
werden, einige sich in einer implizierten Bedingung befinden
werden, und andere sich in einer freien Bedingung befinden wer
den. Eine logische Gesamtkonsistenz unter den zugewiesenen und
den implizierten Variablen besteht, wenn es keinen Widerspruch
unter ihnen gibt (da freie Variablen keinen logischen Wert auf
weisen, beeinflussen sie die logische Gesamtkonsistenz nicht).
Die zugewiesenen und die implizierten Variablen können zu einem
gegebenen Zeitpunkt im folgenden insgesamt als die logisch be
wertete Netzliste bezeichnet werden.
An einer gegebenen Ebene der Verarbeitung, der Ebene i, be
treffen alle Knoten die Variable vi. Die Ebene über der Ebene i
in Richtung der höchsten Ebene können als Ebene i-1 verstanden
werden, und alle Knoten auf Ebene i-1 betreffen die Variable vi-1.
Die Ebene über Ebene i-1 wird als Ebene i-2 verstanden werden
und enthält Knoten, die die Variable vi-2 betreffen. Eine ent
sprechende Terminologie gilt für Ebenen unter der Ebene i.
Wenn beide möglichen Binärwerte für vi beruhend auf den zu
gewiesenen und die implizierten Werte der anderen der mehreren
geordneten Variablen (d. h. beruhend auf der logisch bewerteten
Netzliste) zu einem logischen Widerspruch führen, ist es klar,
daß weiteres Vorrücken zur niedrigsten Ebene nie eine SAT-Lö
sung liefern würde. Um es zu vermeiden, Zeit damit zu verschwen
den, durch Knoten vorzurücken, die unmöglich eine Lösung lie
fern könnten, wird eine Rückwärtsverarbeitung durchgeführt. Ge
nauer gesagt wird eine nichtchronologische Rückwärtsverarbei
tung durchgeführt, um ein Maximum an Zeit zu sparen. Zur Be
quemlichkeit kann eine Variable vi, für die beide möglichen Bi
närwerte zu einem logischen Widerspruch für die gegenwärtige
logisch bewertete Netzliste führen, im folgenden als eine
Sperrvariable bezeichnet.
Nichtchronologische Rückwärtsverarbeitung kann im Detail
wie folgt durchgeführt werden. Die Sperrvariable wird als eine
Blattvariable festgelegt. Die Blattvariable ist, wie unten zu
sehen sein wird, dadurch gekennzeichnet, daß sie zwischen dem
ersten Wert und dem zweiten Wert geschaltet wird, bis der Wi
derspruch geklärt ist.
Dann wird die Variable vi-1 betrachtet. Die Variable vi-1 wird
gegenwärtig als eine betrachtete Variable der oberen Ebene
oder, zur Bequemlichkeit, als die Rückwärtsverarbeitungsvaria
ble bezeichnet. Es gibt zwei Möglichkeiten, die die Rückwärts
verarbeitungsvariable betreffen. Eine Möglichkeit ist es, daß
die Rückwärtsverarbeitungsvariable den ersten Wert aufweist.
Eine andere Möglichkeit ist es, daß die Rückwärtsverarbeitungs
variable den zweiten Wert aufweist. Jede dieser beiden Möglich
keiten wird der Reihe nach erörtert.
Es wird nun die erste Möglichkeit erörtert. Wenn der Rück
wärtsverarbeitungsvariable schon der erste Wert zugewiesen ist,
dann wird die Rückwärtsverarbeitungsvariable gekippt. Mit an
deren Worten wird der Rückwärtsverarbeitungsvariable der zweite
Wert statt des ersten Wertes zugewiesen. Nachdem der Rückwärts
verarbeitungsvariable der zweite Wert zugewiesen ist, wird
festgestellt, ob es eine Zuweisung der Blattvariablen gibt, die
zu keinem gegenwärtigen Widerspruch führt. Das heißt, die lo
gisch bewertete Netzliste wird mit der Rückwärtsverarbeitungs
variable, die den zweiten Wert aufweist, und mit der Blattva
riable, die den ersten Wert aufweist, auf logische Konsistenz
geprüft. Wenn ein Widerspruch detektiert wird, dann wird die
Blattvariable auf den zweiten Wert gekippt. Dann wird die lo
gisch bewertete Netzliste wieder mit der Rückwärtsverarbei
tungsvariable, die den zweiten Wert aufweist, aber mit der
Blattvariable, die den zweiten Wert aufweist, auf logische Kon
sistenz geprüft. Wenn die Variable vi-1, die zum zweiten Wert
gekippt worden ist, einen Widerspruch für jeden möglichen Wert
der Blattvariable vi liefert, dann wird die Variable der nächst
höheren Ebene (d. h. Variable vi-2) als die Rückwärtsverarbei
tungsvariable gekennzeichnet und wird zur selben Zeit die Va
riable vi-1 in eine freie Bedingung gesetzt.
Es wird nun die zweite Möglichkeit erörtert. Wenn der Rück
wärtsverarbeitungsvariable schon der zweite Wert zugewiesen
ist, dann muß der erste Wert zu einem gewissen vorhergehenden
Widerspruch geführt haben. Wenn der Rückwärtsverarbeitungsva
riable schon der zweite Wert zugewiesen ist, wird daher die
Rückwärtsverarbeitungsvariable nicht gekippt. Statt dessen wird
die Variable der nächst höheren Ebene (d. h. Variable vi-2) als
die Rückwärtsverarbeitungsvariable gekennzeichnet und wird zur
selben Zeit die Variable vi-1 in eine freie Bedingung gesetzt.
Wenn die Variable der nächst höheren Ebene in jeder der bei
den oben erwähnten Möglichkeiten als die Rückwärtsverarbei
tungsvariable gekennzeichnet wird, folgt dieselbe Analyse. Mit
anderen Worten gibt es zwei Möglichkeiten, die die neue Rück
wärtsverarbeitungsvariable betreffen. Eine Möglichkeit ist es,
daß die Rückwärtsverarbeitungsvariable den ersten Wert auf
weist. Eine andere Möglichkeit ist es, daß die Rückwärtsverar
beitungsvariable den zweiten Wert aufweist.
Wie aus der vorhergehenden Erläuterung verstanden werden
wird, beinhaltet der nichtchronologische Rückwärtsverarbei
tungsprozeß, daß eine Sperrvariable detektiert wird und sie als
die Blattvariable gesetzt wird, und dann die Werte der Blatt
variablen variiert werden, ohne jemals eine andere Variable als
die Blattvariable auszuwählen. Um es anders auszudrücken, be
inhaltet der Prozeß, daß der Wert der Blattvariable, aber nicht
die Identität der Blattvariable variiert wird.
Der nichtchronologische Rückwärtsverarbeitungsprozeß be
inhaltet auch, daß die Werte der Rückwärtsverarbeitungsvaria
blen variiert werden, und beinhaltet auch, daß Variablen höhe
rer und höherer Ebene ausgewählt werden, die Rückwärtsverarbei
tungsvariable zu sein, bis der Widerspruch geklärt wird. Um es
anders auszudrücken, beinhaltet der erfindungsgemäße Prozeß,
daß der Wert und die Identität der Rückwärtsverarbeitungsvaria
ble variiert werden.
Die Rückwärtsverarbeitung endet, wenn die logische Konsi
stenz in der gegenwärtigen logisch bewerteten Netzliste er
reicht ist. Nachdem die Rückwärtsverarbeitung endet, wird die
oben erwähnte normale Vorwärtsberechnung unternommen, um eine
Lösung für das SAT-Problem zu identifizieren. Beim Umschalten
von Rückwärtsverarbeitung auf die Vorwärtsberechnung, wird die
Blattvariable in eine freie Bedingung gesetzt. Die Vorwärtsbe
rechnung geht von der gegenwärtigen Rückwärtsverarbeitungsva
riablen nach unten weiter.
Um den obigen neuartigen nichtchronologischen Rückwärtsver
arbeitungsalgorithmus zu implementieren, muß die Zustandsma
schine von der Ausführungsform mit chronologischer Rückwärts
verarbeitung modifiziert werden. Als ein besonders vorteilhaf
ter Aspekt der gegenwärtig bevorzugten Ausführungsform werden
keine neuen globalen Signale hinzugefügt und die Implikations
schaltung wird auch nicht modifiziert.
Die Zustandsmaschine, um die nichtchronologische Rückwärts
verarbeitung durchzuführen, wird in Fig. 5 gezeigt. Sie weist
mehr Zustände und Übergänge auf, um die komplexe Rückwärtsver
arbeitungsprozedur widerzuspiegeln, die vorhergehend skizziert
worden ist. Obwohl die Zustandsmaschine größer geworden ist,
benötigen die zusätzlichen Zustände nur ein Codierbit mehr.
Obwohl die Bedeutung der in Fig. 5 gezeigten Zustandsma
schine in wesentlichen für jene selbsterklärend ist, die auf
diesem Gebiet Bescheid wissen, wird nun eine kurze Erläuterung
von ihr bereitgestellt werden.
Jede Variable beginnt im init-Zustand. Im init-Zustand kann
die Variable vi sich in einer freien Bedingung oder in einer
implizierten Bedingung befinden. Im init-Zustand bewirkt dann,
wenn die Variable nicht impliziert ist (d. h. wenn (vimp + vimp)),
ein Eil-Signal einen Übergang von init zu active 1. Wenn sie sich
in active 1 befindet, wird der Variable vi der erste Wert gegeben,
der in dieser Ausführungsform 1 ist. Nimmt man keinen Wider
spruch an, wird GChange sich im Hochpegelzustand befinden, bis
sich alle Implikationen setzen und der Zustand wird normaler
weise nicht übergehen. Wenn GChange auf einen Tiefpegelzustand
geht, haben sich die Implikationen gesetzt. Kein Widerspruch
bedeutet, daß sich GContra im Tiefpegelzustand befindet. Wenn
sich sowohl GChange als auch GContra im Tiefpegelzustand befin
den, werden die Bedingungen erfüllt, um zu passive 1 überzugehen.
Übergehen zu passive 1 bewirkt auch eine Ausgabe von 0 für Eol und
1 für Eor. Die Ausgabe 1 für Eor aktiviert die Maschine zur Rech
ten, die der Variable vi+1 der nächst tieferen Ebene entspricht.
Wenn sie sich in active 1 befindet, erinnere man sich, daß
der Variable vi der erste Wert gegeben worden ist. Wenn dieser
Wert zu einem Widerspruch mit der logisch bewerteten Netzliste
führt, dann wird das GContra-Signal empfangen. Sobald das GCon
tra-Signal empfangen wird, ob die Implikationen entschieden sind
oder nicht, werden die Bedingungen erfüllt, um zu active 0 über
zugehen. Übergang zu active 0 bewirkt eine Ausgabe von 0 für Eol
und 0 für Eor. Mit anderen Worten führt ein Übergang zu active 0
dazu, daß die gegenwärtig aktive Zustandsmaschine aktiv bleibt.
Wenn sie sich in active 0 befindet, wird der Variable der
zweite Wert gegeben, der in dieser Ausführungsform 0 ist. Wenn
der Variable der zweite Wert gegeben wird, werden die Implika
tionen überall in der logisch bewerteten Netzliste durch jede
Implikationsschaltung bestimmt. Angenommen, die Implikationen
setzen sich ohne Widerspruch, dann wird GChange in den Tiefpe
gelzustand gehen und GContra sich im Tiefpegelzustand befinden.
Diese Signale erfüllen die Bedingungen, um zu passive 0 überzu
gehen. Übergehen zu passive 0 von active 0 bewirkt eine Ausgabe von
0 für Eol und eine Ausgabe von 1 für Eor. Die Ausgabe von 1 für
Eor aktiviert die Maschine zur Rechten, die der Variable vi+1 der
nächst tieferen Ebene entspricht.
Die vorhergehenden Operationen hinsichtlich der Zustände
init, active 1, passive 1, active 0 und passive 0 sind im wesentlichen
dieselben wie in der oben identifizierten Ausführungsform, die
chronologische Rückwärtsverarbeitung verwendet. Die Art, in der
die erfindungsgemäße Ausführungsform mit nichtchronologischer
Rückwärtsverarbeitung sich unterscheidet, wird nun beschrieben
werden.
Es wird angenommen, daß es drei benachbarte Zustandsmaschi
nen in einem größeren Satz von benachbarten Zustandsmaschinen
gibt. Von diesen drei Maschinen entspricht die tiefste der Va
riablen vi; entspricht die Maschine der nächst höheren Ebene vi-1
und entspricht die Maschine der nächsten zunehmend höheren
Ebene der Variablen vi-2. Zur Bequemlichkeit können die drei Ma
schinen als die vi-2-Maschine, die vi-1-Maschine und die vi-Ma
schine bezeichnet werden.
Es wird angenommen, daß während der Vorwärtsberechnung vi-2
der erste Wert 1 ohne Widersprüche zugewiesen wurde und in den
passive 1-Zustand überging, und daß vi-1 und vi dann noch in einer
freien Bedingung waren. Als die vi-2-Maschine zu passive 1 über
ging, gab sie Eor = 1 aus. Dieses Eor von der vi-2-Maschine wurde
durch die vi-1-Maschine als Eil = 1 empfangen. Dieses Signal ver
anlaßte die Maschine vi-1 in den active 1-Zustand überzugehen, in
dem der erste Wert (d. h. 1) vi-1 zugewiesen wurde. Es wird ange
nommen, daß die Implikationen sich ohne Widerspruch (d. h. GCon
tra Tiefpegelzustand) entschieden (d. h. GChange Tiefpegelzu
stand), dann ging die vi-1 Maschine zu passive 1 über und gab, als
sie überging, Eor = 1 aus. Für dieses Beispiel wird auch ange
nommen werden, daß die Zuweisung von vi-1 = 1 die Bedingung von
vi von frei nicht änderte.
Die vi Maschine empfing das Eor von der vi-1-Maschine als Eil
und da vi in einer freien Bedingung war, ging die vi-Maschine
von init zu active 1 über. In active 1 wies die vi-Maschine den ersten
Wert vi zu (d. h. vi = 1). Als der erste Wert vi zugewiesen wurde,
stellten die Implikationsschaltungen fest, ob die logisch be
wertete Netzliste noch logisch konsistent war oder ob vi = 1 einen
Widerspruch lieferte. Für dieses Beispiel wird angenommen, daß
vi = 1 zu einem logischen Widerspruch führt. Folglich gab die
Implikationsschaltung, die den Widerspruch detektierte, LContra = 1
aus. Dieses Signal, das, wie in Fig. 3 gezeigt, mit den
anderen LContra-Signalen ODER-verknüpft wird, führte zu GContra = 1.
Die vi-Maschine ging auf das Empfangen eines hohen Wertes
für GContra hin vom active 1-Zustand zum active 0-Zustand über.
In active 0 wies die vi-Maschine den zweiten Wert vi zu (d. h.
vi = 0). Erneut stellten die Implikationsschaltungen fest, ob
diese Zuweisung einen Widerspruch lieferte. Für dieses Beispiel
wird angenommen, daß vi = 0 zu einem logischen Widerspruch
führte. Mit anderen Worten führten für vi die Zuweisung des er
sten Wertes und des zweiten Wertes beide zu einem logischen Wi
derspruch innerhalb der logisch bewerteten Netzliste. Um es an
ders auszudrücken, war vi dann eine Sperrvariable bezüglich der
gegenwärtigen logisch bewerteten Netzliste. Folglich ist eine
Rückwärtsverarbeitung erforderlich.
Das durch die vi-Maschine als Reaktion auf die Zuweisung des
zweiten Wertes zu vi empfangene GContra-Signal veranlaßte die
vi-Maschine von active 0 in den leaf 1-Zustand überzugehen. Als die
vi-Maschine vom active 0 zum leaf 1-Zustand überging, gab sie Eol = 1
und Eor = 0 aus. Im leaf 1-Zustand setzte die vi-Maschine vi = 1.
Mit anderen Worten wurde die Sperrvariable als die Blattva
riable gesetzt.
Die Zustände in der Zustandsmaschine werden als Hardware in
der konfigurierbaren Hardware implementiert. Die Hardware, die
die vorhergehenden Zustände implementiert, die zu der Identi
fikation einer Sperrvariablen führen, und dazu, sie als eine
Blattvariable zu setzen, können als ein konkretes Beispiel ei
ner Einrichtung zum Identifizieren einer Sperrvariablen als
eine Blattvariable verstanden werden.
Die Eol = 1-Ausgabe durch die vi-Maschine wurde durch die
vi-1-Maschine als Eir = 1 empfangen. Die vi-1-Maschine befand sich
im passive 1-Zustand. Als die vi-1-Maschine Eir = 1 empfing, veran
laßte dies die vi-1-Maschine, in den bk 0 a Zustand überzugehen.
Die vi-1-Maschine ging in den bk 0 a-Zustand im wesentlichen zur
gleichen Zeit über, als die vi-Maschine in den leaf 1-Zustand über
ging. Im bk 0 a-Zustand kippte die vi-1-Maschine vi-1 von 1 auf 0.
Mit anderen Worten wies in bk 0 a die vi-1-Maschine vi-1 = 0 zu.
Folglich ist, wie oben erwähnt, vi-2 = 1 und die vi-2-Maschine
befindet sich in passive 1; vi-1 = 0 und die vi-1 Maschine befindet
sich in bk 0 a; und vi = 1 und seine Maschine befindet sich in
leaf 1. Was passiert ist, ist daß als vi einen Widerspruch für
beide möglichen Werte lieferte und folglich eine Sperrvariable
bezüglich der gegenwärtigen logisch bewerteten Netzliste war,
wurde vi als die Blattvariable gesetzt. Ebenso wurde die Varia
ble auf der nächst höheren Ebene (d. h. vi-1) die Rückwärtsverar
beitungsvariable. Es gab zwei Möglichkeiten, die die Rückwärts
verarbeitungsvariable betrafen. Ihr hätte der erste Wert oder
der zweite zugewiesen sein können. Da die Rückwärtsverarbei
tungsvariable den ersten Wert aufwies, wurde die Rückwärtsver
arbeitungsvariable zum zweiten Wert gekippt. Ebenso wurde der
Blattvariable vi der erste Wert zugewiesen.
Als vi-1 dem zweiten Wert (vi-1 = 0) in bk 0 a zugewiesen wurde
und vi der erste Wert zugewiesen wurde, prüften die Implikati
onsschaltungen auf logische Konsistenz in der logisch bewerte
ten Netzliste. Für dieses Beispiel wird angenommen werden, daß
ein Widerspruch detektiert wurde und daß GContra in den Hoch
pegelzustand ging.
Sobald GContra in den Hochpegelzustand ging, gingen die vi-1-Ma
schine und die vi-Maschine über. Insbesondere ging die vi-1-Ma
schine in den Zustand bk 0 b über und ging die vi-Maschine in
den Zustand leaf 0 über. In bk 0 b hielt die vi-1-Maschine die Rück
wärtsverarbeitungsvariable vi-1 auf dem zweiten Wert. Im leaf 0-Zu
stand, kippte die vi-Maschine die Blattvariable vi auf den
zweiten Wert (d. h. vi = 0). Die Implikationsschaltungen prüften
auf logische Konsistenz in der logisch bewerteten Netzliste mit
der Rückwärtsverarbeitungsvariable vi-1 auf dem zweiten Wert
(d. h. 0) und der Blattvariable auf dem zweiten Wert (d. h. 0).
Für dieses Beispiel wird angenommen werden, daß ein Wider
spruch detektiert wurde, der GContra veranlaßte, in den Hoch
pegelzustand zu gehen. Sobald GContra in den Hochpegelzustand
ging, wurden alle drei Maschinen beeinflußt.
Insbesondere ging die vi-Maschine von leaf 0 zurück zu leaf 1,
was folglich zu vi = 1 führt. Das heißt, die Blattvariable be
hielt dieselbe Identität, änderte jedoch ihren Wert auf die
Detektion des Widerspruches hin.
Die vi-1-Maschine ging von bk 0 b auf init über. Als sie über
ging, gab sie Eol = 1 und Eor = 0 ab. In init wurde die Variable
vi-1 auf die freie Bedingung gesetzt.
Die Eol = 1-Ausgabe durch die vi-1-Maschine wurde durch die
vi-2-Maschine als Eir = 1 empfangen. Diese Eingabe in die vi-2-Ma
schine verursachte einen Übergang von passive 1 zu bk 0 a. Mit
anderen Worten wurde die Variable vi-2 die Rückwärtsverarbei
tungsvariable. In bk 0 a wurde der Wert von vi-2 auf den zweiten
Wert (d. h. 0) gesetzt.
Folglich befand sich die vi-2-Maschine dann im Zustand bk 0
a mit vi-2 = 0; befand sich die vi-1 Maschine dann im init-Zustand
mit vi-1 in einer freien Bedingung; und befand sich die vi-Ma
schine dann im leaf 1-Zustand mit vi = 1. Es wird beachtet werden,
daß, als vi-1 die Rückwärtsverarbeitungsvariable war und dem
zweiten Wert zugewiesen war, und als Widersprüche für beide
Werte der Blattvariable vi detektiert wurden, die Bedingung der
Rückwärtsverarbeitungsvariable auf frei gesetzt wurde, und daß
die Identität der Rückwärtsverarbeitungsvariable auf die Varia
ble vi-2 der nächst höheren Ebene gesetzt wurde.
An dieser Stelle prüften die Implikationsschaltungen auf
Widersprüche in der logisch bewerteten Netzliste mit vi-2 = 0;
vi-1 frei; und vi = 1. Für dieses Beispiel wird angenommen werden,
daß kein Widerspruch detektiert wurde. Folglich blieb, sobald
sich alle der Implikationen setzten (d. h. GChange in den Tief
pegelzustand ging), das Signal GContra im Tiefpegelzustand.
Mit sowohl GChange als auch GContra im Tiefpegelzustand wur
den die drei Maschinen wie folgt beeinflußt. Die vi-2-Maschine
ging von bk 0 a zu passive 0 über. Als sie überging, gab sie Eol = 0
und Eor = 1 aus. Es wird aus Fig. 5 deutlich, daß dann, wenn
die Kontrolle an die vi-2-Maschine zurückgeht, die vi-2-Maschine
zum init-Zustand übergehen wird und die Kontrolle an die nächst
höhere Ebene übergeben wird. Dies ist in Einklang mit dem oben
identifizierten nichtchronologischen Rückwärtsverarbeitungs
verfahren. Wenn vi-2 die Rückwärtsverarbeitungsvariable wird und
sie schon den zweiten Wert aufweist (d. h. vi-2 ist schon auf 0
gesetzt), dann soll keine weitere Prüfung auf der vi-2-Ebene ge
schehen und die Prüfung muß auf einer höheren Ebene weitergehen.
Im vorliegenden Beispiel bleibt jedoch die vi-2-Maschine auf pas
sive 0.
Als sowohl GChange als auch GContra in den Tiefpegelzustand
gingen, wurde die vi-1-Maschine ebenfalls beeinflußt. Insbeson
dere war die vi-1-Maschine im init-Zustand mit der Variable vi-1 in
der freien Bedingung (d. h. kein implizierter Wert) gewesen. An
genommen, daß kein Wert für vi-1 durch die letzte Prüfung auf
Widersprüche durch die Implikationsschaltungen impliziert wor
den war, dann wurde die vi-1 Maschine zu active 1 übergehen.
Als sowohl GChange als auch GContra in den Tiefpegelzustand
gingen, wurde die vi-Maschine ebenfalls beeinflußt. Insbesondere
ging die vi-Maschine vom leaf 1-Zustand mit vi = 1 in den init-Zu
stand über. Im init-Zustand wurde die Variable vi auf die freie
Bedingung gesetzt.
Die Hardware-Implementierung der leaf 1- und leaf 0-Zustände
kann man sich als ein konkretes Beispiel einer Einrichtung zum
Variieren des Wertes der Blattvariablen vorstellen. Die Hard
ware-Implementierung der bk 0 a- und bk 0 b-Zustände in der näch
sten Zustandsmaschine darüber von der Zustandsmaschine, die die
Blattvariable führt, kann entsprechend als eine Einrichtung zum
Setzen und Variieren einer ersten Rückwärtsverarbeitungsvaria
ble auf einer Ebene, die höher als eine Ebene der Blattvariable
ist, verstanden werden. Desgleichen kann die Hardware-Implemen
tierung der bk 0 a- und bk 0 b-Zustände in der nächsten Zustands
maschine darüber von der Zustandsmaschine mit der ersten Rück
wärtsverarbeitungsvariable als eine Einrichtung zum Setzen und
Variieren einer zweiten Rückwärtsverarbeitungsvariable, wenn
die erste Rückwärtsverarbeitungsvariable einen logischen Wider
spruch erzeugt, verstanden werden.
Wie das vorhergehende Beispiel darstellt, sorgt diese Aus
führungsform der Erfindung für eine nichtchronologische Rück
wärtsverarbeitung unter Verwendung rekonfigurierbarer Hard
ware.
Abhängig von den Problemeigenschaften, kann die konfigu
rierbare Berechnungsimplementierung häufig eine beträchtliche
Beschleunigung gegenüber einer Software-SAT-Lösungsvorrichtung
bieten, und die Hardware-Lösungsvorrichtung mit nichtchronolo
gischer Rückwärtsverarbeitung kann eine zusätzliche Beschleu
nigung gegenüber der Hardware-Lösungsvorrichtung mit chronolo
gischer Rückwärtsverarbeitung bieten.
Damit die Beschleunigung nützlich ist, muß sie jedoch Lei
stungsvorteile selbst dann bieten, nachdem die Hardware-Kompi
lierungszeit und Konfigurationszeit berücksichtigt wird. Aus
diesem Grund ist es zu empfehlen, daß die konfigurierbaren Hard
ware-Techniken hauptsächlich bei SAT-Problemen mit sehr langen
GRASP-Laufzeiten (Stunden oder Tage) oder in Fällen verwendet
werden, wo GRASP abbricht. In solchen Fällen werden die erfor
derlichen Hardware-Synthesezeiten akzeptabel sein.
Allgemein wird ein System ins Auge gefaßt, wo leichte SAT-Pro
bleme noch in Software gelöst werden; sehr große Probleme,
d. h. diejenigen, die häufig wegen Zeitüberschreitung abbrechen,
werden den Hardware-Kompilierer und eine FPGA-Schaltplatte zu
Hilfe rufen, die dabei helfen sollen, diese Probleme zu lösen.
Die ins Auge gefaßte Hardware-Plattform ist eine Hochlei
stungs-Workstation mit einer FPGA-Schaltplatte, die über eine
externe Verbindung oder den I/O-Bus angeschlossen ist. Leicht
zu lösende Probleme werden durch Software bearbeitet, die auf
der Workstation selbst läuft, während länger laufende Probleme
durch die FPGA-Schaltplatte bearbeitet werden. Die Anforderun
gen für die FPGA-Schaltplatte selbst sind teilweise eine Funk
tion der Hardwaregröße der Probleme, die gelöst werden; dies
wird im folgenden Teilabschnitt erläutert.
Die Hardware-Anforderungen für das erfinderische Verfahren
sind eine Funktion der Größe und Komplexität der Formel, die
gelöst wird. Die auf Schablonen beruhende Gestaltung zum SAT-Lösen
gemäß der Erfindung erfordert weder einen Speicher noch
werden irgendwelche Eingabedaten vor oder während der Problem
lösung zugeladen. Statt dessen wird das ganze Problem in die kon
figurierbaren Logikblöcke (CLBs) der FPGA eingebettet.
Die CLB-Anforderungen der SAT-Lösungsvorrichtung variieren
natürlicherweise mit der zu lösenden Formel weit. Quer durch
die DIMACS-Leistungsvergleiche betragen die mittleren CLB-An
forderungen 3655. Allgemein werden verhältnismäßig wenige (we
niger als 30%) dieser Probleme in die CLB-Grenzen von 1000 oder
2000 der gegenwärtigen FPGA-Chips passen (für nähere Einzelhei
ten betreffend FPGA-Chips, siehe das folgende nützliche Hinter
grunddokument, das hierin als Verweisquelle aufgenommen wird:
The Programmable Logic Data Book, Xilinx Corp. San Jose, CA, 1994). Die meisten jedoch werden auf weniger als zehn FPGAs pas sen.
The Programmable Logic Data Book, Xilinx Corp. San Jose, CA, 1994). Die meisten jedoch werden auf weniger als zehn FPGAs pas sen.
Die Verteilung der Gestaltung über die FPGAs ist wegen der
verwendeten regulären Topologie unkompliziert. Bei den Experi
menten haben die Erfinder die Verteilungs- und Stiftmultiplex
techniken im IKOS SLI Logikemulationssystem verwendet, das ur
sprünglich als Teil der MIT-Virtual-Wires-Bemühung entwickelt
wurde. Für weitere Informationen über die MIT-Virtual-Wires-Be
mühung, siehe bitte das folgenden Dokument, das wegen seiner
Hintergrundinformation als Verweisquelle aufgenommen wird:
- - J. Babb, R. Tessier, und A. Agarwal. Virtual Wires: Over
coming pin limitations in FPGA-based logic emulators.
In Proceeding & IEEE Workshop on FPGA-based Custom Compu ting Machines, Seiten 142-151, Apr. 1993.
Diese Verteilungs-Software kann mehrere Zwischen-Chipsi
gnale multiplexen, um dieselben physikalischen Stifte zu ver
wenden, wodurch die Stiftbegrenzungen umgangen werden, die häu
fig die CLB-Nutzung von FPGA-Gestaltungen begrenzen. Ferner
führt die Software dieses Multiplexen mit minimalem Einfluß auf
die Hardware-Zykluszeiten aus.
Allgemein stellt die Erfindung mehrere wichtige Beiträge
bereit. Erstens wird eine Systemgestaltung für formelspezifi
sche Boolesche Erfüllbarkeitslösungen beruhend auf einer kon
figurierbaren Hardware-Implementierung bereitgestellt. Die
Hardwareanforderungen der neuartigen Gestaltung sind ziemlich
bescheiden. Überdies zeigen die Leistungsergebnisse der erfin
dungsgemäßen Hardware an, daß das konfigurierbare Hardware-Ver
fahren das Potential für dramatische Verbesserungen gegenüber
selbst den besten gegenwärtigen auf Software beruhenden Tech
niken aufweist.
Die Erfindung stellt auch ein neuartiges Verfahren zur
nichtchronologischen Rückwärtsverarbeitung bereit, das in kon
figurierbarer Hardware implementiert werden kann. Jedoch kann
die erfindungsgemäße nichtchronologische Rückwärtsverarbeitung
auch auf andere Arten implementiert werden. Zum Beispiel kann
es in einem Computersystem ohne konfigurierbare Hardware imple
mentiert werden. Das heißt, ein Computersystem, das die Erfin
dung ausführt, wird Hardware und Software enthalten, die es ihm
ermöglichen, das nichtchronologische Rückwärtsverarbeitungs
verfahren auszuführen.
Entsprechend kann die oben identifizierte Erfindung in ei
nem Computerprogrammprodukt ausgeführt werden, wie nun erläu
tert werden wird.
Auf einer praktischen Ebene wird die Software, die es dem
Computersystem ermöglicht, das oben identifizierte Verfahren
und die Operationen der Erfindung auszuführen, auf irgendeinem
einer Vielzahl von Medien geliefert. Die Software kann insbe
sondere ein System betreffen, das konfigurierbare Hardware auf
weist, oder eines ohne konfigurierbare Hardware. Im erstgenann
ten Fall wird die Software Konfigurationsanweisungen einschlie
ßen.
Ferner kann die tatsächliche Implementierung des Verfahrens
und der Operationen der Erfindung tatsächlich aus Anweisungen
bestehen, die in einer Programmiersprache geschrieben werden.
Solche Programmiersprachen-Anweisungen veranlassen, wenn sie
durch einen Computer ausgeführt werden, den Computer, gemäß dem
bestimmten Inhalt der Anweisungen zu arbeiten. Ferner kann die
Software, die es einem Computersystem ermöglicht, erfindungs
gemäß zu arbeiten, in jeder Zahl von Formen bereitgestellt wer
den, die ursprünglichen Quellcode, Assemblercode, Objektcode,
Maschinensprache, komprimierte oder verschlüsselte Versionen
des Vorhergehenden, und alle und jede Äquivalente einschließen,
aber nicht auf sie begrenzt sind.
Ein Fachmann wird erkennen, daß "Medien" oder "computerles
bare Medien", wie sie hier verwendet werden, eine Diskette, ein
Band, eine Compact-Disk, eine integrierte Schaltung, eine Kas
sette, eine Fernübertragung über eine Kommunikationsschaltung
oder jedes andere ähnliche Medium, das durch Computer verwend
bar ist, einschließen kann. Zum Beispiel kann der Lieferant, um
Software zu liefern, um es einem Computersystem zu ermöglichen,
erfindungsgemäß zu arbeiten, eine Diskette bereitstellen oder
er könnte die Software in einer gewissen Form über Satelliten
übertragung, über eine direkte Telephonverbindung oder über das
Internet übertragen.
Obwohl die ermöglichende Software "auf" eine Diskette "ge
schrieben", einer integrierten Schaltung "gespeichert",
oder "über" eine Kommunikationsschaltung "übertragen" werden
könnte, wird erkannt werden, daß für die Zwecke dieser Anwendung
das computerverwendbare Medium als die Software "tragend" be
zeichnet wird. Folglich wird beabsichtigt, daß der Ausdruck
"tragend" die obigen und alle äquivalenten Arten umfaßt, in der
Software mit einem computerverwendbaren Medium verbunden ist.
Der Einfachheit halber wird daher der Ausdruck "Programm
produkt" folglich verwendet, um ein computerverwendbares Medium
zu bezeichnen, wie oben definiert, das in irgendeiner Form Soft
ware trägt, um es einem Computersystem zu ermöglichen, entspre
chend der oben identifizierten Erfindung zu arbeiten. Folglich
wird die Erfindung auch in einem Programmprodukt ausgeführt,
das Software trägt, die es einem Computer ermöglicht, das oben
beschriebene erfindungsgemäße nichtchronologische Rückwärts
verarbeitungsverfahren auszuführen.
Claims (10)
1. Konfigurierbare Vorrichtung zur Lösung eingegebener Such
probleme, die aufweist:
einen Speicher, der Konfigurationsanweisungen aufweist;
ein Hardware-System, das gemäß den Konfigurationsanweisun gen konfigurierbar ist;
wobei die Konfigurationsanweisungen das Hardware-System konfigurieren, um eine Suche beruhend auf einem gegenwär tigen der eingegebenen Suchprobleme auszuführen; und
die Konfigurationsanweisungen das Hardware-System so kon figurieren, daß für jedes der eingegebenen Suchprobleme eine Rückwärtsverarbeitung, die während der Suche durchgeführt wird, nichtchronologische Rückwärtsverarbeitung unter Steuerung des Hardware-Systems einschließt.
einen Speicher, der Konfigurationsanweisungen aufweist;
ein Hardware-System, das gemäß den Konfigurationsanweisun gen konfigurierbar ist;
wobei die Konfigurationsanweisungen das Hardware-System konfigurieren, um eine Suche beruhend auf einem gegenwär tigen der eingegebenen Suchprobleme auszuführen; und
die Konfigurationsanweisungen das Hardware-System so kon figurieren, daß für jedes der eingegebenen Suchprobleme eine Rückwärtsverarbeitung, die während der Suche durchgeführt wird, nichtchronologische Rückwärtsverarbeitung unter Steuerung des Hardware-Systems einschließt.
2. Konfigurierbare Vorrichtung nach Anspruch 1, wobei die ein
gegebenen Suchprobleme auf Boolesche Erfüllbarkeits(SAT-)
Probleme reduziert werden, und wobei die Konfigurationsan
weisungen das Hardware-System so konfigurieren, daß für die
Booleschen SAT-Probleme die Suche eine Booleschen SAT-Lö
sungssuche mit der nichtchronologischen Rückwärtsverarbei
tung ist.
3. Konfigurierbare Vorrichtung nach Anspruch 2, wobei die Kon
figurationsanweisungen das Hardware-System konfigurieren,
um zu definieren:
Einrichtungen zum Identifizieren einer Sperrvariable als eine Blattvariable;
Einrichtungen zum Variieren des Wertes der Blattvariablen;
Einrichtungen zum Setzen und Variieren einer ersten Rück wärtsverarbeitungsvariablen auf einer Ebene, die höher als eine Ebene der Blattvariablen ist; und
Einrichtungen zum Setzen und Variieren einer zweiten Rück wärtsverarbeitungsvariablen auf einer Ebene, die höher als die Ebene der ersten Rückwärtsverarbeitungsvariablen ist, wenn die erste Rückwärtsverarbeitungsvariable einen logi schen Widerspruch erzeugt.
Einrichtungen zum Identifizieren einer Sperrvariable als eine Blattvariable;
Einrichtungen zum Variieren des Wertes der Blattvariablen;
Einrichtungen zum Setzen und Variieren einer ersten Rück wärtsverarbeitungsvariablen auf einer Ebene, die höher als eine Ebene der Blattvariablen ist; und
Einrichtungen zum Setzen und Variieren einer zweiten Rück wärtsverarbeitungsvariablen auf einer Ebene, die höher als die Ebene der ersten Rückwärtsverarbeitungsvariablen ist, wenn die erste Rückwärtsverarbeitungsvariable einen logi schen Widerspruch erzeugt.
4. Verfahren zur nichtchronologischen Rückwärtsverarbeitung
einer Netzliste von Variablen, das aufweist:
Identifizieren einer Sperrvariablen als eine Blattvariable; Variieren des Wertes der Blattvariablen;
Setzen als eine erste Rückwärtsverarbeitungsvariable einer Variablen mit einer Ebene, die höher als die Ebene der Blattvariablen ist, und Variieren des Wertes der ersten Rückwärtsverarbeitungsvariablen;
Auswerten der Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der ersten Rück wärtsverarbeitungsvariablen;
wenn die Auswertung einen logischen Widerspruch erzeugt, Va riieren einer Rückwärtsverarbeitungsvariablenidentität durch Setzen als eine zweite Rückwärtsverarbeitungsvariable einer anderen der Variablen mit einer Ebene, die höher als die Ebene der ersten Rückwärtsverarbeitungsvariablen ist, und Variieren des Wertes der anderen Rückwärtsverarbei tungsvariablen; und dann
Auswerten der Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der zweiten Rück wärtsverarbeitungsvariablen.
Identifizieren einer Sperrvariablen als eine Blattvariable; Variieren des Wertes der Blattvariablen;
Setzen als eine erste Rückwärtsverarbeitungsvariable einer Variablen mit einer Ebene, die höher als die Ebene der Blattvariablen ist, und Variieren des Wertes der ersten Rückwärtsverarbeitungsvariablen;
Auswerten der Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der ersten Rück wärtsverarbeitungsvariablen;
wenn die Auswertung einen logischen Widerspruch erzeugt, Va riieren einer Rückwärtsverarbeitungsvariablenidentität durch Setzen als eine zweite Rückwärtsverarbeitungsvariable einer anderen der Variablen mit einer Ebene, die höher als die Ebene der ersten Rückwärtsverarbeitungsvariablen ist, und Variieren des Wertes der anderen Rückwärtsverarbei tungsvariablen; und dann
Auswerten der Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der zweiten Rück wärtsverarbeitungsvariablen.
5. Nichtchronologisches Rückwärtsverarbeitungsverfahren zum
Bestimmen einer erfüllenden Variablenzuweisung für eine
Konjunktivnormalform- (CNF-) Darstellung eines Satzes
Boolescher Formelvariablen, die in Ebenen geordnet sind, wo
bei jede der Variablen eine jeweilige Ebene aufweist, der
Satz Variablen eine logisch bewertete Netzliste definiert,
wobei das Verfahren aufweist:
Identifizieren einer Sperrvariablen als eine Blattvariable, und Variieren des Wertes der Blattvariablen;
Setzen als eine erste Rückwärtsverarbeitungsvariable einer der Variablen mit einer Ebene, die höher als die Ebene der Blattvariablen ist, und Variieren des Wertes der ersten Rückwärtsverarbeitungsvariablen;
paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der ersten Rückwärtsverarbeitungsvariablen;
als Reaktion darauf, daß die Auswertung einen logischen Wi derspruch erzeugt, Variieren einer Rückwärtsverarbeitungs variablen-Identität durch Setzen als eine zweite Rückwärts verarbeitungsvariable, eine andere der Variablen mit einer Ebene, die höher als die Ebene des ersten Rückwärtsverar beitungsvariablen ist, und Variieren des Wertes der anderen Rückwärtsverarbeitungsvariablen;
paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der zweiten Rückwärtsverarbeitungsvariablen.
Identifizieren einer Sperrvariablen als eine Blattvariable, und Variieren des Wertes der Blattvariablen;
Setzen als eine erste Rückwärtsverarbeitungsvariable einer der Variablen mit einer Ebene, die höher als die Ebene der Blattvariablen ist, und Variieren des Wertes der ersten Rückwärtsverarbeitungsvariablen;
paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der ersten Rückwärtsverarbeitungsvariablen;
als Reaktion darauf, daß die Auswertung einen logischen Wi derspruch erzeugt, Variieren einer Rückwärtsverarbeitungs variablen-Identität durch Setzen als eine zweite Rückwärts verarbeitungsvariable, eine andere der Variablen mit einer Ebene, die höher als die Ebene des ersten Rückwärtsverar beitungsvariablen ist, und Variieren des Wertes der anderen Rückwärtsverarbeitungsvariablen;
paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Wert der Blattvariablen und dem Wert der zweiten Rückwärtsverarbeitungsvariablen.
6. Nichtchronologisches Rückwärtsverarbeitungsverfahren zum
Bestimmen einer erfüllenden Variablenzuweisung für eine
Konjunktivnormalform- (CNF-) Darstellung eines Satzes
Boolescher Formelvariablen, die in jeweiligen Ebenen geord
net sind und Definieren einer logisch bewerteten Netzliste,
wobei das Verfahren aufweist:
- (a) Variieren bezüglich einer Blattvariablen nur eines Blattvariablenwertes, wobei der Blattwert beruhend auf einer Sperrvariablen bestimmt wird;
- (b) Variieren bezüglich einer Rückwärtsverarbeitungsvaria blen einer Rückwärtsverarbeitungsvariablenidentität und eines Rückwärtsverarbeitungsvariablenwertes, wobei die Rückwärtsverarbeitungsvariable eine höhere Ebene als jene der Blattvariablen aufweist; und
- (c) paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Blattvaria blenwert, dem Rückwärtsverarbeitungsvariablenwert und der Rückwärtsverarbeitungsvariablenidentität.
7. Nichtchronologisches Rückwärtsverarbeitungsverfahren nach
Anspruch 6, wobei der Auswerteschritt aufweist:
Bereitstellen einer geordneten Mehrzahl von Zustandsmaschi nen, wobei jede einer der Booleschen Formelvariablen ent spricht und identisch damit geordnet ist;
für jede der mehreren Zustandsmaschinen, Bereitstellen ei ner Implikationsschaltung;
Kombinieren der Ausgabe jeder Implikationsschaltung, um ein globales Widerspruchssignal bereitzustellen, das anzeigt, daß die logisch bewertete Netzliste nicht logisch konsistent ist.
Bereitstellen einer geordneten Mehrzahl von Zustandsmaschi nen, wobei jede einer der Booleschen Formelvariablen ent spricht und identisch damit geordnet ist;
für jede der mehreren Zustandsmaschinen, Bereitstellen ei ner Implikationsschaltung;
Kombinieren der Ausgabe jeder Implikationsschaltung, um ein globales Widerspruchssignal bereitzustellen, das anzeigt, daß die logisch bewertete Netzliste nicht logisch konsistent ist.
8. Nichtchronologisches Rückwärtsverarbeitungsverfahren nach
Anspruch 7, wobei der Kombinationsschritt ferner das Be
reitstellen eines globalen Änderungssignals aufweist, das
anzeigt, ob alle transitiven Implikationen der logisch be
werteten Netzliste bestimmt worden sind.
9. Computersystem, das angepaßt ist, um eine erfüllende Varia
blenzuweisung für eine Konjunktivnormalform- (CNF-) Dar
stellung eines Satzes Boolescher Formelvariablen zu bestim
men, die in jeweiligen Ebenen geordnet sind und eine logisch
bewertete Netzliste definieren, wobei das System aufweist:
einen Prozessor, und
einen Speicher, der Software-Anweisungen aufweist, die an gepaßt sind, es dem Computersystem zu ermöglichen, die Schritte auszuführen:
einen Prozessor, und
einen Speicher, der Software-Anweisungen aufweist, die an gepaßt sind, es dem Computersystem zu ermöglichen, die Schritte auszuführen:
- (a) Variieren bezüglich einer Blattvariablen nur eines Blattvariablenwertes, wobei der Blattwert beruhend auf einer Sperrvariablen bestimmt wird;
- (b) Variieren bezüglich einer Rückwärtsverarbeitungsvaria blen einer Rückwärtsverarbeitungsvariablenidentität und eines Rückwärtsverarbeitungsvariablenwertes, wobei die Rückwärtsverarbeitungsvariable eine höhere Ebene als jene der Blattvariablen aufweist; und
- (c) paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Blattvaria blenwert, dem Rückwärtsverarbeitungsvariablenwert und der Rückwärtsverarbeitungsvariablen-Identität.
10. Computerprogrammprodukt, um es einem Computer zu ermögli
chen, eine erfüllende Variablenzuweisung für eine Konjunk
tivnormalform- (CNF-) Darstellung eines Satzes von Boole
schen Formelvariablen zu bestimmen, die in jeweiligen Ebenen
geordnet sind und eine logisch bewertete Netzliste definie
ren, wobei das Produkt aufweist:
Software-Anweisungen, um es dem Computer zu ermöglichen, vorherbestimmte Operationen auszuführen, und
ein computerlesbares Medium, das die Software-Anweisungen trägt;
wobei die vorherbestimmten Operationen die Schritte aufwei sen:
Software-Anweisungen, um es dem Computer zu ermöglichen, vorherbestimmte Operationen auszuführen, und
ein computerlesbares Medium, das die Software-Anweisungen trägt;
wobei die vorherbestimmten Operationen die Schritte aufwei sen:
- (a) Variieren bezüglich einer Blattvariablen nur eines Blattvariablenwertes, wobei der Blattwert beruhend auf einer Sperrvariablen bestimmt wird;
- (b) Variieren bezüglich einer Rückwärtsverarbeitungsvaria blen einer Rückwärtsverarbeitungsvariablenidentität und eines Rückwärtsverarbeitungsvariablenwertes, wobei die Rückwärtsverarbeitungsvariable eine höhere Ebene als jene der Blattvariablen aufweist; und
- (c) paralleles Auswerten der logisch bewerteten Netzliste auf logische Konsistenz beruhend auf dem Blattvaria blenwert, dem Rückwärtsverarbeitungsvariablenwert und der Rückwärtsverarbeitungsvariablen-Identität.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/085,646 US6038392A (en) | 1998-05-27 | 1998-05-27 | Implementation of boolean satisfiability with non-chronological backtracking in reconfigurable hardware |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE19903633A1 true DE19903633A1 (de) | 1999-12-02 |
Family
ID=22193026
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19903633A Ceased DE19903633A1 (de) | 1998-05-27 | 1999-01-29 | Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6038392A (de) |
| JP (1) | JP3119646B2 (de) |
| DE (1) | DE19903633A1 (de) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8453615B2 (en) | 2006-09-07 | 2013-06-04 | Mahle International Gmbh | Adjustable camshaft |
Families Citing this family (40)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6138266A (en) | 1997-06-16 | 2000-10-24 | Tharas Systems Inc. | Functional verification of integrated circuit designs |
| US6292916B1 (en) * | 1998-12-10 | 2001-09-18 | Lucent Technologies Inc. | Parallel backtracing for satisfiability on reconfigurable hardware |
| US6415430B1 (en) * | 1999-07-01 | 2002-07-02 | Nec Usa, Inc. | Method and apparatus for SAT solver architecture with very low synthesis and layout overhead |
| US6877040B1 (en) * | 2000-07-25 | 2005-04-05 | Xilinx, Inc. | Method and apparatus for testing routability |
| US6618841B1 (en) | 2000-11-06 | 2003-09-09 | Verplex Systems, Inc. | Non-assignable signal support during formal verification of circuit designs |
| US7073143B1 (en) | 2000-11-06 | 2006-07-04 | Cadence Design Systems, Inc. | Solving constraint satisfiability problem for circuit designs |
| US6629297B2 (en) | 2000-12-14 | 2003-09-30 | Tharas Systems Inc. | Tracing the change of state of a signal in a functional verification system |
| US6691287B2 (en) | 2000-12-14 | 2004-02-10 | Tharas Systems Inc. | Functional verification system |
| US6470480B2 (en) * | 2000-12-14 | 2002-10-22 | Tharas Systems, Inc. | Tracing different states reached by a signal in a functional verification system |
| US6625786B2 (en) | 2000-12-14 | 2003-09-23 | Tharas Systems, Inc. | Run-time controller in a functional verification system |
| US6883134B2 (en) | 2001-03-27 | 2005-04-19 | Logicvision, Inc. | Method and program product for detecting bus conflict and floating bus conditions in circuit designs |
| US7418369B2 (en) * | 2001-09-07 | 2008-08-26 | The Trustees Of Princeton University | Method and system for efficient implementation of boolean satisfiability |
| US7653520B2 (en) * | 2002-07-19 | 2010-01-26 | Sri International | Method for combining decision procedures with satisfiability solvers |
| US7342415B2 (en) * | 2004-11-08 | 2008-03-11 | Tabula, Inc. | Configurable IC with interconnect circuits that also perform storage operations |
| US7743085B2 (en) | 2004-11-08 | 2010-06-22 | Tabula, Inc. | Configurable IC with large carry chains |
| US7236009B1 (en) | 2004-12-01 | 2007-06-26 | Andre Rohe | Operational time extension |
| US7428721B2 (en) * | 2004-12-01 | 2008-09-23 | Tabula, Inc. | Operational cycle assignment in a configurable IC |
| US7496879B2 (en) * | 2004-12-01 | 2009-02-24 | Tabula, Inc. | Concurrent optimization of physical design and operational cycle assignment |
| US7512850B2 (en) | 2005-07-15 | 2009-03-31 | Tabula, Inc. | Checkpointing user design states in a configurable IC |
| US7372297B1 (en) | 2005-11-07 | 2008-05-13 | Tabula Inc. | Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources |
| US7679401B1 (en) * | 2005-12-01 | 2010-03-16 | Tabula, Inc. | User registers implemented with routing circuits in a configurable IC |
| WO2007119300A1 (ja) | 2006-03-15 | 2007-10-25 | Nec Corporation | 再構成可能デバイスのテストシステム及びその方法並びにそれに用いる再構成可能デバイス |
| US7543266B2 (en) * | 2006-11-20 | 2009-06-02 | Microsoft Corporation | Lock-free state merging in parallelized constraint satisfaction problem solvers |
| EP2597776A3 (de) * | 2007-03-20 | 2014-08-20 | Tabula, Inc. | Konfigurierbares IC mit einem koppelfeld mit speicherelementen |
| US8069425B2 (en) | 2007-06-27 | 2011-11-29 | Tabula, Inc. | Translating a user design in a configurable IC for debugging the user design |
| WO2009039462A1 (en) * | 2007-09-19 | 2009-03-26 | Tabula, Inc. | Method and system for reporting on a primary circuit structure of an integrated circuit (ic) using a secondary circuit structure of the ic |
| US8863067B1 (en) | 2008-02-06 | 2014-10-14 | Tabula, Inc. | Sequential delay analysis by placement engines |
| US8131660B2 (en) * | 2008-04-08 | 2012-03-06 | Microsoft Corporation | Reconfigurable hardware accelerator for boolean satisfiability solver |
| US8166435B2 (en) | 2008-06-26 | 2012-04-24 | Tabula, Inc. | Timing operations in an IC with configurable circuits |
| WO2010016857A1 (en) | 2008-08-04 | 2010-02-11 | Tabula, Inc. | Trigger circuits and event counters for an ic |
| US10528868B2 (en) * | 2010-06-25 | 2020-01-07 | Clayton Gillespie | Solving NP-complete problems without hyper polynomial cost |
| US9031890B2 (en) | 2010-08-04 | 2015-05-12 | Sherwin Han | Inverse function method of boolean satisfiability (SAT) |
| US8996435B2 (en) * | 2011-08-02 | 2015-03-31 | International Business Machines Corporation | Determining invariants in a model |
| US8984464B1 (en) | 2011-11-21 | 2015-03-17 | Tabula, Inc. | Detailed placement with search and repair |
| US9171029B2 (en) | 2013-01-31 | 2015-10-27 | International Business Machines Corporation | Performing batches of selective assignments in a vector friendly manner |
| WO2014152541A1 (en) | 2013-03-15 | 2014-09-25 | Sherwin Han | Spatial arithmetic method of sequence alignment |
| CN105190632B (zh) | 2013-04-04 | 2018-06-05 | 韩小文 | 构造非确定性(np)图灵机的多项式方法 |
| US9154137B2 (en) | 2013-07-04 | 2015-10-06 | Altera Corporation | Non-intrusive monitoring and control of integrated circuits |
| AU2015236144B2 (en) * | 2014-03-25 | 2020-04-30 | Clayton Gillespie | Solving NP-complete problems without hyper polynomial cost |
| US9418137B2 (en) | 2014-08-29 | 2016-08-16 | Sherwin Han | Database without structured query language |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5377201A (en) * | 1991-06-18 | 1994-12-27 | Nec Research Institute, Inc. | Transitive closure based process for generating test vectors for VLSI circuit |
| US5602856A (en) * | 1993-04-06 | 1997-02-11 | Nippon Telegraph And Telephone Corporation | Test pattern generation for logic circuits with reduced backtracking operations |
| US5831996A (en) * | 1996-10-10 | 1998-11-03 | Lucent Technologies Inc. | Digital circuit test generator |
-
1998
- 1998-05-27 US US09/085,646 patent/US6038392A/en not_active Expired - Lifetime
-
1999
- 1999-01-29 DE DE19903633A patent/DE19903633A1/de not_active Ceased
- 1999-03-19 JP JP11076687A patent/JP3119646B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8453615B2 (en) | 2006-09-07 | 2013-06-04 | Mahle International Gmbh | Adjustable camshaft |
Also Published As
| Publication number | Publication date |
|---|---|
| US6038392A (en) | 2000-03-14 |
| JP3119646B2 (ja) | 2000-12-25 |
| JPH11353357A (ja) | 1999-12-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19903633A1 (de) | Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware | |
| DE69919144T2 (de) | Verfahren und gerät zum analysieren von statusbasiertem modell | |
| DE68925121T2 (de) | Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät | |
| DE69521507T2 (de) | System und verfahren zur auf einem modell basierender prüfung von lokalen entwurfsregeln | |
| DE19824796B4 (de) | Verfahren und Vorrichtung zur Leistungsoptimierung der Registerübertragungsebene, insbesondere mit einer Störimpuls-Analyse und -Reduktion | |
| DE69817581T2 (de) | System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen | |
| DE68927946T2 (de) | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre | |
| DE69102065T2 (de) | Eine arithmetische einheit für strukturarithmetik. | |
| DE69024515T2 (de) | Gerät zur Streckenmessung und -analyse zur Leistungsabschätzung von Software-Entwürfen | |
| DE60116769T2 (de) | Verfahren und system zur hierarchischen metallenden-, einschliessungs- und belichtungsprüfung | |
| DE69909452T4 (de) | Eine datenbank, die nützlich ist, um ein system zu konfigurieren und/oder zu optimieren und ein verfahren, um diese datenbank zu generieren | |
| DE3855860T2 (de) | Schaltungsveränderungssystem und -verfahren, Verfahren zur Erzeugung von invertierter Logik und Logikentwurfssystem | |
| DE60005670T2 (de) | Aktualisierung der platzierung während der technologieabbildung | |
| DE68927075T2 (de) | Verfahren und System zum Durchführen von Argumentations- aufgaben unter Verwendung von Lehrsätzen mit Hilfe von parallel betriebenen Prozessoren | |
| DE69425744T2 (de) | Verfahren zur modellierung von bidirektionalen oder multiplikativ gesteuerten signalpfaden in einem system zum erreichen eines statisch geplanten allzwecksimulators | |
| DE19860062A1 (de) | Verfahren der erzwungenen Registerteilung für die Konstruktion von leistungsarmen VLSI | |
| DE3338333A1 (de) | Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur | |
| DE19717716A1 (de) | Verfahren zur automatischen Diagnose technischer Systeme unter Berücksichtigung eines effizienten Wissenserwerbs und einer effizienten Bearbeitung zur Laufzeit | |
| DE69533567T2 (de) | Vorrichtung und Verfahren zum Auffinden von False-Timing-Paths in digitalen Schaltkreisen | |
| EP0580663A1 (de) | Verfahren zur verifikation datenverarbeitender systeme. | |
| DE3854636T2 (de) | Automatischer Prüfprozess für logische Geräte. | |
| DE10205559B4 (de) | Integrierte Schaltung und Verfahren und Vorrichtung zum Entwurf einer integrierten Schaltung | |
| DE10324594A1 (de) | Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung | |
| DE69805818T2 (de) | Verfahren und rechnersystem zum zusammenstellen einer menge von objekten | |
| DE69129681T2 (de) | Verfahren und Gerät zum Interpretieren und Organisieren von Zeitsteuerungsspezifikationsdaten |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8131 | Rejection |