DE112019004358T5 - Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen - Google Patents

Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen Download PDF

Info

Publication number
DE112019004358T5
DE112019004358T5 DE112019004358.7T DE112019004358T DE112019004358T5 DE 112019004358 T5 DE112019004358 T5 DE 112019004358T5 DE 112019004358 T DE112019004358 T DE 112019004358T DE 112019004358 T5 DE112019004358 T5 DE 112019004358T5
Authority
DE
Germany
Prior art keywords
clock
identifying
period
gate
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019004358.7T
Other languages
English (en)
Inventor
Amund Aune
Odd Magne Reitan
Vitalii Marchuk
Andreas Onsum
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of DE112019004358T5 publication Critical patent/DE112019004358T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/04Clock gating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

Systeme und Verfahren, die in dieser Offenbarung beschrieben werden, beziehen sich allgemein auf ein Analysieren elektronischer Schaltungsanordnungen und insbesondere auf ein Analysieren einer Effizienz eines Takt-Gatings in den elektronischen Schaltungsanordnungen. Die Analyse kann ein Identifizieren einer verschwendeten Verbreitung von Taktsignalen durch Takt-Gates und/oder für eine Schaltungsanordnung als Ganzes einschließen. In manchen Ausführungsformen kann eine modifizierte Gating-Logik bestimmt werden, welche die Takt-Gating-Effizienz verbessert, zum Beispiel durch Eliminieren mindestens mancher verschwendeter Verbreitungen von Taktsignalen.

