DE102018102292A1 - Verfahren und Vorrichtung zur automatischen Implementierung eines kompensierenden Rücksetzens für neugetaktete Schaltungen - Google Patents

Verfahren und Vorrichtung zur automatischen Implementierung eines kompensierenden Rücksetzens für neugetaktete Schaltungen Download PDF

Info

Publication number
DE102018102292A1
DE102018102292A1 DE102018102292.1A DE102018102292A DE102018102292A1 DE 102018102292 A1 DE102018102292 A1 DE 102018102292A1 DE 102018102292 A DE102018102292 A DE 102018102292A DE 102018102292 A1 DE102018102292 A1 DE 102018102292A1
Authority
DE
Germany
Prior art keywords
reset
signal
circuits
circuit
design
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
DE102018102292.1A
Other languages
English (en)
Inventor
Sean R. Atsatt
Mahesh A. Iyer
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102018102292A1 publication Critical patent/DE102018102292A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • 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
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • 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/392Floor-planning or layout, e.g. partitioning or placement

Landscapes

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

Abstract

Ein kompensierendes Initialisierungsmodul kann automatisch in einen Entwurf eingesetzt werden, um eine Registerneutaktung zu kompensieren, die das Verhalten des Entwurfs beim Rücksetzen verändert. Die Vorrichtungsauslegungsschaltungen können eine Einstellsequenzlänge sowie ein Startsignal an das Initialisierungsmodul liefern, um die neugetaktete Benutzerlogik, die auf der integrierten Schaltung implementiert wird, nach der anfänglichen Auslegung und Freigabe der integrierten Schaltung geeignet zurückzusetzen. Das Auto-Initialisierungsmodul kann den c-Zyklus-Initialisierungsprozess steuern und der Benutzerlogik anzeigen, wann die c-Zyklus-Initialisierung vollendet ist. Die Benutzerlogik kann anschließend eine benutzerspezifische Rücksetzsequenz beginnen. Wenn die benutzerspezifische Rücksetzsequenz endet, kann die Benutzerlogik, die auf der integrierten Schaltung implementiert ist, einen Normalbetrieb beginnen. Zusätzlich kann eine Benutzer-Rücksetzanforderung auch das Auto-Initialisierungsmodul auslösen, um einen Rücksetzprozess zu beginnen.

