-
QUERVERWEIS AUF EINE VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht unter 35 U. S. C. § 119 die Priorität der vorläufigen Patentanmeldung mit der Seriennummer 62/069,278 mit dem Titel „EFFICIENT SKEW SCHEDULING METHODOLOGY FOR PERFORMANCE & LOW POWER OF A CLOCK-MESH IMPLEMENTATION”, welche am 27. Oktober 2014 eingereicht wurde. Der Gegenstand dieser früher eingereichten Anmeldung wird hiermit durch Bezugnahme mit eingebunden.
-
Diese Anmeldung beansprucht unter 35 U. S. C. § 119 die Priorität der vorläufigen Patentanmeldung mit der Seriennummer 62/069,276 mit dem Titel „A NOVEL LOW POWER MINIMAL DISRUPTIVE METHOD TO IMPLEMENT LARGE QUANTITY PUSH & PULL USEFUL-SKEW SCHEDULES WITH ENABLING CIRCUITS IN A CLOCK-MESH BASED DESIGN”, welche am 27. Oktober 2014 eingereicht wurde. Der Gegenstand dieser früher eingereichten Anmeldung wird hiermit durch Bezugnahme mit eingebunden.
-
TECHNISCHES GEBIET
-
Diese Beschreibung bezieht sich auf das Design bzw. den Entwurf von elektrischen Schaltungen und genauer auf das Timing bzw. die Zeitsteuerung eines Taktnetzwerks (clock network).
-
HINTERGRUND
-
Der Betrieb der meisten digitalen Schaltungssysteme wie beispielsweise Computersysteme wird durch ein periodisches Signal synchronisiert, welches als „Takt” bekannt ist, welcher die Abfolge und die Schrittsteuerung bzw. das Durchführungstempo der Vorrichtungen der Schaltung diktiert. Oftmals wird dieser Takt von einer einzelnen Quelle zu all den Speicherelementen der Schaltung verteilt, welche auch Register, Latches, Flip-Flops oder Speicher genannt werden. In einer Schaltung, welche flankengetriggerte bzw. flankenangesteuerte Flip-Flops verwendet, überträgt, wenn die Taktflanke oder das Kontrollzeichen (Tick) an einem Flip-Flop ankommt, das Flip-Flop die Flip-Flop-Eingabe zu der Flip-Flop-Ausgabe und diese neuen Ausgabewerte strömen durch eine Kombinationslogik, um die Werte an den Eingängen eines nächsten Flip-Flop für das nächste Taktkontrollzeichen vorzusehen.
-
Idealerweise erreicht die Eingabe zu jedem Speicherelement ihren letztendlichen Wert, welcher zu berechnen ist, rechtzeitig für das nächste Taktkontrollzeichen, so dass das Verhalten der gesamten Schaltung exakt vorhergesagt werden kann. Die maximale Geschwindigkeit oder Taktfrequenz, bei welcher ein System laufen kann, ergibt allgemein die Varianz, welche zwischen den verschiedenen Elementen einer Schaltung aufgrund von Unterschieden bzw. Differenzen in der physikalischen Zusammensetzung, der Temperatur und der Pfad- bzw. Weglänge auftritt.
-
In Schaltungsdesigns ist eine Taktversatzzeit (clock skew) (manchmal Timing-Versatzzeit genannt) ein Phänomen in synchronen Schaltungen, in welchen das Taktsignal (von der Tatktschaltung gesendet) an unterschiedlichen Komponenten zu unterschiedlichen Zeiten ankommt. Mitunter kann dies durch viele unterschiedliche Dinge verursacht sein, wie beispielsweise eine Drahtzwischenverbindungslänge bzw. Drahtverbindungslänge, Temperaturvariationen, eine Variation in Zwischenvorrichtungen, eine kapazitive Kopplung, Material-Imperfektionen, Unterschiede in der Eingangskapazität an den Takteingängen von Vorrichtungen, welche den Takt verwenden, zufällige und systemische Variationen und Taktschwankungen bzw. Taktfluktuieren (clock jitter) etc. Wenn die Taktrate einer Schaltung zunimmt, wird das Timing kritischer und weniger Variation kann toleriert werden, wenn die Schaltung ordnungsgemäß zu funktionieren hat.
-
Im Allgemeinen gibt es zwei Typen einer nützlichen Versatzzeit. Eine positive Versatzzeit tritt auf, wenn das empfangende Flip-Flop das Taktkontrollzeichen später als das sendende Flip-Flop empfängt (push bzw. schieben). Ein negativer Versatz ist das Entgegengesetzte: das empfangende Register bekommt das Taktkontrollzeichen früher als das sendende Register (pull bzw. ziehen). Eine Null-Taktversatzzeit bezieht sich auf die Ankunft des Taktkontrollzeichens im Wesentlichen simultan bzw. gleichzeitig bei dem übertragenden und dem empfangenden Register.
-
KURZFASSUNG
-
Gemäß einem allgemeinen Aspekt kann ein Verfahren zum Anpassen bzw. Einstellen von Taktversatzzeiten ein Empfangen eines Schaltungsmodells aufweisen, welches Logikschaltungen aufweist, welche wenigstens teilweise durch ein Taktnetz gesteuert werden, wobei das Taktnetz wenigstens teilweise jede der Logikschaltungen durch ein Zuführen eines jeweiligen Taktsignals zu einem Endpunkt einer jeweiligen Logikschaltung steuert. Das Verfahren kann ein Vorsehen einer inkrementellen Latenzanpassung bzw. Latenzeinstellung für das Schaltungsmodell durch ein Bestimmen eines oder mehrerer Endpunkte, welche Kandidaten für eine Anpassung bzw. Einstellung einer jeweiligen Endpunkt-Taktversatzzeitablaufsteuerung sind, aufweisen. Und für jeden Endpunkt, welcher mit einem negativen Front-Slack verknüpft ist, ein Einstellen bzw. Anpassen einer Taktversatzzeitablaufsteuerung eines jeweiligen Endpunkts um einen quantisierten Betrag bis zu einem maximalen Push-Grenzwert. Ferner für jeden Endpunkt, welcher mit einem negativen Back-Slack verknüpft ist, ein Einstellen bzw. Anpassen der Taktversatzzeitablaufsteuerung eines jeweiligen Endpunkts, der verknüpft ist, um einen quantisierten Betrag bis zu einem maximalen Pull-Grenzwert. Das Verfahren kann auch ein Wiederholen, eine Mehrzahl von Malen, des Schritts des Vorsehens einer inkrementellen Timing-Aktualisierung für das Schaltungsmodell aufweisen. Das Verfahren kann ein Durchführen einer Timing-Auswertung (Timing-Evaluation) bei dem Schaltungsmodell über entweder eine dynamische Timing-Verifikation, eine statische Timing-Analyse oder beides aufweisen.
-
Gemäß einem anderen allgemeinen Aspekt kann eine Vorrichtung einen digitalen Schaltungsempfänger aufweisen, welcher konfiguriert ist, um ein Modell einer digitalen Schaltung zu speichern. Das digitale Schaltungsmodell kann Modelle aufweisen von: einem Taktnetz, welches konfiguriert ist, um ein Taktsignal für eine Mehrzahl von Logikschaltungen vorzusehen, und einer Mehrzahl von Logikschaltungen, wobei jede Logikschaltung wenigstens teilweise durch eine Anwendung des Taktsignals auf einen oder mehrere Endpunkte der Logikschaltung gesteuert wird. Die Vorrichtung kann einen Anpassungs- bzw. Einstellungskandidaten-Identifizierer aufweisen, welcher konfiguriert ist, um einen oder mehrere Endpunkte zu identifizieren, welche entweder Pull-Kandidaten oder Push-Kandidaten sind. Die Vorrichtung kann eine Takt-Pull-Ablaufsteuerung aufweisen, welche konfiguriert ist, um für jeden Pull-Kandidaten eine Taktlatenz des Taktsignals zu dem jeweiligen Endpunkt um einen ersten quantisierten Betrag zu verringem. Die Vorrichtung kann einen Timing-Modell-Erzeuger bzw. Timing-Modell-Generator aufweisen, welcher konfiguriert ist, um ein Timing-Modell der digitalen Schaltung zu aktualisieren, nachdem die Takt-Pull-Ablaufsteuerung das digitale Schaltungsmodell verarbeitet hat. Die Vorrichtung kann eine Takt-Push-Ablaufsteuerung aufweisen, welche konfiguriert ist, um für jeden Push-Kandidaten die Taktlatenz des Taktsignals zu dem jeweiligen Endpunkt um einen zweiten quantisierten Betrag zu erhöhen. Die Vorrichtung kann konfiguriert sein, um das Takt-Timing des digitalen Schaltungsmodells inkrementell über eine Anzahl von Durchgängen durch den Anpassungskandidaten-Identifzierer, die Takt-Pull-Ablaufsteuerung, den Timing-Modell-Erzeuger und die Takt-Push-Ablaufsteuerung anzupassen bzw. einzustellen.
-
Gemäß einem anderen allgemeinen Aspekt kann ein Computerprogrammprodukt zum Anpassen bzw. Einstellen von Taktversatzzeitablaufsteuerungen einer digitalen Schaltung existieren. Das Computerprogrammprodukt kann konkret auf einem computerlesbaren Medium ausgeführt sein und ausführbaren Code aufweisen, welcher, wenn er ausgeführt wird, konfiguriert ist, um eine Datenverarbeitungsvorrichtung zu veranlassen, ein Schaltungsmodell zu empfangen, welches Logikschaltungen aufweist, welche wenigstens teilweise durch ein Taktnetz gesteuert werden, wobei das Taktnetz wenigstens teilweise jede der Logikschaltungen durch ein Zuführen eines jeweiligen Taktsignals zu einem Endpunkt einer jeweiligen Logikschaltung steuert. Die Befehle können konfiguriert sein, um eine inkrementelle Timing-Aktualisierung für das Schaltungsmodell vorzusehen durch ein Bestimmen eines oder mehrerer Endpunkte, welche mit einem Betrag von absolutem Slack verknüpft sind, welcher größer ist als ein minimaler Slack-Grenzwert. Und für jeden Endpunkt, welcher mit einem negativen Front-Slack verknüpft ist, ein Einstellen bzw. Anpassen einer Taktversatzzeitablaufsteuerung eines jeweiligen Endpunkts, welcher mit einem negativen Front-Slack verknüpft ist, um einen quantisierten Betrag bis zu einem maximalen Push-Grenzwert. Und ferner für jeden Endpunkt, welcher mit einem negativen Back-Slack verknüpft ist, ein Anpassen der Taktversatzzeitablaufsteuerung eines jeweiligen Endpunkts, welcher mit dem negativen Back-Slack verknüpft ist, um einen quantisierten Betrag bis zu einem maximalen Pull-Grenzwert.
-
Die Details einer oder mehrerer Implementierungen sind in den beigefügten Zeichnungen und der Beschreibung untenstehend erläutert. Andere Merkmale werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen deutlich werden.
-
Ein System und/oder ein Verfahren für das Design von elektrischen Schaltungen und genauer für das Timing eines Taktnetzwerkes, im Wesentlichen wie gezeigt in und/oder beschrieben in Verbindung mit wenigstens einer der Figuren, sind vollständiger in den Ansprüchen erläutert.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockschaltbild einer beispielhaften Ausführungsform eines Systems in Übereinstimmung mit dem offenbarten Gegenstand.
-
2 ist ein Blockschaltbild einer beispielhaften Ausführungsform eines Systems in Übereinstimmung mit dem offenbarten Gegenstand.
-
3 ist ein Flussdiagramm einer beispielhaften Ausführungsform einer Technik in Übereinstimmung mit dem offenbarten Gegenstand.
-
4 ist ein schematisches Blockschaltbild eines Informationsverarbeitungssystems, welches Vorrichtungen aufweisen kann, welche gemäß Prinzipien des offenbarten Gegenstandes gebildet sind.
-
Gleiche Bezugszeichen in verschiedenen Zeichnungen zeigen gleiche Elemente an.
-
DETAILLIERTE BESCHREIBUNG
-
Verschiedene beispielhafte Ausführungsformen werden vollständiger hierin nachstehend unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden, in welchen einige beispielhafte Ausführungsformen gezeigt sind. Der vorliegend offenbarte Gegenstand kann jedoch in vielen unterschiedlichen Formen ausgeführt werden, und sollte nicht als auf die beispielhaften Ausführungsformen, welche hierin erläutert sind, beschränkt betrachtet werden. Vielmehr sind diese beispielhaften Ausführungsformen vorgesehen, so dass diese Offenbarung gewissenhaft und vollständig sein wird, und den Umfang des vorliegenden offenbarten Gegenstandes Fachleuten vollständig übermitteln wird. In den Zeichnungen können die Größen und relativen Größen von Schichten und Bereichen zur Klarheit überhöht sein.
-
Es wird verstanden werden, dass wenn auf ein Element oder eine Schicht Bezug genommen wird als „auf”, „verbunden mit” oder „gekoppelt mit” einem anderen Element oder einer anderen Schicht, es direkt auf, verbunden mit oder gekoppelt sein kann mit dem anderen Element oder der anderen Schicht, oder zwischenliegende Elemente oder Schichten gegenwärtig sein können. Im Gegensatz dazu sind, wenn auf ein Element Bezug genommen wird als „direkt auf”, „direkt verbunden mit” oder „direkt gekoppelt mit” einem anderen Element oder Schicht, keine zwischenliegenden Elemente oder Schichten gegenwärtig. Gleiche Bezugszeichen beziehen sich auf gleiche Elemente durchgehend. Wenn hierin verwendet, weist der Begriff „und/oder” eine beliebige und alle Kombinationen eines oder mehrerer der zugeordneten aufgelisteten Gegenstände auf.
-
Es wird verstanden werden, dass obwohl die Begriffe erster/erste/erstes, zweiter/zweite/zweites, dritter/dritte/drittes hierin verwendet werden können, um verschiedene Elemente, Komponenten bzw. Bestandteile, Bereiche, Schichten und/oder Sektionen zu beschreiben, diese Elemente, Komponenten, Bereiche, Schichten und/oder Sektionen nicht durch diese Begriffe beschränkt werden sollten. Diese Begriffe werden nur verwendet, um ein Element, eine Komponente, einen Bereich, eine Schicht oder eine Sektion von einem anderen Bereich, einer anderen Schicht oder einer anderen Sektion zu unterscheiden. Demnach könnte ein erstes Element, eine erste Komponente, ein erster Bereich, eine erste Schicht oder Sektion, welche untenstehend diskutiert werden, als ein zweites Element, eine zweite Komponente, ein zweiter Bereich, eine zweite Schicht oder Sektion benannt werden, ohne von den Lehren des vorliegend offenbarten Gegenstandes abzuweichen.
-
Räumlich relative Begriffe wie beispielsweise „unterhalb”, „unter”, „unterer”, „über”, „oberer” und dergleichen können hierin verwendet werden zur Erleichterung der Beschreibung, um eine Beziehung eines Elements oder Merkmals zu einem anderen Element (anderen Elementen) oder Merkmal (Merkmalen), wie in den Figuren veranschaulicht, zu beschreiben. Es wird verstanden werden, dass die räumlich relativen Begriffe vorgesehen sind, um verschiedene Orientierungen der Vorrichtung in Verwendung oder im Betrieb zusätzlich zu der Orientierung, welche in den Figuren dargestellt ist, zu umfassen. Beispielsweise würden, wenn die Vorrichtung in den Figuren umgedreht wird, Elemente, welche als „unter” oder „unterhalb” anderen Elementen oder Merkmalen beschrieben wird, dann „über” den anderen Elementen oder Merkmalen orientiert sein. Demnach kann der beispielhafte Begriff „unter” sowohl eine Orientierung von über als auch von unter umfassen. Die Vorrichtung kann anderweitig orientiert sein (um 90 Grad gedreht oder unter anderen Orientierungen) und die räumlich relativen Beschreiber bzw. Deskriptoren, welche hierin verwendet werden, können demzufolge interpretiert werden.
-
Die Terminologie, welche hierin verwendet wird, ist für den Zweck des Beschreiben bestimmter beispielhafter Ausführungsformen ausschließlich und ist nicht vorgesehen, um für den vorliegend offenbarten Gegenstand beschränkend zu sein. Wenn hierin verwendet, sind die Singularformen „einer/eine/eines” und „der/die/das” vorgesehen, um die Pluralformen ebenso zu umfassen, solange nicht der Zusammenhang deutlich Anderweitiges anzeigt. Es wird weiterhin verstanden werden, dass die Begriffe „weist auf” und/oder „aufweisend”, wenn sie in dieser Beschreibung verwendet werden, die Gegenwart von genannten Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifiziert, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehrerer Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon ausschließt.
-
Beispielhafte Ausführungsformen sind hierin unter Bezugnahme auf Querschnittsveranschaulichungen beschrieben, welche schematische Veranschaulichungen von idealisierten beispielhaften Ausführungsformen (und Zwischenstrukturen) sind. Als solches sind Variationen bzw. Abweichungen von den Formen der Veranschaulichungen als ein Ergebnis beispielsweise von Herstellungstechniken und/oder Toleranzen zu erwarten. Demnach sollten beispielhafte Ausführungsformen nicht als auf die bestimmten Formen von Bereichen, welche hierin veranschaulicht sind, beschränkt betrachtet werden, sondern sie müssen Abweichungen in den Formen aufweisen, welche beispielsweise von der Herstellung resultieren. Beispielsweise wird ein implantierter Bereich, welcher als ein Rechteck veranschaulicht ist, typischerweise abgerundete oder gekrümmte Merkmale und/oder einen Gradienten der Implantationskonzentration an seinen Rändern eher haben als eine binäre Änderung von einem implantierten zu einem nicht-implantierten Bereich. Ähnlich kann ein vergrabener Bereich, welcher durch Implantation gebildet wird, zu einigen Implantationen in dem Bereich zwischen dem vergrabenen Bereich und der Oberfläche führen, durch welche die Implantation stattfindet. Demnach sind die Bereiche, welche in den Figuren veranschaulicht sind, in ihrer Natur schematisch und ihre Formen sind nicht vorgesehen, um die tatsächliche Form eines Bereichs einer Vorrichtung zu veranschaulichen und sind nicht vorgesehen, um den Umfang des vorliegend offenbarten Gegenstandes zu beschränken.
-
Solange nicht anderweitig definiert, haben alle Begriffe (einschließlich technischer und wissenschaftlicher Begriffe), welche hierin verwendet werden, dieselbe Bedeutung wie allgemein durch einen Fachmann verstanden wird, zu dessen Fachgebiet der offenbarte Gegenstand gehört. Es wird weiterhin verstanden werden, dass Begriffe wie beispielsweise diejenigen, welche in herkömmlich verwendeten Wörterbüchern definiert sind, als eine Bedeutung habend interpretiert werden sollten, welche konsistent mit ihrer Bedeutung in dem Zusammenhang des relevanten Fachgebietes sind und nicht in einem idealisierten oder übermäßig formalen Sinn interpretiert werden werden, solange nicht hierin ausdrücklich so definiert.
-
Hierin nachstehend werden beispielhafte Ausführungsformen im Detail unter Bezugnahme auf die beigefügten Zeichnungen erklärt werden.
-
1 ist ein Blockschaltbild einer beispielhaften Ausführungsform eines Systems 100 in Übereinstimmung mit dem offenbarten Gegenstand. Die veranschaulichte Ausführungsform zeigt ein vereinfachtes Beispiel von Timing-Verletzungen (timing violations), bevor eine nützliche Versatzzeit eingeführt wird (gezeigt in Zustand 101) und die Verbesserung davon (gezeigt in Zustand 191). In verschiedenen Ausführungsformen kann die Verbesserung der Taktversatzzeit über den offenbarten Gegenstand erreicht bzw. bewerkstelligt werden.
-
In der veranschaulichten Ausführungsform kann das System 100 drei Flip-Flops (oder allgemeiner „Endpunkte”) 102, 104 und 106 aufweisen. Das System 100 kann auch vier Kombinationslogikabschnitte 112, 114, 116 und 118 aufweisen. In verschiedenen Ausführungsformen können die Kombinationslogikabschnitte verschiedene elektrische Schaltungen wie beispielsweise NAND-Gatter, NOR-Gatter, Kondensatoren, Widerstände etc. aufweisen. Es mag eine bestimmte Zeitdauer in Anspruch nehmen, dass eine Eingabe zu der Kombinationslogik verarbeitet wird und zu einer Ausgabe von dem Kombinationslogikabschnitt zu führen.
-
Wie obenstehend beschrieben ist, wird, wenn diese Verarbeitungszeit geringer als die Periode des Taktsignals 131 ist, dann gesagt, dass die Schaltung einen „positiven Slack” hat. Im Gegensatz dazu wird, wenn die Verarbeitungszeit größer ist als die Periode des Taktsignals 131 dann gesagt, dass die Schaltung einen „negativen Slack” hat, und wichtiger werden die Ausgaben nicht bereit sein, wenn das Flip-Flop, welches mit den Ausgaben verbunden ist, die Ausgangssignale bzw. Ausgabesignale speichert. In verschiedenen Ausführungsformen kann dies durch ein Erhöhen der Taktperiode oder ein Verringern der Taktfrequenz verbessert werden.
-
In der veranschaulichten Ausführungsform ist die Taktperiode bzw. Taktdauer 714 Pikosekunden (ps) oder eine Frequenz von ~1,4 Gigahertz (GHz). In der veranschaulichten Ausführungsform kann die Kombinationslogik 112 814 ps für eine Verarbeitung benötigen. Demnach kann das Flip-Flop 102 einen Front-Slack von ~100 ps haben (d. h. 714 ps–814 ps), wenn die Kombinationslogik 112 logisch vor dem Flip-Flop 102 ist. Das Taktsignal kann dann dazu gebracht werden, an dem Flip-Flop 102 anzukommen, 100 ps bevor die Ausgaben der Kombinationslogiksektion 112 bereit sind oder vollständig berechnet sind.
-
In der veranschaulichten Ausführungsform kann die Kombinationslogik 114 414 ps für eine Verarbeitung benötigen. Demnach kann das Flip-Flop 102 einen Back-Slack von +300 ps haben (d. h. 714 ps–414 ps), wenn die Kombinationslogik 114 logisch hinter dem Flip-Flop 102 ist. Dies bedeutet, dass das Flip-Flop 102 die Eingangssignale 300 ps später freisetzen könnte als die Eingaben gegenwärtig freigesetzt werden, und die Kombinationslogiksektion 114 würde nach wie vor genug Zeit haben, um die Ausgabe- bzw. Ausgangswerte vollständig zu berechnen. Das Flip-Flop 104 kann einen Front-Slack von +300 ps haben (d. h. 714 ps–414 ps).
-
Es wird verstanden, dass die Beispiele, welche hierin beschrieben sind, lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist. Beispielsweise wurden diese Beispiele für veranschaulichende Zwecke vereinfacht und weisen Dinge wie Takt-Schwankungen, Setup-Zeit etc. nicht auf.
-
In der veranschaulichten Ausführungsform kann die Kombinationslogik 116 764 ps für eine Verarbeitung benötigen. Demnach kann das Flip-Flop 104 einen Back-Slack von –50 ps haben (d. h. 714 ps–764 ps) und das Flip-Flop 106 kann einen Front-Slack von –50 ps haben (d. h. 714 ps–764 ps). In der veranschaulichten Ausführungsform kann die Kombinationslogik 118 714 ps für eine Verarbeitung benötigen. Demnach kann das Flip-Flop 106 einen Back-Slack von 0 ps haben (d. h. 714 ps–714 ps). Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
Ähnlich kann in der veranschaulichten Ausführungsform das Taktnetzwerk oder das Taktnetz das Taktsignal 131 und eine Anzahl von Puffer oder Treibern 132, 134 und 136 aufweisen. In der veranschaulichten Ausführungsform kann jeder Puffer das Taktsignal 131 um 50 ps verzögern. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
Wie obenstehend beschrieben ist, hat in dem Originalzustand (Zustand 101) das System 100 zwei Flip-Flops oder Endpunkte, welche als einen negativen (Front-)Slack habend betrachtet werden, Flip-Flops 102 und 106. Der Ausfall der Logik 112 und 116 vor diesen zwei Flip-Flops 102 und 106 verursacht, dass das System 100 nicht in der Lage ist, sein Designziel eines Betriebs bei 1,4 GHz zu erfüllen, da eine Taktperiode von 814 ps (anstelle der erwünschten 714 ps) benötigt wird, um den langsamsten Logikabschnitt (Schaltung 112) vollständig zu verarbeiten.
-
1 zeigt auch das System 100 nachdem das Taktnetzwerk gemäß dem offenbarten Gegenstand geändert oder angepasst bzw. eingestellt ist (Zustand 191). In solch einer Ausführungsform sind Puffer hinzugefügt worden oder von dem Taktnetzwerk entfernt worden, um die Taktlatenz zu erhöhen (push) oder zu verringern (pull), welche durch jedes Flip-Flop erfahren wird. Diese Anpassung der Taktlatenz wiederum bedeutet, dass nicht alle der Kombinationslogikabschnitte (beispielsweise Logik 112 etc.) einer strikten 714 ps-Ausführungszeit unterliegen bzw. unterworfen sind. Anstelle dessen kann ein gegebener Logikabschnitt mehr Zeit (beispielsweise 814 ps etc.) oder weniger Zeit (beispielsweise 414 ps etc.) haben. In Bezugnahme auf die anderen Figuren wird die Technik, welche in verschiedenen Ausführungsformen eingesetzt wird, um die Taktlatenz anzupassen, im größeren Detail beschrieben. In der veranschaulichten Ausführungsform wird das Konzept alleine eingeführt.
-
In der veranschaulichten Ausführungsform kann das Taktsignal zu dem Flip-Flop 102 um 100 ps durch das Hinzufügen von zwei Puffer (Puffer 142 und 152) verzögert werden. Dies kann das Ende der Ausführungszeit für die Logik 112 um 100 ps nach außen schieben (push out), ihr vollständige 814 ps gebend, um zu vollenden. Dies kann dazu führen, dass das Flip-Flop 102 ein Front-Slack von 0 ps hat.
-
Das Schieben des Taktes zum Flip-Flop 102 um 100 ps wird jedoch nicht in Isolation getan. Es bedeutet auch, dass der Start der nächsten Pipelinestufe oder Kombinationslogik 114 ebenso um 100 ps geschoben wird. Glücklicherweise benötigt die Logik 114 nur 414 ps, um zu vollenden, und die Verzögerung ist kein Problem. Die Addition der Puffer 142 und 152 kann dem Flip-Flop 104 ein Front-Slack von +200 ps geben.
-
Die Logik 112 jedoch mag in der veranschaulichten Ausführungsform nicht der einzige Problemabschnitt gewesen sein. Die Kombinationslogik 116 kann ebenso die erwünschte 714 ps-Periode mit einer Berechnungszeit von 764 ps überschreiten. In verschiedenen Ausführungsformen kann es wünschenswert sein, Verwendung von dem übermäßigen Slack zu machen, welcher für das Flip-Flop 104 zur Verfügung steht, um einige Belastung von der Logik 116 zu entfernen.
-
In solch einer Ausführungsform kann die Taktlatenz für das Flip-Flop 104 verringert oder gezogen (pull) werden. In einer solchen Ausführungsform kann der Puffer 134 von dem Taktnetzwerk entfernt werden. Dies kann dazu führen bzw. veranlassen, dass die Zeitmenge bzw. Zeitdauer, die die Logik 116 hat, um ihre Berechnung durchzuführen, um 50 ps oder auf eine Gesamtzeit von 764 ps zunimmt. In solch einer Ausführungsform kann das Flip-Flop 104 dann ein Front-Slack von +150 ps und ein Back-Slack von 0 ps haben. Ähnlich kann das Flip-Flop 106 (welches seine Taktlatenz nicht geschoben (push) oder gezogen (pull) hatte) ein Front-Slack von 0 ps und ein Back-Slack von 0 ps haben.
-
In einer anderen Ausführungsform kann, wenn die Logik 118 eine Verarbeitungszeit von weniger als 714 ps (beispielsweise 614 ps) hatte, die Taktlatenz des Flip-Flop 106 geschoben worden sein, um die Logik 116 aufzunehmen. In einer solchen Ausführungsform kann die Taktlatenz zu dem Flip-Flop 104 nicht gezogen worden sein. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In der veranschaulichten Ausführungsform können das Taktsignal 131 und Puffer 132, 134, 146, 142 und 152 Teil eines Taktnetz-Netzwerkes sein. Allgemein ist ein Taktnetz-Netzwerk durch ein eine extrem flache Logiktiefe zwischen dem Netz und den Flip-Flops oder Endpunkten charakterisiert. Gewöhnlicherweise treibt lediglich ein einzelner Puffer (beispielsweise Puffer 132 etc.) oder Taktgatter die elektrischen Senken oder Endpunkte direkt. Dies vergleicht sich mit einem herkömmlicheren Taktbaum, welcher oftmals durch eine organische Baumstruktur von der Taktwurzel charakterisiert wird, welche zu jeder der Senken in dem Design hin hinauszweigt. In einem Taktbaum-Schema gibt es oftmals eine relativ große Tiefe für sowohl Puffer als auch Taktausblendpegel (clock-gating levels). Dieser Mangel an Tiefe in der Anzahl von Puffer zwischen dem Endpunkt und der Wurzelquelle (root source) des Taktsignals 131 in einem Taktnetz-Netzwerk verringert die Möglichkeiten zum Verwalten von Taktversatzzeit, insbesondere die Möglichkeit zum Ziehen der Taktlatenz.
-
In der veranschaulichten Ausführungsform kann jeder Puffer (beispielsweise Puffer 142, Puffer 134 etc.) eine Verzögerung für das Taktsignal 131 von 50 ps verursachen. In verschiedenen Ausführungsformen kann der offenbarte Gegenstand konfiguriert sein, um unter Verwendung quantisierter Beträge bzw. Mengen zu arbeiten, um die Taktversatzzeit zu schieben bzw. drücken oder zu ziehen (push or pull). In solch einer Ausführungsform kann es nicht möglich sein, die Taktlatenz auf einen bestimmten erwünschten Wert (beispielsweise 800 ps) anzupassen bzw. einzustellen, sondern nur auf einen Wert nahe zu dem erwünschten Wert wie durch die Granularität des quantisierten Betrags (beispielsweise 814 ps, 864 ps etc.) diktiert wird. Es wird verstanden, dass in verschiedenen Ausführungsformen die Niveaus der Quantisierung sich ändern können (beispielsweise 40 ps, 100 ps, 15 ps etc.). Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
2 ist ein Blockschaltbild einer beispielhaften Ausführungsform eines Systems 200 in Übereinstimmung mit dem offenbarten Gegenstand. In der veranschaulichten Ausführungsform kann während des Designvorgangs für die integrierte Schaltung ein digitales Schaltungsmodell 202 erzeugt werden. Es kann wünschenswert sein, einen Satz von Taktlatenz-Ablaufsteuerungen 208 zu bestimmen. Die Bestandteile bzw. Komponenten des Systems 200 können eingesetzt werden, um einen Satz von Taktlatenz-Ablaufsteuerungen 208 des Modells 202 zu bestimmen, wie untenstehend beschrieben ist.
-
In der veranschaulichten Ausführungsform kann das System 200 eingesetzt werden, um einen Satz von Taktlatenz-Ablaufsteuerungen 208 des digitalen Schaltungsmodells 202 vor dem Durchführen einer physikalischen Schaltungssynthese oder einem Unterwerfen des Modells 202 rigoroseren Timing-Auswertetechniken zu bestimmen. In einer anderen Ausführungsform kann das System 200 eingesetzt werden, um die Taktversatzzeit des Modells 202 spät in dem Designvorgang (beispielsweise so spät wie bei einem letzten Timing etc.) anzupassen. In verschiedenen Ausführungsformen kann man durch ein Betreiben eines digitalen Schaltungsmodells 202 durch das System 200 spät im Designprozess davon profitieren, in der Lage zu sein, das akurateste bzw. genaueste Timing zu verwenden, um die wirklich am meisten kritischen Wege zu fixieren bzw. zu reparieren. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In einer Ausführungsform kann das System 200 ein digitales Schaltungsmodell 202 empfangen. In verschiedenen Ausführungsformen kann das digitale Schaltungsmodell 202 ein physikalisch synthetisiertes oder ausgelegtes Modell aufweisen. In einer anderen Ausführungsform kann das Modell 202 eine Repräsentation des Schaltungszwischenglieds zu den zwei Enden des Designvorgangs aufweisen. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
In verschiedenen Ausführungsformen kann das Schaltungsmodell 202 ein Taktnetz 204 (oder eine Repräsentation davon) aufweisen. In solch einer Ausführungsform kann das Taktnetz 204 konfiguriert sein, um ein Taktsignal für eine Mehrzahl von Logikschaltungen 206 (oder eine Repräsentation davon) vorzusehen. In solch einer Ausführungsform kann das Taktsignal an jeder Logikschaltung 206 mit einer jeweiligen Menge bzw. einem jeweiligen Betrag von Taktlatenz, wie obenstehend beschrieben, ankommen.
-
In verschiedenen Ausführungsformen kann das Schaltungsmodell 202 eine Mehrzahl von Logikschaltungen 206, wie obenstehend beschrieben, aufweisen. In einigen Ausführungsformen kann jede Logikschaltung 206 wenigstens teilweise durch das Taktsignal zu einem oder mehreren Endpunkten der jeweiligen Logikschaltung 206 gesteuert werden. In diesem Zusammenhang kann ein Endpunkt ein Flip-Flop, ein Latch oder ein anderes Register oder Zustandsvorrichtung (beispielsweise die Flip-Flops zur 1, Speicher, etc.) aufweisen. In verschiedenen Ausführungsformen kann ein Endpunkt den Beginn/das Ende einer Pipelinestufe markieren.
-
In einer Ausführungsform kann das System 200 einen digitalen Schaltungsempfänger 210 aufweisen. Der digitale Schaltungsempfänger 210 kann konfiguriert sein, um das digitale Schaltungsmodell 202 zu empfangen. In verschiedenen Ausführungsformen kann der digitale Schaltungsempfänger 210 ebenso konfiguriert sein, um ein oder mehrere Versatzzeit-Ablaufsteuerparameter 211 zu empfangen.
-
In einigen Ausführungsformen können diese Parameter 211 eines oder oder mehreres aufweisen von: der Push-Schrittgröße, der Pull-Schrittgröße, einem maximalen Push-Limit bzw. einer maximalen Push-Grenze oder -Grenzwert, einer maximalen Pull-Grenze oder -Grenzwert und einem Slack-Grenzwert.
-
In verschiedenen Ausführungsformen kann ein Push-Schrittgrößen-Parameter eine Form einer Push-Quantisierung (beispielsweise durch die Takt-Push-Ablaufsteuerung 216 etc.) diktieren, welche mit der aktuellen bzw. tatsächlichen Schrittgröße konform ist, welche durch Realwelt-Versatzzeitpuffer (oder eine andere Schaltung, beispielsweise eine Takt-Ausblend-Pufferverzögerung etc.) vorgesehen ist. Dieser Parameter kann einen Verlust von Implementierungseffizienz vermeiden, welcher in einem herkömmlichen Taktbaumsystem(CTS = Clock Tree System = Taktbaumsystem)-basierten Verfahren gefunden wird. In der veranschaulichten Ausführungsform kann durch ein Einsetzen einer quantisierten Push-Schrittgröße die theoretische oder Vor-Implementierungs-Taktlatenz-Ablaufsteuerung besser mit der physikalischen oder Nach-Implementation des Netzes 204 korrelieren.
-
In einigen Ausführungsformen kann ein Pull-Schrittgrößen-Parameter ähnlich eine Form einer Pull-Quantisierung (beispielsweise durch die Takt-Pull-Ablaufsteuerung 214 etc.) diktieren, welche mit der aktuellen Schrittgröße, welche durch die Entfernung der Realwelt-Versatzzeitpuffer vorgesehen ist (oder eine andere Schaltung, beispielsweise Takt-Ausblend-Pufferverzögerung etc.). In verschiedenen Ausführungsformen kann die Pull-Schrittgröße ähnlich in der Funktion oder dem Wert zu der Push-Schrittgröße sein.
-
In einer Ausführungsform kann ein Maximal(Max)-Push-Betrag-Parameter auf einen oberen Wert für den maximalen Betrag der Taktlatenz-Ablaufsteuerung, welcher zu einem beliebigen Endpunkt hinzugefügt bzw. addiert werden kann, eingestellt werden. In einer Ausführungsform kann dies erlauben, wie die Performance/Leistungs-Austauschbeziehung bestimmt wird. Beispielsweise kann, wenn mehrere Versatzzeitpuffer (oder eine andere Schaltung) hinzugefügt werden, mehr Leistung verbraucht werden, das Gesamt-Timing der digitalen Schaltung jedoch kann verbessert werden (beispielsweise löst ein Pushen bzw. Schieben des Taktes verschiedene Timing-Angelegenheiten etc.). In einer solchen Ausführungsform kann der Max-Push-Betrag-Parameter den Betrag von Leistung, welcher durch hinzugefügte Versatzzeitpuffer verbraucht wird, beschränken. Ferner kann in einigen Ausführungsformen der Max-Push-Betrag-Parameter durch Implementierungsbeschränkungen wie beispielsweise Anhäufung, Zerbrechen von Zellen etc. diktiert werden.
-
In verschiedenen Ausführungsformen kann ein maximaler(Max)-Pull bzw. Zieh-Betrag-Parameter als ein Wert für den maximalen Betrag der Taktlatenz-Ablaufsteuerung eingestellt werden, welcher von einem beliebigen Endpunkt subtrahiert werden kann. In verschiedenen Ausführungsformen kann dies eine Steuerbarkeit der Pull-Ablaufsteuerung ermöglichen, unabhängig von der Push-Ablaufsteuerung. Ferner kann in einigen Ausführungsformen eine Pull-Ablaufsteuerung erreicht werden durch ein Entfernen von Versatzzeitpuffern (oder Takt-Ausblend-Pufferverzögerungs-Anpassungen) von dem Design. In einigen Ausführungsformen kann es eine Grenze für die Anzahl von Versatzzeitpuffern geben, welche entfernt werden können. Beispielsweise existierte in 1 nur der Puffer 134 als eine Eingabe für das Flip-Flop 104. Demnach kann der Max-Pull-Betrag, welcher dem Flip-Flop 104 zugeordnet ist (oder dem System 100 im Allgemeinen), ein Puffer gewesen sein (repräsentiert in Einheiten von Zeit, Puffer, Schritten etc.).
-
In verschiedenen Ausführungsformen kann ein Slack-Grenzwert-zu-Versatzzeit-Parameter erlauben, dass ein erwünschter Ausgleich zwischen einem gesamten negativen Slack (TNS = Total Negative Slack) und einem schlimmsten negativen Slack (WNS = Worst Negative Slack) eingestellt wird. Dies kann einen Ausgleich zwischen der Leistungsfähigkeit und der Leistung erleichtern. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
In einer anderen Ausführungsform kann der digitale Schaltungsempfänger 210 die Parameter 211 empfangen und diese zusammen mit dem digitalen Schaltungsmodell 202 zu einer oder mehreren anderen Komponenten des Systems 200 reichen. In solch einer Ausführungsform kann die Funktionsfähigkeit der anderen Komponenten des Systems 200 abgewandelt oder beschränkt sein. Beispielsweise kann, wie obenstehend beschrieben ist, die Push-Schrittgröße das Niveau oder den Betrag der Quantisierung, welche durch die Versatzzeit-Push-Ablaufsteuerung 216 eingesetzt werden können, diktieren, wenn versucht wird, die Taktlatenzzeit bzw. Taktlatenz für einen gegebenen Endpunkt zu schieben, ähnlich wie bei dem Pull-Schrittgrößen-Parameter und der Takt-Pull-Ablaufsteuerung 214. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
In der veranschaulichten Ausführungsform kann das System 200 einen Push-/Pull-Einstellungs-Kandidaten-Identifizierer bzw. Push-Pull-Anpassungs-Kandidaten-Identifizierer 212 aufweisen. In verschiedenen Ausführungsformen kann der Einstellungs-Kandidaten-Identifizierer 212 konfiguriert sein, um einen oder mehrerer Endpunkte zu identifizieren, welche einen Betrag von Front-Slack oder einen Betrag von Back-Slack aufweisen.
-
Während die Beschreibung des offenbarten Gegenstand sich hauptsächlich auf ein Setup von Slack und Timings beziehen mag, kann in verschiedenen Ausführungsformen der offenbarte Gegenstand auch eingesetzt werden, um andere Formen von Slack wie beispielsweise einen Hold-Slack bzw. Halte-Slack zu adressieren. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist. In einer anderen Ausführungsform kann eine hilfreiche Versatzzeit-Ablaufsteuerung eingesetzt werden, um die Leistung eher zu verbessern als den Timing-Slack. In noch einer anderen Ausführungsform kann eine nützliche Versatzzeit-Ablaufsteuerung eingesetzt werden, um eher Halte-Zeiten bzw. Hold-Timings zu verbessern als das Setup-Timing.
-
In verschiedenen Ausführungsformen kann der Push-/Pull-Einstellungs-Kandidaten-Identifizierer 212 konfiguriert sein, um Endpunkte in zwei (oder mehr) Kategorien zu unterteilen. In einer solchen Ausführungsform kann eine erste solche Kategorie Endpunkte aufweisen, welche Kandidaten sind, um gepusht bzw. gedrückt zu werden. In einer Ausführungsform kann ein Endpunkt ein Push-Kandidat sein, wenn er einen Front-Slack aufweist, welcher geringer ist als sein Back-Slack, sein Front-Slack negativ ist, und er einen Front-Slack hat, welcher schlimmer ist als der „Slack-Grenzwert-zu-Versatzzeit”-Grenzwert. Eine zweite Kategorie kann Endpunkte aufweisen, welche Kandidaten sind, um gepullt bzw. gezogen zu werden. In einer Ausführungsform kann ein Endpunkt ein Pull-Kandidat sein, wenn er einen Front-Slack aufweist, welcher größer ist als sein Back-Slack, sein Back-Slack negativ ist, und er einen Back-Slack hat, welcher schlimmer ist als der „Slack-Grenzwert-zu-Versatzzeit”-Grenzwert. In verschiedenen Ausführungsformen können Endpunkte, welche weder Kandidaten für eine Gepusht-Werden, noch für ein Gepullt-Werden sind, ausgelassen werden. In einigen Ausführungsformen können diese ausgelassenen oder Nicht-Kandidaten-Endpunkte eine dritte Kategorie aufweisen. In anderen Ausführungsformen können die ausgelassenen Endpunkte für eine Leistungsverringerung der digitalen Schaltung ablaufgesteuert werden. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In der veranschaulichten Ausführungsform kann das System 200 eine Takt-Pull-Ablaufsteuerung 214 aufweisen. In solch einer Ausführungsform kann die Takt-Pull-Ablaufsteuerung 214 für ein Verringern der Taktlatenz des Taktsignals zu den jeweiligen Pull-Kandidaten-Endpunkten um einen ersten quantisierten Betrag konfiguriert sein.
-
Der untenstehende Pseudo-Code veranschaulicht eine beispielhafte Technik zum Berechen des Betrags der Push- und Pull-Anpassung von einem Kandidaten-Endpunkt. In verschiedenen Ausführungsformen kann eine solche Technik durch die Takt-Pull-Ablaufsteuerung 214 und/oder die Takt-Push-Ablaufsteuerung 216 eingesetzt werden. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
-
-
In solch einer Ausführungsform kann für jeden Kandidaten, wenn der Front-Slack geringer ist als der Back-Slack, der Back-Slack herabgesetzt werden, um den Front-Slack zu verbessern. Dies kann nur getan werden, wenn in verschiedenen Ausführungsformen der Front-Slack weniger ist als ein Grenzwert und der Back-Slack über einem eingestellten bzw. angepassten Front-Slack verbleibt. Demnach kann es Kandidaten geben, für welche keine Einstellung auftritt. Wenn der Kandidat eingestellt werden muss, kann der Front-Slack erhöht werden und der Back-Slack um einen quantisierten Schrittbetrag verringert werden, bis die obigen Bedingungen erfüllt sind. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In der veranschaulichten Ausführungsform kann das System 200 einen Timing-Modell-Erzeuger 218 aufweisen. In einigen Ausführungsformen kann der Timing-Modell-Erzeuger 218 konfiguriert sein, um ein Timing-Modell des digitalen Schaltungsmodells 202 zu aktualisieren, nachdem die Takt-Pull-Ablaufsteuerung 214 das digitale Schaltungsmodell 202 verarbeitet hat. In verschiedenen Ausführungsformen kann das System 200 einen inkrementellen Latenz-Einsteller 219 aufweisen, welcher konfiguriert ist, um die Latenzmessungen des digitalen Modells 202 einzustellen.
-
In der veranschaulichten Ausführungsform kann das System 200 eine Takt-Push-Ablaufsteuerung 216 aufweisen. In solch einer Ausführungsform kann die Takt-Push-Ablaufsteuerung 216 konfiguriert sein, um die Taktlatenz des Taktsignals für den jeweiligen Push-Kandidaten-Endpunkt um einen zweiten quantisierten Betrag zu erhöhen. Nachdem die Takt-Push-Ablaufsteuerung 216 die Taktversatzzeit-Ablaufsteuerungen modifiziert hat, kann das Timing-Modell des digitalen Schaltungsmodells 202 aktualisiert werden (beispielsweise durch den Timing-Modell-Erzeuger 218, inkrementellen Latenz-Einsteller 219).
-
Trotzdem verarbeitet in der veranschaulichten Ausführungsform die Takt-Pull-Ablaufsteuerung 214 das digitale Schaltungsmodell vor der Takt-Push-Ablaufsteuerung 216 (beispielsweise eine Schleife, welche die Komponenten 212, 214, 218, 219, 212, 16 und 218 aufweist). In einer anderen Ausführungsform kann die Verarbeitungsreihenfolge umgekehrt sein (beispielsweise eine Schleife, welche die Komponenten 212, 216, 218, 219, 212, 214 und 218 aufweist). Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
Wie obenstehend beschrieben ist, kann in einer Ausführungsform für jeden Kandidaten, wenn der Back-Slack geringer ist als der Front-Slack, der Front-Slack herabgesetzt werden, um den Back-Slack zu verbessern. Dies kann nur getan werden, wenn in verschiedenen Ausführungsformen der Back-Slack geringer ist als ein Grenzwert und der Front-Slack über einem eingestellten Back-Slack verbleibt. Demnach kann es Kandidaten geben, für welche keine Anpassung auftritt. Wenn der Kandidat angepasst werden muss bzw. eingestellt werden muss, kann der Front-Slack verringert werden, und der Back-Slack um einen quantisierten Schrittbetrag erhöht werden, bis die obigen Bedingungen erfüllt sind. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In verschiedenen Ausführungsformen können durch ein Splitten von Endpunkten in die zwei Push-/Pull-Eimerund ein Ausführen einer Push-Taktversatzzeit-Ablaufsteuerungseinstellung und einer Pull-Taktversatzzeit-Ablaufsteuerungseinstellung durch getrennte Schritte Ablaufsteuerungskonflikte vermieden werden. In solch einer Ausführungsform kann die traditionelle bzw. herkömmliche Notwendigkeit für ein kostenintensives inkrementelles Timing-Update nach der Ablaufsteuerung jedes Endpunkts vermieden werden. In solche einer Ausführungsform kann das Timing-Modell aktualisiert werden, nachdem die Push-Pull-Kandidaten in dem gesamten digitalen Modell 202 verarbeitet worden sind.
-
In der veranschaulichten Ausführungsform kann das System 200 das digitale Schaltungsmodell 202 über die Takt-Pull-Ablaufsteuerung 214, die Takt-Push-Ablaufsteuerung 216, den Timing-Modell-Erzeuger 218, den inkrementellen Timing-Einsteller 219 eine Anzahl von Malen als Schleifen ausführen. In solch einer Ausführungsform hängt eine genaue Bestimmung der Taktversatzzeit-Ablaufsteuerung eines Endpunkts oftmals von Timing-Slacks von vielen Pipelinestufen und einem dynamischen Ausleihen von Zeit von diesen nachfolgenden Multistufen ab. Dies involviert im Allgemeinen eine Multistufen-Vorausschau-Ablaufsteuerung, welche ein komplexes Problem ist. Durch ein Durchführen mehrfacher Iterationsschleifen über Einstufen-Ablaufsteuerungen (beispielsweise Takt-Pull-Ablaufsteuerung 214, Takt-Push-Ablaufsteuerung 216 etc.) wird diese Hürde aufgelöst durch ein Ermöglichen von Taktversatzzeit-Ablaufsteuerungsänderungen, um sich durch das Design fortzupflanzen, bis ein steter Zustand erreicht worden ist.
-
In der veranschaulichten Ausführungsform kann das System 200 die resultierende Taktversatzzeit-Ablaufsteuerungen 208 nach einer Anzahl von Iterationen der Takt-Pull-Ablaufsteuerung 214/Takt-Push-Ablaufsteuerung 216, des Timing-Modell-Erzeugers 218, des inkrementellen Latenz-Einstellers 219, Schleife erzeugen. In einigen Ausführungsformen können diese Taktversatzzeit-Ablaufsteuerungen 208 für eine weitere Stufe in dem digitalen Schaltungsdesignvorgang vorgesehen sein.
-
In einer solchen Ausführungsform kann die weitere Stufe (und System 200) einen Takt-Ausblend- und/oder Versatzzeitpuffer-Einsteller 220 aufweisen. In einigen Ausführungsformen können der Takt-Ausblend- und/oder der Versatzzeitpuffer-Einsteller 220 konfiguriert sein, um das digitale Schaltungsmodell 202 und Taktversatzzeit-Ablaufsteuerungen 208 als eine Eingabe herzunehmen und verschiedene Schaltungen (Skew-Puffer, Clock-Gater etc.) innerhalb des digitalen Schaltungsmodells 202 einzustellen, um die Timing-Änderungen, welche durch das System 200 bestimmt werden, zu beeinflussen. Es wird verstanden, dass Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
In verschiedenen Ausführungsformen kann die weitere Stufe einen statischen und/oder dynamischen Timing-Auswerter 230 aufweisen. In solch einer Ausführungsform kann der statische und/oder dynamische Timing-Auswerter 230 konfiguriert sein, um eine statische und/oder dynamische Timing-Analyse an dem digitalen Schaltungsmodell 202, welchem die Taktversatzzeit-Ablaufsteuerungen 208 gegeben sind, durchzuführen. In solch einer Ausführungsform kann während einer physikalischen Synthese und/oder Timing-Optimierung ein Anwenden der Taktversatzzeit-Ablaufsteuerungen 208 das digitale Schaltungsmodell 202 auf einem solchen Weg „aufschütteln”, dass das Timing-Modell in einer wünschenswerten Art und Weise konvergiert. Der statische und/oder dynamische Timing-Auswerter 230 kann ein physikalisches Schaltungsmodell 292 erzeugen, welches nicht nur die funktionalen Charakteristiken der Schaltung sondern auch die physikalischen Charakteristiken der Schaltung repräsentiert.
-
3 ist ein Flussdiagramm einer beispielhaften Ausführungsform einer Technik 300 in Übereinstimmung mit dem offenbarten Gegenstand. In verschiedenen Ausführungsformen kann die Technik 300 durch die Systeme wie beispielsweise diejenigen der 1, 2 oder 4 verwendet oder erzeugt werden. Trotzdem wird es verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist. Es wird verstanden, dass der offenbarte Gegenstand nicht auf die Reihenfolge oder eine Anzahl von Aktionen bzw. Tätigkeiten, welche durch die Technik 300 veranschaulicht sind, beschränkt ist.
-
Block 302 veranschaulicht, dass in einer Ausführungsform ein oder mehrere Konfigurationsparameter definiert werden können, wie obenstehend beschrieben ist. In verschiedenen Ausführungsformen können die Konfigurationsparameter eine maximale Push-Grenze, eine maximale Pull-Grenze, eine Push-Schrittgröße, eine Pull-Schrittgröße und/oder einen Slack-Grenzwert-zu-Versatzzeit-Wert, wie obenstehend beschrieben, aufweisen. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
Block 304 veranschaulicht, dass in einer Ausführungsform das System (beispielsweise System 200 der 2) durch jeden Endpunkt durchlaufen bzw. durchqueren kann und Pull-Kandidaten und Push-Kandidaten, wie obenstehend beschrieben, bestimmen kann. In verschiedenen Ausführungsformen kann ein Push-Kandidat einen Endpunkt aufweisen, welcher einen Front-Slack weniger als seinen Back-Slack, einen Front-Slack, welcher negativ ist, und den Front-Slack schlimmer als der Slack-Grenzwert-zu-Versatzzeit-Wert, wie obenstehend beschrieben aufweist. In verschiedenen Ausführungsformen kann ein Pull-Kandidat einen Endpunkt aufweisen, welcher einen Front-Slack größer als seinen Back-Slack, einen Back-Slack, welcher negativ ist, und den Back-Slack schlimmer als der Slack-Grenzwert-zu-Versatzzeit-Wert, wie obenstehend beschrieben aufweist. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
Block 306 veranschaulicht, dass in einer Ausführungsform das System (beispielsweise System 200 der 2 etc.) durch jeden Pull-Kandidaten hindurchlaufen kann und eine quantisierte Pull-Einstellung auf die Taktversatzzeit-Ablaufsteuerung, wie obenstehend beschrieben, anwenden kann. In einer solchen Ausführungsform kann die quantisierte Pull-Einstellung für die Taktversatzzeit-Ablaufsteuerung durch den Pull-Schrittgrößen-Parameter, wie obenstehend beschrieben, diktiert werden. In einer Ausführungsform kann die Pull-Einstellung, wie in dem Pseudocode, welcher obenstehend beschrieben ist, gezeigt berechnet werden.
-
Block 307 veranschaulicht, dass in einer Ausführungsform das Timing-Modell basierend auf den Pull-Einstellungen aktualisiert werden kann. In einer anderen Ausführungsform kann Block 307 in der Technik 300 nicht enthalten sein. In einer solchen Ausführungsform kann das Timing-Modell nur einmal für jede Iteration aktualisiert werden. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
Block 308 veranschaulicht, dass in einer Ausführungsform das System (beispielsweise System 200 der 2 etc.) durch jeden Push-Kandidaten hindurchlaufen kann und eine quantisierte Push-Einstellung auf die Taktversatzzeit-Ablaufsteuerung, wie obenstehend beschrieben, anwenden kann. In einer solchen Ausführungsform kann die quantisierte Push-Einstellung für die Taktversatzzeit-Ablaufsteuerung durch den Push-Schrittgrößen-Parameter, wie obenstehend beschrieben, diktiert werden. In einer Ausführungsform kann die Push-Einstellung, wie in dem Pseudocode, welcher obenstehend beschrieben ist, gezeigt berechnet werden.
-
Block 309 veranschaulicht, dass in einer Ausführungsform das Timing-Modell basierend auf den Push-Einstellungen aktualisiert werden kann. In einer anderen Ausführungsform kann Block 309 basierend sowohl auf den Push-Einstellungen als auch den Pull-Einstellungen durchgeführt werden. In einer solchen Ausführungsform kann das Timing-Modell nur einmal für jede Iteration aktualisiert werden. Es wird verstanden, dass das Obige lediglich ein veranschaulichendes Beispiel ist, auf welches der offenbarte Gegenstand nicht beschränkt ist.
-
Block 310 veranschaulicht, dass in einer Ausführungsform der Vorgang eine Anzahl von Malen, wie obenstehend beschrieben, wiederholt werden kann. In einer solchen Ausführungsform können die Slacks von mehrfachen Pipelinestufen eingestellt werden, wie obenstehend beschrieben ist. In verschiedenen Ausführungsformen kann durch ein dynamisches Ausborgen von Zeit von nachfolgenden Multistufen der iterative Vorgang von Block 310 eine Multistufen-Vorausschau-Ablaufsteuerung, wie obenstehend beschrieben, beeinflussen.
-
Block 312 veranschaulicht, dass in einer Ausführungsform eine physikalische Synthese und/oder eine Timing-Optimierung, wie obenstehend beschrieben, ausgeführt werden kann. In einer solchen Ausführungsform kann dies eine gleichzeitige Ablaufsteuerung und Datenpfadoptimierung, wie obenstehend beschrieben, erlauben. Block 314 veranschaulicht, dass in einer Ausführungsform die Technik 300 eine Anzahl von Malen, wie obenstehend beschrieben, wiederholt werden kann. In verschiedenen Ausführungsformen kann dies das digitale Schaltungsmodell 202 in solch einem Wege „aufschütteln”, dass die Zeit in einer gewünschten Art und Weise konvergiert.
-
4 ist ein schematisches Blockschaltbild eines Informationsverarbeitungssystems 400, welches Halbleitervorrichtungen aufweisen kann, welche gemäß Prinzipien des offenbarten Gegenstandes gebildet sind.
-
Bezug nehmend auf 4 kann ein Informationsverarbeitungssystem 400 ein oder mehrere Vorrichtungen aufweisen, welche gemäß den Prinzipien des offenbarten Gegenstandes konstruiert sind. In einer anderen Ausführungsform kann das Informationsverarbeitungssystem 400 ein oder mehrere Techniken gemäß den Prinzipien des offenbarten Gegenstandes einsetzen oder ausführen.
-
In verschiedenen Ausführungsformen kann das Informationsverarbeitungssystem 400 eine Computervorrichtung, wie beispielsweise einen Laptop, einen Desktop, eine Workstation, einen Server, eine Blade-Server, einen persönlichen digitalen Assistenten, ein Smartphone, ein Tablet oder andere geeignete Computer etc. oder eine virtuelle Maschine oder eine virtuelle Computervorrichtung davon aufweisen. In verschiedenen Ausführungsformen kann das Informationsverarbeitungssystem 400 durch einen Verwender bzw. Nutzer verwendet werden (nicht gezeigt).
-
Das Informationsverarbeitungssystem 400 gemäß dem offenbarten Gegenstand kann weiterhin eine zentrale Verarbeitungseinheit (CPU = Central Processing Unit = Zentrale Verarbeitungseinheit), eine Logik oder einen Prozessor 410 aufweisen. In einigen Ausführungsformen kann der Prozessor 410 einen oder mehrere funktionale Einheitsblöcke (FUBs = Functional Unit Blocks = funktionale Einheitsblöcke) oder Kombinationslogikblöcke (CLBs = Combinational Logic Blocks = Kombinationslogikblöcke) 415 aufweisen. In solch einer Ausführungsform kann ein Kombinationslogikblock verschiedene Bool'sche Logik-Operationen (beispielsweise NAND, NOR, NOT, XOR etc.) Stabilisier-Logikvorrichtungen (beispielsweise Flip-Flops, Latches etc.), andere Logikvorrichtungen oder eine Kombination davon aufweisen. Diese Kombinationslogik-Operationen können in einer einfachen oder komplexen Art und Weise konfiguriert sein, um Eingangssignale zu verarbeiten, um ein erwünschtes Ergebnis zu erreichen. Es wird verstanden, dass während einige veranschaulichende Beispiele von synchronen Kombinationslogik-Operationen beschrieben sind, der offenbarte Gegenstand nicht so beschränkt ist, und asynchrone Operationen oder eine Mischung davon aufweisen kann. In einer Ausführungsform können die Kombinationslogik-Operationen eine Mehrzahl von Komplementär-Metalloxid-Halbleiter(CMOS = Complementary Metalloxyde Semiconductors)-Transistoren aufweisen. In verschiedenen Ausführungsformen können diese CMOS-Transistoren in Gates bzw. Gattern angeordnet sein, welche die Logik-Operationen durchführen; trotzdem wird verstanden, dass andere Technologien verwendet werden können und innerhalb des Umfangs des offenbarten Gegenstands sind.
-
Das Informationsverarbeitungssystem 400 gemäß dem offenbarten Gegenstand kann weiterhin einen flüchtigen Speicher 420 (beispielsweise Direktzugriffsspeicher (RAM = Random Access Memory = Direktzugriffsspeicher) etc.) aufweisen. Das Informationsverarbeitungssystem 400 gemäß dem offenbarten Gegenstand kann weiterhin einen nichtflüchtigen Speicher 430 (beispielsweise eine Festplatte, einen optischen Speicher, einen NAND- oder Flashsspeicher etc.) aufweisen. In einigen Ausführungsformen kann auf entweder den flüchtigen Speicher 420, den nichtflüchtigen Speicher 430 oder eine Kombination oder Abschnitte davon Bezug genommen werden als ein „Speichermedium”. In verschiedenen Ausführungsformen können der flüchtige Speicher 420 und/oder der nichtflüchtige Speicher 430 konfiguriert sein, um Daten in einer semipermanenten oder im Wesentlichen permanenten Form zu speichern.
-
In verschiedenen Ausführungsformen kann das Informationsverarbeitungssystem 400 ein oder mehrere Netzwerkschnittstellen 440 aufweisen, welche konfiguriert sind, um es dem Informationsverarbeitungssystem 400 zu erlauben, Teil zu sein von und zu kommunizieren über ein Kommunikationsnetzwerk. Beispiele eines Wi-Fi-Protokolls können aufweisen, sind jedoch nicht beschränkt auf Institute of Electrical and Electronics Engineers (IEEE) 802.11g, IEEE 802.11n, etc. Beispiele eines Zellprotokolls (cellular protocol) können aufweisen, sind jedoch nicht beschränkt auf: IEEE 802.16m (auch bekannt als Wireless-MAN (Metropolitan Area Network) Advanced), Long Term Evolution (LTE) Advanced), Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution (EDGE), Evolved High-Speed Packet Access (HSPA+), etc. Beispiele eines verdrahteten Protokolls können aufweisen, sind jedoch nicht beschränkt auf IEEE 802.3 (auch bekannt als Ethernet), Fibre Channel, Power Line communication (e. g., HomePlug, IEEE 1901, etc.), etc. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
Das Informationsverarbeitungssystem 400 gemäß dem offenbarten Gegenstand kann weiterhin eine Verwenderschnittstelleneinheit 450 (beispielsweise einen Anzeigeadapter, eine haptische Schnittstelle, eine menschliche Schnittstellenvorrichtung etc. (Human Interface Device)) aufweisen. In verschiedenen Ausführungsformen kann diese Verwenderschnittstelleneinheit 450 konfiguriert sein, um entweder eine Eingabe von einem Verwender zu empfangen und/oder eine Ausgabe an einen Verwender vorzusehen. Andere Arten von Vorrichtungen können verwendet werden, um eine Interaktion mit einem Verwender bzw. Nutzer ebenso vorzusehen; beispielsweise kann eine Rückkopplung bzw. ein Feedback, welches für den Nutzer vorgesehen ist, eine beliebige Form von Sensorenrückkopplung bzw. Rückmeldung, beispielsweise visuelle Rückmeldung, hörbare Rückmeldung oder fühlbare Rückmeldung sein; und eine Eingabe von dem Nutzer kann in einer beliebigen Form einschließlich akustisch, Sprache oder einer fühlbaren Eingabe empfangen werden.
-
In verschiedenen Ausführungsformen kann das Informationsverarbeitungssystem 400 ein oder mehrere Vorrichtungen oder Hardwarekomponenten 460 (beispielsweise eine Anzeige oder einen Monitor), eine Tastatur, eine Maus, eine Kamera, einen Fingeabdrucklaser, einen Videoprozessor etc.) aufweisen. Es wird verstanden, dass das Obige lediglich einige veranschaulichende Beispiele sind, auf welche der offenbarte Gegenstand nicht beschränkt ist.
-
Das Informationsverarbeitungssystem 400 gemäß dem offenbarten Gegenstand kann weiterhin einen oder mehrere Systembusse 405 aufweisen. In solch einer Ausführungsform kann der Systembus 405 konfiguriert sein, um den Prozessor 410, den flüchtigen Speicher 420, den nichtflüchtigen Speicher 430, die Netzwerkschnittstelle 440, die Verwenderschnittstelleneinheit 450 und eine oder mehrere Hardwarekomponenten 460 kommunikativ zu koppeln. Daten, welche durch den Prozessor 410 verarbeitet werden, oder Daten, welche von außerhalb des nichtflüchtigen Speichers 430 zugeführt werden, können in entweder dem nichtflüchtigen Speicher 430 oder dem flüchtigen Speicher 420 gespeichert werden.
-
In verschiedenen Ausführungsformen kann das Informationsverarbeitungssystem 400 eine oder mehrere Softwarekomponenten 470 aufweisen oder ausführen. In einigen Ausführungsformen können die Softwarekomponenten ein Betriebssystem (OS = Operating System = Betriebssystem) und/oder eine Anwendung aufweisen. In einigen Ausführungsformen kann das OS konfiguriert sein, um ein oder mehrere Dienste für eine Anwendung vorzusehen und zu verwalten, oder als ein Zwischenglied zwischen der Anwendung und den verschiedenen Hardwarekomponenten (beispielsweise dem Prozessor 410, einer Netzwerkschnittstelle 440 etc.) des Informationsverarbeitungssystems 400 zu agieren. In solch einer Ausführungsform kann das Informationsverarbeitungssystem 400 ein oder mehrere native Anwendungen aufweisen, welche lokal installiert sein können (beispielsweise innerhalb des nichtflüchtigen Speichers 430) und konfiguriert sein, um direkt durch den Prozessor 410 ausgeführt zu werden und direkt mit dem OS zu interagieren. In solch einer Ausführungsform können die nativen Anwendungen vor-kompilierten maschinenausführbaren Code aufweisen. In einigen Ausführungsformen können die nativen Anwendungen einen Skript-Interpretierer (script interpreter), beispielsweise C-Shell (csh), AppleScript, AutoHotkey etc. oder eine virtuelle Ausführungsmaschine (VM = Virtual Machine = Virtuelle Maschine) (beispielsweise die Java Virtual Machine, die Microsoft Common Language Runtime etc.) aufweisen, welche konfiguriert sind, um Quell- oder Objekt-Code in ausführbaren Code zu übersetzen, der dann durch den Prozessor 410 ausgeführt wird.
-
Die Halbleitervorrichtungen, welche obenstehend beschrieben sind, können unter Verwendung verschiedener Einhausungstechniken bzw. Packaging-Techniken gekapselt sein. Beispielsweise können Halbleitervorrichtungen, welche gemäß Prinzipien des offenbarten Gegenstandes konstruiert sind, eingekapselt sein unter Verwendung einer beliebigen einen einer Package-on-Package(POP)-Technik, einer Ball Grid Arrays(BGAs)-Technik, einer Chip Scale Packages(CSPs)-Technik, einer Plastic Leaded Chip Carrier(PLCC)-Technik, einer Plastic Dual In-Line Package(PDIP)-Technik, einer Die In Waffle Pack-Technik, einer Die In Wafer Form-Technik, einer Chip On Board(COB)-Technik, einer Ceramic Cual In-Line Package(CERDIP)-Technik, einer Plastic Metric Quad Flat Package(PMQFP)-Technik, einer Plastic Quad Flat Package(PQFP)-Technik, einer Small Outline Package(SOIC)-Technik, einer Shrink Small Outline Package(SSOP)-Technik, einer Thin Small Outline Package(TSOP)-Technik, einer Thin Quad Flat Package(TQFP)-Technik, einer System In Package(SIP)-Technik, einer Multi-Chip Package(MCP)-Technik, einer Wafer-Level Fabricated Package(WFP)-Technik, einer Wafer-Level Processed Stack Package(WSP)-Technik, oder einer anderen Technik, wie sie Fachleuten bekannt sein wird.
-
Verfahrensschritte können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, welche ein Computerprogramm ausführen, um Funktionen durch ein Arbeiten auf Eingangsdaten und ein Erzeugen von Ausgaben durchzuführen. Verfahrensschritte können auch durchgeführt werden durch, und eine Vorrichtung kann implementiert sein als, eine Spezialzweck-Logikschaltung, beispielsweise ein FPGA (Field-Programmable Gate Array = feldprogrammierbares Gate-Array) oder eine ASIC (Application Specific Integrated Circuit = anwendungsspezifische integrierte Schaltung).
-
In verschiedenen Ausführungsformen kann ein computerlesbares Medium Befehle aufweisen, welche, wenn sie ausgeführt werden, eine Vorrichtung veranlassen, wenigstens einen Teil der Verfahrensschritte durchzuführen. In einigen Ausführungsformen kann das computerlesbare Medium in einem magnetischen Medium, einem optischen Medium oder einem anderen Medium oder einer Kombination davon (beispielsweise CD-ROM, Festplatte, Lesespeicher, Flashlaufwerk etc.) enthalten sein. In solch einer Ausführungsform kann das computerlesbare Medium ein greifbarer und nicht-vorübergehend ausgeführter Herstellungs- bzw. Handwerksartikel sein.
-
Während die Prinzipien des offenbarten Gegenstands unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben worden sind, wird es Fachleuten offensichtlich sein, dass verschiedene Änderungen und Abwandlungen daran getätigt werden können, ohne von dem Gedanken und Umfang dieser offenbarten Konzepte abzuweichen. Demnach sollte es verstanden werden, dass die obigen Ausführungsformen nicht beschränkend sind, sondern nur veranschaulichend sind. Demnach muss der Umfang der offenbartem Konzepte durch die breitest zulässige Interpretation der folgenden Ansprüche und deren Äquivalente bestimmt werden und sollte nicht durch die vorangehende Beschreibung eingeschränkt bzw. begrenzt sein. Es ist demnach zu verstehen, dass die beigefügten Ansprüche vorgesehen sind, um all solche Abwandlungen und Änderungen zu umfassen, wie sie innerhalb des Umfangs der Ausführungsformen fallen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- (IEEE) 802.11g [0085]
- IEEE 802.11n [0085]
- IEEE 802.16m [0085]
- IEEE 802.3 [0085]
- IEEE 1901 [0085]