Description

  • PRIORITÄTSANSPRUCH
  • Diese Anmeldung beansprucht den Nutzen der vorläufigen US-Patentanmeldung der Seriennummer 62/723.589 , eingereicht am 28. August 2018, für „Method of Clock Gate Analysis of Electronic System Designs and Related Systems, Methods and Devices“ und beansprucht den Nutzen des Einreichungsdatums der anhängigen US-Patentanmeldung der Seriennummer 16/228.445 , eingereicht am 20. Dezember 2018, für „Method of Clock Gate Analysis of Electronic System Designs and Related Systems, Methods and Devices“, welche auch die Priorität der vorläufigen US-Patentanmeldung der Serien-Nr. 62/723.589 beansprucht, deren Inhalte und Offenbarung hiermit jeweils in ihrer Gesamtheit durch Bezugnahme hierin aufgenommen werden.
  • TECHNISCHES GEBIET
  • Ausführungsformen dieser Offenbarung beziehen sich allgemein auf die Analyse von Takt-Gates in Entwürfen für elektronische Schaltungsanordnungen und in manchen Ausführungsformen insbesondere auf die Analyse von Takt-Gates, die durch Entwurfswerkzeuge für elektronische Schaltungsanordnungen in Entwürfe für elektronische Schaltungsanordnungen eingefügt werden.
  • STAND DER TECHNIK
  • Zum Entwerfen elektronischer Systeme werden üblicherweise Entwurfswerkzeuge für elektronische Schaltungsanordnungen verwendet, wie Werkzeuge für das elektronische Computer-Aided Design und die elektronische Design-Automatisierung. Zum Beispiel für Entwurf und/oder Bewertung von elektronischen Schaltungen, integrierten Schaltungen, anwendungsspezifischen integrierten Schaltungen und Leiterplatten. Die von ihnen erzeugten Entwürfe werden für viele Zwecke verwendet, einschließlich dem Herstellen von Halbleitervorrichtungen sowie dem Programmieren von Entwurfsfunktionalitäten in konfigurierbare programmierbare Logikblöcke, wie sie in feldprogrammierbaren Gate-Arrays (FPGAs) verwendet werden.
  • Vor der Herstellung oder Freigabe eines elektronischen Systems werden Entwürfe für elektronische Schaltungsanordnungen in der Regel bewertet und verifiziert. Die Bewertung und Verifizierung beinhalten in der Regel ein Durchführen einer Simulation eines Entwurfs für eine elektronische Schaltungsanordnung, um eine Funktion (oder Funktionen) eines Systems zu analysieren, - d. h. erzeugt ein System bei einem gegebenen Satz von Eingaben die erwartete Ausgabe? Zusätzlich kann eine Simulation verwendet werden, um eine Effizienz eines Systems gemäß vorab definierten Metriken zu messen, einschließlich in Bezug auf den Stromverbrauch. Beispielhaft ist ein Takten von Registern einer integrierten Schaltung, wenn keine Änderung von in diesen Registern gespeicherten Daten vorliegt, eine ineffiziente Nutzung von Leistung durch einen Entwurf für eine elektronische Schaltungsanordnung.
  • Takt-Gating ist eine Technik, die in synchronen Schaltungen verwendet wird, um die Verlustleistung zu verringern. Es spart Strom, durch Hinzufügen von Logik zu Schaltungsanordnungen (d. h. eines „Takt-Gates“), um Abschnitte der Schaltungsanordnung zu deaktivieren, so dass Takte für Flip-Flops oder andere nachgeschaltete Logik in der Schaltungsanordnung deaktiviert werden, die keine Zustände schalten oder schalten sollen. Entwurfswerkzeuge für elektronische Schaltungsanordnungen fügen manchmal tausende von Takt-Gates in einen Entwurf für eine elektronische Schaltungsanordnungen ein. Die Erfinder dieser Offenbarung verstehen nun jedoch, dass ein Takt-Gate, wenn es falsch konfiguriert ist oder wenn ein Anwendungsfall am Rande liegt, weniger Strom sparen kann als ein richtig konfiguriertes Takt-Gate oder in manchen Fällen ein Takt-Gate mehr Strom kosten kann als es spart.
  • Die Erfinder dieser Offenbarung haben eine Notwendigkeit für Verfahren zur Analyse von Takt-Gates in Entwürfen für elektronische Schaltungsanordnungen und insbesondere zur Analyse von Takt-Gates erkannt, die durch Entwurfswerkzeuge für elektronische Schaltungsanordnungen in Entwürfe für elektronische Schaltungsanordnungen eingefügt werden.
  • Figurenliste
  • Zwecke und Vorteile der Ausführungsformen der Offenbarung werden dem Durchschnittsfachmann aus der detaillierten Beschreibung in Verbindung mit den beigefügten Zeichnungen ersichtlich, einschließlich:
    • 1 zeigt einen vereinfachten Schaltplan einer elektronischen
    • Beispielschaltungsanordnung, die nicht gemäß einer oder mehreren Ausführungsformen der Offenbarung verbessert wurde.
    • 2A zeigt ein Zeitdiagramm, welches einem vorgesehenen Betrieb der elektronischen Schaltungsanordnung der 1 entspricht.
    • 2B zeigt ein Zeitdiagramm, welches einer verbesserten elektronischen Schaltungsanordnung gemäß einer oder mehreren Ausführungsformen der Offenbarung entspricht.
    • 3 zeigt einen vereinfachten Schaltplan einer verbesserten elektronischen Beispielschaltungsanordnung, welche dem Zeitdiagramm der 2B entspricht.
    • 4 zeigt einen Ablaufplan eines Takt-Gating-Analyseprozesses gemäß einer oder mehreren Ausführungsformen der Offenbarung.
    • 5 zeigt ein funktionelles Blockdiagramm einer Beispiel-Takt-Gating-Analyseeinheit gemäß einer oder mehreren Ausführungsformen der Offenbarung.
    • 6 zeigt einen Ablaufplan eines Beispiel-Kombinationslogik-Interpretationsprozesses gemäß einer oder mehreren Ausführungsformen der Offenbarung.
    • 7 zeigt einen Ablaufplan eines Beispiel-Takt-Gating-Interpretationsprozesses gemäß einer oder mehreren Ausführungsformen der Offenbarung.
    • 8 zeigt einen Ablaufplan eines Beispiel-Effizienzinterpretationsprozesses gemäß einer oder mehreren Ausführungsformen der Offenbarung.
  • ART(EN) ZUM AUSFÜHREN DER ERFINDUNG
  • In der folgenden detaillierten Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Beispielausführungsformen gezeigt sind, in denen die vorliegende Offenbarung ausgeführt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem Durchschnittsfachmann zu ermöglichen, die vorliegende Offenbarung auszuführen. Es können jedoch andere Ausführungsformen verwendet werden und Änderungen der Struktur, des Materials und des Prozesses können vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen.
  • Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens, Systems, einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zum Beschreiben der Ausführungsformen der vorliegenden Offenbarung verwendet werden. Die hierin dargestellten Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können zur Vereinfachung für den Leser die gleiche oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit in der Nummerierung bedeutet jedoch nicht, dass die Strukturen oder Komponenten notwendigerweise in Größe, Zusammensetzung, Konfiguration oder einer anderen Eigenschaft identisch sind.
  • Es versteht sich von selbst, dass die Komponenten der Ausführungsformen, wie sie hierin allgemein beschrieben und in den Zeichnungen veranschaulicht sind, in einer großen Vielfalt unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Somit soll die folgende Beschreibung verschiedener Ausführungsformen den Schutzumfang der vorliegenden Offenbarung nicht einschränken, sondern ist lediglich repräsentativ für verschiedene Ausführungsformen. Während die verschiedenen Gesichtspunkte der Ausführungsformen in Zeichnungen dargestellt werden können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich angegeben.
  • Die folgende Beschreibung kann Beispiele einschließen, um es dem Durchschnittsfachmann zu ermöglichen, die offenbarten Ausführungsformen auszuführen. Die Verwendung der Begriffe „beispielhaft“, „als Beispiel“, „zum Beispiel“, „z. B.“ und dergleichen bedeutet, dass die zugehörige Beschreibung erläuternd ist, und obwohl der Schutzumfang der Offenbarung die Beispiele und ihre rechtlichen Äquivalente umfassen soll, soll durch die Verwendung solcher Begriffe der Schutzumfang einer Ausführungsform oder dieser Offenbarung nicht auf die spezifizierten Komponenten, Schritte, Merkmale, Funktionen oder dergleichen beschränkt werden.
  • Somit sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als die einzige Möglichkeit zum Implementieren der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Elemente, Schaltungen und Funktionen können in Blockdiagrammform gezeigt sein, um die vorliegende Offenbarung nicht durch unnötige Details undeutlich werden zu lassen. Umgekehrt sind gezeigte und beschriebene spezifische Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zum Implementieren der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Außerdem sind Blockdefinitionen und die Aufteilung von Logik zwischen verschiedenen Blöcken beispielhaft für eine spezifische Implementierung. Es ist für den Durchschnittsfachmann ohne Weiteres ersichtlich, dass die vorliegende Offenbarung durch zahlreiche andere Aufteilungslösungen ausgeführt werden kann. Details bezüglich Zeitüberlegungen und dergleichen wurden größtenteils weggelassen, wenn solche Details nicht notwendig sind, um ein vollständiges Verständnis der vorliegenden Offenbarung zu erhalten, und diese innerhalb der Fähigkeiten des Durchschnittsfachmanns liegen.
  • Hierin beschriebene Informationen und Signale können unter Verwendung einer Vielfalt unterschiedlicher Technologien und Techniken dargestellt werden. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits und Symbole, auf die in dieser Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. Manche Zeichnungen können Signale zur Klarheit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es sollte für den Durchschnittsfachmann verstanden werden, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
  • Es versteht sich, dass jede Bezugnahme auf ein Element hierin unter Verwendung einer Bezeichnung wie „erste/r/s“, „zweite/r/s“ und so fort die Menge oder Reihenfolge dieser Elemente nicht einschränkt, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr werden diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet. Eine Bezugnahme auf ein erstes und zweites Element bedeutet also nicht, dass nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorhergehen muss. Ebenso kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente umfassen. Ebenso können manchmal Elemente, auf die in der Singularform Bezug genommen wird, auch eine oder mehrere Instanzen des Elements einschließen.
  • Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben werden, können mit einem Allzweckprozessor, einem Spezialprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Durchführen der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder durchgeführt werden. Ein Allzweckprozessor (der hierin auch als Host-Prozessor oder einfach als Host bezeichnet werden kann) kann ein Mikroprozessor sein, alternativ kann der Prozessor jedoch ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder Zustandsautomat sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, wie eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration implementiert sein. Ein Universalcomputer einschließlich eines Prozessors wird als Spezialcomputer angesehen, während der Universalcomputer so konfiguriert ist, dass er Rechenanweisungen (z. B. einen Softwarecode) ausführt, die sich auf Ausführungsformen der vorliegenden Offenbarung beziehen.
  • Es wird auch angemerkt, dass die Ausführungsformen in Bezug auf einen Prozess beschrieben werden können, der als ein Flussdiagramm, ein Fließschema, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Betriebsvorgänge als einen sequentiellen Prozess beschreiben kann, können viele dieser Vorgänge in einer anderen Reihenfolge, parallel oder im Wesentlichen gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Vorgänge neu angeordnet werden. Ein Prozess kann einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Unterroutine, einem Unterprogramm usw. entsprechen. Weiterhin können die hierin offenbarten Verfahren in Hardware, Software oder beiden implementiert sein. Bei Implementierung in Software können die Funktionen als eine oder mehrere Anweisungen oder ein Code auf computerlesbaren Medien gespeichert oder übertragen werden.
  • Computerlesbare Medien schließen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die den Transfer eines Computerprogramms von einem Ort zu einem anderen ermöglichen, ein.
  • Jede Charakterisierung in dieser Offenbarung von etwas als „üblich“, „herkömmlich“ oder „bekannt“ bedeutet nicht notwendigerweise, dass sie im Stand der Technik offenbart ist oder dass die erörterten Gesichtspunkte nach dem Stand der Technik anerkannt werden. Es bedeutet auch nicht notwendigerweise, dass es auf dem betreffenden Gebiet weithin bekannt oder wohlverstanden ist oder routinemäßig verwendet wird.
  • Wie hierin verwendet, ist eine „Gate-gesteuerte Vorrichtung“ eine Schaltungsanordnung innerhalb eines elektronischen Systems, welche aktiviert/deaktiviert werden kann und welche eine synchrone Schaltungsanordnung einschließt. Beispiele für synchrone Schaltungsanordnungen schließen synchrone Kombinationslogik wie Flip-Flops, ein Register und ein Latch ein. Im Fall eines Registers kann eine Gate-gesteuerte Vorrichtung Teil eines Registers sein, zum Beispiel die niedrigstwertigen Bits eines Registers (z. B. eine Teilmenge einer Anzahl von Flip-Flops, die ein Register bilden).
  • Gemäß Konvention kann eine Gate-gesteuerte Vorrichtung hierin als „angesteuert“ beschrieben werden, wenn sie einen Takt empfängt. Überdies kann ein Takt-Gate eine Gate-gesteuerte Vorrichtung oder Gruppen von Gate-gesteuerten Vorrichtungen in seiner Ausgangsauffächerung ansteuern, wenn es einen Takt verbreitet. Insbesondere kann ein erstes Takt-Gate Gate-gesteuerte Vorrichtungen in seiner Ausgangsauffächerung „ansteuern“, was jedoch nicht bedeutet, dass manche oder sogar alle solcher Gate-gesteuerter Vorrichtungen ein Taktsignal empfangen - zum Beispiel können sich ein oder mehrere Takt-Gates in einem Taktpfad zwischen einem solchen ersten Takt-Gate und verschiedenen Gate-gesteuerten Vorrichtungen befinden.
  • In manchen Fällen kann ein Takt-Gate hierin in Bezug auf einen Zustand, z. B. „geöffnet“ oder „geschlossen“, betriebsbezogen, z. B. „verbreitend“ und „nicht verbreitend“, und in Kombinationen davon beschrieben werden.
  • Wie hierin verwendet, ist ein „Takt“ ein Signal, welches zwischen einem High- und einem Low-Zustand pendelt. Oftmals ist eine Amplitude eines „High“ und eines „Low“ sowie eine Pendelfrequenz vorhersehbar, was jedoch nicht notwendigerweise immer der Fall ist. Beispielhaft kann ein Takt verwendet werden, um Handlungen eines elektronischen Systems und die Schaltungsanordnung eines elektronischen Systems zu koordinieren. In dieser Offenbarung sollte zur Konsistenz der Beschreibung angenommen werden, dass flankenausgelöste Schaltungen „von Low nach High“ oder „durch ansteigende Flanke“ ausgelöst werden, und pegelausgelöste Schaltungen sollten als „geöffnet“ angesehen werden, wenn ein Takt auf High steht. Der Durchschnittsfachmann versteht jedoch, dass eine beliebige Anzahl an Konventionen angewendet werden kann, um eine Schaltung basierend auf einem Takt auszulösen.
  • Ein Taktzyklus ist ein Zeitraum, der von einem ersten Auslöseereignis bis zu einem nächsten Auslöseereignis gemessen wird. In dem Fall der durch ansteigende Flanke ausgelösten Schaltungsanordnung dieser Offenbarung kann das nächste auslösende Ereignis die unmittelbar folgende ansteigende Flanke oder ein Vielfaches davon sein, z. B. jede zweite, jede dritte, ohne Einschränkung. Ein Zeitraum kann in Bezug auf eine Anzahl von Taktzyklen ausgedrückt werden. Zum Beispiel kann eine relevante Periode als zwei Taktzyklen lang, drei Taktzyklen lang usw. ausgedrückt werden. Eine Anzahl aufeinanderfolgender Taktzyklen, die eine Periode bilden, kann als eine Reihe von Taktzyklen beschrieben werden.
  • Übliche Entwurfswerkzeuge für elektronische Schaltungsanordnungen fügen Takt-Gates in Entwürfe für elektronische Schaltungsanordnungen ein, ohne die Verwendung zu berücksichtigen, ungeachtet dessen, dass Takt-Gates Strom verbrauchen und physischen Raum einnehmen. Entwurfswerkzeuge für elektronische Schaltungsanordnungen können ein Takt-Gate so konfigurieren, dass es eine Gate-gesteuerte Vorrichtung aus vielen möglichen Gründen deaktiviert. Entwurfswerkzeuge für elektronische Schaltungsanordnungen können ein Takt-Gate so konfigurieren, dass es eine Gate-gesteuerte Vorrichtung so steuert (wie hierin verwendet, bezieht sich das Steuern einer Gate-gesteuerten Vorrichtung sowohl auf das Aktivieren als auch das Deaktivieren einer Gate-gesteuerten Vorrichtung), dass eine Taktstabilisierung berücksichtigt wird, berücksichtigen jedoch möglicherweise andere Bedingungen nicht, wobei das Takt-Gating die Effizienz verbessern würde. Zum Beispiel ist es möglicherweise nicht effizient, wenn ein Takt-Gate einen Takt verbreitet, wenn eine Gate-gesteuerte Vorrichtung ihren Zustand nicht ändert (z. B. bei Ändern gespeicherter Informationen in dem Fall von Registern).
  • Eine oder mehrere Ausführungsformen der Offenbarung beziehen sich allgemein auf ein Verfahren zum Analysieren des Takt-Gating in einem Entwurf für eine elektronische Schaltungsanordnung. Während einer Simulation eines Entwurfs für eine elektronische Schaltungsanordnung werden für ein gegebenes Takt-Gate Zustandsänderungen in einer oder mehreren Gate-gesteuerten Vorrichtungen in einer Ausgangsauffächerung des Takt-Gates beobachtet und mit dem Betrieb des Takt-Gates verglichen - das heißt, ob das Takt-Gate den Takt verbreitet, während Gate-gesteuerte Vorrichtungen den Zustand ändern sollten, und einen Takt verbreitet, während Gate-gesteuerte Vorrichtungen den Zustand nicht ändern sollten. Wenn sich eine Verbreitungsperiode mit einer Ruheperiode (Ruheperioden) an Gate-gesteuerten Vorrichtungen überlappt (d. h. einem oder mehreren der selben Taktzyklen entspricht) und eine Änderung einer Verbreitungsperiode die Effizienz eines Entwurfs für eine elektronische Schaltungsanordnung verbessern würde, kann ein Takt-Gate mindestens teilweise basierend auf einer gewünschten Änderung einer Verbreitungsperiode rekonfiguriert werden. Anders charakterisiert, wenn Änderungen dahingehend, wann ein Takt aktiviert ist, um eine Gate-gesteuerte Vorrichtung zu erreichen, und deaktiviert ist, um eine Gate-gesteuerte Vorrichtung zu erreichen, die Effizienz eines Entwurfs für eine elektronische Schaltungsanordnung verbessern würden, dann kann die Takt-Gate-Steuerlogik mindestens teilweise basierend auf solchen Zeitsteuerungsinformationen rekonfiguriert werden.
  • Eine oder mehrere Ausführungsformen der Offenbarung beziehen sich allgemein auf einen Takt-Gate-Analysator (den „CG-Analysator“), der für eine Takt-Gating-Analyse eines Entwurfs für eine elektronische Schaltungsanordnung konfiguriert ist. Der CG-Analysator kann ein Gating-Modell erstellen, das zu einem Entwurf für eine elektronische Schaltungsanordnung gehört, erzeugt Takt-Gating-Analyseparameter, die für eine Simulation des Entwurfs für eine elektronische Schaltungsanordnung verwendbar sind, und führt während der Simulation des Entwurfs für eine elektronische Schaltungsanordnung eine Takt-Gating-Analyse durch. Der CG-Analysator kann jedes Takt-Gate in einem Entwurf für eine elektronische Schaltungsanordnung simulieren und analysieren und/oder Simulationsergebnisse eines Simulators analysieren. Der CG-Analysator kann die Ergebnisse in einem für Menschen und/oder Computer lesbaren Format ausgeben, welches Takt-Gates basierend auf Effizienzschwellenwerten identifiziert. In einer Ausführungsform kann der CG-Analysator Änderungen an einer Konfiguration analysierter Takt-Gates ausgeben, die zu einer höheren Effizienz führen würden. Der CG-Analysator kann eine Ausgabe einer Simulation eines Entwurfs für eine elektronische Schaltungsanordnung, welcher rekonfigurierte Takt-Gates aufweist, mit einer Ausgabe einer Simulation eines ursprünglichen Entwurfs für eine elektronische Schaltungsanordnung vergleichen, um zu verifizieren, dass sich ein Entwurf für eine elektronische Schaltungsanordnung mit einer rekonfigurierten Takt-Gate/Takt-Gating-Logik nicht anders verhält.
  • Nun wird unter Bezugnahme auf 1, 2A, 2B und 3 eine Beispiel-Takt-Gating-Analyse gemäß einer oder mehreren Ausführungsformen der Offenbarung beschrieben.
  • 1 zeigt einen vereinfachten Schaltplan einer elektronischen Beispielschaltungsanordnung 100, die nicht gemäß einer oder mehreren Ausführungsformen der Offenbarung verbessert wurde und die eine vollständige elektronische Schaltungsanordnung oder ein Teil eines größeren, komplexeren elektronischen Systems sein kann. Die Schaltung 100 schließt ein Takt-Gate 102, ein N-Bit-Register 104 und eine Gate-gesteuerte Vorrichtung 108 ein (welche ebenfalls ein N-Bit-Register ist und hierin manchmal als „N-Bit-Register 108“ bezeichnet werden kann). Eine Kombinationslogik-Cloud 110 ist operativ mit einem Eingang des N-Bit-Registers 104 gekoppelt, und eine andere Kombinationslogik-Cloud 106 ist operativ zwischen dem N-Bit-Register 104 und dem N-Bit-Register 108 gekoppelt. Das N-Bit-Register 108 kann als eine Gate-gesteuerte Vorrichtung angesehen werden und Flip-Flops, welche das N-Bit-Register 108 bilden, können jeweils einzeln als eine Gate-gesteuerte Vorrichtung angesehen werden.
  • Auch zwischen dem N-Bit-Register 104 und dem N-Bit-Register 108 sind eine Gating-Logik 114 und ein Takt-Gate 102 operativ gekoppelt. Das Takt-Gate 102 ist außerdem operativ mit einem Haupttakt gekoppelt, der einen Takt 112 für die Schaltung 100 liefert. Das Takt-Gate 102 ist so konfiguriert, dass es an einem oder mehreren Eingängen eine Aktivierung 116, die durch die Gating-Logik 114 geliefert wird, und den Takt 112 empfängt, der durch den Haupttakt geliefert wird. Das Takt-Gate 102 ist so konfiguriert, dass es einen aktivierten Takt 118 an das N-Bit-Register 108 liefert. In einer vorgesehenen Operation ist das Takt-Gate 102 so konfiguriert, dass es in Reaktion auf die Aktivierung 116 und/oder den Takt 112 zwischen Verbreitungs- und Gating-Modus umschaltet, wobei das Takt-Gate 102 während eines Verbreitungsmodus den Takt 112 verbreitet und während eines Gate-Modus den Takt 112 ausblendet, d. h. das Takt-Gate 102 verbreitet den Takt 112 während des Gate-Modus nicht. Insbesondere ist das Takt-Gate 102 ein vereinfachtes Blockdiagramm eines Takt-Gate gemäß Ausführungsformen dieser Offenbarung. Übliche Elemente wie Flip-Flops, UND-Gates und andere Kombinationslogik werden in der Erörterung und in den Figuren für Takt-Gates in dieser Offenbarung nicht notwendigerweise erwähnt, um jedoch Zweifel zu vermeiden, soll „Takt-Gate“, wie hierin verwendet, alle Einrichtungen für Takt-Gates und rechtliche Äquivalente davon einschließen, selbst wenn bestimmte Elemente nicht erwähnt werden.
  • Das Takt-Gate 102 ist so konfiguriert, dass es den aktivierten Takt 118 an eine oder mehrere Gate-gesteuerte Vorrichtungen in seiner Ausgangsauffächerung liefert, einschließlich des N-Bit-Registers 108. Das N-Bit-Register 108 ist operativ mit dem Takt-Gate 102 derart gekoppelt, dass einzelne Registerelemente (z. B. Flip-Flops) durch den aktivierten Takt 118 getaktet werden können. Ein erster Bus 120 ist operativ zwischen der Rechenlogik 106 und dem N-Bit-Register 108 gekoppelt und liefert Daten an das N-Bit-Register 108. Zusätzliche Busse können operativ zwischen einem Ausgang des N-Bit-Registers 108 und der Schaltungsanordnung 100 nachgeschalteten Elementen gekoppelt sein und dafür konfiguriert sein, Informationen zu übertragen. Ein zweiter Bus (z. B. ein zweiter Bus 122) ist operativ zwischen dem N-Bit-Register 108 und jeglicher nachgeschalteten Schaltung gekoppelt gezeigt.
  • 2A zeigt ein Beispielzeitdiagramm 200, welches einer vorgesehenen Operation der Schaltungsanordnung 100 entspricht, gemäß einer oder mehreren Ausführungsformen der Offenbarung. Gezeigt sind Signale für den Takt 112, die Takt-Gate-Aktivierung 116 und den aktivierten Takt 118. Ebenfalls gezeigt sind Registereingabe 124 und Registerausgabe 126. Taktzyklen sind entlang einer Achse des Zeitdiagramms 200 gezeigt (d. h. Zyklus0 bis ZyklusN). Diese Markierungen sind an ansteigenden Flanken des Takts 112 ausgerichtet und bezeichnen einen Beginn eines angegebenen Taktzyklus und ein Ende eines vorhergehenden Taktzyklus.
  • Allgemein wird Aktivität entlang eines Datenpfads (z. B. Logik 110, N-Bit-Register 104, Logik 106, N-Bit-Register 108 usw.) beobachtet und verwendet, um den Taktpfad (z. B. aktivierter Takt 118) zu konfigurieren.
  • In einer oder mehreren Ausführungsformen kann die Registerausgabe 126, die einem Signal auf dem Bus 122 entspricht, beobachtet werden, um zu bestimmen, wann das N-Bit-Register 108 aktiv und inaktiv ist. Eine Aktivität kann als Reaktion auf erfasste Zustandsänderungen an der Registerausgabe 126 über eine Anzahl von Taktzyklen erfasst werden. Beispielhaft kann der Bus 122 operativ mit einem Ausgang des N-Bit-Registers 108 gekoppelt sein und Zustandsänderungen, die mindestens teilweise auf der Registerausgabe 126 basieren, können an dem Bus 122 beobachtet werden.
  • Die Registereingabe 124 entspricht einem Signal auf dem Bus 120 und wird zu Informationszwecken gezeigt, wird aber nicht notwendigerweise verwendet, um eine Aktivität an dem N-Bit-Register 108 zu erfassen. Lediglich zur Erläuterung wird die Registereingabe 124 nicht zur Takt-Gating-Analyse verwendet, da bei geöffnetem Takt-Gate eine Eingabe und eine Ausgabe eines Registers in relevanten Fällen identisch sind (oder werden). Wenn ein Takt-Gate geschlossen ist, könnte sich eine Registereingabe von einer Registerausgabe unterscheiden.
  • Der aktivierte Takt 118 ist während einer Verbreitungsperiode 202 aktiv, die dadurch definiert ist, dass die Aktivierung 116 gesetzt ist (z. B. auf High steht). Während der Verbreitungsperiode 202 sind der aktivierte Takt 118 und der Takt 112 im Wesentlichen gleich, obwohl es manchmal eine geringe Verbreitungsverzögerung geben kann. Eine Gating-Periode 204 folgt der Verbreitungsperiode 202 und ist dadurch definiert, dass die Aktivierung 116 nicht gesetzt ist (z. B. auf Low steht). Einen Taktzyklus nach dem Beginn der Gating-Periode 204 wird der aktivierte Takt 118 inaktiv, und der aktivierte Takt 118 ist für eine gleiche Anzahl an Taktzyklen (eins) wie eine Länge der Gating-Periode 204 inaktiv.
  • Nun insbesondere zur Registerausgabe 126 zurückkehrend, befindet sich die Registerausgabe 126 nach der Aktivität 212 (in diesem Beispiel einem Wechsel von einem Signal „a“ zu einem Signal „b“), in einer Ruheperiode 214, in welcher dem N-Bit-Register 108 keine Aktivität zugeordnet ist (z. B. ändern sich keine Informationen an den Ausgaben dieser Gate-gesteuerten Vorrichtungen, das Register 108 behält die Eingabe „b“, wird aber nicht für die Eingabe „c“ getaktet), und so kann das N-Bit-Register 108 bis zu einer zweiten Aktivität 218 auch als in der Ruheperiode 214 (die auch als eine „statische“ Periode gekennzeichnet werden kann) befindlich gekennzeichnet werden. Um eine Aktivität an der Registerausgabe 126 zu erfassen, kann ein Zustand bei jedem Taktzyklus beobachtet und dann mit dem Zustand des vorherigen Taktzyklus verglichen werden. Zum Beispiel kann der Zustand 212 in dem Zyklus3 mit dem Zustand 210 in dem Zyklus2 verglichen werden und ein geänderter Zustand kann in Reaktion auf das Erfassen eines Unterschieds zwischen dem Zustand 212 und dem Zustand 210 erfasst werden.
  • Somit ist ein Teil der Verbreitungsperiode 202, der mit der Ruheperiode 214 überlappt, möglicherweise eine verschwendete Verbreitungszeit und eine Möglichkeit zum Verbessern des Betriebs des Takt-Gate 102. Eine Takt-Gating-Logik kann basierend auf der verschwendeten Verbreitungszeit konfiguriert werden. Diese und andere verschwendete Verbreitungszeiten können aufgezeichnet werden, zum Beispiel können Taktzyklen, die Start- und Endzeiten verschwendeter Verbreitungszeiten zugeordnet sind, beobachtet und gespeichert werden.
  • 2B zeigt ein Zeitdiagramm 230, welches einer verbesserten Schaltungsanordnung 300 (siehe 3) entspricht, die basierend auf der in dieser Offenbarung beschriebenen Takt-Gating-Analyse erzeugt werden kann (oder für die ein Entwurf erzeugt werden kann). 2B zeigt ein Beispiel eines vorgesehenen Betriebs einer verbesserten Schaltungsanordnung 300 und wie dieser vorgesehene Betrieb eine Verbesserung gegenüber einer Schaltungsanordnung 100 vor dem Verbessern ist. Gezeigt sind Signale für einen Takt 312, eine Taktaktivierung 316 und einen aktivierten Takt 318. Gezeigt sind auch Busse 320 und 322, welche in dem in 2B gezeigten Beispiel beobachtet werden, um eine Registereingabe 324 und eine Registerausgabe 326 zu bestimmen, wobei die Registereingabe 324 einem Signal auf dem Bus 320 entspricht und die Registerausgabe 326 einem Signal auf dem Bus 322 entspricht.
  • Bezug nehmend auf die Taktaktivierung 316, gibt es eine kurze Verbreitungsperiode 232, gefolgt von einer Gating-Periode 234 und dann einer weiteren kurzen Verbreitungsperiode 236. Aufgrund einer modifizierten Gating-Logik 314, welche im Zusammenhang mit 3 weiter beschrieben wird und welche die Aktivierung 316 an das Takt-Gate 302 liefert, entspricht die Gating-Periode 234 verglichen mit der Gating-Periode 204 und der Ruheperiode 214 mehr der Ruheperiode 250 der Registerausgabe 326. Insbesondere wird der Taktzyklus 240 des aktivierten Takts 318 verbreitet, aber während der Ruheperiode 250 werden keine anderen Taktzyklen des Takts 312 verbreitet, verglichen mit dem in 2A gezeigten Zeitdiagramm 200, in dem während der Ruheperiode 214 zwei Taktzyklen verbreitet werden. Ebenfalls insbesondere wird bei dem Beispiel, das in 2A und 2B gezeigt ist, der Signalwechsel von „b“ nach „c“ an der Registereingabe 324 durch die Takt-Gate-Logik 314, welche eine Logik 314-1 und eine Logik 314-2 umfasst, für die Gating-Periode 234 gezielt unterdrückt.
  • Es kann eine Konsistenzprüfung durchgeführt werden, welche zeigt, dass die Aktivität der Registereingabe 124 und der Registerausgabe 126 für die Gating-Logik 114 der Schaltungsanordnung 100 dieselbe ist wie die der Registereingabe 324 und der Registerausgabe 326 für die modifizierte Gating-Logik 314 der verbesserten Schaltungsanordnung 300. Zum Beispiel können Zustandsänderungen an der Registerausgabe 126 für entsprechende Taktzyklen beobachtet und als konsistent mit Zustandsänderungen an der Registerausgabe 326 bestimmt werden, und somit ist ein vorgesehener Betrieb der verbesserten Schaltungsanordnung 300 mit einem vorgesehenen Betrieb der Schaltungsanordnung 100 konsistent.
  • 3 zeigt einen vereinfachten Schaltplan einer verbesserten Beispielschaltungsanordnung 300 gemäß einer oder mehreren Ausführungsformen der Offenbarung. Insbesondere ist die verbesserte Schaltungsanordnung 300 ein Beispiel einer verallgemeinerten Schaltungsanordnung, die basierend auf einer Takt-Gating-Analyse dieser Offenbarung erzeugt werden kann. Der Durchschnittsfachmann versteht, dass viele andere Schaltungsanordnungen verwendet werden können, um eine ähnliche Verbesserung der Takt-Gating-Effizienz von der Schaltungsanordnung 100 zu der verbesserten Schaltungsanordnung 300 zu erreichen.
  • Die verbesserte Schaltungsanordnung 300 schließt die modifizierte Gating-Logik 314 ein, welche die Aktivierung 316 liefert und für die Unterschiede zwischen den in 2A und 2B gezeigten Gating-Perioden und Verbreitungsperioden verantwortlich ist. Insbesondere ist die modifizierte Gating-Logik 314 in einem vereinfachten Format veranschaulicht und umfasst die Logik 314-1 und die Logik 314-2. Die Logik 314-2 ist ein XOR-Gate, welches dafür konfiguriert ist, eine „1“ auszugeben, wenn eines der Eingabesignale in das N-Bit-Register 308 von einem entsprechenden Ausgabesignal des N-Bit-Registers 308 verschieden ist, und eine „0“ auszugeben, wenn alle Eingabesignale in das N-Bit-Register 308 gleich einem entsprechenden Ausgabesignal des N-Bit-Registers 308 sind. Die Logik 314-1 ist die (vorherige) Gating-Logik 114 und ein UND-Gate, und das UND-Gate empfängt eine Ausgabe der Logik 314-2 und eine Ausgabe der Gating-Logik 114. Dies ist ein vereinfachtes Beispiel, um ein vorgesehenes Beispiel zu veranschaulichen, und der Durchschnittsfachmann versteht, dass es durch andere Kombinationen von Kombinationslogik dargestellt werden könnte.
  • Eine Technik zum Auswählen einer neuen Gating-Logik besteht darin, eine Exklusiv- oder(XOR)-Operation zwischen einer Dateneingabe und einer Datenausgabe eines Flip-Flops zu beobachten. Nur wenn sich eine Eingabe und eine Ausgabe unterscheiden, muss ein Takt zugeführt werden. Ein Vorteil einer solchen Technik ist es, Energie einzusparen. Jedoch können bei einem Schaltungsanordnungsentwurf viele verschiedene Überlegungen und Kombinationen von Überlegungen berücksichtigt werden, einschließlich Energieverbrauch, Zeitplanung, Signalstärke usw. Wenn zum Beispiel ein Aktivierungssignal von einem endlichen Zustandsautomaten (FSM) zugeführt wird, kann der FSM neu entworfen werden, so dass er eine Aktivierung nur zu einem Zeitpunkt ausgibt, zu dem sich ein Zustand ändert (z. B. Daten ändern).
  • Takt-Gating-Analysetechniken und Takt-Gating-Verbesserungstechniken, die in dieser Offenbarung beschrieben werden, können in Hardware, Software und Kombinationen davon implementiert werden. Darüber hinaus können sie verwendet werden, um eine elektronische Schaltung oder Teile einer elektronischen Schaltung zu analysieren, die zum Beispiel in einem konfigurierbaren Prozessor, einem feldprogrammierbaren Gate-Array oder analogen Schaltungen implementiert werden; und auch um einen Entwurf einer elektronischen Schaltung zu analysieren, wie er in einem Logik-Gate-Modell beschrieben sein kann.
  • 4 zeigt einen Ablaufplan eines Takt-Gating-Analyseprozesses 400 gemäß einer oder mehreren Ausführungsformen der Offenbarung. Bei Operation 402 werden eine Verbreitungsperiode eines Takt-Gate und eine Ruheperiode einer Gate-gesteuerten Vorrichtung identifiziert. In einer Ausführungsform kann eine Ruheperiode einer Inaktivitätsperiode an einer Gate-gesteuerten Vorrichtung entsprechen, die durch Beobachten von Busleitungen erfasst werden kann, die operativ mit einer Gate-gesteuerten Vorrichtung gekoppelt sind. Bei Operation 404 wird in Reaktion auf eine Überlappung einer Verbreitungsperiode und einer Ruheperiode eine verschwendete Taktverbreitungszeit identifiziert. Verschwendete Taktverbreitungszeit kann zum Beispiel unter Verwendung einer Startzeit und einer Stoppzeit identifiziert und aufgezeichnet werden. Insbesondere kann eine Verbreitungsperiode tatsächlich mehrere Verbreitungsperioden umfassen, und eine Ruheperiode kann mehrere Ruheperioden umfassen, so dass mehrere Überlappungsperioden und mehrere Perioden verschwendeter Verbreitungszeit identifiziert werden können. Bei Operation 406 wird die modifizierte Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungszeit konfiguriert. In manchen Fällen kann ein Takt-Gate ein bestimmtes Element in einer Standardzellenbibliothek sein, und es kann viele Arten von Takt-Gates mit unterschiedlichem Verhalten (z. B. zugeordneter Takt-Gating-Logik) geben. In einer Ausführungsform kann eine Liste von Takt-Gates und ihrem zugeordneten Verhalten verwendet werden, um in Frage kommende Takt-Gates zu identifizieren, und dann kann eine Standardzellenbibliothek nach den in Frage kommenden Takt-Gates durchsucht werden. Falls verfügbar, kann ein in Frage kommendes Takt-Gate untersucht werden, um zu sehen, ob es den Betrieb einer Schaltungsanordnung und insbesondere die Takt-Gating-Effizienz verbessert.
  • Bei Operation 408 wird eine erste Aktivität der Gate-gesteuerten Vorrichtung vor dem Konfigurieren der modifizierten Takt-Gating-Logik mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung nach dem Konfigurieren der modifizierten Takt-Gating-Logik verglichen. Bei Operation 410 werden die erste Aktivität und die zweite Aktivität als konsistent bestätigt.
  • In einer oder mehreren Ausführungsformen kann ein Takt-Gate-Analysator eine elektronische Schaltungsanordnung für alle relevanten Vorrichtungen (z. B. Takt-Gates und Gate-gesteuerte Vorrichtungen) simulieren, ohne eine Abtastperiode zu verwenden - mit anderen Worten Abtasten aller Signalisierungsänderungen. In manchen Fällen kann es jedoch zu einem Kompromiss bei der Simulationseffizienz kommen. Genauer gesagt, je komplexer eine Schaltungsanordnung in Bezug auf die Anzahl der Takt-Gates und/oder Gate-gesteuerten Vorrichtungen und je mehr Signalisierungsänderungen, die verfolgt werden, desto höher sind die Kosten an Speicherplatz (z. B. um Wellenformen zu speichern), die Verarbeitungsleistung und/oder die Simulationslaufzeit.
  • So kann in einer oder mehreren Ausführungsformen ein Takt-Gate-Analysator zuerst Takt-Gates simulieren, ohne eine spezielle Abtastperiode zu verwenden, mit anderen Worten Abtasten aller Signalisierungsänderungen. Ein Takt-Gate-Analysator kann relevante Taktfrequenzen und/oder Abtastperioden für die Simulation aller relevanten Vorrichtungen (z. B. Takt-Gates und/oder Gate-gesteuerte Vorrichtungen) basierend auf Ergebnissen der ersten Simulation bestimmen. Für alle relevanten Vorrichtungen kann eine zweite Simulation durchgeführt werden, wobei die bestimmten Frequenzen und/oder Abtastperioden verwendet werden. Insbesondere ist das Verwenden der bestimmten Abtastperiode zum Simulieren aller relevanten Vorrichtungen kostengünstiger als das Simulieren aller relevanten Gate-gesteuerten Vorrichtungen für alle Signalisierungsänderungen.
  • 5 zeigt ein Funktionsblockdiagramm einer Beispielausführungsform eines Takt-Gate-Analysators 500, der allgemein dafür konfiguriert ist, das Takt-Gating für eine elektronische Schaltungsanordnung (wie die Schaltungsanordnung 100 von 1) gemäß einer oder mehreren Ausführungsformen der Offenbarung zu analysieren. Genauer gesagt kann der Takt-Gate-Analysator 500 dafür konfiguriert sein, das Takt-Gating zu analysieren, das einem Entwurf für eine elektronische Schaltungsanordnung zugeordnet ist, zum Beispiel einer Gate-gesteuerten Logikimplementierung (z. B. einer Netzlistendatei in Verilog auf Gate-gesteuerter Ebene), die aus einem verhaltensorientierten Entwurf eines elektronischen Systems (z. B. einer System Verilog-Datei) abgeleitet wird, zum Beispiel unter Verwendung eines Compilers.
  • In dem Beispiel, das in 5 gezeigt ist, schließt der Takt-Gate-Analysator 500 allgemein einen Logik-Interpreter 502, einen Simulator 520, einen Takt-Gating-Interpreter 524, einen Simulator der vollständigen Schaltungsanordnung 528 und einen Effizienz-Interpreter 524 ein. Der Logik-Interpreter 502 kann dafür konfiguriert sein, ein Gate-Ebenen-Logikmodell 504 zu interpretieren, um Logikzellen zu identifizieren, Logikzelleninformationen zu extrahieren und Logikzelleninformationen bereitzustellen, um Logikzellen-Datensätze 506 zu bestücken.
  • Die Logikzellen-Datensätze 506 können Felder für vorab definierte Logikzellentypen einschließen, einschließlich Takt-Gates 508, Gate-gesteuerte Vorrichtungen 510 und Verbindungen 512. In einer Ausführungsform können die Logikzellen-Datensätze 506 auch Informationen über Zeitplanungselemente speichern, wie Pufferspeicher (nicht gezeigt). In einer oder mehreren Ausführungsformen kann das Gate-Ebenen-Logikmodell 504 die Verbindungsmöglichkeiten und das Verhalten von Komponenten eines Entwurfs für eine elektronische Schaltungsanordnung beschreiben. In anderen Ausführungsformen kann das Gate-Ebenen-Logikmodell 504 die Verbindungsmöglichkeiten (z. B. eine Liste von Zellen, Knoten und/oder manchen Attributen von Zellen) beschreiben, und der Interpreter 502 kann auch eine Beschreibung (z. B. Bibliotheksdateien) von Verhalten für eine oder mehrere Zellen einschließen, die in dem Gate-Ebenen-Logikmodell 504 beschrieben sind.
  • Die Verbindungsmöglichkeiten in einem Gate-Ebenen-Logikmodell 504 können eine physische Verbindung (z. B. einen Draht) oder ein Signal und einen Signalpfad (z. B. ein Signal und eine Kennung für eine verbundene Vorrichtung, die das Signal empfängt) beschreiben.
  • In einer Ausführungsform kann der Logik-Interpreter 502 eine Terminologietabelle einschließen, welche Benennungskonventionen beschreibt, die für verschiedene Arten von Logikzellen in Gate-Ebenen-Logikmodellen verwendet werden, einschließlich des Gate-Ebenen-Logikmodells 504. In einer Ausführungsform kann eine Terminologietabelle eine Standardzellenbibliothek sein oder darauf basieren. Der Logik-Interpreter 502 kann eine Terminologie verwenden, die in der Terminologietabelle beschrieben ist, um Takt-Gates, Gate-gesteuerte Vorrichtungen und Verbindungen zu identifizieren, die in dem Gate-Ebenen-Logikmodell 504 beschrieben sind, und Logikzelleninformationen 514 zu extrahieren. Die Logikzelleninformationen 514 können vollständige Module (z. B. detaillierte Unterblöcke und eine hochentwickelte Funktionalität, welche die Unterblöcke verkapselt) sowie Instanzpfade und Verdrahtungs-Alternativbezeichnungen für jedes Modul einschließen.
  • Der Logik-Interpreter 502 kann dafür konfiguriert sein, das Gate-Ebenen-Logikmodell 504 zu parsen, um Takt-Gates zu identifizieren und Verbindungsmöglichkeiten (z. B. Drähte oder Signale) von einem Taktausgang eines Takt-Gate zu jeder Gate-gesteuerten Vorrichtung zu verfolgen, die durch das Takt-Gate angesteuert wird (d. h. die Taktausgabe des Takt-Gate wird an einem Takteingang der Gate-gesteuerten Vorrichtung empfangen). Informationen über jedes Takt-Gate und jede Gate-gesteuerte Vorrichtung(en), die es ansteuert, können von dem Logik-Interpreter 502 als extrahierte Logikzelleninformationen 514 in Logikzellen-Datensätzen 506 gespeichert werden. Der Logik-Interpreter 502 kann eine Terminologie verwenden, die in einer Terminologietabelle beschrieben ist, um Takt-Gates, Gate-gesteuerte Vorrichtungen und Verbindungen zu identifizieren, die in dem Gate-Ebenen-Logikmodell 504 beschrieben sind, und um die Logikzelleninformationen 514 zu extrahieren.
  • Der Logik-Interpreter 502 speichert die Logikzellen-Datensätze 506 in einem Verbindungsmodell 516, welches eine Beschreibung von Takt-Gates und der von ihnen angesteuerten Gate-gesteuerten Vorrichtungen einschließt.
  • Zusätzlich zu dem Extrahieren der Logikzelleninformationen 514 aus dem Gate-Ebenen-Logikmodell 504 ist der Logik-Interpreter 502 dafür konfiguriert, Takt-Gate(CG)-Simulationsbefehle 518 zu erzeugen, welche geparste Befehle zum Ausführen einer Simulation relevanter Takt-Gates an dem Simulator 520 sind. Die CG-Simulationsbefehle 518 können Simulationsbefehle, eine Abtastfrequenz, die durch den Logik-Interpreter 502 bestimmt wird, und ein Gate-Ebenen-Logikmodell 504 einschließen. Der Logik-Interpreter 502 kann die CG-Simulationsbefehle 518 basierend auf Verbindungsmöglichkeits- und Verhaltensinformationen bestimmen, die in dem Verbindungsmodell 516 gespeichert sind. In einer Ausführungsform können die CG-Simulationsbefehle 518 als Befehlsdatei gespeichert werden.
  • Der Simulator 520 ist dafür konfiguriert, in Reaktion auf die CG-Simulationsbefehle 518 das Takt-Gate-Verhalten (CG-Verhalten) 522 (z. B. Wellenformen) relevanter Takt-Gate-Signale und insbesondere das Gate-Ebenen-Logikmodell 504, Simulationsbefehle und die Abtastfrequenz auszugeben. Das CG-Verhalten 522 kann Signale beschreiben, welche detaillierter protokolliert und analysiert werden können, um eine Auswirkung der Takt-Gates in dem Entwurf für eine elektronische Schaltungsanordnung zu verstehen.
  • Das CG-Verhalten 522 kann auch Zustandsinformationen für alle Verbindungen einschließen, wann immer eine Verbindung während einer Analyseperiode den Zustand ändert. In einer oder mehreren Ausführungsformen können Abtastperioden (welche z. B. Abtastfrequenzen entsprechen, wie oben angegeben) definiert werden, um die Simulation und Analyse des Takt-Gates und/oder des Takt-Gates und der Gate-gesteuerten Vorrichtung zu vereinfachen.
  • In einer oder mehreren Ausführungsformen kann der Logik-Interpreter 524 dafür konfiguriert sein, eine Abtastfrequenz zu bestimmen, die während einer zweiten Simulation (z. B. durch den Simulator der vollständigen Schaltungsanordnung 528) unter Verwendung des CG-Verhaltens 522 zu verwenden ist. Da sich eine Frequenz eines Systemtakts ändern kann oder ein Systemtakt während einer Analyseperiode unterschiedliche Takte mit unterschiedlichen Frequenzen aufweisen kann, identifiziert der Logik-Interpreter 524 in einer Ausführungsform eine Abtastfrequenz, für die keine oder nur unbedeutende Daten verfehlt werden (z. B. nicht protokolliert werden).
  • Jede geeignete Technik, die dem Durchschnittsfachmann bekannt ist, kann verwendet werden, um eine oder mehrere Abtastfrequenzen zu identifizieren. Zum Beispiel identifiziert der Logik-Interpreter 502 gemäß einem allgemeinen Identifikationsprozess, welcher in dieser Offenbarung vorgesehen ist, eine „niedrigste“ Taktfrequenz fs und eine „höchste“ Taktfrequenz ff während einer Analyseperiode, bestimmt ein Vielfaches m dieser „niedrigsten“ Taktfrequenz, welches gleich hoch wie oder höher als die identifizierte „höchste“ Taktfrequenz ist, und definiert dann eine Abtastfrequenz als m x fs zum Analysieren einer Schaltungsanordnung (welche auch als Abtastrate bezeichnet werden kann und eine entsprechende Abtastperiode aufweist).
  • Gemäß einem anderen allgemeinen Identifikationsprozess, welcher in dieser Offenbarung vorgesehen ist, identifiziert der Logik-Interpreter 502 alle Taktfrequenzen während einer Analyseperiode, bestimmt ein kleinstes gemeinsames Vielfaches (LCM) der Taktfrequenzen und definiert eine Analysefrequenz als eine LCM-Frequenz.
  • Um Taktfrequenzen (entweder alle oder nur die niedrigsten und höchsten Frequenzen) zu identifizieren, kann in einer Ausführungsform für jedes Takt-Gate, für welches ein Analysedurchlauf über eine Analyseperiode durchgeführt wird, der Logik-Interpreter 524 dafür konfiguriert sein, größte gemeinsame Teiler von Taktfrequenzen von Teilperioden der gesamten Analyseperiode zu identifizieren. In einer Ausführungsform können relevante Teilperioden durch Prüfen eines Zeitstempels für jeden Toggle eines Takts und Aufzeichnen eines Zeitintervalls zwischen allen solchen Zeitstempeln gefunden werden. Wenn zum Beispiel zu dem Zeitpunkt t1 ein erster Toggle und zu dem Zeitpunkt t2 ein zweiter Toggle vorliegt, dann kann die zwischen t1 und t2 verstrichene Zeit als eine gefundene Halbperiode aufgezeichnet werden, wobei eine gefundene Periode die von ansteigender Flanke zu ansteigender Flanke sein würde.
  • Der Takt-Gating-Interpreter 524 kann dafür konfiguriert sein, ECD-Simulationsbefehle 526 zu erzeugen und ECD-Simulationsbefehle 526 dem Simulator der vollständigen Schaltungsanordnung 528 bereitzustellen. Die ECD-Simulationsbefehle 526 können zum Beispiel alle relevanten Signale zum Simulieren relevanter Vorrichtungen (z. B. Takt-Gates und Gate-gesteuerter Vorrichtungen) und Abtastfrequenzen zum Simulieren relevanter Vorrichtungen einschließen.
  • Durch den Simulator der vollständigen Schaltungsanordnung 528 werden in Reaktion auf ECD-Simulationsbefehle 526 eine Reihe von Beschreibungen des Verhaltens des Takt-Gates und der Gate-gesteuerten Vorrichtung (CG-GD) 530 ausgegeben. Für jedes Takt-Gate kann ein CG-GD-Verhalten 530 eine Reihe von Wellenformen, die von dem Takt-Gate ausgegeben werden, und Wellenformen beschreiben, die von Gate-gesteuerten Vorrichtungen in ihrer Ausgangsauffächerung ausgegeben werden.
  • Jede Wellenform des CG-GD-Verhaltens 530 (z. B. jede Wellenformdatei) kann durch den Effizienz-Interpreter 532 analysiert werden. Der Effizienz-Interpreter 532 kann so konfiguriert sein, dass er für jedes Takt-Gate überprüft: (1) für wie viele Zyklen in einer Zeile ein Takt-Gate Gate-gesteuerte Vorrichtungen ansteuert; und (2) eine Effizienz eines Takt-Gate durch Messen der Anzahl der Taktzyklen während Verbreitungsperioden, in denen Gate-gesteuerte Vorrichtungen ruhen oder aktiv sind. Der Effizienz-Interpreter 532 kann auch dafür konfiguriert sein, eine Anzahl von Gate-gesteuerten Vorrichtungen in seiner Ausgangsauffächerung zu bestimmen, zum Beispiel durch Betrachten einer Anzahl von Verbindungen.
  • Insbesondere kann, da eine Periode für einen Takt, der von einem Takt-Gate verbreitet wird, variieren könnte, der Effizienz-Interpreter 532 dafür konfiguriert sein, aktive Taktflanken zu erfassen und in Reaktion auf erfasste aktive Taktflanken die Aktivität an Gate-gesteuerten Vorrichtungen zu überprüfen.
  • In einer oder mehreren Ausführungsformen können Bewertungsinformationen für jedes Takt-Gate gesammelt, verglichen und gespeichert werden und dann in einem für Menschen und/oder Computer lesbaren Format in einem Bericht 534 ausgegeben werden, der gespeichert werden kann.
  • In einer oder mehreren Ausführungsformen kann es sich bei dem Logik-Interpreter 502, dem CG-Interpreter 524 und dem Effizienz-Interpreter 532 jeweils um ein Computerprogramm (z. B. ein kompiliertes Programm in Objekt-Code), ein in einer Skriptsprache geschriebenes Skript und Kombinationen davon (z. B. ein Skript, das ein oder mehrere Computerprogramme steuert oder aufruft, und umgekehrt) handeln.
  • Obwohl Simulatoren wie der Simulator 520 und der Simulator der vollständigen Schaltungsanordnung 528 als separate Funktionsblöcke gezeigt und beschrieben werden, können sie in einer oder mehreren Ausführungsformen Teil desselben Funktionsmoduls oder Softwarepakets sein. Darüber hinaus kann ein Analyseprozess hierin allgemein als eine erste Simulation beschrieben werden, wobei Takt-Gates und Signale, die sie bereitstellen, basierend auf der ersten Simulation identifiziert werden und dann Takt-Gates, Signale, die sie bereitstellen, und Gate-gesteuerte Vorrichtungen in einer zweiten Simulation vollständiger überwacht und analysiert werden. In einer oder mehreren Ausführungsformen können Takt-Gates und Gate-gesteuerte Vorrichtungen jedoch zusammen analysiert werden.
  • 6, 7 und 8 zeigen Ablaufpläne für Beispielprozesse 600, 700 und 800, welche als Skripte für den Logik-Interpreter 502, den CG-Interpreter 524 bzw. den Effizienz-Interpreter 532 implementiert sind, gemäß einer oder mehreren Ausführungsformen der Offenbarung.
  • 6 zeigt einen Ablaufplan eines Beispiel-Logikinterpretationsprozesses 600 (durchgeführt zum Beispiel durch den Logik-Interpreter 502) gemäß einer oder mehreren Ausführungsformen der Offenbarung. Bei Operation 602 werden Takt-Gate-Zellenbezeichnungen, Registerzellenbezeichnungen und Pufferzellenbezeichnungen einzeln oder in Kombination als Argumente (d. h. zum Definieren eines Parameters) für Zellentypen von Interesse verwendet, und ein Logikmodell wird nach den Zelltypen von Interesse durchsucht. Bei Operation 604 werden Instanzierungen unterster Ebene von Logikzellen zurückgegeben, die der jeweiligen Logikzellen-Typenbezeichnung entsprechen. In einer Ausführungsform ist eine Instanzierung unterster Ebene eine Stelle in einer Netzliste, wo eine Logikzelle aus einer Standardzellenbibliothek ausgewählt wird, und ist daher die einzige Stelle, wo die Modulbezeichnung der Zelle verwendet wird. Die gesamte Netzliste wird geparst, und alle Logikzelleninstanzen, die Logikzellen-Typenbezeichnungen entsprechen, werden gesammelt. Bei Operation 606 wird jedes Modul identifiziert, von dem eine Zelle instanziert wurde, und die Bezeichnung eines Moduls wird gesammelt. Innerhalb eines Logikmodells wird jede Stelle überprüft, wo später eine Modulbezeichnung abgerufen wird, und es werden Schlüsselinformationen extrahiert. In einer Ausführungsform sind die Schlüsselinformationen eine Instanzbezeichnung, Verdrahtungs-Alternativbezeichnungen und eine Bezeichnung des Moduls, in dem sie instanziert wurden. In manchen Fällen können Module verschachtelt sein (Module innerhalb von Modulen innerhalb von Modulen), wobei in diesem Fall eine Modulbezeichnung ein Modulpfad verschachtelter Module sein kann.
  • Nach dem Extrahieren der Schlüsselinformationen über Logikzellentypen werden in Operation 608 Beziehungen zwischen identifizierten Logikzellen bestimmt. Da die Schlüsselinformationen über die Eingabe-und Ausgabeleitungen für die Logikzelle für alle verschiedenen Stellen erfasst wurden, an denen sie innerhalb eines Entwurfs für eine elektronische Schaltungsanordnung verwendet werden, können Verbindungen zwischen den Logikzellen basierend auf den Schlüsselinformationen identifiziert werden. Bei Operation 610 werden extrahierte Zelleninformationen bereitgestellt und bereinigt, um eine richtige Formatierung für identifizierte Verbindungen sicherzustellen. Bei Operation 612 wird ein Zellenbaum von Takt-Gates gebildet und als Suchbaum verwendet, um die Zelleninformationen nach Gate-gesteuerten Vorrichtungen zu durchsuchen, die mit einem gegebenen Takt-Gate verbunden sind.
  • Bei Operation 614 wird ein Zellenbaum jeweils ein Takt-Gate zu einer Zeit durchschritten, um Listen von Zelleninformationen zu durchsuchen. Alle Logikzellen werden für Gate-gesteuerte Vorrichtungen (welchen z. B. ein aktiviertes Taktsignal („ENCLK-Signal“) von einem Takt-Gate als Eingabetaktsignal zugeführt wird) zurückgegeben, die mit einem gegebenen Takt-Gate, zum Beispiel einem Register, oder einem anderen Takt-Gate gekoppelt sind, und die Logikzelleninformationen für die identifizierten Logikzellen werden gespeichert. Jede solche Gate-gesteuerte Vorrichtung wird durch das jeweilige Takt-Gate als Gate-gesteuert aufgezeichnet.
  • Als ein vorgesehenes Beispiel werden in einer oder mehreren Ausführungsformen alle Pufferspeicher gefunden, denen ein ENCLK-Signal von einem bestimmten Takt-Gate zugeführt wird (die z. B. damit gekoppelt sind). Es wird ein Ausgabedraht jedes solchen Pufferspeichers aufgezeichnet. Der Ausgabedraht wird dann als äquivalent zu einem ENCLK-Signal betrachtet. Ein Zellenbaum wird wieder ein Takt-Gate zu einer Zeit durchschritten, um Zelleninformationen zu suchen und Gate-gesteuerte Vorrichtungen und Pufferspeicher zu identifizieren, die durch das ENCLK-Signal zugeführt werden. Neu identifizierte Gate-gesteuerte Vorrichtungen werden ebenso aufgezeichnet wie neu identifizierte Pufferspeicher, welche als äquivalent zu einem ENCLK-Signal angesehen werden. Dieser Prozess wird wiederholt, bis keine Pufferspeicher mehr identifiziert werden und angenommen wird, dass alle Gate-gesteuerten Vorrichtungen für ein Takt-Gate als dessen gefundene Gate-gesteuerte Vorrichtungen gefunden und gespeichert worden sind.
  • In einer oder mehreren Ausführungsformen wird, wenn eine Gate-gesteuerte Vorrichtung gefunden wird, wie ein Register, eine Kennung der Gate-gesteuerten Vorrichtung (z. B. eine Zahl mit mehreren Stellen) zusammen mit einer Takt-Gate-Kennung in einer Liste gespeichert, um anzuzeigen, dass Takt-Gate und Gate-gesteuerte Vorrichtung verbunden sind. In einer Ausführungsform ist eine Kennung einer Gate-gesteuerten Vorrichtung eine Zahl, die einer Stelle in einer Liste Gate-gesteuerter Vorrichtungen entspricht, wo die spezielle Gate-gesteuerte Vorrichtung gefunden werden kann. Wenn eine Gate-gesteuerte Vorrichtung gefunden wird, ist dieser Zweig dieses Taktbaums nicht mehr für weitere mit dem Ausgang einer Gate-gesteuerten Vorrichtung verbundene Logikzellen erforderlich, da eine Gate-gesteuerte Vorrichtung ein Taktsignal nicht weiterleitet, was bedeutet, dass Logikzellen, die mit dem Ausgang einer Gate-gesteuerten Vorrichtung verbunden sind, nicht von dem jeweiligen Takt-Gate angesteuert werden.
  • 7 zeigt einen Ablaufplan eines Beispiel-Takt-Gating-Interpretationsprozesses 700 gemäß einer oder mehreren Ausführungsformen der Offenbarung.
  • Bei Operation 702 wird nach einer längsten Abtastperiode gesucht, für welche jeweils Takt-Gates abgetastet werden können, ohne relevante Informationen zu verlieren, und diese Abtastperiode wird identifiziert. Bei Operation 704 werden alle Pfade für Signale von Registern und Takt-Gates gefunden, die zu analysieren sind. Jeder Pfad kann als eine Position für eine bestimmte Zelle in einem Schaltungsanordnungsentwurf beschrieben werden und kann insbesondere in einer Liste von verschachtelten Modulen beschrieben werden, in denen sich die bestimmte Zelle befindet. Bei Operation 706 werden die Pfade in eine Reihe von Terminal-Befehlen zerlegt. Ein Terminal-Befehl der Reihe von Terminal-Befehlen kann ein Befehl zum Durchführen einer Simulation eines einzelnen Takt-Gate und seiner zugehörigen Gate-gesteuerten Vorrichtungen (z. B. angesteuerten Register) sein. Der Befehl kann spezielle Anweisungen zum Ausführen eines Entwurfs für eine elektronische Schaltungsanordnung in einem Simulator (z. B. für eine im Handel erhältliche Simulationsmaschine), den Pfad für jede relevante Vorrichtung (hier jede relevante Zelle) und eine Abtastfrequenz und/oder Abtastperiode einschließen. Bei Operation 708 werden relevante Wellenformen exportiert, jede Wellenform (oder Teilmenge der Wellenformen) befindet sich in einer gewünschten Abtastperiode zum Analysieren eines speziellen Takt-Gate und seiner Gate-gesteuerten Vorrichtungen.
  • In einer oder mehreren Ausführungsformen wird, um eine gewünschte Abtastperiode zu finden, für jedes Takt-Gate eine richtige Wellenform gefunden (d. h. spezifisch für ein Takt-Gate), in eine Datei exportiert und zeilenweise durchsucht. Es wird jede Taktflanke erfasst, und ein Zeitpunkt eines Taktflankenereignisses wird gelesen und gespeichert. Wenn eine ansteigende Taktflanke erfasst worden ist, wird eine Zeit seit einem Absinken eines Taktes bis zu einer ansteigenden Flanke aufgezeichnet, und umgekehrt für den Fall einer abfallenden Flanke. Eine resultierende Halbperiode wird identifiziert und gespeichert. In einer Ausführungsform werden die resultierende Halbperiode und andere Abtastperioden, die identifiziert werden, zu einer Liste von in Frage kommenden Abtastperioden hinzugefügt. Ein oder mehrere größte gemeinsame Teiler für Halbperioden können gefunden und an die Liste der in Frage kommenden Abtastperioden angehängt werden. Nach dem Analysieren aller Takt-Gates und dem Abschließen einer Liste von in Frage kommenden Abtastperioden wird die Liste von in Frage kommenden Abtastperioden zurückgegeben. Eine Liste von in Frage kommenden Abtastperioden kann analysiert werden, und es können geeignete Abtastperioden zum Simulieren eines Entwurfs für eine elektronische Schaltungsanordnung ausgewählt werden, und ausgewählte Abtastperioden können verwendet werden, um Abtastfrequenzen zu bestimmen.
  • Eine Liste von Verbindungen zwischen den Takt-Gates und Registern kann verwendet werden, um einen Terminal-Befehl zum Ausführen eines digitalen Simulators zu erzeugen. Es werden auch die richtigen Pfade für die Signale erzeugt, die bei den Terminal-Befehlen benötigt werden. Eine Ausgabe kann eine Datei sein, in der für jedes der Takt-Gates ein Terminal-Befehl aufgelistet ist. Diese Datei wird eine nach der anderen gelesen. Für jedes Takt-Gate wird eine Datei (z. B. eine Datei des Typs mit durch Komma getrennten Werten) geschrieben und zum Beispiel in einem Verzeichnis eines Dateisystems oder einer Datenbank gespeichert.
  • 8 zeigt einen Ablaufplan eines Beispiel-Effizienzinterpretationsprozesses 800 gemäß einer oder mehreren Ausführungsformen der Offenbarung. Allgemein können Wellenformen analysiert werden, die simulierten Entwürfen für elektronische Schaltungsanordnungen entsprechen, und es können dynamische Effizienzinformationen gesammelt und gespeichert werden. Dynamische Effizienzinformationen können zum Beispiel eine Anzahl von Taktzyklen, in denen eine Gate-gesteuerte Vorrichtung aktiv ist, eine Anzahl von Zyklen, in denen eine Gate-gesteuerte Vorrichtung statisch ist, und ein Takt-Gate, das einer solchen Gate-gesteuerten Vorrichtung entspricht, die einen Takt verbreitet (ein geöffneter Zustand), eine maximale Anzahl von aufeinanderfolgenden Zyklen, in denen das Takt-Gate den Takt verbreitet, eine Anzahl von Gate-gesteuerten und nicht Gate-gesteuerten Vorrichtungen in einer Schaltungsanordnung und eine Anzahl von Gate-gesteuerten Vorrichtungen in einer Ausgangsauffächerung eines Takt-Gate (z. B. als eine Liste von Verbindungen zu einem Takt-Gate gespeichert) einschließen. In einer oder mehreren Ausführungsformen können Takt-Gates und Gate-gesteuerte Vorrichtungen gemäß dynamischen Effizienzinformationen quantifiziert werden (z. B. als ein Punktwert), zum Beispiel unter Verwendung eines Grundpunktwerts, eines Prozentsatzes, einer Ranglistenplatzierung und Kombinationen davon. Zum Beispiel gemäß Zählungen von Gate-gesteuerten im Vergleich zu nicht Gate-gesteuerten Vorrichtungen; einem dynamischen Effizienzwert (z. B. in Prozentsätzen) für Takt-Gates, Gruppen von Takt-Gates, Gate-gesteuerten Vorrichtungen und Gruppen von Gate-gesteuerten Vorrichtungen, berechnet als ein Vergleich der verschwendeten Verbreitungsperiode mit der gesamten Verbreitungsperiode; und einem dynamischen Gesamteffizienzwert (z. B. in Prozentsätzen) für eine Schaltung, der unter Verwendung einer oder mehrerer der vorhergehenden dynamischen Effizienzpunktwerte berechnet wird.
  • Allgemein kann eine Wellenformdatei verarbeitet werden, um dynamische Effizienzinformationen für getestete Kriterien zu sammeln, z. B. eine dynamische Effizienz in Prozent, eine maximale Anzahl an aufeinanderfolgenden Zyklen, in denen ein Takt-Gate geöffnet ist, und eine Anzahl von Gate-gesteuerten Vorrichtungen in einer Ausgangsauffächerung eines Takt-Gate. Da Perioden von Abtastungen kürzer als eine Periode eines Takts sein können, kann ein Flankendetektor implementiert werden, um zu bestimmen, wann Signale von Interesse zu lesen sind. Als ein vorgesehenes Beispiel kann, wenn eine Abtastfrequenz höher als eine Taktfrequenz für einen bestimmten Teil einer Wellenform ist, jeder Abtastwert eines Takts beobachtet werden, um zu bestimmen, ob er sich von einem vorherigen Abtastwert des Takts unterscheidet - mit anderen Worten, ob eine Änderung stattgefunden hat - d. h. Aktivität. Wenn sich der Abtastwert von dem vorherigen Abtastwert unterscheidet, kann abgeleitet werden, dass dort eine Flanke aufgetreten ist (oder innerhalb einer Anzahl von Taktzyklen, die einer Verzögerung entsprechen).
  • Unter Hinwendung zu einem Beispiel-Effizienzinterpretationsprozess 800 wird bei Operation 802 eine Wellenform für ein erstes oder nächstes) Takt-Gate und seine Gate-gesteuerten Vorrichtungen (z. B. Register in seiner Ausgangsauffächerung) gelesen. Bei Operation 804 wird basierend auf der Wellenform ein erster oder nächster Taktzyklus erfasst (z. B. unter Anwendung von Flankenerfassungstechniken). Bei Operation 806 wird bestimmt, ob sich das Takt-Gate für den aktuellen Taktzyklus (d. h. für den erfassten ersten oder nächsten Taktzyklus bei der Operation 802) in dem Verbreitungs-Betriebsmodus (hierin auch als „geöffneter Modus“ bezeichnet) befindet.
  • Wenn bei der Operation 806 bestimmt wird, dass sich das Takt-Gate für den aktuellen Taktzyklus in einem Verbreitungsmodus befindet, dann wird bei Operation 808 ein Zykluszählwert für den geöffneten Modus erhöht. Der Zykluszählwert für den geöffneten Modus ist ein Zählwert einer Anzahl aufeinanderfolgender Zyklen, für die sich ein Takt-Gate in einem Verbreitungsmodus befindet - mit anderen Worten ein Maß für Verbreitungszyklen. Bei Operation 810 werden Zustände von Gate-gesteuerten Vorrichtungen für den aktuellen Taktzyklus und den vorherigen Taktzyklus gelesen, um zu identifizieren, ob sich Zustände für solche Gate-gesteuerten Vorrichtungen geändert haben. Bei Operation 812 werden die Zustände der Gate-gesteuerten Vorrichtungen für den aktuellen Taktzyklus und den vorherigen Taktzyklus verglichen, und es wird bestimmt, ob Zustandsänderungen erfasst werden. Wenn sich keine Registerwerte geändert haben (d. h. ein Register statisch ist), dann wird bei Operation 816 ein statischer Taktzyklus aufgezeichnet - d. h., es wird ein Taktzyklus aufgezeichnet, in dem sich ein Takt-Gate verbreitete, aber eine Gate-gesteuerte Vorrichtung statisch war. In einer Ausführungsform kann das Aufzeichnen eines statischen Zyklus ein Erhöhen eines Zählwerts für statische Zyklen einschließen. Haben sich die Zustände der Gate-gesteuerten Vorrichtung geändert (d. h. ein Register ist aktiv), so kann bei Operation 814 ein aktiver Zyklus aufgezeichnet werden. In einer Ausführungsform kann das Aufzeichnen eines aktiven Zyklus ein Erhöhen eines Zählwerts für aktive Zyklen einschließen. Nach dem Aufzeichnen eines aktiven Zyklus (Operation 814) oder eines statischen Zyklus (Operation 816) wird je nach Fall bei Operation 824 bestimmt, dass es weitere Taktzyklen zum Analysieren für das aktuelle Takt-Gate gibt, basierend auf der Wellenform. Wenn es weitere Taktzyklen gibt, die analysiert werden sollen, dann kehrt der Prozess 800 zu der Operation 804 zurück und der nächste Taktzyklus wird erfasst.
  • Wenn bei der Operation 806 bestimmt wird, dass sich ein Takt-Gate für den aktuellen Taktzyklus in dem Gate-Modus befindet (d. h. keinen Takt verbreitet), dann wird bei Operation 818 bestimmt, ob ein aktueller Zykluszählwert für den geöffneten Modus (der auch ein Zählwert aufeinanderfolgender Verbreitungszyklen ist) größer als ein zuvor gespeicherter Zykluszählwert für den geöffneten Modus ist. Wenn er nicht größer ist, dann wird bei Operation 822 der aktuelle Zykluszählwert für den geöffneten Modus zugunsten des zuvor gespeicherten Zykluszählwerts für den geöffneten Modus verworfen. Wenn er größer ist, dann wird bei Operation 820 der zuvor gespeicherte Zykluszählwert für den geöffneten Modus verworfen und der aktuelle Zykluszählwert für den geöffneten Modus gespeichert. Nach dem Analysieren eines Takt-Gate entspricht ein gespeicherter Zähler einer erfassten maximalen Anzahl von aufeinanderfolgenden Zyklen, für die ein Takt-Gate verbreitet. Nach dem Speichern oder Verwerfen des aktuellen Zykluszählwerts für den geöffneten Modus wird, je nach Fall, bei Operation 824 bestimmt, dass es weitere Taktzyklen zum Analysieren für das aktuelle Takt-Gate gibt, basierend auf der Wellenform. Wenn es weitere Taktzyklen gibt, die analysiert werden sollen, dann kehrt der Prozess 800 zu der Operation 804 zurück und der nächste Taktzyklus wird erfasst.
  • Wird bei der Operation 824 bestimmt, dass keine Taktzyklen mehr analysiert werden sollen, so werden bei Operation 826 Punktwerte für ein Takt-Gate berechnet und gespeichert. Punktbewertungsbeispiele, wie dynamische Effizienzpunktwerte, werden nachstehend in dieser Offenbarung beschrieben. Bei Operation 828 wird bestimmt, ob weitere Takt-Gates zu analysieren sind. Wenn mehr Takt-Gates zu analysieren sind, wird der Prozess 800 mit der Operation 802 fortgesetzt, um eine nächste Wellenform für ein nächstes Takt-Gate und seine Gate-gesteuerten Vorrichtungen zu lesen.
  • Wenn bei der Operation 824 bestimmt wird, dass es keine weiteren Takt-Gates mehr gibt, die analysiert werden sollen, dann wird bei Operation 830 jedem Takt-Gate ein gewichteter Punktwert zugewiesen (z. B. eine Gewichtung eines dynamischen Effizienzpunktwerts, die seinen Beitrag zu einem Punktwert für ein gesamtes System darstellt), und Ergebnisse werden in eine Datei geparst und gespeichert. Gewichtete Punktwerte können unter anderem verwendet werden, um Takt-Gates miteinander zu vergleichen. Zum Beispiel können gewichtete Punktwerte verwendet werden, um zu bestimmen, welche Takt-Gates eines Satzes von Takt-Gates die ineffizientesten sind, basierend auf einem Satz von Kriterien. Die Gewichtung kann ein Bestimmen, welche Metriken am wichtigsten sind, und ein Zuweisen einer Gewichtung (z. B. eines Werts) zu bestimmten Metriken einschließen. Die Bedeutung kann zum Beispiel basierend auf einem Beitrag zu Faktoren wie ein Beitrag zu dem Energieverbrauch bestimmt werden. Metriken, die bei dem Bestimmen von Gewichtungen berücksichtigt werden, können eine Anzahl von aufeinanderfolgenden Taktzyklen, die verbreitet werden, und eine Gesamtanzahl von Zyklen einschließen, für die ein Takt-Gate eine Eingabe empfängt (d. h. eine Anzahl von Zyklen, bei denen das Takt-Gate durch ein anderes, geschlossenes Takt-Gate Gate-gesteuert wird).
  • Nach dem Durchführen der Operation 830 ist der Prozess 800 abgeschlossen.
  • Ein Ergebnisskript kann dafür konfiguriert sein, eine Ausgabedatei zu erstellen, welche allgemeine Informationen über einen Entwurf für ein elektronisches System als Ganzes aufweist. Allgemeine Informationen können zum Beispiel eine Menge (z. B. einen Zählwert) von nicht Gate-gesteuerten im Vergleich zu Gate-gesteuerten Registern, eine dynamische Effizienz für Gates und/oder Gruppen von Gates (z. B. in einem Prozentwert), einen mittleren dynamischen Gesamteffizienzpunktwert (z. B. in einem Prozentwert) und allgemeiner dynamische Effizienzinformationen einschließen.
  • Nach einer Übersicht können Listen mit Bewertungen/Punktwerten für Takt-Gates beschrieben werden. Eine Menge von Takt-Gates, die für jede Liste gezeigt werden, kann zum Beispiel durch Benutzereingabe vorgegeben sein und voreingestellt werden, um eine Anzahl von schlechtesten und besten Takt-Gates (z. B. in Bezug auf die dynamische Effizienz) zu zeigen, zum Beispiel eingestellt werden, um die zehn schlechtesten Takt-Gates und die zehn besten Takt-Gates zu zeigen.
  • Beispielhaft beginnt jeder Eintrag mit einer Takt-Gate-Bezeichnung, der für jedes geprüfte Kriterium eine Zahl folgt. Ein Pfad für ein Takt-Gate kann zum Beispiel in einer Anzeigeanordnung des Netzlistentyps gezeigt werden. Am unteren Ende eines Eintrags kann für jede Gate-gesteuerte Vorrichtung (z. B. Register), die von einem Takt-Gate angesteuert wird, ein Pfad gezeigt werden. In einer oder mehreren Ausführungsformen können Registerpfade verwendet werden, um ein Takt-Gate innerhalb des ursprünglichen RTL-Codes zu lokalisieren, vorausgesetzt, dass die Takt-Gates nicht physisch vor der Synthesestufe abgeleitet werden, d. h. in einer Netzliste.
  • Der Bericht 1 ist eine Beispielzusammenfassung für ein gesamtes elektronisches System, welches gemäß einer oder mehreren Ausführungsformen der Offenbarung erzeugt wird: ZUSAMMENFASSUNG EINES ELEKTRONISCHEN SYSTEMS
    Anzahl der Register (Summe) Gate-gesteuert| Nicht Gate-gesteuert): 4063 | 3366 | 697
    Takt -Gate-Gesamtprozentsatz: 82,85 %
    Dynamische Takt-Gate-Effizienz im Mittelwert in Prozent: 3,39 %
  • Der Bericht 2 ist ein Beispielbericht für ein Takt-Gate, von dem gemeldet wird, dass es das ineffizienteste eines elektronischen Systems ist, wobei der Bericht gemäß einer oder mehreren Ausführungsformen der Offenbarung erzeugt wird:
    Figure DE112019004358T5_0001
    Figure DE112019004358T5_0002
  • Der Bericht 3 ist ein Beispielbericht für ein Takt-Gate, von dem gemeldet wird, dass es das effizienteste eines anderen elektronischen Systems ist, wobei der Bericht gemäß einer oder mehreren Ausführungsformen der Offenbarung erzeugt wird: SNPS_CLOCK_GATE_HIGH_port_busif_3_0_13:
    Stationär für max. 3 Zyklen nacheinander
    Effizienz in Prozent: 100,00
    Flip-Flops in dem Register: 152
  • Der Durchschnittsfachmann erkennt, dass die Implementierung von Ausführungsformen der Offenbarung viele andere Nutzen und Vorteile mit sich bringt als die speziell beschriebenen.
  • Obwohl hierin Elemente wie Takt-Gates, Kombinationslogik, Gate-gesteuerte Vorrichtungen, Busse und verschiedene Verbindungen beschrieben sein können, versteht der Durchschnittsfachmann, dass solche Elemente und Verbindungen physische, z. B. Teil einer Schaltungsanordnung, logische, z. B. in einem Entwurf wie einem Gate-Ebenen-Modell definiert, oder sowohl physische als auch logische sein können, wie ein Entwurf, welcher der Schaltungsanordnung entspricht. Beispiele und Ausführungsformen, die in dieser Offenbarung beschrieben sind, sollten so interpretiert werden, dass sie physische Implementierungen und logische Implementierungen, unabhängig und in Kombination, und rechtliche Äquivalente davon abdecken; sofern nicht speziell angegeben ist, dass ein Beispiel oder eine Ausführungsform für eines von einer logischen oder einer physischen Implementierung gilt, oder der Durchschnittsfachmann einen Kontext so versteht, dass er für eines von einer physischen oder einer logischen Implementierung gilt, wobei in diesem Fall eine solche angegebene oder verstandene Implementierung und rechtliche Äquivalente davon abgedeckt sind.
  • Mindestens aus den hierin dargelegten Gründen stellen verschiedene Ausführungsformen der vorliegenden Offenbarung eine technische Lösung für ein oder mehrere Probleme bereit, die sich aus einer Technologie ergeben, die von einer Person nicht angemessen durchgeführt werden könnte. Verschiedene Ausführungsformen der vorliegenden Offenbarung stellen technische Vorteile und technische Lösungen bereit, die in der Computertechnologie begründet sind, überwinden Probleme und/oder Nachteile, die in der computerbezogenen Technologie begründet sind, und verbessern die computerbezogene Technologie allgemein, einschließlich hierin beschriebener Probleme, Nachteile und Herausforderungen. Ferner können mindestens manche hierin offenbarte Ausführungsformen die computerbezogene Technologie verbessern, indem sie es einem Computer ermöglichen, eine Funktion durchzuführen, die zuvor nicht durch einen Computer durchführbar war.
  • Viele der Funktionsbeschreibungen in dieser Patentschrift können als Module, Threads, Schritte oder andere Segregationen von Programmiercode, einschließlich Firmware, veranschaulicht, beschrieben oder bezeichnet werden, um deren Implementierungsunabhängigkeit deutlicher hervorzuheben. Module können in der einen oder anderen Form mindestens teilweise in Hardware implementiert sein. Zum Beispiel kann ein Modul als Hardwareschaltung implementiert werden, die benutzerdefinierte VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Komponenten, umfasst. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen implementiert sein, wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen.
  • Module können auch unter Verwendung von Software oder Firmware implementiert werden, die auf einer physischen Speicherungsvorrichtung (z. B. einem computerlesbaren Speicherungsmedium, welches hierin auch einfach als ein computerlesbares Medium bezeichnet werden kann), in einem Speicher oder einer Kombination davon zur Ausführung durch verschiedene Arten von Prozessoren gespeichert ist.
  • Ein identifiziertes Modul aus ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen umfassen, die zum Beispiel als Thread, Objekt, Prozedur oder Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Dateien eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen umfassen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch zusammengefügt werden, das Modul umfassen und den angegebenen Zweck für das Modul erreichen.
  • Tatsächlich kann ein Modul aus ausführbarem Code eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speicherungs- oder Speichervorrichtungen verteilt sein. In ähnlicher Weise können Betriebsdaten hierin innerhalb von Modulen identifiziert und veranschaulicht sein und können in irgendeiner geeigneten Form verkörpert und innerhalb irgendeiner geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als ein einziger Datensatz gesammelt oder über verschiedene Orte, einschließlich über verschiedene Speicherungsvorrichtungen, verteilt sein und können mindestens teilweise lediglich als elektronische Signale in einem System oder Netzwerk vorhanden sein. Wenn ein Modul oder Abschnitte eines Moduls in Software implementiert sind, werden die Softwareabschnitte auf einer oder mehreren physischen Speicherungsvorrichtungen gespeichert.
  • In manchen Ausführungsformen sind die Softwareabschnitte in einem nichtflüchtigen Zustand gespeichert, sodass die Softwareabschnitte oder Darstellungen davon für einen Zeitraum an demselben physischen Ort verbleiben. Zusätzlich sind in manchen Ausführungsformen die Softwareabschnitte in einer oder mehreren nichtflüchtigen Speicherungsvorrichtungen gespeichert, die Hardwareelemente einschließen, die fähig sind, nichtflüchtige Zustände und/oder Signale zu speichern, die für die Softwareabschnitte repräsentativ sind, obwohl andere Abschnitte der nichtflüchtigen Speicherungsvorrichtungen fähig sein können, die Signale zu ändern und/oder zu übertragen. Beispiele für nichtflüchtige Speicherungsvorrichtungen sind Flash-Speicher und Direktzugriffsspeicher (RAM). Ein anderes Beispiel einer nichtflüchtigen Speicherungsvorrichtung schließt einen Nur-Lese-Speicher (ROM) ein, der für einen Zeitraum Signale und/oder Zustände speichern kann, die für die Softwareabschnitte repräsentativ sind. Die Fähigkeit, die Signale und/oder Zustände zu speichern, wird jedoch nicht durch weitere Funktionalität zum Übertragen von Signalen beeinträchtigt, die den gespeicherten Signalen und/oder Zuständen entsprechen oder diese repräsentieren. Zum Beispiel kann ein Prozessor auf den ROM zugreifen, um Signale zu erhalten, die für die gespeicherten Signale und/oder Zustände repräsentativ sind, um die entsprechenden Softwareanweisungen auszuführen.
  • Softwareabschnitte von Modulen können auch auf computerlesbaren Speicherungsmedien gespeichert sein, um darauf gespeicherte computerausführbare Anweisungen oder Datenstrukturen zu tragen oder aufzuweisen. Solche computerlesbaren Speicherungsmedien können beliebige verfügbare Medien sein, auf die von einem Allzweck-oder Spezialcomputer zugegriffen werden kann.
  • Beispielhaft, und ohne beschränkend zu sein, können solche computerlesbaren Speicherungsmedien nichtflüchtige Speicherungsmedien einschließen, z. B. Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), Compact-Disk-Nur-Lese-Speicher (CD-ROM) oder andere optische Plattenspeicherung (wie eine Digital Video Disk oder „DVD“), Magnetplattenspeicherung oder andere Magnetspeicherungsvorrichtungen, Flash-SpeicherVorrichtungen (z. B. Solid-State-Speichervorrichtungen) oder ein beliebiges anderes Speicherungsmedium, das verwendet werden kann, um gewünschten Programmcode in Form von computerausführbaren Anweisungen oder Datenstrukturen zu tragen oder zu speichern, und auf das durch einen Allzweck- oder Spezialcomputer zugegriffen werden kann. Kombinationen des Vorstehenden können ebenfalls innerhalb des Schutzumfangs eines computerlesbaren Speicherungsmediums und Speicherungsmedien eingeschlossen sein. Computerausführbare Anweisungen können zum Beispiel Anweisungen und Daten einschließen, die dafür konfiguriert sind, einen Prozessor zu veranlassen, eine bestimmte Operation oder Gruppe von Operationen durchzuführen, einschließlich des Durchführens der verschiedenen Ausführungsformen dieser Offenbarung.
  • Die hierin beschriebenen Ausführungsformen können ganz oder teilweise in einem oder mehreren Computerprogrammprodukten verkörpert sein, die auf einem beliebigen aus einer Vielfalt von computerlesbaren Speicherungsmedien geliefert werden. Das oder die Computerprogrammprodukt(e) können in Ausdrücken in Computersprache verkörpert sein.
  • Der Begriff „Computerprogrammprodukt“ wird verwendet, um ein computerlesbares Speicherungsmedium wie vorstehend definiert zu bezeichnen, das eine beliebige Form von Software aufweist, um es einem Computersystem zu ermöglichen, gemäß einer beliebigen Ausführungsform der Erfindung zu arbeiten. Softwareanwendungen können Software zum Erleichtern einer Interaktion mit Softwaremodulen einschließen, einschließlich Benutzerschnittstellen und Anwendungsprogrammierungs-Schnittstellen. Software kann auch gebündelt werden, insbesondere in einem kommerziellen Kontext, um auf einem lokalen Computer aufgebaut, kompiliert und/oder installiert zu werden.
  • Zusätzliche, nicht einschränkende Ausführungsformen der Offenbarung können einschließen:
    • Ausführungsform 1: Ein Verfahren zum Analysieren eines elektronischen Systems, umfassend: Identifizieren einer Verbreitungsperiode eines Takt-Gates; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
    • Ausführungsform 2: Das Verfahren der Ausführungsform 1, wobei das Vergleichen der ersten Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung umfasst: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
    • Ausführungsform 3: Das Verfahren der Ausführungsformen 1 und 2, wobei das Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung umfasst: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
    • Ausführungsform 4: Das Verfahren einer der Ausführungsformen 1 bis 3, wobei das Identifizieren der Ruheperiode ein Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung umfasst.
    • Ausführungsform 5: Das Verfahren einer der Ausführungsformen 1 bis 4, wobei das Identifizieren der Ruheperiode ferner umfasst: Identifizieren von Taktzyklen, die den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen.
    • Ausführungsform 6: Das Verfahren einer der Ausführungsformen 1 bis 5, wobei das Identifizieren der Verbreitungsperiode des Takt-Gate ein Identifizieren einer Reihe von Taktzyklen umfasst, während derer das Takt-Gate einen empfangenen Takt verbreitet.
    • Ausführungsform 7: Das Verfahren einer der Ausführungsformen 1 bis 6, wobei das Identifizieren der verschwendeten Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode umfasst: Identifizieren einer ersten Reihe von Taktzyklen, die der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, die der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
    • Ausführungsform 8: Das Verfahren einer der Ausführungsformen 1 bis 7, wobei das Konfigurieren der modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode ein Konfigurieren der modifizierten Takt-Gating-Logik derart umfasst, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode ein empfangener Takt nicht verbreitet wird.
    • Ausführungsform 9: Ein System zum Analysieren elektronischer Schaltungsanordnungen, umfassend: ein nichtflüchtiges Speicherungsmedium, welches dafür konfiguriert ist, elektronische Dateien von Wellenformen zu speichern, die dem Betrieb von Takt-Gates und Gate-gesteuerten Vorrichtungen einer elektronischen Schaltungsanordnung entsprechen; einen Prozessor zum Verarbeiten der elektronischen Dateien der Wellenformen, die auf dem nichtflüchtigen Speicherungsmedium gespeichert sind, wobei der Prozessor konfiguriert ist zum: Identifizieren einer Verbreitungsperiode eines Takt-Gate; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
    • Ausführungsform 10: Das System der Ausführungsform 9, wobei der Prozessor konfiguriert ist zum Vergleichen der ersten Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung durch: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
    • Ausführungsform 11: Das System der Ausführungsformen 9 und 10, wobei der Prozessor konfiguriert ist zum Identifizieren der Ruheperiode einer Gate-gesteuerten Vorrichtung durch: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
    • Ausführungsform 12: Das System einer der Ausführungsformen 9 bis 11, wobei der Prozessor konfiguriert ist zum Identifizieren der Ruheperiode durch Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung.
    • Ausführungsform 13: Das System einer der Ausführungsformen 9 bis 12, wobei der Prozessor ferner konfiguriert ist zum Identifizieren der Ruheperiode ferner durch: Identifizieren von Taktzyklen, welche den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen. Ausführungsform 14: Das System einer der Ausführungsformen 9 bis 13, wobei der Prozessor konfiguriert ist zum Identifizieren der Verbreitungsperiode des Takt-Gate durch Identifizieren einer Reihe von Taktzyklen, während derer das Takt-Gate geöffnet ist.
    • Ausführungsform 15: Das System einer der Ausführungsformen 9 bis 14, wobei der Prozessor konfiguriert ist zum Identifizieren der verschwendeten Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode durch: Identifizieren einer ersten Reihe von Taktzyklen, welche der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, die der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
    • Ausführungsform 16: Das System einer der Ausführungsformen 9 bis 15, wobei der Prozessor konfiguriert ist zum Konfigurieren der modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode durch Konfigurieren der modifizierten Takt-Gating-Logik derart, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode das Takt-Gate geschlossen wird.
    • Ausführungsform 17: Ein Computerprogrammprodukt, umfassend: ein computerlesbares Medium; und Anweisungen, die auf dem computerlesbaren Medium gespeichert sind, wobei die Anweisungen so konfiguriert sind, dass sie einem Prozessor ermöglichen, die Operationen durchzuführen: Identifizieren einer Verbreitungsperiode eines Takt-Gate; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
    • Ausführungsform 18: Das Computerprogrammprodukt der Ausführungsform 17, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die erste Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung zu vergleichen durch: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
    • Ausführungsform 19: Das Computerprogrammprodukt der Ausführungsformen 17 und 18, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode einer Gate-gesteuerten Vorrichtung zu identifizieren durch: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
    • Ausführungsform 20: Das Computerprogrammprodukt einer der Ausführungsformen 17 bis 19, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode zu identifizieren durch Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung.
    • Ausführungsform 21: Das Computerprogrammprodukt einer der Ausführungsformen 17 bis 20, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode ferner zu identifizieren durch: Identifizieren von Taktzyklen, welche den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen.
    • Ausführungsform 22: Das Computerprogrammprodukt einer der Ausführungsformen 17 bis 21, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Verbreitungsperiode des Takt-Gate zu identifizieren durch Identifizieren einer Reihe von Taktzyklen, während derer das Takt-Gate geöffnet ist.
    • Ausführungsform 23: Das Computerprogrammprodukt einer der Ausführungsformen 17 bis 22, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die verschwendete Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode zu identifizieren durch: Identifizieren einer ersten Reihe von Taktzyklen, welche der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, welche der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
    • Ausführungsform 24: Das Computerprogrammprodukt einer der Ausführungsformen 17 bis 23, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die modifizierte Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode zu konfigurieren durch Konfigurieren der modifizierten Takt-Gating-Logik derart, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode das Takt-Gate geschlossen wird.
    • Ausführungsform 25: Ein Verfahren zum Analysieren eines Entwurfs für eine elektronische Schaltungsanordnung, umfassend: Identifizieren von Logikzellen, die ein Gate-Ebenen-Logikmodell eines Entwurfs für eine elektronische Schaltungsanordnung umfassen; Erzeugen erster Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf die identifizierten Logikzellen; Durchführen einer ersten Simulation in Reaktion auf das Erzeugen der ersten Simulationsbefehle; Identifizieren von Takt-Gate-Verhalten in Reaktion auf das Durchführen der ersten Simulation; Erzeugen zweiter Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Identifizieren des Takt-Gate-Verhaltens; Durchführen einer zweiten Simulation in Reaktion auf das Erzeugen der zweiten Simulationsbefehle; Sammeln dynamischer Effizienzinformationen für den Entwurf für eine elektronische Schaltungsanordnung in Reaktion auf das Durchführen der zweiten Simulation; und Bewerten eines oder mehrerer aus dem Entwurf für eine elektronische Schaltungsanordnung, Takt-Gates des Entwurfs für eine elektronische Schaltungsanordnung und Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Sammeln der dynamischen Effizienzinformationen.
    • Ausführungsform 26: Das Verfahren der Ausführungsform 25, wobei das Sammeln der dynamischen Effizienzinformationen ein Sammeln von einem oder mehrerem umfasst von: einer Anzahl von Taktzyklen, in denen eine Gate-gesteuerte Vorrichtung aktiv ist; einer Anzahl von Zyklen, in denen eine Gate-gesteuerte Vorrichtung statisch ist und ein Takt-Gate, das einer solchen Gate-gesteuerten Vorrichtung entspricht, einen empfangenen Takt verbreitet; und einer Anzahl von Gate-gesteuerten Vorrichtungen in einer Ausgangsauffächerung eines Takt-Gate.
    • Ausführungsform 27: Das Verfahren der Ausführungsformen 25 und 26, wobei das Erzeugen der ersten Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf die identifizierten Logikzellen umfasst: Identifizieren von Takt-Gates, die in den Logikzellen beschrieben sind; und Erzeugen der ersten Simulationsbefehle in Reaktion auf die identifizierten Takt-Gates.
    • Ausführungsform 28: Das Verfahren einer der Ausführungsformen 25 bis 27, wobei das Erzeugen der ersten Simulationsbefehle in Reaktion auf die identifizierten Takt-Gates ein Erzeugen von Simulationsbefehlen zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates umfasst.
    • Ausführungsform 29: Das Verfahren einer der Ausführungsformen 25 bis 28, wobei das Erzeugen von Simulationsbefehlen zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates umfasst: Erzeugen der Simulationsbefehle zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates, aber nicht zum Simulieren von Signalisierungsänderungen an anderen Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung.
    • Ausführungsform 30: Das Verfahren einer der Ausführungsformen 25 bis 29, wobei das Identifizieren des Takt-Gate-Verhaltens in Reaktion auf das Durchführen der ersten Simulation ein Identifizieren von Abtastfrequenzen zum Durchführen einer Simulation von Takt-Gates und Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst.
    • Ausführungsform 31: Das Verfahren einer der Ausführungsformen 25 bis 30, wobei das Identifizieren von Abtastfrequenzen zum Durchführen der Simulation des Takt-Gates und der Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst: Identifizieren einer niedrigsten Taktfrequenz und einer höchsten Taktfrequenz während einer Analyseperiode; und Bestimmen einer zweiten Taktfrequenz in Reaktion auf das Identifizieren der niedrigsten Taktfrequenz und der höchsten Taktfrequenz während der Analyseperiode.
    • Ausführungsform 32: Das Verfahren einer der Ausführungsformen 25 bis 31, wobei das Bestimmen der zweiten Taktfrequenz in Reaktion auf das Identifizieren der niedrigsten Taktfrequenz und der höchsten Taktfrequenz während der Analyseperiode umfasst: Identifizieren eines Vielfachen der niedrigsten Taktfrequenz, welches größer oder gleich der höchsten Taktfrequenz ist; und Definieren der zweiten Taktfrequenz in Reaktion auf das Identifizieren des Vielfachen der niedrigsten Taktfrequenz.
    • Ausführungsform 33: Das Verfahren einer der Ausführungsformen 25 bis 32, wobei das Identifizieren von Abtastfrequenzen zum Durchführen der Simulation des Takt-Gates und der Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst: Identifizieren aller Taktfrequenzen während einer Analyseperiode; und Bestimmen eines kleinsten gemeinsamen Vielfachen der Taktfrequenzen in Reaktion auf das Identifizieren aller Taktfrequenzen während der Analyseperiode.
    • Ausführungsform 34: Das Verfahren einer der Ausführungsformen 25 bis 33, wobei das Erzeugen zweiter Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Identifizieren des Takt-Gate-Verhaltens umfasst: Erzeugen von Simulationsbefehlen zum Simulieren von Takt-Gates und Gate-gesteuerten Vorrichtungen der elektronischen Schaltungsanordnung unter Verwendung einer Abtastfrequenz.
    • Ausführungsform 35: Ein System, welches dafür konfiguriert ist, eine der Operationen einer oder mehrerer der Ausführungsformen 26 bis 35 durchzuführen.
    • Ausführungsform 36: Ein Computerprogrammprodukt, welches dafür konfiguriert ist, eine der Operationen einer oder mehrerer der Ausführungsformen 26 bis 35 durchzuführen.
  • Während die vorliegende Offenbarung hierin in Bezug auf bestimmte veranschaulichte Ausführungsformen beschrieben wurde, wird der Durchschnittsfachmann erkennen und anerkennen, dass die vorliegende Erfindung nicht darauf beschränkt ist. Vielmehr können viele Ergänzungen, Löschungen und Modifikationen an den veranschaulichten und beschriebenen Ausführungsformen vorgenommen werden, ohne von dem Schutzumfang der Erfindung abzuweichen, wie hierin nachfolgend zusammen mit ihren rechtlichen Äquivalenten beansprucht wird. Zusätzlich können Merkmale von einer Ausführungsform mit Merkmalen einer anderen Ausführungsform kombiniert werden, während sie immer noch innerhalb des Schutzumfangs der Erfindung enthalten sind, wie er von den Erfindern in Betracht gezogen wird.
  • 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 Patentliteratur
    • US 62/723589 [0001]
    • US 16/228445 [0001]

