DE69838835T2 - Verfahren zur Prüfung und zur Darstellung einer Hardware durch Zerlegung und Aufteilung - Google Patents

Verfahren zur Prüfung und zur Darstellung einer Hardware durch Zerlegung und Aufteilung Download PDF

Info

Publication number
DE69838835T2
DE69838835T2 DE69838835T DE69838835T DE69838835T2 DE 69838835 T2 DE69838835 T2 DE 69838835T2 DE 69838835 T DE69838835 T DE 69838835T DE 69838835 T DE69838835 T DE 69838835T DE 69838835 T2 DE69838835 T2 DE 69838835T2
Authority
DE
Germany
Prior art keywords
binary decision
function
boolean
bdd
decision diagrams
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69838835T
Other languages
English (en)
Other versions
DE69838835D1 (de
Inventor
Jawahar Santa Clara Jain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of DE69838835D1 publication Critical patent/DE69838835D1/de
Publication of DE69838835T2 publication Critical patent/DE69838835T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet von Systemen und Verfahren des computergestützten Entwerfens (CAD), insbesondere auf CAD-Systeme und -Verfahren zum digitalen Schaltungsentwurf und -prüfen.
  • Computergestütztes Entwerfen von digitalen Schaltungen und anderen komplexen digitalen Systeme ist weit verbreitet. Bei einem solchen computergestützten Entwerfen werden Schaltungen und Systeme üblicherweise auf hierarchische Weise entworfen. Die Anforderungen der Schaltung oder des Systems werden in einem abstrakten Modell der Schaltung oder des Systems definiert. Das abstrakte Modell wird dann sukzessive in eine Anzahl von Zwischenstufen umgewandelt. Diese Zwischenstufen beinhalten oftmals ein Registerübertragungsebenenmodell, das einen Blockstruktur-Verhaltensentwurf und ein strukturelles Modell darstellt, das eine Logikebenenbeschreibung des Systems ist. Schließlich werden eine Transistorennetzliste, und demzufolge das physikalische Layout der Schaltung oder des Systems, abgeleitet.
  • Der Entwurf der Schaltung oder des Systems schreitet daher von der Ebene der allgemeinen Anforderungen zur niedrigeren Detailebene eines physikalischen Entwurfs fort, zwischen die eine Anzahl von Zwischenebenen geschaltet sind. Jede nachfolgende Ebene des Entwurfs wird getestet oder geprüft, um sicher zu stellen, dass die Schaltung oder das System weiterhin die Entwurfsanforderungen erfüllt. Es ist sehr wünschenswert, jede Ebene in dem Entwurf zu prüfen, da Fehler in einer Ebene des Entwurfs, die nicht korrigiert wurden, bis nachdem weitere Ebenen entworfen wurden, drastisch die Kosten für die Korrektur solcher Fehler erhöhen. Somit ist es wichtig, jede Ebene des Entwurfs gegen die Anforderungen zu testen. Während jede Ebene des Entwurfs gegen die Anforderungen getestet wird, löst sich diese Aufgabe in die Aufgabe auf, jede Ebene des Entwurfs mit der vorherigen Ebene des Entwurfs zu vergleichen. Dieses Tes ten von nachfolgenden Ebenen gegen unmittelbar vorangehende Ebenen kann auch intuitiv gesehen werden, wenn man sich vergegenwärtigt, dass jede nachfolgende Ebene oft nur eine Optimierung der vorangehenden Ebene ist. Somit kann das Testen oder Prüfen von Schaltungsentwürfen in gewissem Maß dem Überprüfen der Abwärtskompatibilität von nachfolgenden Schaltungen oder Systemen als ähnlich angesehen werden.
  • Binärentscheidungsdiagramme (BDDs) sind verwendet worden, um CAD-bezogene Probleme zu lösen. Diese Probleme umfassen Syntheseprobleme, Prüfung von digitalen Systemen, Protokollvalidierung, und allgemeines Prüfen der Richtigkeit von Schaltungen. BDDs stellen Boolesche Funktionen dar. Zum Beispiel zeigt 1 eine Schaltung, die erste und zweite ODER-Gatter 11, 13 und ein UND-Gatter 15 umfasst. Das erste ODER-Gatter weist Eingaben N1 und N2 auf. Das zweite ODER-Gatter weist Eingaben N2 und N3 auf, wobei die Eingabe N2 von den beiden ODER-Gattern geteilt wird. Die Ausgaben der ODER-Gatter werden in das UND-Gatter gespeist. Das UND-Gatter weist eine Ausgabe N6 auf. Somit kann die Ausgabe des UND-Gatters dargestellt werden durch die Boolesche Funktion N6 = (N1 ODER N2) UND (N2 ODER N3).
  • Ein BDD für diese Schaltung wird in 2 gezeigt. Das BDD ist aus Vertices zusammengesetzt, die auch Knotenpunkte und Verzweigungen genannt werden können. Vertices, von denen keine weitere Verzweigungen ausgehen, werden Endvertices genannt. Das BDD ist ein geordnetes BDD (OBDD), da jede Eingabe darauf beschränkt ist, nur auf einer Ebene des BDD zu erscheinen. Das BDD kann auf ein Reduziertes OBDD (ROBDD) reduziert werden, wie in 3 gezeigt. Die Regeln zum Reduzieren von OBDDs sind im Stand der Technik bekannt. Diese Regeln umfassen das Eliminieren redundanter oder isomorpher Knotenpunkte, und durch das Erkennen, dass einige Knotenpunkte durch Austausch der Verzweigungen eines Knotenpunktes mit einem Knotenpunkt oder seinem Komplement eliminiert werden können. Die Wichtigkeit von ROBDDs ist, dass ROBDDs eindeutig sind, d. h., kanonisch. Wenn zwei OBDDs sich zu demselben ROBDD reduzieren, sind die Schaltungen, die durch die OBDDs dargestellt werden, äquivalent.
  • Bei den meisten Anwendungen werden ROBDDs konstruiert, indem irgendeine Variante der Apply-Prozedur angewendet wird, die bei R. E. Bryant, Graph-Based Algorithms For Boolean Function Manipulation, IEEE Trans. Computer C-35 (8): 667–691, August 1986, beschrieben wird, was durch Bezugnahme hierin umfasst wird. Unter Verwendung der Apply-Prozedur wird das ROBDD für ein Gatter g durch die symbolische Manipulation der ROBDDs der Eingaben des Gatters g synthetisiert. Wenn eine Schaltung gegeben ist, werden die Gatter der Schaltung in einer tiefenorientierten Weise verarbeitet, bis die ROBDDs der gewünschten Ausgangsgatter konstruiert wurden.
  • Eine große Anzahl von Problemen in VLSI-CAD und anderen Gebieten der Informatik können anhand von Booleschen Funktionen formuliert werden. Entsprechend sind ROBDDs nützlich für die Durchführung von Äquivalenzüberprüfungen. Eine zentrale Angelegenheit bei der Bereitstellung von computergestützten Lösungen und Äquivalenzüberprüfung ist es jedoch, eine kompakte Darstellung für die Booleschen Funktionen zu finden, so dass die Äquivalenzüberprüfung effizient durchgeführt werden kann. ROBDDs sind auf effiziente Weise manipulierbar und, wie zuvor ausgeführt, kanonisch. Bei vielen praktischen Funktionen sind ROBDDs auch kompakt, sowohl in Bezug auf Größe (Speicherplatz) und Rechenzeit. Dementsprechend werden ROBDDs oft als die Boolesche Darstellung der Wahl zur Lösung verschiedener CAD-Probleme verwendet.
  • ROBDDs sind jedoch nicht immer kompakt. Bei einer großen Anzahl von Fällen von praktischem Interesse können viele ROBDDs, die eine Schaltung oder System darstellen und durch eine Boolesche Funktion beschrieben werden, Platz benötigen, der in der Anzahl der Primäreingaben (PIs) zur Schaltung oder System exponentiell ist. Dies macht das Lösen nach Äquivalenz ein NP-schweres Problem. Die große Platzanforderung, entweder im Hinblick auf Speicher oder Rechenzeit, setzt der Komplexität von Problemen, die unter Verwendung von ROBBDs gelöst werden können, Grenzen.
  • Verschiedene Verfahren wurden vorgeschlagen, um die Kompaktheit von ROBDDS zu verbessern. Einige dieser Verfahren verbessern die Kompaktheit, aber erhalten nicht die Kanonizität und Manipulierbarkeit der ROBDDs. Derlei Verfahren verringern die Anwendbarkeit der Verwendung von ROBDDs. Andere Verfahren, die die Kanonizität und Manipulierbarkeit erhalten, stellen die Funktion über den gesamten Booleschen Raum als einen einzigen Graphen dar, der an einer eindeutigen Quelle verwurzelt ist. Eine Anforderung eines einzigen Graphen kann jedoch noch immer in ROBDDs einer solchen Größe resultieren, dass entweder Speicher- oder Zeitbeschränkungen überschritten werden.
  • Verfahren zur Reduzierung der Größe von ROBDD wurden vorgeschlagen. Die Größe eines ROBDDs ist stark von seiner Ordnung von Variablen abhängig. Daher wurden viele Algorithmen zur Bestimmung von Variablenordnungen vorgeschlagen, die die Größe von ROBDDs reduzieren. Für einige Boolesche Funktionen ist es jedoch möglich, dass keine Variablenordnung in einem ROBDD resultiert, das genügend klein ist, um nützlich zu sein, oder dass keine solche Variablenordnung effizient gefunden werden kann.
  • Die Anforderungen an Platz und Zeit von ROBDDs können auch durch Lockern der gesamten Ordnungsanforderung reduziert werden. Ein freies BDD ist ein Beispiel für einen solchen Ansatz. Ein freies BDD (FBDD) ist ein BDD, bei dem Variablen nur ein mal in einem gegebenen Pfad von der Quelle zum Ende erscheinen können, aber unterschiedlichen Pfade können unterschiedliche Variablenordnungen haben.
  • Es ist ein weiterer Ansatz, ein kompaktere Darstellung für Boolesche Funktionen zu erhalten, die Funktionszerlegung, die mit den Knotenpunkten verbunden ist, zu ändern. Allgemein basiert eine BDD-Zerlegung auf der Shannon Expansion, bei der eine Funktion f als
    Figure 00050001
    ausgedrückt wird, oder auf Verfahren, die sich aus der Shannon Expansion ableiten, wie etwa dem Apply-Verfahren. Einige andere Zerlegungen beinhalten die Reed-Muller-Expansion oder die Verwendung von Expansions-Hybriden, wie etwa Functional Decision Diagrams (FDDs) oder durch die Verwendung von Ordered Kronecker Functional Decision Diagrams (OKFDDs). Jedoch stellen alle diese Verfahren eine Funktion über den gesamten Booleschen Raum als einen einzigen Graphen dar, der an einer eindeutigen Quelle verwurzelt ist. Somit sind diese Verfahren noch immer mit Problemen der Beschränkung von Platz und Zeit konfrontiert.
  • Ferner werden viele Entwürfe, insbesondere für sequentielle Schaltungen, nicht adäquat geprüft. Üblicherweise wird eine Testfolge zum Testen solcher Entwürfe ausgearbeitet. Die Testfolge umfasst eine Anzahl von Testfällen, bei denen der Entwurf verschiedenen Kombinationen von Zuordnungen für die Primäreingaben des Entwurfs unterzogen werden. Eine einzelnen Kombination von Zuordnungen für die Primäreingaben bildet einen Eingabevektor. Eine Abfolge von Eingabevektoren, die verwendet wird, um Entwürfe zu testen, die sequentielle Elemente aufweisen, wie etwa Flip-Flops, bildet einen Testvektor.
  • Testfolgen werden oftmals von Ingenieuren mit spezialisiertem Wissen um den Entwurf, der getestet wird, ausgearbeitet. Daher sind Testfolgen nützliche Testmittel. Jedoch testen Testfolgen nur einen sehr kleinen Abschnitt eines Zustands o der Booleschen Raums des Entwurfs. Für Entwürfe mit einer nennenswerten Anzahl von Primäreingaben oder möglichen Testvektoren testen Testfolgen einen wesentlichen Abschnitt von Eingabevektoren oder Testvektoren, die von besonderem Interesse sind, nicht.
  • NARAYAN A ET AL: 'Partitioned ROBDDs-a compact, canonical and efficiently manipulable representation for Boolean functions' COMPUTER AIDED DESIGN, 1996- ICCAD-96. DIGEST OF TECHNICAL PAPERS., 1996 IEEE/ACM INTERNATIONAL CONFERENCE ON SAN JOSE, CA, USA, 10–14 NOV. 1996, LOS ALAMITOS, CA, USA, IEEE COMPUT. SOC, US, 10. November 1996 (1996-11-10), Seiten 547–554, XP010205432 ISBN: 0-8186-7597-7 offenbart ein Verfahren und ein System, bei dem ein Boolescher Raum in 'k' Aufteilungen geteilt wird, und eine Funktion wird über jede Aufteilung als ein separates ROBDD dargestellt. Jedoch lehrt diese Druckschrift nicht das Aufbauen einer zerlegten Aufteilungszeichenkette mit Komponenten (Komponenten-BBDs) oder die Kombination (Bewertung) dieser Komponenten in einer angeordneten Ordnung.
  • ARUNACHALAM P ET AL: 'Distributed binary decision diagrams for verification of large circuits' PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN. ICCD. VLSI IN COMPUTERS AND PROCESSORS. AUSTIN, OCT. 7–9, 1996, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, 7. Oktober 1996 (1996-10-07), Seiten 365–370, XP010201824 ISBN: 0-8186-7554-3 offenbart eine BDD basierte Prüftechnik, die das Speicherplatzproblem lindert, indem sie den Speicher ausnutzt, der in einem Cluster von Arbeitsstationen verfügbar ist.
  • JAIN J ET AL: 'A survey of techniques for formal verification of combinational circuits' COMPUTER DESIGN: VLSI IN COMPUTERS AND PROCESSORS, 1997, ICCD '97. PROCEEDINGS., 1997 IEEE INTERNATIONAL CONFERENCE ON AUSTIN, TX, USA 12–15 OCT. 1997, LOS ALAMITOS, CAI USA, IEEE COMPUT. SOC, US, 12. Oktober 1997 (1997-10-12), Seiten 445–454, X2010251772 ISBN: 0-8186-8206-X offenbart verschiedene Techniken, die für das Prüfen verfügbar sind, inklusive Techniken, die auf ROBDDs und freien BDDs basieren, wie oben bereits erwähnt. Das Konzept von aufgeteilten ROBDDs, in denen unterschiedliche Aufteilungen unterschiedliche Ordnungen haben können, wird offenbart.
  • Gemäß einem ersten Aspekt der Erfindung wird bereitgestellt: ein computerimplementiertes Verfahren der Bestimmung, ob erste und zweite Schaltungen, jede mit einem Satz von entsprechenden gemeinsamen Primäreingaben und entsprechenden gemeinsamen Primärausgaben, äquivalent sind, umfassend:
    Darstellen der ersten Schaltung als eine erste Boolesche Funktion;
    Darstellen der zweiten Schaltung als eine zweite Boolesche Funktion;
    Gewinnen einer dritten Funktion, die innerhalb eines Booleschen Raumes definiert ist, durch exklusives ODER-Verknüpfen der entsprechenden Primärausgaben der ersten und zweiten Booleschen Funktionen;
    Aufbauen eines zerlegten ersten Binärentscheidungsdiagramms für die dritte Funktion innerhalb des Booleschen Raumes;
    Aufteilen des Booleschen Raumes, in dem die dritte Funktion definiert ist, in erste und zweite Aufteilungen während der Zusammensetzung eines Zerlegungspunktes, wenn das Binärentscheidungsdiagramm, das sich aus der Zusammensetzung ergibt, eine vorbestimmte Beschränkung der Computerspeicherverwendung überschreitet;
    Aufteilen der ersten Aufteilung in eine Vielzahl erster Aufteilungen; und
    Aufbauen von Binärentscheidungsdiagrammen für die dritte Funktion in jeder der ersten Aufteilungen, außer, wenn eine vorbestimmte Beschränkung der Speicherverwendung überschritten wird; gekennzeichnet durch
    Darstellen der dritten Funktion in mindestens einer der ersten Aufteilungen, für die die vorbestimmte Beschränkung der Speicherverwendung überschritten war, mit einer symbolischen UND-Verknüpfung zwischen einer Vielzahl von Komponenten-Binärentscheidungsdiagrammen; und
    Bewerten der symbolischen UND-Verknüpfung durch UND-Verknüpfen von Komponenten-Binärentscheidungsdiagrammen, unter der Vielzahl von Binärentscheidungsdiagrammen, die die dritte Funktion in der mindestens einen der Aufteilungen darstellen, in einer angeordneten Ordnung, bis das Ergebnis der Bewertung Null ist.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung wird bereitgestellt: ein Computersystem zum Bestimmen, ob erste und zweite Schaltungen, jede mit einem Satz von entsprechenden gemeinsamen Primäreingaben und entsprechenden gemeinsamen Primärausgaben, äquivalent sind, umfassend:
    Mittel zum Darstellen der ersten Schaltung als eine erste Boolesche Funktion;
    Mittel zum Darstellen der zweiten Schaltung als eine zweite Boolesche Funktion;
    Mittel zum Gewinnen einer dritten Funktion, die innerhalb eines Booleschen Raumes definiert ist, durch exklusives ODER-Verknüpfen der entsprechenden Primärausgaben der ersten und zweiten Booleschen Funktionen;
    Mittel zum Aufbauen eines zerlegten ersten Binärentscheidungsdiagramms für die dritte Funktion innerhalb des Booleschen Raumes;
    Mittel zum rekursiven Aufteilen des Booleschen Raumes, in dem die dritte Funktion definiert ist, in erste und zweite Aufteilungen während der Zusammensetzung eines Zerlegungspunktes, wenn das Binärentscheidungsdiagramm, das sich aus der Zusammensetzung ergibt, eine vorbestimmte Beschränkung der Computerspeicherverwendung überschreitet;
    Mittel zum Aufteilen der ersten Aufteilung in eine Vielzahl erster Aufteilungen; und
    Mittel zum Aufbauen von Binärentscheidungsdiagrammen für die dritte Funktion in jeder der ersten Aufteilungen, außer, wenn eine vorbestimmte Beschränkung der Speicherverwendung überschritten wird; gekennzeichnet durch
    Mittel zum Darstellen der dritten Funktion in mindestens einer der ersten Aufteilungen, für die die vorbestimmte Beschränkung der Speicherverwendung überschritten war, mit einer symbolischen UND-Verknüpfung zwischen einer Vielzahl von Komponenten-Binärentscheidungsdiagrammen; und
    Mittel zum Bewerten der symbolischen UND-Verknüpfung durch UND-Verknüpfen von Komponenten-Binärentscheidungsdiagrammen, unter der Vielzahl von Binärentscheidungsdiagrammen, die die dritte Funktion in der mindestens einen der ersten Aufteilungen darstellen, in einer angeordneten Ordnung, bis das Ergebnis der Bewertung Null ist.
  • Somit sieht die vorliegende Erfindung ein Verfahren und System zum Bewerten von digitalen Schaltungen und Systemen vor, die anders unprüfbar sind, durch die Verwendung von BDD-basierenden Prüfungstechniken unter Verwendung von Fenstern von Boole-Raumdarstellungen der digitalen Schaltungen und Systeme. Bei der vorliegenden Erfindung wird die digitale Schaltung oder System als eine Boolesche Funktion dargestellt, die innerhalb eines Booleschen Raum definiert ist (ihn bildet). Der Boolesche Raum ist aufgeteilt in Aufteilungen, die rekursiv in noch weitere Aufteilungen aufgeteilt werden können. Aufteilungen, die sonst zu groß sind für die Bildung eine BDDs, werden anhand einer zerlegten Aufteilungszeichenkette ausgedrückt, die Komponenten-BDDs oder Elemente aufweist, die zur Bildung der Aufteilung kombinierbar sind. Diese Komponenten oder Elemente werde (UND-verknüpft) in einer angeordneten Ordnung. Wenn irgendeine der Kombinationen Null ergeben, dann ergibt die zerlegte Aufteilungszeichenkette auch Null. Somit ist das Kombinieren aller Komponenten oder Elemente unnötig, falls irgendeine Unterkombination Null ergibt, wodurch die Bewertung der von der zerlegten Aufteilungszeichenkette dargestellten Aufteilung erlaubt wird.
  • Dementsprechend kann die vorliegende Erfindung für die Überprüfung der Äquivalenz von ersten und zweiten Schaltungen verwendet werden. Die ersten und zweiten Schaltungen weisen korrespondierende Mengen von Primäreingaben und Primärausgaben auf. Die ersten und zweiten Schaltungen werden als Boolesche Funktionen dargestellt, und eine dritte Funktion innerhalb des Booleschen Raumes wird durch exklusives ODER-Verknüpfen der korrespondierenden Ausgaben der Booleschen Funktionen dargestellt. Beim Aufbau eines zerlegten Binärentscheidungsdiagramm für den Booleschen Raum wird der Boolesche Raum während der Zusammensetzung eines Zerlegungspunktes aufgeteilt, wenn das Binärentscheidungsdiagramm, das sich aus der Zusammensetzung ergibt, eine vorbestimmte Beschränkung der Computerspeicherverwendung überschreitet. Dann kann bestimmt werden, dass die Schaltungen äquivalent sind, wenn alle der resultierenden Aufteilungen Null sind.
  • Ferner kann die vorliegende Erfindung bei der partiellen Prüfung von anders unprüfbaren Schaltungen, Systemen und deren Entwürfen verwendet werden. Der Zustandsraum der Schaltung, des Systems oder Entwurfs ist in mehrfache Aufteilungen aufgeteilt. Diese Aufteilungen werden durch irgendeines von mehreren Verfahren gebildet, einschließlich Verfahren, die Testfolgen für die Schaltung, das System oder den Entwurf analysieren. Wenn ein Zwischen-BDD vordefinierte Beschränkungen der Speicherverwendung überschreitet, kann das BDD zusätzlich mit einem Null-Endvertex ersetzt werden und andere Aufteilungen des Zustandsraums können bewertet werden.
  • Diese und andere Merkmale der vorliegenden Erfindung werden leichter eingeschätzt, während selbige besser durch Bezugnahme auf die folgende detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen verstanden wird, bei denen: –
  • 1 ein logisches Entwurfsschema ist, das die Topologie einer digitalen Logikschaltung verdeutlicht;
  • 2 ein BDD für die Schaltung aus 1 ist;
  • 3 ein reduziertes BDD des BDD aus 2 ist;
  • 4 ein logisches Entwurfsschema ist, das die Topologie einer digitalen Logikschaltung verdeutlicht;
  • 5 ein BDD für den Eingabedraht N10 der Schaltung aus 4 ist;
  • 6 ein BDD für den Eingabedraht N11 der Schaltung aus 4 ist;
  • 7 ein BDD für den Draht N12 der Schaltung aus 4 ist;
  • 8 ein BDD für den Ausgabedraht N13 der Schaltung aus 4 ist;
  • 9 ein BDD ist, das Pseudovariablen einschließt;
  • 10 ein erstes aufgeteiltes BDD des BDDs aus 9 ist;
  • 11 ein zweites aufgeteiltes BDD des BDDs aus 9 ist;
  • 12 ein Flussdiagramm der obersten Ebene der Aufteilungsprüftechnik der vorliegenden Erfindung ist;
  • 13 ein Flussdiagramm ist, das ein Verfahren zur Bestimmung von Zerlegungspunkten der vorliegenden Erfindung verdeutlicht.
  • 14 ein Flussdiagramm einer Technik zur Bestimmung von BDD-Blow-ups während des Aufbaus einer zerlegten Darstellung der vorliegenden Erfindung ist;
  • 15 ein Flussdiagramm der Prüftechnik und der Technik zur Bildung von zerlegten Aufteilungszeichenketten (decomposed partition strings, DPS) der vorliegenden Erfindung ist;
  • 16 ein Flussdiagramm ist, das die Technik zur Untersuchung von zerlegten Aufteilungszeichenketten der vorliegenden Erfindung verdeutlicht; und
  • 17 ein Flussdiagramm ist, das die Technik zur Kombination von zerlegten Aufteilungszeichenketten der vorliegenden Erfindung verdeutlicht.
  • I. Übersicht
  • Die vorliegende Erfindung umfasst ein Verfahren und System der Schaltungs- oder Systemprüfung, wobei das Aufteilen eines Booleschen-Logik-Raumes, der die Schaltung oder das System darstellt, durch Zusammensetzen an Zerlegungspunkten durchgeführt wird. Jede Zusammensetzung teilt den Booleschen Raum in zwei separate Aufteilungen auf. Die Zusammensetzung wird durch die Verwendung von Shannons Gleichung und eine funktionelle Beschränkung auf den BDDs durchgeführt. Somit stellt jede Aufteilung einen disjunkten Teil des Booleschen Raums dar.
  • Bei der Bestimmung, ob eine erste Schaltung einer zweiten Schaltung äquivalent ist, wird jede Primärausgabe der beiden Schaltungen in einer exklusiven ODER (XODER) Operation kombiniert. Wenn die Ausgaben aller XODER-Operationen immer gleich null sind, dann sind die beiden Schaltungen äquivalent. Dementsprechend umfasst der gesamte Boolescher Raum daher eine Darstellung F einer ersten Schaltung und eine Darstellung G einer zweiten Schaltung, deren Primärausgaben in einer XODER-Operation kombiniert werden. Somit müssen, damit durch F und G dargestellte Schaltungen äquivalent sind, der Boolesche Raum von F XODER G stets null sein. Wenn der Boolesche Raum von F XODER G in irgendeine Anzahl von disjunkten Aufteilung aufgeteilt ist, muss ebenso jede dieser Aufteilungen gleich null sein, damit der gesamte Boolesche Raum F XODER G gleich null ist. Somit können OBDDs für jede der separaten Aufteilungen aufgebaut werden, und jedes der OBDDs kann überprüft werden, um zu bestimmen, ob sich die OBDDs auf Null reduzieren, d. h., nur einen einzigen Endvertex aufweisen, der gleich null ist. Wenn alle Aufteilungen sich auf Null reduzieren, dann redu ziert sich F XODER G auf Null, und F und G stellen äquivalente Schaltungen dar.
  • Alternativ können die Darstellungen F und G separat manipuliert werden, und resultierende ROBDDs können nachfolgend verglichen werden.
  • Die Verwendung von aufgeteilten ROBDDs bedeutet, dass nur ein ROBDD, das weniger als den ganzen Booleschen Raum darstellt, sich im Speicher zu jedem Zeitpunkt befinden muss. Da jedes aufgeteilte ROBDD kleiner ist als irgendein monolithisches ROBDD, sind nun zusätzliche Klassen von Problemen, die sonst aufgrund von Zeit- und Speicherbeschränkungen unlösbar wären, lösbar. Des Weiteren, da jedes aufgeteilte ROBDD sich auf Null reduzieren muss, damit die Schaltungen äquivalent sind, kann die Verarbeitung anhalten, sobald ein aufgeteiltes ROBDD gefunden wird, das sich nicht auf Null reduziert, wodurch zusätzliche Verarbeitungszeit eingespart wird. Ferner kann die Variablenordnung jedes ROBDDs unterschiedlich sein, wodurch die Größe einzelner ROBDD weiter reduziert werden kann.
  • Aufteilungen werden gebildet, indem Zerlegungspunkte zusammengesetzt werden. Zerlegungspunkte werden auf einige Arten gefunden. Wenn ein Punkt ein bekannter Äquivalenzpunkt ist, wird an dem Zerlegungspunkt unter Verwendung des äquivalenten OBDDs eine Aufteilung gebildet.
  • Zerlegungspunkte werden auch basierend auf Explosionsprinzipien bestimmt. Monolithische OBDDs werden allgemein aus den Primäreingaben zu den Primärausgaben hin unter Verwendung der Apply-Prozedur aufgebaut. Dies wird gemacht, bis ein monolithisches OBDD, das die Primärausgaben anhand von den Primäreingaben ausdrückt, konstruiert ist. Wenn während dieses Prozesses ein OBDD um einen Knotenpunkt im Sinne der Speicherverwen dung explodiert, dann wird dieser Punkt als ein Zerlegungspunkt markiert, und der Punkt wird in eine Pseudovariable umgewandelt. Bei Aufbau von OBDDs, die näher an den Primärausgaben liegen, wird die Pseudovariable anstelle des OBDDs verwendet, dass ansonsten verwendet würde. Ein BDD, das eine Pseudovariable b nutzt, wird in 9 verdeutlicht.
  • Ein Prozedur zur Bestimmung von Zerlegungspunkten im Zusammenhang mit dem Aufbau eines zerlegten BDDs zur Schaltungsdarstellung, die n Gatter oder Knotenpunkte aufweist, wird in 13 verdeutlicht. In Schritt 130 wird ein Zähler auf die erste Primäreingabe eingestellt. Schritt 131 bestimmt, ob versucht wurde, die BDDs für alle Gatter oder Knotenpunkte aufzubauen. Schritt 132 baut Zwischen-BDDs für jedes Gatter oder jeden Knotenpunkt auf, bis ein größenmäßiger BDD-Blow-up stattfindet. Wenn ein solcher Blow-up stattfindet, markiert Schritt 134 das Gatter oder den Knotenpunkt als einen Zerlegungspunkt, und Schritt 135 setzt eine Pseudovariable für das BDD für das als Zerlegungspunkt markierte Gatter oder Knotenpunkt ein.
  • Eine solche Prozedur sorgt für mindestens zwei Vorteile. Die Notwendigkeit, ein BDD um den Knotenpunkt herum aufzubauen, entfällt. Das heißt, das Zwischen-BDD, das speichermäßig explodiert, muss wegen späterer Operationen nicht notwendig sein. Als Beispiel wird eine einfache Schaltung, die Zwischen-BDDs aufweist, die größenmäßig größer sind, als das letzte BDD, in 4 gezeigt. Die einfache Schaltung umfasst ein ODER-Gatter 31 und ein UND-Gatter 33. Das ODER-Gatter weist Eingaben N10 und N11 auf. Die Ausgabe N12 des ODER-Gatters wird dem UND-Gatter zugeführt, dessen andere Eingabe N11 ist. Die Ausgabe des UND-Gatters ist N13. Das BDD für N10 wird in 5 gezeigt, und umfasst einen Knotenpunkt N12 mit zwei Verzweigungen, jeweils zu einem Endvertex. Das BDD für N11 ist ähnlich, und wird in 6 gezeigt. Das BDD für N12 wird in 7 ge zeigt und umfasst 2 Knotenpunkte. Das BDD für N13 hat jedoch nur 1 Knotenpunkt, wie in 8 gezeigt wird, wie ersichtlich wird, wenn verstanden wird, dass N13 = (N10 ODER N11) UND N11, was einfach N13 = N11 ergibt. Somit ist das letzte BDD für die Schaltung kleiner als mindestens eines der Zwischen-BDDs, und der Aufbau der Zwischen-BDDs ist nicht notwendig.
  • Nichtsdestotrotz muss eine kanonische und leicht zu analysierende Darstellung für die Zielfunktion (zum Beispiel die Ausgabefunktionen) noch immer aufgebaut werden. Um eine BDD-Explosion in diesem Fall zu vermeiden, kann das BDD während der Zusammensetzung der Zerlegungspunkte aufgeteilt werden. Somit verdeutlichen die 10 und 11 die beiden Aufteilungen, die aus dem Zusammensetzen der Pseudovariable b des BDDs aus 9 resultieren. Da so ein aufgeteiltes BDD von geringerer Größe ist als ein BDD, das die Summe der Aufteilungen ist, wird eine reduzierte Menge an Speicher oder Zeit benötigt.
  • 12 stellt einen Überblick eines Verfahrens der Schaltungsprüfung für eine Schaltung 1 und eine Schaltung 2 unter Verwendung einer Aufteilungstechnik bereit. Im Überblick stellt C eine Kombination der Schaltungen 1 und 2 dar, und F ist eine Boolesche Funktion, die die Schaltung C darstellt. In Schritt 120 wird eine Zerlegung in C für Zerlegungsmengen aus den Primäreingaben zu den Primärausgaben gebildet. In Schritt 122 wird die Funktion F durch eine Kombination von Primäreingaben und Pseudovariablen dargestellt. In Schritt 124 wird die Darstellung der Funktion F zusammengesetzt und in aufgeteilte OBDDs aufgeteilt. Schritt 126 bestimmt, ob irgendwelche der resultierenden OBDDs nicht gleich null ist. Falls irgendwelche der resultierenden OBDDs nicht gleich null sind, dann erklärt Schritt 127 Schaltung 1 und Schaltung 2 als nicht äquivalent. Sonst erklärt Schritt 128 Schaltung 1 und Schaltung 2 als äquivalent.
  • OBDDs werden für jede Aufteilung erzeugt. Falls eine Aufteilung einen weiteren Zerlegungspunkt enthält, muss vielleicht weiteres Aufteilen durchgeführt werden. Jede Aufteilung kann selbst in zwei disjunkte Boolesche Räume aufgeteilt werden, und jede Unteraufteilung kann weiter in disjunkte Boolesche Räume aufgeteilt werden. Somit kann der Boolesche Raum in eine große Anzahl von OBDDs aufgeteilt werden, von denen jedes klein ist.
  • Einige Aufteilungen können zu groß für den Aufbau von BDDs bleiben. Jedoch werden die Aufteilungen aus einer zerlegten Aufteilungszeichenkette gebildet. Die zerlegte Aufteilungszeichenkette ist eine Zeichenkette von Komponenten oder Elementen, die zusammen UND-verknüpft sind. Wenn eine bestimmte Aufteilung als ein Ergebnis der rekursiven Aufteilung einer Anzahl von Aufteilungen höherer Ebenen gebildet wird, kann diese Zeichenkette eine Anzahl von Komponenten enthalten. Falls irgendwelche der Komponenten zusammen UND-verknüpft sind, und das Ergebnis null ist, dann muss die Zeichenkette, und somit die Aufteilung, auch null sein.
  • Entsprechend wird die Ordnung des Aufbaus einer zerlegten Aufteilungszeichenkette erreicht, indem eine anordnende Ordnung verwendet wird. Man betracht zum Beispiel das Problem des Konstruierens des aufgeteilten ROBDDs von f, wobei f = a, b, c, d, e und a, b, c, d, e alle Boolesche Funktionen sind, die einen Abschnitt der Topologie eines Systems oder einer Schaltung darstellen. In einer bevorzugten Ausführungsform werden a, b, c, d, und e sowohl anhand ihrer Größe (ausgedrückt anhand der Anzahl der Knotenpunkte) als auch des Ausmaßes, in dem sie jeweils ein Minimum an zusätzlicher Unterstützung in Bezug aufeinander aufweisen, eingeordnet. Diese Einordnung bestimmt die Anordnung, anhand derer die Komponenten kombiniert werden, wobei Komponenten von minimaler Größe und zusätzlicher Unter stützung zuerst kombiniert werden. Das Vorangegangene, wie auch zusätzliche Details, werden vollständiger im Folgenden beschrieben.
  • II. Aufgeteilte ROBDDs
  • A. Definition
  • Man nehme an, es gebe eine Boolesche Funktion f: Bn → B, die über n Eingaben Xn = {x1, ..., xn} definiert ist. Die Darstellung des aufgeteilten ROBDD, Xf, von f ist wie folgt definiert:
    Definition 1. Gegeben sei ein Boolesche Funktion f: Bn → B, definiert über Xn, eine Darstellung eines aufgeteilten ROBDD Xf von f ist eine Menge von k Funktionspaaren, Xf = {(w1, f1) ..., (wk, fk)} wobei, wi: Bn → B und f i: Bn → B, für 1 ≤ i ≤ k ebenso über Xn definiert sind und die folgenden Bedingungen erfüllen:
    • 1. wi und fi werden als ROBDDs mit der Variablenordnung πi dargestellt, für 1 ≤ i ≤ k.
    • 2. w1 + w2 + ... + wk = 1
    • 3. f i = wi ∧ f, für 1 ≤ i ≤ k
  • Hier stellen + und ∧ jeweils Boolesches ODER und UND dar. Die Menge {w1, ..., wk} wird durch W bezeichnet. Jedes wi wird Fensterfunktion genannt. Intuitiv stellt eine Fensterfunktion wi einen Teil des Booleschen Raums dar, über den f definiert ist. Jedes Paar (wi, f i) stellt eine Aufteilung der Funktion f dar. Hier wird der Begriff "Aufteilung" nicht im herkömmlichen Sinne benutzt, in dem die Aufteilung disjunkt sein müssen. Falls zusätzlich zu den Bedingungen 1–3 in Definition 1, wi ∧ wj = 0 für i ≠ j ist, dann sind die Aufteilungen orthogonal; und jedes (wi, f i) ist nun eine Aufteilung im herkömmlichen Sinn.
  • Bedingung 1 in Definition 1 sagt aus, dass jede Aufteilung eine dazugehörige Variablenordnung aufweist, die von der Variablenordnung anderer Aufteilungen verschieden sein kann oder nicht. Bedingung 2 sagt aus, dass die wis den gesamten Booleschen Raum abdecken. Bedingung 3 sagt aus, dass f i dasselbe ist wie f über den gesamten durch wi abgedeckten Booleschen Raum. Allgemein kann jedes f i als wif i dargestellt werden; der Wert von f i ist für den Teil des nicht durch wi abgedeckten Booleschen Raumes ein beliebiger. Die Größe eines ROBDD F wird durch |F| bezeichnet. Somit wird die Summe der Größen aller Aufteilungen, die durch |Xf| bezeichnet wird, gegeben durch |Xf| = (|f 1| + ... |f k| + |w1| + ... + |wk|). Aus den Bedingungen 2 und 3 folgt sofort, dass: f = f 1 + f 2 + ... + f k (1)
  • Diese Art der Aufteilung, bei der f als eine Disjunktion von f is ausgedrückt wird, wird disjunktive Aufteilung genannt. Eine konjunktive Aufteilung kann als das Duale der obigen Definition definiert werden. Das heißt, die i-te Aufteilung wird gegeben durch (wi, f i), Bedingung 2 in Definition 1 wird zu w1 ∧ ... ∧ wk = 0, und Bedingung 3 wird zu f i = wi + f. In diesem Falle gilt f = (f 1∧ ... ∧f k).
  • B. Kanonizität von aufgeteilten ROBDDs
  • Für eine gegebene Menge W = {wi, ..., wk} und eine gegebene Ordnung πi für jede Aufteilung i ist die Darstellung eines aufgeteilten ROBDD kanonisch. Für eine gegebene Funktion f und eine gegebene Darstellung eines aufgeteilten ROBDD Xf = {(wi, f i)|1 ≤ i ≤ k} von f ist f i eindeutig. Da jedes f i als ROBDD, das kanonisch ist (für eine gegebene Ordnung πi, dargestellt wird, ist die Darstellung eines aufgeteilten ROBDD kanonisch.
  • Wenn eine Aufteilung des Booleschen W = {w1, ..., wk} gegeben ist, ist die asymptotische Komplexität der Durchführung grundlegender Boolescher Operationen (z. B. NICHT, UND, ODER) auf den Darstellungen eines aufgeteilten ROBDD polynomisch bei den Größen der Operanden, dasselbe, wie ROBDDs. Daher kostet die Kompaktheit der Darstellung nichts, was die Effizienz der Manipulation angeht. Tatsächlich ist, da aufgeteilte ROBDDs allgemein kleiner sind als monolithische ROBDDs, und da jede Aufteilung unabhängig manipuliert werden kann, deren Manipulation auch effizienter.
  • Wie bei A. Narayan et al., Partitioned-ROBDDs – A Compact, Canonical and Efficiently Manipulable Representation of Boolean Functions, ICCAD, November 1996, was durch Bezugnahme hierin umfasst wird, besprochen wurde, seien f und g zwei Boolesche Funktionen, und Xf = {(wi, f i)|1 ≤ i ≤ k} und Xg = {(wi, g i)|1 ≤ i ≤ k} seien deren jeweiligen aufgeteilte ROBDDs, die die Bedingungen 1–3 in Definition 1 erfüllen. Man nehme ferner an, dass die i-ten Aufteilungen sowohl in Xf und Xg dieselbe Variablenordnung πi haben. Dann ist (a)
    Figure 00190001
    das aufgeteilte ROBDD, das f darstellt (d. h. NICHT von f); und, (b) Xf ⊙ g = {(wi, wi ∧ (f i ⊙ gi))|1 ≤ i ≤ k} ist die Darstellung eines aufgeteilten ROBDD von f ⊙ g, wobei ⊙ irgendeine binäre Operation zwischen f und g darstellt.
  • C. Komplexität von Operationen
  • Sind zwei ROBDDs F und G gegeben, dann kann die Operation F ⊙ G in O(|F||G|) Raum und Zeit durchgeführt werden. Bei auf geteilten ROBDDs werden verschiedene Aufteilungen unabhängig manipuliert, und die Zeitkomplexität im schlimmsten Fall von f ⊙ g ist
    Figure 00200001
    was O(|Xf||Xg|) ist. Da nur eine Aufteilung zu jedem Zeitpunkt im Speicher sein muss, ist die Raumkomplexität im schlimmsten Fall durch max (|f i||g i|) gegeben, was allgemein ≪ |Xf||Xg| ist. Ähnlich zu ROBDDs kann die Größe der erfüllenden Menge einer Funktion f in O(|Xf|) für orthogonal aufgeteilte ROBDDs berechnet werden.
  • D. Existentielle Quantifizierung
  • Neben den grundlegenden Booleschen Operationen ist eine weitere nützliche Operation, die weithin bei der formellen Prüfung sequentieller Schaltungen genutzt wird, die existentielle Quantifizierungsoperation (∃xf). Die existentielle Quantifizierung der Variablen x aus der Funktion f(∃xf) ist gegeben durch
    Figure 00200002
    wobei fx und
    Figure 00200003
    jeweils die positiven und negativen Kofaktoren von f sind. Bei der Darstellung eines aufgeteilten ROBDD können die Kofaktoren leicht durch Kofaktorieren jedes wi und f i in Bezug auf X erhalten werden, d. h.,
    Figure 00200004
    Figure 00200005
    und (wi, fi) ∊ Xf} und
    Figure 00200006
    und (wi, fi) ∊ Xf}. Nach der Durchführung der Kofaktorierungsoperation jedoch weisen die positiven und negativen Kofaktoren unterschiedliche Fensterfunktionen auf (gegeben durch wi bzw. wi) und die Disjunktion kann nicht direkt auf den Aufteilungen durchgeführt werden. Das Problem entsteht nicht, wenn wir Fensterfunktionen wählen, die nicht von den Variablen abhängen, die quantifiziert werden müssen. Existentielle Quantifizierung kann wie folgt durchgeführt werden:
    Sei Xf = {(wi, fi)|1 ≤ i ≤ k} eine Darstellung eines aufgeteilten ROBDD von f, so dass ∃xwi = wi, für 1 ≤ i ≤ k. Dann ist X∃xf = (wi, ∃xfi)|1 ≤ i ≤ k die Darstellung eines aufgeteilten ROBDD von ∃xf.
  • Eine weitere wichtige Operation, die oft benutzt wird, ist die universelle Quantifizierung von X aus f (bezeichnet durch ∀ xf). Eine ausreichende Bedingung für die universelle Quantifizierung ist, dass die Fensterfunktionen orthogonal sind, zusätzlich dazu, dass sie unabhängig von den zu quantifizierenden Variablen sind. Universelle Quantifizierung kann wie folgt durchgeführt werden: Sei Xf = {(wi, fi)|1 ≤ i ≤ k} eine Darstellung eines aufgeteilten ROBDD von f so dass ∀ xwi = wi und wi ∧ wj = 0 für 1 ≤ i, j ≤ k und i ≠ j. Dann ist χ ∀ xf = {(wi, ∀ xfi)/1 ≤ i ≤ k} die Darstellung eines aufgeteilten ROBDD von ∀ xf.
  • III. Heuristiken zur Konstruktion von aufgeteilten ROBDDs
  • Die Leistung von aufgeteilten ROBDDs hängt in kritischer Weise von der Erzeugung von Aufteilungen des Booleschen Raums ab, über den die Funktion kompakt dargestellt werden kann. Das Problem, solche Aufteilungen des Booleschen Raums zu finden, ist so zentral bei der Darstellung eines aufgeteilten ROBDD, wie es das Problem, gute Variablenordnungen zu finden, für monolithische ROBDDS ist. Einfache Heuristiken, die bei der Erzeugung kompakter orthogonal aufgeteilter ROBDDs effektiv sind, werden unten besprochen. Obwohl ein Boolesches Netzlistenmodell bei der folgenden Besprechung verwendet wird, sind die Techniken allgemein und können in jeder beliebigen Reihenfolge Boolescher Operationen angewendet werden.
  • Eine gegebene Funktion F wird zuerst zerlegt, und die Fensterfunktionen zur Schaffung der aufgeteilten ROBDDs von F werden durch Analysieren der zerlegten BDDs für F erhalten. Die Zahl der Fenster wird entweder a priori oder dynamisch entschieden. Nach dem ein Fenster wi entschieden wurde, wird ein aufgeteiltes ROBDD, das dem entspricht, erhalten, indem F in dem Booleschen Raum zusammengesetzt wird, der dem Fenster w1 entspricht.
  • A. Schaffung einer zerlegten Darstellung
  • Wenn eine Schaltung, die eine Boolesche Funktion f: Bn → B, die über Xn = {x1 ... xn} definiert ist, gegeben ist, besteht die Zerlegungsstrategie aus der Einführung neuer Variablen, basierend auf der Erhöhung der ROBDD-Größe während einer Folge von ROBDD Operationen. Eine neue Variable wird eingeführt, wann immer die Gesamtzahl an Knotenpunkten in einem ROBDD-Manager um ein überproportionales Maß aufgrund irgendeiner Operation ansteigt. Wenn zum Beispiel R sehr groß wurde, während die Operation R = R1 + R2 auf den ROBDDs R1 und R2 durchgeführt wurde, wird die Operation rückgängig gemacht. Anstelledessen werden neue Variablen Ψ1 und Ψ2 eingeführt, und R wird als Ψ1 + Ψ2 ausgedrückt. Ein separates Feld wird erhalten, das die ROBDDs, die den Zerlegungspunkten entsprechen, enthält. R1 und R2 die Ψ1 und Ψ2 entsprechen, werden diesem Feld hinzugefügt. Auf diese Weise werden die Instanzen schwieriger funktioneller Manipulationen auf ein späteres Stadium verschoben. Aufgrund Boolescher Vereinfachung kann es sein, dass viele dieser Fälle im Endergebnis nie auftreten werden, insbesondere dann, wenn die letzte Speicheranforderung viel geringer ist, als die Zwischenpeakanforderung, wie sie bei J. Jain et al. Decomposition Techniques for Efficient ROBDD Construction, LNCS, Formal Methods in CAD 96, Springer-Verlag, November, 1996, ausgeführt wird, was durch Bezugnahme hierin umfasst wird.
  • In einer bevorzugten Ausführungsform wird die Überprüfung auf Speicherexplosion nur dann durchgeführt, wenn die Managergröße größer als ein bestimmter Schwellenwert ist. Auch werden Zerlegungspunkte hinzugefügt, wenn das ROBDDs über einen weiteren Schwellenwert hinaus wächst. Dies stellt sicher, dass die Zerlegungspunkte selbst keine sehr großen ROBDDs aufweisen. Selbst ein einfaches, auf Größe basierendes Zerlegungsschema funktioniert ziemlich effektiv zur Demonstration des Potentials von aufgeteilten OBDDs.
  • Am Ende der Zerlegungsphase wird eine zerlegte Darstellung erhalten. Die zerlegte Darstellung ist fd(Ψ, X), von f, wobei Ψ = {Ψ1, ... Ψk} eine Zerlegungsmenge der Schaltung genannt wird, und jedes Ψi ∊ Ψ ein Zerlegungspunkt ist. Ψbdd = {Ψ1bbd, ..., Ψkbdd} stelle das Feld dar, dass die ROBDDs der Zerlegungspunkte enthält, d. h., jedes Ψi ∊ Ψ hat ein entsprechendes ROBDD, Ψ1bdd, ∊ Ψbdd, in Bezug auf Primäreingabevariable, wie auch (möglicherweise) andere Ψj ∊ Ψ, wobei Ψj ≠ Ψi. Ähnlich wird das Feld von Ψibddw durch Ψbddwi dargestellt. Die Zusammensetzung von Ψi in fd(Ψ, X) wird durch fd(Ψ; X). (Ψi ← Ψibdd) bezeichnet, wobei fd(Ψ, X)·(Ψi ← Ψibdd) = Ψibdd·fd + Ψibdd·fdΨi [4]
  • Die Vektorzusammensetzung der Ψ in fd(Ψ, X) wird als fd(Ψ; X) bezeichnet. (Ψ ← Ψbdd) und stellt aufeinanderfolgende Zusammensetzung von Ψi's in fd dar.
  • B. Aufteilen einer zerlegten Darstellung
  • 1. Schaffung von f, für ein gegebenes wi
  • Ist eine Fensterfunktion wi gegeben, wird eine zerlegte Darstellung fd(Ψ, X), und das ROBDD-Feld Ψbdd von f, ein fi gewünscht, derart, dass das ROBDD, dass f1 = w1 ∧ fi darstellt, kleiner ist als f. Die folgende Beobachtung ist wichtig:
    Beobachtung 1: Sei fi = fdwi(Ψ, X)(Ψ ← Ψbdd,) und f = fd(Ψ, X)(Ψ ← Ψbdd). Wenn wi eine dritte Potenz auf PIs ist, dann gilt |fi| ≤ |f| für jede gegebene Variablenordnung von f und f.
    Beweis: Uns ist
    Figure 00240001
    gegeben. Wenn wi nur von PIs abhängig ist, dann kann die Ordnung des Kofaktorierens und Zusammensetzens geändert werden. Somit gilt
    Figure 00240002
    Figure 00240003
    Dies liefert
    Figure 00240004
    Wenn wi eine dritte Potenz ist, dann gilt
    Figure 00240005
    und somit |fi|| ≤ |f|. Nun sind gegeben
    Figure 00240006
    und wisi, die Kofaktoren
    Figure 00240007
    und
    Figure 00240008
    . Durch Zusammensetzen von
    Figure 00240009
    in
    Figure 00240010
    , kann die Aufteilungsfunktion geschaffen werden,
    Figure 00240011
    wird gebildet. Somit ist, wenn eine Menge von Fensterfunktionen wi gegeben ist, das aufgeteilte ROBDD χf von f durch
    Figure 00240012
    gegeben. Es ist leicht zu überprüfen, dass die obige Definition alle Bedingungen der Definition 1 erfüllt. Wenn wi eine dritte Potenz ist, hat fi garantiert eine geringere Größe als das ROBDD für f. Auch hat das ROBDD, das wi darstellt, k interne Knotenpunkte, wobei k die Anzahl der Literalen in wi ist. Da wi und
    Figure 00240013
    disjunkte Unterstützung aufweisen, gilt |f i| = |wi ∧ fi| = (k + |fi|) ≈ |fi|. Da auch jedes Zwischenergebnis des Aufbaus von fi kleiner sein wird, als das des Aufbaus von f, wird die Zwischenpeakspeicheranforderung ebenfalls reduziert.
  • Man beachte, dass die Beobachtung 1 nicht in der Gegenwart dynamischen Variablenumordnens gilt, wenn f and fi verschiedene Variablenordnungen haben können. Da jedoch in der Praxis das dynamische Variablenumordnen an kleineren Graphen funktioniert, ist es vielleicht im Fall des Aufteilens sogar effektiver. Sogar, wenn die Fensterfunktion eine komplexere Funktion von PIs ist, als eine dritte Potenz, wird
    Figure 00240014
    verwendet.
  • Hierbei ist
    Figure 00250001
    der verallgemeinerte Kofaktor von f auf wi. Der verallgemeinerte Kofaktor von f auf wi ist allgemein viel kleiner als f. Aber in diesem Fall kann im schlimmsten Fall die Größe des i-ten aufgeteilten ROBDD |f i| O(|wi||fi| sein. Um dies zu vermeiden, nutze man wis, die klein sind, wenn man allgemeine Fensterfunktionen verwendet.
  • 2. Auswahl von Fensterfunktionen
  • Verfahren zum Erhalten guter Fensterfunktionen können in zwei Kategorien unterteilt werden, a-priori-Auswahl und "Explosions"-basierte Auswahl.
  • a. A-priori-Aufteilen
  • A-priori-Aufteilen verwendet eine vorbestimmte Anzahl von PIs zum Aufteilen. Wenn somit das Aufteilen auf 'k' PIs durchgeführt wird, werden 2k Aufteilungen geschaffen, die allen binären Zuordnungen dieser Variablen entsprechen. Wenn zum Beispiel das Aufteilen auf x1 und x2 durchgeführt wird, dann werden vier Aufteilungen x1x2, x1 x 2, x 1x2 und x 1 x 2 geschaffen. Es ist garantiert, dass diese aufgeteilten ROBDDs kleiner sind, als das monolithische ROBDD. Speicheranforderungen sind stets geringer, da nur eine Aufteilung im Speicher zu jedem Zeitpunkt sein muss, diese Reduktion an Speicher ist groß, und wird von einer Gesamtreduktion in der Zeit begleitet, die gebraucht wird, um alle Aufteilungen auch zu verarbeiten.
  • Beim Auswählen von Variablen zum Aufteilen ist es wünschenswert, dass die Variablen ausgewählt werden, die die Aufteilungen maximieren, die erreicht wurden, während die Redundanz minimiert wird, die entstehen kann, wenn verschiedene Aufteilungen unabhängig geschaffen werden. Die Kosten des Aufteilens einer Funktion f auf der Variablen x wird definiert als costx(f) = α[px(f)] + β[rx(f)]wobei px(f) den Aufteilungsfaktor darstellt und gegeben ist durch,
    Figure 00260001
    und rx(f) stellt den Redundanzfaktor dar und wird gegeben durch
    Figure 00260002
  • Ein geringerer Aufteilungsfaktor ist gut, da er impliziert, dass die schlechteste der beiden Aufteilungen klein ist. Ähnlich ist ein geringerer Redundanzfaktor gut, da er impliziert, dass die Gesamtarbeit, die mit der Schaffung der beiden Partitionen verbunden ist, geringer ist. Die Variable x, die die geringeren Gesamtkosten aufweist, wird zum Aufteilen ausgewählt. Für einen gegebenen Vektor von Funktionen F und eine Variable x werden die Kosten der Aufteilung definiert als:
    Figure 00260003
  • Die PIs werden in ansteigender Ordnung ihrer Kosten des Aufteilens fd und Ψ angeordnet. Die besten 'k' werden ausgewählt, wobei 'k' eine vorbestimmte Anzahl ist, die vom Nutzer angegeben wird. Eine ähnliche Kostenfunktion erlaubt das Auswählen von nicht nur PI-Variablen, sondern auch von Pseudovariablen, wie etwa ein
    Figure 00260004
    , ausgedrückt anhand von PIs, um aufgeteilte ROBDDs zu schaffen. In diesem Fall werden die Kofaktoroperationen verallgemeinerte Kofaktoroperationen für Fensterfunktionen, die nicht dritte Potenzen sind. Diese Art der Auswahl, bei der alle PIs nach ihren Kosten des Aufteilens fd und Ψ eingeordnet sind, wird eine statische Aufteilungsauswahl genannt.
  • Eine dynamische Aufteilungsstrategie ist eine, bei der das beste PI (sagen wir, x) ausgewählt wird, basierend auf fd und Ψ, und dann werden die nachfolgenden PIs rekursiv basierend auf fd und Ψ in einer Aufteilung und in
    Figure 00270001
    und Ψx in der anderen Aufteilung ausgewählt. Dynamisches Aufteilen erfordert eine exponentielle Anzahl von Kofaktoren und kann teuer sein. Diese Kosten können etwas reduziert werden, in dem man die Tatsache ausnutzt, dass die einzigen Werte, die von Interesse sind, die Größen der Kofaktoren von fd und
    Figure 00270002
    sind. Eine obere Grenze auf dem Wert von
    Figure 00270003
    , die quer zum ROBDD von fd verläuft und die Verzweigung x = 1 nimmt, wann immer dem Knotenpunkt mit der Variable id, die x entspricht, begegnet wird. Dieses Verfahren liefert nicht die exakte Zählung, da das BDD, dass durch das Durchqueren des ROBDD auf diese Weise erhalten wird, nicht reduziert wird. Der Vorteil ist, dass keine neuen Knotenpunkte geschaffen werden müssen, und das Überqueren schnell ist.
  • b. Explosions-basiertes Aufteilen
  • Bei diesem Verfahren werden die
    Figure 00270004
    in fd nacheinander zusammengesetzt. Wenn die Größe des Graphen für irgendeine Zusammensetzung sich drastisch vergrößert (sagen wir, für Ψj), wird eine Fensterfunktion w ausgewählt, basierend auf dem gegenwärtigen fd und
    Figure 00270005
    . (Die Fensterfunktionen sind entweder ein PI und sein Komplement, oder irgendein
    Figure 00270006
    und sein Komplement, das anhand nur von PIs ausgedrückt wird und eine sehr geringe Größe aufweist.) Wenn einmal die Fensterfunktion w erhalten wurde, werden zwei Aufteilungen
    Figure 00270007
    und
    Figure 00280001
    geschaffen. Die Explosions-basierte Aufteilungsroutine wird rekursiv auf jeder dieser Aufteilungen aufgerufen.
  • Man betrachte zwei Schaltungen A und B, für die eine Aquivalenzüberprüfung gewünscht wird. Die Schaltungen A und B weisen korrespondierende Primärausgaben F1 und F2 auf. Um Äquivalenz zu zeigen, muss F = F1eF2 = 0 wahr sein. Um zu bestimmen, ob dies wahr ist, wird ein BDD für F unter Verwendung von Schnittmengen von internen Äquivalenzpunkten aufgebaut. Bei diesem Prozess können viele Ausgaben als äquivalent erklärt werden, einfach indem man ihre BDDs anhand der nächsten Schnittmenge μi = {Ψ1, ..., Ψk} von äquivalenten Gattern aufbaut. Dieser Prozess kann sehr effizient sein, wenn das Ausgabe-BDD für F leicht unter Verwendung von μi aufgebaut werden kann, und das Ausgabe-BDD sich zu Boolescher 0 reduziert. Dies bedeutet, dass F1, F2 funktionell äquivalent sind. Manchmal ist jedoch das BDD F(μ1) sehr groß und kann daher nicht konstruiert werden. Auch kann F(μ1) sich möglicherweise nicht 0 reduzieren, wobei in diesem Fall das BDD anhand einer anderen Schnittmenge μj zusammengesetzt werden muss, wobei μj eine Schnittmenge ist, die zwischen Primäreingaben und die vorangegangene Schnittmenge μi fällt. Während dieses Zusammensetzungsprozesses kann das BDD wiederum explodieren, bevor die Äquivalenzen von F1, F2 aufgelöst werden können. Die BDD-Aufteilungsstrategie nutzt im Wesentlichen die obigen Szenarien aus, die sehr wichtige sind, da die normalen Methoden in diesen Fällen scheitern.
  • Die BDD-Aufteilungsstrategie ist zum Teil dafür da, F(μi) zu F(μj) zusammenzusetzen, und um aufzuteilen, wenn das Zusammensetzungsergebnis irgendeine Grenze überschreitet, wenn die Größe des Graphen für irgendeine Zusammensetzung sich drastisch vergrößert (sagen wird, des BDDs, das dem Gatter Ψj entspricht). Um diese Grenze auszuwählen, wird die Kenntnis von verschiedenen größenbezogenen Parametern während des Prozesses der Zusammensetzung von BDD F(μi) zu F(μj) beibehalten. Um diese Parameter zu erklären, betrachte man, dass eine Anzahl h von BDDs bereits zusammengesetzt wurden, wobei 1 ≤ h ≤ k aus der Menge {Ψ, ...‚ Ψk}. Als Beispiel nehme man an, dass die Ordnung, in der die BDDs zusammengesetzt sind, gemäß des ansteigenden Index der Ψ Variablen sei. (Das heißt, die BDDs werden zusammengesetzt in der Ordnung Ψ1, Ψ2, ... Ψh ..) Das BDD von Ψ, das anhand der Schnittmenge Ψi erstellt wurde, wird als Ψij) geschrieben. Eine Routine, DYNAMIC_BDD_PARTITION, zum dynamischen Bestimmen, wann ein BDD aufzuteilen ist, nutzt das folgende:
  • Prozedur: DYNAMIC_BDD_PARTITION
    • 1. ORIG_SIZE ist die ursprüngliche BDD-Größe von F(μi), ausgedrückt anhand der Schnittmenge μj.
    • 2. COMPOSED_ARGUMENT_SIZE ist die Summe jedes BDDs Ψ1j), Ψ2j), ..., Ψhj), das in dem BDD F(μi) zusammengesetzt wurde.
    • 3. TOTAL_INPUT_SIZE = COMPOSED_ARGUMENT_SIZE + ORIG_SIZE.
    • 4. FINAL_SIZE ist die "finale" Größe des BDD F(μi), die erhalten wurde, nachdem jeder der h Punkte Ψ1; Ψ2, ... Ψh nacheinander zusammengesetzt wurden. Dieses BDD wird als Fh bezeichnet. Ferner sei PREVIOUS_SIZE die Größe von F(μi) nach dem Zusammensetzen von h – 1 Punkten.
  • Aufteilen wird aufgerufen, wenn
    • (A) FINAL_SIZE > COMPOSED_ARGUMENT_SIZE·BLOW_UP_FACTOR BLOW_UP_FACTOR nach dem auf der gegebenen Maschine verfügbaren Platz variiert werden kann, ist jedoch 10 in einer bevorzugten Ausführungsform.
    • (B) FINAL_SIZE > PREVIOUS_SIZE + BLOW_UP_FACTOR/NUM In einer bevorzugten Ausführungsform ist NUM 2. Ebenfalls in einer bevorzugten Ausführungsform wird dieses Kriterium nur zur Bestimmung von BDD-Blow-ups während der Zusammensetzung verwendet, und nicht während der Bildung einer zerlegten Darstellung.
    • (C) FINAL_SIZE > PRE_SET_MEMORY_LIMIT Zusätzlich wird das Aufteilen aufgerufen, wenn FINAL SIZE größer ist als eine voreingestellte Grenze auf dem verfügbaren Speicher.
  • Eine Prozedur zum Bestimmen von BDD-Blow-ups während der Bildung einer zerlegten Darstellung wird in 14 illustriert. Indem eine zerlegte Darstellung gebildet wird, werden BDDs für eine Ausgabe eines Booleschen Operationsgatters gebildet, indem die Boolesche Operation auf den BDDs der Eingaben an das Gatter durchgeführt wird. Wie in der Prozedur von 14 verdeutlicht, ist B3 das BDD für die Ausgabe des Gatters, und B1 und B2 sind die BDDs für die Eingaben an das Gatter. Schritt 140 bestimmt, ob die Größe von B3 größer ist als eine voreingestellte Schwellengrenze für die Speichernutzung. Schritt 141 bestimmt, ob die Größe von B3 größer ist als eine Konstante mal die Quantität der Größe von B1 plus die Größe von B2. Wenn eine der Bedingungen von Schritt 140 oder Schritt 141 wahr sind, dann wird eine intermediate_BDD_blowup Variable in Schritt 142 auf 1 gesetzt. Sonst wird die intermediate_BDD_blowup Variable in Schritt 143 auf 0 gesetzt.
  • 3. Äquivalenzpunktaufteilen
  • Das Vorangegangene gilt auch für Techniken, die auf der Extrahierung und Verwendung interner Entsprechungen basieren, unter Verwendung einer Kombination von strukturellen und funktionellen Techniken, um das Problem der Überprüfung der gesamten Netzwerke zu vereinfachen. Diese Entsprechungen können nur funktionelle Äquivalenzen sein, oder indirekte Implikationen zwischen ihren internen Knotenpunkten.
  • Der Ablauf dieser Prüfungsverfahren wird in der US-Patentanmeldung mit der Seriennummer 08/857,916 beschrieben, die hiermit durch Bezugnahme umfasst wird. Etwas vom Rahmen dieser Techniken kann ungefähr als das Folgende beschrieben werden:
    • 1. Bestimmen einfacher Äquivalenzen zwischen den internen/Ausgabe-Gattern von zwei gegebenen Schaltungen. Äquivalente Gatter werden vereinigt. Genauer gesagt wird eine gemeinsame Pseudovariable für beide Elemente in allen äquivalenten (komplementären) Gatterpaaren eingeführt.
    • 2. Berechnung potentiell äquivalenter Knotenpunkte in der resultierenden Schaltung unter Verwendung von Simulation.
    • 3. Bestimmen, welche potentiell äquivalenten Gatter wirklich äquivalent sind. Die äquivalenten Gatter zwischen zwei Schaltungen werden vereint.
    • 4. Schlussfolgern auf Äquivalenzen von Ausgaben unter Verwendung der internen Äquivalenzen, die in den vorangegangenen Schritten bestimmt wurden.
  • Jedes Mal, wenn zwei Gatter vereint werden, da festgestellt wurde, dass sie äquivalent sind (invers), werden diese Gatter als äquivalente (inverse) Gatter markiert. An solchen Gatter wird eine Pseudovariable während der BDD-Konstruktion eingeführt. Genauer werden Schnittmenge solcher Gatter erstellt, wie in der US-Patentanmeldung mit der Seriennummer 08/857,916 und dem US-Patent Nr. 5,649,165 , das hierin ebenso durch Bezugnahme umfasst wird, beschrieben. Wenn während der Simulation bestimmt wird, dass die Anzahl der potentiell äquivalenten Knotenpunkte sehr gering ist, oder wenn während des Aufbaus irgendeines BDDs ein BDD-Blow-up stattfindet, dann werden zusätzliche Zerlegungspunkte eingeführt, so dass die BDD-Größen unter Kontrolle gehalten werden können. Die Zerlegungspunkte können unter Verwendung von funktionellen Zerlegungsprozeduren eingeführt werden, die beschrieben werden in J. Jain et al., Decomposition Techniques for Efficient ROBDD Construction, LNCS, Formal Methods in CAD 96, Springer-Verlag, durch Bezugnahme hierin umfasst. Somit beinhalten die Zerlegungspunkte sowohl funktionelle Zerlegungspunkte, wie auch die Punkte, bei denen festgestellt wurde, dass sie bei einem gegebenen Paar Schaltungen äquivalent (invers) sind.
  • IV. Manipulieren von Aufteilungen
  • A. Zusammensetzung
  • Wenn das Aufteilen einmal aufgerufen wird, dann werden die Graphen wie folgt zerlegt gehalten. Das Zusammensetzen in dem BDD-Paket wird durchgeführt unter Verwendung von if-then-else(ITE)Operationen. Jedoch wird die letzte ITE(Zusammensetzungs-)Operation rückgängig gemacht, und die letzte Operation wird wie im Folgenden zerlegt. Angenommen, beim Zusammensetzen von Ψh wird Aufteilen aufgerufen. Für die Kürze der Symbole in der nachfolgenden Diskussion wird das BDD Ψhj) Bh genannt. Zusammensetzung kann mathematisch wie folgt geschrieben werden. Fh = Bh ∧ Fh=1B h ∧ Fh=0
  • Bh ∧ Fh=1 stellt eine Aufteilung (p1) der gegebenen Funktion F dar, und B h ∧ Fh=0 stellt die andere Aufteilung (p2) der Funktion F dar. Beide Aufteilungen sind funktionell orthogonal. Jede dieser Aufteilungen kann als unabhängige Funktion angesehen werden, und der obige Prozess der Zerlegung und Aufteilung wird wiederum rekursiv durchgeführt, jedoch wird F(μi) durch Bh ∧ Fh=1 ersetzt.
  • Wenn für irgendeine Aufteilung, p1 zum Beispiel, das BDD Bh ∧ Fh=1 ohne Blow-up berechnet werden kann, dann wird das resultierende OBDD geschaffen. Sonst wird p1 mit einer symbolische Verknüpfung zwischen BDD Bh und BDD Fh=1 dargestellt. Dies ist eine zerlegte Aufteilungszeichenkette, und nachfolgende rekursive Aufrufe von DYNAMIC_BDD_PARTITION() arbeiten an dieser zerlegten Aufteilungszeichenkette. Somit werden entweder die verbleibenden k – h BDDs Ψh=1, ... Ψk in dem aus p1 resultierenden OBDD oder seine Aufteilungszeichenkette zusammengesetzt.
  • Wenn das nächste Mal das Aufteilen auf einer zerlegten Aufteilungszeichenkette aufgerufen, aufgrund der Zusammensetzung irgendeines BDD Ψqj) kann eine symbolische Verknüpfung mit dem BDD von Ψqj) und der zerlegten Aufteilungszeichenkette (verknüpfte Boolescher Ausdruck), bei der Ψqj) zusammengesetzt wurde, ebenfalls notwendig sein. Somit wächst die Länge der zerlegten Aufteilungszeichenkette. Am Ende der Rekursion entlang jeder Verzweigung wird die resultierende zerlegte Aufteilungszeichenkette als ein Element eines Feldes (Ad) von BDDs gespeichert. Jedes Element dieses Feldes ist zu jedem anderen Element in diesem Feld orthogonal.
  • Eine symbolische Verknüpfung zwischen den beiden B1, B2 wird nicht durch Durchführen der tatsächlichen Verknüpfung hergestellt, sondern durch Verschieben des Ergebnisses auf irgendeinen späteren Punkt in der Zukunft. Somit wird, anstelle des Herstellens eines neuen BDDs B3, welches eine tatsächliche Verknüpfung zwischen B1 und B2 ist, ein symbolic_conjunction_array A1 hergestellt. A1 hat 3 verschiedenen Elemente: BDDs B1, B2, und die Verknüpfungsoperation. Symbolic_conjunction_array A1 stellt deutlich eine Funktion dar – diese Funktion f(A1) ist äquivalent zu der Funktion, die aus der tatsächlichen Durchführung des UND zwischen B1, B2 resultiert.
  • Wenn wir nun irgendein BDD B4 mit der durch A1 = [B1, B2, AND] dargestellten Funktion verknüpfen müssen, erzeugen wir ein Ergebnis, das A2 ist, wobei A2-[B1, B2, B4, AND]. Somit wächst die Länge des symbolic_conjunction_array. Ebenfalls an genommen, falls G innerhalb des symbolic_conjunction_array A1, dann werden wir das Ergebnis als eine symbolisches Verknüpfungsfeld Anew = [B1 (G zusammengesetzt in B1), B2 (G zusammengesetzt in B2), AND] berechnen, wobei B1 (G zusammengesetzt in B1) bedeutet, das BDD G innerhalb von BDD B1 zusammenzusetzen.
  • Ein Flussdiagramm für eine Prozedur für eine zerlegte Aufteilungszeichenkette wird in 16 verdeutlicht, in der eine zerlegte Aufteilungszeichenkette α bereits existiert. Die zerlegte Aufteilungszeichenkette α umfasst eine Pseudovariable g und ein BDD(g). Schritt 160 bestimmt, ob ein BDD Ba explodiert, wenn Ba gleich der symbolischen Verknüpfung ist von BDD(g) und der zerlegten Aufteilungszeichenkette α, wobei g gleich eins ist. Wenn kein Blow-up stattfindet, wird die zerlegte Aufteilungszeichenkette αa dem BDD Ba gleich gesetzt in Schritt 161. Sonst wird in Schritt 162 die zerlegte Aufteilungszeichenkette αa der symbolischen Verknüpfung von BDD(g) und die zerlegte Aufteilungszeichenkette α mit g gleich eins gleichgesetzt. Die zerlegte Aufteilungszeichenkette αb wird ähnlich unter Verwendung von BDD(g) bestimmt, und die zerlegte Aufteilungszeichenkette α mit g gleich eins anstelle von BDD(g), bzw. zerlegte Aufteilungszeichenkette α mit g gleich eins, in den Schritten 163, 164, und 165.
  • Man beachte, das die gespeicherte zerlegte Aufteilungszeichenkette eine Verknüpfung verschiedener Ψqj) mit einem BDD ist, das dem teilweise zusammengesetzten F(μi) entspricht. Falls die Funktion F gleich der Booleschen 0 ist, dann muss jedes Element dieses Feldes auch 0 sein. Was bedeutet, dass, wenn irgendeine Aufteilung zusammengesetzt wird, es Boolesche 0 ergeben sollte. Jede Aufteilung ist eine symbolische Verknüpfung von BDDs. Somit wird jede Aufteilung pr als Verknüpfung von m BDDs, wie etwa pi = f1 ∧ f2 ∧ ... fm ∧ Fr, dargestellt. Jedes fi ist BDD von irgendeinem Zerlegungspunkt, dessen Zusammensetzung einen Blow-up verursachte. Fr ist das übriggebliebene BDD, nachdem alle k BDDs zusammengesetzt wurden.
  • Sobald irgendein Element pi des Feldes Ad gewonnen wurde, falls die Schnittmenge (μi) nicht den Primäreingaben entspricht, und falls die Antwort auf das Prüfungsproblem noch nicht erhalten wurde, dann wird DYNAMIC-BDD-PARTITION() verwendet und pi wird in eine andere Schnittmenge (μt) zusammengesetzt. (μt) wird aus (μj) und den Primäreingaben ausgesucht. Dieser Prozess wird fortgeführt, bis jedes BDD in der zerlegten Aufteilungszeichenkette anhand von Primäreingabevariablen ausgedrückt ist.
  • Somit wird ein Prozess im Wesentlichen für das Vorangehende in 15 verdeutlicht, bei dem eine zerlegte Aufteilungszeichenkette (BDD) existiert, jedoch nicht bezogen auf die Primäreingaben. In Schritt 150 wird eine Zusammensetzung eines Zerlegungspunkts durchgeführt. Schritt 151 überprüft, um zu bestimmen, ob das resultierende zusammengesetzte BDD explodiert. Wenn das resultierende zusammengesetzte BDD nicht explodiert und das BDD nicht erfüllbar ist, wie in den Schritten 151 bzw. 152 bestimmt, dann wird der Prozess der Zusammensetzung für andere Punkte wiederholt. Wenn das BDD erfüllbar ist, sind die verglichenen Schaltungen nicht äquivalent. Wenn jedoch ein BDD-Blow-up auftritt, werden zwei zerlegte Aufteilungszeichenkette in Schritt 153 geschaffen. Schritt 154 bestimmt, ob diese beiden zerlegten Aufteilungszeichenkette in Bezug auf die Primäreingaben dargestellt sind. Wenn dem so ist, untersucht Schritt 155 die zerlegten Aufteilungszeichenketten. Wenn die Untersuchung bestimmt, dass irgendwelche zerlegten Aufteilungszeichenketten, die in Bezug auf Primäreingaben dargestellt sind, nicht gleich null sind, dann sind die verglichenen Systeme nicht äquivalent. Sonst wird der Prozess wiederholt, bis entweder bestimmt wurde, dass alle Aufteilungen null sind und die Schaltungen im Vergleich als äquivalent erklärt wurden.
  • 17 verdeutlicht ein Flussdiagramm für einen Prozess zum Untersuchen von zerlegten Aufteilungszeichenkette, die in bezug auf Primäreingaben geschrieben wurden. In Schritt 170 werden Komponenten einer solchen zerlegten Aufteilungszeichenkette für die Kombination angeordnet. Eine Anzahl geeigneter Anordnungstechniken werden unten besprochen, und jede davon kann zum Anordnen der Kombinationsordnung für die Komponenten verwendet werden. Schritt 171 bestimmt, ob alle Komponenten der zerlegten Aufteilungszeichenkette untersucht wurden. Falls nicht, dann werden weitere Komponenten der zerlegten Aufteilungszeichenkette nach der Anordnung für die Kombination in Schritt 172 kombiniert. Das Ergebnis der Kombination wird in Schritt 173 überprüft, um zu bestimmen, ob das Ergebnis null ist. Falls das Ergebnis null ist, wird die Aufteilung, die durch die zerlegte Aufteilungszeichenkette dargestellt wird, in Schritt 174 als Null erklärt. Falls alle Komponenten der zerlegten Aufteilungszeichenkette kombiniert wurden, und kein Null-Ergebnis erhalten wurde, dann wird die Aufteilung, die durch die zerlegte Aufteilungszeichenkette dargestellt wird, in Schritt 175 zu Nicht-Null erklärt.
  • B. Äquivalenzüberprüfung
  • Der nächste Schritt ist das Überprüfen, ob das BDD pi = f1 ∧ f2 ∧ ... fm ∧ Fr eine Boolesche 0 ist. Zwei Prozeduren können verwendet werden, um diese Bestimmung vorzunehmen.
    • 1. SCHEDULING_PROCEDURE(). Die Scheduling_Procedure Routine arrangiert die BDDs in einer Weise, die die Berechnung von deren Booleschen UND leichter macht. Verfahren zum Anordnen der Komponenten f1, f2, ..., fm zur Kombination werden unten detailliert beschrieben.
    • 2. LEARNING_METHOD(). Die zerlegte Aufteilungszeichenkette kann auf eine Schaltung abgebildet sein, wenn die Summe der Größen der BDDS in der zerlegten Aufteilungszeichenkette nicht sehr groß ist. Die Verfahren, wie sie angegeben werden in R. Mukherjee et al., VERIFUL: Verification using Functional Learning, EDAC 1995 and J. Jain et al., Advanced Verification Techniques Based an Learning, DAC 1995, die beide hierin durch Bezugnahme umfasst werden, oder die Techniken, die in der US-Patentanmeldung Nr. 08/857,916 offenbart werden, können verwendet werden, um zu entdecken, ob die Boolesche Funktion, die durch diese Aufteilung dargestellt wird, 0 ist.
  • 1. Anordnungsschemata
  • Angenommen, f = g1 ⊙ g2 ⊙ ... ⊙ gn, wobei ⊙ = UND or ODER. Sei bi das BDD, das gi, entspricht, und S = {b1, b2, ..., bn}. Das Ziel ist es, ROBDD(f) zu berechnen, indem man mit ⊙ BDDs in S, jeweils zu zweit, verknüpft.
  • Alle folgenden Anordnungsschemata sind gierig, und zwar dahingehend, dass sie bei jedem Schritt zwei ROBDDs Bi und Bj aus S so aussuchen, dass das resultierende BDD B(i, j) = Bi ⊙ Bj klein ist. Bi und Bj werden dann aus S gelöscht, und B(i, j) wird S hinzugefügt. Dieser Schritt wird wiederholt, bis |S| = 1.
  • Wenn ein Paar von BDDs bi, bj, und eine Boolesche Operation ⊙ gegeben ist, ist es bekannt, dass die Größe im schlimmsten Fall des resultierenden BDD bi ⊙ bj O(|bi||bj|) ist. Dementsprechend wählt ein auf der Größe basierender Ansatz die beiden kleinsten BDDs bi und bj mit der Hoffnung aus, dass das resultierende BDD ebenfalls klein sein wird.
  • In einigen Situationen ist das Ordnen von BDDs basierend nur auf Größen nicht ausreichend. Es kann passieren, dass die beiden kleinsten BDDs bi und bj so sind, dass |bi ⊙ bj| = |bi||bj|. Wenn jedoch die BDDs bk und bm, die etwas größer sind, aber disjunkten Unterstützungsmengen aufweisen, ausgewählt werden, dann kann ein viel kleineres Zwischen-BDD erhalten werden.
  • Das nächste BDD wird so ausgewählt, dass es die wenigsten zusätzlichen Variablen einführt, nachdem die Operation durchgeführt würde. Mit anderen Worten hat das erste BDD (bi) minimale Unterstützung und das zweite BDD (bj) hat unter allen verbleibenden BDDs die minimale zusätzliche Unterstützung von dem ersten BDD. Zusätzliche Unterstützung ist die Anzahl von zusätzlichen Variablen, die in die Unterstützung von b(i, j) = bi ⊙ bj im Vergleich zu (bi) eingeführt wurden. Es ist gleich |sup(bj) – sup(bi)|, wobei sup(bi) die Unterstützungsmenge von bi ist.
  • Somit können die folgenden anordnenden Ordnungen benutzt werden, wobei das erste BDD bi das BDD mit der minimalen Größe ist:
  • 1. Das zweite BDD bj ist das, welches die maximale Unterstützung mit bi teilt
  • 2. Das zweite BDD bj ist das, welches die minimale zusätzliche Unterstützung in Bezug auf bi teilt
  • 3. Die übriggebliebenen BDDs der Menge S werden anhand der Größe und der zusätzlichen Unterstützung in Lsize und Lsup eingeordnet. BDDs mit minimaler Einordnung (Größe oder zusätzliche Unterstützung) kommen in den Listen früher. Dann wird eine sehr kleine Anzahl von BDDs (wie etwa 3) aus dem Kopf von Lsize und Lsup ausgewählt. Eine explizite UND-Operation wird auf jeder dieser BDDs mit bi durchgeführt. Das BDD, das in der geringsten Größe resultiert, ist das gewünschte bj.
  • 2. Ordnung der Zusammensetzung
  • Nach der Auswahl einer Fensterfunktion und der Schaffung der zerlegten Darstellung für die i-te Aufteilung, die durch
    Figure 00390001
    und Ψwi gegeben ist, ist der letzte Schritt, Ψwi in
    Figure 00390002
    zusammenzusetzen, d. h.,
    Figure 00390003
    Obwohl die letzte ROBDD-Größe konstant ist für eine gegebene Variablenordnung, ist die Zwischenspeicheranforderung und die Zeit zur Zusammensetzung eine starke Funktion der Ordnung, in der die Zerlegungspunkte zusammengesetzt sind.
  • Für jeden Variablenkandidaten, der in fd zusammengesetzt werden kann, werden Kosten zugeordnet, die die Größe des resultierenden zusammengesetzten ROBDDs abschätzt. Die Variable mit der geringsten Kostenabschätzung wird zusammengesetzt. Eine simple Kostenfunktion, die auf der Größe der Unterstützungsmenge basiert, funktioniert in der Praxis gut. Dementsprechend wird die Zerlegungsvariable, die zu dem geringsten Anstieg der Größe der Unterstützungsmenge des ROBDD nach der Zusammensetzung führt, ausgewählt. Bei jedem Schritt werden die Ψs-Kandidaten für die Zusammensetzung auf die Zerlegungspunkte beschränkt, die in keinem der anderen Ψbdds vorhanden sind. Dies garantiert, dass eine Zerlegungsvariable nur einmal in fd zusammengesetzt werden muss, wie erklärt wird in A. Narayan et al., Study of Composition Schemes for Mixed Apply/Compose Based Construction of ROBDDs, Intl. Conf. an VLSI Design, Januar 1996, durch Bezugnahme hierin umfasst.
  • V. Anwendungen
  • A. Kombinationsprüfung
  • Aufgeteilte ROBDDs können direkt angewendet werden, um die Äquivalenz von zwei Kombinationsschaltungen zu überprüfen. Die jeweiligen Ausgaben zweier Schaltungen f und g werden durch ein XODER-Gatter kombiniert, um eine einzige Schaltung zu erhalten. Aufgeteilte ROBDDs werden dann zur Überprüfung genutzt, ob die resultierende Schaltung erfüllbar ist. Dies ist eine einfache Überprüfung, ob f ig i = 0 für alle Aufteilungen ist. In der Praxis kann diese Technik leicht als ein Back-End für die meisten Implikations-basierten Kombinationsprüfverfahren, die ROBDDs verwenden, benutzt werden. Solche Verfahren werden offenbart in J. Jain et al., Advanced Verification Techniques Based an Learning, DAC, S. 420–426, 1995 und S. Reddy et al., Novel Verification Framework Combining Structural and OBDD Methods in a Synthesis Environment, DAC, S. 414–419, 1995, die beide durch Bezugnahme hierin umfasst werden. Die Prüfung kann beendet werden, sogar, ohne dass alle Aufteilungen verarbeitet werden, wenn in irgendeinem Fenster wi festgestellt wird, dass die Funktion f ig i erfüllbar ist.
  • Ein weiterer Weg, zwei Schaltungen zu Prüfen, ist es, deren Äquivalenz probabilistisch zu überprüfen. Verfahren dafür werden offenbart in M. Blum et al., Equivalence of Free Boolean Graphs Can Be Decided Probabilistically in Polynomial Time, Information Processing Letters, 10: 80–82, März 1980 und J. Jain et al., Probabilistic Verification of Boolean Functions, Formal Methods in System Design, 1. Juli 1992, die beide hierin durch Bezugnahme umfasst werden. Bei der probabilistischen Prüfung wird jeder Minterm einer Funktion f in einen ganzzahligen Wert umgewandelt, unter irgendeiner zufälligen Ganzzahlzuordnung p zu den Eingabevariablen. Alle ganzzahligen Werte werden dann arithmetisch addiert, um den Hash-Code HP(f) für f zu bekommen. Man kann mit einer vernachlässigbaren Fehlerwahrscheinlichkeit feststellen, dass f ≡ g iff Hp(f) = Hp(g). Im Falle von orthogonalen Aufteilungen teilen keine zwei Aufteilungen irgendeinen gemeinsamen Minterm. Daher kann jede Aufteilung separat gehasht und Ihre Hash-Codes addiert werden, um Hp(f) zu erhalten. Dies impliziert, dass zum Überprüfen, dass Hp(f) = Hp(g), sowohl f als auch g aufgeteilt sind und unabhängig sind. Sowohl f i und g i müssen nicht zur gleichen Zeit im Speicher sein. Ferner ist es nicht notwendig, dass sowohl f und g dieselben Fensterfunktionen aufweisen.
  • B. Sequentielle und FSM-Prüfung
  • Ein Schlüsselschritt in der sequentiellen Schaltungsprüfung unter Verwendung von ROBDDs ist die Erreichbarkeitsanalyse. Erreichbarkeitsanalyse wird auch gemeinhin Model-Checking genannt, und Model-Checking-Prozeduren werden bei K. L. McMillan, Symbolic Model Checking, Klumer Academic Publishers 1993 und E. M. Clarke et al., Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications, 8 TOPLAS 244–263 (1986), beschrieben, die beide hierin durch Bezugnahme umfasst werden. Erreichbarkeitsanalyse besteht aus der Berechnung der Menge von Zuständen, die ein System erreichen kann, beginnend bei den Anfangszuständen. Wenn die gegenwärtige Menge von erreichten Zuständen, R(s), und die Übergangsrelation für das System, T(s, s'), die Variablen s des gegenwärtigen Zustands in Relation setzt mit den Variablen s' des nächsten Zustandes, gegeben sind, wird die Menge der nächsten Zustände, N(s'), unter Verwendung der folgenden Gleichung ausgewertet: N(s') = ∃δ[T(s, s') ∧ R(s)] (2)
  • Die Menge der nächsten Zustände wird zu der Menge der gegenwärtigen Zustände addiert, und die obige Berechnung wird wiederholt, bis ein fester Punkt erreicht wird. Dieser feste Punkt stellt die Menge aller erreichbarer Zustände des System dar.
  • In vielen Fällen werden die ROBDDs, die die Übergangsrelation T(s, s') darstellen, sehr groß. Um diese Fälle zu behandeln, ist in aufgeteilten Übergangsrelationen, in denen die Übergangsrelationen einzelner Latches, T(s, s')s2, separat dargestellt werden (mit etwas möglichem Clustern der Tis), nützlich. Die Verwendung von aufgeteilten Übergangsrelationen wird beschrieben in J. R. Burch et al., Symbolic Model Checking: 1020 States and Beyond, Information and Computation, 98(2): 142–170, 1992, durch Bezugnahme hierin umfasst. Zwei Typen von aufgeteilten Übergangsrelationen wurden besprochen: konjunktive und disjunktive. In einer solchen Aufteilung ist die Übergangsrelation durch T(s, s') = T1(s, s') ∧ ... ∧ Tm(s, s') gegeben, wobei jedes Ti als separates ROBDD dargestellt wird. Dieser Typ der Aufteilung ist ein spezieller Fall von konjunktiv aufgeteilten ROBDDs. Das Aufteilen der vorliegenden Erfindung ist allgemeiner, da Tis nicht immer einzelnen Latches entsprechen müssen. Die Nützlichkeit der konjunktiv aufgeteilten Übergangsrelationen ist auch beschränkt, weil existentielle Quantifizierung sich nicht über Konjunktionen verteilt. Im schlimmsten Fall, wenn alle T1's von allen gegenwärtigen Zustandvariablen abhängen, dann können konjunktive Aufteilungsübergänge nicht verwendet werden.
  • Ein interessanter Fall ist der der disjunktiven Aufteilungen, bei denen die existentielle Quantifizierung sich über die Aufteilungen verteilt. Die vorliegende Erfindung erlaubt das disjunktive Aufteilen der Übergangsrelation, ohne, dass dem zugrundeliegenden Modell des Übergangs irgendwelche Beschränkungen für ein gegebenes System auferlegt werden müssen. In der vorliegenden Erfindung, ist jede Menge von fis derart, dass T(s, s') = f 1 + ... + ∃s(R(s) ∧ f k) zur Darstellung der Übergangsrelation verwendet werden kann. Die Menge der nächsten Zustände kann unter Verwendung der folgenden Gleichung ausgewertet werden: N(s') = ∃δ (R(s) ∧ f 1) + ... + ∃δ(R(s) ∧ f k)
  • Diese Berechnung kann durchgeführt werden, indem man nur ein f i für 1 ≤ i ≤ k im Speicher behält. Man beachte, dass bei der obigen Berechnung die Fensterfunktionen, die fis entsprechen, nicht benötigt werden.
  • Teilweise Prüfung ist nützlich zur Prüfung sequentieller Schaltungen, da diese Schaltungen oftmals unprüfbar sind. Die Verwendung der Verfahren und Systeme der vorliegenden Erfindung stellt signifikante Information über solche Schaltungen bereit.
  • C. Partielle Prüfung unter Verwendung von Aufteilung
  • Die Darstellung einiger Schaltungen oder Systeme kann nicht kompakt dargestellt werden, sogar durch aufgeteilte ROBDDs. In diesen Fällen kann ein signifikanter Anteil der Funktion allgemein konstruiert werden. Zum Beispiel erlaubt es eine Schaltung, für die 132 von 256 Aufteilungen konstruiert werden können, bevor die Programmausführung aufgrund von Beschränkungen der Zeitressourcen abbricht, ungefähr 52% der Wahrheitstabelle zu analysieren. Demgegenüber bricht die Programmausführung bei der Verwendung von monolithischen ROBDDs ab, ohne irgendwelche aussagekräftige teilweise Information zu liefern. Eine Simulationstechnik ist ebenfalls inadäquat zur Abdeckung der gegebenen Funktionsdarstellung der Schaltung oder des Systems. Wenn ein Entwurf fehlerhaft ist, gibt es eine hohe Wahrscheinlichkeit, dass die fehlerhaften Minterms in mehr als einer Aufteilung verteilt sind und detektiert werden können, indem nur einige wenige Aufteilungen verarbeitet werden. Somit können in vielen Fällen Fehler in Schaltungen oder Systemen detektiert werden, indem man nur ein oder zwei Aufteilungen konstruiert.
  • Dieses Stichprobenverfahren kann auf jeden Entwurf angewandt werden, ob er nun kombinationell, sequentiell oder auch ein Entwurf für gemischte Signale ist. Allgemein wird ein gegebener Entwurf vereinfacht, indem Aufteilungen seines Zustandsraums geschaffen werden und nur die Funktionalität des Entwurfs innerhalb der Aufteilungen analysiert wird.
  • Die Schaltung wird aufgeteilt, indem man die Aufteilungsvektoren anwendet, und der Entwurf wird geprüft für jeden der Aufteilungsvektoren. Diese Vektoren sind partielle Zuordnungen entweder auf Eingabevariablen oder die internen Variablen der gegebenen Schaltung oder des gegebenen Systems. Eine partielle Zuordnung ist eine Zuordnung auf einige der Variablen, aber nicht alle Variablen. Die Aufteilungsvektoren vereinfachen die Schaltung/das System so, dass die Schaltung ein kleinere Wahrheitstabelle aufweist. Somit wird das resultierende aufgeteilte System leichter zu prüfen sein, unter Verwendung entweder des Model-Checking oder der Kombinationsprüfungsverfahren.
  • Für einen sehr komplexen Entwurf, der nicht unter Verwendung formeller Verfahren geprüft werden kann, kann die gewählte Anzahl von Vektoren genügend klein sein, so dass Stichproben nicht sehr teuer in Bezug auf Rechenressourcen sind. Die Anzahl von Variablen, auf denen das Aufteilen durchgeführt wird, ist jedoch groß genug, dass jede Aufteilung klein genug ist, so dass formelles Prüfen eines gegebenen Entwurfs möglich ist. Zum Beispiel können für eine sequentielle Schaltung mit 1000 Flipflops und 100 Eingabevariablen, die mit traditionellen BDD-basierten Verfahren sehr schwierig zu prüfen ist, 100 Aufteilungen unter Verwendung von 20 Variablen gebildet werden. Die Schaltung kann dann teilweise geprüft werden, indem man Aufteilungen des Booleschen Raums der Schaltung untersucht.
  • Eine feste Anzahl von Aufteilungsvektoren kann automatisch ausgewählt werden, indem man den Aufspaltungsvariablenauswah lansatz verwendet, der auf den Kriterien von Redundanz und Ausgewogenheit basiert, wie er beschrieben ist in A. Narayan et al., Partitioned-ROBDDs – A Compact, Canonical and Efficiently Manipulable Representation of Boolean Functions, ICCAD, November 1996. Genauer, wenn wir auf R Variablen aufteilen wollen (sagen wir, 20), dann wird ein Aufspaltungsvariablenauswahlansatz auf die Kombinationsdarstellung der gegebenen sequentiellen Schaltungen angewendet, und die Anzahl R bester Variablen wird automatisch ausgewählt, basierend auf einer Kostenfunktion von Redundanz und Ausgewogenheit. Mit anderen Worten, wenn irgendein Z gegeben ist, kann eine gewünschte Anzahl von Aufteilungen geschaffen werden, indem man (sagen wir, zufällig) irgendeine Anzahl Z (where Z =< 2R) von Booleschen Zuordnungen auf diese R Variablen erzeugt. Diese Z partiellen Zuordnungen werden entweder bei jeder Anwendung einer Übergangsrelation wiederholt, oder die Z Zuordnungen können in nachfolgenden Anwendungen der Übergangsrelation geändert werden, indem man unterschiedliche oder zufällige Zuordnungen auf den gegebenen R Variablen erzeugt. Diese R Variablen können sich ebenso in nachfolgenden Anwendungen von Übergangsrelationen ändern.
  • In einer weiteren Ausführungsform können Nutzer Eingabevektoren aus manuell erzeugten Testfolgen auswählen, die verwendet werden, um einen gegebenen Entwurf zu prüfen. Die meisten Entwürfe haben solche Testfolgen. Bestimmte Zuordnungen irgendeiner Untermenge der Eingabevariablen können bekannterweise kritisch für den Entwurf sein. Testfolgen können jedoch oftmals nicht jede mögliche Kombination der übriggebliebenen unzugeordneten Variablen enthalten, und können daher nicht die Richtigkeit eines Entwurfs prüfen, wenn Zuordnungen für einige der Variablen gegeben sind. Das System und Verfahren der vorliegenden Erfindung erlauben eine solche Prüfung durch die Verwendung der Aufteilungstechniken, die hierin beschrieben werden.
  • Die spezialisierte Kenntnis der Ingenieure mit Kenntnis des Entwurfs, der getestet wird, kann ebenso verwendet werden, entweder direkt oder indirekt. Die Kenntnis des Ingenieurs oder Designers kann direkt verwendet werden, indem die Testvektoren unter der expliziten Führung des Designers ausgewählt werden. Die explizite Führung kann die Form des Anwendens der Übergangsrelationen oder der Auswahl der Vektoren, die für Stichproben auf BDD-Blow-ups angewendet werden, annehmen. Der Designer kann auch einige Q Eingabevariablen angeben, typischerweise Steuervariablen zur Schaffung von Stichproben zur Prüfung. Wenn irgendein Z gegeben ist, kann die gewünschte Anzahl von Aufteilungen geschaffen werden, indem man (sagen wir, zufällig) irgendeine Anzahl Z (wobei Z =< 2Q) von Booleschen Zuordnungen auf die Q Variablen erzeugt.
  • Die Kenntnis des Ingenieurs oder Designers kann auch indirekt benutzt werden. Die manuell erzeugte Testfolge für den Entwurf kann analysiert werden, um Aufteilungsvektoren zu bestimmen. Spezifisch können alle Testvektoren in der Testfolge in einer geordneten Weise in eine Datei geschrieben werden. Wir können eine Anzahl k von den am meisten vorkommenden Folgen von partiellen Zuordnungen in der Testfolge verwenden, und diese dann für die Stichproben verwenden. Wenn also einige "Folgen von partiellen Zuordnungen" zwischen den verschiedenen Testvektoren gemeinsam sind, dann sind solche Folgen gute Kandidaten für das Stichprobenverfahren. Zum Zwecke der Klarheit der Beschreibung beachte man: eine Zeichenkette STR, die eine Folge von partiellen Zuordnungen ist, ist von einer Folge von Eingabekombinationen abgeleitet, den Eingabevariablen zugeordnet, und kann wie folgt veranschaulicht werden:
    STR = partial_1 <from-time-frame=1>; partial_2 <from-time-frame-2>; ...; partial_m <from-time-frame-m>, wobei jedes partial_i eine partielle Zuordnung ist.
  • Partial_1 wird verwendet, um die Schaltung in der ersten Anwendung der Übergangsrelation zu beschränken (wie im nächsten Abschnitt beschrieben), partial_2 in der zweiten Anwendung der Übergangsrelation, und so weiter. Wir sammeln eine Anzahl N solcher Zeichenketten STR_1, STR_2, ..., STR_N. Die Auswahl von N kann interaktiv sein und hängt völlig von der Komplexität des gegebenen System ab. Zum Beispiel denken wir, dass bei vielen gegenwärtigen Systemen mit 1000 Flipflops N im Bereich von 5 bis 100 liegen kann. Nun führen wir eine formelle Prüfung durch, indem wir N verschiedene Durchläufe eines formellen Prüfers machen, wobei wir eine Menge einfacherer Schaltungen C1, C2, ..., CN prüfen, wobei jedes Ci ein Entwurf ist, der beschränkt wurde, indem die partiellen Zuordnungen darin verwendet wurden, wie ebenfalls oben und im folgenden Abschnitt beschrieben.
  • In dem Szenario, dass die Testfolge anfänglich auch nur partielle Zuordnungen auf einer Untermenge von Eingabevariablen enthielt, können wir dann auch sehen, welche Variablen am häufigsten in der gegebenen Testfolge vorkommen. Wenn wir auf P Variablen aufteilen wollen (sagen wir, 20), dann suchen wir nach einer Anzahl P der am häufigsten vorkommenden Variablen in der Testfolge. Wenn irgendein Z gegeben ist, können wir auswählen, die gewünschte Anzahl von Aufteilungen zu schaffen, indem wir (sagen wir, zufällig) irgendeine Anzahl Z (wobei Z =< 2P) von Booleschen Zuordnungen auf diesen P Variablen erzeugen. Zusätzlich kann der Nutzer, falls er es wünscht, die Folgenlänge unserer ausgewählten "Folgen von partiellen Zuordnungen" auf eine erste Anzahl k von Zeitrahmen beschränken, wobei k sogar 1 sein kann.
  • Ferner tritt oftmals rekursives Testen von Entwürfen und Hierarchien von Entwürfen auf. Somit bilden Vektoren, bei denen festgestellt wurde, dass sie Fehler beim vorherigen Testen des Entwurfs erzeugen, ebenfalls passende Aufteilungsvektoren.
  • Angenommen die Folge von N Vektoren ist wie folgt:
    [V1 = 0, V2 = 1]; [V1, V3 = 1]; [V3 = 1; V4 = 1]; ...; [N-solche Folgen]. Ferner kann man eine sequentielle Schaltung M als eine Verkettung von mehreren identischen Kombinationsschaltungen C ansehen.
  • Es ist bekannt, dass die Verkettung durchgeführt wird, indem die nächsten Zustandsvariablen einer Schaltung C mit den gegenwärtigen Zustandsvariablen der Schaltung C, die in der Verkettungsfolge als nächstes kommen, verbunden werden. Das heißt, M kann angesehen werden als M = C1 <connected-to> C2 <connected-to> C3 .... wobei jedes Ci eine Kopie derselben Kombinationsschaltung ist. Somit wird die Schaltung im Zeitrahmen 3 Schaltung C3 genannt.
  • Während der Anwendung, sagen wir, eines Transversalüberprüfungsverfahrens eines Zustandsraums werden wir anfänglich den gegebenen Entwurf einschränken, indem wir V1 = 0, V2 = 1 setzen. Mit dieser Beschränkung werden bestimmte Zustände S1 nach der Anwendung einer Übergangsrelation erreicht. V1 = 0, V3 = 1 werden gesetzt, sobald der Zustand S1 erreicht ist, und eine Übergangsrelation wird angewendet, um S2 zu erreichen. Sobald der Zustand S2 erreicht ist, werden V2 = 1, V1 = 1 gesetzt, und die Übergangsrelation wird erneut angewendet, um den Zustand S3 zu erreichen. Diese Prozedur fährt fort, bis der Zustand SN erreicht ist. Somit können alle Eigenschaften des Systems für die von SN erfassten Zustände nun geprüft werden.
  • Wenn in irgendeiner Anwendung einer Übergangsrelation das BDD, das den Zustandsraum Si darstellt, explodiert, dann wird das BDD aufgeteilt, indem entweder manuell (interaktiv) Werte (Beschränkungen) auf einige Eingabevariablen mehr bereitgestellt werden, oder indem ein Teil des erreichten Zustands raums weggeworfen wird. Nach einer solchen Aufteilung fahren wir weiter mit unserer Erreichbarkeitsanalyse fort, bis wir entscheiden, unsere Berechnung zu beenden, wegen eines Grundes, wie den, dass wir eine BDD-basierte Analyse nicht weiter fortführen können, oder weil wir den festen Punkt erreicht haben.
  • Auf diese Weise wurde, obwohl nur ein begrenzter Teil der Funktionalität des gegebenen Entwurfs geprüft wurde, der größere Teil eines sehr großen Zustandsraums verarbeitet. Aufgeteilte ROBDDs erlauben eine bemerkenswerte Kontrolle der Raum/Zeit-Ressourcen, und daher funktionelle Abdeckung. Somit kann der Erfolg eines Prüfexperiments sichergestellt werden, indem man die Parameter der Zerlegung und die Anzahl der Aufteilungen, die geschaffen werden müssen, verändert werden.
  • D. Verwendung in einem Filteransatz
  • Die Aufteilungsprüftechniken der vorliegenden Erfindung sind auch nützlich in dem Filteransatz, der in der US Patentanmeldung Nr. 08/857,916 beschrieben wird. Ein Filteransatz nutzt eine Kombination von kommunizierenden Test/Prüftechniken, um eine Schaltung oder ein System zu prüfen. Im Wesentlichen werden einfachere und schnellere Techniken zuerst verwendet, um die Schaltung zu prüfen oder zu verändern. Wenn die einfacheren und schnelleren Techniken die Schaltung nicht prüfen können, dann werden die Ergebnisse dieser Techniken an aufwändigere und teurere Prüftechniken weitergeleitet. Die anspruchsvollsten Techniken sind Techniken, die, wenn ihnen genügend Zeit und Speicher zur Verfügung stehen, eine Schaltung ohne die Hilfe einer andren Prüftechnik prüfen können. Diese anspruchsvollsten Techniken werden Kerntechniken genannt. Innerhalb eines solche Rahmens sind die aufgeteilten BDD-Techniken der vorliegenden Erfindung eine Kerntechnik.
  • E. Parallele Implementierung eines ROBDD Pakets
  • Das vorliegend erfundene System und Verfahren stellt eine superlineare Reduzierung (sogar exponential) der Ressourcen, die zum Aufbau von ROBDDs notwendig sind, bereit. Ferner ist jede Aufteilung unabhängig und kann auf einem unterschiedlichen Prozessor mit minimalem Kommunikationsoverhead angeordnet werden. Jede Aufteilung kann unabhängig geordnet werden und kann die volle Kraft der dynamischen Neuordnung ausnutzen.
  • Somit stellt die vorliegende Erfindung viele Vorteile bei der Prüfung von Booleschen Schaltungen und Systemen bereit. Viele Schaltungen und Systeme, die bisher unprüfbar waren, können auf Äquivalenz überprüft werden. Obwohl die vorliegende Erfindung in bestimmten spezifischen Ausführungsformen beschrieben wurde, werden Fachleuten viele zusätzliche Modifikationen und Variationen ersichtlich sein. Es sollte daher verstanden werden, dass die vorliegende Erfindung in anderer Weise ausgeführt werden kann, als spezifisch beschrieben. Dementsprechend sollen die vorliegenden Ausführungsformen der Erfindung in allen Belangen als veranschaulichend und nicht beschränkend angesehen werden, wobei der Umfang der Erfindung durch die beigefügten Ansprüche angezeigt wird, anstatt durch die vorangehende Beschreibung.

Claims (17)

  1. Computerimplementiertes Verfahren der Bestimmung, ob erste und zweite Schaltungen, jede mit einem Satz von entsprechenden gemeinsamen Primäreingaben und entsprechenden gemeinsamen Primärausgaben, äquivalent sind, umfassend: Darstellen der ersten Schaltung als eine erste Boolesche Funktion; Darstellen der zweiten Schaltung als eine zweite Boolesche Funktion; Gewinnen einer dritten Funktion, die innerhalb eines Booleschen Raumes definiert ist, durch exklusives ODER-Verknüpfen der entsprechenden Primärausgaben der ersten und zweiten Booleschen Funktionen; Aufbauen eines zerlegten ersten Binärentscheidungsdiagramms für die dritte Funktion innerhalb des Booleschen Raumes; Aufteilen des Booleschen Raumes, in dem die dritte Funktion definiert ist, in erste und zweite Aufteilungen während der Zusammensetzung eines Zerlegungspunktes, wenn das Binärentscheidungsdiagramm, das sich aus der Zusammensetzung ergibt, eine vorbestimmte Beschränkung der Computerspeicherverwendung überschreitet; Aufteilen der ersten Aufteilung in eine Vielzahl erster Aufteilungen; und Aufbauen von Binärentscheidungsdiagrammen für die dritte Funktion in jeder der ersten Aufteilungen, außer, wenn eine vorbestimmte Beschränkung der Speicherverwendung überschritten wird; gekennzeichnet durch: Darstellen der dritten Funktion in mindestens einer der ersten Aufteilungen, für die die vorbestimmte Beschränkung der Speicherverwendung überschritten war, mit einer symbolischen UND-Verknüpfung zwischen einer Vielzahl von Komponenten-Binärentscheidungsdiagrammen; und Bewerten der symbolischen UND-Verknüpfung durch UND-Verknüpfen von Komponenten-Binärentscheidungsdiagrammen, unter der Vielzahl von Binärentscheidungsdiagrammen, die die dritte Funktion in der mindestens einer der Aufteilungen darstellen, in einer angeordneten Ordnung, bis das Ergebnis der Bewertung Null ist.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei mindestens eine der ersten Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, ein erstes Ordnen von Primäreingaben aufweist, und mindestens eine weitere der ersten Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, ein zweites Ordnen von Primäreingaben aufweist.
  3. Computerimplementiertes Verfahren nach Anspruch 2, wobei mindestens eine der ersten Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, durch einen ersten Prozessor aufgebaut wird, und mindestens eine weitere der Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, durch einen zweiten Prozessor aufgebaut wird.
  4. Computerimplementiertes Verfahren nach Anspruch 2, wobei mindestens eine der ersten Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, und mindestens eine weitere der Aufteilungen, für die Binärentscheidungsdiagramme aufgebaut werden, gleichzeitig durch die ersten und zweiten Prozessoren aufgebaut wird.
  5. Verfahren nach Anspruch 2, wobei die vorbestimmte Beschränkung auf die Speicherverwendung durch Dividieren einer Menge von für einen Computer verfügbaren Speichers durch einen konstanten Wert bestimmt wird.
  6. Verfahren nach Anspruch 2, wobei die vorbestimmte Beschränkung auf Speicherverwendung durch Multiplizieren der Größe eines vorherigen Binärentscheidungsdiagramms mit einem konstanten Wert bestimmt wird.
  7. Verfahren nach Anspruch 1, wobei die angeordnete Ordnung kleinere Komponenten-Binärentscheidungsdiagramme für das UND-Verknüpfen vor größeren Binärentscheidungsdiagrammen anordnet.
  8. Verfahren nach Anspruch 1, wobei die angeordnete Ordnung Binärentscheidungsdiagramme mit einem Maximum von gemeinsamer Unterstützung für das UND-Verknüpfen vor Binärentscheidungsdiagramme mit einem Minimum von gemeinsamer Unterstützung anordnet.
  9. Verfahren nach Anspruch 1, wobei die Binärentscheidungsdiagramme nach Größe und zusätzlicher Unterstützung geordnet werden.
  10. Verfahren nach Anspruch 9, wobei die Binärentscheidungsdiagramme nach minimaler Größe und maximaler zusätzlicher Unterstützung geordnet werden.
  11. Verfahren nach Anspruch 1, des Weiteren umfassend die Bestimmung, ob das Ergebnis der Bewertung Null ist nach jedem UND-Verknüpfen der Komponenten-Binärentscheidungsdiagramme.
  12. Verfahren nach Anspruch 1, wobei die Binärentscheidungsdiagramme, die die mindestens eine Aufteilung darstellen, in Bezug auf Primäreingaben ausgedrückt werden.
  13. Computersystem zum Bestimmen ob erste und zweite Schaltungen, jede mit einem Satz von gemeinsamen Primäreingaben und entsprechenden gemeinsamen Primärausgaben, äquivalent sind, umfassend: Mittel zum Darstellen der ersten Schaltung als eine erste Boolesche Funktion; Mittel zum Darstellen der zweiten Schaltung als eine zweite Boolesche Funktion; Mittel zum Gewinnen einer dritten Funktion, die innerhalb eines Booleschen Raumes definiert ist, durch exklusives ODER-Verknüpfen der entsprechenden Primärausgaben der ersten und zweiten Booleschen Funktionen; Mittel zum Aufbauen eines zerlegten ersten Binärentscheidungsdiagramms für die dritte Funktion innerhalb des Booleschen Raumes; Mittel zum rekursiven Aufteilen des Booleschen Raumes, in dem die dritte Funktion definiert ist, in erste und zweite Aufteilungen während der Zusammensetzung eines Zerlegungspunktes, wenn das Binärentscheidungsdiagramm, das sich aus der Zusammensetzung ergibt, eine vorbestimmte Beschränkung der Computerspeicherverwendung überschreitet; Mittel zum Aufteilen der ersten Aufteilung in eine Vielzahl erster Aufteilungen; und Mittel zum Aufbauen von Binärentscheidungsdiagrammen für die dritte Funktion in jeder der ersten Aufteilungen, außer, wenn eine vorbestimmte Beschränkung der Speicherverwendung überschritten wird; gekennzeichnet durch: Mittel zum Darstellen der dritten Funktion in mindestens einer der ersten Aufteilungen, für die die vorbestimmte Beschränkung der Speicherverwendung überschritten war, mit einer symbolischen UND-Verknüpfung zwischen einer Vielzahl von Komponenten-Binärentscheidungsdiagrammen; und Mittel zum Bewerten der symbolischen UND-Verknüpfung durch UND-Verknüpfen von Komponenten-Binärentscheidungsdiagrammen, unter der Vielzahl von Binärentscheidungsdiagrammen, die die dritte Funktion in der mindestens einen der Aufteilungen darstellen, in einer angeordneten Ordnung, bis das Ergebnis der Bewertung Null ist.
  14. Computersystem nach Anspruch 13, wobei das Mittel zur Bestimmung multiple Prozessoren umfasst.
  15. Computersystem nach Anspruch 14, wobei die multiplen Prozessoren gleichzeitig bestimmen, ob eine separate Aufteilung der Vielzahl von Aufteilungen Null ist.
  16. Computersystem nach Anspruch 13, wobei das Mittel zur Bewertung ferner Mittel umfasst, um die Komponenten-Binärentscheidungsdiagramme, die die mindestens eine Aufteilung darstellen, in der angeordnete Ordnung zu ordnen.
  17. Computersystem nach Anspruch 16, wobei das Mittel zum Bewerten ferner bestimmt, ob irgendwelche UND-verknüpfte Komponenten-Binärentscheidungsdiagramme zu Null bewerten.
DE69838835T 1997-11-05 1998-10-28 Verfahren zur Prüfung und zur Darstellung einer Hardware durch Zerlegung und Aufteilung Expired - Lifetime DE69838835T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US964904 1997-11-05
US08/964,904 US6212669B1 (en) 1997-11-05 1997-11-05 Method for verifying and representing hardware by decomposition and partitioning

Publications (2)

Publication Number Publication Date
DE69838835D1 DE69838835D1 (de) 2008-01-24
DE69838835T2 true DE69838835T2 (de) 2008-11-27

Family

ID=25509142

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838835T Expired - Lifetime DE69838835T2 (de) 1997-11-05 1998-10-28 Verfahren zur Prüfung und zur Darstellung einer Hardware durch Zerlegung und Aufteilung

Country Status (4)

Country Link
US (4) US6212669B1 (de)
EP (1) EP0917073B1 (de)
JP (1) JP4028107B2 (de)
DE (1) DE69838835T2 (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212669B1 (en) 1997-11-05 2001-04-03 Fujitsu Limited Method for verifying and representing hardware by decomposition and partitioning
US6389374B1 (en) * 1998-06-03 2002-05-14 Fujitsu Limited OBDD variable ordering using sampling based schemes
US6360352B2 (en) * 1998-07-17 2002-03-19 David E. Wallace Digital circuit layout techniques
US6473885B1 (en) * 1998-07-17 2002-10-29 Mentor Graphics Corporation Digital circuit layout techniques using circuit decomposition and pin swapping
US6532440B1 (en) * 1998-10-16 2003-03-11 Fujitsu Limited Multiple error and fault diagnosis based on Xlists
US6397370B1 (en) * 1998-12-18 2002-05-28 Candence Design Systems, Inc. Method and system for breaking complex Boolean networks
US6408424B1 (en) * 1999-06-04 2002-06-18 Fujitsu Limited Verification of sequential circuits with same state encoding
US6484134B1 (en) * 1999-06-20 2002-11-19 Intel Corporation Property coverage in formal verification
GB2398901A (en) * 1999-06-20 2004-09-01 Intel Corp Coverage measurement of a formal verification property in which covered states cause the property to fail if the value of an observed signal is changed
US6959272B2 (en) * 1999-07-23 2005-10-25 Synopsys, Inc. Method and system for generating an ATPG model of a memory from behavioral descriptions
US6986137B1 (en) * 1999-09-28 2006-01-10 International Business Machines Corporation Method, system and program products for managing logical processors of a computing environment
US6519660B1 (en) * 1999-09-28 2003-02-11 International Business Machines Corporation Method, system and program products for determining I/O configuration entropy
US6745160B1 (en) * 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
US6536016B1 (en) * 2000-07-27 2003-03-18 Lsi Logic Corporation Method and apparatus for locating constants in combinational circuits
US6643827B1 (en) * 2000-09-30 2003-11-04 Intel Corporation Symbolic model checking with dynamic model pruning
US6587990B1 (en) * 2000-10-01 2003-07-01 Lsi Logic Corporation Method and apparatus for formula area and delay minimization
US6820244B2 (en) * 2001-02-09 2004-11-16 Sri International Methods for testing and programming nanoscale electronic devices
US6938223B2 (en) * 2001-02-15 2005-08-30 Zenasis Technologies, Inc. Logic circuit having a functionally redundant transistor network
US6567959B2 (en) * 2001-03-30 2003-05-20 Intel Corporation Method and device for verification of VLSI designs
US6912700B1 (en) * 2001-06-06 2005-06-28 The United States Of America As Represented By The National Security Agency Method and system for non-linear state based satisfiability
US7110525B1 (en) 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US6609234B2 (en) * 2001-06-29 2003-08-19 Intel Corporation Ordering binary decision diagrams used in the formal equivalence verification of digital designs
US7076407B2 (en) * 2001-08-24 2006-07-11 Wayne Biao Liu Space reduction in compositional state systems
US6698003B2 (en) * 2001-12-06 2004-02-24 International Business Machines Corporation Framework for multiple-engine based verification tools for integrated circuits
US20030115559A1 (en) * 2001-12-13 2003-06-19 International Business Machines Corporation Hardware validation through binary decision diagrams including functions and equalities
US6668362B1 (en) * 2002-01-09 2003-12-23 Synopsys, Inc. Hierarchical verification for equivalence checking of designs
US6701499B2 (en) * 2002-06-13 2004-03-02 Lsi Logic Corporation Effective approximated calculation of smooth functions
US8214421B2 (en) * 2002-06-17 2012-07-03 Ibm International Group Bv Conformance testing without reference implementation of an XML standard
US7058910B2 (en) * 2002-06-27 2006-06-06 The United States Of America As Represented By The Secretary Of The Navy Invariant checking method and apparatus using binary decision diagrams in combination with constraint solvers
US6792581B2 (en) * 2002-11-07 2004-09-14 Intel Corporation Method and apparatus for cut-point frontier selection and for counter-example generation in formal equivalence verification
US7788556B2 (en) * 2002-11-13 2010-08-31 Fujitsu Limited System and method for evaluating an erroneous state associated with a target circuit
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7111270B2 (en) * 2003-02-26 2006-09-19 Intel Corporation Method and apparatus to adaptively validate a physical net routing topology of a substrate design
US6877141B2 (en) * 2003-04-01 2005-04-05 Fujitsu Limited Evaluating a validation vector for validating a network design
US7139929B2 (en) * 2003-04-01 2006-11-21 Fujitsu Limited Generating a test environment for validating a network design
US7168014B2 (en) * 2003-04-01 2007-01-23 Fujitsu Limited Propagating an error through a network
US7444274B1 (en) 2003-04-23 2008-10-28 Cadence Design Systems, Inc. Method and system for verifying circuit designs through propagation of assertions
US7047510B1 (en) * 2003-04-23 2006-05-16 Cadence Design Systems, Inc. Method and system for partitioning an integrated circuit design
US7571403B2 (en) * 2003-05-23 2009-08-04 Fujitsu Limited Circuit verification
US20050060790A1 (en) * 2003-09-24 2005-03-24 Chang Cho Three position headpiece
JP4562136B2 (ja) * 2003-11-19 2010-10-13 財団法人北九州産業学術推進機構 グラフ幅削減装置及びグラフ幅削減方法、並びに論理回路合成装置及び論理回路合成方法
JP4485330B2 (ja) * 2003-11-20 2010-06-23 富士通株式会社 回路の有向ファルシフィケーション
US7231615B2 (en) * 2003-12-08 2007-06-12 Cadence Design Systems, Inc. Methods and apparatus for transforming sequential logic designs into equivalent combinational logic
US7093218B2 (en) * 2004-02-19 2006-08-15 International Business Machines Corporation Incremental, assertion-based design verification
US7231619B1 (en) * 2004-03-03 2007-06-12 Marvell Semiconductor Israel Ltd. Extended model checking hardware verification
US7275224B2 (en) * 2004-04-02 2007-09-25 International Business Machines Corporation Method for providing an area optimized binary orthogonality checker
US7146589B1 (en) * 2004-08-23 2006-12-05 Synplicity, Inc. Reducing equivalence checking complexity using inverse function
US20060058989A1 (en) * 2004-09-13 2006-03-16 International Business Machines Corporation Symbolic model checking of generally asynchronous hardware
US7322016B2 (en) * 2005-01-11 2008-01-22 International Business Machines Corporation Impact checking technique
US7143374B1 (en) * 2005-03-01 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for achieving analysis capacity for circuit analysis tools
US7506278B1 (en) 2005-03-08 2009-03-17 Xilinx, Inc. Method and apparatus for improving multiplexer implementation on integrated circuits
US7818793B2 (en) * 2005-03-23 2010-10-19 The Board Of Regents, University Of Texas System System and method of firewall design utilizing decision diagrams
US7343573B2 (en) * 2005-06-02 2008-03-11 International Business Machines Corporation Method and system for enhanced verification through binary decision diagram-based target decomposition
US7350169B2 (en) * 2005-06-02 2008-03-25 International Business Machines Corporation Method and system for enhanced verification through structural target decomposition
US7454738B2 (en) * 2005-06-10 2008-11-18 Purdue Research Foundation Synthesis approach for active leakage power reduction using dynamic supply gating
US7302655B2 (en) * 2005-06-14 2007-11-27 National Tsing Hua University Method for verifying a circuit design by assigning numerical values to inputs of the circuit design
US7340704B2 (en) * 2005-06-23 2008-03-04 International Business Machines Corporation Method and system for optimized automated case-splitting via constraints in a symbolic simulation framework
US7509597B1 (en) * 2005-06-30 2009-03-24 Altera Corporation Method and apparatus for performing post-placement functional decomposition on field programmable gate arrays using binary decision diagrams
US7693690B2 (en) * 2005-08-09 2010-04-06 Nec Laboratories America, Inc. Disjunctive image computation for sequential systems
US7555733B1 (en) * 2005-09-18 2009-06-30 Infinisim, Inc. Hierarchical partitioning
US7890896B2 (en) * 2005-11-18 2011-02-15 Synopsys, Inc. Method and apparatus for distinguishing combinational designs
US7877711B2 (en) * 2006-03-01 2011-01-25 Nangate A/S Methods of deriving switch networks
US7650579B2 (en) * 2006-05-25 2010-01-19 Freescale Semiconductor, Inc. Model correspondence method and device
US8171438B2 (en) * 2006-08-25 2012-05-01 International Business Machines Corporation Verification of a program partitioned according to the control flow information of the program
US7448008B2 (en) * 2006-08-29 2008-11-04 International Business Machines Corporation Method, system, and program product for automated verification of gating logic using formal verification
JP4241802B2 (ja) * 2006-10-27 2009-03-18 株式会社東芝 部品配置支援装置、方法およびプログラム
US20080109201A1 (en) * 2006-10-31 2008-05-08 Fujitsu Limited Disjunctive transition relation decomposition based verification
US7882473B2 (en) 2007-11-27 2011-02-01 International Business Machines Corporation Sequential equivalence checking for asynchronous verification
US8214780B2 (en) * 2008-08-27 2012-07-03 Intel Corporation Optimization of verification of chip design
US8195439B1 (en) 2008-09-02 2012-06-05 Infinisim, Inc. Real-time adaptive circuit simulation
US8862439B1 (en) * 2009-06-25 2014-10-14 Cadence Design Systems, Inc. General numeric backtracking algorithm for solving satifiability problems to verify functionality of circuits and software
US9177247B2 (en) * 2011-09-23 2015-11-03 Fujitsu Limited Partitioning medical binary decision diagrams for analysis optimization
US8812943B2 (en) * 2011-09-23 2014-08-19 Fujitsu Limited Detecting data corruption in medical binary decision diagrams using hashing techniques
US9075908B2 (en) * 2011-09-23 2015-07-07 Fujitsu Limited Partitioning medical binary decision diagrams for size optimization
US20130290919A1 (en) * 2012-04-27 2013-10-31 Synopsys, Inc. Selective execution for partitioned parallel simulations
US9275012B2 (en) 2013-06-11 2016-03-01 International Business Machines Corporation Multi-way number partitioning using weakest link optimality
CN107809235B (zh) * 2017-10-18 2021-03-26 浙江万里学院 用于转换规范rm逻辑电路的方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5243538B1 (en) 1989-08-09 1995-11-07 Hitachi Ltd Comparison and verification system for logic circuits and method thereof
US5128871A (en) * 1990-03-07 1992-07-07 Advanced Micro Devices, Inc. Apparatus and method for allocation of resoures in programmable logic devices
US5598344A (en) * 1990-04-06 1997-01-28 Lsi Logic Corporation Method and system for creating, validating, and scaling structural description of electronic device
US5555201A (en) * 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
US5377201A (en) 1991-06-18 1994-12-27 Nec Research Institute, Inc. Transitive closure based process for generating test vectors for VLSI circuit
US5349659A (en) 1992-01-23 1994-09-20 Cadence Design Systems, Inc. Hierarchical ordering of logical elements in the canonical mapping of net lists
US5497334A (en) 1993-02-19 1996-03-05 International Business Machines Corporation Application generator for use in verifying a hierarchical circuit design
US5528508A (en) 1993-02-19 1996-06-18 International Business Machines Corporation System and method for verifying a hierarchical circuit design
US5481473A (en) 1993-02-19 1996-01-02 International Business Machines Corporation System and method for building interconnections in a hierarchical circuit design
US5522063A (en) 1993-09-27 1996-05-28 Nec Usa, Inc. Method of finding minimum-cost feedback-vertex sets for a graph for partial scan testing without exhaustive cycle enumeration
US5485471A (en) 1993-10-15 1996-01-16 Mitsubishi Electric Research Laboratories, Inc. System for testing of digital integrated circuits
US5469367A (en) * 1994-06-06 1995-11-21 University Technologies International Inc. Methodology and apparatus for modular partitioning for the machine design of asynchronous circuits
US5526514A (en) 1994-06-21 1996-06-11 Pradhan; Dhiraj Method for circuit verification and multi-level circuit optimization based on structural implications
DE4423367A1 (de) 1994-07-04 1996-07-25 Siemens Ag Verfahren zur hierarchischen Logik-Verifikation hochintegrierter Schaltungen
US5649165A (en) * 1995-01-31 1997-07-15 Fujitsu Limited Topology-based computer-aided design system for digital circuits and method thereof
JPH096821A (ja) 1995-04-21 1997-01-10 Hitachi Ltd 論理回路の合成方法、半導体装置の製造方法および二分決定グラフの最適化方法
US5805462A (en) * 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
US5680332A (en) * 1995-10-30 1997-10-21 Motorola, Inc. Measurement of digital circuit simulation test coverage utilizing BDDs and state bins
US5787006A (en) 1996-04-30 1998-07-28 Micron Technology, Inc. Apparatus and method for management of integrated circuit layout verification processes
US6086626A (en) * 1997-05-16 2000-07-11 Fijutsu Limited Method for verification of combinational circuits using a filtering oriented approach
US6212669B1 (en) 1997-11-05 2001-04-03 Fujitsu Limited Method for verifying and representing hardware by decomposition and partitioning
US6026222A (en) * 1997-12-23 2000-02-15 Nec Usa, Inc. System for combinational equivalence checking

Also Published As

Publication number Publication date
US7673263B2 (en) 2010-03-02
EP0917073A3 (de) 2003-06-04
US6212669B1 (en) 2001-04-03
US20060129953A1 (en) 2006-06-15
EP0917073B1 (de) 2007-12-12
DE69838835D1 (de) 2008-01-24
US6560758B1 (en) 2003-05-06
JP4028107B2 (ja) 2007-12-26
US20040015799A1 (en) 2004-01-22
US7028278B2 (en) 2006-04-11
JPH11219378A (ja) 1999-08-10
EP0917073A2 (de) 1999-05-19

Similar Documents

Publication Publication Date Title
DE69838835T2 (de) Verfahren zur Prüfung und zur Darstellung einer Hardware durch Zerlegung und Aufteilung
DE19860061B4 (de) System zur Prüfung der kombinatorischen Äquivalenz
US7386521B2 (en) Automatic test program generation using extended conditional constraint satisfaction
US6301687B1 (en) Method for verification of combinational circuits using a filtering oriented approach
Hauke et al. Recent development of social simulation as reflected in JASSS between 2008 and 2014: A citation and co-citation analysis
DE60005670T2 (de) Aktualisierung der platzierung während der technologieabbildung
DE19903633A1 (de) Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware
EP0580663B1 (de) Verfahren zur verifikation datenverarbeitender systeme
US6389374B1 (en) OBDD variable ordering using sampling based schemes
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
EP1127323A1 (de) Verfahren und anordnung zum vergleich einer ersten eigenschaft mit vorgegebenen eigenschaften eines technischen systems
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE10038499A1 (de) Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung
US20090259454A1 (en) Automatic test program generation using extended conditional constraint satisfaction
CN107579844A (zh) 一种基于业务路径和频度矩阵的动态关联故障挖掘方法
EP1068580B1 (de) Verfahren zum vergleich elektrischer schaltungen
Lin et al. The reliability analysis of distributed computing systems with imperfect nodes
Besson et al. Synthesis on multiplexer-based FPGA using binary decision diagrams
DE102021122558A1 (de) Optimierung von scanketten-signalleitungslängen mit auf q- learning beruhendem bestärkendem lernen
DE112020000193T5 (de) Quantenschaltungsanordnung
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
DE19924242A1 (de) Vektorrestauration mit beschleunigter Validation und Verfeinerung
DE102018217016A1 (de) Ein-Chip-System und Sicherheitsschaltung mit einem derartigen Ein-Chip-System
EP3575976A1 (de) Verfahren zum bestimmen einer physikalischen verbindungstopologie eines für die steuergerätentwicklung eingerichteten, echtzeitfähigen testgeräts
EP0413831B1 (de) Optimierungsverfahren einer logischen schaltung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: SEEGER SEEGER LINDNER PARTNERSCHAFT PATENTANWAELTE