Description

  • Hintergrund
  • Dies betrifft integrierte Schaltungen und mehr im Einzelnen die Implementierung eines verzögerten Rücksetzens für Register innerhalb eines integrierten Schaltungsentwurfs.
  • Jeder Übergang von einem Technologieknoten zum nächsten hat zu kleineren Übergangsgeometrien und somit potentiell mehr Funktionalität geführt, die pro Einheitsbereich auf einem integrierten Schaltungschip implementiert ist. Synchrone integrierte Schaltungen haben diese Entwicklung weiter genützt, wie durch reduzierte Zwischenverbindungs- und Zellverzögerungen nachgewiesen, die zu Leistungssteigerungen geführt haben.
  • Zur weiteren Leistungssteigerung wurden Lösungen wie eine Registerneutaktung vorgeschlagen, wobei Register aus Teilen einer kombinatorischen Logik bewegt werden, wodurch eine ausgeglichenere Verteilung von Verzögerungen zwischen Registern erzielt wird, und somit die integrierte Schaltung bei einer potentiell höheren Taktfrequenz betrieben werden kann.
  • Die Register werden typischerweise unter Verwendung von taktflankengesteuerten Flip-Flops implementiert. Vor der Neutaktung, wenn die integrierte Schaltung hochgefahren wird, werden diese digitalen Flip-Flops auch in einen Initialzustand hochgefahren, dieser Initialzustand kann jedoch unbekannt sein. Daher wird typischerweise eine Rücksetzsequenz an die Flip-Flops geliefert, um die Flip-Flops zurückzusetzen und diese in einen bekannten Rücksetzzustand zu bringen.
  • Nach der Neutaktung kann sich jedoch die neugetaktete integrierte Schaltung anders als die integrierte Schaltung vor der Neutaktung verhalten. In einigen Fällen wird dieselbe Rücksetzsequenz, die an die Flip-Flops vor der Neutaktung geliefert wird, bei den neugetakteten Flip-Flops nicht funktionieren. Daher wäre es zweckmäßig, zur Berücksichtigung von Flip-Flops, die während der Neutaktung bewegt werden, eine aktualisierte Rücksetzsequenz für die neugetakteten Flip-Flops bereitzustellen, und Schaltungen zu implementieren, welche die neugetakteten Flip-Flops unter Verwendung der aktualisierten Rücksetzsequenz zurücksetzen.
  • In diesem Kontakt entstehen die vorliegenden Ausführungsformen.
  • Kurzfassung
  • Dies betrifft allgemein integrierte Schaltungen und insbesondere Verfahren und Vorrichtungen zum automatischen Rücksetzen neugetakteter Schaltungen unter Verwendung einer verzögerten Rücksetzsequenz, die von computerunterstützten Entwurfswerkzeugen (CAD) generiert wird. CAD-Werkzeuge, die auf integrierter Schaltungsentwurfs-Rechnerausrüstung implementiert werden, werden häufig verwendet, um Registerbewegungsoperationen (z.B. Registerneutaktung, Registerduplizierung, Registerverschmelzung) vorzunehmen, um die gesamte Schaltungsleistung des Schaltungsentwurfs zu verbessern.
  • Zum genauen Rücksetzen neugetakteter Schaltungen unter Verwendung einer verzögerten Rücksetzsequenz kann eine integrierte Schaltung logische Schaltungen, Auslegungsschaltungen und ein Initialisierungsmodul umfassen. Die logischen Schaltungen können unter Verwendung einer ursprünglichen Rücksetzsequenz auf einer Pro-Takt-Domänenbasis zurückgesetzt werden. Die logischen Schaltungen können ein Taktsignal für eine gegebene Taktdomäne an das Initialisierungsmodul liefern. Das Initialisierungsmodul kann ein Rücksetz-Auslösesignal entweder von den Auslegungsschaltungen oder logischen Schaltungen empfangen (z.B. ein Startsignal von den Auslegungsschaltungen oder ein Rücksetz-Anforderungssignal von den logischen Schaltungen), das mit dem Taktsignal unter Verwendung einer Synchronisationsschaltung innerhalb des Initialisierungsmoduls synchronisiert werden kann. Die Synchronisationsschaltung kann ein entsprechendes synchronisiertes Rücksetz-Auslösesignal generieren.
  • Das Initialisierungsmodul kann eine Zählerschaltung aufweisen, die das synchronisierte Rücksetz-Auslösesignal empfängt. Die Auslegungsschaltungen, welche die logischen Schaltungen programmieren, um eine benutzerdefinierte logische Funktion zu implementieren, können auch einen Zählwert, welcher der ursprünglichen Rücksetzsequenz entspricht, an die Zählerschaltung liefern. Das Initialisierungsmodul kann zwischen den logischen Schaltungen und den Auslegungsschaltungen angeordnet sein, um automatisch die ursprüngliche Rücksetzsequenz um eine Zählwertanzahl von Taktzyklen zu verzögern. Als solche kann die Zählerschaltung im Initialisierungsmodul ein Zählsignal an eine Rücksetz-Steuerschaltung im Initialisierungsmodul liefern.
  • Wenn die Zählerschaltung c Taktzyklen gezählt hat, kann die Rücksetz-Steuerschaltung ein Ausgangssignal (z.B. ein Rücksetz-Steuersignal) aktivieren, das zu den logischen Schaltungen übertragen wird. Ansprechend auf ein deaktiviertes Rücksetz-Auslösesignal kann die Rücksetz-Steuerschaltung das Ausgangssignal deaktivieren. Dies stellt einen Quittungsaustauschvorgang zwischen dem Rücksetz-Steuersignal und dem Rücksetz-Auslösesignal dar.
  • Die logischen Schaltungen können eine Rücksetz-Zustandsmaschine aufweisen, die das Rücksetz-Steuersignal (oder einfach Steuersignal) von der Rücksetz-Steuerschaltung empfängt. Die Rücksetz-Zustandsmaschine kann ein Anforderungssignal ansprechend auf ein empfangenes Fehlersignal ausgeben, das einen Fehler während des Betriebs von logischen Benutzerschaltungen anzeigt. Die Rücksetz-Zustandsmaschine kann auch ein Rücksetzsignal an die logischen Benutzerschaltungen ausgeben, spezifischer Register innerhalb der logischen Benutzerschaltungen, um eine Rücksetzsequenz (z.B. eine Einstellsequenz, eine ursprüngliche Sequenz usw.) zu implementieren.
  • Weitere Merkmale der Erfindung, ihre Beschaffenheit und verschiedene Vorteile gehen besser aus den beigeschlossenen Zeichnungen und der folgenden detaillierten Beschreibung hervor.
  • Figurenliste
    • 1 ist eine Darstellung einer veranschaulichenden programmierbaren integrierten Schaltung gemäß einer Ausführungsform.
    • 2 ist eine Darstellung veranschaulichender Neutaktungsoperationen gemäß einer Ausführungsform.
    • 3 ist eine Darstellung einer veranschaulichenden zeitverschachtelten Routing-Ressource, die ein Register verwendet, um ein Routing-Signal zeitzuverschachteln, gemäß einer Ausführungsform.
    • 4 ist eine Darstellung eines Schaltungsentwurfssystems, das verwendet werden kann, um integrierte Schaltungen auszubilden, gemäß einer Ausführungsform.
    • 5 ist eine Darstellung veranschaulichender computerunterstützter Entwurfswerkzeuge (CAD), die in einem Schaltungsentwurfssystem gemäß einer Ausführungsform verwendet werden können.
    • 6 ist ein Flussdiagramm veranschaulichender Schritte zum Entwerfen einer integrierten Schaltung gemäß einer Ausführungsform.
    • 7 ist eine Darstellung einer veranschaulichenden Grafik möglicher Zustände, zwischen denen Register hin- und hergehen können, gemäß einer Ausführungsform.
    • 8A ist eine Darstellung einer veranschaulichenden Schaltung vor der Neutaktung gemäß einer Ausführungsform.
    • 8B ist eine Darstellung einer neugetakteten Version der Schaltung von 8A gemäß einer Ausführungsform.
    • 9 ist ein Flussdiagramm veranschaulichender Schritte zum Rücksetzen neugetakteter Schaltungen gemäß einer Ausführungsform.
    • 10 ist eine Darstellung veranschaulichender Rücksetz-Initialisierungsschaltungen gemäß einer Ausführungsform.
    • 11 ist eine Darstellung eines veranschaulichenden Auto-Initialisierungsmoduls innerhalb der Rücksetz-Initialisierungsschaltungen von 10 gemäß einer Ausführungsform.
    • 12 ist eine Darstellung veranschaulichender logischer Benutzerschaltungen innerhalb der Rücksetz-Initialisierungsschaltungen von 10 gemäß einer Ausführungsform.
    • 13 ist ein veranschaulichendes Zeitdiagramm des Betriebs der Rücksetz-Initialisierungsschaltungen von 10 nach einer anfänglichen Auslegung neugetakteter Schaltungen gemäß einer Ausführungsform.
    • 14 ist ein veranschaulichendes Zeitdiagramm des Betriebs der Rücksetz-Initialisierungsschaltungen von 10 nach einer Benutzer-Rücksetzanforderung gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • Die vorliegenden Ausführungsformen betreffen integrierte Schaltungen und insbesondere Schaltungen innerhalb der integrierten Schaltungen, die verwendet werden, um eine verzögerte Rücksetzsequenz (z.B. eine benutzerspezifizierte Rücksetzsequenz, die um c Taktzyklen verzögert ist) zu implementieren.
  • Die Vornahme von Neutaktungsoperationen an einer integrierten Schaltung kann die Auslegung von Registern innerhalb der integrierten Schaltung verändern. In einigen Fällen werden die neugetakteten Register unter Verwendung der Rücksetzsequenz für Register vor der Neutaktung nicht genau zurückgesetzt (z.B. einer Rücksetzsequenz, die von einem Konstrukteur einem entsprechenden Schaltungsentwurf geliefert wird).
  • Daher wäre es zweckmäßig, eine verbesserte Weise der Modellierung von Registern bereitzustellen, die während der Neutaktung bewegt werden, um einen Einstellwert zu berechnen und eine neugetaktete Rücksetzsequenz unter Verwendung des berechneten Einstellwerts und der vor der Neutaktung verwendeten Rücksetzsequenz zu generieren. Gemäß einer Ausführungsform kann dies durch Verfolgen der Bewegung neugetakteter Register über verschiedene Typen von Schaltelementen erzielt werden. Bei einem Betrieb auf diese Weise kann eine minimale Länge einer vorangestellten Einstellsequenz berechnet werden, die in der neugetakteten Rücksetzsequenz verwendet wird.
  • Rücksetz-Initialisierungsschaltungen innerhalb der integrierten Schaltung können die vorangestellte Einstellsequenz an die neugetakteten Register liefern. Nach dem Liefern der vorangestellten Einstellsequenz können die neugetakteten Register die vom Konstrukteur bereitgestellte Rücksetzsequenz empfangen. Die Rücksetz-Initialisierungsschaltungen können die neugetakteten Schaltungen nach der Initialauslegung der integrierten Schaltung und während eines vom Benutzer angeforderten Rücksetzens der integrierten Schaltung geeignet zurücksetzen.
  • Fachleute erkennen, dass die vorliegenden Beispiele von Ausführungsformen ohne einige oder alle diese spezifischen Details praktiziert werden können. In anderen Fällen wurden wohlbekannte Operationen nicht detailliert beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verkomplizieren.
  • Eine veranschaulichende Ausführungsform einer programmierbaren integrierten Schaltung, wie einer programmierbaren logischen Vorrichtung (PLD) 100, die ausgelegt werden kann, um einen Schaltungsentwurf zu implementieren, ist in 1 gezeigt. Wie in 1 gezeigt, kann die programmierbare logische Vorrichtung (PLD) eine zweidimensionale Anordnung funktioneller Blöcke aufweisen, die logische Anordnungsblöcke (LABs) 110 und andere funktionelle Blöcke aufweisen, wie beispielsweise Speicherblöcke mit wahlfreiem Zugriff (RAM) 130 und digitale Signalverarbeitungsblöcke (DSP) 120. Funktionelle Blöcke, wie LABs 110, können kleinere programmierbare Regionen aufweisen (z.B. logische Elemente, auslegbare logische Blöcke, oder adaptive logische Module), die Eingangssignale empfangen und benutzerdefinierte Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen.
  • Die programmierbare logische Vorrichtung 100 kann programmierbare Speicherelemente enthalten. Speicherelemente können mit Auslegungsdaten (auch als Programmierdaten bezeichnet) unter Verwendung von Eingabe-Ausgabe-Elementen (IOEs) 102 beladen werden. Sobald sie geladen sind, liefern die Speicherelemente jeweils ein entsprechendes statisches Steuersignal, das den Betrieb eines assoziierten funktionellen Blocks (z.B. LABs 110, DSP 120, RAM 130, oder Eingabe-Ausgabe-Elemente 102) steuert.
  • In einem typischen Szenario werden die Ausgänge der geladenen Speicherelemente an die Gates von Metalloxid-Halbleiter-Transistoren in einem funktionellen Block angelegt, um bestimmte Transistoren ein oder aus zu schalten und dadurch die Logik in dem funktionellen Block einschließlich der Routing-Wege auszulegen. Programmierbare logische Schaltungselemente, die auf diese Weise gesteuert werden können, umfassen Teile von Multiplexern (z.B. Multiplexer, die zur Bildung von Routing-Wegen in Zwischenverbindungsschaltungen verwendet werden), Nachschlagtabellen, logische Anordnungen, UND-, ODER-, NICHT-UND- und WEDER-NOCH-Logikgates, Durchgangs-Gates usw.
  • Die Speicherelemente können beliebige geeignete flüchtige und/oder nicht-flüchtige Speicherstrukturen verwenden, wie Speicherzellen mit wahlfreiem Zugriff (RAM), Sicherungen, Antisicherungen, programmierbare Nur-Lese-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, Kombinationen dieser Strukturen usw. Da Auslegungsdaten während der Programmierung in die Speicherelemente geladen werden, werden die Speicherelemente manchmal als Auslegungsspeicher, Auslegungs-RAM (CRAM) oder programmierbare Speicherelemente bezeichnet.
  • Zusätzlich kann die programmierbare logische Vorrichtung Eingabe-Ausgabe-Elemente (IOEs) 102 zum Treiben von Signalen weg von der PLD 100 und zum Empfangen von Signalen anderen Vorrichtungen aufweisen. Die Eingabe-Ausgabe-Elemente 102 können parallele Eingabe-Ausgabe-Schaltungen, serielle Daten-Sende/Empfangs-Schaltungen, Differentialempfangs- und -sende-Schaltungen oder andere Schaltungen aufweisen, die verwendet werden, um eine integrierte Schaltung mit einer anderen integrierten Schaltung zu verbinden.
  • Die PLD kann auch programmierbare Zwischenverbindungsschaltungen in der Form vertikaler Routing-Kanäle 140 (d.h. Zwischenverbindungen, die entlang einer vertikalen Achse der PLD 100 gebildet sind) und horizontaler Routing-Kanäle 150 (d.h. Zwischenverbindungen, die entlang einer horizontalen Achse der PLD 100 gebildet sind) aufweisen, wobei jeder Routing-Kanal wenigstens eine Spur aufweist, um ein Routing wenigstens eines Drahts vorzunehmen. Wenn gewünscht, können die Zwischenverbindungsschaltungen Pipeline-Elemente aufweisen, und auf die in diesen Pipeline-Elementen gespeicherten Inhalte kann während des Betriebs zugegriffen werden. Beispielsweise kann eine programmierbare Schaltung einen Lese- und Schreib-Zugriff auf ein Pipeline-Element vorsehen.
  • Es ist zu beachten, dass andere Routing-Topologien, abgesehen von der in 1 dargestellten Topologie der Zwischenverbindungsschaltungen, im Umfang der vorliegenden Erfindung enthalten sein sollen. Beispielsweise kann die Routing-Topologie Drähte aufweisen, die diagonal verlaufen oder die horizontal verlaufen und vertikal entlang verschiedener Wege ihrer Ausdehnung, sowie Drähte, die rechtwinklig zur Vorrichtungsebene im Fall von dreidimensionalen integrierten Schaltungen verlaufen, und der Treiber eines Drahts kann an einem anderen Punkt angeordnet sein als ein Ende eines Drahts. Die Routing-Topologie kann globale Drähte aufweisen, im Wesentlichen die gesamte PLD 100 überspannen, fraktionelle globale Drähte, wie Drähte, die einen Teil der PLD 100 überspannen, versetzte Drähte mit einer bestimmten Länge, kleinere lokale Drähte, oder eine beliebige andere geeignete Zwischenverbindungsressourcen-Anordnung.
  • Wenn gewünscht, kann die programmierbare logische Vorrichtung (PLD) 100 ausgelegt sein, einen benutzerdefinierten Schaltungsentwurf zu implementieren. Beispielsweise kann der Auslegungs-RAM derart programmiert sein, dass LABs 110, der DSP 120, und der RAM 130, programmierbare Zwischenverbindungsschaltungen (d.h. vertikale Kanäle 140 und horizontale Kanäle 150) und die Eingabe-Ausgabe-Elemente 102 die Schaltungsentwurfsimplementierung bilden.
  • 2 zeigt ein Beispiel verschiedener Versionen eines Schaltungsentwurfs, welche die PLD 100 implementieren kann. Die erste Version des Schaltungsentwurfs kann Register 210, 220, 230, 240 und eine kombinatorische Logik 245 aufweisen. Die Register 210 können ein Signal an das Register 220 senden; das Register 220 kann das Signal durch die kombinatorische Logik 245 an das Register 230 senden; und das Register 230 kann das Signal an das Register 240 senden. Als Beispiel kann die Verzögerung auf dem Weg vom Register 220 durch die kombinatorische Logik 245 zum Register 230 eine Verzögerung von 6 Nanosekunden (ns) sein, während die Verzögerung zwischen dem Register 210 und 220 und zwischen den Registern 230 und 240 eine minimale Verzögerung (z.B. eine Verzögerung von 0,5 ns, eine Verzögerung sehr nahe bei 0 ns usw.) sein kann. Somit kann die erste Version des Schaltungsentwurfs bei einer Frequenz von 166 MHz arbeiten.
  • Die Vornahme einer Registerneutaktung in der ersten Version des Schaltungsentwurfs kann eine zweite Version des Schaltungsentwurfs erzeugen. Beispielsweise kann das Register 230 durch einen Abschnitt der kombinatorischen Logik 245 zurückgeschoben werden (manchmal als Rückwärts-Neutaktung bezeichnet), wodurch die kombinatorische Logik 245 der ersten Version des Schaltungsentwurfs in die kombinatorische Logik 242 und 244 der zweiten Version des Schaltungsentwurfs getrennt wird. In der zweiten Version des Schaltungsentwurfs kann das Register 210 ein Signal an das Register 220 senden; das Register 220 kann das Signal durch die kombinatorische Logik 242 an das Register 230 senden; und das Register 230 kann das Signal durch die kombinatorische Logik 244 an das Register 240 senden.
  • Als Beispiel kann die Verzögerung auf dem Weg vom Register 220 durch die kombinatorische Logik 242 zum Register 230 eine Verzögerung von 4 ns sein, und die Verzögerung vom Register 230 durch die kombinatorische Logik 244 zum Register 240 kann eine Verzögerung von 2 ns sein. Somit kann die zweite Version des Schaltungsentwurfs bei einer Frequenz von 250 MHz arbeiten, was durch den Weg mit der längsten Verzögerung eingeschränkt wird (manchmal als kritischer Weg bezeichnet).
  • Die Vornahme einer Registerneutaktung in der zweiten Version des Schaltungsentwurfs kann eine dritte Version des Schaltungsentwurfs erzeugen. Beispielsweise kann das Register 220 durch einen Abschnitt der kombinatorischen Logik 242 vorwärtsgeschoben werden (manchmal als „Vorwärts“-Neutaktung bezeichnet), wodurch die kombinatorische Logik 242 der zweiten Version des Schaltungsentwurfs in die kombinatorische Logik 241 und 243 der dritten Version des Schaltungsentwurfs getrennt wird. In der dritten Version des Schaltungsentwurfs kann das Register 210 ein Signal durch die kombinatorische Logik 241 an das Register 220 senden; das Register 220 kann das Signal durch die kombinatorische Logik 243 an das Register 230 senden; und das Register 230 kann das Signal durch die kombinatorische Logik 244 an das Register 240 senden.
  • Als Beispiel können die Verzögerungen auf den Wegen vom Register 210 durch die kombinatorische Logik 241 zum Register 220, vom Register 220 durch die kombinatorische Logik 243 zum Register 230 und vom Register 230 durch die kombinatorische Logik 244 zum Register 240 alle eine Verzögerung von 2 ns sein. Somit kann die dritte Version des Schaltungsentwurfs bei einer Frequenz von 500 MHz arbeiten, was das Dreifache der Frequenz ist, bei der die erste Version des Schaltungsentwurfs arbeiten kann.
  • Wenn gewünscht, können Routing-Ressourcen, wie die vertikalen Routing-Kanäle 140 oder die horizontalen Routing-Kanäle 150 von 1, Pipeline-Elemente aufweisen, die eine Registerneutaktung erleichtern können. 3 stellt eine zeitverschachtelte Routing-Ressource 300 dar, die ein Register gemäß einer Ausführungsform verwendet. Wie gezeigt, weist die zeitverschachtelte Routing-Ressource 300 einen ersten Multiplexer 302, einen Treiber 304, ein Register 306 und einen zweiten Multiplexer 308 auf.
  • Der Multiplexer 302 kann ein Treibereingangs-Multiplexer (DIM) oder ein funktioneller Blockeingangs-Multiplexer (FBIM) sein. Ein DIM kann ein Signal aus mehreren Quellen auswählen und das ausgewählte Signal an den Treiber 304 senden, der einen entsprechenden Draht treibt. Die mehreren Ressourcen können Signale von den Ausgängen funktioneller Blöcke und andere Routing-Drähte aufweisen, die in dieselbe oder in eine orthogonale Richtung zum Draht verlaufen. Ein FBIM gibt ein Signal an einen funktionellen Block aus und kann das Signal aus mehreren Routing-Drähten auswählen.
  • Wie in 3 gezeigt, kann der Multiplexer 302 zeitverschachtelt werden, indem sein Ausgang an den Dateneingang des Registers 306 geliefert wird. Der Multiplexer 308 in der zeitverschachtelten Routing-Ressource 300 kann den Ausgang des Multiplexers 302 direkt empfangen und auch den Datenausgang vom Register 306 empfangen.
  • Obwohl die zeitverschachtelte Routing-Ressource 300 das Register 306 aufweist, ist es für Fachleute klar, dass unterschiedliche Registerimplementierungen verwendet werden können, um ein Routing-Signal zu speichern, wie ein taktflankengesteuertes Flip-Flop, eine Impulsverriegelung, eine Verriegelung mit geringer Transparenz, eine Verriegelung mit hoher Transparenz, um nur einige zu nennen. Um die vorliegenden Ausführungsformen nicht unnötig zu verkomplizieren, wird daher die Speicherschaltung in der zeitverschachtelten Routing-Ressource als Pipeline-Speicherelement bezeichnet.
  • Der Multiplexer 308 kann es ermöglichen, dass die zeitverschachtelte Routing-Ressource 300 entweder in einem Nicht-Pipeline-Modus oder in einem Pipeline-Registermodus verwendet wird. Im Nicht-Pipeline-Modus wählt der Ausgang des Multiplexers 308 den direkten Ausgang des Multiplexers 302 aus. Im Pipeline-Modus kann der Multiplexer 308 den Ausgang des Registers 306 auswählen. Der Multiplexer 308 kann seinen Ausgang an die Treiberschaltung 304 liefern, und der Ausgang der Treiberschaltung 304 kann verwendet werden, um einen Routing-Draht zu steuern. Der Routing-Draht kann sich über mehrere funktionelle Blöcke erstrecken (z.B. für eine zeitverschachtelte Routing-Ressource mit einem DIM). Alternativ dazu kann der Routing-Draht innerhalb eines funktionellen Blocks sein (z.B. für eine zeitverschachtelte Routing-Ressource mit einem FBIM).
  • Jeder DIM/FBIM kann ein Register umfassen, wie ein Register 306, so dass alle Routing-Multiplexer zeitverschachtelt sind. In einigen Ausführungsformen kann dies jedoch unnötig sein, da die vorgesehenen Fähigkeiten die Entwurfsanforderungen übersteigen können. Somit kann in bestimmten Ausführungsformen nur eine Fraktion, wie die Hälfte oder ein Viertel, der Routing-Multiplexer zeitverschachtelt sein. Beispielsweise kann es 150 Pikosekunden (ps) dauern, bis ein Signal einen Draht mit einer gegebenen Länge durchquert, aber ein Taktsignal kann eingeschränkt werden, um mit einem 650 ps Taktzyklus zu arbeiten. Somit kann das Vorsehen eines Pipeline-Registers, wie des Registers 306 an jedem vierten Draht in diesem Beispiel ausreichend sein. Alternativ dazu können die Register häufiger als an jedem vierten Draht (z.B. an jedem zweiten Draht) platziert werden, um einen größeren Spielraum bei der Auswahl vorzusehen, welche Register verwendet werden.
  • Zeitverschachtelte Routing-Ressourcen, wie die zeitverschachtelte Routing-Ressource 300, können Registerneutaktungsoperationen erleichtern, wie die in 2 veranschaulichte Registerneutaktung. Beispielsweise wird das Szenario betrachtet, bei dem das Register 230 durch einen ersten Fall eines zeitverschachtelten Routing-Elements implementiert ist, das im Pipeline-Registermodus betrieben wird (d.h. das Register 230 wird durch das Register 306 eines ersten Falls einer zeitverschachtelten Routing-Ressource 300 implementiert). Ferner wird berücksichtigt, dass der Weg vom Register 220 durch die kombinatorische Logik 245 zum Register 230 einen zweiten Fall eines zeitverschachtelten Routing-Elements aufweist, das im Nicht-Pipeline-Modus betrieben wird. Somit können das Umschalten des ersten Falls des zeitverschachtelten Routing-Elements vom Betrieb im Pipeline-Registermodus zum Betrieb im Nicht-Pipeline-Modus und das Umschalten des zweiten Falls des zeitverschachtelten Routing-Elements vom Betrieb im Nicht-Pipeline-Modus zum Betrieb im Pipeline-Registermodus die erste Version in die zweite Version des in 2 gezeigten Schaltungsentwurfs umwandeln.
  • Computerunterstützte Entwurfswerkzeuge (CAD) in einem Schaltungsentwurfssystem können evaluieren, ob die Registerneutaktung die Leistung einer aktuellen Version eines Schaltungsentwurfs verbessern kann oder ob die aktuelle Version des Schaltungsentwurfs ein gegebenes Leistungskriterium erfüllt. Wenn gewünscht, und in dem Fall, dass die CAD-Werkezuge bestimmen, dass eine Registerneutaktung die Leistung der aktuellen Version des Schaltungsentwurfs verbessern würde oder dass der aktuellen Version des Schaltungsentwurfs das gegebene Leistungskriterium fehlt, können die CAD-Werkzeuge Registerneutaktungsoperationen ausführen, welche die aktuelle Version des Schaltungsentwurfs in eine andere Version des Schaltungsentwurfs umwandeln (z.B. wie in 2 veranschaulicht).
  • Ein veranschaulichendes Schaltungsentwurfssystem 400 gemäß einer Ausführungsform ist in 4 gezeigt. Das Schaltungsentwurfssystem 400 kann auf einer integrierten Schaltungsentwurfs-Rechnerausrüstung implementiert werden. Beispielsweise kann das System 400 auf einem oder mehreren Prozessoren, wie Personalcomputern, Arbeitsstationen usw., basieren. Der oder die Prozessoren können unter Verwendung eines Netzes (z.B. eines lokalen oder Weitverkehrsnetzes) verbunden werden. Speicher in diesen Computern oder externe Speicher und Speichervorrichtungen, wie interne und/oder externe Festplatten, können verwendet werden, um Instruktionen und Daten zu speichern.
  • Auf Software basierende Komponenten, wie computerunterstützte Entwurfswerkzeuge 420 und Datenbanken 430, residieren im System 400. Während des Betriebs läuft ausführbare Software, wie die Software der computerunterstützten Entwurfswerkzeuge 420, auf dem oder den Prozessoren des Systems 400. Die Datenbanken 430 werden verwendet, um Daten für den Betrieb des Systems 400 zu speichern. Im Allgemeinen können Software und Daten auf einem beliebigen computerlesbaren Medium (Speicher) im System 400 gespeichert werden. Solche Speicher können Computerspeicherchips, entfernbare und feste Medien, wie Festplattenlaufwerke, Flash-Speicher, Compact Discs (CDs), Digital Versatile Disks (DVDs), Bluray-Discs (BDs), andere optische Medien und Disketten, Bänder oder einen beliebigen anderen geeigneter Speicher oder eine Speichervorrichtung(en) umfassen. Wenn die Software des Systems 400 installiert ist, hat der Speicher des Systems 400 Instruktionen und Daten, welche die Rechnerausrüstung im System 400 veranlassen, verschiedenen Verfahren (Prozesse) auszuführen. Wenn diese Prozesse vorgenommen werden, ist die Rechnerausrüstung ausgelegt, die Funktionen des Schaltungsentwurfssystems zu implementieren.
  • Die computerunterstützten Entwurfswerkzeuge (CAD) 420, von denen einige oder alle manchmal kollektiv als CAD-Werkzeug, Schaltungsentwurfswerkzeug oder elektronisches Entwurfsautomatisierungswerkzeug (EDA) bezeichnet werden, können von einem einzelnen Verkäufer oder von mehreren Verkäufern geliefert werden. Die Werkzeuge 420 können als eine oder mehrere Folgen von Werkzeugen (z.B. Kompilierer-Folge zur Vornahme von Aufgaben, die mit der Implementierung eines Schaltungsentwurfs in einer programmierbaren logischen Vorrichtung assoziiert sind) und/oder als eine oder mehrere getrennte Software-Komponenten (Werkzeuge) vorgesehen werden. Eine Datenbank(en) 430 kann eine oder mehrere Datenbanken aufweisen, auf die alle nur durch ein bestimmtes Werkzeug oder Werkzeuge zugegriffen wird, und die eine oder mehrere gemeinsam genutzte Datenbanken aufweisen können. Auf gemeinsam genutzte Datenbanken kann durch mehrere Werkzeuge zugegriffen werden. Beispielsweise kann ein erstes Werkzeug Daten für ein zweites Werkzeug in einer gemeinsamen genutzten Datenbank speichern. Das zweite Werkzeug kann auf die gemeinsam genutzte Datenbank zugreifen, um die vom ersten Werkzeug gespeicherten Daten abzurufen. Dies ermöglicht es einem Werkzeug, Informationen an ein anderes Werkzeug weiterzugeben. Die Werkzeuge können auch Informationen untereinander weitergeben, ohne Informationen in einer gemeinsam genutzten Datenbank zu speichern, wenn gewünscht.
  • Veranschaulichende computerunterstützte Entwurfswerkzeuge 520, die in einem Schaltungsentwurfssystem, wie dem Schaltungsentwurfssystem 400 von 4, verwendet werden können, sind in 5 gezeigt.
  • Der Entwurfsprozess kann mit der Formulierung funktioneller Spezifikationen des integrierten Schaltungsentwurfs beginnen (z.B. funktionelle oder verhaltensbezogene Beschreibung des integrierten Schaltungsentwurfs). Ein Schaltungskonstrukteur kann den funktionellen Betrieb eines gewünschten Schaltungsentwurfs unter Verwendung von Entwurfs- und Einschränkungswerkzeugen 564 spezifizieren. Die Entwurfs- und Einschränkungswerkzeuge 564 können Werkzeuge umfassen, wie eine Entwurfs- und Einschränkungs-Eingabehilfe 566 und einen Entwurfseditor 568. Entwurfs- und Einschränkungs-Eingabehilfen, wie die Hilfe 566, können verwendet werden, um einem Schaltungskonstrukteur zu helfen, einen gewünschten Entwurf in einer Bibliothek bestehender Schaltungsentwürfe zu lokalisieren, und können eine computergestützte Hilfe für den Schaltungskonstruktur beim Eingeben (Spezifizieren) des gewünschten Schaltungsentwurfs bieten.
  • Als Beispiel kann die Entwurfs- und Einschränkungs-Eingabehilfe 566 verwendet werden, um einem Benutzer Bildschirme mit Optionen zu präsentieren. Der Benutzer kann Optionen auf dem Bildschirm anklicken, um auszuwählen, ob die Schaltung, die ausgebildet wird, bestimmte Merkmale haben soll. Der Entwurfseditor 568 kann verwendet werden, um einen Entwurf einzugeben (z.B. durch die Eingabe von Zeilen eines Hardware-Beschreibungssprachcodes), kann verwendet werden, um einen Entwurf zu editieren, die aus einer Bibliothek erhalten wird (z.B. unter Verwendung einer Entwurfs- und Einschränkungs-Eingabehilfe), oder kann einem Benutzer helfen, geeignete vorgefertigte Codes/Entwürfe auszuwählen und zu editieren.
  • Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 können verwendet werden, um es einem Schaltungskonstrukteur zu ermöglichen, einen gewünschten Schaltungsentwurf unter Verwendung eines geeigneten Formats vorzusehen. Beispielsweise können Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 Werkzeuge umfassen, die es dem Schaltungskonstruktuer ermöglichen, einen Schaltungsentwurf unter Verwendung von Wahrheitstabellen einzugeben. Wahrheitstabellen können unter Verwendung von Textdateien oder Zeitdiagrammen spezifiziert werden und können aus einer Bibliothek importiert werden. Eine Wahrheitstabellen-Schaltungsentwurfs- und -Einschränkungseingabe kann für einen Abschnitt einer großen Schaltung oder für eine gesamte Schaltung verwendet werden.
  • Als weiteres Beispiel können Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 ein schematisches Erfassungswerkzeug aufweisen. Ein schematisches Erfassungswerkzeug kann es dem Schaltungskonstrukteur ermöglichen, visuell integrierte Schaltungsentwürfe aus Bestandteilen, wie logischen Gates und Gruppen logischer Gates, zu konstruieren. Bibliotheken bestehender integrierter Schaltungsentwürfe können verwendet werden, um zu ermöglichen, dass ein gewünschter Abschnitt eines Entwurfs mit den schematischen Erfassungswerkzeugen importiert wird.
  • Wenn gewünscht, können Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 es dem Schaltungskonstrukteur ermöglichen, einen Schaltungsentwurf für das Schaltungsentwurfssystem 400 unter Verwendung einer Hardwarebeschreibungssprache vorzusehen, wie der Verilog-Hardwarebeschreibungssprache (Verilog HDL), Very High Speed Integrated Circuit-Hardwarebeschreibungssprache (VHDL), SystemVerilog oder einer Schaltungsbeschreibungssprache einer höheren Ebene, wie OpenCL oder SystemCL, um nur einige zu nennen. Der Konstrukteur des integrierten Schaltungsentwurfs kann den Schaltungsentwurf durch Schreiben eines Hardwarebeschreibungs-Sprachcodes mit dem Editor 568 eingeben. Codeblöcke können aus durch einen Benutzer gewarteten oder kommerziellen Bibliotheken importiert werden, wenn gewünscht.
  • Nachdem der Entwurf unter Verwendung der Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 eingegeben wurde, können Verhaltenssimulationswerkzeuge 572 verwendet werden, um die funktionelle Leistung des Schaltungsentwurfs zu simulieren. Wenn die funktionelle Leistung des Entwurfs unvollständig oder inkorrekt ist, kann der Schaltungskonstrukteur Änderungen an dem Schaltungsentwurf unter Verwendung der Entwurfs- und Einschränkungs-Eingabewerkzeuge 564 vornehmen. Der funktionelle Betrieb des neuen Schaltungsentwurfs kann unter Verwendung der Verhaltenssimulationswerkzeuge 572 verifiziert werden, bevor Syntheseoperationen unter Verwendung von Werkzeugen 574 vorgenommen wurden. Simulationswerkzeuge, wie Verhaltenssimulationswerkzeuge 572, können auch in anderen Stufen im Entwurfsfluss verwendet werden, wenn gewünscht (z.B. nach der logischen Synthese). Der Ausgang der Verhaltenssimulationswerkzeuge 572 kann an den Schaltungskonstrukteur in einem beliebigen Format geliefert werden (z.B. Wahrheitstabellen, Zeitdiagramme usw.).
  • Sobald der funktionelle Betrieb des Schaltungsentwurfes als zufriedenstellend bestimmt wurde, können Logiksynthese - und Optimierungswerkzeuge 574 eine Netzliste des Schaltungsentwurfs auf Gate-Ebene generieren, beispielsweise unter Verwendung von Gates aus einer bestimmten Bibliothek, die zu einem gezielten Prozess gehören, welcher von einem Chiphersteller unterstützt wird, der ausgewählt wurde, um die integrierte Schaltung herzustellen. Alternativ dazu können die Logiksynthese - und Optimierungswerkzeuge 574 eine Netzliste des Schaltungsentwurfs auf Gate-Ebene unter Verwendung von Gates einer gezielten programmierbaren logischen Vorrichtung generieren (d.h. in den logischen und Zwischenverbindungsressourcen eines bestimmten programmierbaren logischen Vorrichtungsprodukts oder einer Produktfamilie).
  • Die Logiksynthese - und Optimierungswerkzeuge 574 können den Entwurf optimieren, indem geeignete Auswahlen von Hardware getroffen werden, um verschiedene logische Funktionen in dem Schaltungsentwurf auf der Basis der Schaltungsentwurfsdaten und Einschränkungsdaten zu implementieren, die von dem Logikkonstrukteur unter Verwendung der Werkzeuge 564 eingegeben werden. Als Beispiel können die Logiksynthese - und Optimierungswerkzeuge 574 eine logische Optimierung auf mehreren Ebenen und ein Technologie-Mapping auf der Basis der Länge eines kombinatorischen Wegs zwischen Registern in dem Schaltungsentwurf und entsprechender Zeiteinschränkungen vornehmen, die von dem Logikkonstruktuer unter Verwendung der Werkzeuge 564 eingeben wurden.
  • Nach den Logiksynthese - und Optimierungswerkzeugen 574 können die Schaltungsentwurfssystem Werkzeuge verwenden, wie Platzierungs-, Routing- und physikalische Synthesewerkzeuge 576, um physikalische Entwurfsschritte (Entwurfssyntheseoperationen) vorzunehmen. Die Werkzeuge 576 können verwendet werden, um zu bestimmen, wo jedes Gate der Netzliste auf Gate-Ebene zu platzieren ist, die von den Werkzeugen 574 erzeugt wurde. Wenn beispielsweise zwei Zähler miteinander interagieren, können die Werkzeuge 576 diese Zähler in benachbarten Regionen lokalisieren, um Zwischenverbindungsverzögerungen zu reduzieren oder um Zeitanforderungen zu erfüllen, indem die maximal zulässige Zwischenverbindungsverzögerung spezifiziert wird. Die Werkzeuge 576 erzeugen geordnete und effiziente Implementierungen von Schaltungsentwürfen für eine beliebige abgezielte Schaltung (z.B. für eine gegebene programmierbare integrierte Schaltung, wie eine feldprogrammierbare Gate-Anordnung (FPGA)).
  • Werkzeuge, wie die Werkzeuge 574 und 576, können Teil einer Kompilierer-Folge sein (z.B. Teil einer Folge von Kompilierer-Werkzeugen, die von einem Verkäufer einer programmierbaren logischen Vorrichtung geliefert werden). In bestimmten Ausführungsformen können Werkzeuge, wie die Werkzeuge 574, 576 und 578, auch Zeitanalysewerkzeuge, wie Zeitschätzer, umfassen. Dies ermöglicht es den Werkzeugen 574 und 576, Leistungsanforderungen (z.B. Zeitanforderungen) vor der tatsächlichen Herstellung der integrierten Schaltung zu erfüllen.
  • Als Beispiel können die Werkzeuge 574 und 576 eine Registerneutaktung vornehmen, indem Register durch kombinatorische Logik bewegt werden (z.B. durch logische UND-, ODER-, EXKLUSIV-ODER- und andere geeignete Gates, Nachschlagtabellen (LUTs), Multiplexer, arithmetische Operatoren usw.). Die Werkzeuge 574 und 576 können Register quer durch kombinatorische Logik vorwärts oder rückwärts verschieben, wie in 2 veranschaulicht. Wenn gewünscht, können die Werkzeuge 574 und 576 Verschiebungen von Registern vorwärts oder rückwärts durch die Auslegung von zeitverschachtelten Routing-Ressourcen, wie der zeitverschachtelten Routing-Ressource 300 von 3, vornehmen, um in einem Nicht-Pipeline-Modus oder als zeitverschachteltes Routing-Element zu arbeiten. Auf diese Weise verwendete physikalische Synthesewerkzeuge 576 können daher auch verwendet werden, um eine Registerneutaktung vorzunehmen. Die Vornahme von Neutaktungsoperationen an zeitverschachtelten Routing-Elementen (z.B. zeitverschachtelten Routing-Ressourcen) dient jedoch nur als Beispiel. Wenn gewünscht, können die physikalischen Synthesewerkzeuge 576 Neutaktungsoperationen an einem beliebigen geeigneten Register vornehmen.
  • Nachdem die Implementierung des gewünschten Schaltungsentwurfs unter Verwendung der Werkzeuge 576 generiert wurde, kann die Implementierung des Entwurfs unter Verwendung von Analysewerkzeugen 578 analysiert und getestet werden. Die Analysewerkzeuge 578 können beispielsweise Zeitanalysewerkzeuge, Leistungsanalysewerkzeuge oder formale Verifikationswerkzeuge umfassen, um nur einige zu nennen.
  • Nachdem zufriedenstellende Optimierungsoperationen unter Verwendung der Werkzeuge 520 und in Abhängigkeit von der abgezielten integrierten Schaltungstechnologie vollendet wurden, können die Werkezuge 520 eine Entwurfsbeschreibung der integrierten Schaltung auf Maskenebene oder Auslegungsdaten zur Programmierung der programmierbaren logischen Vorrichtung erzeugen.
  • Veranschaulichende Operationen, die in die Verwendung der Werkezuge 520 von 5 involviert sind, um die Entwurfsbeschreibung der integrierten Schaltung auf Maskenebene zu erzeugen, sind in 6 gezeigt. Wie in 6 gezeigt, kann ein Schaltungskonstrukteur zuerst eine Entwurfsspezifikation 602 liefern. Die Entwurfsspezifikation 602 kann allgemein eine Verhaltensbeschreibung sein, die in der Form eines Anwendungscodes geliefert wird (z.B. C Code, C++ Code, Systeme Code, OpenCL Code usw.). In einigen Szenarien kann die Entwurfsspezifikation in der Form einer Beschreibung 606 auf Registertransferebene (RTL) vorgesehen werden.
  • Die RTL-Beschreibung kann eine beliebige Form zur Beschreibung von Schaltungsfunktionen auf der Registertransferebene haben. Beispielsweise kann die RTL-Beschreibung unter Verwendung einer Hardware-Beschreibungssprache geliefert werden, wie der Verilog-Hardwarebeschreibungssprache (Verilog HDL oder Verilog), der SystemVerilog-Hardwarebeschreibungssprache (SystemVerilog HDL oder SystemVerilog), oder der Very High Speed Integrated Circuit-Hardwarebeschreibungssprache (VHDL). Wenn gewünscht, kann ein Abschnitt der oder die gesamte RTL-Beschreibung als schematische Darstellung geliefert werden.
  • Im Allgemeinen kann die Verhaltensentwurfsspezifikation 602 einen ungetakteten oder teilweise getakteten funktionellen Code umfassen (d.h. der Anwendungscode beschreibt kein Zyklus-für-Zyklus-Hardware-Verhalten), während die RTL-Beschreibung 606 eine vollständig getaktete Entwurfsbeschreibung umfassen kann, die das Zyklus-für-Zyklus-Verhalten der Schaltung auf der Registertransferebene detailliert ausführt.
  • Die Entwurfsspezifikation 602 oder RTL-Beschreibung 606 kann auch ein Zielkriterium umfassen, wie Bereichsverwendung, Leistungsverbrauch, Verzögerungsminimierung, Taktfrequenzoptimierung oder eine beliebige Kombination davon. Die Optimierungseinschränkungen und Zielkriterien können kollektiv als Einschränkungen bezeichnet werden.
  • Diese Einschränkungen können für einzelne Datenwege, Abschnitte einzelner Datenwege, Abschnitte eines Entwurfs oder für den gesamte Entwurf vorgesehen werden. Beispielsweise können die Einschränkungen mit der Entwurfsspezifikation 602, der RTL-Beschreibung 606 (z.B. als Pragma oder als Aktivierung), in einer Einschränkungsdatei, oder durch eine Benutzereingabe (z.B. unter Verwendung der Entwurfs- und Einschränkungseingabewerkzeuge 564 von 5) vorgesehen werden, um nur einige zu nennen.
  • In Schritt 604 kann eine Verhaltenssynthese (manchmal auch als algorithmische Synthese bezeichnet) vorgenommen werden, um die Verhaltensbeschreibung in eine RTL-Beschreibung 606 umzuwandeln. Der Schritt 604 kann übersprungen werden, wenn die Entwurfsspezifikation bereits in der Form einer RTL-Beschreibung vorgesehen wird.
  • In Schritt 618 können die Verhaltenssimulationswerkzeuge 572 eine RTL-Simulation der RTL-Beschreibung vornehmen, welche die Funktionalität der RTL-Beschreibung verifizieren kann. Wenn die Funktionalität der RTL-Beschreibung unvollständig oder inkorrekt ist, kann der Schaltungskonstrukteur Änderungen an dem HDL-Code vornehmen (als Beispiel). Während der RTL-Simulation 618 können tatsächliche Ergebniss, die aus der Simulation des Verhaltens der RTL-Beschreibung erhalten werden, mit erwarteten Ergebnissen verglichen werden.
  • Während Schritt 608 können die logischen Syntheseoperationen eine Beschreibung 610 auf Gate-Ebene unter Verwendung von Logiksynthese- und Optimierungswerkzeugen 574 von 5 generieren. Wenn gewünscht, können logische Syntheseoperationen eine Registerneutaktung vornehmen, wie in 2 veranschaulicht, gemäß den Einschränkungen, die in der Entwurfsspezifikation 602 oder RTL-Beschreibung 606 enthalten sind. Der Ausgang der logischen Synthese 608 ist die Beschreibung 610 auf Gate-Ebene.
  • Während Schritt 612 können Platzierungsoperationen beispielsweise unter Verwendung von Platzierungswerkzeugen 576 von 5 die verschiedenen Gates in der Beschreibung 610 auf Gate-Ebene an einen bevorzugten Ort auf der abgezielten integrierten Schaltung platzieren, um gegebene Zielkriterien zu erfüllen (z.B. den Bereich minimieren und die Routing-Effizienz maximieren, oder die Wegverzögerung minimieren und die Taktfrequenz maximieren, oder eine Blatte Kombination davon). Der Ausgang der Platzierung 612 wird in die Beschreibung 613 auf Gate-Ebene platziert, welche die legalen Platzierungseinschränkungen der zugrundeliegenden Zielvorrichtung erfüllt.
  • Während Schritt 615 können Routing-Operationen beispielsweise unter Verwendung von Routing-Werkzeugen 576 von 5 die Gates von der platzierten Beschreibung 613 auf Gate-Ebene verbinden. Routing-Operationen können versuchen, gegebene Zielkriterien zu erfüllen (z.B. eine Überlastung minimieren, eine Wegverzögerung maximieren und die Taktfrequenz maximieren oder eine beliebige Kombination davon). Der Ausgang des Routing 615 ist eine Entwurfsbeschreibung 616 auf Maskenebene (manchmal als einem Routing unterworfene Beschreibung 616 auf Gate-Ebene bezeichnet).
  • Während die Platzierung und das Routing in den Schritten 612 und 615 vorgenommen werden, können gleichzeitig physikalische Syntheseoperationen 617 vorgenommen werden, um den Schaltungsentwurf weiter zu modifizieren und zu optimieren (z.B. unter Verwendung physikalischer Synthesewerkzeuge 576 von 5). Wenn gewünscht, können Registerneutaktungsoperationen während des physikalischen Syntheseschritts 617 vorgenommen werden. Beispielsweise können Register in der platzierten Beschreibung 613 auf Gate-Ebene oder der einem Routing unterzogenen Beschreibung 616 auf Gate-Ebene gemäß den Einschränkungen umbewegt werden, die in der Entwurfsspezifikation 602 oder der RTL-Beschreibung 604 enthalten sind.
  • Als Beispiel können Registerneutaktungsoperationen die Auslegung einiger zeitverschachtelter Routing-Ressourcen (z.B. einige Fälle der zeitverschachtelten Routing-Ressource 300 von 3) vom Betrieb in einem Pipeline-Registermodus zu einem Betrieb in einem nicht-zeitverschachtelten Modus ändern, und die Auslegung anderer zeitverschachtelter Routing-Ressourcen (z.B. andere Fälle von zeitverschachtelten Routing-Ressourcen 300 von 3) vom Betrieb im nicht-zeitverschachtelten Modus zum Betrieb im Pipeline-Registermodus. Um die Ausführungsformen nicht zu verkomplizieren, kann die Änderung von Zuständen für Pipeline-Routing-Ressourcen einfach als Umstellen (z.B. Bewegung) von Pipeline-Registern (z.B. zeitverschachtelten Routing-Ressourcen, die im Pipeline-Registermodus arbeiten) bezeichnet werden. Die Vornahme von Registerneutaktungsoperationen an zeitverschachtelten Routing-Ressourcen dient jedoch nur der Veranschaulichung. Wie vorstehend angeführt, können Neutaktungsoperationen an einem beliebigen geeigneten Typ einer Routing-Ressource vorgenommen werden (z.B. einem beliebigen Typ eines Registers, Registern in einem LAB oder MLAB usw.).
  • In einem ersten Szenario kann beispielsweise die Änderung der Auslegung einer gegebenen zeitverschachtelten Routing-Ressource vom Betrieb in einem Pipeline-Registermodus zum Betrieb in einem nicht-zeitverschachtelten Modus als Entfernung eines Pipeline-Registers bezeichnet werden. In einem zweiten Szenario kann beispielsweise die Änderung der Auslegung einer weiteren gegebenen zeitverschachtelten Routing-Ressource vom Betrieb in einem nicht-zeitverschachtelten Modus zum Betrieb in einem Pipeline-Registermodus als Hinzufügen eines Pipeline-Registers bezeichnet werden. Wenn das erste und zweite Szenario einander entsprechen (z.B. gleichzeitig auftreten), kann ein Pipeline-Register bezeichnet werden, als von dem Ort des entfernten Pipeline-Registers zum Ort des hinzugefügten Pipeline-Registers bewegt zu werden.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung können Pipeline-Register (z.B. das Register 306 in 3) innerhalb einer integrierten Schaltung (z.B. PLD 100) kollektiv eine Anzahl möglicher Zustände aufweisen (z.B. während des Hochfahrens, während des Rücksetzens, während des Normalbetriebs usw.). Beispielsweise kann ein möglicher Zustand ein Zustand sein, in dem alle Pipeline-Register innerhalb einer integrierten Schaltung alle Werte von „0“ haben (z.B. einen Wert „0“ speichern). Ein weiterer möglicher Zustand kann ein Zustand sein, in dem alle der Pipeline-Register innerhalb einer integrierten Schaltung alle Werte von „1“ haben (z.B. einen Wert „1“ speichern). In noch einem weiteren Beispiel kann eine erste Gruppe von Pipeline-Registern Werte von „0“ speichern, und eine zweite Gruppe von Pipeline-Registern kann Werte von „1“ speichern. Dies dient nur der Veranschaulichung. Wenn gewünscht, kann ein beliebiger Satz von Zuständen in den Pipeline-Registern innerhalb einer integrierten Schaltung zu einer gegebenen Zeit gespeichert werden.
  • Ferner dienen die Verwendung und Modifikation von Pipeline-Registern, wie in 6 (und beliebigen anderen relevanten Figuren) beschrieben, nur der Veranschaulichung. Wenn gewünscht, kann ein beliebiger Typ eines Registers verwendet und modifiziert werden (z.B. während Neutaktungsoperationen).
  • 7 zeigt eine Darstellung einer Anzahl möglicher Zustände, die mit Beispielen von Datenverriegelungsregistern innerhalb einer integrierten Schaltung (z.B. PLD 100) assoziiert sind. Die Register von FIG. 7 können normale Benutzerregister oder Pipeline-Register sein, die verwendet werden, um die Verbesserung der Leistung der Vorrichtung 100 zu unterstützen. Insbesondere können mögliche Zustände, die mit den Registern assoziiert sind (z.B. einem Satz von Pipeline-Registern 306 innerhalb der PLD 100, einem Satz beliebiger Register innerhalb der PLD 100, einem Satz beliebiger Register innerhalb einer logischen Schaltung usw.), Zustände S1, S2, S3, S4, S10, S11, S12 und Rücksetzen umfassen.
  • Pfeile, die von einem gegebenen ersten Zustand zu einem zweiten gegebenen Zustand weisen, können mögliche Übergänge vom ersten gegebenen Zustand in den zweiten gegebenen Zustand anzeigen. Die möglichen Übergänge können auftreten, wenn die Register unter Verwendung eines oder mehrerer Taktsignale (z.B. nach einem Taktzyklus eines Taktsignals, an einer Anstiegkante eines Taktsignals, an einer Abfallkante eines Taktsignals, sowohl an der Anstieg- als auch Abfallkante eines Taktsignals usw.) getaktet werden, um die Register zu unterstützen, einen ankommenden Zustandswert zu verriegeln. Mit anderen Worten, während eines einzelnen Zustandsübergangs können die primären Eingänge einen neuen Satz von Werten aufweisen und die Register können für einen einzelnen Taktzyklus getaktet werden, um einen neuen Satz von Werten zu liefern, den die Register halten. Als Beispiel kann eine erste Taktanstiegkante die Register veranlassen, vom Zustand S12 in den Zustand S1 überzugehen. Als weiteres Beispiel kann eine zweite Taktanstiegkante ein selbstzyklierender Übergang sein, wie wenn der Zustand S11 keinen Übergang eingeht (z.B. der Zustand S11 wird aufrechterhalten).
  • Die Pfeile können eine Direktionalität aufweisen. Beispielsweise kann ein Übergang vom Zustand S12 in den Zustand S1 auftreten, wie durch die Richtung des Pfeils angezeigt, der die beiden Zustände verbindet. Im Gegensatz dazu kann Zustand S1 zu Zustand S12 ein unmöglicher Übergang sein, da der Pfeil nicht in diese Richtung zeigt. Ferner kann Zustand S12 zu Zustand S11 auch ein unmöglicher Übergang sein, da es keinen direkten Weg gibt, der die beiden verbindet. Dies dient jedoch nur der Veranschaulichung. Wenn gewünscht, können die Zustände und Übergänge zwischen den Zuständen mit einem gegebenen Satz von Registern übereinstimmen, die ein beliebiges geeignetes Verhalten zeigen können. Beispielsweise können die Zustände S3 und S4 ein Übergang zwischen einander sein.
  • Hochfahrschaltungen oder Startschaltungen (z.B. Initialisierungsschaltungen) innerhalb der integrierten Schaltung 100 können Register hochfahren, und somit die Register mit einem unbekannten Zustand versehen. Um die integrierte Schaltung zu betreiben, kann es zweckmäßig sein, Register in einen bekannten Zustand beim Start der Vorrichtung zurückzusetzen. Der bekannte initialisierte Zustand kann als Rücksetzzustand (z.B. Rücksetzzustand 700) bezeichnet werden. Um den Rücksetzzustand 700 zu erreichen, können ein oder mehrere Taktsignale getaktet werden, um eine Rücksetzsequenz (z.B. einen bestimmten Satz von Übergängen zwischen den möglichen Zuständen) an die Register zu liefern. Die Initialisierungsschaltungen können verwendet werden, um die Rücksetzsequenz an die Register zu liefern, wenn gewünscht. Die Rücksetzsequenz kann ein Satz von Übergängen sein, der garantiert, dass, egal in welchen Zustand die Register hochgefahren werden, der Rücksetzzustand 700 unter Verwendung der Rücksetzsequenz erreicht werden kann. Beispielsweise kann eine Rücksetzsequenz in den Zustand S3 während einiger Initialzustände übergehen, bevor der letzte Übergang in den Rücksetzzustand 700 erfolgt. Als weiteres Beispiel kann die Rücksetzsequenz die Register veranlassen, vom Zustand S11 in den Rücksetzzustand 700 überzugehen. Dies dient nur der Veranschaulichung. Wenn gewünscht, kann eine beliebige Rücksetzsequenz verwendet werden, um die Register (z.B. Pipeline-Register) in den Rücksetzzustand 700 zu bringen.
  • Nach dem Erreichen des Rücksetzzustands 700 können die Register in einem ersten Satz von Zuständen arbeiten, die als legale Zustände bezeichnet werden, wie die legalen Zustände 702. Mit anderen Worten, nach dem Rücksetzen der Register kann nur auf die legalen Zustände durch die Register zugegriffen werden. Die Zustände, auf die nach Rücksetzoperationen nicht zugegriffen werden kann, werden als illegale Zustände bezeichnet, wie die illegalen Zustände 704. Beispielsweise können nach dem Erreichen des Rücksetzzustands 700 alle weiteren Übergänge vom Rücksetzzustand 700 zwischen den Zuständen S1, S2, S3, S4 und Rücksetzen zyklieren, kollektiv legale Zustände 702. Mit anderen Worten, es kann keinen Übergang von den legalen Zuständen 702 zu beliebigen Zuständen in den illegalen Zuständen 704 (z.B. Zuständen S10, S11 und S12) geben.
  • Das Diagramm von 7 kann für Register in einer gegebenen Auslegung gelten. Wenn sich die gegebene Auslegung ändert, kann sich das Diagramm von 7 entsprechend ändern. Beispielsweise können die Werkzeuge 576 von 5 Neutaktungsoperationen vornehmen, welche die Auslegung der Register ändern (z.B. Register quer durch Abschnitte kombinatorischer Logik bewegen). Die Anzahl der Register selbst kann in der neugetakteten Schaltung unterschiedlich sein, was impliziert, dass die Anzahl von Zuständen in der neugetakteten Schaltung auch unterschiedlich sein kann. Somit kann die ursprüngliche Rücksetzsequenz nicht in der Lage sein, die Auslegungsänderungen zu berücksichtigen und die Register in der geänderten Auslegung in den Rücksetzzustand geeignet zurückzusetzen.
  • Insbesondere zeigt 8A eine veranschaulichende Schaltung, wie die Schaltung 800, in einer integrierten Schaltung 100, die neugetaktet werden kann, um effizienter betrieben zu werden, wie in 2 beschrieben. Die Schaltung 800 kann ein logisches NICHT-UND-Gate 802, logische UND-Gates 804 und 806, und Register 810, 812 und 814 aufweisen. Eines oder mehrere der Register 810, 812 und 814 können Pipeline-Register sein.
  • Das logische NICHT-UND-Gate 802 kann einen ersten Eingang haben, der mit dem Eingang b gekoppelt ist. Das logische NICHT-UND-Gate 802 kann einen zweiten Eingang haben, der mit einem Ausgang des Registers 810 gekoppelt ist. Ein Eingangsanschluss (z.B. Dateneingangsanschluss) des Registers 810 kann mit einem Eingang a gekoppelt sein. Das UND-Gate 804 kann zwei Eingangsanschlüsse aufweisen. Ein erster Eingangsanschluss des UND-Gates 804 kann mit dem Ausgangsanschluss des Registers 810 gekoppelt sein. Ein zweiter Eingangsanschluss des UND-Gates 804 kann mit einem Ausgang des Registers 812 gekoppelt sein. Ein Eingangsanschluss (z.B. Dateneingangsanschluss) des Registers 812 kann mit einem Eingang a gekoppelt sein. Das UND-Gate 806 kann zwei Eingangsanschlüsse aufweisen. Ein erster Eingangsanschluss des UND-Gates 806 kann mit einem Ausgangsanschluss des NICHT-UND-Gates 802 gekoppelt sein. Ein zweiter Eingangsanschluss des UND-Gates 806 kann mit einem Ausgangsanschluss des UND-Gates 804 gekoppelt sein. Das Register 814 kann einen Ausgang des UND-Gates 806 empfangen und einen Ausgang h liefern. Die Register 810, 812 und 814 können unter Verwendung eines gegebenen Taktsignals getaktet werden (z.B. können die Register 810, 812 und 814 ein Teil derselben Taktdomäne sein). Dies dient nur der Veranschaulichung. Wenn gewünscht, kann eine beliebige Taktungsauslegung verwendet werden.
  • Der Hochfahrprozess für die Schaltung 800 kann unter Verwendung von Initialisierungsschaltungen (nicht gezeigt) innerhalb der integrierten Schaltung 100 vorgenommen werden. Die Initialisierungsschaltungen können auch Rücksetzoperationen unter Verwendung von Rücksetzsequenzen vornehmen. Wie in Verbindung mit 7 beschrieben, können die Register nach dem Hochfahren und vor dem Rücksetzen einen unbekannten Zustand halten. Beispielsweise können die Register 810 den Wert „0“ halten, die Register 812 können den Wert „0“ halten, und die Register 814 können den Wert „1“ halten. Alternativ dazu können die Register 810, 812 und 814 in einen anderen Zustand hochfahren. Die Register 810, 812 und 814 können unter Verwendung einer Rücksetzsequenz zurückgesetzt werden, um bekannte Rücksetzzustandswerte an die Register 810, 812 und 814 zu liefern. Beispielsweise kann die Schaltung 800 einen Rücksetzzustand des Registers 810 aufweisen, das den Wert „0“ hält, des Registers 812, das den Wert „0“ hält, und des Registers 814, das den Wert „0“ hält. Die assoziierte Rücksetzsequenz, um die Schaltung 800 in den Rücksetzzustand zu bringen, weist einen einzelnen Übergang auf, der für einen einzelnen Taktzyklus unter Verwendung eines Taktsignals getaktet ist. Insbesondere während des einzelnen Taktzyklus kann das NICHT-UND-Gate 802 einen Wert „1“ vom Eingang b empfangen, während die Register 810 und 812 einen Wert „0“ vom Eingang a empfangen können.
  • Nach dem einzelnen Taktzyklus werden die Register 810 und 812 mit bekannten Werten von „0“ versehen. Das Register 814 kann auch in einem unbekannten Zustand von „0“ sein, da, ungeachtet vorheriger Werte, die in den Registern 810 und 812 gespeichert sind, das Register 814 einen Wert von „0“ nach dem einzelnen Taktzyklus hält. Wenn beispielsweise, wie vorstehend beschrieben, die Register 810 und 812 beide Werte von „0“ vor dem einzelnen Taktzyklus halten, empfängt das UND-Gate 806 einen Wert von „1“ an seinem ersten Eingangsanschluss und einen Wert von „0“ an seinem zweiten Eingangsanschluss und liefert einen Wert von „0“ an das Register 814 während des einzelnen Taktzyklus. Andere Szenarios werden weggelassen, um die vorliegenden Ausführungsform nicht unnötig zu verkomplizieren.
  • In einer Ausführungsform kann das Werkzeug 576 eine Neutaktung an der Schaltung 800 von 8A vornehmen, um das Register 810 quer über den Knoten 820 zu bewegen (z.B. Auffächerungsknoten 820), wie durch den gestrichelten Pfeil 822 angezeigt. Nach den Neutaktungsoperationen kann die Schaltung 800 von 8A in die neugetaktete Schaltung 800' von 8B umgewandelt werden.
  • Als Ergebnis der Neutaktung kann das Register 810 von der neugetakteten Schaltung 800' entfernt werden und durch die Register 810-1 und 810-2 ersetzt werden. Der zweite Eingangsanschluss des NICHT-UND-Gates 802 kann mit einem Ausgangaanschluss des Registers 810-1 gekoppelt werden. Ein Dateneingangsanschluss des Registers 810-1 kann Werte vom Eingang a empfangen. Der erste Eingangsanschluss des UND-Gates 804 kann mit einem Ausgangsanschluss des Registers 810-2 gekoppelt werden. Ein Dateneingangsanschluss des Registers 810-2 kann Werte vom Eingang a empfangen.
  • Wie vorstehend in Verbindung mit dem Rücksetzregister 814 beschrieben, kann das Register 814 auf einem bekannten Wert von „0“ sein, ungeachtet der vorherigen Werte, die in den Registern 810 und 812 nach dem einzelnen Taktzyklus gespeichert sind. Mit anderen Worten, der im Register 814 gespeicherte Wert kann nach dem einzelnen Taktzyklus deterministisch sein. In der neugetakteten Schaltung 800' kann der im Register 814 gespeicherte Wert jedoch kann nach dem einzelnen Taktzyklus nicht deterministisch sein. Nach dem Hochfahren und vor den Rücksetzoperationen können die Register 810-1, 810-2 und 812 beispielsweise logische Werte von „0“, „1“ bzw. „1“ haben. Nach dem einzelnen Taktzyklus-Rücksetzen, wie in 8A beschrieben, kann daher das UND-Gate 806 einen logischen Wert von „1“ an seinem ersten Eingang und auch eine logischen Wert von „1“ an seinem zweiten Eingang empfangen. Als Folge kann das Register 814 einen logischen Wert von „1“ nach dem einzelnen Taktzyklus halten, und die neugetaktete Schaltung 800' kann nicht in einem Rücksetzzustand sein. Da mit wenigstens einem möglichen Hochfahrzustand der neugetakteten Schaltung 800' die neugetaktete Schaltung 800' den Rücksetzzustand unter Verwendung der einzelnen Taktzyklus-Rücksetzsequenz nicht erreichen kann, wäre es zweckmäßig, eine neue Rücksetzsequenz vorzusehen, die der neugetakteten Schaltung 800' geeignet helfen kann, den beabsichtigen Rücksetzzustand zu erreichen.
  • Es kommt zu einem Problem mit der einzelnen Taktzyklus-Rücksetzsequenz, wenn die Register 810-1 und 810-2 nicht denselben Wert halten/speichern können (z.B. wenn das eine eine logische „0“ hält, und das andere eine logische „1“ hält). Wenn die Register 810-1 und 810-2 denselben Wert speichern sollen, dann kann der im Register 814 gespeicherte Wert deterministisch sein wie in der Schaltung 800. Um die Register 810-1 und 810-2 mit demselben Wert zu versehen, kann eine Einstellsequenz an die einzelne Taktzyklus-Rücksetzsequenz angehängt (spezifischer vorangestellt) werden. Mit anderen Worten, die einzelne Taktzyklus-Rücksetzsequenz kann um eine Anzahl von Taktzyklen der Einstellsequenz verzögert werden.
  • Die Einstellsequenz kann eine gegebene Länge aufweisen (z.B. eine Einstelllänge oder eine Länge auf der Basis eines Einstellwerts), die eine Anzahl von Übergängen zwischen Zuständen spezifiziert. Mit anderen Worten, die gegebene Länge kann eine Anzahl von Taktzyklen bestimmen, die von den neugetakteten Schaltungen (z.B. der neugetakteten Schaltung 800') getaktet werden können, um logische Werte an die Register zu liefern, um zu helfen, die Register zurückzusetzen. Beispielsweise kann die gegebene Länge auf der Basis von Typen von Schaltungen innerhalb der integrierten Schaltung 100 berechnet werden. Der Berechnungsprozess kann durch die Charakterisierung verschiedener Schaltungen innerhalb der integrierten Schaltung 100 nach ihren Typen bestimmt werden, wie in nachfolgenden Ausführungsformen detailliert ausgeführt.
  • Um die neugetaktete Schaltung 800' geeignet zurückzusetzen, kann die gegebene Länge berechnet werden, um gleich Eins zu sein. Während der Anzahl von Taktzyklen (z.B. während der Implementierung der Einstellsequenz) können Zufallswerte (z.B. logische Werte von „0“ oder „1“) an die Register (z.B. Register 810-1, 810-2 und 812) geliefert werden, indem Zufallswerte an die primären Ausgänge angelegt werden. Da die Eingangsanschlüsse der Register 810-1 und 810-2 beide mit dem Auffächerungsknoten 820 gekoppelt sind, der mit dem Eingang a gekoppelt ist, können während der Einstellsequenz, die einen Taktzyklus dauert, wenn ein zufälliger logischer Wert von „1“ oder „0“ am Eingang a geliefert wird, die Register 810-1 und 810-2 mit demselben Zufallswert versehen werden. Als solche kann nach der Implementierung der Einstellsequenz unter Verwendung der Initialisierungsschaltungen die einzelne Taktzyklus-Rücksetzsequenz verwendet werden, um die neugetaktete Schaltung 800' geeignet zurückzusetzen.
  • Die Einstellsequenz kann im Wesentlichen von der Anzahl von Taktzyklen und nicht primären Dateneingängen (z.B. an Register gelieferten Daten) abhängig sein. Mit anderen Worten, es wird gestattet, dass die Register zufällige primäre Eingangswerte während der Gesamtheit der Einstellsequenz empfangen. Somit kann die Einstellsequenz bezeichnet werden, eine Anzahl „leerer“ Taktzyklen aufzuweisen.
  • Die der Rücksetzsequenz vorangestellte Einstellsequenz kann als eingestellte Rücksetzsequenz oder neugetaktete Rücksetzsequenz bezeichnet werden. Das Beispiel der Einstellsequenz mit einer Länge von Eins dient nur der Veranschaulichung. Wenn gewünscht, kann die Einstellsequenz eine beliebige Länge aufweisen. Die Einstellsequenz kann auch Werte liefern, die nicht zufällig sind, wenn gewünscht.
  • Gemäß einer Ausführungsform können hier Schaltungen, wie die in 8A gezeigte Schaltung 800, als „ursprüngliche“ Schaltung bezeichnet werden (z.B. eine Schaltung vor der Neutaktung oder allgemein eine Schaltung, bevor sich irgendein Register zur Optimierung bewegt, wie Registerverschmelzung, Registerduplizierung usw.). Die mit der ursprünglichen Schaltung assoziierte Rücksetzsequenz kann hier als „ursprüngliche“ Rücksetzsequenz bezeichnet werden. Schaltungen, die modifiziert wurden, wie die in 8A gezeigte Schaltung 800', können hier als neugetaktete Schaltung (z.B. eine Schaltung nach der Neutaktung) bezeichnet werden. Die mit der neugetakteten Schaltung assoziierte Rücksetzsequenz kann hier als „neugetaktete“ Rücksetzsequenz bezeichnet werden, wobei sie allgemein zur Berücksichtigung verschiedener Typen von Registerbewegungen, als „eingestellte“ Rücksetzsequenz bezeichnet wird.
  • Insbesondere können Schaltungen (z.B. die Schaltung 800') hier als c-Zyklus-verzögerte Versionen ursprünglicher Schaltungen (z.B. Schaltung 800) bezeichnet werden, da eine Einstellsequenz von c Taktzyklen verwendet werden kann, um eine ursprüngliche Rücksetzsequenz zu verzögern, um eine eingestellte Rücksetzsequenz zu generieren. Beispielsweise kann die Schaltung 800' eine 1-Zyklus-verzögerte Version der Schaltung 800 sein, da eine Einstellsequenz eines Taktzyklus verwendet werden kann, um eine ursprüngliche Rücksetzsequenz zu verzögern, um die eingestellte Rücksetzsequenz zu generieren.
  • Weitere Details des Generierens von c-Zyklus-verzögerten Rücksetzsequenzen werden in der US-Patentanmeldung Nr. 15/342,286 angegeben, mit dem Titel „METHODS FOR DELAYING REGISTER RESET FOR RETIMED CIRCUITS“, die hier durch Bezugnahme zur Gänze eingeschlossen ist. Zusätzlich werden weitere Details des Generierens von c-Zyklus-verzögerten Rücksetzsequenzen, die einen benutzerspezifizierten maximalen c Wert oder Einstellwert aufweisen, in der US-Patentanmeldung Nr. 15/352,487 angegeben, mit dem Titel „METHODS FOR BOUNDING THE NUMBER OF DELAYED RESET CLOCK CYCLES FOR RETIMED CIRCUITS“, die hier ebenfalls durch Bezugnahme zur Gänze eingeschlossen ist. Ferner werden weitere Details in Bezug auf die Verifikation der generierten c-Zyklus-verzögerten Rücksetzsequenzen in der US-Patentanmeldung Nr. 15/354,809 angegeben, mit dem Titel „METHODS FOR VERIFYING RETIMED CIRCUITS WITH DELAYED INITIALIZATION“, die hier durch Bezugnahme zur Gänze eingeschlossen ist.
  • 9 zeigt ein Flussdiagramm veranschaulichender Schritte zum Rücksetzen neugetakteter Schaltungen (z.B. neugetaktete Schaltung 800' in 8B).
  • In Schritt 900 kann eine Auslegungsvorrichtung eine Vorrichtungsauslegung für eine Zielvorrichtung (z.B. eine programmierbare integrierte Schaltung) vornehmen. Als Beispiel kann ein logisches Entwurfssystem (z.B. CAD-Werkzeuge 420 in 4) Auslegungsdaten an Auslegungsdaten-Ladeausrüstung liefern, die dann Auslegungsdaten an die Zielvorrichtung unter Verwendung einer Auslegungsvorrichtung liefert (z.B. Auslegungssystem, Auslegungsschaltungen usw.), wodurch eine Vorrichtungsauslegung vorgenommen wird. Wenn gewünscht, kann die Auslegungsvorrichtung ein Teil der Zielvorrichtung oder getrennt von der Zielvorrichtung sein.
  • In Schritt 902 kann ein Initialisierungsmodul (z.B. ein Auto-Initialisierungsmodul) logische Schaltungen innerhalb der Zielvorrichtung freigeben. Mit anderen Worten, kann das Initialisierungsmodul durch die Freigabe der logischen Schaltungen die Zielvorrichtung in den Benutzermodus übergehen lassen. Beispielsweise kann das Initialisierungsmodul innerhalb der Zielvorrichtung (z.B. der programmierbaren integrierten Schaltung) sein.
  • In Schritt 904 kann das Initialisierungsmodul eine c-Zyklus-Initialisierung an der ausgelegten Zielvorrichtung vornehmen (d.h. an diese die Einstellsequenz liefern), wie in 8A und 8B beschrieben. Um die c-Zyklus-Initialisierung vorzunehmen, kann das Initialisierungsmodul zuerst eine Länge der Einstellsequenz (z.B. eine Anzahl „leerer“ Taktzyklen) empfangen, von denen garantiert ist, dass sie die neugetakteten Schaltungen an der ausgelegten Zielvorrichtung (beispielsweise von der Auslegungsvorrichtung) geeignet zurücksetzen. Die Bestimmung der Einstellsequenz und die Implementierung der c-Zyklus-Initialisierung können vor dem Benutzer als Beispiel verborgen werden.
  • Wenn gewünscht, können die Rücksetzsequenz und insbesondere die Einstellsequenz ohne irgendeine Benutzereingabe (z.B. ohne vom Benutzer platzierte Einschränkungen) bestimmt werden. Alternativ dazu kann der Benutzer eine maximale Rücksetzsequenzlänge an die CAD-Werkzeuge 420 liefern, um eine Einstellsequenz zu generieren, die sich an die Längeneinschränkung für die maximale Rücksetzsequenz hält. Nachdem die CAD-Werkzeuge 420 eine Einstellsequenz und eine entsprechende eingestellte Rücksetzsequenz generieren, können ferner Verifikationsschaltungen verifizieren, dass die Einstellsequenz und die entsprechende eingestellte Rücksetzsequenz die neugetakteten Schaltungen geeignet zurücksetzen.
  • In Schritt 906 kann der Benutzer den neugetakteten logischen Entwurf liefern, die an der Zielvorrichtung mit der benutzerdefinierten Rücksetzsequenz ausgelegt wird. Mit anderen Worten, Rücksetz-Initialisierungsschaltungen können eine benutzerspezifizierte Rücksetzsequenz an die ausgelegte Zielvorrichtung liefern. Nachdem die Einstellsequenz der benutzerdefinierten Rücksetzsequenz vorangestellt wird, können die neugetakteten Schaltungen innerhalb der ausgelegten Zielvorrichtung geeignet zurückgesetzt werden. Der Benutzer kann das benutzerdefinierte Rücksetzen beispielsweise nur nach der Vornahme einer c-Zyklus-Initialisierung in Schritt 904 vornehmen.
  • Nachdem der Benutzer die ausgelegte Zielvorrichtung mit der eingestellten Rücksetzsequenz versehen hat, welche die Einstellsequenz und die benutzerspezifiierte Rücksetzsequenz aufweist, können in Schritt 906 Rücksetz-Initialisierungsschaltungen die Benutzer-Rücksetzperiode verlassen und logische Schaltungen an der ausgelegten Zielvorrichtung in legalen Zuständen betreiben, die in 7 beschrieben sind. Mit anderen Worten, die Rücksetz-Initialisierungsschaltungen können Signale liefern, die anzeigen, dass die ausgelegte integrierte Schaltung geeignet zurückgesetzt ist und einen Normalbetrieb beginnen kann.
  • 10 zeigt zur Veranschaulichung Rücksetz-Initialisierungsschaltungen innerhalb der PLD 100. Die Rücksetz-Initialisierungsschaltungen können Auslegungsschaltungen 1000, ein Auto-Initialisierungsmodul 1002 und Benutzerlogik 1004 aufweisen. Die Rücksetz-Initialisierungsschaltungen können als Beispiele zur Gänze aus weicher Logik oder festverdrahteter Logik gebildet sein. Wenn gewünscht, kann ein Abschnitt der Rücksetz-Initialisierungsschaltungen aus weicher Logik gebildet sein, und ein anderer Abschnitt der Rücksetz-Initialisierungsschaltungen kann aus festverdrahteter Logik gebildet sein.
  • Insbesondere können die Auslegungsschaltungen 1000 ein sicherer Geräte-Manager (SDM), ein lokaler Sektor-Manager oder ein beliebiger anderer Typ einer harten Steuerlogik sein. Alternativ dazu können die Auslegungsschaltungen 1000 auch aus weicher Logik gebildet sein (z.B. aus auslegbarer Logik gebildet sein). Die Auslegungsschaltungen 1000 können ein Signal generieren, das anzeigt, wenn die Auslegung einer integrierten Zielschaltung vollendet ist (z.B. Signal ConfigDone). Alternativ dazu können die Auslegungsschaltungen 1000 das Signal ConfigDone empfangen, wenn ein anderer Abschnitt der PLD 100 den Auslegungsprozess der PLD 100 überwacht (z.B. Schritt 900 in 9). Ähnlich können die Auslegungsschaltungen 1000 ein Signal (z.B. Signal InitDone) generieren oder empfangen, das anzeigt, wenn die Freigabe der logischen Schaltungen innerhalb der PLD 100 abgeschlossen sein kann, wie in Schritt 902 in 9 beschrieben.
  • Durch die Feststellung, wenn die Auslegung und Freigabe der PLD 100 vollendet sind (z.B. wenn jeweilige Signale ConfigDone und InitDone aktiviert werden), können die Auslegungsschaltungen 1000 anzeigen, wann das weiche Auto-Initialisierungsmodul 1002 beginnen kann, eine c-Zyklus-Initialisierung vorzunehmen, indem ein Signal Start an das Auto-Initialisierungsmodul 1002 geliefert wird. Zusätzlich können die Auslegungsschaltungen 1000 auch eine Einstellsequenzlänge, oder eine Anzahl „leerer“ Taktzyklen, von den CAD-Werkzeugen 420 in 4 empfangen oder intern generieren. Die Einstellsequenzlänge Ci kann an Auto-Initialisierungsschaltungen beispielsweise parallel mit dem Signal Start geliefert werden.
  • Das Auto-Initialisierungsmodul 1002 kann hier manchmal als weiches logisches Modul 1002 bezeichnet werden. Während die Auslegungsschaltungen 1000 unter Verwendung von harter Logik gebildet werden können, die eine dedizierte Funktion aufweist, kann das weiche logische Modul 1002 programmiert werden, um die Funktionen eines Auto-Initialisierungsmoduls vorzunehmen. Beispielsweise kann während der Auslegung und Initialisierung (z.B. Freigabe) der PLD 100 das Auto-Initialisierungsmodul 1002 automatisch unter Verwendung programmierbarer Hardware innerhalb der PLD 100 implementiert werden. Als Beispiel kann das Auto-Initialisierungsmodul 1002 an der PLD 100 nur implementiert werden, wenn ein Benutzer angezeigt hat (unter Verwendung einer Benutzereingabe oder eines Eingangssignals), dass es zweckmäßig sein kann, eine c-Zyklus-Initialisierung vorzunehmen. Als weiteres Beispiel kann das Auto-Initialisierungsmodul 1002 an der PLD 100 implementiert werden, wenn Entwurfswerkzeuge 420 einen Zählwert c größer als Null berechnen (was ein mögliches ungeeignetes Rücksetzen anzeigt).
  • Die Benutzerlogik 1004 kann mit dem Auto-Initialisierungsmodul 1002 kommunizieren. Insbesondere kann die Benutzerlogik 1004 ein Signal Reqi an das Auto-Initialisierungsmodul 1002 liefern, um selektiv ein funktionelles Rücksetzen von Registern innerhalb der PLD 100 vorzunehmen. Das funktionelle Rücksetzen kann vom dem Initial-Rücksetzen nach der Initialauslegung und Freigabe der PLD 100 verschieden sein. Das funktionelle Rücksetzen kann durch Ereignisse ausgelöst werden, die beispielsweise während des Betriebs der PLD 100 entstehen, oder andere geeignete Auslöseereignisse.
  • Ein Ausgangssignal T0i (manchmal hier als Rücksetz-Steuersignal T0i bezeichnet) kann von dem Auto-Initialisierungsmodul 1002 an die Benutzerlogik 1004 als dem Signal Reqi entsprechendes Signal geliefert werden, das von der Benutzerlogik 1004 an das Auto-Initialisierungsmodul 1002 gesendet wird. Insbesondere kann das Signal T0i anzeigen, wann eine benutzerspezifizierte Rücksetzsequenz beginnen kann. Mit anderen Worten, wenn das Signal T0i aktiviert wird, haben Register innerhalb der PLD 100 ein Takten der vorangestellten Einstellsequenz beendet und sind bereit, die ursprüngliche Rücksetzsequenz (z.B. die benutzerspezifizierte Rücksetzsequenz) zu empfangen. Zusätzlich kann das Signal T0i ansprechend auf das Signal Reqi aktiviert werden. Insbesondere wenn dass Signal Reqi aktiviert wird, kann auch das Signal T0i aktiviert werden. Beispielsweise kann das Signal T0i nur deaktiviert werden, nachdem das Signal Reqi deaktiviert wird.
  • Wie vorstehend in Verbindung mit dem Generieren von c-Zyklus-versetzten Rücksetzsequenzen und Einstellsequenzen beschrieben, können eingestellte Rücksetzsequenzen und Einstellsequenzen auf einer Pro-Takt-Basis geliefert werden. Mit anderen Worten, ein Register, das ein erstes Taktsignal empfängt, kann getrennt verarbeitet werden (z.B. getrennt eine c-Zyklus-Initialisierung, getrennt ein Rücksetzen vornehmen) von dem Register, das ein zweites, anderes Taktsignal empfängt. Wenn gewünscht, können jedoch die beiden Typen von Registern parallel verarbeitet oder zurückgesetzt werden. Wie in 10 gezeigt, kann die Benutzerlogik für die Domäne i sein, wobei i für eine bestimmte Taktdomäne steht. Die Benutzerlogik 1005 für die Domäne i (z.B. Benutzerlogik 1005 der Domäne i) kann ein Signal Clki, welches das Taktsignal für die Domäne i ist, an das Auto-Initialisierungsmodul 1002 liefern. Zusätzlich können die Signale Ci, Reqi und T0i auch auf der Basis der Domäne i generiert werden.
  • Als Beispiel können die Entwurfswerkezuge 420 einen Schaltungsentwurf optimieren, die an der PLD 100 zu implementieren ist (z.B. durch die Vornahme von Neutaktungsoperationen, oder durch die Vornahme beliebiger anderer Operationen, die ein Rücksetzen des Schaltungsentwurfs beeinflussen können, welche an der PLD 100 implementiert wird, usw.). Wenn durch den Optimierungsprozess (z.B. Neutaktungsprozess), der von den Entwurfswerkzeugen 420 vorgenommen wird, der Zählwert c für eine beliebige Taktdomäne größer ist als Null, was ein mögliches ungeeigneten Rücksetzen der relevanten Schaltungen anzeigt, kann automatisch eine entsprechende c-Zyklus-verzögerte Rücksetzsequenz für jede Taktdomäne implementiert werden. Mit anderen Worten, wenn die Registerneutaktung eine Einstellsequenz erfordert, wird die Einstellsequenz automatisch eingefügt (d.h. Auto-Einfügen), um Rücksetzoperationen geeignet vorzunehmen.
  • 11 zeigt ein veranschaulichendes Auto-Initialisierungsmodul, das innerhalb der PLD 100 implementiert ist. Das Auto-Initialisierungsmodul 1002 kann einen c-Zyklus-Zähler 1100 aufweisen. Der c-Zyklus-Zähler 1100 kann eine Einstellsequenzlänge ci empfangen (hier manchmal als c-Zykluslänge ci bezeichnet). Der c-Zyklus-Zähler 1100 kann von der c-Zykluslänge ci gemäß einem Taktsignal Clki abwärts zählen, das von der Benutzerlogik 1004 empfangen wird. Wie vorstehend beschrieben, kann die c-Zykluslänge Ci derselben Domäne i entsprechen wie das Taktsignal Clki.
  • In einem ersten Betriebsmodus kann die Synchronisationsschaltung 1102-1 das Signal Start (manchmal hier als Auslösesignal Start oder Rücksetz-Auslösesignal Start bezeichnet) von den Auslegungsschaltungen 1000 empfangen. Die Synchronisationsschaltung 1102-2 kann das Rücksetz-Auslösesignal Start mit dem Taktsignal Clki synchronisieren, so dass der c-Zyklus-Zähler 1100 die Einstellsequenzlänge ci korrekt zählen kann (z.B. eine korrekte Anzahl „leerer“ Taktzyklen des Taktsignals Clki liefern kann). Nach dem Analysieren des Taktsignals Clki für eine Anzahl von Taktzyklen kann die Synchronisationsschaltung 1102-1 das synchronisierte Rücksetz-Auslösesignal starti* liefern, was anzeigt, dass der c-Zyklus-Zähler 1100 beginnen kann, Operationen zu zählen. Mit anderen Worte, das synchronisierte Rücksetz-Auslösesignal starti* kann den c-Zyklus-Zähler 1100 einschalten zu beginnen, Operationen zu zählen.
  • Zu irgendeiner gegebenen Zeit kann das Signal COUNT einen aktuellen Zählwert des c-Zyklus-Zählers 1100 an die Rücksetz-Steuerschaltung 1104 liefern. Insbesondere kann die Rücksetz-Steuerschaltung 1104 das Rücksetz-Steuersignal T0i an die Benutzerlogikdomäne liefern. In einem Szenario, wenn das Signal Reqi* deaktiviert wird, und das Signal COUNT einen aktuellen Nicht-Null-Zählwert liefert, kann dann ein deaktiviertes Ausgangssignal T0i an die Benutzerlogik 1004 geliefert werden, was anzeigt, dass die Einstellsequenz unvollständig ist. Das Rücksetz-Steuersignal T0i kann aktiviert werden, wenn ein aktueller Zählwert von Null an die Rücksetz-Steuerschaltung 1104 geliefert wird. Die Rücksetz-Steuerschaltung 1104 kann ein Quittungsaustauschprotokoll mit dem synchronisierten Signal Reqi* für eine robuste Kommunikation vornehmen, was nachstehend detailliert beschrieben wird.
  • Das Auto-Initialisierungsmodul kann ferner eine Synchronisationsschaltung 1102-2 aufweisen, die das Rücksetz-Anforderungssignal Reqi von der Benutzerlogik 1004 empfangen kann. Analog zur Synchronisationsschaltung 1102-1 kann die Synchronisationsschaltung 1102-2 das Benutzer-Rücksetzsignal Reqi mit dem Taktsignal Clki synchronisieren. Die Synchronisationsschaltung 1102-2 kann das entsprechende synchronisierte Benutzer-Rücksetzsignal Reqi* generieren. Der c-Zyklus-Zähler 1100 und die Rücksetz-Steuerschaltung 1104 können das synchronisierte Signal Reqi* empfangen.
  • In einem zweiten Betriebsmodus kann eine Benutzer-Rücksetzanforderung (z.B. unter Verwendung des Rücksetz-Auslösesignals Reqi, manchmal hier als Auslösesignal Reqi oder Benutzer-Rücksetz-Anforderungssignal Reqi bezeichnet) an das Auto-Initialisierungsmodul 1002 geliefert werden. Mit anderen Worten, ein aktiviertes Rücksetz-Auslösesignal Reqi kann an das Auto-Initialisierungsmodul 1002 geliefert werden. Das entsprechende synchronisierte Rücksetz-Auslösesignal Reqi* kann den c-Zyklus-Zähler 1000 veranlassen, eine Einstellsequenz zu beginnen. Mit anderen Worten, der c-Zyklus-Zähler 1100 kann Zähloperationen (abwärts) analog zum Betrieb in dem ersten Betriebsmodus vornehmen. Da das Zählen durch eine Benutzeranforderung initialisiert wird, können die Signale Reqi, Reqi*, T0i sequentiell miteinander kommunizieren, um zu übermitteln, wann jeder Schritt der Rücksetzoperationen vollendet ist. Insbesondere kann diese sequentielle Kommunikation hier als „Quittungsaustausch“-Operation oder „quittungsaustauschende“ Operation bezeichnet werden. Beispielsweise kann die Quittungsaustausch-Operation mit einem Rücksetz-Auslösesignal und einem Rücksetz-Steuersignal vorgenommen werden.
  • Wenn beispielsweise der c-Zyklus-Zähler die Einstellsequenz vollendet, die durch ein synchronisiertes Signal des Anforderungssignals Reqi von der Benutzerlogik 1004 veranlasst wurde, kann das Rücksetz-Steuersignal T0i anschließend mit der Benutzerlogik 1004 durch die Aktivierung des Signals T0i kommunizieren. Ein aktiviertes Signal T0i kann der Benutzerlogik 1004 anzeigen, dass die Einstellsequenz vollendet wurde, und eine benutzerspezifizierte Rücksetzsequenz kann beginnen. Nachdem die Benutzerlogik 1004 eine Bestätigung in der Form eines aktivierten Signals T0i vom Auto-Initialisierungsmodul 1002 empfängt, dass die Einstellsequenz vollendet wurde, kann die Benutzerlogik 1004 das Anforderungssignal Reqi deaktivieren. Die Deaktivierung des Anforderungssignals Reqi kann unter Verwendung des synchronisierten Signals Reqi* an das Auto-Initialisierungsmodul 1002 (beispielsweise insbesondere Rücksetz-Steuerschaltung 1104) übermittelt werden, dass die Benutzerlogik 1004 die Vollendung der Einstellsequenz quittiert hat.
  • 12 zeigt veranschaulichende logische Benutzerschaltungen innerhalb der Rücksetz-Initialisierungsschaltungen in 10. Die logischen Benutzerschaltungen 1004 können eine Benutzer-Rücksetz-Zustandsmaschine 1200 und eine Taktgeneratorschaltung 1202 aufweisen. Die Taktgeneratorschaltung 1202 kann ein Taktsignal Clki generieren. Mit anderen Worten, die Taktgeneratorschaltung 1202 kann ein oder mehrere Taktsignale von verschiedenen Taktdomänen erzeugen. Die Taktgeneratorschaltung 1202 kann das generierte Taktsignal Clki an das Auto-Initialisierungsmodul 1002 für eine Synchronisationsoperation liefern, an logische Benutzerschaltungen als Taktungssignal, an die Benutzer-Rücksetz-Zustandsmaschine 1200 für eine beliebige geeignete Verwendung usw. Die Benutzer-Rücksetz-Zustandsmaschine 1200 kann Benutzer-Rücksetzanforderungen generieren und Rücksetzsequenzen implementieren (z.B. eine Einstellsequenz, eine ursprüngliche Rücksetzsequenz usw.).
  • Die Benutzerlogik 1004 für die Domäne i kann logische Benutzerschaltungen 1204 aufweisen (z.B. einen Signifikationsabschnitt der Benutzerlogik 1004, der auf der PLD 100 als Logikentwurf implementiert werden kann). Beispielsweise können die logischen Benutzerschaltungen 1204 neugetaktete Schaltungen, Register oder beliebige andere gewünschte Schaltungen aufweisen. Insbesondere können die logischen Benutzerschaltungen das Register 1206 und andere Register in derselben Taktdomäne aufweisen, wie durch die Ellipsen gezeigt. Die logischen Benutzerschaltungen 1204 können auch Register anderer Taktdomänen aufweisen. Das Register 1206 kann das Taktsignal Clki empfangen (z.B. können das Register 1206 und zusätzliche Register innerhalb der logischen Benutzerschaltungen 1204 unter Verwendung des Taktsignals Clki getaktet werden). Zusätzlich kann das Register 1206 einen primären Eingang oder Eingang Res aufweisen. Der Eingang Res kann hier als Rücksetzeingang bezeichnet werden, da während der Einstellsequenz der tatsächliche Eingang in das Register 1206 irreleant ist. Das geeignete Rücksetzen des Registers 1206 kann beispielsweise nur auf eine Anzahl von Taktzyklen zurückgreifen, die vom Register 1206 während der Einstellsequenz getaktet werden. Der Eingang Res kann das Signal Reseti von der Benutzer-Rücksetz-Zustandsmaschine 1200 empfangen. Das Signal Reseti kann entweder einen Zufallswert in der Einstellsequenz oder ausgewählte Werte während der benutzerspezifizierten Rücksetzsequenz übermitteln.
  • Als Beispiel kann die Rücksetz-Zustandsmaschine 1200 ein Fehlersignal Error von den logischen Benutzerschaltungen 1204 empfangen. Fehlergeneratorschaltungen können das Signal Error nach der Bestimmung generieren, dass ein Fehler innerhalb der logischen Benutzerschaltungen 1204 vorliegen kann. Ein Fehler kann beispielsweise die Existenz eines illegalen Zustands während des Normalbetriebs der logischen Benutzerschaltungen 1204 sein. Es können dedizierte Fehlergeneratorschaltungen vorliegen. Wenn gewünscht, können jedoch mehrere Abschnitte der logischen Benutzerschaltungen 1204 entsprechende Fehlersignale generieren, um an der Benutzer-Rücksetz-Zustandsmaschine 1200 empfangen zu werden.
  • Ansprechend auf den Empfang eines aktivierten Signals Error, kann die Benutzer-Rücksetz-Zustandsmaschine 1200 entsprechend das Rücksetz-Anforderungssignal Reqi aktivieren. Das aktivierte Rücksetz-Anforderungssignal Reqi kann das Auto-Initialisierungsmodul veranlassen, den Fehler durch die Vornahme einer Rücksetzoperation zu lösen.
  • Das Signal T0i kann aktiviert werden, wenn die Rücksetz-Steuerschaltung 1104 innerhalb des Auto-Initialisierungsmoduls 1002 bestimmt hat, dass die Einstellsequenz implementiert wurde (oder c-Zyklus-Initialisierung vollendet wurde). Wenn das Signal T0i aktiviert wird, kann als Beispiel die Benutzer-Rücksetz-Zustandsmaschine 1200 eine beliebige benutzerspezifizierte Rücksetzsequenz für die logischen Benutzerschaltungen 1204 initiieren. Die Benutzer-Rücksetz-Zustandsmaschine 1200 kann auch Reqi deaktivieren, um die Quittungsaustausch-Operation vorzunehmen, wie in 11 beschrieben.
  • 13 ist ein Zeitdiagramm, das einen veranschaulichenden Betriebsmodus für Rücksetz-Initialisierungsschaltungen in 10 zeigt. Insbesondere kann der in 13 gezeigte Betriebsmodus beispielsweise nach der Initialauslegung der PLD 100 implementiert werden. Zur Zeit t0 kann das Signal ConfigDone aktiviert werden, um anzuzeigen, dass die Auslegung einer programmierbaren logischen Vorrichtung auf der Basis eines logischen Entwurfs, der von einem Benutzer vorgesehen wird, vollendet ist. Als solche kann die Zeitperiode vor der Zeit t0 hier als Auslegungsperiode bezeichnet werden. Das Signal ConfigDone kann durch die Auslegungsschaltungen 1000 in 10 generiert werden oder kann von den Auslegungsschaltungen 1000 von Überwachungsschaltungen innerhalb der PLD 100 empfangen werden.
  • Zur Zeit t1 kann das Signal InitDone aktiviert werden, um anzuzeigen, dass die PLD-Eingabe-Ausgabe-Schnittstelle bereit ist, mit einem Benutzer zu interagieren. Mit anderen Worten, das Signal InitDone kann anzeigen, dass die PLD 100 in den Benutzermodus eingetreten ist (z.B. wurde die PLD 100 freigegeben). Als solche kann die Zeitperiode zwischen der Zeit t0 und der Zeit t1 hier als Freigabeperiode oder Übergang zur Benutzermodusperiode bezeichnet werden. Sobald eine Zielvorrichtung in den Benutzermodus eingetreten ist, können Rücksetzoperationen beginnen, die Zielvorrichtung für einen Normalbetrieb innerhalb legaler Zustände vorzubereiten. Um Rücksetzoperationen ausdrücklich auszulösen, können auch das Auslösesignal Start und das Zählwertsignal Count zur Zeit t1 aktiviert werden. Als Beispiel können die Aktivierungen der Signale Start und Count durch die Aktivierung des Signals InitDone ausgelöst werden und können der Aktivierung des Signals InitDone folgen.
  • Zur Zeit t2 kann das Taktsignal Clki von der Benutzerlogik 1004 an das Auto-Initialisierungsmodul 1002 geliefert werden, wie in 10 beschrieben. Das Signal Count kann bei einem Wert gleich einer c-Zykluslänge ci beginnen, wie in 10 und 11 beschrieben. Das Signal Count kann jedoch zu dekrementieren beginnen, wenn ein taktsynchronisiertes Startsignal Starti* zur Zeit t3 aktiviert wird. Zwischen der Zeit t2 und t3 können Synchronisationsschaltungen 1102-1 das Startsignal Starti* durch die Synchronisation des Signals Start gemäß dem Taktsignal Clki generieren.
  • Zur Zeit t3 kann das Signal Count zu dekrementieren beginnen, um eine c-Zyklus-Initialisierung zu beginnen. Beispielsweise kann eine c-Zykluslänge vier sein, somit kann das Signal Count bei einem Wert von vier beginnen. Nach einer Vier-Zyklus-Einstellsequenz (zur Zeit t4) kann das Signal Count einen Wert von Null haben. Die Zeitperiode zwischen der Zeit t1 und t4 kann hier als c-Zyklus-Initialisierungsperiode bezeichnet werden, die sowohl den gesamten Synchronisationsprozess als auch die tatsächlichen Zähloperationen umfasst.
  • Zur Zeit t4 kann das Signal T0i aktiviert werden, um die Vollendung der c-Zyklus-Initialisierung anzuzeigen. Als Beispiel kann das Benutzeranforderungssignal Reqi automatisch während der gesamten Auslegungs-, Freigabe- und c-Zyklus-Initialisierungsoperationen aktiviert werden. Als Beispiel kann das Benutzeranforderungssignal Reqi deaktiviert werden, sobald die c-Zyklus-Initialisierung vollendet wurde. Da Reqi am Ende der c-Zyklus-Initialisierung deaktiviert ist, was ein Fehlen einer benutzerinitiierten Rücksetzanforderung anzeigt, kann das Signal T0i einen Taktzyklus nach der Zeit t4 deaktivert werden, zur Zeit t5. Mit anderen Worten, eine Quittungsaustausch-Operation kann auftreten, wie durch den Pfeil 1300 angezeigt, während welcher das Signal T0i ansprechend gemäß der Deaktivierung des Rücksetzsignals Reqi deaktiviert wird.
  • Nach der c-Zyklus-Initialisierungsperiode kann eine Benutzer-Rücksetzperiode zur Zeit t4 beginnen und zur Zeit t7 enden, während welcher Periode eine Benutzer-Rücksetzsequenz die Einstellsequenz hinzufügen kann, die während der c-Zyklus-Initialisierungsperiode implementiert wird. Insbesondere kann die Benutzer-Rücksetzsequenz zur Zeit t5 beginnen, wenn das Signal T0i ansprechend auf ein Fehlen irgendwelcher Benutzer-Rücksetzanforderungen deaktiviert ist. Die Benutzer-Rücksetzsequenz kann zur Zeit t6 enden, wie durch das Signal Reseti gezeigt. Mit anderen Worten, das Signal Reseti kann eine Einstellsequenz von der Zeit t3 zur Zeit t4 und eine Benutzer-Rücksetzsequenz von der Zeit t5 zur Zeit t6 an die Benutzerlogik 1004 liefern. Das Signal Reseti kann innerhalb der Benutzerlogik 1004 geliefert werden (z.B. von der Benutzer-Rücksetz-Zustandsmaschine 1200 an Schaltungen innerhalb der logischen Benutzerschaltungen 1204, wie in 12 beschrieben). Die Zeit t7 kann den Normalbetrieb der Benutzerlogik beginnen. Beispielsweise können zwischen der Zeit t6 und t7 beliebige andere Rücksetzsequenzen oder Operationen vorgenommen werden, um die Benutzerlogik 1004 aus dem Rücksetzen zu bringen, beginnend zur Zeit t7.
  • 14 ist ein Zeitdiagramm, das einen zusätzlichen veranschaulichenden Betriebsmodus für Rücksetz-Initialisierungsschaltungen in 10 zeigt. Insbesondere kann der in 14 gezeigte Betriebsmodus nach einer Benutzeranforderung für ein Rücksetzen der PLD 100 implementiert werden, die beispielsweise während eines Normalbetriebs einer in der PLD 100 implementierten Benutzerlogik auftreten kann.
  • Zur Zeit t0 kann ein Ereignis innerhalb der Benutzerlogik auftreten, das ein Rücksetzen der Benutzerlogik veranlasst (z.B. auslöst). Zur Zeit t1 kann, ansprechend auf das Ereignis, das Auslösesignal Reqi aktiviert werden, um eine Rücksetzanorderung von der Benutzerlogik 1004 an das Auto-Initialisierungsmodul 1002 zu liefern. Zur Zeit t2 kann das Auslösesignal Reqi mit dem Taktsignal Clki synchronisiert werden, um das synchronisierte Auslösesignal Reqi* zu aktivieren.
  • Zur Zeit t2 kann das Signal Count während einer c-Zyklus-Initialisierungsperiode abwärts zählen, ähnlich dem in 13 beschriebenen Betriebsmodus. Als Beispiel kann ein Zählwert von acht (der eine Einstellsequenz von acht Zyklen anzeigt) innerhalb der Auslegungsschaltungen 1000 gehalten werden, sogar während eines Normalbetriebs der Benutzerlogik 1004. Nur wenn ein synchronisiertes Anforderungssignal aktiviert wird, kann jedoch das Signal Count zu dekrementieren beginnen. Mit anderen Worten, wie durch den Pfeil 1400 angezeigt, die Aktivierung des synchronisierten Anforderungssignals Reqi* veranlasst das Dekrementieren des c-Zyklus-Zählers 1100 in 11 und des Signals Count.
  • Zur Zeit t3 kann das Signal T0i ansprechend auf die Vollendung der c-Zyklus-Initialisierungsperiode zwischen der Zeit t2 und t3 aktiviert werden. Wie durch den Pfeil 1402 angezeigt, kann das Signal T0i auf die Deaktivierung des Benutzer-Rücksetz-Anforderungssignals warten, bevor T0i deaktiviert wird. Als Beispiel wird die Deaktivierung des Benutzer-Rücksetz-Anforderungssignals Reqi mit dem Taktsignal Clki synchronisiert, um das synchronisierte Anforderungssignal Reqi* zur Zeit t4 zu deaktivieren. Wie durch den Pfeil 1404 angezeigt, löst dieses Ereignis die nachfolgende Deaktivierung des Signals T0i aus.
  • Wie vorstehend in Verbindung mit 11 beschrieben, erzeugt die Kombination der Pfeile 1400, 1402 und 1404 ein robustes Kommunikationssystem zwischen der Benutzerlogik 1004 und dem Auto-Initialisierungsmodul 1002. Mit anderen Worten, die Benutzerlogik 1004 und das Auto-Initialisierungsmodul 1002 nehmen Quittungsaustausch-Operationen vor, um zu garantieren, dass die Informationen geeignet übertragen werden (z.B. Anforderung mit einem gegebenen Benutzer-Rücksetzen wird verarbeitet). Beispielsweise kann das Auto-Initialisierungsmodul 1002 das Rücksetz-Steuersignal T0i aktiviert halten solange das Anforderungssignal Reqi (oder das entsprechende Signal Reqi*) aktiviert ist.
  • Ähnlich der Benutzer-Rücksetzperiode von 13 kann während der c-Zyklus-Initialisierungsperiode und der Benutzer-Rücksetzperiode zwischen der Zeit t1 und t5 das Signal Reseti ähnlich aktiviert werden, um eine beliebige Einstellsequenz und benutzerspezifizierte Rücksetzsequenz vorzunehmen. Wenn gewünscht, kann das Signal Reseti zur Zeit t2 anstelle zur Zeit t1 aktiviert werden, um mit dem synchronisierten Rücksetzsignal Reqi* ausgerichtet zu werden. Zur Zeit t5 kann die Benutzerlogik 1004 erneut den Normalbetrieb vornehmen.
  • Diese Schritte dienen nur der Veranschaulichung. Die bestehenden Schritte können modifiziert oder weggelassen werden; einige der Schritte können parallel vorgenommen werden; zusätzliche Schritte können hinzugefügt werden; und die Reihenfolge bestimmter Schritte kann umgekehrt oder geändert werden.
  • Bisher wurden die Ausführungsformen in Bezug auf integrierte Schaltungen beschrieben. Die hier beschriebenen Verfahren und Vorrichtungen können in jede geeignete Schaltung eingeschlossen werden. Beispielsweise können sie in zahlreichen Typen von Vorrichtungen eingeschlossen werden, wie programmierbaren logischen Vorrichtungen, anwendungsspezifischen Standardprodukten (ASSPs) und anwendungsspezifischen integrierten Schaltungen (ASICs). Beispiele programmierbarer logischer Vorrichtungen umfassen programmierbare Anordnungslogik (PALs), programmierbare logische Anordnungen (PLAs), feldprogrammierbare logische Vorrichtungen (FPLAs), elektrisch programmierbare logische Vorrichtungen (EPLDs), elektrisch löschbare programmierbare logische Vorrichtungen (EEPLDs), logische Zellanordnungen (LCAs), komplexe programmierbare logische Vorrichtungen (CPLDs) und feldprogrammierbare Gate-Anordnungen (FPGAs), um nur einige zu nennen.
  • Die programmierbare logische Vorrichtung, die hier in einer oder mehreren Ausführungsformen beschrieben wird, kann ein Teil eines Datenverarbeitungssystems sein, das eine oder mehrere der folgenden Komponenten aufweist: einen Prozessor; einen Speicher; IO-Schaltungen; und periphere Vorrichtungen. Die Datenverarbeitung kann in verschiedensten Anwendungen verwendet werden, wie Computernetzen, Datennetzen, Instrumenten, Video-Verarbeitung, digitale Signalverarbeitung, oder eine beliebige andere Anwendung, wobei der Vorteil der Verwendung programmierbarer oder neuprogrammierbarer Logik zweckmäßig ist. Die programmierbare logische Vorrichtung kann verwendet werden, um verschiedenste logische Funktionen vorzunehmen. Beispielsweise kann die programmierbare logische Vorrichtung als Prozessor oder Steuereinheit ausgelegt werden, der oder die im Zusammenwirken mit einem Systemprozessor arbeitet. Die programmierbare logische Vorrichtung kann auch als Arbiter verwendet werden, um einen Zugriff auf eine gemeinsam genutzte Ressource in dem Datenverarbeitungssystem zu entscheiden. In noch einem weiteren Beispiel kann die programmierbare logische Vorrichtung als Schnittstelle zwischen einem Prozessor und der einen oder anderen Komponente in dem System ausgelegt sein.
  • Beispiele:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine integrierte Schaltung, umfassend: logische Schaltungen, die unter Verwendung einer Rücksetzsequenz zurückgesetzt werden; Auslegungsschaltungen, welche die logischen Schaltungen programmieren, um eine benutzerdefinierte logische Funktion zu implementieren, und welche einen Zählwert c liefern; und ein Initialisierungsmodul, das zwischen den logischen Schaltungen und den Auslegungsschaltungen angeordnet ist, und das automatisch die Rücksetzsequenz um c Taktzyklen verzögert.
  • Beispiel 2 ist die integrierte Schaltung von Beispiel 1, wobei das Initialisierungsmodul gegebenenfalls ein Taktsignal von den logischen Schaltungen empfängt.
  • Beispiel 3 ist die integrierte Schaltung von einem der Beispiele 1 bis 2, wobei das Initialisierungsmodul gegebenenfalls ein Rücksetz-Auslösesignal von einer ausgewählten einen der Auslegungsschaltungen und der logischen Schaltungen empfängt.
  • Beispiel 4 ist die integrierte Schaltung von Beispiel 3, wobei das Rücksetz-Auslösesignal gegebenenfalls ein Startsignal umfasst, das von den Auslegungsschaltungen zum Initialisierungsmodul übertragen wird.
  • Beispiel 5 ist die integrierte Schaltung von Beispiel 3, wobei das Rücksetz-Auslösesignal gegebenenfalls ein Anforderungssignal umfasst, das von den logischen Schaltungen zum Initialisierungsmodul übertragen wird.
  • Beispiel 6 ist die integrierte Schaltung von Beispiel 3, wobei das Initialisierungsmodul gegebenenfalls eine Synchronisationsschaltung zum Synchronisieren des Rücksetz-Auslösesignals mit dem Taktsignal umfasst, um ein synchronisiertes Rücksetz-Auslösesignal zu erzeugen.
  • Beispiel 7 ist die integrierte Schaltung von Beispiel 3, wobei das Initialisierungsmodul ferner gegebenenfalls eine Zählerschaltung umfasst, die von dem synchronisierten Rücksetz-Auslösesignal eingeschaltet wird.
  • Beispiel 8 ist die iintegrierte Schaltung von Beispiel 7, wobei das Initialisierungsmodul gegebenenfalls ferner eine Rücksetz-Steuerschaltung umfasst, die überwacht, wann die Zählerschaltung c Taktzyklen gezählt hat.
  • Beispiel 9 ist die integrierte Schaltung von Beispiel 8, wobei die Rücksetz-Steuerschaltung gegebenenfalls das Rücksetz-Auslösesignal empfängt und ein Quittungsaustauschprotokoll mit dem Rücksetz-Auslösesignal durchführt.
  • Beispiel 10 ist die integrierte Schaltung von Beispiel 9, wobei die Rücksetz-Steuerschaltung gegebenenfalls ein Ausgangssignal aktiviert, wenn die Zählerschaltung c Taktzyklen gezählt hat, und die das Ausgangssignal ansprechend auf eine Deaktivierung des Rücksetz-Auslösesignals deaktiviert, und wobei das Ausgangssignal gegebenenfalls zu den logischen Schaltungen übertragen wird.
  • Beispiel 11 ist ein Verfahren zum Betreiben einer integrierten Schaltung, die logische Schaltungen, Auslegungsschaltungen und ein Initialisierungsmodul umfasst, wobei das Verfahren umfasst: mit den Auslegungsschaltungen, Programmieren der logischen Schaltungen, um eine benutzerdefinierte logische Funktion zu implementieren; mit den Auslegungsschaltungen, Liefern eines Zählwerets c; mit dem Initialisierungsmodul, automatisches Verzögern einer Rücksetzsequenz um c Taktzyklen, wenn der Zählwert c größer ist als Null, wobei das Initialisierungsmodul zwischen den logischen Schaltungen und den Auslegungsschaltungen gekoppelt ist; und nach der Verzögerung um c Taktzyklen, Zurücksetzen der logischen Schaltungen unter Verwendung der Rücksetzsequenz.
  • Beispiel 12 ist das Verfahren von Beispiel 11, gegebenenfalls ferner umfassend: mit den Auslegungsschaltungen, Aktivieren eines Auslegung-erledigt-Signals, das anzeigt, wann die Programmierung der logischen Schaltungen vollendet ist; und mit den Auslegungsschaltungen, Aktivieren eines Initialisierung-erledigt-Signals nach einer Freigabeperiode, die der Aktivierung des Auslegung-erledigt-Signals unmittelbar folgt.
  • Beispiel 13 ist das Verfahren eines der Beispiele 11 bis 12, gegebenenfalls ferner umfassend: mit einer Zählerschaltung im Initialisierungsmodul, Generieren eines Zählerausgangs; und mit einer Rücksetz-Steuerschaltung im Initialisierungsmodul, Empfangen des Zählereingangs von der Zählerschaltung und eines Anforderungssignals von den logischen Schaltungen.
  • Beispiel 14 ist das Verfahren von Beispiel 13, gegebenenfalls ferner umfassend: ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, Verwenden der Rücksetz-Steuerschaltung, um ein Rücksetz-Steuersignal zu aktivieren; und ansprechend auf ein Bestimmen, dass das Anforderungssignal deaktiviert ist, Deaktivieren des Rücksetz-Steuersignals.
  • Beispiel 15 ist das Verfahren von Beispiel 13, gegebenenfalls ferner umfassend: mit den logischen Schaltungen, Aktivieren des Anforderungssignals; ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, Verwenden der Rücksetz-Steuerschaltung, um ein Rücksetz-Steuersignal zu aktivieren, während das Anforderungssignal aktiviert ist; und Halten des Rücksetz-Steuersignals auf aktiviert, solange das Anforderungssignal aktiviert ist.
  • Beispiel 16 ist eine integrierte Schaltung, umfassend: logische Schaltungen, die ein Anforderungssignal und ein Taktsignal ausgeben; Auslegungsschaltungen, die einen Zählerwert c und ein Startsignal ausgeben; und ein Initialisierungsmodul, welches das Anforderungssignal und das Taktsignal von den logischen Schaltungen empfängt, und welches auch den Zählerwert c und das Startsignal von den Auslegungsschaltungen empfängt.
  • Beispiel 17 ist die integrierte Schaltung von Beispiel 16, wobei das Initialisierungsmodul gegebenenfalls umfasst: eine Zählerschaltung, die auf den Zählerwert c initialisiert wird, die von einem ausgewählten einen von dem Startsignal und dem Anforderungssignal selektiv eingeschaltet wird, und die von dem Taktsignal gesteuert wird.
  • Beispiel 18 ist die integrierte Schaltung von Beispiel 17, wobei das Initialisierungsmodul gegebenenfalls ferner umfasst: eine Rücksetz-Steuerschaltung, die überwacht, wann die Zählerschaltung einen Zählwert von Null zeigt, die das Anforderungssignal empfängt, und die ein Steuersignal ausgibt.
  • Beispiel 19 ist die integrierte Schaltung von Beispiel 18, wobei die logischen Schaltungen gegebenenfalls umfassen: eine Rücksetz-Zustandsmaschine, die das Steuersignal von der Rücksetz-Steuerschaltung empfängt, die das Anforderungssignal ausgibt, und die ein Rücksetzsignal ausgibt.
  • Beispiel 20 ist die integrierte Schaltung von Beispiel 19, wobei die logischen Schaltungen gegebenenfalls ferner umfassen: ein Register, das vom Rücksetzsignal zurückgesetzt wird, wobei die Rücksetz-Zustandsmaschine ferner ein Fehlersignal empfängt, das eine Aktivierung des Anforderungssignals auslöst.
  • Beispiel 21 ist eine integrierte Schaltung, umfassend: Mittel zum Programmieren der logischen Schaltungen, um eine benutzerdefinierte logische Funktion zu implementieren und um einen Zählwert c zu liefern; Mittel zum automatischen Verzögern einer Rücksetzsequenz um c Taktzyklen, wenn der Zählwert c größer ist als Null; und Mittel zum Zurücksetzen der logischen Schaltungen unter Verwendung der Rücksetzsequenz nach der Verzögerung um c Taktzyklen.
  • Beispiel 22 ist die integrierte Schaltung von Beispiel 21, wobei die Mittel zum Programmieren der logischen Schaltungen gegebenenfalls ferner umfassen: Mittel zum Aktivieren eines Auslegung-erledigt-Signals, das anzeigt, wann die Programmierung der logischen Schaltungen vollendet ist; und Mittel zum Aktivieren eines Initialisierung-erledigt-Signals nach einer Freigabeperiode, die der Aktivierung des Auslegung-erledigt-Signals unmittelbar folgt.
  • Beispiel 23 ist die integrierte Schaltung von einem der Beispiele 21 bis 22, gegebenenfalls ferner umfassend: Mittel zum Generieren eines Zählerausgangs; und Mittel zum Empfangen des Zählerausgangs und zum Empfangen eines Anforderungssignals von den logischen Schaltungen.
  • Beispiel 24 ist die integrierte Schaltung von Beispiel 23, gegebenenfalls ferner umfassend: Mittel zum Aktivieren eines Rücksetz-Steuersignals ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist; und Mittel zum Deaktivieren des Rücksetz-Steuersignals ansprechend auf ein Bestimmen, dass das Anforderungssignal deaktiviert ist.
  • Beispiel 25 ist die integrierte Schaltung von Beispiel 23, wobei die logischen Schaltungen das Anforderungssignal aktivieren, wobei die integrierte Schaltung gegebenenfalls ferner umfasst: Mittel zum Aktivieren eines Rücksetz-Steuersignals, während das Anforderungssignal ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, aktiviert ist; und Mittel zum Halten des Rücksetz-Steuersignals auf aktiviert, solange das Anforderungssignal aktiviert ist.
  • Beispielsweise können alle optionalen Merkmale der oben beschriebenen Vorrichtung auch in Bezug auf das Verfahren oder den Prozess, die hier beschrieben werden, implementiert werden. Das Obige dient nur der Veranschaulichung der Prinzipien dieser Offenbarung, und verschiedene Modifikationen können von Fachleuten vorgenommen werden. Die obigen Ausführungsformen können einzeln oder in Kombination implementiert werden.
  • 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 15342286 [0091]
    • US 15352487 [0091]
    • US 15354809 [0091]

Claims (25)

  1. Integrierte Schaltung, umfassend: logische Schaltungen, die unter Verwendung einer Rücksetzsequenz zurückgesetzt werden; Auslegungsschaltungen, welche die logischen Schaltungen programmieren, um eine benutzerdefinierte logische Funktion zu implementieren, und welche einen Zählwert c liefern; und ein Initialisierungsmodul, das zwischen den logischen Schaltungen und den Auslegungsschaltungen angeordnet ist, und das automatisch die Rücksetzsequenz um c Taktzyklen verzögert.
  2. Integrierte Schaltung nach Anspruch 1, wobei das Initialisierungsmodul ein Taktsignal von den logischen Schaltungen empfängt.
  3. Integrierte Schaltung nach Anspruch 1 oder 2, wobei das Initialisierungsmodul ein Rücksetz-Auslösesignal von einer ausgewählten einen der Auslegungsschaltungen und der logischen Schaltungen empfängt.
  4. Integrierte Schaltung nach Anspruch 3, wobei das Rücksetz-Auslösesignal ein Startsignal umfasst, das von den Auslegungsschaltungen zum Initialisierungsmodul übertragen wird.
  5. Integrierte Schaltung nach Anspruch 3 oder 4, wobei das Rücksetz-Auslösesignal ein Anforderungssignal umfasst, das von den logischen Schaltungen zum Initialisierungsmodul übertragen wird.
  6. Integrierte Schaltung nach Ansprüchen 3 bis 5, wobei das Initialisierungsmodul eine Synchronisationsschaltung zum Synchronisieren des Rücksetz-Auslösesignals mit dem Taktsignal umfasst, um ein synchronisiertes Rücksetz-Auslösesignal zu erzeugen.
  7. Integrierte Schaltung nach Ansprüchen 3 bis 6, wobei das Initialisierungsmodul ferner eine Zählerschaltung umfasst, die von dem synchronisierten Rücksetz-Auslösesignal aktiviert wird.
  8. Integrierte Schaltung nach Anspruch 7, wobei das Initialisierungsmodul ferner eine Rücksetz-Steuerschaltung umfasst, die überwacht, wann die Zählerschaltung c Taktzyklen gezählt hat.
  9. Integrierte Schaltung nach Anspruch 8, wobei die Rücksetz-Steuerschaltung das Rücksetz-Auslösesignal empfängt und ein Quittungsaustauschprotokoll mit dem Rücksetz-Auslösesignal durchführt.
  10. Integrierte Schaltung nach Anspruch 9, wobei die Rücksetz-Steuerschaltung ein Ausgangssignal aktiviert, wenn die Zählerschaltung c Taktzyklen gezählt hat, und die das Ausgangssignal ansprechend auf eine Deaktivierung des Rücksetz-Auslösesignals deaktiviert, und wobei das Ausgangssignal zu den logischen Schaltungen übertragen wird.
  11. Verfahren zum Betreiben einer integrierten Schaltung, die logische Schaltungen, Auslegungsschaltungen und ein Initialisierungsmodul umfasst, wobei das Verfahren umfasst: mit den Auslegungsschaltungen, Programmieren der logischen Schaltungen, um eine benutzerdefinierte logische Funktion zu implementieren; mit den Auslegungsschaltungen, Liefern eines Zählwerts c; mit dem Initialisierungsmodul, automatisches Verzögern einer Rücksetzsequenz um c Taktzyklen, wenn der Zählwert c größer ist als Null, wobei das Initialisierungsmodul zwischen den logischen Schaltungen und den Auslegungsschaltungen gekoppelt ist; und nach der Verzögerung um c Taktzyklen, Zurücksetzen der logischen Schaltungen unter Verwendung der Rücksetzsequenz.
  12. Verfahren nach Anspruch 11, ferner umfassend: mit den Auslegungsschaltungen, Aktivieren eines Auslegung-erledigt-Signals, das anzeigt, wann das Programmieren der logischen Schaltungen vollendet ist; und mit den Auslegungsschaltungen, Aktivieren eines Initialisierung-erledigt-Signals nach einer Freigabeperiode, die der Aktivierung des Auslegung-erledigt-Signals unmittelbar folgt.
  13. Verfahren nach Anspruch 11 oder 12, ferner umfassend: mit einer Zählerschaltung im Initialisierungsmodul, Generieren eines Zählerausgangs; und mit einer Rücksetz-Steuerschaltung im Initialisierungsmodul, Empfangen des Zählereingangs von der Zählerschaltung und eines Anforderungssignals von den logischen Schaltungen.
  14. Verfahren nach Anspruch 13, ferner umfassend: ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, Verwenden der Rücksetz-Steuerschaltung, um ein Rücksetz-Steuersignal zu aktivieren; und ansprechend auf ein Bestimmen, dass das Anforderungssignal deaktiviert ist, Deaktivieren des Rücksetz-Steuersignals.
  15. Verfahren nach Anspruch 13 oder 14, ferner umfassend: mit den logischen Schaltungen, Aktivieren des Anforderungssignals; ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, Verwenden der Rücksetz-Steuerschaltung, um ein Rücksetz-Steuersignal zu aktivieren, während das Anforderungssignal aktiviert ist; und Halten des Rücksetz-Steuersignals auf aktiviert, solange das Anforderungssignal aktiviert ist.
  16. Integrierte Schaltung, umfassend: logische Schaltungen, die ein Anforderungssignal und ein Taktsignal ausgeben; Auslegungsschaltungen, die einen Zählerwert c und ein Startsignal ausgeben; und ein Initialisierungsmodul, welches das Anforderungssignal und das Taktsignal von den logischen Schaltungen empfängt, und welches auch den Zählerwert c und das Startsignal von den Auslegungsschaltungen empfängt.
  17. Integrierte Schaltung nach Anspruch 16, wobei das Initialisierungsmodul umfasst: eine Zählerschaltung, die auf den Zählerwert c initialisiert wird, die von einem ausgewählten einen von dem Startsignal und dem Anforderungssignal selektiv aktiviert wird, und die von dem Taktsignal gesteuert wird.
  18. Integrierte Schaltung nach Anspruch 17, wobei das Initialisierungsmodul ferner umfasst: eine Rücksetz-Steuerschaltung, die überwacht, wann die Zählerschaltung einen Zählwert von Null zeigt, die das Anforderungssignal empfängt, und die ein Steuersignal ausgibt.
  19. Integrierte Schaltung nach Anspruch 18, wobei die logischen Schaltungen umfassen: eine Rücksetz-Zustandsmaschine, die das Steuersignal von der Rücksetz-Steuerschaltung empfängt, die das Anforderungssignal ausgibt, und die ein Rücksetzsignal ausgibt.
  20. Integrierte Schaltung nach Anspruch 19, wobei die logischen Schaltungen ferner umfassen: ein Register, das vom Rücksetzsignal zurückgesetzt wird, wobei die Rücksetz-Zustandsmaschine ferner ein Fehlersignal empfängt, das eine Aktivierung des Anforderungssignals auslöst.
  21. Integrierte Schaltung, umfassend: Mittel zum Programmieren der logischen Schaltungen, um eine benutzerdefinierte logische Funktion zu implementieren und um einen Zählwert c zu liefern; Mittel zum automatischen Verzögern einer Rücksetzsequenz um c Taktzyklen, wenn der Zählwert c größer ist als Null; und Mittel zum Zurücksetzen der logischen Schaltungen unter Verwendung der Rücksetzsequenz nach der Verzögerung um c Taktzyklen.
  22. Integrierte Schaltung nach Anspruch 21, wobei die Mittel zum Programmieren der logischen Schaltungen ferner umfassen: Mittel zum Aktivieren eines Auslegung-erledigt-Signals, das anzeigt, wann die Programmierung der logischen Schaltungen vollendet ist; und Mittel zum Aktivieren eines Initialisierung-erledigt-Signals nach einer Freigabeperiode, die der Aktivierung des Auslegung-erledigt-Signals unmittelbar folgt.
  23. Integrierte Schaltung nach Anspruch 21 oder 22, ferner umfassend: Mittel zum Generieren eines Zählerausgangs; und Mittel zum Empfangen des Zählerausgangs und zum Empfangen eines Anforderungssignals von den logischen Schaltungen.
  24. Integrierte Schaltung nach Anspruch 23, ferner umfassend: Mittel zum Aktivieren eines Rücksetz-Steuersignals ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist; und Mittel zum Deaktivieren des Rücksetz-Steuersignals ansprechend auf ein Bestimmen, dass das Anforderungssignal deaktiviert ist.
  25. Integrierte Schaltung nach Anspruch 23 oder 24, wobei die logischen Schaltungen das Anforderungssignal aktivieren, wobei die integrierte Schaltung ferner umfasst: Mittel zum Aktivieren eines Rücksetz-Steuersignals, während das Anforderungssignal ansprechend auf ein Bestimmen, dass der Zählerausgang gleich Null ist, aktiviert ist; und Mittel zum Halten des Rücksetz-Steuersignals auf aktiviert, solange das Anforderungssignal aktiviert ist.
DE102018102292.1A 2017-02-02 2018-02-01 Verfahren und Vorrichtung zur automatischen Implementierung eines kompensierenden Rücksetzens für neugetaktete Schaltungen Pending DE102018102292A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/422,971 US10181001B2 (en) 2017-02-02 2017-02-02 Methods and apparatus for automatically implementing a compensating reset for retimed circuitry
US15/422,971 2017-02-02

Publications (1)

Publication Number Publication Date
DE102018102292A1 true DE102018102292A1 (de) 2018-08-02

Family

ID=62843166

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018102292.1A Pending DE102018102292A1 (de) 2017-02-02 2018-02-01 Verfahren und Vorrichtung zur automatischen Implementierung eines kompensierenden Rücksetzens für neugetaktete Schaltungen

Country Status (3)

Country Link
US (1) US10181001B2 (de)
CN (1) CN108446424B (de)
DE (1) DE102018102292A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860226A (zh) * 2021-01-28 2021-05-28 芯华章科技股份有限公司 获取逻辑系统设计的初始状态的方法、电子设备及介质
CN113468839B (zh) * 2021-09-01 2021-11-30 中科亿海微电子科技(苏州)有限公司 一种提高时序性能的布线方法及装置
CN114942687B (zh) * 2022-05-17 2024-04-05 上海芯钛信息科技有限公司 基于监控的复位安全机制、实现方法及复位电路

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100321013B1 (ko) * 1992-11-02 2002-06-20 요트.게.아. 롤페즈 동기식디지탈전자회로와그설계및작동방법
JPH08203265A (ja) * 1995-01-26 1996-08-09 Nec Eng Ltd 遅延回路
US5822217A (en) * 1995-12-13 1998-10-13 Synopsys, Inc. Method and apparatus for improving circuit retiming
US5764083A (en) * 1996-06-10 1998-06-09 International Business Machines Corporation Pipelined clock distribution for self resetting CMOS circuits
US5751735A (en) * 1996-11-14 1998-05-12 Hewlett-Packard Company Integrated debug trigger method and apparatus for an integrated circuit
JP4342141B2 (ja) * 2002-03-15 2009-10-14 パナソニック株式会社 クロック生成回路
EP1623448B1 (de) * 2003-03-19 2016-12-14 Mentor Graphics Corporation Synchronisierungsschaltungen, die eine Schnitttechnik anwenden
US7120883B1 (en) 2003-05-27 2006-10-10 Altera Corporation Register retiming technique
EP1772795A1 (de) * 2005-10-10 2007-04-11 STMicroelectronics (Research & Development) Limited Schneller Pufferzeiger in einem Takt
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
US8525548B2 (en) * 2008-08-04 2013-09-03 Tabula, Inc. Trigger circuits and event counters for an IC
US8141024B2 (en) * 2008-09-04 2012-03-20 Synopsys, Inc. Temporally-assisted resource sharing in electronic systems
US8860458B2 (en) * 2012-07-20 2014-10-14 Altera Corporation Integrated circuits with logic regions having input and output bypass paths for accessing registers
CN105009455B (zh) * 2012-12-13 2018-03-27 相干逻辑公司 同步数字系统中对芯片间通信的多频率时钟漂移控制
US8766695B1 (en) * 2012-12-28 2014-07-01 Sandisk Technologies Inc. Clock generation and delay architecture
US8677298B1 (en) * 2013-01-04 2014-03-18 Altera Corporation Programmable device configuration methods adapted to account for retiming
US9292638B1 (en) 2014-01-21 2016-03-22 Altera Corporation Method and apparatus for performing timing closure analysis when performing register retiming
US9356769B2 (en) 2014-09-24 2016-05-31 Qualcomm Incorporated Synchronous reset and phase detecting for interchain local oscillator (LO) divider phase alignment
US9647824B2 (en) * 2014-10-24 2017-05-09 Silicon Laboratories Inc. System and apparatus for clock retiming with catch-up mode and associated methods
US9552456B2 (en) * 2015-05-29 2017-01-24 Altera Corporation Methods and apparatus for probing signals from a circuit after register retiming
US10152565B2 (en) * 2015-06-03 2018-12-11 Altera Corporation Methods for performing register retiming operations into synchronization regions interposed between circuits associated with different clock domains

Also Published As

Publication number Publication date
CN108446424A (zh) 2018-08-24
US20180218104A1 (en) 2018-08-02
US10181001B2 (en) 2019-01-15
CN108446424B (zh) 2024-04-30

Similar Documents

Publication Publication Date Title
DE69427758T2 (de) Feldprogrammierbare logische vorrichtung mit dynamischer verbindungsanordnung an einen dynamischen logischen kern
EP3324317B1 (de) Verfahren zur verifikation von schaltungen mit neuer zeitfestlegung mit verzögerter initialisierung
US10162918B1 (en) Integrated circuit retiming with selective modeling of flip-flop secondary signals
KR101942303B1 (ko) 상호 양자 로직(rql) 회로 합성
US9996652B2 (en) Incremental register retiming of an integrated circuit design
US11361133B2 (en) Method of reporting circuit performance for high-level synthesis
US9811621B2 (en) Implementing integrated circuit designs using depopulation and repopulation operations
DE102018102292A1 (de) Verfahren und Vorrichtung zur automatischen Implementierung eines kompensierenden Rücksetzens für neugetaktete Schaltungen
EP3101568B1 (de) Verfahren zur durchführung von register-retiming-vorgängen in synchronisationsbereichen, die zwischen schaltungen positioniert sind, die mit verschiedenen taktbereichen verbunden sind
DE112014000616T5 (de) Doppelstruktur-Taktbaumsynthese (CTS)
US9552456B2 (en) Methods and apparatus for probing signals from a circuit after register retiming
DE112015003632T5 (de) Dynamisches spielraumeinstellen zum steuern von anwendungsspezifischen schaltungen und speichern
DE102019117226A1 (de) Schaltkreis mit adaptiven speicherassistenzfähigkeiten
WO2017196485A1 (en) Embedded built-in self-test (bist) circuitry for digital signal processor (dsp) validation
US9529947B1 (en) Register retiming and verification of an integrated circuit design
US10169518B1 (en) Methods for delaying register reset for retimed circuits
US8091056B1 (en) Apparatus and method for automated determination of timing constraints
US20180349544A1 (en) Methods for performing register retiming with hybrid initial states
DE102020130212A1 (de) Verfahren zum deterministischen Clustering und Packing für Random-Logik auf programmierbaren integrierten Schaltungen
US8359557B1 (en) Method and apparatus for generating data bus interface circuitry
EP3142032B1 (de) Verfahren zum ändern der konfiguration eines programmierbaren logikbausteins
US9626218B1 (en) Repartitioning and reordering of multiple threads into subsets based on possible access conflict, for sequential access to groups of memory banks in a shared memory
DE112021001439T5 (de) Schnittstellenbildung einer anzahl von seriellen kommunikationsschnittstellenmit einer parallelen kommunikationsschnittstelle und zugehörige systeme,verfahren und vorrichtungen
DE10355141A1 (de) System und Verfahren zum Schätzen eines Leistungsverbrauchs für zumindest einen Abschnitt einer integrierten Schaltung
US20180082720A1 (en) Pipelined interconnect circuitry having reset values holding capabilities

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017500000

Ipc: G06F0030000000