-
HINTERGRUND
-
Technisches Gebiet
-
Diese Offenbarung betrifft die Entwurfsautomatisierung elektronischer Systeme (EDA, von englisch: electronic design automation). Diese Offenbarung bezieht sich im Besonderen auf eine Chipentwurfsoptimierung.
-
Stand der Technik
-
Fortschritte in der Verfahrenstechnologie und ein praktisch unstillbares Verlangen nach Unterhaltungselektronik waren der Antrieb für eine rasante Zunahme von Größe und Komplexität beim Entwurf integrierter Schaltungen (IC). Aufgrund der rasanten Zunahme der Größe und Komplexität von IC-Entwürfen, wird es zunehmend schwieriger, eine höhere Beschreibung eines Chipentwurfs in eine Realisierung umzuwandeln, die einen Satz zeitlicher Bedingungen erfüllt und gleichzeitig zusätzliche Metrik optimiert, wie beispielsweise Fläche, Verlustleistung, usw..
-
KURZBESCHREIBUNG
-
Einige der in dieser Schrift beschriebenen Ausführungsformen geben Verfahren und Systeme zum Steuern einer Optimierung eines Chipentwurfs an. Einige der hierin beschriebenen Ausführungsformen berechnen einen Satz von aggregierten Schlupfen (in dieser Offenbarung auch als Superpfadschlupfe (englisch: super path slacks) bezeichnet) für einen Satz von Abfolgen logischer Pfade eines Chipentwurfs. Jede Abfolge logischer Pfade beginnt an einem primären Eingang oder einem sequenziellen Schaltkreiselement, das lediglich ein Signal abgibt, jedoch kein Signal aufnimmt und endet an einem primären Ausgang oder einem sequenziellen Schaltkreiselement, das lediglich ein Signal aufnimmt, jedoch kein Signal abgibt. Anschließend steuern die Ausführungsformen eine Schaltungsoptimierung des Chipentwurfs auf Basis des Satzes von aggregierten Schlupfen. Genauer gesagt steuern einige Ausführungsformen die Schaltungsoptimierung, die vor der Taktbaumsynthese (CTS von englisch: clock tree synthesis) durchgeführt wird, auf Basis des Satzes von aggregierten Schlupfen.
-
Bei einigen Ausführungsformen umfasst das Steuern der Schaltungsoptimierung des Chipentwurfs, dass nicht versucht wird, einen Zeitverstoß auf einem logischen Pfad einer Abfolge von logischen Pfaden zu beheben, deren aggregierter Schlupf größer oder gleich Null ist.
-
Bei einigen Ausführungsformen umfasst das Steuern der Schaltungsoptimierung des Chipentwurfs, dass versucht wird, einen Zeitverstoß auf einem logischen Pfad einer Abfolge von logischen Pfaden zu beheben, deren aggregierter Schlupf negativ ist.
-
Bei einigen Ausführungsformen umfasst das Steuern der Schaltungsoptimierung des Chipentwurfs, dass versucht wird, einen aggregierten Schlupf einer Abfolge von logischen Pfaden zu erhöhen, deren aggregierter Schlupf negativ ist.
-
Bei einigen Ausführungsformen umfasst das Steuern der Schaltungsoptimierung des Chipentwurfs ein Zuweisen einer Priorität zu einem logischen Pfad auf Basis dessen umfasst, wie viele Abfolgen logischer Pfade mit negativem Schlupf den logischen Pfad enthalten, wobei die Schaltungsoptimierung versucht, die Taktgeberschlupfe logischer Pfade in der Reihenfolge abnehmender Priorität zu vergrößern. Der logische Pfad, der von den meisten Abfolgen logischer Pfade (d. h. der größten Anzahl von Superpfaden) mit negativem Schlupf gemeinsam genutzt wird, kann als ”Taktgeberengpass” bezeichnet werden.
-
Bei einigen Ausführungsformen umfasst das Steuern der Schaltungsoptimierung des Chipentwurfs, dass eine Schaltungsoptimierung beendet wird, wenn alle aggregierten Schlupfe in dem Satz von aggregierten Schlupfen größer oder gleich Null sind.
-
KURZBESCHREIBUNG DER FIGUREN
-
1 veranschaulicht einen Chipentwurf gemäß einiger hierin beschriebener Ausführungsformen.
-
2 veranschaulicht, wie eine Steuerung auf Basis einer Superpfadanalyse gemäß einiger hierin beschriebener Ausführungsformen geschaffen werden kann.
-
3A–3B veranschaulichen ein Beispiel gemäß einiger hierin beschriebener Ausführungsformen, bei dem ein sequenzielles Schaltungselement unter Verwendung von mehreren Taktgebern getaktet wird.
-
4 veranschaulicht einen Chipentwurf gemäß einiger hierin beschriebener Ausführungsformen, der eine Schleife aufweist.
-
5 veranschaulicht ein Verfahren gemäß einiger hierin beschriebener Ausführungsformen für die Berechnung und Verwendung von Superpfadschlupfen.
-
6 veranschaulicht ein Computersystem gemäß einiger hierin beschriebener Ausführungsformen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die nachfolgend vorgelegte Beschreibung, die im Kontext einer bestimmten Anwendung und deren Anforderungen erstellt wurde, ermöglicht einem Fachmann Ausführung und Gebrauch der Erfindung. Fachleute werden ohne Wseiteres erkennen, dass die offenbarten Ausführungsformen in verschiedenster Weise modifiziert und die in dieser Beschreibung definierten allgemeinen Prinzipien auf andere Ausführungsformen und Anwendungen übertragen werden können, ohne Kern und Umfang der vorliegenden Erfindung zu verlassen. Daher ist die in dieser Schrift offenbarte Erfindung nicht auf die vorgestellten Ausführungsformen beschränkt, sondern weist den breitesten, mit den hierin offenbarten Prinzipien und Merkmalen noch vereinbaren Umfang auf. Wenn in dieser Offenbarung bei einer Auflistung von Entitäten der Begriff ”und/oder” verwendet wird, dann bezieht er sich auf alle möglichen Kombinationen der aufgelisteten Entitäten. Der Ausdruck ”X, Y und/oder Z” deckt zum Beispiel die folgenden Fälle ab: (1) nur X, (2) nur Y, (3) nur Z, (4) X und Y, (5) X und Z, (6) Y und Z, sowie (7) X, Y und Z.
-
Übersicht über einen Prozess zur Entwurfsautomatisierung elektronischer Systeme (EDA)
-
Ein EDA-Prozess kann zum Erzeugen eines Chipentwurfs verwendet werden. Nach Abschluss des Chipentwurfs können zur Herstellung integrierter Schaltkreischips Fertigung, Aufbau und Montage folgen. Ein EDA-Prozess kann mehrere Schritte umfassen, wobei jeder Schritt die Verwendung von einem oder mehreren EDA-Programmierwerkzeugen umfassen kann. Einige EDA-Schritte und Programmierwerkzeuge werden nachfolgend beschrieben. Die angeführten Beispiele für EDA-Schritte und Programmierwerkzeuge dienen lediglich der Veranschaulichung und sind nicht dazu bestimmt, Ausführungsformen auf offenbarte Ausbildungen zu beschränken.
-
Einige EDA-Programmierwerkzeuge ermöglichen Schaltungsentwicklern die Beschreibung der Funktionalität des Chipentwurfs. Diese Werkzeuge ermöglichen Schaltungsentwicklern auch die Durchführung von ”Was-Wäre-Wenn”-Planungen zur Weiterentwicklung der Funktionalität, Kostenprüfung usw.. Beim logischen Entwurf und der Funktionalitätsprüfung kann Code für Module des Systems in einer Hardwarebeschreibungssprache (HDL, von englisch: hardware description language), z. B. System Verilog, geschrieben und der Entwurf auf seine funktionelle Richtigkeit geprüft werden; beispielsweise kann der Entwurf geprüft werden, um sicherzustellen, dass er die korrekten Ausgaben erzeugt.
-
Während der Synthese und zum Testen des Entwurfs kann der HDL-Code unter Verwendung von einem oder mehreren EDA-Programmierwerkzeugen in eine Netzliste übersetzt werden. Die Netzliste kann zudem auf die Zieltechnologie optimiert werden und es können Tests zum Prüfen der fertigen Chips entworfen und ausgeführt werden. Während der Verifikation der Netzliste kann die Netzliste auf ihre Konformität mit zeitlichen Randbedingungen und ihre Übereinstimmung mit dem HDL-Code geprüft werden.
-
Während der Entwurfsplanung kann ein Gesamtlageplan (englisch: Overall floorplan) des Chips erstellt und das zeitliche Verhalten und die Globalverdrahtung (englisch: top-level routing) können analysiert werden. Bei der Umsetzung des Layouts können Schaltungselemente in dem Layout positioniert (Platzieren) und elektrisch verbunden werden (Verdrahten).
-
Während der Analyse und Extraktion kann die Funktionalität des Schaltkreises auf Transistorebene verifiziert und parasitäre Effekte können extrahiert werden. Während der Layoutverifikation kann der Entwurf geprüft werden, um die Fehlerfreiheit für die Fertigung, elektrische Aspekte, lithographische Aspekte und Schaltung zu gewährleisten.
-
Bei der Verbesserung der Auflösung können am Layout geometrische Manipulationen vorgenommen werden, um die Herstellbarkeit des Entwurfs zu verbessern. Bei der Maskendatenerstellung können die Entwurfsdaten zur Herstellung von Masken ausgegeben werden (tape-out), die bei der Herstellung verwendet werden.
-
Bereitstellen einer Optimierungssteuerung auf Basis von Superpfadschlupfen
-
1 veranschaulicht einen Chipentwurf gemäß einiger der hierin beschriebenen Ausführungsformen. Der Chipentwurf 100 umfasst aufeinanderfolgende Schaltungselemente 104, 108 und 112. Der Eingangsanschluss ”Ein” ist mit einer kombinatorischen Logik 102 verbunden, die mit Eingangsanschluss ”D” eines sequenziellen Schaltungselements 104 verbunden ist. Der Ausgangsanschluss ”Q” des sequenziellen Schaltungselements 104 ist mit der kombinatorischen Logik 106 verbunden, die mit dem Eingangsanschluss ”D” des sequenziellen Schaltungselements 108 verbunden ist. Der Ausgangsanschluss ”Q” des sequenziellen Schaltungselements 108 ist mit der kombinatorischen Logik 110 verbunden, die mit dem Eingangsanschluss ”D” des sequenziellen Schaltungselements 112 verbunden ist. Der Ausgangsanschluss ”Q” des sequenziellen Schaltungselements 112 ist mit der der kombinatorischen Logik 114 verbunden, die mit dem Ausgangsanschluss ”Aus” verbunden ist. Die Takteingänge der sequenziellen Schaltungselemente 104, 108 und 112 sind mit dem Taktanschluss ”Clk” verbunden.
-
Als Beispiel eines sequenziellen Schaltungselements wurde in dieser Offenbarung ein flankengesteuerter D-Flipflop verwendet. Der Begriff ”sequenzielles Schaltungselement” bezieht sich jedoch ganz allgemein auf jegliche Art eines flankengesteuerten oder pegelgesteuerten sequenziellen Schaltungselements und ist nicht auf die in dieser Offenbarung offenbarten Formen beschränkt. Dass die in dieser Offenbarung beschriebenen Ausführungsformen ganz allgemein auf jede Art von flankengesteuerten oder pegelgesteuerten sequenziellen Schaltungselementen angewandt werden können, ist für einen Fachmann natürlich offensichtlich.
-
Bei einer bestimmten Taktflanke (entweder ansteigend, abfallend oder beides) nimmt der Eingang eines jeden sequenziellen Schaltungselements den logischen Wert auf, der an den Eingang angelegt wurde, und der Ausgang eines jeden sequenziellen Schaltungselements gibt einen logischen Wert ab, der anschließend durch ein oder mehrere Gatter und/oder Netze übertragen wird, bevor er am Eingang des nachfolgenden sequenziellen Schaltungselements eintrifft.
-
Der Begriff ”Superbogen” (englisch: super arc) bezieht sich in dieser Offenbarung auf einen Pfad, der von einem primären Eingang oder einem Ausgang eines sequenziellen Schaltungselements ausgehend bis zu einem primären Ausgang oder einem Eingang des nachfolgenden sequenziellen Schaltungselements führt. Der Chipentwurf 100 umfasst zum Beispiel die Superbögen 116, 118, 120 und 122. Der Begriff ”Superbogenverzögerung” bezieht sich auf die Verzögerung eines Superbogens. Eine Analyse des Zeitverhaltens berechnet üblicherweise die Verzögerung durch einen Superbogen, z. B. den Zeitverzug von einem Ausgang eines sequenziellen Schaltungselements bis zu einem Eingang des nachfolgenden sequenziellen Schaltungselements, um sicherzustellen, dass der Zeitverzug kürzer als das Taktintervall ist. Eine Analyse des Zeitverhaltens kann zum Beispiel den Zeitverzug des Superbogens 120 (d. h. der Zeitverzug vom Ausgang des sequenziellen Schaltungselements 108 bis zum Eingang des sequenziellen Schaltungselements 112) durch Addieren der Zeitverzüge eines jeden Gatters und Netzes des Superbogens 120 bestimmen. Die Verzögerung des Superbogens kann auch die Setup-Zeit des sequenziellen Schaltungselements 112 umfassen.
-
Unter der Annahme, dass alle sequenziellen Schaltungselemente ein perfekt synchronisiertes Taktsignal (d. h. die Taktflanken treffen an allen sequenziellen Schaltungselementen genau zur selben Zeit ein) erhalten und die Setup-Bedingung 0 ist, kann die Superbogenverzögerung zum Bestimmen des Taktgeberschlupfes (englisch: timing slack) vom Taktintervall subtrahiert werden. Bei nicht synchronisierten Takten muss zum Berechnen des Taktgeberschlupfes jedoch der Taktversatz (englisch: clock skew) berücksichtigt werden. Der Pfadschlupf (englisch: path slack) SP zwischen einem sequenziellen Schaltungselement (z. B. dem sequenzielle Schaltungselement 108) und einem nachfolgenden sequenziellen Schaltungselement (z. B. das sequenzielle Schaltungselement 112) kann konkret wie folgt berechnet werden: SP = T + LL – D – LC, (1) worin T das Taktintervall, LL die Abgabetaktlatenzzeit (englisch: launch clock latency) (d. h. die Zeitdifferenz zwischen einer ”idealen” Taktflanke und der tatsächlichen Taktflanke am abgebenden sequenziellen Schaltungselement), D die Superbogenverzögerung und LC die Aufnahmetaktlatenzzeit (englisch: capture clock latency) (d. h. die Zeitdifferenz zwischen einer ”idealen” Taktflanke am Taktursprung und der tatsächlichen Taktflanke am aufnehmenden sequenziellen Schaltungselement) bedeuten.
-
Ein positiver Pfadschlupf SP bedeutet, dass das am abgebenden sequenziellen Schaltungselement (z. B. dem sequenzielle Schaltungselement 108 des obigen Beispiels) abgegebene Signal vor Ablauf der erforderlichen Zeit am aufnehmenden sequenziellen Schaltungselement eintrifft (z. B. dem sequenzielle Schaltungselement 112 des obigen Beispiels). Ein negativer Pfadschlupf SP (d. h. es liegt ein Zeitverstoß (englisch: timing violation) vor) bedeutet dagegen, dass das am abgebenden sequenziellen Schaltungselement abgegebene Signal nach Ablauf der erforderlichen Zeit am aufnehmenden sequenziellen Schaltungselement eintrifft, was zu einer Fehlfunktion des Chipentwurfs 100 führen kann (einige Ausführungsformen können auch einen kleinen positiven Pfadschlupf als Verstoß ansehen. Bei diesen Ausführungsformen kann zur Gleichung (1) ein Schwellwert zur Darstellung der Grenze zwischen einen Verstoß darstellenden Taktgeberschlupfwerten und keinen Verstoß darstellenden Taktgeberschlupfwerten addiert werden).
-
Bei negativem Pfadschlupf muss der Chipentwurf modifiziert werden, um den Pfadschlupf größer oder gleich Null zu machen. Herkömmliche Schaltungsoptimierungssysteme versuchen den Pfadschlupf durch Reduzieren des Werts D in Gleichung (1) mittels verschiedener Schaltungstransformationen, z. B. Hinzufügen/Entfernen von Puffern, Vergrößern/Verkleinern von Gattermaßen, Ersetzen eines Teils einer Schaltung durch eine dazu äquivalente Schaltung mit niedrigerer Verzögerung, usw. zu verbessern. Es wird jedoch darauf hingewiesen, dass ein anderer Ansatz zum Verbessern des Taktgeberschlupfes die Werte LL und/oder LC ändert, d. h. den relativen Taktversatz zwischen dem abgebenden und dem aufnehmenden sequenziellen Schaltungselement ändert. In dieser Offenbarung wird ein Taktversatz als ”nützlicher Taktversatz” bezeichnet, wenn der Taktversatz in einen Chipentwurf eingeführt wird, um das Zeitverhalten von einem oder mehreren Taktgeberpfaden (englisch: timing paths) zu verbessern.
-
Der Begriff ”logischer Pfad” bezieht sich auf einen Pfad, der an einem primären Eingang oder einem Ausgang eines sequenziellen Schaltungselements beginnt und an einem primären Ausgang oder einem Eingang eines anderen sequenziellen Schaltungselements endet. Ein logischer Pfad ist zum Beispiel der am Ausgang ”Q” des sequenziellen Schaltungselements 104 beginnende und am Eingang ”D” des sequenziellen Schaltungselements 108 endende Pfad. Der Ausdruck ”Superpfad” bezieht sich auch auf eine Abfolge logischer Pfade, die an einem primären Eingang oder einem sequenziellen Schaltungselement beginnt, das lediglich ein Signal abgibt, jedoch kein Signal aufnimmt (solche sequenziellen Schaltungselemente sind selten), und endet an einem primären Ausgang oder einem sequenziellen Schaltungselement, das lediglich ein Signal aufnimmt, aber kein Signal abgibt (auch solche sequenziellen Schaltungselemente sind selten). Anders ausgedrückt stellt ein Superpfad eine Abfolge von Superbögen dar, die an einem primären Eingang oder einem sequenziellen Schaltungselement beginnt, das lediglich ein Signal abgibt, jedoch kein Signal aufnimmt (solche sequenziellen Schaltungselemente sind selten), und endet an einem primären Ausgang oder einem sequenziellen Schaltungselement, das lediglich ein Signal aufnimmt, aber kein Signal abgibt (auch solche sequenziellen Schaltungselemente sind selten). Der Superpfad 124 beginnt zum Beispiel am primären Eingang ”Ein” und endet am primären Ausgang ”Aus” und umfasst die Abfolge von Superbögen 116, 118, 120 und 122.
-
Der Begriff ”Superpfadschlupf” bezeichnet die Summe der einzelnen Pfadschlupfe (berechnet z. B. unter Verwendung von Gleichung (1)) entlang des Superpfades. Es wird darauf hingewiesen, dass sich die Abgabetaktlatenzzeit und die Aufnahmetaktlatenzzeit bei allen sequenziellen Schaltungselementen des Superpfades gegenseitig aufheben.
-
Daher kann der Superpfadschlupf S
SP eines von einer Abfolge von n Superbögen gebildeten Superpfades wie folgt ausgedrückt werden:
worin
S i / P den Pfadschlupf für den i
ten Pfad des Superpfades, T das Taktintervall und D
i die Verzögerung durch den i
ten Superbogen bedeuten.
-
Bei nicht negativem Superpfadschlupf (d. h. wenn er größer oder gleich Null ist) können Zeitverstöße bei Pfaden des Superpfades behoben werden, indem in den verstoßenden Pfad ein nützlicher Taktversatzes eingeführt wird, d. h. durch Modifizieren des relativen Taktversatzes zwischen dem abgebenden und dem aufnehmenden sequenziellen Schaltungselement des mit einem Verstoß behafteten Pfades.
-
Es wird angenommen, dass alle sequentiellen Schaltungselemente in 1 ein ideales Taktsignal erhalten und die Pfadschlupfe wie folgt vorliegen: Der Pfadschlupf S 1 / P vom Eingangsanschluss ”Ein” zum ”D”-Anschluss des sequentiellen Schaltungselements 104 entspricht 0 Zeiteinheiten, der Pfadschlupf S 2 / P vom ”Q”-Anschluss des sequentiellen Schaltungselements 104 zum ”D”-Anschluss des sequentiellen Schaltungselements 108 entspricht –2 Zeiteinheiten, der Pfadschlupf S 3 / P vom ”Q”-Anschluss des sequentiellen Schaltungselements 108 zum ”D”-Anschluss des sequentiellen Schaltungselements 112 entspricht +2 Zeiteinheiten und der Pfadschlupf S 4 / P vom ”Q”-Anschluss des sequentiellen Schaltungselements 112 zum Ausgangsanschluss ”Aus” entspricht 0 Zeiteinheiten. Es wird darauf hingewiesen, dass der Superpfadschlupf gleich 0 ist (d. h. S 1 / P + S 2 / P + S 3 / P + S 4 / P = 0 ). Der Zeitverstoß im zweiten Pfad kann durch Verzögern des Taktsignals zum sequentiellen Schaltungselement 108 um 2 Zeiteinheiten (d. h. gegenüber dem idealen Taktsignal verzögert) behoben werden. Nachdem das Taktsignal in der angegebenen Weise verzögert wurde, sind alle Pfadschlupfe gleich 0.
-
Bei negativem Superpfadschlupf (z. B. wenn in dem oben angegebenen Beispiel S 1 / P + S 2 / P + S 3 / P + S 4 / P < 0 ) können die Zeitverstöße bei den Pfaden des Superpfades nicht alleine durch Einführen eines nützlichen Taktversatzes behoben werden. Einige der hier beschriebenen Ausführungsformen verwenden Superpfadschlupfe zum Steuern einer zeitlichen Optimierung des Chipentwurfs. Konkret kann eine Schaltungsoptimierung, die vor einer CTS durchgeführt wird, gezielt auf Zeitverstöße auf Superpfaden mit negativem Schlupf gerichtet sein, anstatt auf Basis einer idealen Taktung alle Pfade mit negativem Schlupf zu reparieren. Nach Abschluss einer Prä-CTS-Schaltungsoptimierung sind hoffentlich alle Superpfadschlupfe größer oder gleich Null. Danach kann CTS eventuell verbleibende Zeitverstöße auf Superpfaden mit Schlupfen von Null oder positiven Schlupfen durch Einführen eines nützlichen Zeitversatzes beheben, z. B. durch Einführen von Verzögerungen an geeigneten Stellen des Taktbaums.
-
Für Superpfade mit negativem Schlupf bietet eine Prä-CTS-Optimierung im Allgemeinen eine Entscheidungsfreiheit bezüglich des zum Verringern der Superbogenverzögerung zu optimierenden Komponentenpfades. Bei einigen Ausführungsformen können die Taktgeberpfade (unabhängig von ihren Schlupfen) auf Basis dessen priorisiert werden, wie viele Superpfade mit negativem Schlupf einen bestimmten Taktgeberpfad gemeinsam nutzen. Konkret sollte ein von mehreren Superpfaden gemeinsam genutzter Taktgeberpfad mit negativen Schlupfen zuerst optimiert werden. Einige Ausführungsformen weisen, wenn der Schlupf eines Taktgeberpfades mit hoher Priorität bereits positiv ist, die Prä-CTS-Schaltungsoptimierung an, den positiven Schlupf des Taktgeberpfades weiter zu erhöhen. Es wird darauf hingewiesen, dass dies nicht offensichtlich ist, da die Prä-CTS-Schaltungsoptimierung normalerweise nicht versuchen würde, den positiven Schlupf eines Taktgeberpfades zu erhöhen.
-
2 veranschaulicht, wie eine Steuerung auf Basis einer Superpfadanalyse gemäß einiger der hierin beschriebenen Ausführungsformen geschaffen werden kann. Der Chipentwurf 200 weist sequenzielle Schaltungselemente 202 und 204 auf. Der Superbogen 208 beginnt am ”Q”-Ausgang des sequenziellen Schaltungselements 202 und endet am ”D”-Eingang des sequenziellen Schaltungselements 204. Der Schaltkreispfad 210 beginnt am primären Eingang ”Ein1” und endet am ”D”-Eingang des sequenziellen Schaltungselements 202. Der Schaltkreispfad 212 beginnt am primären Eingang ”Ein2” und endet ebenfalls am ”D”-Eingang des sequenziellen Schaltungselements 202. Die Schaltkreispfade 210 und 212 können kombinatorische und/oder sequenzielle Schaltungselemente enthalten und können ein oder mehrere Schaltungselemente gemeinsam nutzen. Der Schaltkreispfad 214 beginnt gleichermaßen am ”Q”-Ausgang des sequenziellen Schaltungselements 204 und endet am primären Ausgang ”Aus1”. Der Schaltkreispfad 216 beginnt am ”Q”-Ausgang des sequenziellen Schaltungselements 204 und endet am primären Ausgang ”Aus2”. Die Schaltkreispfade 214 und 216 können kombinatorische und/oder sequenzielle Schaltungselemente enthalten und können ein oder mehrere Schaltungselemente gemeinsam nutzen.
-
Unter der Annahme, dass der Superpfad, der am primären Eingang ”Ein1” beginnt und am primären Ausgang ”Aus1” endet, mit einem negativen Schlupf behaftet ist und dass der Superpfad, der am primären Eingang ”Ein2” beginnt und am primären Ausgang ”Aus2” endet, ebenfalls mit einem negativen Schlupf behaftet ist, können einige Ausführungsformen, da beide der mit einem negativen Schlupf behafteten Superpfade durch den Superbogen 208 verlaufen, dem Superbogen 208 eine höhere Priorität zuweisen, sodass die Prä-CTS-Schaltungsoptimierung versucht, das Zeitverhalten des Superbogens 208 (d. h. versucht den Taktgeberschlupf unabhängig davon zu erhöhen, ob der aktuelle Taktgeberschlupfwert negativ oder positiv ist) zu verbessern, bevor sie versucht den Zeitverstoß in anderen Superbögen zu beheben. Es wird darauf hingewiesen, dass das Prä-CTS-Schaltungsoptimierungsverfahren innerhalb des Superbogens 208 frei über die Rangfolge der Dimensionierung der Gatter zur Verbesserung der Zeitsteuerungen entscheiden kann. Es wird darauf hingewiesen, dass keines der herkömmlichen Schaltungsoptimierungsverfahren den Superpfadschlupf zum Bestimmen einer Rangfolge für die Optimierung von Superbögen bestimmt.
-
Die obigen Ausführungen gründen auf der Annahme, dass, solange der Superpfadschlupf größer oder gleich Null ist, eine nützliche Schlupfkoordinationslösung existiert, um den Schlupf eines jeden einzelnen Pfades des Superpfades ebenfalls größer oder gleich Null zu machen. In der Realität existieren jedoch mehrere nun erläuterte Einschränkungen, die diese Annahme zunichte machen.
-
Das Verzögern der auf einem nützlichen Versatz beruhenden Taktlatenzzeit eines sequenziellen Schaltungselements sollte die Einfügeverzögerung (englisch: insertion delay) des Taktgebers nicht überschreiten. Andernfalls könnte man am Ende zu viele Puffer in den Taktbaum einfügen und der Variationseffekt auf dem Chip selbst (der bei zunehmender Einfügeverzögerung stärker wird) kann die durch eine Einführung des nützlichen Versatzes erhaltenen Vorteile wieder zunichtemachen.
-
Beim Takten eines sequenziellen Schaltungselements unter Verwendung mehrerer Takte gibt es für jeden Pfad aufgrund der verschiedenen Takte mehrere Schlupfe (jedes Paar abgebender und aufnehmender Flops), wobei bei jedem der Takte die Koordination des nützlichen Versatzes nicht unabhängig ist. Die 3A und 3B veranschaulichen ein Beispiel gemäß einiger der hierin beschriebenen Ausführungsformen, bei dem ein sequenzielles Schaltungselement unter Verwendung von mehreren Taktgebern getaktet wird. Der Schaltkreis 300 umfasst sequenzielle Schaltungselemente 302, 304, 306, 308, 310 und 312, die wie in 3A dargestellt über Pfade (gekrümmte Linien) verbunden sind. Die in unmittelbarer Nähe eines jeweiligen Pfades in Klammern angegebene Nummer gibt den Schlupf des Pfades an. Der Pfad zwischen den sequenziellen Schaltungselementen 306 und 308 weist in seiner unmittelbaren Nähe zwei Nummern auf. Die erste Nummer ”(4)” gibt den Schlupf für Clk1 und die zweite Nummer ”(3)” den Schlupf für Clk2 an.
-
Unter der Annahme, dass in 3A alle Pfade zwischen Clk1 und Clk2 falsche Pfade sind, wobei ein falscher Pfad ein Pfad mit einem zu ignorierenden Zeitverstoß ist, kann zum Beispiel die zeitliche Planung des Pfades, der am sequenziellen Schaltungselement 302 beginnt (Taktdomäne Clk1) und am sequenziellen Schaltungselement 312 (Taktdomäne Clk2) endet, ignoriert werden.
-
Betrachtet man ausschließlich den Pfad vom sequenziellen Schaltungselement 304 zum sequenziellen Schaltungselement 312, können, wie es scheint, nichtnegative Schlupfe unter Verwendung eines nützlichen Versatzes erzielt werden. Die Koordinierung des nützlichen Versatzes für Clk2-Pfade wird jedoch durch die zeitkritischere für Clk1-Pfade beeinträchtigt und im Ergebnis bleiben für Clk2 immer noch negative Schlupfe übrig. Konkret führt ein Entfernen des Zeitverstoßes auf dem Clk2-Pfad durch nützlichen Versatz zu einem Zeitverstoß auf dem Clk1-Pfad. 3B veranschaulicht die Schlupfe nach einem Einsatz des nützlichen Versatzes zum Beheben des negativen Schlupfes auf dem Pfad zwischen den sequenziellen Schaltungselementen 304 und 310. Daher kann es, obwohl ein nützlicher Versatz zum Beheben von Zeitverstößen auf zwei verschiedenen, unabhängig voneinander berücksichtigten Pfaden verwendet werden kann, aufgrund der gegenseitigen Abhängigkeit der beiden Pfade nicht möglich sein, einen nützlichen Versatz zum Beheben von Zeitverstößen auf beiden Pfaden gleichzeitig zu verwenden. Einige Ausführungsformen können Situationen erfassen, bei denen sich zwei (oder mehr) Superpfade in mehreren Taktdomänen befinden, jedoch einen oder mehrere Superbögen gemeinsam nutzen. Nach dem Erfassen der Superpfade können die Ausführungsformen den nützlichen Versatz zum Beheben von Zeitverstößen bei einer bestimmten Taktdomäne verwenden und gleichzeitig gewährleisten, dass bei anderen Taktdomänen keine Zeitverstöße erzeugt werden.
-
Eine andere Komplikation tritt bei Superpfaden auf, die eine Schleife aufweisen. 4 veranschaulicht einen Chipentwurf mit einer Schleife gemäß einiger der hierin beschriebenen Ausführungsformen. Der Schaltkreis 400 umfasst wie aus 4 ersichtlich die sequenziellen Schaltungselemente 402, 404, 406 und 408, die über Pfade miteinander verbunden sind (gekrümmte Linien). Es wird darauf hingewiesen, dass der ”Q”-Ausgang des sequenziellen Schaltungselements 404 mit dem ”D”-Eingang des sequenziellen Schaltungselements 402 über einen Pfad verbunden ist, der durch die sequenziellen Schaltungselemente 406 und 408 verläuft, wobei eine Schleife ausgebildet wird.
-
Bei einem Superpfadschlupf des Superpfades zwischen dem primären ”Ein”-Eingang und dem primären ”Aus”-Ausgang von größer oder gleich Null sollte man den nützlichen Versatz zum Beheben aller Zeitverstöße beim Superpfad verwenden können. Wegen der Schleife kann dies jedoch unmöglich sein. Konkret kann, wenn der relative Taktversatz zwischen den sequenziellen Schaltungselementen 402 und 404 verändert wird, um den Schlupf im Superbogen 410 zu vergrößern, der Schlupf in den Superbögen 412 und/oder 414 entsprechend verringert werden, wodurch ein Zeitverstoß erzeugt werden kann. Nimmt man zum Beispiel an, dass die Taktflanke des sequenziellen Schaltungselements 402 um 1 Zeiteinheit vorverlegt wird und die Taktflanke des sequenziellen Schaltungselements 404 um 1 Zeiteinheit nach hinten verlegt wird, so erhöht sich der Schlupf des Superbogens 410 um 2 Zeiteinheiten. Die sich in den Superbögen 412 und 414 um 1 Zeiteinheit verringernden Schlupfe führen jedoch zu einem Zeitverstoß bei den Superbögen 412 und/oder 414.
-
Bei einigen der hierin beschriebenen Ausführungsformen werden Schleifen erkannt (z. B. durch Ausführen einer Breitensuche (englisch: breadth-first traversal) und Beobachten von besuchten Knoten) und Superpfade mit positivem Schlupf ermittelt, die von den erkannten Schleifen beeinflusst werden. Die Ausführungsformen können bei den betroffenen Superpfaden ermitteln, ob ein nützlicher Versatz zu Behebung von Zeitverstößen am Superpfad verwendet werden kann.
-
Es wird darauf hingewiesen, dass die Superpfadberechnung von der Engine für die Prä-CTS-Schaltungsoptimierung getrennt und eventuell mit der Engine für die Berechnung des nützlichen Versatzes gemeinsam benutzt oder kombiniert werden kann. Es wird darauf hingewiesen, dass die Superpfadberechnung auch die Engine für die Prä-CTS-Schaltungsoptimierung steuert, und zwar so, dass die Superpfadberechnung angibt, welche der Pfade zu optimieren sind und wann die Optimieren zu beenden ist.
-
Bei einigen Ausführungsformen zum Beispiel, kann die Engine für die Prä-CTS-Schaltungsoptimierung zum Beenden der Optimierung angewiesen werden, sobald alle Superpfade einen positiven Schlupf aufweisen, selbst wenn der Schlupf einzelner Pfade immer noch negativ ist. Die Zeitverstöße der Pfade mit negativem Schlupf können während der CTS dann unter Verwendung des nützlichen Versatzes behoben werden. Der hierdurch von der Engine für die Prä-CTS-Schaltungsoptimierung vorzunehmende Optimierungsaufwand kann im Vergleich zum traditionellen Ansatz stark verringert werden, da, solange der Superpfad keinen negativen Schlupf aufweist, mehrere Pfade einen negativen Schlupf aufweisen können. Diese wichtige Erkenntnis wird von einigen Ausführungsformen benutzt, um den von der Engine für die Prä-CTS-Schaltungsoptimierung zu leistenden Optimierungsaufwand drastisch zu reduzieren.
-
5 veranschaulicht ein Verfahren gemäß einiger der hierin beschriebenen Ausführungsformen zur Berechnung und Verwendung von Superpfadschlupfen. Das Verfahren kann mit dem Berechnen eines Satzes aggregierter Schlupfe (d. h. Superpfadschlupfen) für einen Satz von Abfolgen logischer Pfade beginnen, wobei jede Abfolge logischer Pfade an einem primären Eingang oder einem sequenziellen Schaltungselement beginnt, das lediglich ein Signal abgibt, jedoch kein Signal aufnimmt, und an einem primären Ausgang oder einem sequenziellen Schaltungselement endet, das lediglich ein Signal aufnimmt, jedoch kein Signal abgibt (Vorgang 502). Anschließend kann das Verfahren die Schaltungsoptimierung auf Basis des Satzes aggregierter Schlupfe steuern (Vorgang 504). Es wird darauf hingewiesen, dass der Satz von aggregierten Schlupfen ein oder mehrere Aggregatschlupfe und der Satz von Abfolgen logischer Pfade einen oder mehreren Abfolgen von logischen Pfaden aufweisen kann.
-
Konkret kann das Verfahren die Engine für die Prä-CTS-Schaltungsoptimierung bei einem aggregierten Schlupf von Null oder größer dazu anweisen, die Zeitverstöße auf den logischen Pfaden des Superpfades nicht zu beheben. Ist der Aggregatschlupf dagegen negativ, kann das Verfahren die Engine für die Prä-CTS-Schaltungsoptimierung dazu anweisen, ein Erhöhen des Taktgeberschlupfes von in dem Superpfad befindlichen logischen Pfaden zu versuchen.
-
Bei einigen Ausführungsformen kann das Verfahren logische Pfade auf Basis der Anzahl von Superpfaden mit negativem Schlupf priorisieren, die durch einen logischen Pfad verlaufen. Konkret weist ein logischer Pfad eine höhere Priorität auf, wenn er von einer größeren Anzahl von Superpfaden mit negativem Schlupf gemeinsam genutzt wird. Als Nächstes kann das Verfahren die Engine für die Prä-CTS-Schaltungsoptimierung so steuern, dass in Reihenfolge abnehmender Priorität der Taktgeberschlupf der logischen Pfade erhöht wird. Bei einer Abwandlung kann die Priorität eines logischen Pfades auf der Summe der Werte der negativen Schlupfe der den logischen Pfad aufweisenden Superpfade basieren. Bei einer weiteren Abwandlung kann, falls zwei logische Pfade dieselbe Priorität aufweisen, der Schlupf des logischen Pfades als entscheidendes Kriterium verwendet werden. Konkret kann dem logischen Pfad mit dem niedrigeren Taktgeberschlupf eine höhere Priorität zugewiesen werden als dem logischen Pfad mit dem höheren Taktgeberschlupf.
-
Bei einigen Ausführungsformen kann das Verfahren die Engine für die Prä-CTS Schaltungsoptimierung zum Beenden einer Optimierung anweisen, wenn alle aggregierten Schlupfe in dem Satz von aggregierten Schlupfen größer oder gleich Null sind (d. h. selbst dann, wenn die Schlupfe von einem oder mehreren der logischen Pfade negativ sind).
-
Computersystem
-
6 veranschaulicht ein Computersystem gemäß einiger der in dieser Offenbarung beschriebenen Ausführungsformen. Ein Computersystem kann ganz allgemein ein beliebiges zur Durchführung von Berechnungen ausgebildetes System sein. Konkret kann ein Computersystem ein Mikroprozessor, eine anwendungsspezifische integrierte Schaltung, ein dezentralisiertes Computersystem, ein Cloud-Computersystem, oder ein beliebiges anderes derzeit bekanntes oder zukünftig entwickeltes Computersystem sein. Das Computersystem 602 weist einen Prozessor 604, einen Speicher 606 und eine Speichereinrichtung 608 auf. Das Computersystem 602 kann mit einer Anzeigevorrichtung 614, einer Tastatur 610 und einem Zeigegerät 612 verbunden sein. Die Speichereinrichtung kann ganz allgemein eine beliebige zur Speicherung von Daten ausgebildete Einrichtung sein. Konkret kann es sich bei der Speichereinrichtung um eine magnetische, eine optische, oder eine magnetooptische Speichereinrichtung handeln, oder er kann auf einem Flash-Speicher und/oder einem batteriegepufferten Speicher basieren. In der Speichereinrichtung 608 können das Betriebssystem 616, das Anwendungsprogramm 618 und Daten 620 gespeichert sein.
-
Das Anwendungsprogramm 616 kann Anweisungen enthalten, die bei Ausführung durch einen Computer 602 den Computer 602 zur Ausführung eines oder mehrerer Verfahren veranlassen, die in dieser Offenbarung indirekt oder direkt beschrieben sind. Die Daten 620 können beliebige Daten umfassen, die in das Anwendungsprogramm 616 eingegeben oder von diesem ausgegeben werden.
-
Die oben vorgelegte Beschreibung ermöglicht einem Fachmann Ausführung und Gebrauch der Ausführungsformen. Fachleute werden ohne Weiteres erkennen, dass die offenbarten Ausführungsformen in verschiedenster Weise modifiziert und die in dieser Beschreibung definierten allgemeinen Prinzipien auf andere Ausführungsformen und Anwendungen übertragen werden können, ohne Kern und Umfang der vorliegenden Offenbarung zu verlassen. Daher ist die vorliegende Erfindung nicht auf die vorgestellten Ausführungsformen beschränkt, sondern weist den breitesten mit den hier offenbarten Prinzipien und Merkmalen noch vereinbaren Umfang auf.
-
Datenstrukturen und Code, die in dieser Offenbarung beschrieben wurden, können teilweise oder vollständig auf einem nichtflüchtigen computerlesbaren Speichermedium und/oder einem Hardwaremodul und/oder einer Hardwarevorrichtung gespeichert sein. Ein nichtflüchtiges computerlesbares Speichermedium umfasst alle computerlesbaren Speichermedien unter Ausnahme einer fortschreitenden elektromagnetischen Welle bzw. eines fortschreitenden elektromagnetischen Signals und ist nicht auf flüchtige Speicher, nichtflüchtige Speicher, magnetische und optische Speichervorrichtungen wie beispielsweise Plattenlaufwerke, Magnetbänder, CDs (compact discs), DVDs (digital versatile oder digital video discs), oder andere derzeit bekannte oder in Zukunft entwickelte Medien, auf denen Code und/oder Daten gespeichert werden können, beschränkt. Die in dieser Offenbarung beschriebenen Hardwaremodule oder Vorrichtungen umfassen, ohne darauf beschränkt zu sein, anwendungsspezifische integrierte Schaltungen (ASICs), Field Programmable Gate Arrays (FPGAs), eigene oder mitbenutzte Prozessoren und/oder andere derzeit bekannte oder in Zukunft entwickelte Hardwaremodule oder -vorrichtungen.
-
Die in dieser Offenbarung beschriebenen Verfahren und Prozesse können teilweise oder vollständig in Form von Code und/oder Daten vorliegen, die in einem nichtflüchtigen computerlesbaren Speichermedium oder einer computerlesbaren Speichereinrichtung gespeichert sind, sodass, wenn ein Computersystem den Code und/oder die Daten einliest und ausführt, das Computersystem die entsprechenden Verfahren und Prozesse ausführt. Die Verfahren und Prozesse können teilweise oder vollständig in Form von Hardwaremodulen oder -vorrichtungen vorliegen. Es wird darauf hingewiesen, dass die Verfahren und Prozesse in Form einer Kombination aus Code, Daten und Hardwaremodulen bzw. Hardwarevorrichtungen vorliegen können.
-
Die vorhergehende Beschreibung von Ausführungsformen der vorliegenden Erfindung wurde lediglich zum Zwecke der Veranschaulichung und der Erläuterung vorgestellt. Sie soll nicht erschöpfend sein oder die vorliegende Erfindung auf die offenbarten Formen beschränken. Daher wird ein Fachmann viele Modifikationen und Abänderungen erkennen. Zudem dient die oben dargelegte Offenbarung nicht einer Beschränkung der vorliegenden Erfindung. Der Umfang der vorliegenden Erfindung wird durch die beiliegenden Ansprüche definiert.