Claims (34)

  1. Verfahren zum Analysieren eines elektronischen Systems, umfassend: Identifizieren einer Verbreitungsperiode eines Takt-Gate; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
  2. Verfahren nach Anspruch 1, wobei das Vergleichen der ersten Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung umfasst: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
  3. Verfahren nach Anspruch 1, wobei das Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung umfasst: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
  4. Verfahren nach Anspruch 3, wobei das Identifizieren der Ruheperiode ein Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung umfasst.
  5. Verfahren nach Anspruch 3, wobei das Identifizieren der Ruheperiode ferner umfasst: Identifizieren von Taktzyklen, welche den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen.
  6. Verfahren nach Anspruch 1, wobei das Identifizieren der Verbreitungsperiode des Takt-Gate ein Identifizieren einer Reihe von Taktzyklen umfasst, während derer das Takt-Gate einen empfangenen Takt verbreitet.
  7. Verfahren nach Anspruch 1, wobei das Identifizieren der verschwendeten Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode umfasst: Identifizieren einer ersten Reihe von Taktzyklen, welche der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, welche der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
  8. Verfahren nach Anspruch 1, wobei das Konfigurieren der modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode ein Konfigurieren der modifizierten Takt-Gating-Logik derart umfasst, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode ein empfangener Takt nicht verbreitet wird.
  9. System zum Analysieren elektronischer Schaltungsanordnungen, umfassend: ein nichtflüchtiges Speicherungsmedium, welches dafür konfiguriert ist, elektronische Dateien von Wellenformen zu speichern, die einem Betrieb von Takt-Gates und Gate-gesteuerten Vorrichtungen einer elektronischen Schaltungsanordnung entsprechen; einen Prozessor zum Verarbeiten der elektronischen Dateien von Wellenformen, die auf dem nichtflüchtigen Speicherungsmedium gespeichert sind, wobei der Prozessor konfiguriert ist zum: Identifizieren einer Verbreitungsperiode eines Takt-Gate; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
  10. System nach Anspruch 9, wobei der Prozessor dafür konfiguriert ist, die erste Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung zu vergleichen durch: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
  11. System nach Anspruch 10, wobei der Prozessor dafür konfiguriert ist, die Ruheperiode einer Gate-gesteuerten Vorrichtung zu identifizieren durch: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
  12. System nach Anspruch 11, wobei der Prozessor konfiguriert ist zum Identifizieren der Ruheperiode durch Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung.
  13. System nach Anspruch 11, wobei der Prozessor ferner konfiguriert ist zum Identifizieren der Ruheperiode durch: Identifizieren von Taktzyklen, welche den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen.
  14. System nach Anspruch 9, wobei der Prozessor konfiguriert ist zum Identifizieren der Verbreitungsperiode des Takt-Gate durch Identifizieren einer Reihe von Taktzyklen, während derer das Takt-Gate geöffnet ist.
  15. System nach Anspruch 9, wobei der Prozessor konfiguriert ist zum Identifizieren der verschwendeten Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode durch: Identifizieren einer ersten Reihe von Taktzyklen, welche der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, welche der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
  16. System nach Anspruch 9, wobei der Prozessor konfiguriert ist zum Konfigurieren der modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode durch Konfigurieren der modifizierten Takt-Gating-Logik derart, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode das Takt-Gate geschlossen wird.
  17. Computerprogrammprodukt, umfassend: ein computerlesbares Medium; und Anweisungen, die auf dem computerlesbaren Medium gespeichert sind, wobei die Anweisungen so konfiguriert sind, dass sie einem Prozessor ermöglichen, die Operationen durchzuführen: Identifizieren einer Verbreitungsperiode eines Takt-Gate; Identifizieren einer Ruheperiode einer Gate-gesteuerten Vorrichtung, die operativ mit dem Takt-Gate gekoppelt ist; Identifizieren einer verschwendeten Verbreitungsperiode in Reaktion auf eine Überlappung der Verbreitungsperiode und der Ruheperiode; Konfigurieren einer modifizierten Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode; Vergleichen einer ersten Aktivität der Gate-gesteuerten Vorrichtung mit einer zweiten Aktivität der Gate-gesteuerten Vorrichtung; und Bestätigen, dass die erste Aktivität und die zweite Aktivität konsistent sind.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die erste Aktivität der Gate-gesteuerten Vorrichtung mit der zweiten Aktivität der Gate-gesteuerten Vorrichtung zu vergleichen durch: Bestimmen der ersten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, vor dem Konfigurieren der modifizierten Takt-Gating-Logik; und Bestimmen der zweiten Aktivität der Gate-gesteuerten Vorrichtung in Reaktion auf eine Aktivität, die der Gate-gesteuerten Vorrichtung zugeordnet ist, nach dem Konfigurieren der modifizierten Takt-Gating-Logik.
  19. Computerprogrammprodukt nach Anspruch 18, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode einer Gate-gesteuerten Vorrichtung zu identifizieren durch: Identifizieren einer Aktivität auf einem Datenpfad, welcher einem Taktpfad entspricht, der das Takt-Gate und die Gate-gesteuerte Vorrichtung einschließt; und Identifizieren der Ruheperiode in Reaktion auf die identifizierte Aktivität.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode zu identifizieren durch Beobachten einer oder mehrerer Zustandsänderungen an einer Ausgabe der Gate-gesteuerten Vorrichtung.
  21. Computerprogrammprodukt nach Anspruch 19, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Ruheperiode ferner zu identifizieren durch: Identifizieren von Taktzyklen, welche den beobachteten Zustandsänderungen entsprechen; und Identifizieren einer Reihe von Taktzyklen zwischen zwei aufeinanderfolgenden Zustandsänderungen der beobachteten Zustandsänderungen.
  22. Computerprogrammprodukt nach Anspruch 17, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die Verbreitungsperiode des Takt-Gate zu identifizieren durch Identifizieren einer Reihe von Taktzyklen, während derer das Takt-Gate geöffnet ist.
  23. Computerprogrammprodukt nach Anspruch 17, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die verschwendete Verbreitungsperiode in Reaktion auf die Überlappung der Verbreitungsperiode und der Ruheperiode zu identifizieren durch: Identifizieren einer ersten Reihe von Taktzyklen, welche der Verbreitungsperiode des Takt-Gate entsprechen; Identifizieren einer zweiten Reihe von Taktzyklen, welche der Ruheperiode der Gate-gesteuerten Vorrichtung entsprechen; und Identifizieren mindestens eines Taktzyklus, der für die erste Reihe von Taktzyklen und die zweite Reihe von Taktzyklen derselbe ist.
  24. Computerprogrammprodukt nach Anspruch 17, wobei die Anweisungen so konfiguriert sind, dass sie dem Prozessor ermöglichen, die modifizierte Takt-Gating-Logik in Reaktion auf die verschwendete Verbreitungsperiode zu konfigurieren durch Konfigurieren der modifizierten Takt-Gating-Logik derart, dass für mindestens einen Teil der verschwendeten Verbreitungsperiode das Takt-Gate geschlossen wird.
  25. Verfahren zum Analysieren eines Entwurfs für eine elektronische Schaltungsanordnung, umfassend: Identifizieren von Logikzellen, welche ein Gate-Ebenen-Logikmodell eines Entwurfs für eine elektronische Schaltungsanordnung umfassen; Erzeugen erster Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf die identifizierten Logikzellen; Durchführen einer ersten Simulation in Reaktion auf das Erzeugen der ersten Simulationsbefehle; Identifizieren von Takt-Gate-Verhalten in Reaktion auf das Durchführen der ersten Simulation; Erzeugen zweiter Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Identifizieren des Takt-Gate-Verhaltens; Durchführen einer zweiten Simulation in Reaktion auf das Erzeugen der zweiten Simulationsbefehle; Sammeln dynamischer Effizienzinformationen für den Entwurf für eine elektronische Schaltungsanordnung in Reaktion auf das Durchführen der zweiten Simulation; und Bewerten eines oder mehrerer aus dem Entwurf für eine elektronische Schaltungsanordnung, Takt-Gates des Entwurfs für eine elektronische Schaltungsanordnung und Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Sammeln der dynamischen Effizienzinformationen.
  26. Verfahren nach Anspruch 25, wobei das Sammeln der dynamischen Effizienzinformationen ein Sammeln von einem oder mehrerem umfasst von: einer Anzahl von Taktzyklen, in denen eine Gate-gesteuerte Vorrichtung aktiv ist; einer Anzahl von Zyklen, in denen eine Gate-gesteuerte Vorrichtung statisch ist und ein Takt-Gate, das einer solchen Gate-gesteuerten Vorrichtung entspricht, einen empfangenen Takt verbreitet; und einer Anzahl von Gate-gesteuerten Vorrichtungen in einer Ausgangsauffächerung eines Takt-Gate.
  27. Verfahren nach Anspruch 25, wobei das Erzeugen der ersten Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf die identifizierten Logikzellen umfasst: Identifizieren von Takt-Gates, die in den Logikzellen beschrieben sind; und Erzeugen der ersten Simulationsbefehle in Reaktion auf die identifizierten Takt-Gates.
  28. Verfahren nach Anspruch 25, wobei das Erzeugen der ersten Simulationsbefehle in Reaktion auf die identifizierten Takt-Gates ein Erzeugen von Simulationsbefehlen zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates umfasst.
  29. Verfahren nach Anspruch 28, wobei das Erzeugen von Simulationsbefehlen zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates umfasst: Erzeugen der Simulationsbefehle zum Simulieren von Signalisierungsänderungen an den identifizierten Takt-Gates, aber nicht zum Simulieren von Signalisierungsänderungen an anderen Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung.
  30. Verfahren nach Anspruch 25, wobei das Identifizieren des Takt-Gate-Verhaltens in Reaktion auf das Durchführen der ersten Simulation ein Identifizieren von Abtastfrequenzen zum Durchführen einer Simulation von Takt-Gates und Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst.
  31. Verfahren nach Anspruch 30, wobei das Identifizieren von Abtastfrequenzen zum Durchführen der Simulation des Takt-Gate und der Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst: Identifizieren einer niedrigsten Taktfrequenz und einer höchsten Taktfrequenz während einer Analyseperiode; und Bestimmen einer zweiten Taktfrequenz in Reaktion auf das Identifizieren der niedrigsten Taktfrequenz und der höchsten Taktfrequenz während der Analyseperiode.
  32. Verfahren nach Anspruch 31, wobei das Bestimmen der zweiten Taktfrequenz in Reaktion auf das Identifizieren der niedrigsten Taktfrequenz und der höchsten Taktfrequenz während der Analyseperiode umfasst: Identifizieren eines Vielfachen der niedrigsten Taktfrequenz, welches größer oder gleich der höchsten Taktfrequenz ist; und Definieren der zweiten Taktfrequenz in Reaktion auf das Identifizieren des Vielfachen der niedrigsten Taktfrequenz.
  33. Verfahren nach Anspruch 30, wobei das Identifizieren von Abtastfrequenzen zum Durchführen der Simulation des Takt-Gate und der Gate-gesteuerten Vorrichtungen des Entwurfs für eine elektronische Schaltungsanordnung umfasst: Identifizieren aller Taktfrequenzen während einer Analyseperiode; und Bestimmen eines kleinsten gemeinsamen Vielfachen der Taktfrequenzen in Reaktion auf das Identifizieren aller Taktfrequenzen während der Analyseperiode.
  34. Verfahren nach Anspruch 25, wobei das Erzeugen zweiter Simulationsbefehle zum Simulieren des Entwurfs für eine elektronische Schaltungsanordnung in Reaktion auf das Identifizieren des Takt-Gate-Verhaltens umfasst: Erzeugen von Simulationsbefehlen zum Simulieren von Takt-Gates und Gate-gesteuerten Vorrichtungen der elektronischen Schaltungsanordnung unter Verwendung einer Abtastfrequenz.
