DE3856234T2 - Hierarchischer Aufstellungsplan - Google Patents
Hierarchischer AufstellungsplanInfo
- Publication number
- DE3856234T2 DE3856234T2 DE3856234T DE3856234T DE3856234T2 DE 3856234 T2 DE3856234 T2 DE 3856234T2 DE 3856234 T DE3856234 T DE 3856234T DE 3856234 T DE3856234 T DE 3856234T DE 3856234 T2 DE3856234 T2 DE 3856234T2
- Authority
- DE
- Germany
- Prior art keywords
- function
- functions
- level
- hierarchy
- subordinate
- 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
Links
- 230000006870 function Effects 0.000 claims description 745
- 238000000034 method Methods 0.000 claims description 88
- 230000001419 dependent effect Effects 0.000 claims description 3
- 125000000524 functional group Chemical group 0.000 claims description 3
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 230000001131 transforming effect Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 33
- 238000013461 design Methods 0.000 description 15
- 238000000638 solvent extraction Methods 0.000 description 15
- 238000005070 sampling Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012887 quadratic function Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012109 statistical procedure Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L21/00—Processes or apparatus adapted for the manufacture or treatment of semiconductor or solid state devices or of parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Architecture (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Manufacturing & Machinery (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
Description
- Die vorliegende Erfindung betrifft die Plazierung von Funktionen auf einem integrierten Schaltungschip ("Lageplanung").
- Lageplanung ist der Vorgang des Plazierens funktioneller Bauelemente ("Funktionen", die auch als Module, Elemente, Blöcke oder Funktionsblöcke bezeichnet werden) auf einem Chip, und das Zuweisen von Verdrahtungsraum zwischen diesen, um die eigentliche Chipfläche auf ein Minimum zu reduzieren, die benötigt wird, um solche Funktionen und deren Verdrahtung zu aufzunehmen, und um die Wahrscheinlichkeit zu maximieren, daß diese Verdrahtung innerhalb dieser Fläche geführt werden kann.
- Eine Funktion besteht aus einem diskreten Logik- und/oder Speicherelement oder einer Kombination solcher Elemente. Sie kann einfach ein Inverter oder ein Flipflop sein, der sich aus einem oder nur wenigen Transistoren zusammensetzt, oder sie kann so komplex sein wie ein Schieberegister, eine ALE oder gar ein ganzer Mikroprozessor, der sich aus Hunderttausenden von Transistoren zusammensetzt.
- Vom mathematischen Standpunkt her gesehen, sind die Formulierung und Lösung des Lageplanungsproblems recht schwierig. Eine genaue mathematische Lösung läßt sich im wesentlichen nicht erhalten. Daher werden heuristische Algorithmen eingesetzt, um nahe an die optimalste Lösung zu dem Lageplanungssystem zu kommen.
- Außerdem ist aufgrund der zunehmenden Komplexität von Chipkonstruktionen, die immer mehr Logik- und/oder Speicherelemente pro Flächeneinheit benötigen, die Komplexität des Lageplanungsproblems drastisch gestiegen. Es ist daher äußerst vorteilhaft, diesen Prozeß auf irgendeine Art und Weise zu automatisieren.
- Vor dem Lageplanungsvorgang selbst, der die Plazierung von Funktionen auf einem Chip beinhaltet, muß die Logik des Chips entworfen werden. Logikdesigner arbeiten im allgemeinen mit hierarchischen Entwurfstechniken, um die entsprechende Auswahl und Verdrahtung von Logik- und/oder Speicherbauelementen zu bestimmen, mit denen der Chip die gewünschte Funktion ausführen kann. Diese Techniken beinhalten die Beschreibung der Funktionalität des Chips auf verschiedenen "Ebenen der Abstraktion", die von der allgemeinsten Funktion, die von dem Chip ausgeführt wird, bis zu den genauen Funktionen reichen, die von jedem Logik- und/oder Speicherelement auf dem Chip ausgeführt werden.
- Somit setzt sich die Hierarchie eines Logikdesigners aus N Funktionsebenen zusammen, wobei N eine ganze Zahl (N ≥ 1) ist, die die Zahl der hierarchischen Funktionalitätsebenen in dem Chip repräsentiert, wobei die erste Ebene der Chip selbst und n eine ganze Zahl (1 ≤ n ≤ N) ist, die die Ebene einer beliebigen Funktion in der Hierarchie repräsentiert.
- Eine "Grund"-Funktion auf der n-ten Ebene der Hierarchie ist als eine Mehrzahl von "untergeordneten" Funktionen auf der (n + 1)sten Ebene definiert, die jeweils "untergeordnete" Funktionen sind. So könnte beispielsweise ein Mikroprozessor auf der n-ten Ebene definiert werden als die Grundfunktion der folgenden untergeordneten Funktionen auf der (n + 1)sten Ebene: Eine ALE, eine Reihe von Registern, ein Bus und verschiedene andere Funktionen (die jeweils eine Mehrzahl von untergeordneten Funktionen der (n + 2)ten Ebene haben können oder nicht, usw.).
- Jede untergeordnete Funktion, die nicht auch gleichzeitig eine Grundfunktion ist (d. h., die keine untergeordnete Funktion hat), wird als "Terminal"- (oder "Blatt"-) Funktion bezeichnet. Jede Terminalfunktion ist mit wenigstens einer anderen Terminalfunktion verbunden, wobei eine solche Verbindung gewöhnlich als "Netz" bezeichnet wird. Eine Reihe von Netzen, die jeweils eine Mehrzahl von verdrahteten Funktionen definieren, wird gewöhnlich als "Netzliste" bezeichnet.
- Man beachte, daß tiefere Ebenen der Hierarchie gewöhnlich durch fortlaufend höhere Nummern bezeichnet werden. Während sich also Ebene 1 auf die oberste (Chip-) Ebene der Hierarchie bezieht, stellen die Ebenen 2, 3 und 4 nacheinander "tiefere" Ebenen der Hierarchie dar.
- Bisherige Lageplanungstechniken fallen grob in zwei Grundkategorien: (1) "Flache" Lageplaner, die versuchen, den Raum nur auf einer Ebene minimal zu halten (der "Ebene", die entsteht, wenn die Hierarchie durch Weglassen aller Funktionen mit Ausnahme der Terminalfunktionen abgeflacht wird), indem nur Terminalfunktionen plaziert werden; und (2) "oben automatisierte" Lageplaner, die den Lageplanungsvorgang nur auf der obersten Ebene automatisieren, indem nur Funktionen der zweiten Ebene plaziert werden.
- Es gibt im wesentlichen drei signifikante Lageplanungshindernisse, die mit bisherigen Verfahren nicht überwunden werden konnten:
- Zu Beginn des Lageplanungsvorgangs ist die genaue Fläche jeder Funktion möglicherweise nicht bekannt, weil bestimmte Funktionen noch nicht ausgelegt worden sind. Erst nach dem Auslegen der Elemente einer bestimmten Funktion unter Berücksichtigung der gesamten Verdrahtung kann die genaue Fläche dieser Funktion bestimmt werden.
- Obwohl der Verdrahtungsbereich innerhalb einer Funktion (deren Elemente noch nicht ausgelegt sind) der dominante Faktor bei der Bestimmung der gesamten von dieser Funktion eingenommenen Fläche ist, beinhalten bisherige Verfahren kein Mittel zum Einschätzen dieser Verdrahtungsfläche (und somit der Fläche der Funktion) über die gesamte Funktionshierarchie. Solche Verfahren sind auf die Einschätzung der Verdrahtungsfläche einer "flachen" Bauweise durch Multiplizieren der Gesamtfläche der Funktionen selbst mit einen statistisch ermittelten Prozentwert begrenzt.
- Sobald die Logik eines Chips auf hierarchische Weise entworfen ist (wobei jede Grundfunktion als eine Mehrzahl ihrer untergeordneten Elemente definiert ist), ist es wichtig, daß der Lageplanungsprozeß nicht störend in die Arbeitsweise des Logikdesigners eingreift oder sie verhindert. Flache Lageplaner plazieren nur Terminalfunktionen, die auf vielen verschiedenen Ebenen der Hierarchie auftreten können. Solche Lageplaner können durchaus die vom Logikdesigner festgelegte Hierarchie zerstören, indem untergeordnete Funktionen außerhalb des Bereiches plaziert werden, der von ihrer Grundfunktion eingenommen wird.
- Logikdesigner möchten häufig verschiedene (untergeordnete) Funktionen zusammen mit ihrer größeren Funktion (Grundfunktion) gruppieren. Dies geschieht aus einer Reihe verschiedener Gründe, wie z. B. die Geschwindigkeit der Zusammenwirkung zwischen zwei Funktionen, und diese Gründe werden im allgemeinen nicht in den Lageplanungsprozeß einbezogen. Eine Lageplanung unterhalb der Ebene der größeren (Grund-) Funktion führt jedoch möglicherweise zu einer Entgruppierung der Komponenten- (untergeordneten) Funktionen, wodurch die funktionellen Vorteile neutralisiert werden, die durch die hierarchische Bauweise des Logikdesigners geschaffen wurden.
- Das bei weitem signifikanteste Hindernis auf dem Weg zur Erzielung des optimalen Lageplans ist die Tatsache, daß eine Optimierung des Lageplans auf einer bestimmten Ebene in der Hierarchie Kenntnisse der funktionellen Verknüpfungen auf anderen Ebenen erfordert. Da Logik- und/oder Speicherelemente über die gesamte Hierarchie des Logikdesigners verknüpft sind (nicht nur auf der untersten Ebene), erfordert eine optimale Lageplanung auf jeder Ebene eine hierarchische Arbeitsweise, bei der diese ebenenübergreifenden Verknüpfungen berücksichtigt werden.
- Bisherige Lageplanungsverfahren sind nicht hierarchisch, da sie diese Zusammenwirkung zwischen Funktionen auf verschiedenen Ebenen in der Hierarchie nicht berücksichtigen. Flache Lageplanungstechniken berücksichtigen lediglich die "Ebene", die sich aus Terminalfunktionen zusammensetzt. Es kann eine so große Zahl dieser Terminalfunktionen geben, daß selbst automatisierte Techniken zuviel Zeit in Anspruch nehmen, als daß sie als praktikabel angesehen werden könnten.
- Außerdem kann, wie oben erörtert, eine Lageplanung auf dieser "Ebene" durchaus die Hierarchie verletzen, die vom Logikdesigner aufgestellt wurde. Die Notwendigkeit für eine wirklich hierarchische Lageplanung läßt sich vielleicht am besten an dem Wunsch von Unternehmen ersehen, im wesentlichen flache Lageplanungstechniken als hierarchisch zu klassifizieren (siehe z. B. McLeod, Jonah, "Now Designers Can Skip Floor-Planning Details" (Jetzt können Designer Lageplanungsdetails überspringen), Electronics, 30. April 1987, S. 61-62; und Ueda, Kazuhiro, et al., "CHAMP: Chip Floorplanning For Hierarchical VLSI Layout Design" (CHAMP: Chip-Lageplanung für hierarchische Höchstintegrations- Layoutplanung), IEEE Transactions on Computer-Aided Design, Bd. CAD-4, Nr. 1, Januar 1985, S. 12-22).
- Oben automatisierte Lageplanungstechniken arbeiten ebenfalls auf einer (der höchsten) Ebene. Eine Lageplanung selbst auf dieser Ebene berücksichtigt nicht in ausreichendem Maße die Plazierung und Verknüpfung von Funktionen auf tieferen Ebenen, weil die Plazierung solcher Funktionen auf diesen tieferen Ebenen bereits vor dem Beginn dieses automatisierten Prozesses manuell bestimmt wird. Somit ist eine automatisierte Lageplanung auf der höchsten Ebene im selben Maße weniger als optimal, wie eine manuelle Plazierung von Funktionen auf tieferen Ebenen nicht optimal ist.
- Frühere Verfahren beinhalten jedoch Einebenen- Lageplanungstechniken. Eine solche Technik beinhaltet die "Partitionierung" von Funktionen in zwei Gruppen, um die Zahl der Verknüpfungen zwischen den Gruppen auf ein Minimum zu reduzieren. Dieses Verfahren wird rekursiv angewendet, um in starkem Maße verbundene Funktionen zwangsweise nebeneinander zu plazieren, was zur Bildung von Funktionsgruppen führt, wodurch der benötigte Leitwegraum auf ein Minimum reduziert wird (siehe Kernighan, B. W. und S. Lin, "An Efficient Heuristic Procedure for Partitioning Graphs" (Ein effizientes heuristisches Verfahren zur Partitionierung von Kurven), The Bell System Technical Journal, Februar 1970, S. 291-307.
- Eine weitere Technik (die häufig in Zusammenhang mit der Partitionierung zur Anwendung kommt) beinhaltet das "Slicing" oder Unterteilen des Chipbereiches in rechteckige "Slicing-Zonen" (Zonen, in denen jede der partitionierten Funktionsgruppen plaziert werden kann), und das anschließende Plazieren jeder partitionierten Funktionsgruppe in einer solchen Zone, um ungenutzte Flächen und somit die gesamte Chipfläche auf ein Minimum zu reduzieren (siehe Otten, Ralph, H. J. M, "Layout Structures" (Layout-Strukturen), IBM Research Report, Nr. RC 9657 (#42647), 28. Oktober 1982.
- Solche Einebenen-Lageplanungsverfahren berücksichtigen jedoch einfach nicht die Beschränkungen, die mit der vom Logikdesigner aufgestellten Hierarchie auferlegt werden, wie z. B. die hierarchische Gruppierung von untergeordneten Funktionen innerhalb ihrer Grundfunktionen, und die Verknüpfung von Funktionen über die verschiedenen Ebenen dieser Hierarchie.
- Ein weiteres bekanntes Verfahren ist in einem Artikel von La Potin und Direktor in IEEE Transactions of Computer- Aided Design of Integrated Circuits and Systems", Bd. CAD- 5, Nr. 4, Oktober 1986, S. 477-489, beschrieben, das den Titel "Mason: A global floorplanning approach for VLSI design" (Mason: Eine globale Lageplanungsmethode für Höchstintegrationsbauweise) trägt.
- Die vorliegende Erfindung stellt ein Verfahren zum Entwerfen des Lageplans einer integrierten Schaltung gemäß dem beiliegenden Anspruch 1 bereit.
- Gemäß einem zweiten Aspekt der Erfindung, der in Anspruch 15 beansprucht wird, wird ein System zum Entwerfen des Lageplans einer integrierten Schaltung bereitgestellt.
- Die vorliegende Erfindung überwindet somit die obengenannten Hindernisse durch Bereitstellen eines wirklich hierarchischen Lageplanungssystems. Es nähert sich einer allgemein optimalen Lösung des Lageplanungsproblems, indem bei der Lageplanung auf jeder Ebene der vom Logikdesigner vorgegebenen Hierarchie die Gruppierung und Verknüpfung von Funktionen über alle Ebenen dieser Hierarchie berücksichtigt werden.
- Bei dieser Erfindung einer hierarchischen Lageplanung werden die oben beschriebenen Hindernisse, die Einebenen- Lageplaner noch nicht überwunden haben, auf die folgende Weise überwunden:
- Die vorliegende Erfindung schätzt die Fläche aller Terminalfunktionen, deren Elemente noch nicht ausgelegt sind, und schätzt dann die Fläche aller anderen (Grund-) Funktionen. Außerdem aktualisiert sie wiederholt diese Schätzungen, während untergeordnete Funktionen innerhalb ihrer Grundfunktionen plaziert werden, so daß sich eine genauere Schätzung der Fläche der Grundfunktion ergibt.
- Um eine unerwünschte Komplexität zu vermeiden, wird jede Funktion geometrisch als Rechteck dargestellt. Außerdem muß jede Funktion in eine der folgenden drei Kategorien fallen: (1) eine "Megazellen"-Funktion (eine Terminalfunktion, einschließlich Kontaktstellenfunktionen, die nur eine Zelle enthält, die bereits angelegt ist und daher feste Abmessungen hat), (2) eine "Makrozellen"- Funktion (eine Terminalfunktion, die viele kleine Zellen enthält, die beispielsweise eine Größe von jeweils etwa 2500 Quadratmikron haben können und deren Ansammlung noch nicht ausgelegt ist und die daher keine festen Abmessungen haben, oder (3) eine "Funktion von Funktionen" (eine Nicht- Terminalfunktion, die zwei oder mehr untergeordnete Funktionen hat).
- Die Fläche der Megazellenfunktionen ist bereits bekannt. Die Fläche der Makrozellenfunktionen kann mit sinnvoller Genauigkeit geschätzt werden, sobald die Summe der Flächen der Megazellen in dieser Funktion und die durchschnittliche Zahl von Leiterbahnen pro Kanal, die solche Megazellen verbinden, bestimmt sind. Die Summe der Flächen der Makrozellen ist zwar bekannt, aber die Zahl der Leiterbahnen pro Kanal, die solche Makrozellen verbinden, muß statistisch abgeleitet werden. Dieses Verfahren der statistischen Schätzung der Anzahl von Leiterbahnen pro Kanal, die Makrozellen verbinden, wird nachfolgend ausführlicher beschrieben.
- Wenn die Flächen von Terminalfunktionen (Megazellen- und Makrozellenfunktionen) bekannt sind, kann die Fläche jeder beliebigen Funktion von Funktionen geschätzt werden, aber nicht mit demselben statistischen Verfahren. Auch wenn die Summe der Flächen ihrer untergeordneten Funktionen bekannt sein mag, ist die Zahl solcher untergeordneter Funktionen im allgemeinen nicht groß genug, als daß ein statistisch genaues Ergebnis erzielt werden könnte.
- Und doch kann die Fläche jeder Funktion von Funktionen dadurch geschätzt werden, daß zur Summe der Flächen ihrer untergeordneten Funktionen ein Prozentanteil einer solchen Fläche addiert werden kann, der dem Prozentanteil des verfügbaren Leitwegraumes auf dem Chip entspricht. Mit anderen Worten, die verfügbare Fläche auf dem Chip zum Führen der Verdrahtung zwischen Funktionen wird gleichmäßig zwischen allen diesen Funktionen in der gesamten Hierarchie verteilt.
- Die geschätzte Fläche jeder solchen Funktion von Funktionen kann dann aktualisiert werden, während ihre untergeordneten Funktionen geformt und innerhalb ihrer Grundfunktion plaziert werden, wodurch ihre genaue Form und somit ihre genaue Fläche bestimmt werden. Wie aus der nachfolgenden ausführlichen Beschreibung hervorgeht, ist die Schätzung der Fläche jeder Funktion für die spätere Plazierung solcher Funktionen wesentlich.
- Die Lageplanung erfolgt hierarchisch mit der Einschränkung, daß die gesamte Hierarchie von Funktionen während der Lageplanung auf jeder einzelnen Ebene erhalten bleibt.
- Die Plazierung von Funktionen (relativ zueinander innerhalb ihrer Grundfunktion) wird ebenso hierarchisch bestimmt. Verbindungen zwischen Funktionen in der gesamten Hierarchie werden so gewichtet, daß sie die erwartete Anzahl der Verbindungen zwischen solchen Funktionen repräsentieren. Funktionen auf jeder Ebene werden dann innerhalb ihrer Grundfunktion teilweise auf der Basis ihrer Gewichtung partitioniert, und es werden binäre "Slicing- Bäume" erstellt, d. h. binäre Baumstrukturen, die die relative Plazierung von Funktionen innerhalb ihrer Grundfunktion auf jeder einzelnen Ebene darstellen.
- Die oberste Ebene des Slicing-Baums jeder Grundfunktion besteht aus einem Knoten, der alle ihre untergeordneten Funktionen repräsentiert. Dieser Knoten hat zwei "untergeordnete" Knoten, die jeweils eine von zwei partitionierten Gruppen der untergeordneten Funktionen der Funktion enthalten, die geometrisch durch die erste Scheibe (Slice) der Grundfunktion in zwei Slicing-Zonen getrennt sind. Jeder nachfolgende Knoten enthält zwei nachfolgend partitionierte Gruppen von Funktionen, die durch nachfolgende Scheiben der Grundfunktion geschaffen wurden, bis schließlich jeder Terminalknoten nur eine der untergeordneten Funktionen der Grundfunktionen enthält.
- So würde beispielsweise der oberste Knoten des Slicing-Baums einer Funktion Z mit fünf untergeordneten Funktionen (A, B, C, D und E) alle fünf untergeordneten Funktionen enthalten. Ihre beiden "untergeordneten" Knoten könnten der Knoten (A, B und C) und der Knoten (D) und (E) sein. Die beiden "untergeordneten" Knoten des Knotens (D und E) wären die Terminalknoten (D) und (E), während die beiden "untergeordneten" Knoten des Knotens (A, B und C) der Knoten (A und B) und der Terminalknoten (C) sein könnten. Die beiden "untergeordneten" Knoten des Knotens (A und B) schließlich wären die Terminalknoten (A) und (B).
- Diese Slicing-Bäume werden durch den Hierarchiebaum miteinander verbunden (mit den Slicing-Bäumen ihrer untergeordneten Funktionen), um unterschiedliche Ebenen miteinander in Wechselbeziehung zu bringen. Zum obigen Beispiel zurückkehrend, wenn die Funktion A zwei untergeordnete Funktionen (A1 und A2) hat, dann würde der untere Knoten (A) des Slicing-Baums von Z (Grundfunktion von A) mit dem Slicing-Baum von Funktion A (deren oberste Ebene A1 und A2 enthält) verbunden.
- Diese Verbindung von Slicing-Bäumen illustriert, wie das System die durch den Logikdesigner aufgestellte Hierarchie erhält. Slicing-Bäume repräsentieren im wesentlichen die Plazierung von untergeordneten Funktionen innerhalb ihrer Grundfunktion.
- Die Form jeder Funktion wird ebenfalls hierarchisch bestimmt, indem zunächst eine Formfunktion bestimmt wird, die eine Reihe möglicher Formen dieser Funktion beinhaltet, und dann die Formfunktion ihrer Grundfunktion bestimmt wird, indem die Formfunktionen jeder der untergeordneten Funktionen der Grundfunktion "addiert" werden. Indem die Formfunktionen auf diese modulare Weise bestimmt werden, paßt die Form jeder untergeordneten Funktion in die Form ihrer Grundfunktion, so daß das System jede untergeordnete Funktion innerhalb der Fläche auf dem von ihrer Grundfunktion eingenommenen Chip plazieren kann, wodurch die vom Logikdesigner aufgestellte Hierarchie erhalten bleibt.
- So ermöglichen hiearchische Slicing-Bäume und Formfunktionen eine Lageplanung auf jeder Ebene, während die vom Logikdesigner aufgestellte modulare Hierarchie erhalten bleibt.
- Die Erhaltung der Modularität der Hierarchie des Logikdesigners ist zwar für eine optimale Lageplanung wesentlich, sie reicht aber alleine nicht aus. Die Verknüpfung von Funktionen über die gesamte Hierarchie wird auch bei der "Kostenfunktion" berücksichtigt, die optimiert werden soll.
- Die in der bevorzugten Ausgestaltung der vorliegenden Erfindung zur Anwendung kommende Kostenfunktion (die "Partitionskostenfunktion", nachfolgend ausführlicher beschrieben) reduziert die Summe von (1) der erwarteten Anzahl von Verbindungen über Slicing-Zonen, die partitionierte Gruppen von Funktionen enthalten, und (2) die proportionale Differenz zwischen den Flächen der Funktionen in jeder solchen Gruppe, auf ein Minimum. Diese Partitionskostenfunktion dient zum Bestimmen der relativen Plazierung von untergeordneten Funktionen innerhalb ihrer Grundfunktion, so daß in starkem Maße verbundene Funktionen zusammen plaziert werden.
- Um die Verknüpfung von Funktionen über unterschiedliche Ebenen in der Hierarchie zu berücksichtigen, werden die Verbindungen zwischen Funktionen auf jeder Ebene auf angemessene Weise so gewichtet, daß die erwartete Anzahl von Verbindungen zwischen beliebigen zwei Funktionen reflektiert wird, um so die relative Plazierung solcher Funktionen innerhalb ihrer Grundfunktion zu ermöglichen. Dieser Prozeß wird von oben nach unten wiederholt, wobei die Plazierung von Funktionen auf jeder Ebene die Plazierung von Funktionen auf höheren Ebenen widerspiegelt (sowie die Verbindungen zwischen Funktionen durch die gesamte Hierarchie).
- Die bevorzugte Ausgestaltung der vorliegenden Erfindung beinhaltet ein automatisiertes System (mit Prozeduren für einen manuellen Eingriff), das, unter Berücksichtigung der Gesamtfläche eines Chips, einer Hierarchie von Funktionen und einer Netzliste der Verknüpfungen zwischen Terminalfunktionen, solche Funktionen innerhalb des Chips plaziert, um die von solchen Funktionen und ihrer Verdrahtung beanspruchte erforderliche Fläche auf ein Minimum zu reduzieren und die Wahrscheinlichkeit zu maximieren, daß eine solche Verdrahtung innerhalb dieser Fläche geführt werden kann.
- Diese Ausgestaltung beinhaltet vier Grundphasen: (1) Initialisierung; (2) relative Plazierung; (3) Formbestimmung und (4) Leitwegkanalzuweisung.
- Kurz ausgedrückt, die Initialisierungsphase beinhaltet, zusätzlich zum Einstellen von Vorgabevariablen und -konstanten, die Schätzung der Fläche jeder Funktion sowie die relative Gewichtung der Verbindungen zwischen Funktionen durch die gesamte Hierarchie.
- Die relative Plazierungsphase beinhaltet die Partitionierung von Funktionen innerhalb ihrer Grundfunktion (teilweise basierend auf der gewichteten Verknüfung von Funktionen durch die gesamte Hierarchie) sowie die Zerteilung solcher Grundfunktionen, so daß Funktionen relativ zueinander innerhalb ihrer Grundfunktion auf jeder Ebene der Hierarchie plaziert werden können. Diese relative Plazierung wird durch hierarchisch verbundene Slicing-Bäume repräsentiert.
- Die Formbestimmungsphase beinhaltet die Bestimmung von Formfunktionen für jede Funktion (die eine Reihe der möglichen Formen dieser Funktion repräsentieren) in der Hierarchie von unten nach oben, so daß sich schließlich die Formfunktion des Chips selbst ergibt. Durch Wählen der Form des Chips wird automatisch die Form jeder Funktion auf dem Chip anhand ihrer Formfunktion bestimmt.
- Es werden relative "Scheibenkoordinaten" von untergeordneten Funktionen (innerhalb ihrer Grundfunktion) errechnet (für die die Grundfunktion umgebende Slicing- Zone) und dann in absolute Koordinaten umgesetzt, um die Beziehungen zwischen Funktionen über Ebenen der Hierarchie zu berücksichtigen. Diese relativen Scheibenkoordinaten geben einfach den Ort jeder untergeordneten Funktion relativ zum Ort ihrer Grundfunktion an (d. h., die Grundfunktion wird für die Zwecke der Errechnung solcher Koordinaten wie ein ganzer Chip behandelt).
- Die Leitwegkanalzuweisungsphase schließlich beinhaltet eine Bestimmung der zusätzlichen Kanalfläche, die zum Führen der Verdrahtung zwischen Funktionen benötigt wird, und dann eine Neubestimmung der Form jeder Funktion auf der Basis dieser zusätzlichen Kanalflächen.
- Das System ermöglicht eine Grafikanzeige des Lageplans einschließlich der Verknüpfung von Funktionen auf allen oder auf einigen Ebenen der Hierarchie. Dem Benutzer wird auch ein Mittel bereitgestellt, um mit dem System auf eine Reihe verschiedener Weisen zu interagieren, indem verschiedene Teile des Lageplanprozesses (wie z. B. die relative Plazierung und Formbestimmung) manuell durchgeführt werden.
- Das System liefert schließlich dem Benutzer für jeden Logikentwurf zwei Prozentwerte, wobei der eine die "Durchführbarkeit" der Anordnung dieses Entwurfs auf der vorgegebenen Chipfläche und der andere nach der Lageplanung die "Leitwegführbarkeit" dieses Lageplans angibt (d. h. die Wahrscheinlichkeit einer erfolgreichen Leitwegführung des Lageplans auf der vorgegeben Chipfläche).
- Die vorliegende Erfindung wird nachfolgend beispielhaft unter Bezugnahme auf die Begleitzeichnungen näher beschrieben. Dabei zeigt:
- Fig. 1 ein Beispiel für eine vom Logikdesigner vorgegebene Hierarchie von Funktionen sowie die Netzliste von Verknüpfungen zwischen den Terminalfunktionen dieser Hierarchie;
- Fig. 2 die Architektur des Grundsystems der bevorzugten Ausgestaltung der vorliegenden Erfindung;
- Fig. 3 das Verfahren, mit dem dieses System die erwartete Anzahl von Verbindungen zwischen beliebigen zwei Funktionen in der Hierarchie bestimmt;
- Fig. 4 ein Beispiel für die Ergebnisse der relativen Plazierungsphase für fünf Funktionen auf der Ebene unterhalb der Chipebene;
- Fig. 5 das erschöpfende Partitionierungsverfahren, mit dem dieses System nach dem Generieren aller 2X möglichen Permutationen für die Partitionierung von X Funktionen diese Funktionen relativ zueinander innerhalb ihrer Grundfunktion plaziert;
- Fig. 6 das heuristische Partitionierungsverfahren, mit dem dieses System ohne Generierung aller 2X möglichen Permutationen für die Partitionierung von X Funktionen diese Funktionen relativ zueinander innerhalb ihrer Grundfunktion plaziert;
- Fig. 7 ein Beispiel für die Ergebnisse der Formbestimmungsphase für dieselben fünf Funktionen, deren relative Plazierung in Fig. 4 dargestellt ist;
- Fig. 8 das Verfahren, mit dem das vorliegende System nach dem Bestimmen der Plazierung von Funktionen relativ zueinander innerhalb ihrer Grundfunktion die Form solcher Funktion und somit ihren präzisen Ort auf dem Chip bestimmt (ohne Berücksichtigung einer Leitwegkanalzuweisung);
- Fig. 9 ein Beispiel für die Ergebnisse der Leitwegkanalzuweisungsphase (und somit des gesamten automatischen Lageplanungsprozesses) für dieselben fünf Funktionen, deren relative Plazierung in Fig. 4 und deren Formen in Fig. 7 dargestellt sind;
- Fig. 10 ein Beispiel für das Verfahren, mit dem das vorliegende System jeder Funktion die benötigte Kanalbreite und -höhe zuweist, die zum Verbinden solcher Funktionen mit anderen Funktionen notwendig sind, bevor es die Form (und somit den genauen Ort auf dem Chip) jeder solcher Funktion neu bestimmt;
- Fig. 11 ein Beispiel für die verbesserten Ergebnisse des automatischen Lageplanungsprozesses (im Vergleich zu den in Fig. 9 dargestellten), die erhalten werden, wenn der Benutzer eine automatische Plazierung zusätzlicher tieferer Ebenen anfordert.
- Die nachfolgende Beschreibung ist lediglich illustrativ und nicht begrenzend zu verstehen. Es wird zwar die bevorzugte Ausgestaltung der vorliegenden Erfindung beschrieben, aus der nachfolgenden Beschreibung gehen jedoch weitere Ausgestaltungen (Verteilen der Funktionalität dieses neuartigen hierarchischen Lageplanungsverfahrens zwischen verschiedenen Formen von Software und/oder Hardware) hervor.
- Fig. 1 illustriert ein Beispiel für eine logische Hierarchie von Funktionen, deren Verarbeitung das vorliegende System möglicherweise anfordern könnte. Der CHIP selbst stellt Ebene 1 der Hierarchie dar, während seine untergeordneten Funktionen, A, B, C, D und E, die Ebene 2 darstellen. Die Ebene 3 enthält die untergeordneten Funktionen von A (A1, A2 und A3), die untergeordneten Funktionen von C (C1 und C2) und die untergeordneten Funktionen von E (E1 und E2). Ebene 4 enthält die untergeordneten Funktionen von C1 (C11 und C12) und die untergeordneten Funktionen von E2 (E21 und E22). Ebene 5 schließlich enthält die untergeordneten Funktionen von C11 (C111 und C112).
- Man beachte, daß Terminalfunktionen nicht nur am Boden der Hierarchieebene 5 (C111 und C112) auftreten, sondern auch auf Ebene 2 (B und D), Ebene 3 (A1, A2, A3, C2 und E1) und auf Ebene 4 (C12, E21 und E22). Die NETZLISTE zeigt die Verknüpfungen zwischen solchen Terminalfunktionen. So zeigt beispielsweise Netz 1, daß die Funktionen A1, C111, E1 und E22 miteinander verknüpft sind, gibt jedoch nicht vor, welche Paare solcher Funktionen tatsächlich direkt verbunden werden. Wie nachfolgend ausführlicher beschrieben wird, schätzt das System gemäß der vorliegenden Erfindung jedoch die erwartete Anzahl von Verbindungen zwischen solchen Funktionen.
- Fig. 2 zeigt die Grundkomponenten dieses hierarchischen Lageplanungssystems. Das System hat als Eingabe die vorgegebene Chipfläche I-1, die logische Hierarchie von Funktionen I-2, die Fläche der Megazellen und Makrozellen I-3 und die Netzliste von Verknüpfungen zwischen den Terminalfunktionen I-4. Außerdem gibt der Benutzer die "Wurzelfunktion" I-5 - die Funktion, bei der eine automatische Plazierung beginnen sollte - und die Anzahl der Ebenen I-6 unterhalb der Wurzelfunktion vor, die das System automatisch plazieren sollte.
- Manuelle Eingriffsprozeduren MIP ermöglichen es dem Benutzer, während des Verarbeitungsvorgangs mit dem System zu interagieren, indem verschiedene Aufgaben wie beispielsweise manuelles Formen oder auch Plazieren der Elemente einer Funktion ausgeführt werden. Das System akzeptiert die Ergebnisse eines solchen manuellen Eingriffes, als wenn es diese Aufgaben selbst automatisch durchgeführt hätte und als wenn solche Ergebnisse Teil des anfänglichen Logikentwurfs seien.
- Nach dem Empfang des vorgegebenen Logikentwurfs tritt das System in seine Initialisierungsphase INIT ein, worauf bestimmte Variablen und Konstanten initialisiert werden, und führt weitere Vorverarbeitungsaufgaben wie beispielsweise die Schätzung der Fläche jeder Funktion und die Gewichtung der Verknüpfungen zwischen solchen Funktionen durch die gesamte Hierarchie aus.
- Nach der Initialisierung tritt das System in seine relative Plazierungsphase RP ein, in der es auf jeder Ebene in der Hierarchie Funktionen relativ zueinander innerhalb ihrer Grundfunktion plaziert. Bei einer solchen relativen Plazierung auf jeder Ebene wird nicht nur die Hierarchie von Funktionen berücksichtigt, sondern auch die Verknüpfung von Funktionen auf allen anderen Ebenen.
- Die Position jeder Funktion wird präziser (d. h., allgemeine Koordinaten werden für jede Funktion auf dem Chip bestimmt) während der Formbestimmungsphase SD bestimmt. Während dieser Phase bestimmt das System die Form jeder Funktion durch Erstellen einer Hierarchie von Formfunktionen, die jeweils eine Reihe möglicher Formen jeder Funktion repräsentiert (auf der Basis ihrer relativen Plazierung sowie der geschätzten Fläche jeder Funktion) und anschließendes Wählen der Form des Chips, wodurch die präzise Form jeder Funktion in Abwärtsrichtung durch die gesamte Hierarchie bestimmt wird. Die Position jeder Funktion an dieser Stelle ist jedoch nur temporär, weil die zum Führen der Verdrahtung zwischen Funktionen benötigte Fläche noch nicht berücksichtigt wurde.
- Die genaue Position jeder Funktion (einschließlich der Zuweisung der Leitwegfläche) wird endgültig während der Leitwegkanalzuweisungsphase RCA bestimmt, indem im wesentlichen die Phase SD nach der Bestimmung und Berücksichtigung der zusätzlichen Kanalfläche wiederholt wird, die zum Führen der Verdrahtung zwischen Funktionen benötigt wird.
- Das System zeigt dann grafisch die Ergebnisse 0-1 des Lageplanungsprozesses an, so daß der Benutzer vorgeben kann, welche Ebenen und Verknüpfungen es anzeigen soll. Es zeigt dann auch die endgültigen Prozentanteile für die Durchführbarkeit 0-2 und die Leitwegführbarkeit 0-3 an, um dem Benutzer bei der Bestimmung des Grades zu unterstützen, in dem eine manuelle Feinabstimmung notwendig ist.
- Das System führt eine Reihe verschiedener Initialisierungsaufgaben aus, zu denen die folgenden gehören:
- Es setzt bestimmte Variablen auf ihre Vorgabewerte (wenn der Benutzer deren Werte nicht vorgibt). Es plaziert vorgabemäßig den Takt in die Mitte des Chips (in senkrechter Ausrichtung) und beginnt mit der automatischen Plazierung mit der obersten (Chip-) Funktion und der Plazierung von Funktionen auf allen Ebenen in der Hierarchie.
- Es stellt auch den Wert bestimmter Konstanten ein, die die Breite und Höhe der "Mittelzone" (die Zone des Chips, die für die Plazierung von Funktionen zur Verfügung steht) anzeigt, die Breite des Takts (auf der Basis der vorgegebenen Fläche und seiner vertikalen oder horizontalen Ausrichtung in der Mitte des Chips) und die relative Gewichtung von Verdrahtungseinheiten zu Flächeneinheiten. Außerdem stellt es den Anfangswert bestimmter allgemeiner Variablen wie diejenigen ein, die die Gesamtzahl von Funktionen in der Hierarchie, die Gesamtzahl der untergeordneten Funktionen, die unter einer Funktion zulässig sind, und die Gesamtzahl der Netze repräsentieren, die vom Benutzer vorgegeben wurden.
- Das System durchläuft die Hierarchie in einer "Vorordnungsweise" (Grundfunktion vor untergeordneter Funktion) im Gegensatz zu einer "Nachordnungsweise" (d. h., untergeordnete Funktion vor Grundfunktion), um Fehler zu korrigieren, die der Benutzer bei der Vorgabe dieser Hierarchie möglicherweise gemacht hat. Wenn eine Funktion beispielsweise aus mehr als einer Megazelle besteht, dann muß eine Funktion für jede solche Megazelle ausgeführt werden. Ebenso muß, wenn eine Funktion aus einer Megazelle und einer Ansammlung von Makrozellen besteht, eine Funktion für die Megazelle und eine andere für die Ansammlung von Makrozellen gebildet werden.
- Es durchläuft den Hierarchiebaum, um bestimmte Felder in Zusammenhang mit jeder Funktion zu initialisieren. Einige dieser Felder geben an, ob die Funktion "umkehrbar", "umformbar" und/oder "rotierbar" ist. Eine umkehrbare Funktion ist eine Funktion, die um ihre horizontale oder vertikale Achse gedreht werden kann, während eine rotierbare Funktion eine Funktion ist, die im oder gegen den Uhrzeigersinn rotiert werden kann. Eine umformbare Funktion ist eine Funktion, deren Abmessungen für eine bestimmte Fläche nicht festgelegt sind.
- Weitere Felder geben die Ebene in der Hiearchie an, auf der jede Funktion residiert, sowie die Gesamtzahl von untergeordneten Funktionen (zweite Generation, dritte Generation und dergleichen), die jede Funktion definieren.
- Noch weitere Felder geben an, ob jede Funktion und/oder ihre untergeordneten Funktionen zuvor plaziert wurden oder ob ihre Form bestimmt wurde (manuell oder automatisch). Schließlich werden die Scheibenkoordinaten jeder Funktion gesetzt (zunächst so, daß sie die gesamte Mittelzone des Chips als Grenze für eine mögliche Plazierung reflektieren, aber dies wird später aktualisiert, wenn die Plazierung präziser bestimmt wird).
- Das Kernstück der Initialisierungsaufgaben des Systems ist die Schätzung der Fläche jeder Funktion in der Hierarchie. Diese Schätzung erfolgt in einem zweistufigen Prozeß: (1) Schätzung der Fläche jeder Makrozellenfunktion, und (2) Schätzung der Fläche jeder Funktion von Funktionen.
- Die Flächen der obersten (Chip-) Funktion und der Megazellenfunktionen werden natürlich vom Benutzer vorgegeben. Die Mindestbreite und -höhe der obersten Funktion werden jeweils auf die Breite und Höhe der Mittelzone eingestellt, während ihre Fläche auf das Produkt dieser Breite und Höhe eingestellt wird. Die Mindestbreite und -höhe jeder Megazellenfunktion sowie ihre tatsächliche Breite und Höhe werden auf die jeweilige Breite und Höhe der vom Benutzer vorgegebenen Megazelle eingestellt, während die Fläche auf das Produkt dieser Breite und Höhe eingestellt wird. Kanalbreite und -höhe jeder Funktion werden zunächst auf Null eingestellt.
- Die Mindestbreite und -höhe jeder Makrozellenfunktion werden jeweils auf die breitesten und höchsten Megazellen eingestellt, während die Fläche und die tatsächliche Breite und Höhe jeder Makrozellenfunktion wie nachfolgend beschrieben geschätzt werden. Die Mindestbreite und -höhe jeder Funktion von Funktionen werden jeweils auf die größten Mindestbreiten und -höhen ihrer untergeordneten Funktionen eingestellt, während die Fläche und die tatsächliche Breite und Höhe jeder Funktion von Funktionen wie nachfolgend beschrieben geschätzt werden.
- Das System schätzt die Fläche jeder Makrozellenfunktion durch Addieren der Flächen (vom Benutzer angegeben) jeder Makrozelle in dieser Funktion und anschließendes Berechnen der Anzahl von Leiterbahnen pro Kanal, die solche Makrozellen verbinden. Die statistische Formel zum Beziehen der kombinierten Fläche von Elementen innerhalb einer Funktion auf die durchschnittliche Anzahl von Leiterbahnen pro Kanal, die zum Verbinden solcher Elemente benötigt werden, lautet wie folgt:
- t = aCb
- wobei t die durchschnittliche Anzahl der Leiterbahnen pro Kanal, a und b Konstanten (jeweils gleich 0,435 bzw. 0,345) und C die Komplexität der Funktion (ausgedrückt als die Summe der Flächen der Makrozellen innerhalb der Funktion in Quadratmikron) bedeuten.
- Sobald die durchschnittliche Anzahl der Leiterbahnen pro Kanal für eine bestimmte Makrozellenfunktion bestimmt ist, kann die Fläche dieser Funktion durch Summieren der vorgegebenen Flächen jeder Makrozelle und Addieren, für jeden Kanal, des Produktes der durchschnittlichen Anzahl von Leiterbahnen pro Kanal und der bekannten Breite einer durchschnittlichen Leiterbahn geschätzt werden. Diese Makrozellenfunktion kann zwar umgeformt werden, aber ihre Breite und Höhe werden jeweils zunächst auf die Quadratwurzel ihrer Fläche eingestellt.
- Auf der Basis der Fläche jeder Megazellenfunktion und der geschätzten Fläche jeder Makrozellenfunktion schätzt das System dann die Fläche jeder Funktion von Funktionen in Aufwärtsrichtung durch die Hierarchie. Dies erfolgt dadurch, daß zunächst der "Spielraum" der Hierarchie, d. h. der Prozentanteil der Mittelzonenfläche auf dem Chip, der für Leitwegverbindungen für Funktionen zur Verfügung steht, bestimmt und dann diese verfügbare Leitwegfläche gleichmäßig auf jede Funktion von Funktionen verteilt wird.
- Der prozentuale Spielraum in der Hierarchie (zunächst auf 1% eingestellt) wird zunächst durch Annähern der Fläche, die durch jede Megazellenfunktion und Makrozellenfunktion belegt wird, gemäß der folgenden Formel bestimmt
- Fläche = (Funktionsfläche) * (1 + Spielraum-%) (Fuflktionsebene -1)
- wobei der prozentuale Spielraumanteil + 1 zur Potenz der Ebene der Funktion (-1) erhoben und dann mit der Fläche dieser Funktion multipliziert wird. Die Bereiche aller Megazellen- und Makrozellenfunktionen werden dann summiert. Wenn diese Gesamtfläche die Fläche der Mittelzone des Chips erreicht oder überschreitet (minus der vom Takt belegten Fläche), dann wird der prozentuale Spielraumanteil um 1% verringert und repräsentiert jetzt den Spielraum der gesamten Hierarchie. Ansonsten wird der prozentuale Spielraumanteil um 1% erhöht, und der Prozeß wird wiederholt, bis die Gesamtfläche die Mittelzonenfläche erreicht oder überschreitet (minus der Taktfläche).
- Wenn der prozentuale Spielraumanteil in der Hierarchie bestimmt ist, dann wird die Fläche jeder Funktion von Funktionen durch Addieren der Summe der Flächen ihrer untergeordneten Funktionen zum Produkt einer solchen Summe und dem prozentualen Spielraumanteil geschätzt. Dieses zusätzliche Produkt schätzt die zusätzliche Leitwegfläche, die zum Verdrahten der untergeordneten Funktionen notwendig ist.
- Diese Funktion von Funktionen kann zwar umgeformt werden, aber ihre Breite und Höhe wird zunächst auf die Quadratwurzel ihrer Fläche eingestellt, und wenn einer der beiden Werte unter seinem jeweiligen Minimum liegt, dann wird er auf den Mindestwert und der andere auf die Fläche der Funktion dividiert durch diesen Mindestwert eingestellt.
- Nach dem Schätzen der Flächen aller Funktionen in der gesamten Hierarchie kann das System diese Flächen später aktualisieren, wenn die relative Plazierung und genaue Form jeder ihrer Unterfunktionen bestimmt wird.
- Das System weist auch bestimmte Datenstrukturen und - tabellen zu. Die Datenstruktur jeder Funktion wurde im wesentlichen bereits beschrieben. Dazu gehören für jede Funktion (1) ihre absoluten Scheibenkoordinaten, (2) ihre Ebene in der Hierarchie, (3) ihre Gesamtzahl von untergeordneten Funktionen (alle Generationen), (4) ihre Breite, Höhe und Mindestbreite und -höhe, (5) ihre Fläche, (6) ihre feste Fläche (das Produkt ihrer Breite und Höhe nach dem Subtrahieren ihres Mindestwertes, so daß die Tatsache reflektiert wird, daß weniger quadratische Funktionsformen mehr Leitwegraum benötigen), (7) ob sie umkehrbar, umformbar und/oder rotierbar ist, (8) ob sie und/oder ihre untergeordneten Funktionen plaziert wurden, (9) ob ihre Form bestimmt wurde, (10) ein Zeiger, der sie mit ihrer zugehörigen Spalte in der "Netztabelle" verknüpft, (11) Zeiger zu ihrem entsprechenden Ort sowohl in ihrem Slicing-Baum als auch im Slicing-Baum ihrer Grundfunktion, und (12) ihre Kanalbreite und -höhe.
- Die beiden anderen bedeutenden Datenstrukturen sind die "Netztabelle" und die "Verknüpfbarkeitstabelle". Die Netztabelle ist eine zweidimensionale Matrix, die eine Reihe von Spalten enthält, die der Gesamtzahl von Funktionen in der gesamten Hierarchie entspricht, und eine Reihe von Reihen, die der vom Benutzer vorgegebenen Zahl von Netzen entspricht. Jeder dieser Einträge gibt an, ob eine bestimmte Funktion (Spalte) im Netz (Reihe) enthalten ist, und gibt auch, mit Hilfe eines Zeigers, das nächste Netz (Zeile) an, das/die diese Funktion enthält. Diese Netztabelle wird benutzt, um rasch zu bestimmen, welche Funktionen durch welches Netz verbunden sind.
- Die Verknüpfbarkeitstabelle ist eine zweidimensionale Matrix, die eine Anzahl von Reihen (und eine gleiche Anzahl von Spalten) enthält, die der Gesamtzahl von Funktionen in der gesamten Hierarchie entspricht. Ihre Einträge geben die erwartete Anzahl von Verbindungen zwischen beliebigen zwei Funktionen unter Berücksichtigung aller Verbindungen zwischen Funktionen in der gesamten Hierarchie an. Diese Einträge werden vom System benutzt, um Funktionen auf jeder Ebene der Hiearchie unter Berücksichtigung von Verbindungen zwischen solchen Funktionen und anderen Funktionen über verschiedene Ebenen der Hierarchie zu plazieren.
- Verbindungen zwischen Terminalfunktionen (vom Benutzer in der Netzliste vorgegeben) werden zunächst durch Zuweisen eines Wertes von "2/X" zu jeder Verbindung zwischen zwei durch ein Netz verbundenen Funktionen gewichtet, wobei X einer Zahl von Funktionen entspricht, die durch das Netz verbunden werden. Diese Gewichtung reflektiert die Tatsache, daß die Verbindung von X Funktionen mindestens (X-1) Verbindungen erfordert, und diese Verbindungen werden erst dann tatsächlich bestimmt, wenn der tatsächliche Anordnungsprozeß erfolgt.
- Die "erwartete Anzahl von Verbindungen" zwischen zwei beliebigen Funktionen, die durch ein Netz verbunden sind, entspricht somit der tatsächlichen Anzahl von Verbindungen zwischen allen X Funktionen (X-1) dividiert durch die Anzahl von Permutationen solcher Verbindungen (X*(X - 1)/2). Dies läßt sich natürlich auf 2/X vereinfachen.
- So illustriert beispielsweise Fig. 3 die Verarbeitung von Netz 1 von Fig. 1. Dieses Netz verbindet zwar vier Funktionen (A1, C111, E1 und E22), aber nur drei Verbindungen sind notwendig, um diese vier Funktionen zu verbinden, wie durch den "Überspannungsbaum" in Fig. 3 dargestellt ist (d. h., die Kurve der Mindestanzahl von Verbindungen von zwei oder mehr Funktionen).
- Man beachte jedoch, daß der diese vier Funktionen verbindende Überspannungsbaum zwar anzeigt, daß drei Verbindungen vorhanden sind, aber nicht bestimmt - obwohl dies anders aussieht -, welche Funktionen tatsächlich direkt verbunden werden. Es gibt sechs mögliche Permutationen von verbundenen Paaren dieser vier Funktionen, wie in Fig. 3 dargestellt ist.
- Da das System nicht weiß, welche drei (von den sechs möglichen) Paaren von Funktionen direkt verbunden werden, bestimmt es die erwartete Anzahl von Verbindungen für jedes der sechs möglichen Funktionspaare, indem es davon ausgeht, daß die drei tatsächlichen Verbindungen mit gleicher Wahrscheinlichkeit zwischen den sechs möglichen Funktionspaaren auftreten werden, was erwartete 1/2 einer Verbindung für jedes solches Paar ergibt.
- Es wiederholt diesen Vorgang für alle Netze, indem es für jedes Paar von Terminalfunktionen seine erwartete Anzahl von Verbindungen akkumuliert. Verbindungen für Nicht-Terminalfunktionen können dann dadurch bestimmt werden, daß die Verbindungen zwischen Terminalfunktionen nach oben durch die gesamte Hierarchie gebracht werden.
- Da z. B., wie in Fig. 3 illustriert, die erwartete Anzahl von Verbindungen von A1 und C111 1/2 entspricht (wenigstens nach der Verarbeitung von Netz 1), entspricht auch die erwartete Anzahl von Verbindungen zwischen A und C (d. h. die erwartete Anzahl von Verbindungen zwischen der untergeordneten Funktion von A und der untergeordneten Funktion von B) 1/2. Ebenso entspricht die erwartete Anzahl von Verbindungen zwischen A und E 1 (1/2 für die Verbindung zwischen A1 und E1 und 1/2 für die Verbindung zwischen A1 und E22), und die erwartete Anzahl von Verbindungen zwischen C und E entspricht 1 (1/2 für die Verbindung zwischen C111 und E1 und 1/2 für die Verbindung zwischen C111 und E22).
- Das System wiederholt diesen Vorgang, bis es die erwartete Anzahl von Verbindungen zwischen jedem Paar von Funktionen in der gesamten Hierarchie bestimmt hat.
- Diese erwartete Anzahl von Verbindungen zwischen beliebigen zwei Funktionen repräsentiert die Verbindungen in der gesamten Hierarchie zwischen ihren untergeordneten Funktionen (alle Generationen). Auf diese Weise kann das System Funktionen relativ zueinander innerhalb ihrer Grundfunktion auf höheren Ebenen auf der Basis von Verbindungen auf tieferer Ebene zwischen den untergeordneten Funktionen (alle Generationen) solcher Funktionen plazieren.
- Schließlich berechnet das System vor einer Lageplanung für den vorgegebenen Logikentwurf einen Prozentwert, der die "Durchführbarkeit" der Anordung dieses Entwurfs auf der vorgegebenen Chipfläche repräsentiert. Diese Zahl wird dadurch errechnet, daß zunächst zufallsmäßig die Funktionen auf der vorgegebenen Chipfläche plaziert werden und dann bestimmt wird, wieviel Leitwegraum tatsächlich benötigt wird. Der prozentuale Durchführbarkeitsanteil entspricht dem verfügbaren Leitwegraum (vorgegebene Chipfläche minus der Summe der Flächen aller Funktionen) dividiert durch den tatsächlich benötigten Leitwegraum. Dieser Prozentwert ist natürlich auf 100% begrenzt.
- Zweck der relativen Plazierungsphase ist es, jede Funktion auf jeder Ebene in der Hierarchie relativ zu allen anderen Funktionen innerhalb ihrer Grundfunktion zu plazieren (unter Berücksichtigung der Verbindungen zwischen solchen Funktionen in der gesamten Hierarchie).
- So zeigt beispielsweise Fig. 4 fünf Funktionen (A, B, C, D und E) auf der Ebene (Ebene 2) unmittelbar unterhalb der obersten (Chip-) Ebene. Das Ergebnis dieser Phase für diese Ebene bestand darin, Funktionen A und B auf der linken Seite der Funktionen C, D und E zu plazieren, mit Funktion A über Funktion B, Funktion C über den Funktionen D und E, und Funktion D auf der linken Seite von Funktion E. Was diese relative Plazierung jedoch stark beeinflußte, waren die Verbindungen in der gesamten Hierarchie zwischen den untergeordneten Funktionen (alle Generationen) von A, B, C, D und E. Die relative Gewichtung dieser Verbindungen muß berücksichtigt werden, um die Plazierung von Funktionen auf jeder Ebene zu optimieren.
- Während diese relative Plazierung nicht genau bestimmt, wo welche Funktion plaziert wird, so erhält sie doch die vom Logikdesigner vorgegebene hierarchische Struktur bei und bereitet auch eine präzisere Plazierung während der Formbestimmungs- und der Leitwegkanalzuweisungsphase vor.
- Bevor eine relative Plazierung beginnen kann, muß das System zunächst bestimmen, ob der Benutzer Funktionen manuell plaziert hat. Ist dies der Fall, dann wurde durch eine solche manuelle Plazierung möglicherweise effektiv der Hierarchiebaum in eine Gruppe von unabhängigen Unterbäumen unterteilt, so daß jede manuell plazierte Funktion, wenn die untergeordnete Funktion nicht plaziert wurde, die Wurzel für einen solchen Unterbaum darstellt. Außerdem stellt die Wurzelfunktion des gesamten Baums (oder eine Wurzelfunktion einer vom Benutzer gewählten tieferen Ebene, von der aus eine automatische Plazierung beginnt) die Wurzel eines Unterbaums dar, der eine automatische Plazierung verlangt.
- Das System generiert die Unterbäume, die eine automatische Plazierung erfordern, indem es den Baum in einer Vorordnungsweise durchläuft. Das System filtert Funktionen aus, die keine oder bereits plazierte untergeordnete Funktionen haben. Wenn die Wurzelfunktion (gewöhnlich die oberste Funktion) in eine dieser Kategorien fällt, dann wird die Wurzelfunktion als ein Unterbaum qualifiziert. Das System filtert auch Funktionen aus, die "ungeformt" sind - d. h. die nicht manuell plaziert (und somit geformt) wurden -, weil solche Funktionen innerhalb des Unterbaums der Wurzelfunktion liegen und nicht selbst Unterbäume darstellen. Somit werden die verbleibenden Unterbäume aus manuell plazierten Funktionen gebildet, die untergeordnete Funktionen aufweisen, die noch nicht plaziert wurden.
- Wenn der Benutzer beispielsweise (siehe Fig. 1) C1 und C2 manuell innerhalb von C plaziert hätte, dann würde nicht nur der Chip die Wurzel eines Unterbaums darstellen, sondern auch C1 würde die Wurzel eines Unterbaums darstellen. C2 würde jedoch nicht die Wurzel eines Unterbaums darstellen, da sie keine untergeordneten Funktionen hat.
- Das System verarbeitet dann jeden Unterbaum durch Plazieren aller Funktionen auf jeder Ebene relativ zueinander innerhalb ihrer Grundfunktion. Die Funktionen werden auf jeder Ebene der Hierarchie in Vorordungsweise plaziert. Jeder Schritt des relativen Plazierungsprozesses betrifft eine Grundfunktion und die Plazierung ihrer untergeordneten Funktionen (wenn diese nicht bereits manuell oder automatisch plaziert wurden) relativ zueinander innerhalb dieser Grundfunktion.
- Funktionen werden innerhalb ihrer Grundfunktion plaziert, indem die Grundfunktion, vertikal oder horizontal, zerteilt wird, wodurch die untergeordneten Funktionen in zwei Gruppen (eine auf jeder Seite der Scheibe) partitioniert werden, und dann die Gruppen von Unterfunktionen wiederholt zerteilt und unterteilt werden, bis jede untergeordnete Funktion in ihrer eigenen Slicing- Zone isoliert ist.
- Das System wendet zwei Verfahren an, um die untergeordneten Funktionen in zwei Gruppen (eine auf jeder Seite der Scheibe) zu partitionieren, die beide die Verbindungen zwischen den untergeordneten Funktionen sowie die von den untergeordneten Funktionen zu anderen Funktionen berücksichtigen, indem es auf die Gewichtung solcher Verbindungen zurückgreift, wie oben in bezug auf die Initialisierungsphase erläutert wurde.
- Das erste Verfahren "Erschöpfende Partitionierung" (in Fig. 5 dargestellt) wird dann angewendet, wenn fünfzehn (die Grenze, die derzeit vom System benutzt wird) oder weniger untergeordnete Funktinen in der Grundfunktion plaziert werden sollen. Dieses Verfahren berücksichtigt im wesentlichen für jede Scheibe alle 2X möglichen Partitionen von X Funktionen, wobei X die Anzahl von Funktionen in der zuletzt zerteilten Slicing-Zone ist.
- Jede mögliche Partition von X Funktionen wird durch Errechnen des Wertes der "Partitionskostenfunktion" PCF für diese Partition analysiert. Nach jeder Zerteilung wird die Partition, die die minimale Partitionskostenfunktion ergibt, als die optimale Plazierung von Funktion relativ zu dieser Scheibe gewählt.
- Diese PCF ist die "Kostenfunktion", die das System innerhalb der gesamten Hierarchie auf ein Minimum reduziert. Sie ermöglicht es dem System, in hohem Maß verbundene Funktionen nahe zueinander zu plazieren und dabei untergeordnete Funktionen innerhalb der Fläche des Chips zu plazieren, die von ihrer Grundfunktion eingenommen wird.
- Es gibt zwei Komponenten der Partitionskostenfunktion, die einfach miteinander addiert werden. Es ist also die Summe dieser Komponenten, die durch die Partitionskostenfunktion auf ein Minimum reduziert wird.
- Eine Komponente 1 versucht, Differenz der Flächen zwischen Funktionen auf jeder Seite der Scheibe auf ein Minimum zu reduzieren. Diese Komponente wird dadurch errechnet, daß zunächst der Absolutwert der Differenz zwischen der Summe von Flächen von Funktionen auf einer Seite der Scheibe und der Summe der Flächen von Funktionen auf der anderen Seite der Scheibe berechnet wird. Das System dividiert dann diesen Absolutwert durch die Summe der Flächen aller Funktionen innerhalb der gesamten Slicing-Zone der Grundfunktion. Schließlich multipliziert es den Betrag mit einer Konstanten (derzeit 1000), die die Differenz zwischen Einheiten reflektiert, die die Fläche (in Quadratmikron) angeben, und Einheiten, die die Anzahl von Verbindungen zwischen Funktionen angeben.
- Die zweite Komponente 2 der Partitionskostenfunktion versucht, die Anzahl der Verbindungen über die Scheibe auf ein Minimum zu reduzieren. Mit Hilfe der Netzliste (für Verbindungen zwischen Terminalfunktionen) und der Verknüpfbarkeitstabelle (für die erwartete Anzahl von Verbindungen zwischen beliebigen zwei Funktionen) analysiert das System alle Verbindungen mit jeder der Funktionen innerhalb der Slicing-Zone, um die Anzahl von Verbindungen zu bestimmen, die die Scheibe überqueren.
- Jedes Netz in der Netztabelle kann null oder eine Verbindung über die Scheibe bedeuten, während Einträge in der Verknüpfbarkeitstabelle die "erwartete Anzahl von Verbindungen" angeben. Eine Verbindung überquert die Scheibe, wenn eine solche Verbindung Funktionen auf beiden Seiten der Scheibe oder eine Funktion auf einer Seite der Scheibe mit einer Funktion außerhalb der Slicing-Zone der Grundfunktion verbindet, aber auf der anderen Seite der Scheibe (feststellbar, weil Funktionen in Vorordnungsweise plaziert werden, d. h. Funktionen höherer Ebenen wurden bereits plaziert).
- Jede Verbindung wird analysiert, und alle diese Verbindungen werden miteinander addiert und dann mit einer Konstante (derzeit 1) multipliziert, die die Differenz zwischen Einheiten, die Fläche angeben, und Einheiten reflektiert, die die Anzahl von Verbindungen zwischen Funktionen angeben.
- Das System errechnet dann die Partitionskostenfunktion für diese Partition durch Addieren der Komponenten 1 und 2. Dieser Vorgang wird für jede der 2X möglichen Partitionen der X Funktionen in der Slicing-Zone der Grundfunktion wiederholt.
- Alle möglichen Partitionen werden durch eine "Gray- Code"-Technik generiert, die alle möglichen Partitionen erzeugt, aber mit dem zusätzlichen Effekt, daß sich jede generierte Partition von der vorherigen Partition nur an einer Stelle unterscheidet: es muß nur eine Funktion über die Scheibe bewegt werden. Diese Technik ermöglicht eine rasche und doch erschöpfende Generierung aller möglichen Partitionen.
- Wenn jedoch mehr als fünfzehn untergeordnete Funktionen innerhalb ihrer Grundfunktion plaziert werden müssen, dann ist das erschöpfende Partitionierungsverfahren nicht mehr durchführbar. Wenn die Zahl der untergeordneten Funktionen X fünfzehn überschreitet, wird die zur Generierung der 2X Partitionspermutationen erforderliche Errechnungszeit sehr schnell zu groß, und dies selbst bei den heutigen modernen Computern.
- Somit ist ein zweites Verfahren erforderlich, "heuristische Partitionierung" (siehe Fig. 6). Dieses Verfahren generiert nicht unbedingt die Partition, die die minimale Partitionskostenfunktion ergibt, sondern es nähert sich dieser optimalen Lösung durch Anwenden einer Variation der heuristischen Technik von Kernighan-Lin (siehe Kernighan, B. W. und S. Lin, "An Efficient Heuristic Procedure for Partitioning Graphs" (Ein effizientes heuristisches Verfahren zum Partitionieren von Kurven), Bell System Technical Journal, Februar 1970, S. 291-307).
- Mit einer beliebigen der möglichen Partitionen (z. B. alle Funktionen auf einer Seite der Scheibe) 1 beginnend, speichert das System diese Partition als die derzeit beste Partition" 2, speichert ihre Partitionskostenfunktion als "derzeit beste Kosten" 3, und bezeichnet alle ihre Funktionen als "frei". Es geht dann nacheinander zu jeder der X Funktionen auf der gegenüberliegenden Seite der Scheibe mit den folgenden beiden Schritten:
- 1. Das System bewegt eine "freie" Funktion zur gegenüberliegenden Seite der Scheibe 4, berechnet die Partitionskostenfunktion für diese Partition 5 und bringt dann die Funktion in ihre ursprüngliche Position 6 zurück. Es wiederholt diesen Vorgang für jede "freie" Funktion und erzeugt dadurch eine Partitionskostenfunktion für jede solche Funktion. Es wählt dann die Mindestzahl dieser Partitionskostenfunktionen 7 und bewegt ihre zugehörige Funktion permanent zur gegenüberliegenden Seite der Scheibe 8 und bezeichnet sie als "nicht frei". Außerdem wird, wenn diese minimale Partitionskostenfunktion kleiner ist als die "derzeit besten Kosten", der Parameter "derzeit beste Kosten" auf diesen niedrigeren Wert eingestellt, und diese neue Partition wird als die "derzeit beste Partition" gespeichert.
- 2. Schritt 1 wird dann wiederholt (wobei nur die verbleibenden "freien" Funktionen bewegt werden), bis jede der X Funktionen auf die gegenüberliegende Seite der Scheibe bewegt wurde.
- Wenn die Arbeit der Schritte 1 und 2 eine neue "derzeit beste Partition" ergibt, dann bezeichnet das System alle Funktionen dieser Partition als "frei" und führt die Schritte 1 und 2 nochmals durch. Dieser Vorgang wird so lange fortgesetzt, bis die "derzeit beste Partition" während eines gesamten Zyklus der Schritte 1 und 2 konstant bleibt, und in diesem Moment stoppt der Vorgang und die Partition wird als die beste Lösung ausgewählt.
- Unabhängig davon, ob jede Grundfunktion erschöpfend oder heuristisch partitioniert wird, die untergeordneten Funktionen dieser Funktion werden relativ zueinander innerhalb ihrer Grundfunktion plaziert (wie in Fig. 4 dargestellt). Nach dem Partitionieren der Grundfunktion definiert das System eine Slicing-Zone nicht nur für die Grundfunktion, sondern auch für ihre untergeordneten Funktionen. So wird beispielsweise die Slicing-Zone in Zusammenhang mit Funktion A in Fig. 4 durch sein umgebendes Rechteck veranschaulicht. Funktion A kann an einer beliebigen Stelle innerhalb dieses Rechteckes plaziert und dann durch Scheibenkoordinaten (0,0) für die linke untere Ecke, (0,a) für die rechte untere Ecke, (b,0) für die linke obere Ecke und (a,b) für die rechte obere Ecke repräsentiert werden.
- Diese Slicing-Zonen repräsentieren die Plazierung von untergeordneten Funktionen relativ zueinander innerhalb ihrer Grundfunktion. Dieser Vorgang des Halbierens einer Zone und des Partitionierens der Funktionen dieser Zone in zwei Gruppen (eine auf jeder Seite der Scheibe) wird so lange wiederholt, bis alle untergeordneten Funktionen in ihrer eigenen Slicing-Zone innerhalb ihrer Grundfunktion isoliert sind.
- Der Vorgang des Plazierens von untergeordneten Funktionen relativ zueinander innerhalb der Grundfunktion wird durch die gesamte Hierarchie in Vorordnungsweise wiederholt. Nach dem Plazieren von untergeordneten Funktionen innerhalb ihrer Grundfunktion auf einer Ebene werden die untergeordneten Funktionen der nächsten Generation innerhalb der neu beschränkten Slicing-Zone dieser untergeordneten Funktionen plaziert usw.
- Auf diese Weise behält das System die Hierarchie von Funktionen bei und plaziert Funktionen auf jeder Ebene relativ zueinander innerhalb ihrer Grundfunktion auf der Basis der gewichteten Verknüpfung von Funktionen über die gesamte Hierarchie.
- Somit sind am Ende der relativen Plazierungsphase alle untergeordneten Funktionen relativ zueinander innerhalb ihrer Grundfunktion plaziert, und Scheibenkoordinaten sind jeder Funktion zugeordnet, die die Grenzen der Slicing-Zone dieser Funktion bilden, d. h. die Freiheit, mit der jede Funktion innerhalb ihrer Grundfunktion bewegt werden kann. Diese Freiheit wird weiter beschränkt, wenn die Funktionen während der Formbestimmungs- und der Leitwegkanalzuordnungsphase genauer plaziert werden, was schließlich eine genaue Plazierung aller Funktionen innerhalb des vorgegebenen Chipfläche ergibt.
- Nachdem das System alle Funktionen (relativ zueinander innerhalb von deren Grundfunktion) auf jeder Ebene plaziert hat, bestimmt es die Form jeder Funktion, wodurch ihr Ort innerhalb ihrer Slicing-Zone und somit ihr genauer Ort auf dem Chip vorgegeben wird. Diese präzisen Formen sind jedoch temporär, weil das System während der nächsten Phase Kanalfläche für den Verdrahtungsleitweg zwischen diesen Funktionen zuweisen muß. Durch die Zuweisung der Kanalfläche für den Leitweg können sich die Form und der genaue Ort jeder Funktion durchaus ändern.
- Die Formbestimmungsphase erfolgt ebenfalls auf hierarchische Weise, um nicht nur die vom Logikdesigner aufgestellte Hierarchie, sondern auch die relative Plazierung von Funktionen des Systems auf jeder Ebene innerhalb ihrer Grundfunktion beizubehalten.
- Die Form jeder Funktion wird so gewählt, daß so wenig Chipfläche wie möglich verlorengeht, oder mit anderen Worten, um die verfügbare Fläche für Leitwegverbindungen zwischen Funktionen zu maximieren. Fig. 7, im Vergleich zu Fig. 4, veranschaulicht, wie die Bestimmung der genauen Form jeder Funktion diese ungenutzte Fläche auf ein Minimum reduziert.
- Das vom System angewendete Formbestimmtungsverfahren ist in Fig. 8 dargestellt. Das System bestimmt zunächst für jede Funktion in Nachordnungsweise eine "Formfunktion" 1, die eine Reihe möglicher Formen repräsentiert, die diese Funktion annehmen kann. Bestimmte Funktionen (z. B. Megazellen oder manuell geformte Funktionen) können bereits eine vordefinierte Form (feste Breite und Höhe) haben. Andere können eine vorgegebene oder geschätzte Fläche, aber ohne festen Abmessungen, haben. Die Reihe der möglichen Abmessungen einer Funktion ist durch eine "Formskala" (derzeit auf 10.000 Mikron eingestellt) begrenzt, so daß die Breite und Höhe einer Funktion jeweils Vielfache dieser Formskala sein müssen. Man beachte, daß sich zusätzliche mögliche Formen aus der Rotationsfähigkeit einer Funktion ergeben können.
- Das System verarbeitet zunächst Terminalfunktionen, Halbterminal-Funktionen (diejenigen mit der niedrigsten benutzerdefinierten Tiefe für eine automatische Plazierung) und Pseudoterminal-Funktionen (solche, die manuell oder automatisch plaziert und geformt sind, aber keine unplazierten untergeordneten Funktionen haben). Wenn die Form einer solchen Funktion noch nicht bestimmt ist, dann berechnet das System seine Formfunktion, indem es seine möglichen Abmessungen anhand seiner vorgegebenen oder geschätzten Fläche bestimmt, sowie seine Mindestbreite und -höhe. Eine Plazierung dieser Form wird durch die Slicing- Zone jeder Funktion begrenzt, die während der relativen Plazierungsphase entsteht.
- Nach der Bestimmung dieser Formfunktionen geht das System in der Hierarchie nach oben und bestimmt die Formfunktionen jeder Grundfunktion 2 durch "Addieren" der Formfunktionen ihrer untergeordneten Funktionen unter Berücksichtigung ihrer relativen Plazierung innerhalb ihrer Grundfunktion. Diese Addition von Funktionen läuft wie folgt ab:
- Wenn sich eine Funktion über oder unter einer anderen Funktion 3 befindet, dann wird die Formfunktion S1, die beide Funktionen umfaßt, berechnet, indem als jede X- Koordinate von S1 die entsprechenden X-Koordinaten jeder Formfunktion und als jede Y-Koordinate von S1 die Summe ihrer entsprechenden Y-Koordinaten gewählt werden. Ebenso wird, wenn sich eine Funktion auf der linken oder rechten Seite einer anderen Funktion 4 befindet, die Formfunktion S2 berechnet, indem für entsprechende Y-Koordinaten die Summe ihrer entsprechenden X-Koordinaten gewählt werden.
- So wird beispielsweise die Formfunktion von X (die Grundfunktion von A und B) durch Addieren der Formfunktionen von A und B geschaffen. Funktion A (mit einer Fläche von 6) hat die folgenden möglichen Formen: (1,6), (2, 3), (3,2), (4,2), (5,2) und (6,1). Funktion B (mit einer Fläche von 4) hat die folgenden möglichen Formen: (1,4), (2, 2), (3,2), (4,1), (5,1) und (5,1). Somit hat, weil Funktion A relativ über Funktion B plaziert wurde, Funktion X die folgenden möglichen Formen: (1,10), (2,5), (3, 4), (4,3), (5,3) und (6,2).
- Dieser Vorgang des Bestimmens der Formfunktionen jeder Grundfunktion durch Addieren der Formfunktionen ihrer untergeordneten Funktionen wird in Aufwärtsrichtung durch die gesamte Hierarchie so lange fortgesetzt, bis eine Formfunktion für jede Funktion in der Hierarchie bestimmt ist, einschließlich der Wurzelfunktion.
- Wenn eine Formfunktion für jede Funktion in der Hiearchie bestimmt wurde, dann wählt das System diejenigen Abmessungen der Wurzelfunktion, die nicht nur zu ihrer Formfunktion passen, sondern die auch die einem Quadrat am nächsten kommende Form ergeben (weil weniger Quadratfunktionen mehr Leitwegraum erfordern). Zum Beispiel, bei einer Wurzelfunktion mit einer Fläche von 100 Quadratmikron würde das System eine Form von 10 Mikron · 10 Mikron einer Form von 50 Mikron · 2 Mikron vorziehen, weil die letztere mehr Leitwegraum erfordern würde.
- Nach dem Wählen der Form der Wurzelfunktion wird die Form jeder ihrer untergeordneten Funktionen (alle Generationen) dadurch automatisch bestimmt. Der Grund hierfür ist, daß eine Formfunktion definitionsgemäß nur eine mögliche Form unter Berücksichtigung der Formfunktion ihrer Grundfunktion ergeben kann. Somit bestimmt das System auf diese Weise die Formen aller Funktionen in der Hierarchie.
- Nach dem Bestimmen der Form jeder Funktion muß das System die relativen Scheibenkoordinaten dieser Funktion so durchschnittlichen Leiterbahn, die zum Verbinden einer solchen Funktion mit anderen. Funktionen erforderlich ist), und dann die Formbestimmungsphase mit der Kanalbreite und -höhe jeder Funktion wiederholt, die als Teil ihrer Fläche enthalten ist.
- Fig. 9 zeigt ein Beispiel für die Ergebnisse der Leitwegkanalzuordnungsphase. Im Vergleich zu Fig. 7 veranschaulicht sie die Modifikationen im Hinblick auf die Form und den Ort von Funktionen, die das System während der Phase durchführt, um den zum Verknüpfen solcher Funktionen notwendigen Leitwegraum zu schaffen.
- Das System errechnet dann die Kanalbreite und Kanalhöhe für jede Funktion, bevor es die Formbestimmungsphase wiederholt. Diese Berechnung ist natürlich in hohem Maße abhängig von der vorherigen Plazierung des Systems und der Formung solcher Funktionen.
- Das System verarbeitet jede Funktion in der Hierarchie auf Nachordnungsweise. So kann es auf hierarchische Weise die zwischen untergeordneten Funktionen (innerhalb ihrer Grundfunktionen) benötigte Kanalleitwegfläche bestimmen, und dann zwischen Grundfunktionen der nächsthöheren Ebene usw., bis es eine solche Leitwegfläche zwischen allen Funktionen in der Hierarchie zugewiesen hat.
- Das System bestimmt die erwartete Anzahl von vertikalen Leiterbahnen und horizontalen Leiterbahnen, die zum Verdrahten der untergeordneten Funktionen einer Grundfunktion erforderlich sind, mit Hilfe der Verknüpfbarkeitstabelle, um die erwartete Anzahl von Verbindungen zwischen jeder untergeordneten Funktion und ihren "untergeordneten" Funktionen derselben Generation (andere untergeordnete Funktionen dieser Grundfunktion) zu bestimmen. Es wiederholt diesen Vorgang dann in Nachordnungsweise in Aufwärtsrichtung durch die gesamte Hierarchie, um die gesamte erwartete Anzahl von vertikalen Leiterbahnen und horizontalen Leiterbahnen zu bestimmen, die zum Verbinden von Funktionen auf höherer Ebene mit ihren untergeordneten Funktionen derselben Generation erforderlich sind.
- Das System nimmt zunächst an, daß jede Funktion von ihrer Mitte aus verbunden wird, und errechnet so das kleinste Rechteck, das die Mitten aller verknüpften untergeordneten Funktionen derselben Generation beinhaltet. Es nimmt ebenfalls an, daß sämtliche Leitwege zwischen diesen Funktionen innerhalb dieses Rechteckes verlaufen. Die Breite und Höhe des Rechteckes repräsentieren eine Schätzung der Gesamtlänge jeweils der horizontalen und vertikalen "Drähte", die zum Verbinden solcher Funktionen notwendig sind.
- Wenn vier oder fünf untergeordnete Funktionen miteinander verknüpft werden, dann ist die geschätzte Länge dieser horizontalen und vertikalen "Drähte" tatsächlich 20% größer als die jeweilige Breite und Höhe des Rechtecks. Wenn sechs oder mehr untergeordnete Funktionen verknüpft werden, dann ist eine solche geschätzte Länge tatsächlich 30% größer als die jeweilige Breite und Höhe des Rechtecks. Das System berücksichtigt diese zusätzliche Länge, indem es zur erwarteten Zahl von vertikalen Leiterbahnen und horizontalen Leiterbahnen jeder Funktion den angemessenen Prozentanteil (20% oder 30%) solcher Zahlen addiert.
- Ebenso berücksichtigt das System die erwartete Anzahl von Verbindungen zwischen beliebigen zwei untergeordneten Funktionen, indem es die erwartete Anzahl von vertikalen Leiterbahnen und horizontalen Leiterbahnen jeder untergeordneten Funktion mit einer solchen erwarteten Anzahl von Verbindungen multipliziert.
- Das System tastet die Fläche innerhalb des Rechtecks ab (horizontal über die Höhe des Rechtecks und vertikal über seine Breite) ab, indem es imaginäre horizontale und vertikale Abtastlinien an jedem Rand (in Abtastrichtung) jeder Funktion erzeugt, die das Rechteck schneidet. Das System untersucht dann innerhalb des Rechtecks die Abtastbereiche zwischen jeder horizontalen Abtastlinie und der vorherigen Abtastlinie, sowie die Abtastbereiche zwischen jeder vertikalen Abtastlinie und der vorherigen Abtastlinie, um die Wahrscheinlichkeit zu bestimmen, daß wenigstens ein Teil einer vertikalen oder horizontalen Leiterbahn jeweils entlang jeder Funktion verläuft, die durch solche Abtastbereiche geschnitten wird.
- Diese Wahrscheinlichkeit wird für jede Funktion berechnet, die von jedem Abtastbereich geschnitten wird, indem der Teil der Abtastlinie, der diese Funktion innerhalb des Rechtecks schneidet, durch die Summe aller solcher Teile jeder Funktion dividiert wird, die von dieser Abtastlinie geschnitten wird.
- Für jede von jedem Abtastbereich geschnittene Funktion berechnet das System auch den Prozentanteil einer Leiterbahn, die entlang dieser Funktion verläuft, für den Fall, daß ein Teil des "Drahtes" innerhalb des Abtastbereiches entlang dieser Funktion verläuft.
- Für jede solche Funktion multipliziert das System dann die Wahrscheinlichkeit, daß ein Teil einer Leiterbahn entlang dieser Funktion verläuft, mit dem entsprechenden Teil dieser Leiterbahn, der benötigt wird, und summiert dieses Produkt über alle Abtastbereiche, die diese Funktion schneiden, um die erwartete Anzahl von horizontalen und vertikalen Leiterbahnen zu bestimmen, die benötigt werden, um diese Funktion mit den anderen verbundenen Funktionen zu verbinden.
- So verarbeitet beispielsweise, wie in Fig. 10 veranschaulicht, das System die Verknüpfungen zwischen untergeordneten Funktionen X, Y und Z durch Schaffen eines Rechtecks R, das die Mitten von X, Y und Z verbindet, und durch Definieren von imaginären horizontalen Abtastlinien (H1, H2, H3 und H4) und vertikalen Abtastlinien (V1, V2, V3 und V4).
- Wenn man nur vertikale Verbindungen für dieses Beispiel betrachtet, dann zeigt der Bereich zwischen H&sub1; und H&sub2;, daß eine vertikale Verbindung mit zweifacher Wahrscheinlichkeit an X als an Y entlang verläuft, weil die Breite von X innerhalb von R (wo alle Leitwege vermutet werden) 4 ist, zweimal so hoch wie die Breite (2) von Y innerhalb von R. Somit ist für X die Wahrscheinlichkeit 2/3 (4 / (4 + 2)), daß die Kanalfläche diesen Teil der vertikalen Verbindung durchlaufen muß, während diese Wahrscheinlichkeit für Y 1/3 (2 / (4 + 2)) ist. Wenn ein Teil einer Leiterbahn unbedingt an X oder Y entlang verlaufen muß, dann wird 1/2 einer Leiterbahn benötigt, weil die Hälfte der Höhe von X (die Hälfte der Höhe von Y) innerhalb von R liegt.
- Somit erfordert der vertikale "Draht", der X, Y und Z verbindet, 1/3 einer vertikalen, X zugeordneten Leiterbahn (Wahrscheinlichkeit von 2/3 multipliziert mit 1/2 Leiterbahn) und 1/6 einer vertikalen, Y zugeordneten Leiterbahn (Wahrscheinlichkeit von 1/3 multipliziert mit 1/2 Leiterbahn). Ebenso wird in bezug auf den Bereich zwischen H3 und H4 erwartet (Wahrscheinlichkeit von 1), weil Z die einzige Funktion innerhalb dieses Bereiches ist, daß er 1/2 einer vertikalen Leiterbahn erfordert (der Prozentanteil der Höhe von Z innerhalb R).
- Dieser Prozeß wird in Nachordnungsweise aufwärts für die gesamte Hierarchie fortgesetzt, wobei das System nach allen Verbindungen zwischen untergeordneten Funktionen innerhalb ihrer Grundfunktion abtastet, bis jeder Funktion in der gesamten Hierarchie die erwartete Anzahl von horizontalen und vertikalen Leiterbahnen zugewiesen ist.
- Es multipliziert dann die erwartete Anzahl von vertikalen Leiterbahnen und die erwartete Anzahl von horizontalen Leiterbahnen jeder Funktion mit der bekannten Breite einer Leiterbahn, so daß sich für jede Funktion jeweils eine Kanalbreite und eine Kanalhöhe ergibt.
- Das System wiederholt dann die Formbestimmungsphase, indem es die Kanalbreite jeder Funktion als Teil ihrer Breite und die Kanalhöhe jeder Funktion als Teil ihrer Höhe einbezieht, was zur präzisen Plazierung jeder Funktion auf dem Chip unter Berücksichtigung des zusätzlichen Raums führt, der zum Verdrahten solcher Funktionen erforderlich ist.
- Es stellt dann die Ergebnisse dieser Plazierung grafisch dar, wobei die zusätzliche Leitwegfläche jetzt aus den Funktionen selbst entfernt ist (wie in Fig. 9 dargestellt ist, in der diese Leitwegfläche als leerer Raum zwischen Funktionen erscheint). Auch die Verbindungen zwischen Funktionen können grafisch dargestellt werden.
- Wenn alle Funktionen (in dem vom Benutzer verlangten Ausmaß) präzise innerhalb der Chipfläche plaziert wurden, dann stellt das System die Ergebnisse dieser Plazierung auf einer oder auf allen Ebenen in der gesamten Hierarchie grafisch dar.
- Verschiedene Grafikbefehle ermöglichen es dem Benutzer, sich auf die Plazierung bestimmter Ebenen oder Funktionen sowie auf bestimmte Verknüpfungen zwischen Funktionen (wie Kontaktstellenfunktionen) zu konzentrieren. Der Benutzer kann dann manuell die Ergebnisse feinabstimmen, indem er die Plazierung und/oder Form bestimmter Funktionen justiert. Der Benutzer kann sogar den gesamten Lageplanungsprozeß wiederholen, indem er manuelle Modifikationen wie zusätzliche Beschränkungen auf die automatischen Lageplanungsprozeduren des Systems anwendet.
- Fig. 11, im Vergleich zu Fig. 9, veranschaulicht die verbesserten Ergebnisse, die erhalten werden, wenn der Benutzer verlangt, daß das System automatisch Ebenen in einer größeren Tiefe der Hierarchie plaziert. Wenn der Benutzer beispielsweise verlangt, daß es die untergeordneten Funktionen einer Funktion plaziert, so daß es die genaue Form dieser untergeordneten Funktionen bestimmen kann, dann kann das System die Größe der Funktion selbst und somit die benötigte Chipfläche genauer bestimmen.
- Man beachte jedoch, daß sich die Formen und die relative Plazierung der Funktionen A, B, C, D und E zwischen Fig. 9 und Fig. 11 sehr ähnlich sind. Unabhängig von der vom Benutzer vorgegebenen Tiefe der automatischen Plazierung berücksichtigt das System die Verknüpfung von Funktionen über alle Ebenen der Hierarchie, wenn es Funktionen auf einer bestimmten Ebene plaziert, wodurch die Plazierung auf jeder Ebene hierarchisch (nicht unabhängig) optimiert wird.
- Schließlich zeigt es Prozentwerte für die Durchführbarkeit und Leitwegführbarkeit an, die, wie oben erörtert, jeweils die "Durchführbarkeit" des Auslegens des Logikentwurfs des Benutzers auf der vorgegebenen Chipfläche und die "Leitwegführbarkeit" des jeweiligen Lageplans des vom System erzeugten Logikentwurfs anzeigt (d. h., die Wahrscheinlichkeit einer erfolgreichen Verdrahtung dieses Lageplans auf der vorgegebenen Chipfläche).
- Der Prozentwert der Leitwegführbarkeit wird im wesentlichen auf dieselbe Art und Weise bestimmt wie der oben beschriebene Prozentwert der Durchführbarkeit. Anstatt die Funktionen zufallsmäßig auf der vorgegebenen Chipfläche zu plazieren, benutzt das System den tatsächlichen Lageplan, den es produziert, um zu bestimmen, wieviel Leitwegraum tatsächlich erforderlich ist. Der Prozentwert der Leitwegführbarkeit entspricht dem verfügbaren Raum für die Verdrahtung (der vorgegebenen Chipfläche minus der Summe der Flächen aller Funktionen) dividiert durch den tatsächlich erforderlichen Leitwegraum. Dieser Prozentwert ist natürlich auf 100% begrenzt.
- Dieser Prozentwert der Leitwegführbarkeit zeigt im wesentlichen den zusätzlichen manuellen Aufwand an, der vom Benutzer verlangt wird, um eine tatsächliche Anordnung des Logikentwurfs auf der vorgegebenen Chipfläche zu erzielen. Der Benutzer kann dann als Alternative - zur Aufwendung dieser Bemühungen die Chipfläche leicht erhöhen und/oder den Lageplan manuell justieren und dann das System wieder aktivieren, bis ein ausreichend hoher Prozentwert für die Leitwegführbarkeit erhalten wurde.
Claims (16)
1. Verfahren zum Entwerfen eines Lageplans für eine
integrierte Schaltung, umfassend die folgenden Schritte:
Unterteilen der Funktionalität der zu erhaltenden
integrierten Schaltungen in N hierarchische
Funktionsebenen,
wobei N eine ganze Zahl eines Wertes von gleich oder
größer 3 ist, wobei die erste der genannten Ebenen die
integrierte Schaltung insgesamt repräsentiert, und
wobei n eine ganze Zahl gleich oder größer als 1 und
gleich oder kleiner als N ist und die Ebene jeder einzelnen
Funktion in der Hierarchie repräsentiert;
Definieren innerhalb der Hierarchie von wenigstens
einer der Funktionen als die n-te Ebene als Grundfunktion,
die eine Mehrzahl von abhängigen Funktionen der (n+1)sten
Ebene umfaßt, wobei jede solche Funktion auf der (n+1)sten
Ebene eine untergeordnete Funktion ist,
wobei jede untergeordnete Funktion, die nicht auch
eine Grundfunktion ist, eine Terminal-Funktion ist, wobei
jede Terminal-Funktion durch wenigstens ein Netz mit
wenigstens einer anderen Terminal-Funktion verbunden ist,
wobei jedes Netz eine Mehrzahl von verknüpften
Terminal-Funktionen definiert,
wobei das Verfahren durch die folgenden Schritte
gekennzeichnet ist:
Mittel zum wiederholten Bestimmen eines
Spielraumanteils für die gesamte Hierarchie durch:
a) Einstellen eines willkürlichen Spielraumanteilwertes;
b) Ermitteln eines Spielraumfaktors, wobei der genannte
Spielraumfaktor abhängig ist von: 1) dem Ist-Wert des
Spielraumanteils und 2) der Funktionsebene
c) Benutzen des genannten Spielraumfaktors zum Berechnen
eines Funktionsbereiches;
d) Berechnen einer Summe der genannten Bereiche
e) Entscheiden auf der Basis der genannten Summe, ob der
Ist-Wert des Spielraumanteils erhöht oder verringert werden
soll und ob die Schritte b, c, d, e mit dem neuen Ist-
Spielraumanteilwert wiederholt werden sollen;
Bestimmen des Bereiches jeder Grundfunktion in der
Hierarchie;
Schätzen der Anzahl von Verbindungen zwischen
Funktionen über alle N Ebenen der Hierarchie, und
Bestimmen des Ortes der integrierten Schaltung jeder
Funktion auf der n-ten Ebene in der Hierarchie teilweise
auf der Basis der geschätzten Zahl von Anschlüssen.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Schätzens der Anzahl von Anschlüssen von
Funktionen über alle N Ebenen der Hierarchie die folgenden
Schritte umfaßt:
Ermitteln der erwarteten Zahl von Verbindungen
zwischen den Terminal-Funktionen, die durch jedes Netz
verbunden sind, durch Dividieren der Mindestzahl von
Verbindungen zwischen den genannten Terminal-Funktionen
durch die genannte Zahl von Permutationen von Paaren der
genannten Terminal-Funktionen, und
Ermitteln der erwarteten Anzahl von Verbindungen
zwischen jeder Nicht-Terminal-Funktion und allen anderen
Funktionen in der Hierarchie durch Summieren der erwarteten
Anzahl von Verbindungen zwischen dem Terminal-Produkt der
genannten Nicht-Terminal-Funktion und dem Terminal-Produkt
der genannten anderen Funktionen.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Ermittelns des Ortes auf der integrierten
Schaltung jeder Funktion auf der x-ten Ebene in der
Hierarchie den folgenden Schritt umfaßt:
Ermitteln des Ortes der integrierten Schaltung jeder
untergeordneten Funktion in der Hierarchie, so daß die
untergeordnete Funktion in den Bereich der integrierten
Schaltung gesetzt wird, die durch ihre Grundfunktion belegt
ist.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Bestimmens des Ortes auf der integrierten
Schaltung jeder Funktion auf der n-ten Ebene in der
Hierarchie den folgenden Schritt umfaßt:
Ermitteln des Ortes der untergeordneten Funktionen der
n-ten Ebene relativ zueinander innerhalb ihrer
Grundfunktionen, einschließlich
des Bestimmens des Ortes der untergeordneten
Funktionen der n-ten Ebene relativ zueinander innerhalb
ihrer Grundfunktion teilweise auf der Basis der genannten
geschätzten Anzahl von Verbindungen, und
des Ermittelns des Ortes der untergeordneten
Funktionen der n-ten Ebene, wobei n ≥ 3, relativ zueinander
innerhalb ihrer Grundfunktion, teilweise auf der Basis der
geschätzten Anzahl von Verbindungen und des Ortes der
untergeordneten Funktionen der k-ten Ebene, wobei k ≤ n ist,
relativ zueinander innerhalb ihrer Grundfunktion.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß
der Schritt des Ermittelns des Ortes der untergeordneten
Funktionen der n-ten Ebene relativ zueinander innerhalb
ihrer Grundfunktion die folgenden Schritte umfaßt:
Unterteilen der genannten untergeordneten Funktionen
in zwei Gruppen,
Bestimmen des Ortes auf der integrierten Schaltung
jeder der genannten beiden Gruppen relativ zueinander, und
aufeinanderfolgendes Unterteilen jeder der genannten
beiden Gruppen von Funktionen in zwei Gruppen und Ermitteln
des Ortes auf der integrierten Schaltung jeder der
genannten letzteren beiden Gruppen relativ zueinander, bis
jede der genannten Gruppen genau eine Funktion enthält.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß
die Schritte des Unterteilens der untergeordneten
Funktionen in zwei Gruppen und das Ermitteln des Ortes auf
der integrierten Schaltung jeder der beiden Gruppen relativ
zueinander die folgenden Schritte umfassen:
Dividieren der Grundfunktion in zwei Zonen, so daß
jede der Zonen entweder auf, unter, links oder rechts von
der anderen ist, wobei jede der beiden Zonen eine der
beiden Funktionsgruppen umfaßt,
Berechnen für eine Mehrzahl der möglichen
Permutationen der Funktionen zwischen den beiden Gruppen
den Absolutwert dividiert durch die Summe der Bereiche der
Funktionen in beiden Gruppen, wobei dies die proportionale
Bereichsdifferenz ist;
Benutzen der genannten geschätzten Anzahl von
Verbindungen zum Berechnen der Anzahl von Verbindungen
zwischen Funktionen in einer der beiden Gruppen und einer
der Funktionen in der anderen der beiden Gruppen oder
Funktionen, die sich in keiner der beiden Gruppen, aber auf
derselben Seite der Linie befinden, die die genannten
beiden Zonen trennt, wie auch die andere der beiden
Gruppen, und
Wählen der Permutation der Funktionen zwischen den
beiden Gruppen, die die Mindestsumme der proportionalen
Bereichsdifferenz ergibt, und der genannten Anzahl von
Verbindungen zwischen Funktionen, um so den Ort jeder der
genannten beiden Gruppen auf der integrierten Schaltung
relativ zueinander zu ermitteln.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Ermittelns des Ortes jeder Funktion der n-
ten Ebene in der Hierarchie auf der integrierten Schaltung
die folgenden Schritte umfaßt:
Definieren einer Form-Funktion, die eine oder mehrere
mögliche Formen jeder Terminal-Funktion repräsentiert,
Ermitteln der Form-Funktion jeder Grundfunktion durch
Kombinieren der Form-Funktionen ihrer untergeordneten
Funktionen, um so die Form-Funktion der integrierten
Schaltung zu ermitteln, und
Wählen der Form der integrierten Schaltung, um so die
Form jeder Funktion auf der integrierten Schaltung zu
ermitteln.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß
der Schritt des Ermittelns der Form-Funktion jeder
Grundfunktion durch Kombinieren der Form-Funktionen ihrer
untergeordneten Funktionen die folgenden Schritte umfaßt:
Ermitteln, ob der Ort der einzelnen untergeordneten
Funktionen untereinander über, unter, links oder rechts von
der genannten anderen untergeordneten Funktion ist,
Ermitteln der X- und Y-Koordinaten der genannten Form-
Funktion der Grundfunktion für jede der genannten
untergeordneten Funktionen, die über oder unter der
genannten anderen untergeordneten Funktion ist, durch
Errechnen der Summe der Y-Koordinaten jeder der genannten
untergeordneten Funktionen für jede X-Koordinate, die den
X-Koordinaten der genannten untergeordneten Funktionen
entsprechen, und
Ermitteln der X- und Y-Koordinaten der Form-Funktion
der genannten Grundfunktion für jede der genannten
untergeordneten Funktionen, die links oder rechts von der
genannten anderen untergeordneten Funktion ist, durch
Errechnen der Summe der X-Koordinaten für jede der
genannten untergoerdneten Funktionen für jede Y-Koordinate,
die den Y-Koordinaten der genannten untergeordneten
Funktionen entspricht.
9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Ermittelns des Ortes jeder Funktion der
nten Ebene in der Hierarchie auf der integrierten Schaltung
die folgenden Schritte umfaßt:
Ermitteln der Orte der Funktionen der n-ten Ebene
relativ zueinander innerhalb ihrer Grundfunktion,
beinhaltend
das Ermitteln des Ortes der untergeordneten Funktionen
der zweiten Ebene relativ zueinander innerhalb ihrer
Grundfunktion teilweise auf der Basis der genannten
geschätzten Anzahl von Verbindungen, und
Ermitteln des Ortes der untergeordneten Funktionen der
n-ten Ebene, wobei n ≥ 3 ist, relativ zueinander innerhalb
ihrer Grundfunktion, teilweise auf der Basis der genannten
geschätzten Anzahl von Verbindungen und des Ortes der
untergeordneten Funktionen auf der k-ten Ebene, wobei k ≤
n ist, relativ zueinander innerhalb ihrer Grundfunktion,
und
Umwandeln der Orte der Funktionen auf der n-ten Ebene
relativ zueinander innerhalb ihrer Grundebene in präzise
Orte auf der integrierten Schaltung, beinhaltend
das Definieren einer Form-Funktion, die eine oder
mehrere mögliche Formen jeder möglichen Terminal-Funktion
repräsentiert,
Ermitteln der Form-Funktion jeder Grundfunktion durch
Kombinieren der Form-Funktionen ihrer untergeordneten
Funktionen, um so die Form-Funktion der integrierten
Schaltung zu ermitteln, und
Wählen der Form der integrierten Schaltung, um so die
Form jeder Funktion auf der integrierten Schaltung zu
ermitteln.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß
der Schritt des Ermittelns des Ortes jeder Funktion auf der
n-ten Ebene in der Hierarchie auf der integrierten
Schaltung ebenso die folgenden Schritte umfaßt:
Schätzen des Routing-Bereiches, der zum Verknüpfen
dieser Funktion mit anderen Funktionen der integrierten
Schaltung notwendig ist, und Zuweisen desselben zu dem
Bereich, der von jeder Funktion belegt wird, und
Wiederholen des Schrittes des Umformens der genannten
Orte von Funktionen der n-ten Ebene relativ zueinander
innerhalb ihrer Grundfunktion in präzise Orte auf der
integrierten Schaltung unter Berücksichtigung des genannten
Routing-Bereiches, der dem von jeder Funktion belegten
Bereich zugeordnet wurde.
11. Verfahren nach einem der Ansprüche 1 bis 10, bei dem
die Schritte alle N Ebenen der Hierarchie berücksichtigen.
12. Verfahren nach einem der Ansprüche 1 bis 11, bei dem
einige der Funktionen Pseudoterminal-Funktionen sind.
13. System zum Entwerfen des Lageplans einer integrierten
Schaltung, umfassend ein Mittel zum Unterteilen der
Funktionalität der zu erhaltenden integrierten Schaltungen
in N hierarchische Funktionsebenen,
wobei N eine ganze Zahl eines Wertes von gleich oder
größer 3 ist, wobei die erste der genannten Ebenen die
integrierte Schaltung insgesamt repräsentiert, und
ein Mittel zum Definieren von wenigstens einer der
Funktionen auf der n-ten Ebene in der Hierarchie als
Grundfunktion, die eine Mehrzahl von abhängigen Funktionen
der (n+1)sten Ebene umfaßt, wobei jede solche Funktion der
(n+1)sten Ebene eine untergeordnete Funktion ist,
wobei n eine ganze Zahl gleich oder größer als 1 und
gleich oder kleiner als N ist
wobei jede untergeordnete Funktion, die nicht auch
eine Grundfunktion ist, eine Terminal-Funktion ist, wobei
jede Terminal-Funktion durch wenigstens ein Netz mit
wenigstens einer anderen Terminal-Funktion verbunden ist,
wobei jedes Netz eine Mehrzahl von verknüpften
Terminal-Funktionen definiert,
wobei das Verfahren gekennzeichnet ist durch:
ein Mittel zum wiederholten Bestimmen eines
Spielraumanteils für die gesamte Hierarchie mit:
a) einem Mittel zum Einstellen eines willkürlichen
Spielraumanteilwertes;
b) einem Mittel zum Ermitteln eines Spielraumfaktors, wobei
der genannte Spielraumfaktor abhängig ist von: 1) dem Ist-
Wert des Spielraumanteils und 2) der Funktionsebene;
c) einem Mittel zum Berechnen eines Funktionsbereiches
durch Benutzen des genannten Spielraumfaktors;
d) einem Mittel zum Berechnen einer Summe der genannten
Bereiche;
e) einem Mittel zum Entscheiden auf der Basis der genannten
Summe, ob die Schritte b, c, d, e mit einem höheren oder
einem geringeren Spielraumanteilwert wiederholt werden
sollen; und
ein Mittel zum Bestimmen des Bereiches jeder
Grundfunktion in der Hierarchie;
ein Mittel zum Bestimmen des Ortes von Funktionen auf
der n-ten Ebene in der Hierarchie auf der integrierten
Schaltung, wobei n ≥ 2, relativ zueinander innerhalb hrer
Grundfunktion; und
ein Mittel zum Bestimmen der Form der untergeordneten
Funktionen auf der n-ten Ebene.
14. System nach Anspruch 13, gekennzeichnet durch ein
Mittel zum Berechnen des zusätzlichen Bereiches, der zum
Verknüpfen der untergeordneten Funktionen der n-ten Ebene
erforderlich ist, und
ein Mittel zum erneuten Bestimmen der Form der
untergeordneten Funktionen der n-ten Ebene teilweise auf
der Basis des zusätzlichen Bereiches.
15. System nach Anspruch 13 oder 14, gekennzeichnet durch
ein Mittel zum grafischen Anzeigen des Ortes der n-ten
Ebene auf der integrierten Schaltung.
16. Verfahren nach Anspruch 1, bei dem der genannte
Spielraumfaktor (1 + Spielraumprozentanteil)
(Funktionsebene - 1) ist und wobei der genannte Schritt des
Bestimmens des Bereiches jeder Grundfunktion in der
Hierarchie die folgende Gleichung beinhaltet:
Bereich = (Funktionsbereich) * (1
Spielraumprozentanteil) (Funktionsebene - 1)
wobei der Funktionsbereich in der Gleichung die Summe
der Bereiche der untergeordneten Funktionen der
Grundfunktion ist, wobei die Funktionsebene die
Funktionsebene der Grundfunktion ist, wobei ein
Spielraumprozentanteil für die gesamte Hierarchie vorhanden
ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/057,843 US4918614A (en) | 1987-06-02 | 1987-06-02 | Hierarchical floorplanner |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3856234D1 DE3856234D1 (de) | 1998-09-17 |
DE3856234T2 true DE3856234T2 (de) | 1999-01-07 |
Family
ID=22013072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3856234T Expired - Lifetime DE3856234T2 (de) | 1987-06-02 | 1988-06-02 | Hierarchischer Aufstellungsplan |
Country Status (5)
Country | Link |
---|---|
US (1) | US4918614A (de) |
EP (1) | EP0294188B1 (de) |
JP (1) | JP2724317B2 (de) |
KR (1) | KR890001154A (de) |
DE (1) | DE3856234T2 (de) |
Families Citing this family (174)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2535976B2 (ja) * | 1987-11-17 | 1996-09-18 | 株式会社日立製作所 | 形態接続構成自動作成システム |
US5140526A (en) * | 1989-01-06 | 1992-08-18 | Minc Incorporated | Partitioning of Boolean logic equations into physical logic devices |
JPH02206149A (ja) * | 1989-02-06 | 1990-08-15 | Hitachi Ltd | 電気的制約を考慮した信号線端子割付方式 |
US5175693A (en) * | 1989-06-01 | 1992-12-29 | Kabushiki Kaisha Toshiba | Method of designing semiconductor integrated circuit device |
US5113352A (en) * | 1989-06-20 | 1992-05-12 | Digital Equipment Corporation | Integrating the logical and physical design of electronically linked objects |
US5251147A (en) * | 1989-06-20 | 1993-10-05 | Digital Equipment Corporation | Minimizing the interconnection cost of electronically linked objects |
JP2831703B2 (ja) * | 1989-06-23 | 1998-12-02 | 株式会社東芝 | 自動フロアプラン演算装置 |
US5309371A (en) * | 1989-06-28 | 1994-05-03 | Kawasaki Steel Corporation | Method of and apparatus for designing circuit block layout in integrated circuit |
EP0431532B1 (de) * | 1989-12-04 | 2001-04-18 | Matsushita Electric Industrial Co., Ltd. | Plazierungsoptimierungssystem mit Hilfe von CAD |
US5128871A (en) * | 1990-03-07 | 1992-07-07 | Advanced Micro Devices, Inc. | Apparatus and method for allocation of resoures in programmable logic devices |
US5220512A (en) * | 1990-04-19 | 1993-06-15 | Lsi Logic Corporation | System for simultaneous, interactive presentation of electronic circuit diagrams and simulation data |
US5572436A (en) * | 1990-04-06 | 1996-11-05 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design |
US5623418A (en) * | 1990-04-06 | 1997-04-22 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system |
US5541849A (en) * | 1990-04-06 | 1996-07-30 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters |
US5544067A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US5553002A (en) * | 1990-04-06 | 1996-09-03 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface |
US5598344A (en) * | 1990-04-06 | 1997-01-28 | Lsi Logic Corporation | Method and system for creating, validating, and scaling structural description of electronic device |
US5557531A (en) * | 1990-04-06 | 1996-09-17 | Lsi Logic Corporation | Method and system for creating and validating low level structural description of electronic design from higher level, behavior-oriented description, including estimating power dissipation of physical implementation |
US5555201A (en) * | 1990-04-06 | 1996-09-10 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information |
US5222030A (en) * | 1990-04-06 | 1993-06-22 | Lsi Logic Corporation | Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from high-level semantic specifications and descriptions thereof |
US5572437A (en) * | 1990-04-06 | 1996-11-05 | Lsi Logic Corporation | Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models |
US5867399A (en) * | 1990-04-06 | 1999-02-02 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description |
US5544066A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of low-level design constraints |
US5870308A (en) * | 1990-04-06 | 1999-02-09 | Lsi Logic Corporation | Method and system for creating and validating low-level description of electronic design |
US5262959A (en) * | 1990-12-07 | 1993-11-16 | Hewlett-Packard Co. | Representation and processing of hierarchical block designs |
US5208759A (en) * | 1990-12-13 | 1993-05-04 | Vlsi Technology, Inc. | Method for placement of circuit components in an integrated circuit |
JP2612967B2 (ja) * | 1991-01-18 | 1997-05-21 | 松下電器産業株式会社 | 網図自動生成方法及びそのシステム |
JP2824482B2 (ja) * | 1991-02-20 | 1998-11-11 | 富士通株式会社 | 2分決定グラフの変数順決定方式 |
US5355317A (en) * | 1991-02-26 | 1994-10-11 | Texas Instruments Incorporated | Method and apparatus for system design |
JPH06187384A (ja) * | 1991-02-26 | 1994-07-08 | Texas Instr Inc <Ti> | 設計方法及び設計支援装置 |
US5500800A (en) * | 1991-02-26 | 1996-03-19 | Texas Instruments Incorporated | Method and apparatus for tracking allocatable requirements |
US5357440A (en) * | 1991-02-26 | 1994-10-18 | Texas Instruments Incorporated | Method and apparatus for aiding system design |
JP2720629B2 (ja) * | 1991-04-26 | 1998-03-04 | 日本電気株式会社 | 集積回路のレイアウトシステム |
US5341308A (en) * | 1991-05-17 | 1994-08-23 | Altera Corporation | Methods for allocating circuit elements between circuit groups |
US5485396A (en) * | 1991-06-28 | 1996-01-16 | Vlsi Technology, Inc. | Symbolic routing guidance for wire networks in VLSI circuits |
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
JP2995963B2 (ja) * | 1991-10-11 | 1999-12-27 | 富士ゼロックス株式会社 | 階層的回路データベース最適化装置及び階層的回路データベース最適化方法 |
JP2601586B2 (ja) * | 1991-10-15 | 1997-04-16 | 富士通株式会社 | 配置要素の配置配線方法 |
US5553001A (en) * | 1991-10-30 | 1996-09-03 | Xilinx, Inc. | Method for optimizing resource allocation starting from a high level |
US5450331A (en) * | 1992-01-24 | 1995-09-12 | Vlsi Technology, Inc. | Method for verifying circuit layout design |
US5398195A (en) * | 1992-02-21 | 1995-03-14 | International Business Machines Corporation | Method and system for providing a non-rectangular floor plan |
US5377125A (en) * | 1992-02-28 | 1994-12-27 | Vlsi Technology, Inc. | Improved pad ring router |
US5526517A (en) * | 1992-05-15 | 1996-06-11 | Lsi Logic Corporation | Concurrently operating design tools in an electronic computer aided design system |
US5340772A (en) * | 1992-07-17 | 1994-08-23 | Lsi Logic Corporation | Method of increasing the layout efficiency of dies on a wafer and increasing the ratio of I/O area to active area per die |
US5532934A (en) * | 1992-07-17 | 1996-07-02 | Lsi Logic Corporation | Floorplanning technique using multi-partitioning based on a partition cost factor for non-square shaped partitions |
US5311443A (en) * | 1992-08-13 | 1994-05-10 | Motorola Inc. | Rule based floorplanner |
JP2739013B2 (ja) * | 1992-09-01 | 1998-04-08 | 三菱電機株式会社 | 論理合成装置 |
JPH06196563A (ja) * | 1992-09-29 | 1994-07-15 | Internatl Business Mach Corp <Ibm> | Vlsiの配線設計に対するコンピュータ実施可能な過密領域配線方法 |
US5490083A (en) * | 1992-10-05 | 1996-02-06 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for classifying and evaluating logic circuit |
US5666289A (en) * | 1992-10-07 | 1997-09-09 | Lsi Logic Corporation | Flexible design system |
US5493504A (en) * | 1992-10-28 | 1996-02-20 | Nippon Telegraph And Telephone Corporation | System and method for processing logic function and fault diagnosis using binary tree representation |
US5493510A (en) * | 1992-11-10 | 1996-02-20 | Kawasaki Steel Corporation | Method of and apparatus for placing blocks in semiconductor integrated circuit |
US5576969A (en) * | 1993-03-09 | 1996-11-19 | Nec Corporation | IC comprising functional blocks for which a mask pattern is patterned according to connection and placement data |
EP0696775A1 (de) * | 1993-04-21 | 1996-02-14 | Hitachi, Ltd. | Rechnergestütztes Entwurfs- und Anfertigungssystem für Bauteilanordnung und Rohrverlegungsplanung |
US5566078A (en) * | 1993-05-26 | 1996-10-15 | Lsi Logic Corporation | Integrated circuit cell placement using optimization-driven clustering |
US5761664A (en) * | 1993-06-11 | 1998-06-02 | International Business Machines Corporation | Hierarchical data model for design automation |
US5561086A (en) * | 1993-06-18 | 1996-10-01 | Lsi Logic Corporation | Techniques for mounting semiconductor dies in die-receiving areas having support structure having notches |
US5469366A (en) * | 1993-09-20 | 1995-11-21 | Lsi Logic Corporation | Method and apparatus for determining the performance of nets of an integrated circuit design on a semiconductor design automation system |
US5533148A (en) * | 1993-09-30 | 1996-07-02 | International Business Machines Corporation | Method for restructuring physical design images into hierarchical data models |
US5491641A (en) * | 1993-10-04 | 1996-02-13 | Lsi Logic Corporation | Towards optical steiner tree routing in the presence of rectilinear obstacles |
US5506788A (en) * | 1994-01-13 | 1996-04-09 | Lsi Logic Corporation | Similarity-extraction force-oriented floor planner |
WO1995020197A1 (en) * | 1994-01-25 | 1995-07-27 | Advantage Logic, Inc. | Apparatus and method for partitioning resources for interconnections |
GB9404078D0 (en) * | 1994-03-03 | 1994-04-20 | Int Computers Ltd | Design automation method for digital electronic circuits |
US5818726A (en) * | 1994-04-18 | 1998-10-06 | Cadence Design Systems, Inc. | System and method for determining acceptable logic cell locations and generating a legal location structure |
US6493658B1 (en) * | 1994-04-19 | 2002-12-10 | Lsi Logic Corporation | Optimization processing for integrated circuit physical design automation system using optimally switched fitness improvement algorithms |
US5495419A (en) * | 1994-04-19 | 1996-02-27 | Lsi Logic Corporation | Integrated circuit physical design automation system utilizing optimization process decomposition and parallel processing |
US5875117A (en) * | 1994-04-19 | 1999-02-23 | Lsi Logic Corporation | Simultaneous placement and routing (SPAR) method for integrated circuit physical design automation system |
US5535134A (en) * | 1994-06-03 | 1996-07-09 | International Business Machines Corporation | Object placement aid |
US5638288A (en) * | 1994-08-24 | 1997-06-10 | Lsi Logic Corporation | Separable cells having wiring channels for routing signals between surrounding cells |
US5587923A (en) * | 1994-09-07 | 1996-12-24 | Lsi Logic Corporation | Method for estimating routability and congestion in a cell placement for integrated circuit chip |
US5801422A (en) * | 1994-11-02 | 1998-09-01 | Lsi Logic Corporation | Hexagonal SRAM architecture |
US5822214A (en) * | 1994-11-02 | 1998-10-13 | Lsi Logic Corporation | CAD for hexagonal architecture |
US5834821A (en) * | 1994-11-02 | 1998-11-10 | Lsi Logic Corporation | Triangular semiconductor "AND" gate device |
US5872380A (en) * | 1994-11-02 | 1999-02-16 | Lsi Logic Corporation | Hexagonal sense cell architecture |
US6097073A (en) * | 1994-11-02 | 2000-08-01 | Lsi Logic Corporation | Triangular semiconductor or gate |
US6407434B1 (en) | 1994-11-02 | 2002-06-18 | Lsi Logic Corporation | Hexagonal architecture |
US5742086A (en) * | 1994-11-02 | 1998-04-21 | Lsi Logic Corporation | Hexagonal DRAM array |
US5889329A (en) * | 1994-11-02 | 1999-03-30 | Lsi Logic Corporation | Tri-directional interconnect architecture for SRAM |
US5808330A (en) * | 1994-11-02 | 1998-09-15 | Lsi Logic Corporation | Polydirectional non-orthoginal three layer interconnect architecture |
US5811863A (en) * | 1994-11-02 | 1998-09-22 | Lsi Logic Corporation | Transistors having dynamically adjustable characteristics |
US5864165A (en) * | 1994-11-02 | 1999-01-26 | Lsi Logic Corporation | Triangular semiconductor NAND gate |
US5789770A (en) * | 1994-11-02 | 1998-08-04 | Lsi Logic Corporation | Hexagonal architecture with triangular shaped cells |
US5973376A (en) * | 1994-11-02 | 1999-10-26 | Lsi Logic Corporation | Architecture having diamond shaped or parallelogram shaped cells |
US5777360A (en) * | 1994-11-02 | 1998-07-07 | Lsi Logic Corporation | Hexagonal field programmable gate array architecture |
US5629857A (en) * | 1994-11-15 | 1997-05-13 | International Business Machines Corporation | Method and system for indicating a status of a circuit design |
AU4866596A (en) * | 1995-02-07 | 1996-08-27 | Silicon Valley Research, Inc. | Integrated circuit layout |
US5631842A (en) * | 1995-03-07 | 1997-05-20 | International Business Machines Corporation | Parallel approach to chip wiring |
US5661663A (en) * | 1995-03-24 | 1997-08-26 | Lsi Logic Corporation | Physical design automation system and method using hierarchical clusterization and placement improvement based on complete re-placement of cell clusters |
US5696693A (en) * | 1995-03-31 | 1997-12-09 | Unisys Corporation | Method for placing logic functions and cells in a logic design using floor planning by analogy |
US5898595A (en) * | 1995-05-26 | 1999-04-27 | Lsi Logic Corporation | Automated generation of megacells in an integrated circuit design system |
US5659717A (en) * | 1995-07-31 | 1997-08-19 | Altera Corporation | Methods for partitioning circuits in order to allocate elements among multiple circuit groups |
US5764954A (en) * | 1995-08-23 | 1998-06-09 | International Business Machines Corporation | Method and system for optimizing a critical path in a field programmable gate array configuration |
US5757657A (en) * | 1996-02-07 | 1998-05-26 | International Business Machines Corporation | Adaptive incremental placement of circuits on VLSI chip |
US5787009A (en) * | 1996-02-20 | 1998-07-28 | Altera Corporation | Methods for allocating circuit design portions among physical circuit portions |
US5729466A (en) * | 1996-04-03 | 1998-03-17 | Cadence Design Systems, Inc. | Optimization multiple performance criteria by simulating the behavior of a constraint graph expanded by subgraphs derived from PWL convex cost functions |
US5663891A (en) * | 1996-04-03 | 1997-09-02 | Cadence Design Systems, Inc. | Optimization of multiple performance criteria of integrated circuits by expanding a constraint graph with subgraphs derived from multiple PWL convex cost functions |
US5731985A (en) * | 1996-04-23 | 1998-03-24 | International Business Machines Corporation | Chip sizing for hierarchical designs |
US5777383A (en) * | 1996-05-09 | 1998-07-07 | Lsi Logic Corporation | Semiconductor chip package with interconnect layers and routing and testing methods |
US5818729A (en) * | 1996-05-23 | 1998-10-06 | Synopsys, Inc. | Method and system for placing cells using quadratic placement and a spanning tree model |
US5870312A (en) * | 1996-06-28 | 1999-02-09 | Lsi Logic Corporation | Advanced modular cell placement system with dispersion-driven levelizing system |
US5831863A (en) * | 1996-06-28 | 1998-11-03 | Lsi Logic Corporation | Advanced modular cell placement system with wire length driven affinity system |
US5963455A (en) * | 1996-06-28 | 1999-10-05 | Lsi Logic Corporation | Advanced modular cell placement system with functional sieve optimization technique |
US6067409A (en) * | 1996-06-28 | 2000-05-23 | Lsi Logic Corporation | Advanced modular cell placement system |
US5870311A (en) * | 1996-06-28 | 1999-02-09 | Lsi Logic Corporation | Advanced modular cell placement system with fast procedure for finding a levelizing cut point |
US5872718A (en) * | 1996-06-28 | 1999-02-16 | Lsi Logic Corporation | Advanced modular cell placement system |
US6030110A (en) * | 1996-06-28 | 2000-02-29 | Lsi Logic Corporation | Advanced modular cell placement system with median control and increase in resolution |
US5844811A (en) * | 1996-06-28 | 1998-12-01 | Lsi Logic Corporation | Advanced modular cell placement system with universal affinity driven discrete placement optimization |
US5812740A (en) * | 1996-06-28 | 1998-09-22 | Lsi Logic Corporation | Advanced modular cell placement system with neighborhood system driven optimization |
US6026223A (en) * | 1996-06-28 | 2000-02-15 | Scepanovic; Ranko | Advanced modular cell placement system with overlap remover with minimal noise |
US6085032A (en) * | 1996-06-28 | 2000-07-04 | Lsi Logic Corporation | Advanced modular cell placement system with sinusoidal optimization |
US5867398A (en) * | 1996-06-28 | 1999-02-02 | Lsi Logic Corporation | Advanced modular cell placement system with density driven capacity penalty system |
US5892688A (en) * | 1996-06-28 | 1999-04-06 | Lsi Logic Corporation | Advanced modular cell placement system with iterative one dimensional preplacement optimization |
US5835381A (en) * | 1996-06-28 | 1998-11-10 | Lsi Logic Corporation | Advanced modular cell placement system with minimizing maximal cut driven affinity system |
US5914888A (en) * | 1996-06-28 | 1999-06-22 | Lsi Logic Corporation | Advanced modular cell placement system with coarse overflow remover |
US5808899A (en) * | 1996-06-28 | 1998-09-15 | Lsi Logic Corporation | Advanced modular cell placement system with cell placement crystallization |
US6026220A (en) * | 1996-11-19 | 2000-02-15 | Unisys Corporation | Method and apparatus for incremntally optimizing a circuit design |
US5960184A (en) * | 1996-11-19 | 1999-09-28 | Unisys Corporation | Method and apparatus for providing optimization parameters to a logic optimizer tool |
US5956256A (en) * | 1996-11-19 | 1999-09-21 | Unisys Corporation | Method and apparatus for optimizing a circuit design having multi-paths therein |
US5864487A (en) * | 1996-11-19 | 1999-01-26 | Unisys Corporation | Method and apparatus for identifying gated clocks within a circuit design using a standard optimization tool |
US5980092A (en) * | 1996-11-19 | 1999-11-09 | Unisys Corporation | Method and apparatus for optimizing a gated clock structure using a standard optimization tool |
US5980093A (en) * | 1996-12-04 | 1999-11-09 | Lsi Logic Corporation | Integrated circuit layout routing using multiprocessing |
US5802075A (en) * | 1997-01-16 | 1998-09-01 | Unisys Corporation | Distributed test pattern generation |
US5912820A (en) * | 1997-01-22 | 1999-06-15 | Unisys Corporation | Method and apparatus for distributing a clock tree within a hierarchical circuit design |
US6516456B1 (en) | 1997-01-27 | 2003-02-04 | Unisys Corporation | Method and apparatus for selectively viewing nets within a database editor tool |
US6701289B1 (en) | 1997-01-27 | 2004-03-02 | Unisys Corporation | Method and apparatus for using a placement tool to manipulate cell substitution lists |
US6684376B1 (en) | 1997-01-27 | 2004-01-27 | Unisys Corporation | Method and apparatus for selecting components within a circuit design database |
US6910200B1 (en) | 1997-01-27 | 2005-06-21 | Unisys Corporation | Method and apparatus for associating selected circuit instances and for performing a group operation thereon |
US7076410B1 (en) | 1997-01-27 | 2006-07-11 | Unisys Corporation | Method and apparatus for efficiently viewing a number of selected components using a database editor tool |
US6708144B1 (en) | 1997-01-27 | 2004-03-16 | Unisys Corporation | Spreadsheet driven I/O buffer synthesis process |
US6754879B1 (en) | 1997-01-27 | 2004-06-22 | Unisys Corporation | Method and apparatus for providing modularity to a behavioral description of a circuit design |
US6718520B1 (en) | 1997-01-27 | 2004-04-06 | Unisys Corporation | Method and apparatus for selectively providing hierarchy to a circuit design |
US5819258A (en) * | 1997-03-07 | 1998-10-06 | Digital Equipment Corporation | Method and apparatus for automatically generating hierarchical categories from large document collections |
JPH10326835A (ja) * | 1997-05-26 | 1998-12-08 | Oki Electric Ind Co Ltd | Lsiレイアウト方法 |
US6378114B1 (en) * | 1997-07-01 | 2002-04-23 | Synopsys, Inc. | Method for the physical placement of an integrated circuit adaptive to netlist changes |
US6519749B1 (en) * | 1998-01-09 | 2003-02-11 | Silicon Perspective Corporation | Integrated circuit partitioning placement and routing system |
US6243851B1 (en) | 1998-03-27 | 2001-06-05 | Xilinx, Inc. | Heterogeneous method for determining module placement in FPGAs |
US6237129B1 (en) | 1998-03-27 | 2001-05-22 | Xilinx, Inc. | Method for constraining circuit element positions in structured layouts |
US6292925B1 (en) | 1998-03-27 | 2001-09-18 | Xilinx, Inc. | Context-sensitive self implementing modules |
US6260182B1 (en) * | 1998-03-27 | 2001-07-10 | Xilinx, Inc. | Method for specifying routing in a logic module by direct module communication |
US6430732B1 (en) | 1998-03-27 | 2002-08-06 | Xilinx, Inc. | Method for structured layout in a hardware description language |
US6477687B1 (en) * | 1998-06-01 | 2002-11-05 | Nvidia U.S. Investment Company | Method of embedding RAMS and other macrocells in the core of an integrated circuit chip |
US6256768B1 (en) | 1998-11-03 | 2001-07-03 | Silicon Perspective Corporation | Amoeba display for hierarchical layout |
JP2000231581A (ja) * | 1999-02-12 | 2000-08-22 | Hitachi Ltd | 情報処理装置、情報処理システム及び記憶媒体 |
US6308309B1 (en) | 1999-08-13 | 2001-10-23 | Xilinx, Inc. | Place-holding library elements for defining routing paths |
US6625787B1 (en) | 1999-08-13 | 2003-09-23 | Xilinx, Inc. | Method and apparatus for timing management in a converted design |
AU2022301A (en) * | 1999-12-30 | 2001-07-16 | Shlomo Shkolnik | Multidisciplinary project integration system |
US6633879B1 (en) * | 2000-01-04 | 2003-10-14 | International Business Machines Corporation | Method and system for optimizing direct tables and trees |
US6493855B1 (en) * | 2000-02-18 | 2002-12-10 | Hewlett-Packard Company | Flexible cache architecture using modular arrays |
US6546532B1 (en) | 2000-06-20 | 2003-04-08 | Unisys Corporation | Method and apparatus for traversing and placing cells using a placement tool |
US6889370B1 (en) | 2000-06-20 | 2005-05-03 | Unisys Corporation | Method and apparatus for selecting and aligning cells using a placement tool |
US6487706B1 (en) * | 2000-08-30 | 2002-11-26 | International Business Machines Corporation | Contract methodology for concurrent hierarchical design |
US6567967B2 (en) | 2000-09-06 | 2003-05-20 | Monterey Design Systems, Inc. | Method for designing large standard-cell base integrated circuits |
JP4083965B2 (ja) * | 2000-09-27 | 2008-04-30 | 株式会社東芝 | 半導体集積回路の設計パターンのデータ処理方法、及びデータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7065727B2 (en) * | 2001-04-25 | 2006-06-20 | Barcelona Design, Inc. | Optimal simultaneous design and floorplanning of integrated circuit |
US6588000B2 (en) * | 2001-08-09 | 2003-07-01 | International Business Machines Corporation | Method of partitioning large transistor design to facilitate transistor level timing |
US6757878B2 (en) * | 2001-12-31 | 2004-06-29 | Intel Corporation | Method and apparatus for layout synthesis of regular structures using relative placement |
US6877148B1 (en) | 2002-04-07 | 2005-04-05 | Barcelona Design, Inc. | Method and apparatus for routing an integrated circuit |
US20030208738A1 (en) * | 2002-04-24 | 2003-11-06 | Yu-Ming Hsu | Design method for full chip element on memory |
US6944832B2 (en) * | 2002-06-20 | 2005-09-13 | The Boeing Company | System design using part roles |
US7197734B1 (en) * | 2002-07-12 | 2007-03-27 | Altera Corporation | Method and apparatus for designing systems using logic regions |
GB2393533A (en) * | 2002-09-27 | 2004-03-31 | Zuken Ltd | Routing of interconnected regions e.g. of electrical circuits |
US6757883B1 (en) * | 2002-12-11 | 2004-06-29 | Lsi Logic Corporation | Estimating free space in IC chips |
US7237214B1 (en) * | 2003-03-04 | 2007-06-26 | Synplicity, Inc. | Method and apparatus for circuit partitioning and trace assignment in circuit design |
US7120892B1 (en) * | 2004-03-03 | 2006-10-10 | Xilinx, Inc. | Process for adjusting data structures of a floorplan upon changes occurring |
US7376921B2 (en) * | 2006-02-17 | 2008-05-20 | Athena Design Systems, Inc. | Methods for tiling integrated circuit designs |
US7657857B2 (en) * | 2006-03-17 | 2010-02-02 | Altera Corporation | Performance visualization of delay in circuit design |
JP4995639B2 (ja) * | 2007-06-01 | 2012-08-08 | ルネサスエレクトロニクス株式会社 | 半導体集積回路の設計装置および設計方法 |
US7681169B2 (en) | 2007-08-29 | 2010-03-16 | International Business Machines Corporation | Process for managing complex pre-wired net segments in a VLSI design |
US7934188B2 (en) * | 2008-04-24 | 2011-04-26 | International Business Machines Corporation | Legalization of VLSI circuit placement with blockages using hierarchical row slicing |
BR112012020180A2 (pt) | 2010-02-16 | 2017-07-04 | Nextteq | "recipientes para fluidos com paredes hábeis de compósito" |
WO2013058608A2 (ko) * | 2011-10-20 | 2013-04-25 | 아주대학교산학협력단 | 트리맵 가시화 시스템 및 방법 |
US9672320B2 (en) * | 2015-06-30 | 2017-06-06 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method for integrated circuit manufacturing |
US10509883B2 (en) * | 2016-11-28 | 2019-12-17 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method for layout generation with constrained hypergraph partitioning |
US11519173B2 (en) | 2021-11-10 | 2022-12-06 | Global Bamboo Technologies, Inc. | Automated MEPI design for hollow wall construction |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4500963A (en) * | 1982-11-29 | 1985-02-19 | The United States Of America As Represented By The Secretary Of The Army | Automatic layout program for hybrid microcircuits (HYPAR) |
JPS59145541A (ja) * | 1983-02-09 | 1984-08-21 | Hitachi Ltd | Lsiレイアウト処理方法 |
US4612618A (en) * | 1983-06-10 | 1986-09-16 | Rca Corporation | Hierarchical, computerized design of integrated circuits |
US4554625A (en) * | 1983-06-14 | 1985-11-19 | International Business Machines Corporation | Method for generating an optimized nested arrangement of constrained rectangles |
US4630219A (en) * | 1983-11-23 | 1986-12-16 | International Business Machines Corporation | Element placement method |
US4688072A (en) * | 1984-06-29 | 1987-08-18 | Hughes Aircraft Company | Hierarchical configurable gate array |
-
1987
- 1987-06-02 US US07/057,843 patent/US4918614A/en not_active Expired - Lifetime
-
1988
- 1988-06-02 KR KR1019880006754A patent/KR890001154A/ko not_active Application Discontinuation
- 1988-06-02 EP EP88305021A patent/EP0294188B1/de not_active Expired - Lifetime
- 1988-06-02 JP JP63134531A patent/JP2724317B2/ja not_active Expired - Lifetime
- 1988-06-02 DE DE3856234T patent/DE3856234T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPS6480040A (en) | 1989-03-24 |
DE3856234D1 (de) | 1998-09-17 |
JP2724317B2 (ja) | 1998-03-09 |
US4918614A (en) | 1990-04-17 |
EP0294188A2 (de) | 1988-12-07 |
KR890001154A (ko) | 1989-03-18 |
EP0294188B1 (de) | 1998-08-12 |
EP0294188A3 (de) | 1990-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3856234T2 (de) | Hierarchischer Aufstellungsplan | |
DE69813892T2 (de) | Polygon darstellung im layout eines integrierten schaltkreises | |
EP0441810B1 (de) | Verfahren zur plazierung von modulen auf einem träger | |
DE69424944T2 (de) | Datenreduktion in einem system zur analysierung von geometrischen datenbanken | |
DE69027402T2 (de) | Verfahren und Vorrichtung zur Steuerung von Robotern und ähnlichem zum Gebrauch hierarchisch organisierter "Bubble-Daten", die entlang einer Mittelachse angeordnet sind | |
DE10025583A1 (de) | Verfahren zur Optimierung integrierter Schaltungen, Vorrichtung zum Entwurf von Halbleitern und Programmobjekt zum Entwerfen integrierter Schaltungen | |
DE68929110T2 (de) | Verfahren zur Knotenpositionierung in einem graphen-basierenden Diagramm | |
DE69327636T2 (de) | Verfahren und Gerät zum Entwurf des Layouts von integrierten Millimeterwellen oder Mikrowellenschaltungen | |
DE68926189T2 (de) | Verarbeitungsverfahren von Layoutdaten | |
DE102009053578A1 (de) | Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur | |
DE102016118811A1 (de) | Integrierte schaltung mit versetzten leitenden merkmalen | |
DE3751154T2 (de) | Verfahren zur Vorbereitung eines Simulationsprogrammes. | |
DE3688580T2 (de) | Verfahren zur Verdrahtungsverbesserung von Meisterbild-DCVS-Chips. | |
DE69431231T2 (de) | System zur Modellierung einer integrierten Schaltungschippackung und Betriebsverfahren | |
DE3872737T2 (de) | Verfahren zur kombinierung von "gate array"-schaltungen mit standardschaltungen auf ein gemeinsames halbleiterplaettchen. | |
DE3587055T2 (de) | Verfahren zur verteilung der leitungsbelastung auf einer schaltkarte oder auf einem verbindungspackage mit jeweils mehreren verdrahtungsebenen. | |
DE112021002870T5 (de) | Halbleiterschaltungs-entwurf und einheits-pin-anordnung | |
DE3788758T2 (de) | Polymorphes Maschennetzwerk für Bildverarbeitungssystem. | |
DE68923880T2 (de) | Verfahren zur Herstellung von komplementären Mustern zur Exposition von Halbleiterkörpern mit selbsttragenden Masken. | |
DE69901959T2 (de) | Anwenderdefinierbare Parameter zur Finite-Element-Analyseberechnung in einem Cad-Programm | |
DE10205559B4 (de) | Integrierte Schaltung und Verfahren und Vorrichtung zum Entwurf einer integrierten Schaltung | |
DE69424906T2 (de) | Verfahren und System zur Verteilung eines Analyse-Gebietes in einem Gerätsimulator | |
DE69721736T2 (de) | Verfahren zum Füllen einer Polygone und Bildverarbeitungssystem | |
DE4102718C2 (de) | Integrierte Schaltung und Verfahren zur Generierung eines Layouts einer integrierten Schaltung | |
EP3869380A1 (de) | Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |