DE69724245T2 - Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem - Google Patents

Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem Download PDF

Info

Publication number
DE69724245T2
DE69724245T2 DE69724245T DE69724245T DE69724245T2 DE 69724245 T2 DE69724245 T2 DE 69724245T2 DE 69724245 T DE69724245 T DE 69724245T DE 69724245 T DE69724245 T DE 69724245T DE 69724245 T2 DE69724245 T2 DE 69724245T2
Authority
DE
Germany
Prior art keywords
clock
standard cell
line
buffers
buffer area
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.)
Expired - Lifetime
Application number
DE69724245T
Other languages
English (en)
Other versions
DE69724245D1 (de
Inventor
M. Alisa SCHERER
Frederick Weber
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE69724245D1 publication Critical patent/DE69724245D1/de
Publication of DE69724245T2 publication Critical patent/DE69724245T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/394Routing

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Entwürfe integrierter Schaltungen. Insbesondere betrifft die vorliegende Erfindung den Entwurf eines Verteilsystems für Taktsignale in einer integrierten Schaltung.
  • 2. Beschreibung der verwandten Technik
  • "Taktversatz" ist ein Maß der Unsicherheit bei den Ankunftszeiten eines Taktsignalübergangs an unterschiedlichen Stellen einer synchronen logischen Schaltung, wie beispielsweise eines Mikroprozessors. Taktversatze sind unerwünscht, da sie die Betriebsfrequenz, die von der logischen Schaltung erreicht werden kann, negativ beeinflussen können. Folglich sollten Taktversatze minimiert werden. Ein Taktversatz kann beispielsweise aufgrund von RC-Verzögerungen in den Verbindungsleitungen zwischen Schaltungselementen, Fehlanpassungen in den kapazitiven Lasten, mit denen die Taktpuffer beaufschlagt werden, und Fehlanpassungen der Treibergrößen in den die Taktsignale verteilenden Taktpuffern auftreten.
  • Beim Stand der Technik wird das Taktverteilsystem (d. h. das Platzieren von Taktpuffern und das Führen von Taktsignalen) in einem vollständig den Kundenwünschen angepassten Mikroprozessor häufig per Hand konfiguriert, um Taktversatze zu minimieren. Ein solches Verfahren ist ganz eindeutig zeitaufwendig.
  • Mit wachsender Komplexität von Mikroprozessoren sind Mikroprozessorkonzeptionen "halb den Kundenwünschen angepasst" worden. Bei einer halb den Kundenwünschen angepassten Konzeption werden Bausteine, wie beispielsweise Makros (z. B. regelmäßig platzierte Speicherzellen), in Arrays angeordnete logische Elemente (z. B. Elemente in Datenwegen und Registerdateien) und Standardzellen (z. B. Randomlogik), verwendet. Solche Bausteine werden typischerweise mit automatischen Tools entwickelt, wie beispielsweise logischer Synthese, automatischen Platzier- und Führungs-Tools, die bewirken, dass die Konzeptionsaufgabe in hohem Maße automatisiert und effizient ausgeführt wird. Da jedoch die Konzeptionsaufgaben automatisiert sind, ist die Konfiguration des Taktverteilsystems per Hand sehr komplex und unpraktisch geworden.
  • Bei der Taktverteilung bei einer halb den Kundenwünschen angepassten Konzeption muss die Art der unterschiedlichen Bausteine in der Schaltung berücksichtigt werden. Beispielsweise kann der Konstrukteur innerhalb eines den Kundenwünschen angepassten Makroblocks immer noch jeden Transistor sorgfältig platzieren, die Leitungen für die Taktsignale führen und, falls erforderlich, die Taktsignale sorgfältig Puffern. Bei einer solchen Konzeption kann der Konstrukteur einen "Null-Versatz"-Punkt spezifizieren, der typischerweise ein Eingabepunkt des Taktsignals in das Makro ist. Da der Konstrukteur die Kontrolle über die Platzierung und Führung der Taktsignale behält, können Taktversatze innerhalb eines den Kundenwünschen angepassten Makroblocks normalerweise durch Konzeptionsentscheidungen gesteuert werden.
  • In Arrays angeordnete logische Elemente, die sehr regelmäßig angeordnet sind und eingebaute geplante Verdrahtungsstellen aufweisen, ermöglichen eine disziplinierte Taktsignal-Verteilstrategie, da die gesamte Taktlast für das Array und geeignete Platzierungen von Taktpuffern ziemlich akkurat bestimmt werden können. Häufig werden solche in Arrays angeordnete logische Elemente jedoch von automatischen Tools platziert und geführt. Solche Tools müssen zur Erreichung der gewünschten Führung von Taktsignalen sorgfältig geleitet werden.
  • Logische Schaltungen, die aus Standardzellen aufgebaut sind, gehören hinsichtlich der Führung von Taktsignalen zu der problematischsten Kategorie von Schaltungen. Standardzellenkonzeptionen werden primär unter Anwendung eines logischen Synthese-Tools erzeugt. Bei einer solchen Konzeption versieht der Konstrukteur das logische Synthese-Tool mit einem Satz logischer Gleichungen, die die gewünschte logische Schaltung funktionell ausdrücken. Das Synthese-Tool erzeugt dann die Implementierung der logischen Schaltung, wobei Schaltungselemente (z. B. logische Gatter) aus einer Standardzellen-Bibliothek ausgewählt werden. Verschiedene Optimierungstechniken werden typischerweise zum Erreichen solcher Ziele wie hoher Zellendichte und Gatterminimierung angewandt. Somit besitzt der Konstrukteur normalerweise kein akkurates Mittel zum Vorhersagen der Größen und Positionen der von den Taktsignalen angesteuerten kapazitiven Lasten, so dass die Anzahl von zum angemessenen Ansteuern dieser kapazitiven Lasten benötigten Taktpuffern und ihre optimalen Platzierungen nicht im voraus bekannt sind. Ferner erzeugt selbst bei einer geringfügigen Modifizierung der Schaltung das logische Synthese-Tool häufig eine radikal andere Schaltungstopologie für die Schaltung, so dass bei jeder Modifizierung ein anderes Taktverteilnetz erforderlich sein kann.
  • Da Makros und in Arrays angeordnete logische und Standardzellen häufig in einer halb den Kundenwünschen angepassten Schaltung, wie beispielsweise einer in einen Mikroprozessor integrierten Schaltung, anzutreffen sind, ist es wünschenswert, ein automatisches Konzeptions-Tool zur Hand zu haben, das beim Platzieren von Taktpuffern und Führen von Taktsignalen die unterschiedlichen Arten von Bausteinen berücksichtigt, um einen minimalen Taktversatz in der integrierten Schaltung zu erreichen.
  • Blair G M: "SKEW-FREE CLOCK DISTRIBUTION FOR STANDARD-CELL VLSI DESIGNS"; IEEE Proceedings-G. Electronic Circuits and Systems, Vol. 139, Nr. 2, 1. April 1992, S. 265–267 beschreibt ein Verfahren zum Reduzieren von Taktversatz in einer Standardzellenkonzeption.
  • Die vorliegende Erfindung bietet ein Verfahren zum Zuweisen von Taktpuffern und zum Führen von Taktsignalen zu verschiedenen Regionen einer integrierten Schaltung mit minimalem Taktversatz. Endungsgemäß wird ein vor-zugewiesener Taktpufferbereich jeder der verschiedenen Regionen der integrierten Schaltung zugeordnet, in der die logische Schaltung durch Reihen von Standardzellen implementiert ist. Für jedes zu führende Taktsignal und für jede Reihe von Standardzellen werden dann folgende Schritte durchgeführt: (a) Identifizieren derjenigen Standardzellen, die das Taktsignal empfangen, (b) Zuordnen einer Eingangskapazität zu jeder identifizierten Standardzelle, (c) für jede identifizierte Standardzelle Ableiten einer der identifizierten Standardzelle zugeordneten Leitungskapazität durch Schätzen der Leitungslänge, die benötigt wird, um das Taktsignal von dem zugewiesenen Pufferbereich elektrisch mit der identifizierten Standardzelle zu koppeln, und (d) Ableiten einer Reihenkapazität durch Summieren sämtlicher Eingangskapazitäten und Leitungskapazitäten innerhalb der Standardzellenreihe. Das Verfahren umfasst ferner das Auswählen jeder Standardzellenreihe in einer vorbestimmten Reihenfolge und für die ausgewählte Standardzellenreihe das Durchführen folgender Schritte: (a) Bestimmen einer Fensterkapazität durch Summieren der Reihenkapazitäten für ausgewählte Standardzellenreihen, die den ausgewählten Standardzellenreihen benachbart sind, (b) Bestimmen einer Anzahl von Taktpuffern zum Zuweisen zu der ausgewählten Standardzellenreihe durch Dividieren der Fensterkapazität durch die bevorzugte Last und eine von der Anzahl der benachbarten Standardzellenreihen abgeleiteten Anzahl und (c) Platzieren der Anzahl von Taktpuffern innerhalb des zugewiesenen Pufferbereichs.
  • Das erfindungsgemäße Verfahren kann in Zusammenhang mit einem Gleitfenster durchgeführt werden, welches sich von einer einer Seite des Bereichs am nächsten liegenden Seite zu der gegenüberliegenden Seite des Bereichs bewegt. Bei dieser Vorgehensweise ist eine vorbestimmte Anzahl von einander benachbarten Standardzellenreihen in dem Gleitfenster für jede Standardzellenreihe enthalten, für die die Platzierung eines Taktpuffers in Betracht ge zogen wird. Die Ausgangsanschlüsse der Taktpuffer sind vorzugsweise durch orthogonal zu den Standardzellenreihen verlaufende Leitungen gekoppelt. Bei einer Ausführungsform wird die Reihenkapazität unter Berücksichtigung der Kapazität pro Reihe der Koppelleitungen berechnet.
  • Das Verfahren ist auch auf integrierte Schaltungen anwendbar, die einen zweiten Bereich aufweisen, der durch in Arrays angeordnete logische Elemente oder Makros implementiert ist. In einem solchen Bereich, in dem Standardzellen nicht unbedingt enthalten sein müssen, wird mittels eines erfindungsgemäßen Verfahrens wie zuvor ein zugewiesener Pufferbereich zugeordnet und umfasst das Verfahren für jede das Taktsignal empfangende logische Schaltung, unabhängig davon, ob die logische Schaltung aus Makros oder in Arrays angeordneten logischen Elementen aufgebaut ist, folgende Schritte: (a) Schätzen einer dem Taktsignal zugewiesenen Eingangskapazität und (b) Schätzen einer Leitungskapazität der logischen Schaltung anhand der Leitungslänge, die benötigt wird, um das Taktsignal von dem zugewiesenen Pufferbereich mit der logischen Schaltung zu koppeln. In einer solchen Region werden die Puffer anhand der Summe der Eingangskapazitäten sämtlicher logischen Schaltungen und der geschätzten Leitungskapazitäten zum Verbinden der Taktpuffer mit den logischen Schaltungen und Dividieren dieser Summe durch die bevorzugte Last zugewiesen. Durch Vorsehen unterschiedlicher Vorgehensweisen zum Puffern von Zuweisungen für unterschiedliche Regionen der aufgebauten Schaltung unter Verwendung unterschiedlicher Bausteine, z. B. Makros, in Arrays angeordneter logischer Elemente und Standardzellen, bei dem Verfahren ermöglicht die vorliegende Erfindung eine im wesentlichen gleiche Belastung der Taktpuffer in jeder Region, so dass der Taktversatz unabhängig von der in jeder Region angewandten Baustein-Technologie gleichförmig sein kann.
  • Das Verfahren kann zum Aufbau eines hierarchischen Taktverteilsystems angewandt werden, bei dem die Taktpuffer in den unterschiedlichen zugewiesenen Pufferbereichen auf dem Chip von einem Satz Taktpuffer einer höheren Ebene angesteuert werden, wobei die Taktpuffer der höheren Ebene einem zugewiesenen Pufferbereich einer zweiten Ebene zugewiesen werden. Die Anzahl von einem solchen zugewiesenen Pufferbereich einer zweiten Ebene zugewiesenen Taktpuffern wird durch die Anzahl von anzusteuernden Taktpuffern einer niedrigeren Ebene dividiert durch die bevorzugte Last berechnet.
  • Die Ebenen des hierarchischen Verteilsystems sind zum Minimieren eines Taktversatzes vorzugsweise miteinander gekoppelt. Ferner werden, wenn die Taktsignale einen Betriebstakt und einen oder mehrere Prüftakte enthalten, die Betriebstakte zwischen den Prüftakten geführt, um von den Signalleitungen isoliert zu sein, die aktiv sind, wenn der Betriebstakt ebenfalls aktiv ist, wodurch Rauschen in der Schaltung minimiert wird.
  • Die vorliegende Erfindung wird anhand der nachstehenden detaillierten Beschreibung und der diese begleitenden Zeichnungen besser verständlich. Es zeigen beispielhaft:
  • 1 ein erfindungsgemäßes Taktverteilsystem 100, das auf einer integrierten Schaltung 101 implementiert ist;
  • 2 ein Ablaufdiagramm 200 mit Darstellung des Steuerungsablaufs eines ClockRoute2-Programms, das eine Ausführungsform der vorliegenden Erfindung ist;
  • 3 ein Verfahren zum Anwenden des ClockRoute2-Programms in Zusammenhang mit einer Standardzellenkonzeption.
  • Die beschriebene Ausführungsform bietet ein Verfahren und ein automatisches Tool zum (i) Analysieren einer logischen Schaltung, die mittels einer beliebigen Kombination aus den Kundenwünschen angepassten Makros, in Arrays angeordneten logischen Elementen und Standardzellen implementiert worden ist, um die zu erwartenden kapazitiven Lasten der Taktsignale zu schätzen, (ii) Bestimmen der Anzahl von Taktpuffern, die zum Ansteuern dieser kapazitiven Lasten erforderlich sind, um Taktversatze zu minimieren, und (iii) Bewirken der Platzierungen solcher Taktpuffer und Führen ihrer Ausgangssignale durch die logische Schaltung. Bei der beschriebenen Ausführungsform wird eine Hierarchie von Taktpuffern zum Bereitstellen eines Verteilsystems für Taktsignale verwendet.
  • 1 zeigt eine Ausführungsform der vorliegenden Erfindung in Form eines Verteilsystems 100, das in eine integrierte Schaltung 101 implementiert ist. Gemäß 1 weist die integrierte Schaltung 101 eine PLL-Schaltung 102 auf, die ein Taktsignal "CLK_IN" auf einer Metallspur 151 erzeugt. Die Metallspur 151 ist mit Taktpuffern 103 gekoppelt. Obwohl dies nicht gezeigt ist, empfängt die PLL-Schaltung 102 ein externes Referenztaktsignal als Zeitbasis. Die Taktpuffer 103 erzeugen zusammen ein verstärktes Signal "CLK0" auf einer Metallspur 152, die orthogonal zu der Metallspur 151 verläuft. Das Signal CLK0 ist über die Metallspur 152 mit Taktpuffern 104-1, 104-2 und 104-3 gekoppelt. Die Taktpuffer 104-1, 104-2 und 104-3 erzeugen wiederum ein verstärktes Ausgangssignal "CLK1" auf Metallspuren 156, 155 und 153, die von der Metallspur 154 kurzgeschlossen oder einem Gridding unterzogen werden. Das Gridding macht es möglich, dass die Signalwellenfront eines Taktsignals "CLK1" an sämtlichen Empfangsstellen des Signals so gleichförmig wie möglich ist, wodurch ein Taktversatz minimiert wird. Zu diesem Zweck werden die Taktpuffer 104-1 bis 104-3 vorzugsweise hinsichtlich ihrer Ansteuerungscharakteristiken einander angepasst. Das Verwenden einer großen Anzahl kleiner identischer Taktpuffer ist eine Ausführungsform des Verfahrens zum Erreichen einer Gleichförmigkeit. Der Einfachheit halber werden die Taktpuffer 104-1 bis 104-3 als "Puffer der Ebene 1" bezeichnet. Die Metallspuren 153156 koppeln das Taktsignal "CLK1" mit Taktpuffern 105-1 bis 105-6. Die Taktpuffer 105-1 bis 105-6 erzeugen zusammen ein verstärktes Ausgangssignal "CLK2" auf Metallspuren 159 bis 162, die von Metallspuren 157158, welche orthogonal zu den Metallspuren 159162 verlaufen, kurzgeschlossen oder einem Gridding unterzogen werden, um einen einzigen elektrischen Schaltungspunkt zu bilden. Die Taktpuffer 105-1 bis 105-6 werden als "Puffer der Ebene 2" bezeichnet. Schließlich wird das Taktsignal CLK2 zwecks Verteilung an sämtliche getaktete Elemente der integrierten Schaltung 101, z. B. Flipflops, Register und Zähler, über die Metallspuren 157162 mit Taktpuffern 106-1 bis 106-7 ("Puffer der Ebene 3") gekoppelt. Jeder Puffer der Ebene 3 ist für das Treiben des Taktsignals zu getakteten Elementen innerhalb seines jeweiligen spezifisch zugeordneten Bereichs der integrierten Schaltung 101 verantwortlich. Bei dieser Ausführungsform werden die Taktpuffer sämtlicher Ebenen einem Gridding unterzogen, obwohl dies nicht erforderlich ist. Bei einigen Anwendungen kann das Gridding auf der niedrigsten Ebene ausreichen, um die gewünschte Gleichförmigkeit der Wellenfront an den getakteten Elementen zu erzielen. Obwohl 1 vier Taktpuffer-Ebenen zeigt, nämlich ein Puffer der Ebene 0 (d. h. Taktpuffer 103), Puffer der Ebene 1, Puffer der Ebene 2 und Puffer der Ebene 3, kann innerhalb des Umfangs der Erfindung eine beliebige Anzahl von Taktpuffer-Ebenen implementiert werden.
  • Das Taktverteilsystem 100 kann unter Anwendung eines erfindungsgemäßen Verfahrens realisiert werden, welches nachstehend beschrieben wird. Dieses Verfahren kann in ein Computerprogramm implementiert werden, damit es mit herkömmlichen computergestützten Konzeptions-Tools, wie beispielsweise logischen Synthese-Tools und Zellen-Platzier- und Führungs-Tools, kompatibel ist. Eine Ausführungsform der vorliegenden Erfindung wird in Zusammenhang mit einem CockRoute2-Programm beschrieben, das in der Beschreibungssprache "Perl" implementiert ist. Die Sprache Perl ist Fachleuten auf dem Sachgebiet bekannt. Perl-Übersetzer sind in vielen Computern zu finden, bei denen ein Unix-Betriebssystem implementiert ist. Das Unix-Betriebssystem ist Fachleuten auf dem Sachgebiet ebenfalls bekannt.
  • Das ClockRoute2-Programm kann in Zusammenhang mit einem herkömmlichen automatischen Führungs-Tool, wie beispielsweise Cell3 von Cadence Design Systems, Inc., San Jose, CA, verwendet werden. 3 zeigt beispielsweise die Anwendung des Programms ClockRoute2 in den Konzeptionsaktivitäten einer integrierten Schaltung, die Standardzellen aufweist. Als erstes wird in einem Lageplanungs-Schritt 301 die "nutzbare Siliziumfläche" der integrierten Schaltung in eine Anzahl von Regionen unterteilt, von denen jede einen vor-zugewiesenen Taktpufferbereich aufweist. Das Unterteilen der in tegrierten Schaltung in Regionen wird häufig sowohl von der erforderlichen Funktionalität als auch von der angewandten Technik bestimmt. Beispielsweise kann eine Region einem auf dem Chip untergebrachten Speicher-Array zugeordnet sein, das getrennt von einer anderen Speicherregion für die Steuerlogik zu betrachten ist, da eine Speicherschaltung häufig mittels eines den Kundenwünschen angepassten Makros implementiert wird und die Steuerlogik normalerweise mittels Standardzellen implementiert wird. Bei diesem Ausführungsbeispiel umfasst der Lageplanungs-Schritt 301 ferner das Zuordnen eines Raums zum Führen breiter Metallspuren zwecks Führung von Ausgangssignalen der Puffer der Ebene 2 und Verbindung der Eingangs- und Ausgangsanschlüsse der Puffer der Ebene 3. Bei dem vorliegenden Ausführungsbeispiel werden sämtliche Taktsignale unter Verwendung zweier Metallisierungsebenen, die als "M4" und "M5" bezeichnet werden, geführt. Typischerweise müssen solche Metallisierungsebenen in orthogonalen Richtungen geführt werden. Der Einfachheit halber wird die Richtung entlang den Spuren in M4 als "horizontal" und die Richtung entlang den Spuren in M5 als "vertikal" bezeichnet. Bei dieser Ausführungsform werden breite M4-Spuren zum Führen von Signalen zwischen den Puffern der Ebene 2 und den Puffern der Ebene 3 verwendet. Die Eingangs- und Ausgangsanschlüsse der Puffer der Ebene 3 sind über M5-Metallspuren miteinander verbunden.
  • Nachdem in den Lageplanungs-Schritt 301 die integrierte Schaltung in geeigneter Weise unterteilt worden ist, läuft in Schritt 302 ein Platzierungs-Programm zum Platzieren von Standardzellen in geeigneten Regionen, die in dem Lageplanungs-Schritt 301 zugeordnet worden sind. Vor dem Führen von Signalen zwischen den platzierten Standardzellen wird das ClockRoute2-Programm in Schritt 303 aufgerufen, um für jede Region die Anzahl von tatsächlich benötigten Taktpuffern zu berechnen und diese zu platzieren. Wie nachstehend beschrieben, platziert das ClockRoute2-Programm ferner Leitungen zum Verbinden der platzierten Puffer der Ebene 2 und Puffer der Ebene 3 mit den geplanten M4- und M5-Spuren, die in dem Lageplanungs-Schritt 301 bereitgestellt worden sind. In Schritt 303 werden ferner M4-Spuren von den geplanten M5-Spuren getakteten Elementen der im Platzierungs-Schritt 302 platzierten Stellen zugewiesen. Da das ClockRoute2-Programm M4- und M5-Spuren zuweist, bevor ein Router Signale zwischen den Standardzellen führt, erhalten Taktsignale Vorrang bei der Verwendung der Führungs-Resourcen der integrierten Schaltung.
  • In Schritt 304 wird ein Führungs-Tool (z. B. Cell3) aufgerufen, um Signale automatisch zwischen den Standardzellen und den Taktpuffern zu führen. Der Konstrukteur kann dann das Ergebnis der Führung auswerten. Falls weitere Modifikationen erforderlich sind, wie es manchmal der Fall ist, z. B. wenn bestimmten Signalen ein zusätzliches Erfordernis auferlegt werden muss, können die Schritte 302304 wiederholt werden, bis ein zufriedenstellendes Führungs-Ergebnis erzielt worden ist.
  • Das ClockRoute2-Programm empfängt drei Eingabedateien: (i) eine Steuerdatei, die Eingangssteuerdaten zu dem ClockRoute2-Programm liefert, (ii) eine "def"-Datei, die die Positionen von Anschlussstiften, Durchkontakten, Komponenten und Netzen in der Konzeption auflistet, einschließlich deren Platzierstellen und Zellentypen, und (iii) eine "Verilog"-Datei, die die Netzliste der in der "def"-Datei beschriebenen Konzeption liefert. Die Verilog-Datei wird in der Beschreibungssprache der "Verilog"-Hardware erstellt, die Fachleuten auf dem Sachgebiet ebenfalls bekannt ist. Die Verilog-Eingangsdatei enthält Dummy-Taktpufferzellen. Wie oben beschrieben, werden bei der vorliegenden Erfindung diese Dummy-Taktpufferzellen durch das Instantiieren von echten Taktpufferzellen unter Anwendung des ClockRoute2-Programms ersetzt, und zwar entsprechend der geschätzten Leitungs- und Zellenkapazitäten, die von den Taktpuffern angesteuert werden müssen.
  • Das ClockRoute2-Programm erstellt drei Ausgangsdateien: (i) eine Protokolldatei, in der über Fehler und Summenstatistiken sowie Leistungsziffern, wie beispielsweise die Anzahl von platzierten Puffern und die von diesen Puffern angesteuerte mittlere Kapazität, berichtet wird; (ii) eine modifizierte "Verilog"-Datei, die die echten Taktpuffer enthält, durch welche das ClockRoute2-Programm die Dummy-Taktpufferzellen in der Verilog-Eingangsdatei ersetzt; (iii) eine "Addwire"-Datei, die Addwire-Anweisungen zum Befehlen der Führung sowohl der Taktsignale von den echten Taktpuffern zu den instantiierten Zellen der "def"-Datei als auch der Metallspuren zu Gridding-Zwecken durch das Führungs-Tool Cell3 auflistet; und (iv) eine modifizierte "def"-Datei, die die Positionen der hinzugefügten Taktpuffer und Durchkontakte enthält. Die Addwire-Datei ist in einem Format erstellt, das von dem Führungs-Tool Cell3 verstanden wird. Selbstverständlich ist ein Fachmann auf dem Sachgebiet in der Lage, anhand dieser detaillierten Beschreibung das ClockRoute2-Programm derart zu modifizieren, dass dieses die Eingangsdateien in einer andern herkömmlichen Hardware-Beschreibungssprachformaten akzeptiert, um mit einem beliebigen herkömmlichen Führungs-Tool zu arbeiten, und Ausgangsdateien in anderen herkömmlichen Hardware-Beschreibungssprachformaten zu erstellen.
  • 2 zeigt ein Ablaufdiagramm 200 mit Darstellung des Steuerungsablaufs des ClockRoute2-Programms. Bei diesem Ausführungsbeispiel werden zwecks Konzentration auf die vorliegende Erfindung nur zwei Ebenen der Taktpufferung (Puffer der Ebene 2 und Puffer der Ebene 3) beschrieben. Es ist für Fachleute auf dem Sachgebiet anhand dieses erläuternden Ausführungsbeispiels des ClockRoute2-Programms jedoch offensichtlich, dass zusätzliche Ebenen der Taktpufferung unter Anwendung des hier beschriebenen Prinzips bereitgestellt werden können.
  • Gemäß 2 analysiert das ClockRoute2-Programm in Schritt 201 die Eingangs-Steuerdatei. Die Steuerdatei wird von der ReadControlFile-Subroutine gelesen. Die ReadControlFile-Subroutine unterstützt zwei Arten von Anweisungen: (a) globale und (b) taktregionale. Globale Anweisungen sind auf die Gesamtkonzeption anwendbar. Taktregionale Anweisungen sind nur innerhalb eines definierten "Kästchens" oder einer definierten "Taktregion" anwendbar. Die verschiedenen Arten von definierten Taktregionen werden nachfolgend beschrieben. Die unterstützte globale Anweisung umfasst folgende Anweisungen: "Techfile", "Parmfile", "Buffer", "ClockDriveMult", "Grid", "RowHeight", "RowLookahead", "M4Cap", "M4Mult", "M5Cap", "M5Mult", "M5Width", "Orien tation", "L2Master", "L3Master", "BufCap", "AllowClock", "DeleteCells", "BlockedCell", "M5Offset", "Addwire", "C4Row", "M5Row". Taktregionale Anweisungen werden zusammen mit jeder von "ClockBox"-, "SPBox"- und "L2Box"-Anweisungen definierten Taktregion festgelegt. Die "ClockBox"-Anweisung wird normalerweise zum Definieren von Taktregionen für Standardzellenblöcke verwendet. Die "SPBox"-Anweisung wird typischerweise zum Führen von Taktsignalen in in Arrays angeordneten logischen Blöcken verwendet. Taktregionen einer höheren Ebene werden von der "L2Box"-Anweisung definiert. Innerhalb einer von ClockBox definierten Region werden die folgenden Anweisungen unterstützt: "Buf", "NumBuf", "NoBuffer", "Load", "RowPreWire", "NoWire", "RowStrapToEdge", "NoStrap", "RightStrap" und "LeftStrap". Innerhalb einer von SPBox definierten Taktregion ("speziellen Region) wird die "Place"-Anweisung unterstützt. Innerhalb der von der "L2Box"-Anweisung definierten Taktregion (Region der zweiten Ebene) werden die Anweisungen "Wireload", "Buf", "NumBuf" und "NumRow" unterstützt.
  • Die "TechFile"- und die "ParmFile"-Anweisungen beziehen sich auf eine Technologie- bzw. eine Parameter-Datei. Die Technologie-Datei enthält die Kapazitäten pro Längeneinheit für Metallspuren mit Mindestbreite in den Metallisierungsebenen. Eine Parameter-Datei enthält die Kapazitäten für die in der Datei spezifizierten Zellen. Typischerweise kann eine Anzahl von Parameter-Dateien, jedoch nur eine Technologie-Datei vorgesehen sein. In Schritt 202 ruft die Subroutine ReadControlFile die Subroutine ReadTechFile zum Lesen der Technologie-Datei auf. Ähnlich ruft die Subroutine ReadControlFile die Subroutine ReadParm zum Lesen einer Parameter-Datei auf.
  • ReadControlFile initialisiert Parameter, die bei einer nachfolgenden Kapazitätsschätzung und Taktsignalführung verwendet werden, wenn sie die restlichen globalen Anweisungen in Schritt 203 liest. Die Anweisung "Buffer" definiert den zu verwendenden Taktpuffer. Die Anweisung "Buffer" empfängt den Namen der Pufferzelle, die optimale Belastbarkeit, die Namen der Eingangs- und Ausgangssignale in der Zellendefinition, die Eingangskapazität für die Zelle und weitere Dimensionsattribute der Pufferzelle. Beispielsweise wird eine "Buffer"-Anweisung verwendet, um zu spezifizieren, dass eine Pufferzelle "L3CKBUF" eine Datenbasis-Breiteneinheit von 1800 und eine optimale Ansteuerungsleistung von 0,7 pF aufweist. Die Anweisung "ClockDriveMult" ermöglicht es dem ClockRoute2-Programm, zusammen mit einem spezifizierten Signal einen spezifizierten Faktor zum Skalieren des optimalen Ansteuerungswert der Pufferzelle zu verwenden, wenn die Pufferzelle zum Ansteuern des spezifizierten Taktsignals verwendet wird. ClockDriveMult ist beispielsweise bei einer Konzeption mit einer Abfrage-Testmöglichkeit sinnvoll. Bei einer solchen Konzeption kann der Abfrage-Takt SC1, der nur während des Testens verwendet wird, um den Faktor 4 skaliert werden. Mit anderen Worten: bei diesem Ausführungsbeispiel hätte die Pufferzelle L3CKBUF eine optimale Ansteuerungsleistung von 2,8 pF für das Taktsignal SC1 und 0,7 pF für das Taktsignal PH1. Die ClockDriveMult-Anweisung spart Führungs-Resourcen dadurch auf, dass sie es ermöglicht, dass ausgewählte Taktsignale mit einer höheren Versatztoleranz angesteuert werden. Beispielsweise wird erwartet, dass ein Taktsignal PH1 mit einer Taktrate von mehr als 150 MHz arbeitet, wohingegen der Abfragetakt SC1 mit einer Rate von nur 10 MHz arbeiten und somit einen viel höheren Taktversatz tolerieren kann.
  • Die Anweisungen "Grid" und "RowHeight" spezifizieren jeweils den Abstand zwischen Gitterpunkten in Datenbank-Einheiten und die Höhe einer Standardzelle in dieser Konzeption ebenfalls in Datenbank-Einheiten. Beispielsweise wird spezifiziert, dass Gitterpunkte um 180 Datenbank-Einheiten voneinander beabstandet sind und jede Standardzelle 3240 Datenbank-Einheiten groß ist. Die Anweisung "RowLookahead" definiert ein "Window", das von einer Anzahl von Standardzellenreihen spezifiziert ist, innerhalb derer das ClockRoute2-Programm bei der Berechnung hinsichtlich der Zuweisungen echter Taktpuffer zu einem vorgegebenen Zeitpunkt sämtliche Kapazitäten berücksichtigt, denen ein Taktsignal begegnet. Die Steuerdatei spezifiziert beispielsweise ein RowLookAhead von 2, das ein Fenster mit nur zwei Standardzellenreihen repräsentiert, oder 6560 Datenbank-Einheiten in den Y-Koordinaten.
  • Die Anweisungen "M4Cap", "M4Mult", MSCap", "M5Mult" definieren jeweils die Kapazität pro Längeneinheit für eine Metallspur mit Mindestbreite in M4, einen Multiplikator zum Skalieren des Werts von M4Cap, die Kapazität pro Längeneinheit für eine Metallspur mit Mindestbreite in M5 und einen Multiplikator zum Skalieren des Werts von M5Cap. M4Mult und M5Mult werden erzeugt, damit Kapazitäten anhand von Leitungen, deren Breite die Mindestbreite übersteigt, berechnet werden können. In dieser detaillierten Beschreibung sind die Ausdrücke "Leitung" und "Metallspur" austauschbar, solange nicht ausdrücklich etwas anderes angemerkt ist.
  • Die Anweisung "M5Width" spezifiziert die Breite einer M5-Verbindung, die in Zusammenhang mit den Eingangs- und Ausgangssignalen eines Taktpuffers verwendet wird. Beispielsweise wird eine M5-Breite von 260 Datenbank-Einheiten spezifiziert. Die Anweisung "Orientation" definiert die Orientierung der Taktpufferzelle relativ zu der Erdungsleitung der "unteren" Standardzellenreihe. In dieser detaillierten Beschreibung beziehen sich die Ausdrücke "oberer" und "unterer" auf die größte Y-Koordinate bzw. die kleinste Y-Koordinate. Aktuelle unterstützte Orientierungen sind (i) "N", die die Orientierung einer Standardzelle relativ zu der Erdungsleitung auf dem Boden ist, (ii) "S", die eine von der X-Achse reflektierte "N"-Standardzelle ist, (iii) "FN", die die von der Y-Achse reflektierte "N"-Standardzelle ist, und (iv) "FS", die die von der Y-Achse reflektierte "S"-Standardzelle ist. Sämtliche Zellen in einer Standardzellenreihe, einschließlich einer Taktpufferzelle, sollten die gleiche Orientierung haben. Bei einer falsch orientierten Zelle besteht das Risiko des Kurzschlusses der Sammelleitungen.
  • Die "L2Master"- und "L3Master"-Anweisungen definieren die Namen der Dummy-Taktpufferzellen für Puffer der Ebene 2 bzw. Puffer der Ebene 3. Beispielsweise repräsentieren Dummy-Pufferzellen "Buf_MASTER_CLK3", "Buf_MASTER_SC13" und "Buf_MASTER_SC23" vor-zugewiesene Pufferbereiche zum Platzieren von Puffern der Ebene 3 der Taktsignale "PH1", "SC1" bzw. "SC2". Die "BufCap"-Anweisung spezifiziert die Eingangskapazität, die in Zusammenhang mit der Taktpufferzelle angewendet werden soll. Die "AllowClock-Anweisung, die die Namen eines Anschlussstifts und einer Zelle als Argumente empfängt, ermöglicht es, dass ein Taktsignal mit dem spezifizierten Anschlussstift der spezifizierten Zelle verbunden wird. Die "Delete Cells"-Anweisung löscht Zellen mit Namen, die mit einem regulären Ausdruck übereinstimmen, aus der "def"-Datei (z. B. wird der reguläre Ausdruck "EROM_ROMBIST_SUB_297U1n" verwendet, wenn n eine beliebige Ziffernkette ist). Die "BlockedCell"-Anweisung definiert eine Zelle für ein spezielles Handling. Bei dieser Implementierung macht es das spezielle Handling erforderlich, dass AddWire-Anweisungen auf den oberen oder den unteren Teil der Zelle beschränkt sind, und es verhindert das Führen von (nachstehend beschriebenen) Verbindungen oder Vorverdrahtungen innerhalb der Zelle (d. h. es erfolgt kein Führen von Taktsignalen über die Zelle).
  • Die Anweisung "M5offset" definiert einen Wert, der verwendet wird, wenn eine M5-Metallspur verschoben wird. Die Anweisung "AddWire" spezifiziert eine hinzuzufügende Leitung. "AddWire" kann entweder mit dem "viasat"- oder "noviasat"-Kennwort spezifiziert werden, die sich beide innerhalb und außerhalb der Taktregion befinden. Bei Spezifizierung mit dem "viasat"-Kennwort wird die durch die AddWire-Anweisung hinzugefügte Leitung ebenfalls durch Durchkontakte zu sämtlichen Metallspuren kurzgeschlossen, welche die hinzugefügte Metallspur kreuzt, die das gleiche Signal transportieren. Die "C4Row"-Anweisung definiert Reihen, bei denen die M5-Leitungen eine Wendung beschreiben, um "C4-Pads" zu umgehen. C4-Pads sind spezielle Strukturen in dieser Implementierung, die in M5 ausgebildet sind, damit die integrierte Schaltung mit einem "Flip-Chip"-Paket verbondet werden kann. C4-Pads sind weder erforderlich noch stehen sie in Zusammenhang mit der Durchführung der vorliegenden Erfindung. Somit können keine Verbindung oder Vorverdrahtungen zu einer von der Anweisung "C4Row" spezifizierten Reihe hinzugefügt werden. Die Anweisung "M4Row" definiert, an welcher Stelle eine Verbindung von M4 (d. h. horizontal) mit den Positionen der Eingangs- und Ausgangsanschlussstifte der Puffer der Ebene 2 auftritt. Die M4-Reihe ordnet ferner einen Taktsatz jeder Eingangs- und Ausgangsanschlussstift-Position zu. Ein Taktsatz definiert die vertikale Ordnung relativ zu einer Sammelleitung, in der die Taktsignale in dem Taktsatz erscheinen sollen. Beispielsweise spezifiziert in der Steuerdatei die M4Row-Anweisung M4-Verbindungen in Reihen 0 und 1 (d. h. 3240) für die Eingangs- bzw. Ausgangsanschlüsse der Puffer der Ebene 2 mit einer Verschiebung von 720 für den Eingangstaktsatz {SC1_1 PH1_1 SC2_1} und einer Verschiebung von 945 für den Ausgangstaktsatz {SC1_2, PH1_2, SC2_2}.
  • Bei Abschluss der Initialisierung liest die ReadControlFile bei Schritt 204 (2) in den Taktregionen. Wie oben gesagt, können drei Arten von Taktregionen spezifiziert werden: ClockBox, SPBox und L2box. Jede Art von Taktregion kann durch die Position spezifiziert werden. Ferner kann eine SPBox durch den Positionsnamen spezifiziert werden, wie bei dem Beispiel der Steuerdatei. 4 zeigt die Positionen der vier ClockBoxes und einer L2Box. In dem Clock Route2-Programm wird jede Taktregion durch einen Namen und ihre unteren linken und oberen rechten X- und Y-Koordinaten spezifiziert. Somit erhält Clockbox ClockBox1 untere linke Koordinaten von (0,0) und obere rechte Koordinaten (150000, 16200), was in 4 qualitativ (d. h. nicht maßstabgetreu) als Taktregion 401 gezeigt ist. Ähnlich sind ClockBox2, ClockBox3 und ClockBox4 in 4 als Taktregionen 402, 403 bzw. 404 gezeigt. Wie spezifiziert, haben ClockBox1, ClockBox2 und ClockBox3 jeweils eine Höhe von fünf Standardzellenreihen. L2Box1 mit unteren linken und oberen rechten Koordinaten (0,0) und (445680, 16200) überlappt die Taktregionen 402, 403 und 404. Gemäß 4 sind M5-Metallspuren 451 und 452 in der Taktregion 401 zum Verbinden der Eingangsanschlüsse PH1_2 und SC1_2 für die Taktpuffer der Taktsignale PH1 und SC1 vorgesehen. Ähnlich sind M5-Spuren 453 und 454 zum Verbinden der Ausgangsanschlüsse PH1 und SC1 der Taktpuffer der Signale PH1 und SC1 vorgesehen. Die M5-Spuren 451454 werden von der Anweisung "ClockWire" spezifiziert, die für ein spezifiziertes Taktsignal die mittleren X-Koordinaten der M5-Spuren zum Verbinden der Eingangs- und Ausgangsanschlussstifte der Taktpuffer definiert. Auf die gleiche Weise sind M5-Spuren 455458, 459462 zum Verbinden der Eingangs- und Ausgangsanschlüsse der Taktpuffer der Taktregionen 402 und 403 vorgesehen. In der Taktregion 401 repräsentiert der abgeschattete Bereich 463 zwischen den M5- Spuren 452 und 453 den vor-zugewiesenen Pufferbereich, d. h. Dummy-Pufferzellen, zum Platzieren der Taktpuffer. Die Position des vor-zugewiesenen Pufferbereichs wird von der "Buf"-Anweisung spezifiziert. Ähnlich repräsentieren abgeschattete Bereiche 464 und 465 den vor-zugewiesenen Pufferbereich für die Taktregionen 402 und 403. Diese vor-zugewiesenen Pufferbereiche sind in 4 zwar zwischen den M5-Spuren in den Taktregionen 401 und 403 und links von den M5-Spuren in der Taktregion 402 gezeigt, sie können jedoch an einer beliebigen Stelle innerhalb der Taktregion angeordnet sein. Ein Bereich 466 ist der Bereich des vor-zugewiesenen Pufferbereichs für die Puffer der Ebene 2 von L2Box 12box1.
  • In einer ClockBox sind die Taktpufferreihen in vertikalen Arrays angeordnet, wobei jede Reihe eine Anzahl von von der "NumBuf"-Anweisung spezifizierten Stellen bereitstellt. Wenn ein Puffer innerhalb der zugeordneten Stelle platziert wird, wird der Eingangsanschlussstift der Taktpufferposition dann über eine M4-Spur mit der M5-Metallspur verbunden, die das Eingangstaktsignal verbindet. Ähnlich wird der Ausgangsanschlussstift der Taktpufferposition über eine M4-Metallspur mit der entsprechenden M5-Metallspur des Ausgangstaktsignals verbunden. Das tatsächliche Anschließen an die Eingangs- und Ausgangsanschlussstifte erfolgt durch den Router, wie dem oben genannten Platzier- und Führungs-Tool Cell3.
  • Die "RowPreWire"-Anweisung befiehlt dem ClockRoute2-Programm, eine Leitung zum Führen eines spezifizierten Taktsignals in spezifizierten Reihen-Intervallen zu platzieren. Von den "RowPreWire"-Anweisungen spezifizierte Leitungen sind die zugelassenen M4-Leitungen zum Koppeln der von den Ausgangsanschlüssen der Taktpuffer angesteuerten M5-Spur und der von dem Taktsignal angesteuerten getakteten Elemente. Beispielsweise spezifiziert in der Steuerdatei die RowPreWire-Anweisung in Clockbox1 für das Taktsignal PH1 eine M4-Leitung in jeder zweiten Reihe. Da jede Standardzellenreihe 18 Führungsspuren bereitstellt, spezifiziert bei dieser Ausführungsform die Row PreWire-Anweisung im wesentlichen, dass eine Spur pro 36 Spuren zum Führen des Taktsignals PH1 verwendet wird. Wie oben gesagt, ist ein Gridding der Taktsignale wünschenswert. Das Gridding erfolgt durch die "RowStrapTo Edge"-Anweisung, die das periodische Reihenintervall spezifiziert, in dem M4-Leitungen, die zu den Rändern der Taktregion verlaufen, angeordnet sind. In ClockBox1 spezifiziert die RowStrapToEdge-Anweisung, dass solche M4-Verbindungen, die über die Taktregion verlaufen, alle vier Reihen vorgesehen sind. Durch Verlängern dieser Verbindungen zu dem Rand der Taktregion und durch korrektes Spezifizieren solcher M4-Verbindungen in benachbarten Taktregionen wird das gleiche Taktsignal in unterschiedlichen Taktregionen verbunden.
  • Die Anweisungen "NoBuffer", "NoWire" und "NoStrap" spezifizieren jeweils eine Stelle (NoBuffer) oder einen Bereich von Stellen (NoWire und NoStrap), an/in der/dem kein Puffer, keine Leitung und keine Verbindung platziert werden kann. Die Anweisung "LeftStrap" ("RightStrap") spezifiziert einen Bereich von Y-Koordinaten, zwischen denen Verbindungen nur zu dem linken (rechten) Rand von ClockBox verlaufen. "LeftStrap" und "RightStrap" sind sinnvolle Anweisungen, wenn eine benachbarte Taktregion keine Verbindung zu dem an die aktuelle Taktregion angrenzenden Rand bereitstellt, so dass es nicht erforderlich ist, dass die aktuelle Taktregion eine M4-Verbindung zu diesem Rand herstellt. Dabei verläuft die M4-Spur soweit wie das zuletzt getaktete Element in der Reihe. Die "Load"-Anweisung spezifiziert die Eingangskapazität eines Anschlussstifts an einer Position innerhalb der ClockBox. Die Eingangskapazität kann ein numerischer Wert in Picoferard oder der Name einer Parameterdatei sein, in der der Eingangkapazitätswert gespeichert ist. Die "Load"-Anweisung ist insbesondere sinnvoll zum Erzeugen der Eingangskapazität eines den Kundenwünschen angepassten Makros.
  • Spezielle Taktregionen ("SPBoxes-2) können durch Anwendung der "SPBox"-Anweisung entweder durch die Stelle oder den Positionsnamen spezifiziert werden. Hinsichtlich einer SPBox berechnet das ClockRoute2-Programm die erforderliche Anzahl von Puffern und weist diese zu, erzeugt jedoch keine Führungs- oder Verbindungsanweisungen für das Führungs-Tool. In einer SPBox behält der Konstrukteur die Kontrolle über die Konfiguration des Takt verteilsystems per Hand innerhalb der SPBox. Selbstverständlich kann der Anwender auch AddWire-Anweisungen aufnehmen, die entlang dem Routen geführt werden. Beispielsweise wird eine M3-Metallspur der Signalnetz-InEromBox hinzugefügt, die zwischen Koordinaten (20200, 0) und (20, 200, 9720) verläuft. Die "Place"-Anweisung definiert eine Stelle; an der ein Taktpuffer platziert wird.
  • Die "L2Box"-Anweisung definiert den Bereich, über den Taktpuffer zum Ansteuern von Taktpuffern einer unteren Ebene zugewiesen werden. Typischerweise spezifiziert der Konstrukteur mittel der "Buf"-Anweisung eine Dummy-Pufferzellenstelle in der L2Box, die Anzahl von Reihen ("NumRow"-Anweisung) in der L2Box und die Anzahl von Taktpuffern pro Reihe ("NumBuf"-Anweisung). Die Kapazitäten von M4-Spuren, die in dem Lageplanungs-Schritt bereitgestellt werden, für die Eingangs- und Ausgangsanschlüsse von Puffern der Ebene 2 werden dem ClockRoute2-Programm mittels der "WireLoad"-Anweisungen zur Verfügung gestellt.
  • Wenn die Subroutine ReadControlFile die Steuerdatei liest, wird eine geeignete Wertüberprüfung durchgeführt. Beispielsweise werden für die "NoWire"-Anweisung die Y-Koordinaten-Argumente im Vergleich mit dem Bereich der Y-Koordinate der ClockBox geprüft, um sicherzustellen, dass die "NoWire"-Anweisung korrekt innerhalb der Grenzen der ClockBox spezifiziert ist. Ferner werden weitere sinnvolle Parameterwerte abgeleitet, wo dies sinnvoll ist. Beispielsweise wird beim Definieren einer ClockBox die Anzahl von Reihen innerhalb der Box anhand der Koordinaten-Argumente, die in der ClockBox-Anweisung geliefert werden, und der anhand einer vorhergehenden RowHeight-Anweisung erhaltenen Reihenhöhe berechnet.
  • Nach dem Lesen der Steuerdatei liest das ClockRoute2-Programm in Schritt 205 die "def"-Datei. Wie oben gesagt, listet die "def"-Datei die Positionen von Anschlussstiften, Durchkontakten, Komponenten und Netzen in der Konzeption auf, einschließlich ihrer Platzierstellen und Zellentypen. Eine Liste von Komponenten ist zwischen den Kennwörtern "COMPONENTS" und "END COM PONENTS" erstellt. Ähnlich sind die Netze zwischen den Kennwörtern "NETS" und "END NETS" aufgeführt, wobei die Liste von Positionen in jedem Signalnetz hinter "-" und dem Signalnamen aufgeführt ist. Die "def"-Datei wird von der Subroutine "ReadDef" gelesen. Die Subroutine erzeugt bei den Schritten 206 und 207 Datenstrukturen für die Netze bzw. die Komponenten, wobei die Subroutinen ProcessClockNet, ProcessSPNet und ProcessComponents aufgerufen werden.
  • Für jede in einem Netz der "def"-Datei aufgelistete Position wird ein Eintrag entweder in dem Array "OnNet" (für ein Netz in einer ClockBox) oder dem Array "SPNet" (für ein Netz in einer SPBox) erzeugt, damit diese einen Signalnamen (d. h. den Name des Netzes) und den Namen des Anschlussstifts, dem das Signal zugeordnet ist, enthält. Wenn der Eintrag bereits existiert, d. h. die Position bereits in einem früheren Netz erschienen ist, werden der Signalname und der Name des Anschlussstifts dem bestehenden Eintrag hinzugefügt. Die Arrays OnNet und SPNet, die durch Zeichenfolgeoperationen in den Subroutinen ProcessClockNet bzw. ProcessSPNet erzeugt worden sind, werden durch den Positionsnamen angezeigt. Die Subroutine ProcessComponents erzeugt drei Arrays für die Komponenten oder Positionen der Konzeption: "Comp Type", "CompX" und CompY". Jedes dieser Arrays wird durch einen Positionsnamen angezeigt. Entsprechende Einträge von CompType, CompX und CompY geben den Positionstyp und die untere linke X-Koordinate und die Y-Koordinaten einer Position an. Die Subroutine ProcessComponents prüft ferner die Orientierung sämtlicher Zellen und markiert diejenigen Zellen, die in einer BlockedCell-Anweisung spezifiziert sind.
  • Bei Schritt 208 ruft das ClockRoute2-Programm die Subroutine RemoveNon ClockedElems auf, um die Dummy-Pufferzellen aus dem OnNet-Array zu entfernen und die Positionen innerhalb sämtlicher SPBoxes in Arrays "SPBox Type" und "SPType" zu platzieren, die sowohl durch den Positionsnamen als auch den Signalnamen angezeigt sind. Das Array SPBoxType speichert den Namen der SPBox, und das Array SPType verzeichnet den Positionstyp. Die Subroutine RemoveNonClockElems erzeugt ferner ein Array AtY, von der Rei he (d. h. den Y-Koordinaten) angezeigt wird, zum Speichern einer Liste von Positionen an jeder Y-Position.
  • Bei Schritt 209 ruft das ClockRoute2-Programm die Subroutinen ProcessStd CellRows, LimitWiresToAssignedRows und AddStraps auf, um die bislang erzeugte Datenstruktur zu verarbeiten. Die Subroutine ProcessStdCellRows erzeugt die Arrays ExtraLoadNet, SPCAP, SPCount, RowMostX, RowGate, Row Device, BoxDevices und Wirelength. ExtraLoadNet ist ein Array aus Signalnamen, die durch den Positionsnamen und den Namen des Anschlussstifts angezeigt werden, für jede Position und jeden Anschlussstift, für welche(n) von einer "Load"-Anweisung eine Kapazität definiert worden ist. Die Arrays SPCap und SPCount, die jeweils von einem SPBox-Namen und einem Signalnamen angezeigt werden, sind Arrays mit der Gesamtkapazität, die diesem Signal in dieser SPBox zugeordnet ist, und der Anzahl von Stiften, auf die die Kapazität innerhalb dieser SPBox entfällt. RowMostX, RowGate und RowDevices, die durch den Signalnamen, die Reihennummer bzw. den ClockBox-Namen angezeigt sind, liefern für jede Reihe (a) die Länge der M4-Metallspur, die zum Führen des Signals zu der am weitesten entfernten Zelle in der das Signal empfangenden Reihe erforderlich ist, (b) die dem Signal zugeordnete Gesamtkapazität und (c) die Anzahl von diesem Signal zugeordneten Vorrichtungen. Das Array BoxDevices, das durch den Signalnamen und eine Taktregion angezeigt wird, enthält die Gesamtzahl von dem Signal zugeordneten Vorrichtungen. Das Array Wirelength, das durch eine Taktregion und einen Signalnamen angezeigt wird, enthält die dem Signal in jeder Taktregion zugeordnete Gesamtleitungslänge. Das Array Wirelength wird diesmal dazu benutzt, für jede Reihe die Distanzen zwischen den am weitesten entfernten getakteten Elementen, welche das Taktsignal empfangen, anzugeben.
  • Zum Erzeugen der Arrays der Subroutine ProcessStdCellRows durchläuft die Subroutine ProcessStdCellRows das Array AtY in aufsteigender Reihenordnung. Für jede Liste von Positionen an jeder Y-Koordinate prüft die Subroutine ProcessStdCellRow jede Position in aufsteigender X-Koordinatenordnung. Für jeden Anschlussstift in jeder Position wird der dem Anschlussstift zugeordnete Signalname in das Array ExtraLoadNet eingegeben, wenn eine vorherige "Load"-Anweisung eine zusätzliche Kapazität für diesen Positionstyp und Anschlussstift definiert. Wenn die Position in einer SPBox enthalten ist, werden die SPCap- und SPCount-Arrays aktualisiert, um den Kapazitätsbeitrag der Position und die Anschlussstiftzählung in der SPBox aufzunehmen. Für jede Reihe und jeden Signalnamen führt ProcessStdCell folgendes durch: (a) notiert in dem entsprechenden Eintrag des Arrays RowMostX die X-Koordinate des in X-Richtung am weitesten von der Dummy-Pufferzelle entfernten Anschlussstifts, (b) akkumuliert in dem entsprechenden Eintrag des Arrays RowGate die Gesamtkapazität und (c) akkumuliert in dem entsprechenden Eintrag des Arrays RowDevices die Anzahl von angetroffenen Anschlussstiften. Für jede Taktregion und jedes Signal wird die Gesamtzahl von angetroffenen Anschlussstiften in dem entsprechenden Eintrag des Arrays BoxDevices akkumuliert. Schließlich werden für jede Taktregion die jedem Signal zugeordneten Leitungslängen anhand der Daten in dem Array RowMostX und dem Bereich der Taktregion berechnet.
  • Nach Beendigung der Subroutine ProcessStdCellRows ruft das ClockRoute2-Programm die Subroutine LimitWiresToAssignRows auf. Die Subroutine Limit WiresToAssignRows entfernt für jedes Signal jeder Taktregion Reihen, bei denen das Führen des Signals durch eine "NoWire"-Anweisung, eine "C4Row"-Anweisung untersagt ist, oder die in eine Reihe zwischen den zugelassenen M4-Leitungen in einer "RowPreWire"-Anweisung fallen. In der Subroutine LimitWireToAssignedRows wird ein RowLeastX-Array, ähnlich dem RowMostX-Array, aktualisiert, um die kleinste X-Koordinate jeder Leitung zu erzeugen. Das ClockRoute2-Programm ruft dann die Subroutine AddStraps auf, um die Leitungen jedes Taktsignals und jeder Taktregion durch Aktualisieren der entsprechenden Einträge in die Arrays RowLeastX und RowMostX an jeder Reihe, in der eine RowStrapToEdge-, LeftStrap- oder RightStap-Anweisung eine Verbindung definiert, zu verbinden (d. h. die Leitungen zu Gridding-Zwecken zu verlängern).
  • Bei Schritt 210, d. h. nach Abschluss der Ausführung der Subroutine AddStraps, ruft das ClockRoute2-Programm die Subroutine TotalCap auf, um die Gesamtkapazität in jeder jeder Taktregion zugeordneten Reihe zu berechnen. Die Ergebnisse werden in einem Array RowCap gespeichert, das durch die Taktregion, die Reihennummer und das Signal angezeigt wird. Jeder Eintrag in dem Array RowCap wird durch folgende Summierung erhalten: (a) der Kapazität in einem entsprechenden Eintrag in RowGate, d. h. der dem Signal zugeordneten Eingangskapazität, (b) der Kapazität pro Reihe der M5-Metallspur, d. h. der Kapazität pro Reihe der vertikalen Metallspur am Ausgang der Taktpuffer, und der Gesamtkapazität der M4-Leitung, die anhand der entsprechenden Einträge in den Arrays RowLeastX und RowMostX errechnet worden ist. Der Kapazitätswert für jede Leitung wird durch Multiplizieren ihrer Länge mit ihrer Kapazität pro Längeneinheit erhalten, welche von der Technologie-Datei und den M4Mult- oder M5Mult-Anweisungen zur Verfügung gestellt wird. Schließlich wird, wenn ein zusätzlicher Lastwert von einer "Load"-Anweisung für diese Taktregion definiert worden ist, für jedes Netz die zusätzliche Last dem entsprechenden Eintrag des Arrays RowCap hinzugefügt.
  • An dieser Stelle wird für jede Taktregion die Gesamtkapazität, die jedes Taktsignal an jeder Reihe antrifft, in dem Array RowCap zur Verfügung gestellt. Das ClockRoute2-Programm ruft dann in Schritt 211 die Subroutine Assign BuffersAndInputViasAndWires ("ABIVW") zum Zuweisen von Taktpuffern auf. Die Subroutine ABIVW definiert ein Gleitfenster, das die Anzahl von in der "RowLookAhead"-Anweisung definierten Standardzellenreihen enthält. In jeder Taktregion bestimmt die Subroutine ABIVW für jede Reihe, an der ein Puffer hinzugefügt werden kann, d. h. keine in einer C4Row-Anweisung spezifizierte Reihe, eine Anzahl von hinzuzufügenden Puffern anhand der folgenden Gleichung:
    Figure 00230001
    wobei (a) NumBuf die Anzahl von der aktuellen Reihe hinzuzufügenden Taktpuffern ist; (b) CurrCap die restliche Kapazität innerhalb des Fensters für dieses Signal ist; (c) ClkDrive die optimale Last für den Taktpuffer ist; (d) Rows left die Anzahl von verbliebenen Reihen ist, für die Taktpuffer hinzugefügt werden können; und (e) "int" die Funktion ist, die eine echte Anzahl zu der größten ganzen Zahl kürzt, die kleiner ist als die echte Anzahl.
  • Bei der vorstehenden Gleichung wird der Wert 0,5 hinzugefügt, um sicherzustellen, dass ein Taktpuffer hinzugefügt wird, wenn mehr als die Hälfte eines Taktpuffers benötigt wird. Somit ist bei diesem Verfahren die Anzahl von zugewiesenen Taktpuffern so groß, dass die auf jeden Taktpuffer wirkende mittlere Last in der gesamten integrierten Schaltung im wesentlichen gleich (d. h. ungefähr die optimale Last) ist. Durch Verwendung einer großen Anzahl von identisch dimensionierten Taktpuffern wird bei der vorliegenden Erfindung ein Taktversatz aufgrund von Vorrichtungs-Fehlausrichtung vermieden.
  • Die Taktpuffer werden horizontal hinzugefügt. Die Subroutine ABIVW prüft dann, ob jeder Taktpuffer korrekt mit der M5-Leitung an dem Ausgangsanschluss der Dummy-Pufferzelle verbunden ist. Wenn keine Verbindungsleitung zum Verbinden mit der M5-Leitung vorhanden ist, wird eine neue M4-Leitung zu Verbindungszwecken hinzugefügt. Wenn eine M4-Leitung bereits vorhanden ist, jedoch nicht bis zu einem oder mehreren der hinzugefügten Taktpuffer verläuft, wird eine zusätzliche Länge der M4-Metallspur in die M4-Verbindung aufgenommen. In beiden Fällen, d. h. keine Verbindungsleitung oder eine inadäquate Verbindungsleitung, wird die Gesamtkapazität für das Fenster unter Verwendung der zusätzlichen Kapazität in der neuen oder verlängerten M4-Leitung neu berechnet. Die Anzahl von Taktpuffern, die der Reihe hinzugefügt werden müssen, wird dann neu berechnet. Der Vorgang wird wiederholt, bis keine neue Leitung oder Verlängerung von dem zuletzt hinzugefügten Puffer mehr benötigt wird. Bei dieser Ausführungsform wird mindestens ein Taktpuffer hinzugefügt, wenn entweder noch kein Puffer in der aktuellen Taktregion vorhanden ist oder wenn die verbleibende Kapazität größer ist als die optimale Last für einen Taktpuffer. Die hinzugefügten Taktpuffer werden dann in eine Netzlisten-Datenstruktur aufgenommen, und zwar zum Vorhalten von Referenzen hinsichtlich dieser Taktpuffer zum Ausgeben an die modifizierte Verilog-Datei in einem nachfolgenden Schritt.
  • Die Subroutine ABIVW ruft dann die Subroutine AddInputWiresAndVias auf. Die Subroutine AddInputWiresAndVias erzeugt M4-Spuren zum Verbinden der Eingangsanschlüsse eines Taktpuffers mit den von den Puffern der Ebene 2 angesteuerten M5-Verbindungen. Bei dieser Ausführungsform sind zwei Signalspuren sowohl am oberen als auch am unteren Teil jeder Reihe vorgesehen, die beiden Sammelleitungen innerhalb dieser außenliegenden Spuren angeordnet und zehn Signalspuren zwischen den Sammelleitungen vorgesehen. In M4-Reihen (d. h. Reihen, bei denen in dem Lageplanungs-Schritt Metallspuren zum Verbinden von Puffern der Ebene 2 zugeordnet worden sind) verlaufen die breiten M4-Verbindungen jedoch zwischen den Sammelleitungen, so dass nur eine Spur zwischen den Sammelleitungen unmittelbar unter der oberen Sammelleitung zur Verfügung steht. Typischerweise weist die Subroutine AddInputWiresAndVias die mittlere Spur zwischen den Leitungen dem ersten Taktsignal zu und weist dann die Spuren über und unter der mittleren Spur anderen Taktsignalen zu, und zwar alternierend zwischen den Spuren über und unter der mittleren Spur in einer Ordnung zunehmender Distanz zu der mittleren Spur. In M4-Reihen werden die Taktsignale jedoch in den beiden Spuren unter der unteren Sammelleitung geführt (die Spuren über der oberen und unmittelbar unter der oberen Sammelleitung sind für die Ausgangsleitung der Taktpuffer der Ebene 3 reserviert). Die Subroutine AddInputWiresAndVias platziert dann einen Durchkontakte zum Anschließen der M5-Verbindung an die hinzugefügte M4-Leitung. Da die Durchkontakte zwischen M4 und M5 jeweils breiter sind als eine M4-Spur mit Mindestbreite, sehen bei dieser Ausführungsform die Konzeptionsvorschriften zum Zwecke der Minimierung des Abstands zwischen den Spuren vor, dass ein Durchkontakt in Abhängigkeit von der Spur, auf der er sich befindet, nur die zugewiesene der beiden benachbarten Spuren übergreift. Beispielsweise übergreifen die Durchkontakte auf der mittleren Spur und der zweiten Spur über der mittleren Spur nur die dazwischenliegende Spur. Bei diesem Konzept kann eine maximale Dichte von Spuren erreicht werden. Die Subroutine AddIputWiresAndVias ruft ferner die Subroutine ProcessWires auf, um die hinzugefügte M4-Leitung mit einer zuvor hinzugefügten überlappenden M4-Leitung derselben Spur zu vereinigen, wie z. B. eine M4-Leitung mit einem benachbarten Taktpuffer. Die hinzugefügte und verarbeitete Leitung wird dann in eine Leitungs-Datenstruktur aufgenommen, die in einem nachfolgenden Schritt zur Ausgabe an die Addwire-Datei verwendet wird. Das Fenster wird dann um eine Reihe nach vorn bewegt, bis die gesamte Taktregion abgefragt worden ist. Summarische Statistiken und Fehlerbedingungen, wenn z. B. mehr Taktpuffer benötigt werden als tatsächlich Platz zur Verfügung steht, werden für jede Taktregion gemeldet. Die Subroutine ProcessPlaceElems wird dann aufgerufen, um die durch die Place-Anweisung den SpBoxes hinzugefügten Taktpuffer in die Netzlisten-Datenstruktur aufzunehmen.
  • Bei Schritt 212 weist das ClockRoute2-Programm dann durch Aufrufen der Subroutine ProcessL2Buffers Taktpuffer der zweiten Ebene und Taktsignale zu und führt diese. Die Subroutine ProcessL2Buffers summiert für jede L2Box und ein einen Puffer der Ebene drei ansteuerndes Taktsignal die Gesamtkapazität innerhalb der diesem Taktsignal zugeordneten L2Box und platziert das Ergebnis in ein Array L3Cap. Das Array L3Cap wird durch ein Ausgangstaktsignal eines Taktpuffers der Ebene 2 angezeigt. Jedem Eintrag des Arrays L3Cap (d. h. für jedes Taktsignal) wird dann ein zusätzlicher Lastwert hinzugefügt, der in einer "WireLoad"-Anweisung für dieses Taktsignal spezifiziert ist. Die Anzahl von für dieses Taktsignal in dieser Taktregion erforderlichen Taktpuffern wird dann durch Anwendung der folgenden Gleichung errechnet:
    Figure 00260001
    wobei (a) L3NumBuf die Anzahl von in der L2Box hinzuzufügenden Taktpuffern ist; (b) L3Cap [Signal] die Gesamtkapazität für dieses Taktsignal in dieser L2Box ist; und (c) die optimale Last die optimale Last für den Taktpuffer der Ebene 2 ist.
  • Die von ProcessL2Buffers hinzugefügten Puffer werden dann zum nachfolgenden Ausgeben an die modifizierte Verilog-Datei in die Netzlisten-Datenstruktur aufgenommen. Die Subroutine ProcessL2Buffer ruft dann die Subroutine PlaceL2Wire auf, um M5-Leitungen zum Anschließen der Eingangs- und Ausgangsanschlüsse der hinzugefügten Taktpuffer an die in dem Lageplanungs-Schritt bereitgestellten M4-Verbindungen zu platzieren. Diese Leitungen werden von der Subroutine ProcessL2Wire vereinigt, welche der oben beschriebenen Subroutine ProcessWire im wesentlichen gleich ist. Die Durchkontakte zwischen den M4- und M5-Spuren werden von der Subroutine AddL2Via hinzugefügt.
  • Das ClockRoute2-Programm ruft dann in Schritt 213 die Subroutine Add OutputWiresAndVias auf, um M4-Leitungen zum Anschließen des Ausgangsanschlusses des Taktpuffers und der getakteten Elemente an die M5-Verbindungen bereitzustellen. Die Operationen der Subroutine AddOutputWiresAndVias ist derjenigen der oben beschriebenen Subroutine AddInputWiresAndVias im wesentlichen gleich. Die Subroutine AddOutputWiresAndVias ruft ebenfalls die Subroutine ProcessWire auf, um die neu hinzugefügten Leitungen zu vereinigen. Diese Leitungen werden dann in die Leitungs-Datenstruktur aufgenommen, um AddWire-Anweisungen für das Führungs-Tool in dem nachfolgenden Führungs-Schritt zu erzeugen.
  • Schließlich ruft in Schritt 214 das ClockRoute2-Programm die Subroutinen WriteDef, WriteWire und WriteVerilog auf, um die modifizierte "def"-Datei, die AddWire-Datei bzw. die modifizierte Verilog-Datei zu erstellen.
  • Die vorstehende detaillierte Beschreibung dient zur Erläuterung der spezifischen Ausführungsformen der vorliegenden Endung und darf nicht als Ein schränkung angesehen werden. Zahlreiche Variationen und Modifikationen sind innerhalb des Umfangs der vorliegenden Erfindung möglich. Die vorliegende Erfindung wird durch die beiliegenden Ansprüche definiert.

Claims (7)

  1. In einem Computer ablaufendes Verfahren zum automatischen Zuweisen von Taktpuffern (103, 104, 105, 106) zu einer integrierten Schaltung (101), die einen Bereich aufweist, in dem mehrere Standardzellenreihen platziert sind, von denen einige ein Taktsignal als Eingangssignal empfangen, dadurch gekennzeichnet, dass das Verfahren folgende Schritte umfasst: innerhalb des Bereichs der integrierten Schaltung Zuordnen eines zugewiesenen Pufferbereichs, in dem mehrere das Taktsignal ansteuernde Taktpuffer platziert werden können, von denen jeder einer bevorzugten Last zugeordnet ist; für jede Standardzellenreihe: (a) Identifizieren derjenigen Standardzellen, die das Taktsignal empfangen, (b) Zuordnen einer Eingangskapazität zu jeder identifizierten Standardzelle, (c) für jede identifizierte Standardzelle Ableiten einer der identifizierten Standardzelle zugeordneten Leitungskapazität durch Schätzen der Leitungslänge, die benötigt wird, um das Taktsignal von dem zugewiesenen Pufferbereich elektrisch mit der identifizierten Standardzelle zu koppeln, und (d) Ableiten einer Reihenkapazität durch Summieren sämtlicher Eingangskapazitäten und Leitungskapazitäten innerhalb der Standardzellenreihe; und Auswählen jeder Standardzellenreihe in einer vorbestimmten Reihenfolge und für jede ausgewählte Standardzellenreihe: (a) Bestimmen einer Fensterkapazität durch Summieren der Reihenkapazitäten für ausgewählte Standardzellenreihen, die den ausgewählten Standardzellenreihen benachbart sind, (b) Bestimmen einer Anzahl von Taktpuffern zum Zuwei sen zu der ausgewählten Standardzellenreihe durch Dividieren der Fensterkapazität durch die bevorzugte Last und eine von der Anzahl der benachbarten Standardzellenreihen abgeleiteten Anzahl und (c) Platzieren der Anzahl von Taktpuffern innerhalb des zugewiesenen Pufferbereichs.
  2. Verfahren nach Anspruch 1, bei dem die benachbarten Standardzellereihen Standardzellenreihen innerhalb eines vorbestimmten Fensters sind, in dem die ausgewählte Standardzellenreihe enthalten ist.
  3. Verfahren nach Anspruch 1, ferner mit dem Schritt des Bereitstellens einer zweiten Leitung (152), die in der Nähe des zugewiesenen Pufferbereichs verläuft, wobei die zweite Leitung zum Koppeln von Ausgangsanschlüssen der Taktpuffer innerhalb des zugewiesenen Pufferbereichs vorgesehen ist, wobei der Schritt des Ableitens einer Reihenkapazität das Einbringen eines Beitrags durch die zweite Leitung in die Reihenkapazität umfasst.
  4. Verfahren nach Anspruch 1, bei dem die integrierte Schaltung einen zweiten Bereich aufweist, der mehrere das Taktsignal empfangende logische Schaltungen umfasst, wobei das Verfahren ferner folgende Schritte umfasst: Zuordnen eines zweiten zugewiesenen Pufferbereichs innerhalb des zweiten Bereichs; für jede logische Schaltung innerhalb des zweiten Bereichs: (a) Schätzen einer dem Taktsignal zugewiesenen Eingangskapazität und (b) Schätzen einer Leitungskapazität der logischen Schaltung anhand der Leitungslänge, die benötigt wird, um das Taktsignal von dem zweiten zugewiesenen Pufferbereich mit der logischen Schaltung zu koppeln; und Platzieren einer Anzahl von Taktpuffern (106) in den zweiten zugewiesenen Pufferbereich anhand eines Quotienten, der erhalten wird durch (a) Erhalten einer Summe der Eingangskapazitäten sämtlicher logischen Schaltungen und der Leitungskapazitäten sämtlicher logischen Schaltungen und (b) Dividieren der Summe durch die bevorzugte Last.
  5. Verfahren nach Anspruch 1, bei dem jeder in dem zugewiesenen Pufferbereich zugewiesene Taktpuffer eine Eingangskapazität aufweist, wobei das Verfahren ferner folgende Schritte umfasst: Zuordnen eines zweiten zugewiesenen Pufferbereichs in der integrierten Schaltung; Schätzen einer zweiten Leitungskapazität anhand der Leitungslänge, die benötigt wird, um den zweiten zugewiesenen Pufferbereich mit den Taktpuffern zu koppeln; und Platzieren einer zweiten Anzahl von Taktpuffern (105) in den zweiten zugewiesenen Pufferbereich anhand eines Quotienten, der durch Dividieren der Summe der Leitungskapazität und der Eingangskapazitäten der Taktpuffer in einem ersten zugewiesenen Pufferbereich durch die bevorzugte Last erhalten wird.
  6. Verfahren nach Anspruch 5, bei dem Ausgangsanschlüsse der Taktpuffer in dem zweiten zugewiesenen Bereich durch Leitungen (157, 158) miteinander verbunden sind.
  7. Verfahren nach Anspruch 5, das derart auf ein erstes Taktsignal und ein zweites Taktsignal angewandt wird, dass ein erster Satz von Taktpuffern entsprechend dem ersten Taktsignal und ein zweiter Satz von Taktpuffern entsprechend dem zweiten Taktsignal in den ersten zugewiesenen Pufferbereich platziert werden, ferner mit dem Schritt des Führens einer ersten Leitung und einer zweiten Leitung zum Koppeln des ersten Taktsignals bzw. des zweiten Taktsignals von dem zweiten zugewiesenen Taktpufferbereich mit dem ersten Satz von Taktpuffern, wobei die erste Leitung und die zweite Leitung in einer vorbestimmten Reihenfolge relativ zu einer Sammelleitung einer Standardzellenreihe in dem ersten Bereich positioniert werden.
DE69724245T 1996-04-15 1997-04-15 Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem Expired - Lifetime DE69724245T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US632966 1996-04-15
US08/632,966 US5790841A (en) 1996-04-15 1996-04-15 Method for placement of clock buffers in a clock distribution system
PCT/US1997/005422 WO1997039414A2 (en) 1996-04-15 1997-04-15 Method for placement of clock buffers in a clock distribution system

Publications (2)

Publication Number Publication Date
DE69724245D1 DE69724245D1 (de) 2003-09-25
DE69724245T2 true DE69724245T2 (de) 2004-06-03

Family

ID=24537725

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69724245T Expired - Lifetime DE69724245T2 (de) 1996-04-15 1997-04-15 Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem

Country Status (5)

Country Link
US (2) US5790841A (de)
EP (1) EP0894308B1 (de)
AU (1) AU2433397A (de)
DE (1) DE69724245T2 (de)
WO (1) WO1997039414A2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014038A (en) * 1997-03-21 2000-01-11 Lightspeed Semiconductor Corporation Function block architecture for gate array
US5966522A (en) * 1997-03-28 1999-10-12 International Business Machines Corporation Multi-phase clock distribution method and system for complex integrated-circuit devices
JP3000961B2 (ja) * 1997-06-06 2000-01-17 日本電気株式会社 半導体集積回路
US6397169B1 (en) * 1998-06-30 2002-05-28 Synopsys, Inc. Adaptive cell separation and circuit changes driven by maximum capacitance rules
JP3052951B1 (ja) * 1999-02-16 2000-06-19 日本電気株式会社 クロックツリ―シンセシス配置配線装置および方法
US6311314B1 (en) * 1999-04-27 2001-10-30 Hewlett-Packard Company System and method for evaluating the loading of a clock driver
JP2001117967A (ja) * 1999-10-22 2001-04-27 Nec Corp クロック分配設計方法、及び、木構造のバッファ回路
US6434731B1 (en) 1999-10-26 2002-08-13 International Business Machines Corporation Automated placement of signal distribution to diminish skew among same capacitance targets in integrated circuits
US6463547B1 (en) * 1999-12-08 2002-10-08 Compaq Information Technologies Group Lp Dual on-chip and in-package clock distribution system
US6966045B2 (en) * 1999-12-27 2005-11-15 Kabushiki Kaisha Toshiba Method and computer program product for estimating wire loads
US6532580B1 (en) * 2000-02-18 2003-03-11 Hewlett-Packard Company In-place method for inserting repeater buffers in an integrated circuit
US6408426B1 (en) * 2000-02-19 2002-06-18 Hewlett-Packard Company Method for determining locations of interconnect repeater farms during physical design of integrated circuits
JP2001257268A (ja) * 2000-03-13 2001-09-21 Nec Microsystems Ltd レイアウト方法
US6513149B1 (en) * 2000-03-31 2003-01-28 International Business Machines Corporation Routing balanced clock signals
JP3420195B2 (ja) * 2000-09-26 2003-06-23 エヌイーシーマイクロシステム株式会社 クロック配線の設計方法
US6480994B1 (en) * 2001-02-15 2002-11-12 Lsi Logic Corporation Balanced clock placement for integrated circuits containing megacells
US6594807B1 (en) * 2001-03-06 2003-07-15 Lsi Logic Corporation Method for minimizing clock skew for an integrated circuit
JP5193406B2 (ja) * 2001-06-13 2013-05-08 富士通セミコンダクター株式会社 クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体
US7243323B2 (en) * 2001-08-29 2007-07-10 Infineon Technologies Ag Integrated circuit chip design
US6728944B2 (en) * 2001-11-29 2004-04-27 Intenational Business Machines Corporation Method, system, and computer program product for improving wireability near dense clock nets
US20030101423A1 (en) * 2001-11-29 2003-05-29 Tyler Thorp Clock grid skew reduction using a wire tree architecture
KR100429891B1 (ko) * 2002-07-29 2004-05-03 삼성전자주식회사 클럭 스큐를 최소화하기 위한 격자형 클럭 분배망
WO2004061724A1 (en) * 2002-12-17 2004-07-22 International Business Machines Corporation Asic clock floor planning method and structure
US7096442B2 (en) * 2003-07-10 2006-08-22 Lsi Logic Corporation Optimizing IC clock structures by minimizing clock uncertainty
US20060053403A1 (en) * 2004-09-09 2006-03-09 Cowan Christopher R System and method for routing clock signals from a clock trunk
JP4645238B2 (ja) * 2005-03-09 2011-03-09 日本電気株式会社 半導体装置
US20080155490A1 (en) * 2006-12-22 2008-06-26 Tianwen Tang Method for Reducing Coupling Noise, Reducing Signal Skew, and Saving Layout Area for an Integrated Circuit
US7979732B2 (en) * 2007-07-03 2011-07-12 International Business Machines Corporation Efficient utilization of a multi-source network of control logic to achieve timing closure in a clocked logic circuit
US8010926B2 (en) * 2008-01-30 2011-08-30 International Business Machines Corporation Clock power minimization with regular physical placement of clock repeater components
US8104014B2 (en) * 2008-01-30 2012-01-24 International Business Machines Corporation Regular local clock buffer placement and latch clustering by iterative optimization
JP5401256B2 (ja) * 2009-10-16 2014-01-29 ルネサスエレクトロニクス株式会社 半導体装置の設計方法
US8239799B2 (en) * 2010-01-07 2012-08-07 Freescale Semiconductor, Inc. Placing filler cells in device design based on designation of sensitive feature in standard cell
US8593177B2 (en) 2012-03-19 2013-11-26 Advanced Micro Devices, Inc. Integrated circuit with timing aware clock-tree and method for designing such an integrated circuit
US9372499B2 (en) 2014-01-21 2016-06-21 Advanced Micro Devices, Inc. Low insertion delay clock doubler and integrated circuit clock distribution system using same
US9319037B2 (en) 2014-02-03 2016-04-19 Advanced Micro Devices, Inc. Self-adjusting clock doubler and integrated circuit clock distribution system using same
US9858177B2 (en) 2015-10-30 2018-01-02 International Business Machines Corporation Automated test generation for multi-interface enterprise virtualization management environment
US9892222B1 (en) * 2016-08-11 2018-02-13 International Business Machines Corporation Automated attribute propagation and hierarchical consistency checking for non-standard extensions
US10572373B2 (en) 2017-04-20 2020-02-25 International Business Machines Corporation Automated test generation for multi-interface and multi-platform enterprise virtualization management environment
US10642949B2 (en) * 2017-06-07 2020-05-05 Taiwan Semiconductor Manufacturing Co., Ltd. Cell placement site optimization
DE102017127276A1 (de) * 2017-08-30 2019-02-28 Taiwan Semiconductor Manufacturing Co., Ltd. Standardzellen und abwandlungen davon innerhalb einer standardzellenbibliothek
US11615230B2 (en) 2020-12-17 2023-03-28 Advanced Micro Devices, Inc. Wide range clock monitor system
US20230075565A1 (en) * 2021-09-07 2023-03-09 International Business Machines Corporation Signal pre-routing in an integrated circuit design

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012427A (en) * 1988-01-30 1991-04-30 Kabushiki Kaisha Toshiba Semiconductor integrated circuit and method of manufacturing the same
JPH0736422B2 (ja) * 1988-08-19 1995-04-19 株式会社東芝 クロック供給回路
JPH0824143B2 (ja) * 1989-02-08 1996-03-06 株式会社東芝 集積回路の配置配線方式
JP2756325B2 (ja) * 1989-12-07 1998-05-25 株式会社日立製作所 クロック供給回路
JP2695078B2 (ja) * 1991-06-10 1997-12-24 株式会社東芝 データ処理装置クロック信号の分配方法
US5430397A (en) * 1993-01-27 1995-07-04 Hitachi, Ltd. Intra-LSI clock distribution circuit
US5467033A (en) * 1993-07-02 1995-11-14 Tandem Computers Incorporated Chip clock skew control method and apparatus
US5481209A (en) * 1993-09-20 1996-01-02 Lsi Logic Corporation Clock distribution and control in an integrated circuit
JP3112784B2 (ja) * 1993-09-24 2000-11-27 日本電気株式会社 クロック信号分配回路
JP2540762B2 (ja) * 1993-11-10 1996-10-09 日本電気株式会社 クロック信号供給方法
US5564022A (en) * 1994-02-09 1996-10-08 Intel Corporation Method and apparatus for automatically inserting clock buffers into a logic block to reduce clock skew
US5774371A (en) * 1994-08-03 1998-06-30 Matsushita Electric Industrial Co., Ltd. Semiconductor integrated circuit and layout designing method for the same
US5656963A (en) * 1995-09-08 1997-08-12 International Business Machines Corporation Clock distribution network for reducing clock skew
US5880607A (en) * 1996-05-01 1999-03-09 Sun Microsystems, Inc. Clock distribution network with modular buffers

Also Published As

Publication number Publication date
AU2433397A (en) 1997-11-07
US6266803B1 (en) 2001-07-24
US5790841A (en) 1998-08-04
EP0894308B1 (de) 2003-08-20
WO1997039414A3 (en) 1998-03-12
EP0894308A2 (de) 1999-02-03
WO1997039414A2 (en) 1997-10-23
DE69724245D1 (de) 2003-09-25

Similar Documents

Publication Publication Date Title
DE69724245T2 (de) Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem
DE68929518T2 (de) Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
EP0441810B1 (de) Verfahren zur plazierung von modulen auf einem träger
DE69813892T2 (de) Polygon darstellung im layout eines integrierten schaltkreises
DE60005670T2 (de) Aktualisierung der platzierung während der technologieabbildung
DE60318086T2 (de) System und methode zur reduzierung von leitungsverzögerung oder überlastung bei der synthese von hardware-solvern
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE112021002870T5 (de) Halbleiterschaltungs-entwurf und einheits-pin-anordnung
DE102014118932A1 (de) Charakterisierung einer Zelle unter Verwendung einer Eingangswellenerzeugung unter Berücksichtigung verschiedener Schaltungstopologien
DE10205559B4 (de) Integrierte Schaltung und Verfahren und Vorrichtung zum Entwurf einer integrierten Schaltung
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE4327652C2 (de) Integrierte Halbleiterschaltungsvorrichtung und Verfahren zum Entwerfen einer integrierten Halbleiterschaltungsvorrichtung
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
WO2005022629A2 (de) Verfahren zum entwurf von integrierten schaltkreisen mit ersatz-logikgattern
DE112004001651B4 (de) Automatisches Layoutumwandlungsystem und -verfahren
DE19530669A1 (de) Verfahren zum automatischen Auswählen eines taktsteuernden Signalpfads in umprogrammierbaren Systemen zur Hardware-Emulation
EP0909421B1 (de) Verfahren und anordnung zur rechnergestützten ermittlung einer systemzusammenhangsfunktion
DE10035358A1 (de) Logikteilungsverfahren, Logikteilungssystem und Aufzeichnungsmedium zum Speichern des Logikteilungsprogramms
DE10003101A1 (de) Nebenbedingungs-Erzeugungsvorrichtung für Logiksynthese und Nebenbedingungs-Erzeugungsverfahren dafür
DE2837574A1 (de) Treiber fuer integrierte schaltungen
DE112006001554B4 (de) Manhattan-Routenführung mit minimalem Abstand zu Zielpunkten
EP1008075B1 (de) Rechnergestütztes verfahren zur partitionierung einer elektrischen schaltung
EP3869380A1 (de) Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen
DE10104233B4 (de) Verfahren zur Zuordnung von Leitungen auf Verdrahtungsebenen für integrierte Halbleiterschaltungsanordnungen
DE10324565A1 (de) Verfahren und Vorrichtung zum Schaltungsentwurf mittels High-Level-Synthese

Legal Events

Date Code Title Description
8364 No opposition during term of opposition