DE3856234T2 - Hierarchischer Aufstellungsplan - Google Patents

Hierarchischer Aufstellungsplan

Info

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
Application number
DE3856234T
Other languages
English (en)
Other versions
DE3856234D1 (de
Inventor
Jiun-Hao Santa Clara California 95051 Lai
Hossein Mountain View California 94041 Modarres
Susan Fremont California 94555 Raam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Logic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Logic Corp filed Critical LSI Logic Corp
Publication of DE3856234D1 publication Critical patent/DE3856234D1/de
Application granted granted Critical
Publication of DE3856234T2 publication Critical patent/DE3856234T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L21/00Processes or apparatus adapted for the manufacture or treatment of semiconductor or solid state devices or of parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • 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:
  • (1) Hierarchische Einschätzung von unbekannter Funktionsfläche
  • 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.
  • (2) Erhaltung der Modularität
  • 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.
  • (3) Hierarchische Verknüpfung von Funktionen
  • 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:
  • (1) Hierarchische Einschätzung von unbekannter Funktionsfläche
  • 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.
  • (2) Erhaltung der Modularität
  • 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.
  • (3) Hierarchische Verknüpfung von Funktionen
  • 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.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSGESTALTUNG
  • 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.
  • EINGABEN
  • 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.
  • ARCHITEKTUR DES GRUNDSYSTEMS
  • 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.
  • INITIALISIERUNGSPHASE
  • 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.
  • RELATIVE PLAZIERUNGSPHASE
  • 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.
  • FORMBESTIMMUNSPHASE
  • 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.
  • AUSGABE UND MANUELLER EINGRIFF
  • 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.
DE3856234T 1987-06-02 1988-06-02 Hierarchischer Aufstellungsplan Expired - Lifetime DE3856234T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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 &#34;Bubble-Daten&#34;, 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 &#34;gate array&#34;-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