DE112019004358.7T 2018-08-28 2019-08-12 Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen Pending DE112019004358T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862723589P 2018-08-28 2018-08-28
US62/723,589 2018-08-28
US16/228,445 2018-12-20
US16/228,445 US11112819B2 (en) 2018-08-28 2018-12-20 Method of clock gate analysis for improved efficiency of electronic circuitry system designs and related systems, methods and devices
PCT/US2019/046213 WO2020046566A1 (en) 2018-08-28 2019-08-12 Method of clock gate analysis of electronic system designs and related systems, methods and devices

Publications (1)

Publication Number Publication Date
DE112019004358T5 true DE112019004358T5 (de) 2021-05-27

Family

ID=69639746

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019004358.7T Pending DE112019004358T5 (de) 2018-08-28 2019-08-12 Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen

Country Status (4)

Country Link
US (1) US11112819B2 (de)
CN (1) CN112639795A (de)
DE (1) DE112019004358T5 (de)
WO (1) WO2020046566A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884059B2 (en) * 2017-10-18 2021-01-05 Hand Held Products, Inc. Determining the integrity of a computing device
US11042678B2 (en) * 2019-06-19 2021-06-22 Samsung Electronics Co., Ltd. Clock gate latency modeling based on analytical frameworks
WO2022246636A1 (en) * 2021-05-25 2022-12-01 Yangtze Memory Technologies Co., Ltd. Method and apparatus for power saving in semiconductor devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781783A (en) * 1996-06-28 1998-07-14 Intel Corporation Method and apparatus for dynamically adjusting the power consumption of a circuit block within an integrated circuit
US6049883A (en) * 1998-04-01 2000-04-11 Tjandrasuwita; Ignatius B. Data path clock skew management in a dynamic power management environment
US6232820B1 (en) * 1999-06-14 2001-05-15 Intel Corporation Method and apparatus for dynamic clock gating
JP3485106B2 (ja) * 2001-05-11 2004-01-13 セイコーエプソン株式会社 集積回路装置
US6636074B2 (en) * 2002-01-22 2003-10-21 Sun Microsystems, Inc. Clock gating to reduce power consumption of control and status registers
US6822481B1 (en) * 2003-06-12 2004-11-23 Agilent Technologies, Inc. Method and apparatus for clock gating clock trees to reduce power dissipation
JP4735376B2 (ja) * 2006-04-04 2011-07-27 パナソニック株式会社 スピーカ用ダンパーおよびこれを用いたスピーカ
US7958476B1 (en) * 2007-07-10 2011-06-07 Magma Design Automation, Inc. Method for multi-cycle path and false path clock gating
US8244515B2 (en) * 2007-08-21 2012-08-14 International Business Machines Corporation Structure for detecting clock gating opportunities in a pipelined electronic circuit design
JP5056573B2 (ja) 2008-05-09 2012-10-24 富士通株式会社 設計支援プログラム、設計支援装置、および設計支援方法
US8737162B2 (en) * 2009-01-12 2014-05-27 Rambus Inc. Clock-forwarding low-power signaling system
EP2550747A1 (de) * 2010-03-22 2013-01-30 Freescale Semiconductor, Inc. Steuermodul für power-gating, ic-element, signalverarbeitungssystem, elektronische vorrichtung und verfahren dafür
US8861664B2 (en) * 2012-06-15 2014-10-14 Smsc Holdings S.A.R.L. Communication system and method for synchronizing a plurality of network nodes after a network lock condition occurs
US9038006B2 (en) 2013-04-30 2015-05-19 Freescale Semiconductor, Inc. Method and apparatus for generating gate-level activity data for use in clock gating efficiency analysis
US9928323B2 (en) 2015-08-20 2018-03-27 Microsemi Solutions (U.S.), Inc. Method and system for functional verification and power analysis of clock-gated integrated circuits

