-
Die
vorliegende Erfindung betrifft eine Vorrichtung und ein Verfahren
zum Identifizieren von falschen Synchronisationspfaden (False-Timing-Paths)
in digitalen Schaltungen, wobei wenigstens ein stimuliertes Pfadelement,
das auf einem Signalpfad liegt, mit wenigstens einem pfadabseitigen
Signal assoziiert ist.
-
Die
vorliegende Erfindung betrifft insbesondere den Bereich Design,
Layout und Optimierung digitaler Schaltungen.
-
Computer
werden in CADCAM-Anwendungen (rechnergestützte Konstruktion und Fertigung)
als Werkzeug für
Ingenieure und Designer eingesetzt. Eine Anwendung, für die Computer
eingesetzt werden, ist das Design-, Layout- und Optimierungsverfahren
für digitale
Schaltungen. Bevor eine integrierte Schaltung (IC) tatsächlich gefertigt
wird, kann ihr Schaltungsdesign auf einem Computer simuliert und
getestet werden. Fehler im Design können dann identifiziert und
korrigiert werden, ohne den Chip tatsächlich zu fertigen und zu testen.
Dadurch werden Entwicklungskosten minimal gehalten und die Zeit
bis zur Vermarktung wird verkürzt. Ferner
werden Computer zum Optimieren von IC-Layout eingesetzt, um die
Chipgröße zu reduzieren.
Die Reduzierung der Chipgröße ist deshalb
wichtig, weil eine geringere Chipgröße bedeutet, dass von einem
bestimmten Wafer mehr Chips hergestellt werden können. Dies wiederum bedeutet
unmittelbar geringere Herstellungskosten pro Chip.
-
IC-Testtools
des Standes der Technik haben derzeit die Fähigkeit, False-Timing-Paths zu identifizieren.
Ein False-Timing-Path wird als ein Synchronisationspfad definiert,
der niemals logisch benutzt wird. Mit anderen Worten, unabhängig davon,
welche Kombination von Signalen an die IC angelegt wird, der False-Timing-Path
wird niemals implementiert. Der Grund, warum das Identifizieren
von False-Timing-Paths wichtig ist, ist der, dass False-Timing-Paths
nicht mehr optimiert zu werden brauchen, wenn sie einmal bekannt
sind. Schaltungsdesigns können
zuweilen hunderte von False-Timing-Paths
haben. Diese False-Timing-Paths nicht alle optimieren zu müssen bedeutet
weniger Designaufwand und verkürzt
die Designzyklen.
-
Im
Stand der Technik wurden Vektoren in dem Bemühen eingesetzt, False-Timing-Paths zu identifizieren.
So kann beispielsweise beim Entwerfen eines Addierers, der zwei
digitale Zahlen miteinander addiert, der Ingenieur oder Designer
Gruppen von Zahlen (z. B. Vektoren) einführen, die miteinander addiert
werden, um das Schaltungslayout zu testen. Das Problem der Anwendung
eines Vektorenansatzes besteht darin, dass der Ingenieur oder Designer
zunächst
die spezifischen Vektoren identifizieren muss, die auf ein bestimmtes
Schaltungsdesign anzuwenden sind. Dies kann eine zeitaufwändige und
mühsame
Aufgabe sein. Darüber
hinaus ist es, wenn nicht eine erschöpfende Anzahl von Vektoren
verwendet wird, praktisch unmöglich,
jeden potentiellen Fall zu testen. Darüber hinaus werden einige Elemente
einer Schaltung möglicherweise
von mehreren verschiedenen Pfaden gemeinsam genutzt, wodurch die
Komplexität
des Testvorgangs erhöht
wird.
-
Darüber hinaus
werden ICs immer komplexer. So können
beispielsweise anwendungsspezifische ICs (ASICs) und Gate-Arrays
tausende von Gates enthalten. In der Tat haben moderne Mikroprozessoren
Millionen von Transistoren. Der Trend geht immer mehr in Richtung
auf noch komplexere Logik und ICs höherer Dichte. In dem Bemühen, mit
diesen Fortschritten Schritt zu halten, werden immer schnellere
und leistungsfähigere
Computer entwickelt. Außerdem
werden die Anwendungsprogramme für
Schaltungsdesigns immer fortschrittlicher. Selbst mit Hilfe von
Computern wird es zu einer recht komplizierten und aufwändigen Aufgabe, eine
IC zu entwerfen, anzuordnen, zu optimieren und zu testen. Der Trend
geht in Richtung auf den Aufwand von immer größeren Mengen an Zeit, Betriebsmitteln
und Geld zum Testen neuer Halbleiterdesigns.
-
Es
besteht im Stand der Technik Bedarf an einem zuverlässigen und
effizienten Mechanismus zum Identifizieren von False-Timing-Paths
in digitalen Schaltungen, um die Aufgabe des Testens eines neuen
Halbleiterdesigns zu minimieren. Ein solcher Mechanismus soll für seinen
Betrieb vorzugsweise nur ein Minimum an menschlicher Interaktion
erfordern.
-
Die
Proceedings of the IEEE/ACM International Conference on Computer
Aided Design (ICCAD), Santa Clara, 8.–12. November 1992, Nr. Conf.
10, Institute of Electrical and Electronics Engineers, Seiten 258–262, XP000370793
Brashear R. B. et al. 'ETA:
Electrical Level Timing Analysis',
erkennen die Notwendigkeit, False-Timing-Paths im Design-Layout und in der Optimierung
einer logischen Schaltung zu eliminieren. In diesem Dokument wird
ein Synchronisationsanalysegerät
beschrieben, das eine Synchronisationsanalyse unter Berücksichtigung
von Details auf elektrischem Niveau durchführt und dabei auch Pfadsensibilisierung
berücksichtigt.
-
Eine
Synchronisationsanalyse auf elektrischem Niveau verläuft in zwei
Phasen: (1) Logik- und Verzögerungsvorcharakterisierung
und (2) Längster-Pfad-Analyse.
In der Vorcharakterisierungsphase wird jedes Gate analysiert, um
seine boolesche Funktion und seine Last auf Transistorlevel zu erhalten.
Während
dieser Längster-Pfad-Analysephase
werden Pfade von jedem Primäreingang
nummeriert und separat untersucht. Jeder potentiell längste Pfad
wird auf Sensibilisierbarkeit auf Gate-Ebene geprüft, bis
ein sensibilisierbarer längster
Pfad gefunden ist.
-
Die
vorliegende Erfindung betrifft eine Vorrichtung und ein Verfahren
zum Identifizieren von False-Timing-Paths in einer digitalen Schaltung.
Zunächst
wird eine Liste von Pfaden erzeugt, die der digitalen Schaltung
entsprechen. Für
jeden Pfad der digitalen Schaltung wird eine AND-Funktion erzeugt.
Für jedes
Element in dem Pfad werden die pfadabseitigen Signale der Schaltung,
die den Elementen des Pfades entsprechen, mit dem Eingang der AND-Funktion
gekoppelt. Es wird eine Mehrzahl von verschiedenen Signalen in die
digitale Schaltung eingegeben, in einem Versuch, eine „1" am Ausgang der AND-Funktion
zu erzeugen. Wenn die AND-Funktion keine „1" für
eine mögliche
Eingangskombination der Schaltung ausgeben kann, dann ist dieser Pfad
als False-Timing-Path identifiziert. Dieser Vorgang wird für jeden
Pfad der digitalen Schaltung wiederholt, um alle False-Timing-Paths
zu identifizieren.
-
In
einer Ausgestaltung gibt ein Benutzer eine Netzliste, Pfadinformationen
und eine Bibliothekstabelle in ein Computersystem ein, um die False-Timing-Paths
für die
verschiedenen Module eines neuen Halbleiterchipdesigns zu identifizieren.
Die Netzliste gibt die elektrischen Kennwerte der verschiedenen
Module vor. Diese Netzliste wird durch Addieren eines AND-Gate-Schaltkomplexes
modifiziert, um jeden der mit einem bestimmten Modul assoziierten
Pfade zu validieren. Diese modifizierte Netzliste wird als Überwachungsschaltung bezeichnet.
Die Pfadinformationen definieren die Verbindungen zwischen den elektrischen
Elementen einer Überwachungsschaltung.
Die Bibliothekstabelle enthält
die Informationen, die zum Verbinden der AND-Gates für jeden
Pfad der Überwachungsschaltung
notwendig sind. Somit existieren für jedes Modul Pfade von jedem Eingang
zu jedem Ausgang dieses Moduls.
-
Dann
werden Testsignale an diese Überwachungsschaltung
angelegt. Wenn eines der Testsignale über einen der Pfade propagieren
kann, dann wird dieser Pfad als aktiv bezeichnet. Dieser Vorgang
wird für jeden
der Pfade der Überwachungsschaltung
wiederholt. Durch Implementieren einer booleschen Funktion für jeden
der Eingänge
der Überwachungsschaltung
wird ermittelt, ob ein Pfad aktiviert wurde oder nicht. Der Ausgang
der Überwachungsschaltung
ist „1 ", wenn der Pfad aktiviert
ist, ansonsten „0". Wenn ein bestimmter
Pfad der Überwachungsschaltung
nach einer vorbestimmten Zahl von verschiedenen Testsignalen nicht
aktiviert werden kann, dann wird dieser Pfad als False-Timing-Path
bezeichnet. Nach dem Identifizieren aller False-Timing-Paths kann
dieses neue Design effizienter optimiert werden, indem die identifizierten
False-Timing-Paths unberücksichtigt
bleiben.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft, und nicht einschränkend, in
den Figuren der Begleitzeichnungen illustriert, und ähnliche
Elemente erhielten gleiche Bezugsziffern. Dabei zeigt:
-
1 ein
typisches Computersystem, das zum Identifizieren von False-Timing-Paths gemäß der vorliegenden
Erfindung verwendet wird;
-
2 den
Ablauf des False-Path-Identifikationsprozesses der vorliegenden
Erfindung;
-
3 ein
Fließschema,
das die Schritte zum Erzeugen der Bibliothekstabelle aus der Grundstrukturkomponenten-Bibliotheksdatei
beschreibt;
-
4a einen
pfadabseitigen Innennetzeingang vom Kegel zum Gate-Monitor;
-
4b eine Überwachungsschaltung
für eine
Grundstrukturkomponente, die ein internes pfadabseitiges Netz enthält;
-
5 ein
Beispiel für
eine Gate-Monitor-Schaltung;
-
6a Tristate-Elemente,
die auf dem Pfad liegen;
-
6b eine Überwachungsschaltung,
die für
Tristate-Elemente eingesetzt werden kann;
-
6c eine
alternative Ausgestaltung einer Überwachungsschaltung
für die
Verwendung mit "Tristate-Elementen;
-
6d die
derzeit bevorzugte Ausgestaltung einer Überwachungsschaltung, die vom
Bibliotheksgenerator erzeugt wurde;
-
7a eine
AND-OR-Implementation eines XOR-(Exclusive-Or-)Gates;
-
7b die
Pfadüberwachungsschaltung
für das
durch Gates propagierende B-Signal;
-
7c die
Eliminierung eines auf dem Pfad liegenden Eingangs für ein XOR-Gate;
-
7d die
Reduzierung der Pfadüberwachungsschaltung
zu einem einzelnen Puffer;
-
8 eine
Schaltung mit zwei Pfaden zum Ausgang;
-
9 einen
Ein-Ausgangsmonitor mit Übergangspolaritätsvorkehrung;
-
10 ein
Fließschema,
das die Schritte zum Identifizieren der Pfade beschreibt, die nicht
erregt werden können
und von denen gefunden wurde, dass sie die Synchronisationsbeschränkungen überschreiten;
-
11 ein
Blockdiagramm, das für
einen Teil einer integrierten Schaltung und eine entsprechende False-Path-Identifikationsschaltung
repräsentativ
ist;
-
12 eine
typische Überwachungsschaltung,
wie sie für
Elemente in einem Pfad eingesetzt werden kann.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es
werden eine Vorrichtung und ein Verfahren zum Identifizieren von
False-Timing-Paths
beschrieben. In der nachfolgenden Beschreibung werden zur Erläuterung
zahlreiche spezifische Einzelheiten dargelegt, wie z. B. Gates,
Subroutinen, Netzlisten usw., um ein tiefgreifendes Verständnis der
vorliegenden Erfindung zu vermitteln. Es wird für die Fachperson jedoch offensichtlich
sein, dass die vorliegende Erfindung auch ohne diese spezifischen
Einzelheiten umgesetzt werden kann. In anderen Fällen werden allgemein bekannte
Strukturen und Bauelemente nur in Blockdiagrammform dargestellt,
um unnötige
Details zu vermeiden, die die vorliegende Erfindung undeutlich machen.
-
1 zeigt
ein typisches rechnergestütztes
System zum Identifizieren von False-Timing-Paths gemäß der vorliegenden Erfindung.
Es ist ein Computer 101 dargestellt, der drei Hauptkomponenten
umfasst, einschließlich
Ein-/Ausgabe-(E/A)Schaltung 102, Zentraleinheit (CPU) 103 und
Speicher 104. Diese letzteren beiden Elemente sind in den
meisten Universalcomputern und in fast allen Spezialcomputern zu
finden. In der Tat sollen die mehreren in dem Computer 101 enthaltenen
Elemente für
diese breite Kategorie von Datenprozessoren repräsentativ sein. Spezifische
Beispiele für
geeignete Datenprozessoren, die die Rolle des Computers 101 erfüllen, sind
u. a. Maschinen, die von Sun Microsystems, Inc. aus Mountain View
in Kalifornien hergestellt werden. Andere Computer mit ähnlichen
Fähigkeiten
können
natürlich
auf einfache Weise zur Ausführung
der nachfolgend beschriebenen Funktionen angepasst werden.
-
1 zeigt
auch ein Eingabegerät 105,
das in der typischen Ausgestaltung eine Tastatur ist. Es ist jedoch
zu verstehen, dass das Eingabegerät tatsächlich auch ein Kartenleser,
ein Magnetband- oder Papierstreifenleser oder ein anderes bekanntes
Eingabegerät
sein kann (natürlich
auch ein anderer Computer). Ein Massenspeichergerät 106 ist
mit der E/A-Schaltung 102 gekoppelt und bietet zusätzliche
Speicherfähigkeit
für den
Computer 101. Der Massenspeicher kann andere Programme
und dergleichen enthalten und kann die Form eines Magnetband- oder
Papierstreifenlesers oder eines anderen bekannten Gerätes haben.
Es ist klar, dass die im Massenspeicher 106 gespeicherten
Daten in geeigneten Fällen
auch auf standardmäßige Weise als
Teil des Speichers 104 im Computer 101 gespeichert
werden können.
-
Darüber hinaus
wird ein Anzeigemonitor 107 illustriert, der zum Anzeigen
von Meldungen oder anderen Mitteilungen für den Benutzer verwendet wird.
Ein solcher Anzeigemonitor kann die Form eines beliebigen aus einer
Reihe bekannter verschiedener CRT-Displays haben. Mit einem Cursor 108 werden
Befehlsarten ausgewählt
und die Eingabedaten bearbeitet, und er stellt im Allgemeinen ein
praktischeres Mittel zum Eingeben von Informationen in das System
dar.
-
2 zeigt
den Ablauf des False-Timing-Path-Identifikationsprozesses der vorliegenden
Erfindung. Ein Bibliotheksgenerator 201 wird zum Erstellen
einer Bibliothekstabelle 202 verwendet, die in den False-Timing-Path-Vorbereitungsblock 205 eingegeben
wird. Die Bibliothekstabelle 202 beinhaltet die Netzliste,
die auf die ursprüngliche
Netzliste erweitert wird, um bei der Suche von False-Timing-Paths
behilflich zu sein. Die erweiterte Netzliste wird als Überwachungs-(Monitor-)-schaltung
bezeichnet. Für
jedes Modul in der Bibliothekstabelle 202 gibt es Pfade
von jedem Eingang zu jedem der Ausgänge. Ein Übergang kann nur dann über einen
Pfad propagieren, wenn bestimmte Bedingungen erfüllt sind. Wenn ein Übergang über einen
Pfad propagieren kann, dann wird dieser Pfad als aktiviert bezeichnet.
Die Überwachungsschaltung,
die eine boolesche Funktion der Moduleingänge implementiert, gibt an,
ob ein Pfad aktiviert wurde oder nicht. Der Ausgang der Überwachungsschaltung
ist „1", wenn der Pfad aktiviert
ist, ansonsten „0". Um zu ermitteln,
ob es eine Eingangskombination gibt, die einen Pfad aktiviert, wird
die Überwachungsschaltung
durch einen ATPG-Block 208 gespeist, um einen Eingangsvektor
zu finden, der bewirkt, dass die Ausgangsüberwachungsschaltung „1" ist. Die Bibliothekstabelle 202 enthält die Informationen,
die zum Erzeugen der AND-Funktion
für jeden
Pfad benötigt
werden. Die Informationen in Bibliothekstabellen 202 für jede Grundstruktur
befinden sich zwischen einem Anfangs- und einem Ende-Statement. Jede Zeile
der Informationen, die eine Grundstruktur bilden, enthält vier
Felder: ein auf dem Pfad liegendes Ausgangssignal, ein auf dem Pfad
liegendes Eingangssignal, eine hinzuzufügende Netzliste und die herzustellende
Verbindung. Die Pfadliste 203 führt alle Pfade auf, die als falsch
oder nicht falsch identifiziert werden sollen. Die Netzliste 204 enthält die ursprüngliche
Netzliste. Der False-Path-Vorbereitungsblock 205 modifiziert
eine Netzliste für
eine False-Timing-Path-Identifikation.
Darin können
eine Netzliste, Pfadinformationen und eine Bibliothekstabelle eingehen.
Er modifiziert dann die Netzliste durch Hinzufügen des AND-Funktionsschaltkomplexes
zum Validieren jedes Pfades. Der Ausgang vom False-Timing-Path-Vorbereitungsblock 205 ist
eine aktualisierte Netzliste 206 und eine Fehlerliste 207.
Die aktualisierte Netzliste 206 enthält die modifizierte Netzliste
mit Modifikationen wie z. B. neue Eingänge in der Moduldefinition,
ein neues Ausgangsstatement für
jeden Pfad und ein neues AND-Gate für jeden Pfad. Die Eingänge zur
AND-Funktion sind die pfadabseitigen Signale, die von der Bibliothekstabelle 202 abgeleitet
werden. Die Fehlerliste 207 enthält die Ausgänge aller AND-Gates, die von
dem False-Path-Vorbereitungsblock 205 erzeugt wurden. Die
resultierenden identifizierten falschen Pfade sind in Block 209 enthalten.
-
3 zeigt
ein Fließschema,
das die Schritte zum Erzeugen der Bibliothekstabelle von der Bibliotheksdatei
beschreibt. Zunächst
wird die Bibliothek gelesen (Schritt 301). Dann werden
die Kommentare entfernt und die CMOS-Gates werden auf ihre äquivalenten
NMOS- und PMOS-Gates erweitert (Schritt 302). Als Nächstes werden
Instanznamen für
jedes) unbenannte Gate oder Modulinstanz erzeugt (Schritt 303).
Alle Module werden dann abgeflacht (Schritte 304). Man
beachte, dass Schritt 304 fakultativ ist. Danach werden
die Pfade von jedem Eingang zu jedem Ausgang in jedem Modul aufgezählt (Schritt 305).
Für jeden
Pfad wird eine Überwachungsschaltung
erzeugt (Schritt 307). Diese Überwachungsschaltung wird dann
auf die Bibliothekstabelle geschrieben (Schritt 308).
-
Für jedes
Ein-Ausgangspaar in einem Modul wird eine Überwachungsschaltung erzeugt.
Ein Eingang kann mehrere Pfade haben, die ihn mit diesem Ausgang
verbinden, oder auch überhaupt
keine Pfade. Um einen Übergang
von einem Eingang eines Gates zu seinem Ausgang zu propagieren,
müssen
die anderen Eingänge,
pfadabseitig genannt, auf bestimmte Werte gesetzt werden. Für Puffer
und Inverter gibt es keine anderen Eingänge. Für AND- und NAND-Gates müssen die
anderen Eingänge
auf 1 gesetzt werden. Andererseits werden, wenn der Übergang
vom Steuereingang zum Ausgang propagiert, alle anderen mit demselben
Ausgangsknoten verbundenen Tristate-Elemente untersucht.
-
Um
zu ermitteln, ob diese Bedingungen erfüllt sind, werden die abseitigen
Pfade mit einem neuen Gate gekoppelt, Gate-Monitor genannt. Der
Gate-Monitor gibt eine 1 aus, wenn die Bedingungen erfüllt sind,
ansonsten eine 0. Für
AND- und NAND-Gates ist der Gate-Monitor ein Puffer, wenn es nur
einen pfadabseitigen Eingang gibt. Ansonsten werden alle pfadabseitigen
Eingänge
einem AND-Vorgang unterzogen. Für
OR- und NOR-Gates wird der Gate-Monitor umgekehrt, wenn es nur einen
pfadabseitigen Eingang gibt. Ansonsten ist dies das NOR aller pfadabseitigen
Eingänge.
-
Pfadabseitige
Eingänge
können
im Allgemeinen keine Primäreingänge des
Moduls sein. Es besteht die Möglichkeit,
dass diese internen pfadabseitigen Eingänge für ein Higher-Level-Modul nicht
zugängig
sind. Daher sollten die Bedingungen an diesen internen Netzen nur
in Abhängigkeit
vom Primäreingang
extrahiert werden. Der Bibliotheksgenerator extrahiert diese Information
durch Ausschneiden und Einfügen
des den pfadabseitigen Eingang erzeugenden Blocks. Dieser Kegel
wird an die Überwachungsschaltung
angehängt.
Ein Inverter wird zwischen den Kegel und die Überwachungsschaltung eingefügt, wenn
die benötigte
Bedingung eine 0 am pfadabseitigen Eingang ist. 4a zeigt
einen internen pfadabseitigen Netzeingang vom Block 401 zum
Gate-Monitor 402. Der Gate-Monitor 402 akzeptiert
auch Eingangssignale von den Gates 403 und 404. 4b zeigt
eine Überwachungsschaltung
für den
Gate-Monitor 406 mit einem pfadabseitigen Monitor 405.
-
Jeder
Pfad ist eine Serie von zusammengeschalteten Gates. Um einen Übergang über einen
Pfad zu propagieren, müssen
die pfadabseitigen Eingänge
der Gates in dem Pfad einen nichtsteuernden Wert haben. Um diese
Bedingung zu erfüllen,
müssen
alle Gate-Monitore für
die Gates über
den Pfad einen Ausgang von 1 haben. Dadurch wird gewährleistet,
dass der Pfadmonitor das AND der Ausgänge dieser Gate-Monitore ist. Unter
bestimmten Umständen
kann ein bestimmter Eingang auch von mehr als einem Pfad mit einem
bestimmten Ausgang verbunden werden. Wenn dies der Fall ist, dann
wird durch Aktivieren eines beliebigen Pfades gewährleistet,
dass ein Übergang
von diesem Eingang zu diesem Ausgang propagiert. Somit reicht eine 1
auf einem beliebigen Pfadmonitor aus, und die Ein-Ausgangs-Überwachungsschaltung
für dieses
Ein-Ausgangspaar
ist das OR aller Pfadmonitore für
die Pfade, die diesen Eingang mit diesem Ausgang verbinden.
-
5 zeigt
ein Beispiel für
eine Gate-Monitor-Schaltung. Es gibt zwei Pfade 501 und 502 zwischen Eingang
und Ausgang. Pfad 501 beinhaltet Gates 518 und 503–505, Pfad 502 beinhaltet
Gates 505–507.
Diese Pfade und Gates umfassen die Überwachungsschaltung. Die ursprüngliche
Schaltung besteht aus Gate-Monitoren 508–514,
Pfadmonitoren 515–516 und
Ein-Ausgangsmonitor 517. Man beachte, dass Gate-Monitore 511 und 512 verschiedene
Eingänge
haben. Die Pfadmonitore 515 und 516 sind jeweils
die Pfadmonitore für
Pfad 501 bzw. 502. Der Ausgang des Ein-Ausgangsmonitors 517 ist
nur dann 1, wenn ein Übergang
vom Eingang zum Ausgang propagieren kann.
-
In
der derzeit bevorzugten Ausgestaltung werden CMOS-Übertragungsgates
durch ihre äquivalenten PMOS-
und NMOS-Gates ersetzt, wenn die Netzliste geparst wird. Wenn ein
Eingang zu einem Gate in der Netzliste eine Konstante oder eine
Speisespannung ist, dann reduziert der Bibliotheksgenerator das
Gate entweder durch Eliminieren des Eingangs oder durch Eliminieren
des gesamten Gate (aufgrund eines konstanten Ausgangs), je nach
Gate-Typ und Eingangskonstante. Wenn ein Eingang auf diese Weise
eliminiert wurde, dann kann der Gate-Typ geändert werden (z. B. wenn ein
Eingang zu einem AND-Gate mit 2 Eingängen an eine Konstante 1 gebunden
ist, dann wird dieser Eingang eliminiert und das Gate wird zu einem
Puffer). Wenn ein Gate eliminiert wird, dann wird der Effekt des
konstanten Ausgangs zu denjenigen Gates propagiert, deren Eingänge mit
diesem Ausgang verbunden sind. Diese Gates werden dann aufgrund
des neuen konstanten Eingangs weiter reduziert. Diese Reduzierungen
sind in Tabelle 2 unten zusammengefasst.
-
Tabelle
2: Reduzierungen von konstanten Eingängen
-
Man
beachte, dass, wenn der Dateneingang eines Tristate-Elementes konstant
ist, der Ausgang entweder ein konstanter Logikwert oder eine hohe
Impedanz ist. Wenn beispielsweise der Dateneingang eines NOTIF0
Gates 1 ist, dann ist der Ausgang 0, wenn Control 0 ist, und der
Ausgang ist eine hohe Impedanz, wenn Control 1 ist. Der Ausgang
kann nicht 1 sein. Wenn dieses Tristate-Element denselben Ausgangsknoten mit
anderen Tristate-Elementen in der Schaltung gemeinsam nutzt, dann
kann dieses Tristate-Element reduziert werden. Wenn der Ausgang
des Tristate-Elementes jedoch nicht gemeinsam genutzt wird, dann
setzt der Bibliotheksgenerator den Ausgang des Tristate-Elementes
so, dass er entweder der Steuereingang oder sein Komplement ist.
-
Wenn
sich der Steuereingang eines Tristate-Elementes auf dem Pfad befindet,
dann kann dieses Tristate-Element keinen Übergang während der Ausgangsperiode garantieren.
Der Grund ist, dass ein Übergang auf
dem Control des Tristate-Elementes bewirkt, dass dieses von „aus" auf „ein" oder umgekehrt schaltet,
wobei der Ausschaltzustand eine hohe Impedanz ist. Der Einschaltszustand
ist entweder der Dateneingang oder sein Komplement. Wenn der Ausgang
des Tristate-Elementes mit anderen Tristate-Elementen gemeinsam
genutzt wird und wenn jeweils genau ein Tristate-Element eingeschaltet
ist, dann wird gewährleistet,
dass dieser Ausgang nicht im Hochimpedanzzustand ist.
-
6a zeigt
auf dem Pfad liegende Tristate-Elemente. Tristate-Elemente 602 und 603 nutzen
denselben Ausgang wie das Tristate-Element 601. Wenn der Übergang
durch das Control von Element 602 von „aus" auf „ein" geschaltet wird, dann muss, um zu gewährleisten,
dass ein Übergang
am Ausgang auftritt, der Ausgang von Element 601 das Komplement
des Ausgangs von Element 602 sein. Dies gilt nur dann,
wenn das XOR der beiden Ausgänge
gleich 1 ist. Im Hinblick auf Eingänge ist, wenn beide Elemente 601 und 602 invertierend
oder wenn beide nicht invertierend sind, das XOR der Ausgänge mit
dem XOR der Eingänge äquivalent.
Wenn ein Tristate-Element invertierend ist, während das andere nicht invertierend
ist, dann ist das XOR der Ausgänge
mit dem XNOR der Eingänge äquivalent. 6b zeigt
eine Überwachungsschaltung,
wie sie für Tristate-Elemente
eingesetzt werden kann. Die Überwachungsschaltung
besteht aus einem XOR/XNOR-Gate 604. 6c zeigt
eine alternative Ausgestaltung einer Überwachungsschaltung für die Verwendung
mit Tristate-Elementen. Angenommen, dass das Element 603 anstatt 602 schaltet,
gibt es nur auf der Basis von rein kombinatorischen Schaltungen
keine Möglichkeit
zu erfassen, ob Element 602 oder 603 schaltet,
weil zum Erfassen eines Übergangs
ein Speicher benötigt
wird. Demzufolge werden flankengetriggerte Flipflops 605–608 benutzt,
um positive oder negative Übergänge auf
dem Steuerelement zu erfassen. Es wird angenommen, dass die Dateneingänge a–a3 während dieses Übergangs
stabil sind. Die Flipflops 605–608 werden so initialisiert,
dass sie vor dem Übergang
gleich a1 sind. Die Ausgänge
des Flipflop 605–606 werden
vom OR-Gate 609 zusammen einem OR-Vorgang unterzogen. Dann
wird vom XOR-Gate 611 ein XOR-Vorgang mit a1 durchgeführt. Ebenso
werden die Ausgänge
der Flipflops 607–608 vom
OR-Gate 610 zusammen einem OR-Vorgang unterzogen. Ein XOR-Vorgang
wird dann vom XOR-Gate 612 an a1 durchgeführt. Die
Ausgänge der
XOR-Gates 611–612 werden
vom OR-Gate 613 zusammen einem OR-Vorgang unterzogen. 6d zeigt die
derzeit bevorzugte Ausgestaltung einer Überwachungsschaltung, die vom
Bibliotheksgenerator erzeugt wurde. Um die Überwachungsschaltung zu vereinfachen,
werden keine sequentiellen Elemente verwendet. Es wird davon ausgegangen,
dass die Übergänge an den
Steuerelementen wie gezeigt vorhanden sind. So werden beispielsweise
a1 und a2 in das XOR-Gate 614 eingegeben, während a1
und a3 in das XOR-Gate 615 eingegeben werden. Die Ausgänge der
XOR-Gates 614 und 615 werden vom OR-Gate 616 zusammen
einem OR-Vorgang unterzogen.
-
Nachfolgend
wird die pfadabseitige Abhängigkeit
von einem auf dem Pfad befindlichen Eingang beschrieben. Ein pfadabseitiges
Eingangssignal s, das ein internes Netz ist, kann durch eine Funktion
von Primäreingängen ersetzt
werden. Diese Primäreingänge können den
auf dem Pfad befindlichen Eingang beinhalten. Dies bedeutet, dass
es einen anderen Pfad gibt, wo Signal s auf dem Pfad liegt. Beim
Aufbauen der Pfadüberwachungsschaltung
für den
ersten Pfad können
also alle Netze in der pfadabseitigen Überwachungsschaltung, die tatsächlich auf
dem Pfad liegen, fallen gelassen werden, weil sie eingerechnet werden,
wenn die Pfadüberwachungsschaltung
für den
zweiten Pfad erzeugt wird.
-
7a zeigt
eine AND OR Implementation eines XOR-Gates. Die Gates 701–703 sind
die ursprüngliche
Schaltung, während
die Gates 704–705 die Überwachungsschaltung
umfassen. 7b zeigt die Pfadüberwachungsschaltung
für den
b-Signal-Pfad, der durch die Gates 701–703 propagiert. Es
ist ersichtlich, dass die pfadabseitige Überwachungsschaltung von dem
auf dem Pfad befindlichen Eingang b abhängig ist. Somit kann dieser
Eingang fallen gelassen werden und das AND-Gate wird wie in 7b gezeigt
zu einem Puffer. Eine weitere Reduzierung dieser Schaltung führt zu einem
einzelnen Puffer, wie in den 7c und 7d dargestellt
ist. Ebenso umfasst die reduzierte Pfadüberwachungsschaltung oder der
durch die Gates 705 und 703 propagierende b-Signal-Pfad
einen einzelnen Inverter 701. Daher ist der Ein-Ausgangsmonitor für das Eingangssignal
b und den Ausgang Out a + a' =
1. Dies bedeutet, dass der Übergang
vom Eingang b zu Out propagieren kann, unabhängig vom Zustand von Signal
a.
-
Wenn
es mehr als einen Pfad von einem Eingang a zu einem Ausgang Out
gibt und wenigstens ein Pfad den Übergang invertiert, während der
andere es nicht tut, dann besteht die Möglichkeit, dass diese beiden Pfade
gleichzeitig aktiviert werden. Wenn dies der Fall ist, dann können sich
die beiden Pfade gegenseitig auslöschen oder eine Statikgefahr
verursachen. 8 zeigt eine Schaltung mit zwei
Pfaden zum Ausgang. Es ist ersichtlich, dass Eingang b zwei Pfade
zum Ausgang Out hat: einen durch Gate 801, einen anderen
durch Gate 802. Wenn sowohl a als auch c1 sind und ein
positiver Übergang
an b angelegt wird, dann ist der Ausgang entweder eine statische
1 oder es kann eine Statikgefahr vorliegen, je nach dem relativen
Timing der Gates. Da der Bibliotheksgenerator davon ausgeht, dass
der Übergang
durchpropagiert wird, wenn wenigstens ein oder mehrere Pfade aktiviert
sind, dann kann er fälschlicherweise
diesen Löschungsfall
als gültigen
Aktiverungszustand ansehen. Um diesen Zustand zu verhüten, sollten
komplementierende und nicht komplementierende Pfade getrennt werden.
Die Ein-Ausgangsüberwachungsschaltung
wird dann das XOR der komplementierenden Pfadüberwachungsschaltung und der
nicht komplementierenden Pfadüberwachungsschaltung.
Dadurch soll verhindert werden, dass komplementierende und nicht
komplementierende Pfade gleichzeitig aktiviert werden. 9 zeigt
einen Ein-Ausgangsmonitor
mit Übergangspolaritätsmöglichkeit.
Der positive Ein-Ausgangsmonitor 901 sammelt
alle positiven (nicht komplementierenden) Übergänge, während der negative Ein-Ausgangsmonitor 902 alle
negativen (komplementierten) Übergänge sammelt.
Undeterministische Polaritätspfade
sollten sowohl in den positiven Ein-Ausgangsmonitor 901 als
auch in den negativen Ein-Ausgangsmonitor 902 einbezogen
werden.
-
10 zeigt
ein Fließschema,
das die Schritte zum Identifizieren der Pfade beschreibt, die nicht
erregbar sind und von denen gefunden wurde, dass sie die Timing-Beschränkungen überschreiten.
In Schritt 1001 wird eine Liste von Pfaden erzeugt. Für jeden
Pfad werden Schritte 1003–1009 durchgeführt. In
Schritt 1003 wird ein AND-Gate erzeugt. Für jeden
Knoten des Pfades werden Schritte 1005–1009 durchgeführt. In Schritt 1005 werden
die pfadabseitigen Signale mit dem Eingang des AND-Gates verbunden.
Als Nächstes wird
ein Haftet-bei-Null-Fehler am Eingang des AND-Gates erzeugt (Schritt 1006).
Der Ausgang des AND-Gates wird zur Primärausgangsliste addiert (Schritt 1007).
Es wird ein Test für
den Haftet-bei-Null-Fehler generiert (Schritt 1008). Wenn
der Test nicht existiert, dann handelt es sich um einen falschen
Pfad. Ansonsten handelt es sich um einen wahren Pfad (Schritt 1009).
-
11 zeigt
ein Blockdiagramm, das für
einen Teil einer integrierten Schaltung und einer entsprechenden
False-Path-Identifikationsschaltung repräsentativ ist. Bei fünf E/A-Punkten 1101–1105 kann
es zahlreiche Pfade geben, die diese E/A-Punkte untereinander verbinden.
Innerhalb jedes Pfades kann es zahlreiche Elemente wie z. B. die
Elemente 1108–1113 geben.
So beinhaltet beispielsweise der von E/A 1101 bis E/A 1103 verlaufende
Pfad die Elemente 1108, 1110 und 1111.
Der Pfad von E/A 1104 bis E/A 1105 beinhaltet
die Elemente 1106–1109.
Es ist ersichtlich, dass diese beiden Pfade das Element 1108 gemeinsam
nutzen. Für
jedes Element wird eine Gate-Monitor- Schaltung hinzugefügt, um zu ermitteln, ob dieser
Pfad ein False-Timing-Path ist. So beinhaltet beispielsweise der
Pfad von E/A 1104 zu E/A 1105 vier Gate-Monitor-Schaltungen 1114–1117,
die den vier Elementen 1106–1109 in diesem Pfad
entsprechen. Die Ausgänge
von den Gate-Monitor-Schaltungen 1114–1117 werden in das
AND-Gate 1118 gespeist. Wenn es möglich ist, eine 1 vom AND-Gate 1118 auszugeben,
dann wird dieser Pfad als ein wahrer Pfad bezeichnet. Wenn jedoch
nach einer vorbestimmten Zeitperiode keine 1 vom AND-Gate 1118 ausgegeben
werden kann, dann wird dieser Pfad als falscher Pfad angesehen.
-
12 zeigt
eine Gate-Monitor-Schaltung, die für Elemente in einem Pfad eingesetzt
werden kann. Angenommen, dass dieses Element 1106 ein Multiplexer
ist, besteht die Gate-Monitor-Schaltung aus einem XOR-Gate 1201,
einem Inverter 1202 und einem AND-Gate 1203. Das
XOR-Gate 1201 wird mit den Eingängen a und b des Multiplexers 1106 gekoppelt.
Inverter 1202 wird mit dem Steuersignal zum Multiplexer 1106 gekoppelt.
Die Ausgänge
von XOR 1201 und Inverter 1202 werden mit den
Eingängen
des AND-Gates 1203 gekoppelt. Somit gibt das AND-Gate 1203 nur
dann eine 1 aus, wenn die Eingänge
zum Multiplexer 1106 0 1 oder 1 0 sind und das Steuersignal
zum Multiplexer 1106 eine 0 ist. Wenn diese Bedingungen
nicht erfüllt
sind, dann gibt das Gate 1203 keine 1 aus. Infolgedessen
gibt das AND-Gate 1114 keine 1 aus. Dies würde bedeuten,
dass der Pfad von E/A 1104 zu E/A 1105 ein falscher
Pfad ist.
-
Somit
wurden eine Vorrichtung und ein Verfahren zum Identifizieren von
False-Timing-Paths
in digitalen Schaltungen offenbart.