Also Published As

Publication number Publication date
US20200073433A1 (en) 2020-03-05
US11112819B2 (en) 2021-09-07
CN112639795A (zh) 2021-04-09
WO2020046566A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
EP2542904B1 (de) Verbesserungen der rückwärts-analyse zur bestimmung von fehlermaskierungsfaktoren
DE69834892T2 (de) Eingebetteter Logikanalysator
DE69826859T2 (de) Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem
DE60104854T2 (de) System und Verfahren zum Testen integrierter Schaltungen
DE112019004358T5 (de) Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen
DE102013114564B4 (de) System zur Reduzierung einer Leistungsspitze während einer Abtastverschiebung auf lokaler Ebene für abtastbasierte Prüfungen
DE10297319T5 (de) Anwendungsspezifisches ereignisbasiertes Halbleiterspeicher-Testsystem
DE102004009693A1 (de) Technik zum Kombinieren eines Abtasttests und eines eingebauten Speicherselbsttests
DE102013114512B4 (de) Globales Einfangschema mit niedriger Leistung für Kerne
DE112015002183T5 (de) Computerimplementiertes System und Verfahren zum Übersetzen von Verifizierungs-Befehlen eines elektronischen Designs
DE4434927A1 (de) Mit Leistung versorgtes Testen einer gemischten Standard-/Boundary-Scan-Logik
DE10238563A1 (de) System und Verfahren zum Testen von Schaltungen und Programmieren integrierter Schaltungsvorrichtungen
DE69533567T2 (de) Vorrichtung und Verfahren zum Auffinden von False-Timing-Paths in digitalen Schaltkreisen
DE60012735T2 (de) Verfahren zur unterscheidung von verschiedenen typen von abtastfehlern, rechnerbasierte schaltungsemulation und fehlerdetektionssystem
DE102016119991A1 (de) Emulation von Taktjittern
DE102017117496A1 (de) Zell-Bewusste Fehlstellen-Charakterisierung und Wellenformanalyse mithilfe mehrerer Strobe-Punkte
DE102009012768B4 (de) JTAG Nachrichtenbox
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
EP1469320B1 (de) Verfahren zur Generierung von Testersteuerungen
DE102008007004B4 (de) Integrierte Schaltung mit einem Speicher mit mehreren Speicherzellen mit synchronem Aufbau, die mit Taktausblendeeinheiten verbunden sind, sowie Verfahren zum Entwerfen einer solchen Schaltung
DE19530669A1 (de) Verfahren zum automatischen Auswählen eines taktsteuernden Signalpfads in umprogrammierbaren Systemen zur Hardware-Emulation
EP1449083B1 (de) Verfahren zum debuggen rekonfigurierbarer architekturen
WO2003027696A2 (de) Elektronischer baustein und verfahren zu dessen qualifizierungsmessung
DE102020111259A1 (de) On-chip-ausführung eines in-system-tests unter verwendung eines verallgemeinerten testbildes
DE10355141A1 (de) System und Verfahren zum Schätzen eines Leistungsverbrauchs für zumindest einen Abschnitt einer integrierten Schaltung

Legal Events

Date Code Title Description
R012 Request for examination validly filed