DE69813892T2 - Polygon darstellung im layout eines integrierten schaltkreises - Google Patents

Polygon darstellung im layout eines integrierten schaltkreises Download PDF

Info

Publication number
DE69813892T2
DE69813892T2 DE69813892T DE69813892T DE69813892T2 DE 69813892 T2 DE69813892 T2 DE 69813892T2 DE 69813892 T DE69813892 T DE 69813892T DE 69813892 T DE69813892 T DE 69813892T DE 69813892 T2 DE69813892 T2 DE 69813892T2
Authority
DE
Germany
Prior art keywords
polygon
data
line
line segment
generating
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
DE69813892T
Other languages
English (en)
Other versions
DE69813892D1 (de
Inventor
David C. Chapman
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.)
Chapman David C Santa Clara
Original Assignee
Chapman David C Santa Clara
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 Chapman David C Santa Clara filed Critical Chapman David C Santa Clara
Publication of DE69813892D1 publication Critical patent/DE69813892D1/de
Application granted granted Critical
Publication of DE69813892T2 publication Critical patent/DE69813892T2/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
    • H01L21/70Manufacture or treatment of devices consisting of a plurality of solid state components formed in or on a common substrate or of parts thereof; Manufacture of integrated circuit devices or of parts thereof
    • H01L21/77Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate
    • H01L21/78Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices
    • H01L21/82Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L24/00Arrangements for connecting or disconnecting semiconductor or solid-state bodies; Methods or apparatus related thereto
    • H01L24/80Methods for connecting semiconductor or other solid state bodies using means for bonding being attached to, or being formed on, the surface to be connected
    • H01L24/85Methods for connecting semiconductor or other solid state bodies using means for bonding being attached to, or being formed on, the surface to be connected using a wire connector
    • 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/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/0001Technical content checked by a classifier
    • H01L2924/00014Technical content checked by a classifier the subject-matter covered by the group, the symbol of which is combined with the symbol of this group, being disclosed without further technical details
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/10Details of semiconductor or other solid state devices to be connected
    • H01L2924/11Device type
    • H01L2924/14Integrated circuits

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft den Entwurf integrierter Schaltungen und genauer ein Verfahren und eine Vorrichtung zur Repräsentation von Polygonen in einem Layout einer integrierten Schaltung.
  • HINTERGRUND DER ERFINDUNG
  • Im Zusammenhang mit dem Entwurf integrierter Schaltungen (IC – integrated circuit) ist ein "Layout" ein Satz geometrischer Muster, typischerweise in Gestalt von Polygonen, die die Größe und den Ort unterschiedlicher Materialarten angeben, die während der Herstellung eines IC zur Erzeugung von Halbleiterelementen und elektrischen Verbindungen zwischen den Elementen verwendet werden. Beispielsweise kann ein Diffusionsfenster eines IC in einem Layout durch ein Polygon oder mehrere Polygone repräsentiert werden, die von einer Herstellungsanlage als "Diffusionsschichtgeometrie" interpretiert werden. Andere Materialschichten und Merkmale, wie beispielsweise Kontakte oder Durchführungen, können in einem IC-Layout auf ähnliche Weise repräsentiert werden. Die Polygone in einem IC-Layout müssen einen Satz von Entwurfsregeln erfüllen, die Mindestgrößen für bestimmte Materialarten und auch Mindestanforderungen für den Abstand zwischen unterschiedlichen Materialarten definieren. Der Satz von Entwurfsregeln gibt auch Größen- und Abstandsanforderungen für andere Layoutmerkmale wie beispielsweise Kontakte an.
  • Manchmal werden IC-Layouts unter Verwendung eines Systems zum computergestützten Entwurf (CAD) von Hand gezeichnet. Diese Vorgehensweise ist für den Entwurf von IC-Layouts mit relativ wenigen Einheiten oft geeignet. Moderne Herstellungstechnologien erlauben es jedoch, mehrere Millionen Transistoren auf einem einzigen Siliziumsubstrat anzuordnen. Das Zeichnen eines IC-Layouts mit Millionen von Transistoren von Hand ist nicht praktikabel, weil es auch dann überaus viel Zeit benötigen würde, wenn standardisierte Zellen zur Verringerung der Anzahl einzelner zu zeichnender Transistoren verwendet werden. Es sind daher unterschiedliche computerbasierte IC-Layout-Entwurfswerkzeuge entwickelt worden, um die Erzeugung von IC-Layouts zu automatisieren. Blattzellen-Kompaktifizierungswerkzeuge und Blattzellen-Synthesewerkzeuge sind zwei Arten von Layout-Entwurfswerkzeugen. Im Zusammenhang mit IC-Layouts bezeichnet der Begriff "Blattzelle" (leaf cell) eine Transistorgruppe, typischerweise von zwei Transistoren bis mehreren Hundert Transistoren, die zusammen eine bestimmte Funktion, wie beispielsweise eine logische NAND-Operation oder das Speichern eines Informationsbits, ausführen.
  • Blattzellen-Kompaktifizierungswerkzeuge werden verwendet, um die Größe eines bestehenden IC-Layouts zu verringern. Die meisten Blattzellen-Kompaktifizierungswerkzeuge kompaktifizieren ein Layout entweder in vertikaler oder horizontaler Richtung, indem sie überschüssigen Leerraum zwischen den Polygonen entfernen. Eine "vollständige" Kompaktifizierung wird manchmal ausgeführt, indem ein Layout zunächst in horizontaler Richtung und dann in vertikaler Richtung komprimiert wird. Die meisten Blattzellen-Kompaktifizierungswerkzeuge sind jedoch auch in der Lage, die Koordinaten der Polygonpunkte in einem IC-Layout zu verändern, bis sie die Entwurfsregeln für einen bestimmten Herstellungsprozeß erfüllen, wodurch die Werkzeuge auch zum Übertragen eines bestehenden Layouts von einem gegenwärtigen Entwurfsregelsatz auf einen neuen Entwurfsregelsatz hilfreich sind. Trotz des Nutzens von Blattzellen-Kompaktifizierungswerkzeugen ist auch ein kompaktifiziertes Layout größer als vergleichbare von Hand gezeichnete Zellen, weil die Kompaktifizierung im allgemeinen ein eindimensionaler Vorgang ist. Auch behalten Kompaktifzierungswerkzeuge die bestehende Layoutstruktur bei, auch wenn nicht-lineare Änderungen der Entwurfsregeln (z. B. eine proportional vergrößerte Metallüberlappung um einen Kontakt) menschliche Layout-Entwerfer oft veranlassen, beim Zeichnen eines Layouts mit diesen neuen Entwurfsregeln andere Entscheidungen zu treffen.
  • Anders als Blattzellen-Kompaktifizierungswerkzeuge haben Blattzellen-Synthesewerkzeuge die Fähigkeit, ein neues Blattzellenlayout basierend auf einer Netzliste auf Transistorebene, die die Größe von Transistoren und die elektrischen Verbindungen zwischen den Transistoren angibt, zu erzeugen. Weil ein Layout-Synthesesystem eine bestehende Layoutstruktur nicht zu erhalten braucht, kann es die Entwurfsregeln oder Schaltungsanforderungen in vollem Umfang vorteilhaft ausnutzen, z. B., indem Transistoren umgeordnet werden, Transistoren in abwechselnden Spalten angeordnet werden, oder die Leitungsführung neu angelegt wird, wenn Ressourcen frei werden. Viele Layout-Synthesesysteme verwenden als abschließenden Schritt bei der Erzeugung eines Layouts eine Kompaktifizierung, aber sie können dennoch kompaktere Layouts erzeugen als die entsprechenden Systeme, die nur bestehende Layouts kompaktifizieren.
  • Die meisten IC-Layout-Entwurfswerkzeuge erzeugen eine interne Repräsentation der in einem Layout enthaltenen Polygone. Zwei Vorgehensweisen zum Repräsentieren von Polygonen in einem IC-Layout sind die allgemeine Polygon-Vorgehensweise und die Leitungs- oder Pfad-Vorgehensweise.
  • Die allgemeine Polygon-Vorgehensweise verwendet eine einzige Punktliste, die Rechtecke oder Trapezoide darstellt, welche zum Erzeugen der in einem IC-Layout enthaltenen Polygone verwendet werden. Jedes Rechteck oder Trapezoid hat parallele Seiten mit gleicher Orientierung und wird durch vier Punkte definiert. Komplexe Polygone werden repräsentiert, indem mehrere Trapezoide einander benachbart angeordnet werden. Die allgemeine Polygon-Vorgehensweise ist arbiträr und stellt die Flexibilität zur Repräsentation jedweder Layoutgeometrie bereit. Bei den Trapezoiden gibt es keine bevorzugte Orientierung oder "Drehrichtung". Das heißt, daß auf ein Trapezoid nicht im Hinblick auf eine bestimmte Ecke Bezug genommen wird, und daß die Seiten eines Trapezoids nicht z. B. im Hinblick auf den Stromfluß geordnet sind. Die Beliebigkeit bewirkt jedoch, daß die allgemeine Polygon-Vorgehensweise schwierig in Software zu implementieren ist. Weil die meiste Synthesesoftware die Anzahl von Punkten begrenzt, die in einem einzigen Polygon enthalten sein können, müssen einige komplexe Polygone mit vielen Trapezoiden in kleinere Polygone aufgebrochen werden. Das Erfordernis, ein Polygon in viele Trapezoide oder Rechtecke aufzubrechen, verschleiert dessen Zweck, und es ist schwierig, nützliche Eigenschaften wie z. B. den Widerstand oder die Transistoreinheitengröße zu bestimmen. Auch können relativ einfache Veränderungen der Polygone zu einer umfangreichen Umstrukturierung der Trapezoidrepräsentation führen. Wegen der Komplexität der Algorithmen, die zur Verarbeitung nicht-orthogonaler, aus Trapezoiden zusammengesetzter Geometriestrukturen erforderlich sind, verwenden viele Werkzeuge nur Rechtecke. Es werden viele Trapezoide oder Rechtecke benötigt, um alle bis auf die einfachsten Polygone zu repräsentieren, und nützliche Operationen wie z. B. das Einfügen einer Kurve in eine Leitung sind schwierig, weil sie keine unmittelbare Entsprechung in einer Liste zusammengefügter Trapezoide haben. Schließlich wird in einigen Implementierungen der allgemeinen Polygon-Vorgehensweise der gesamte Entwurfsraum repräsentiert, einschließlich allen ungenutzten Platzes zwischen Polygonen, was die Polygonanzahl erhöht und mehr Daten zur Repräsentation des Layouts erfordert.
  • Die Leitungs- oder Pfadvorgehensweise repräsentiert Polygone unter Verwendung einer Mittellinie und einer Polygonbreite für jeden Punkt entlang der Mittellinie. Diese Vorgehensweise kann wegen ihrer Einfachheit leicht in Synthesewerkzeugen implementiert werden, und sie kann die Leitungsführung zwischen Diffusionsinseln vereinfachen. Auch können die Breite und der Widerstand eines Pfads leicht berechnet werden. Die meisten Layoutgeometriestrukturen können dargestellt werden, ohne Leitungen zusammenzufügen oder Leitungen nebeneinander anzuordnen, und diese Vorgehensweise wird in vielen Leitungsführungswerkzeugen verwendet. Die Pfadvorgehensweise erfordert jedoch, daß Polygone parallele Seiten aufweisen, was sie für komplexere Formen, wie beispielsweise achteckförmige Kontakte, unregelmäßig geformte Diffusionsinseln oder Leitungen mit sich verändernder Breite ungeeignet macht.
  • US-A-5,640,497 beschreibt ein Verfahren zum Einrichten von Polygondaten zur Erzeugung eines neuen Layouts, das neue Entwurfsregeln erfüllt. Das Polygon besteht aus "Schichten" von Rechtecken. Die Rechtecke und "Schichten" werden bearbeitet, um die neuen Entwurfsregeln zu erfüllen.
  • US-A-5,113,451 beschreibt ein Vertahren zum Markieren von Polygonen eines geometrischen Layouts. Das Markieren ertordert, daß das Polygon abgetastet wird und daß jeder Abtastlinie temporäre Zahlen zugeordnet werden. Die Polygone werden dann gemäß mindestens einem Kriterium sortiert.
  • Angesichts des Erfordernisses, Polygone in IC-Layout-Synthesewerkzeugen zu repräsentieren, und angesichts der Begrenzungen existierender Vorgehensweisen, ist eine alternative Vorgehensweise zum Repräsentieren von Polygonen in einem IC-Layout sehr wünschenswert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß einem Aspekt der Erfindung wird eine Vorgehensweise zum Erzeugen einer Datenrepräsentation eines IC-Layouts bereitgestellt. Das Computersystem weist einen Speicher und einen oder mehrere mit dem Speicher gekoppelte Prozessoren auf. Der Speicher weist eine Reihe von Befehlen auf, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dazu veranlassen, mehrere Schritte, wie in Anspruch 1 definiert, auszuführen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der Erfindung sind als Beispiele, und nicht in beschränkender Weise, in den Figuren der beigefügten Zeichnungen dargestellt, in denen gleiche Bezugszeichen sich auf ähnliche Elemente beziehen und in denen:
  • 1 zeigt eine kanonische Orientierung gemäß einem Ausführungsbeispiel der Erfindung;
  • 2 zeigt ein gerichtetes Liniensegment und einen benachbarten Punkt gemäß einem Ausführungsbeispiel der Erfindung;
  • 3 zeigt eine Leitung gemäß einem Ausführungsbeispiel der Erfindung;
  • 4A zeigt eine Datenstruktur für einen Punkt gemäß einem Ausführungsbeispiel der Erfindung;
  • 4B zeigt eine Datenstruktur für ein gerichtetes Liniensegment gemäß einem Ausführungsbeispiel der Erfindung;
  • 4C zeigt eine Datenstruktur für ein Leitungssegment gemäß einem Ausführungsbeispiel der Erfindung;
  • 4D zeigt eine Datenstruktur für eine Leitung gemäß einem Ausführungsbeispiel der Erfindung;
  • 4E zeigt eine Datenstruktur für ein Polygon gemäß einem Ausführungsbeispiel der Erfindung;
  • 4F zeigt eine Datenstruktur für eine Verzweigung gemäß einem Ausführungsbeispiel der Erfindung;
  • 4G zeigt eine Datenstruktur für eine Seitenabzweigung gemäß einem Ausführungsbeispiel der Erfindung;
  • 5 zeigt ein aus Leitungssegmenten zusammengesetztes Polygon gemäß einem Ausführungsbeispiel der Erfindung;
  • 6A6E zeigen einen Satz von Datenstrukturen, die dem Polygon von 5 gemäß einem Ausführungsbeispiel der Erfindung zugeordnet sind;
  • 7 zeigt ein zweites aus Leitungssegmenten gebildetes Polygon gemäß einem Ausführungsbeispiel der Erfindung;
  • 8 zeigt eine aus Leitungssegmenten gebildete Diffusionsinsel gemäß einem Ausführungsbeispiel der Erfindung;
  • 9A zeigt ein gerichtetes Liniensegment und einen Orientierungsschlüssel gemäß einem Ausführungsbeispiel der Erfindung;
  • 9B zeigt ein Leitungssegment und einen Orientierungsschlüssel gemäß einem Ausführungsbeispiel der Erfindung;
  • 10 zeigt einen Abschnitt eines unter Verwendung von Leitungssegmenten erzeugten IC-Layouts gemäß einem Ausführungsbeispiel der Erfindung;
  • 11 zeigt die Verwendung einer Ausschlußzone zum Bestimmen des Polygonabstands gemäß einem Ausführungsbeispiel der Erfindung;
  • 12 ist ein Flußdiagramm, das ein Verfahren zum Ausführen einer Abstandsüberprüfung zwischen Polygonen gemäß einem Ausführungsbeispiel der Erfindung zeigt;
  • 13A zeigt eine unter Verwendung von Leitungssegmenten gebildete Leitung gemäß einem Ausführungsbeispiel der Erfindung;
  • 13B zeigt eine Polygonrepräsentation der Leitung von 13A gemäß einem Ausführungsbeispiel der Erfindung; und
  • 14 ist ein Blockdiagramm eines Computersystems, auf dem Ausführungsbeispiele der Erfindung implementiert werden können.
  • DETAILBESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Eine neue Vorgehensweise zur Repräsentation von Polygonen in einem IC-Layout wird beschrieben. In der folgenden Beschreibung werden zum Zwecke der Erläuterung genaue Einzelheiten angeführt, um für ein gründliches Verständnis der Ertindung zu sorgen. Es ist jedoch klar, daß die Erfindung ohne diese speziellen Einzelheiten ausgeführt werden kann. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen als Blockdiagramme dargestellt, um eine unnötige Verschleierung der Erfindung zu vermeiden.
  • FUNKTIONSÜBERBLICK
  • Allgemein werden gemäß einem Ausführungsbeispiel der Erfindung die Polygone eines IC-Layouts durch eine Leitung oder mehrere Leitungen repräsentiert, die jeweils durch ein Leitungssegment oder mehrere Leitungssegmente repräsentiert werden. Jedes Leitungssegment wird aus einem Paar gerichteter Liniensegmente gebildet. Eine neue Datenstrukturhierarchie wird bereitgestellt, um Daten zu verwalten, die die Leitungen, Leitungssegmente und gerichteten Liniensegmente repräsentieren. Die Datenstrukturhierarchie wird während der IC-Layout-Synthese verwendet, um Gültigkeitsüberprüfungen bezüglich des IC-Layouts durchzuführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1) Kanonische Orientierung
  • Wie in 1 dargestellt, bezieht sich die kanonische Orientierung allgemein auf die Richtung der IC-Layout-Geometriestrukturen bezüglich eines vorgegebenen Orientierungsschlüssels 100. Gemäß einem Ausführungsbeispiel der Endung kann eine IC-Layout-Geometriestruktur in einer von acht kanonischen Richtungen orientiert sein, wobei jede kanonische Richtung ein Mehrfaches von 45° darstellt. Beginnend oben an dem Orientierungsschlüssel 100 und im Uhrzeigersinn fortschreitend, sind die kanonischen Orientierungen (oben), (oben, rechts), (rechts), (unten, rechts), (unten), (unten, links), (links) und (oben, links).
  • Zusätzlich dazu, daß die IC-Layout-Geometrie in einer kanonischen Orientierung ausgerichtet ist, wird auch die Beziehung zwischen Merkmalen des IC-Layouts anhand einer kanonischen Richtung beschrieben. Beispielsweise wird, wie in 2 dargestellt, ein Liniensegment 200 durch Endpunkte 202 und 204 definiert. Gemäß einem Ausführungsbeispiel der Erfindung beruht die kanonische Orientierung des Liniensegments 200 auf der Position des Endpunkts 204 bezüglich dem Endpunkt 202. Somit ist das Liniensegment 200 in die (oben, rechts)-Richtung orientiert oder gerichtet, wie durch den Richtungspfeil 205 angezeigt. Es gibt keine Einschränkungen hinsichtlich der Richtung, in die ein Liniensegment zeigen kann. Beispielsweise wäre, wenn sich der Endpunkt 204 unterhalb und links des Endpunkts 202 befinden würde, die kanonische Orientierung des Liniensegments 200 dann (unten, links). Ferner ist der Punkt 206 links (links) des Liniensegments 200 angeordnet; während der Punkt 208 oberhalb und rechts (oben; rechts) des Liniensegments 200 angeordnet ist. Diese Vorgehensweise ist nützlich, um zu bestimmen, ob der Abstand zwischen dem Liniensegment 200 und dem Punkt 206 einen Satz vorbestimmter Abstandskriterien, wie hier im folgenden beschrieben, erfüllt.
  • Wie vorher einführend erläutert, werden IC-Layout-Polygone durch eine Leitung oder mehrere Leitungen repräsentiert, und jede Leitung wird durch ein Leitungssegment oder mehrere Leitungssegmente repräsentiert. Gemäß einem Ausführungsbeispiel der Erfindung weist jedes Leitungssegment vier Seiten auf, zwei seitliche Seiten (links und rechts) und zwei Endseiten (erste und zweite). Die seitlichen Seiten werden durch ein Paar gerichteter Kanten repräsentiert, die im wesentlichen in der gleichen Richtung orientiert sind, aber die nicht notwendigerweise parallel zu sein brauchen oder zusammenfallende Endpunkte aufzuweisen brauchen. Gemäß einem Ausführungsbeispiel der Erfindung müssen die linken und rechten Seiten jeweils mit einem Vielfachen eines 45°-Winkels zueinander stehen, aber die Endseiten können jeweils irgendeinen Winkel zueinander aufweisen. Im allgemeinen werden die Endseiten an den offenen Enden der Leitung ein Mehrfaches von 45° aufweisen, wäh rend die "inneren" Endseiten jeden beliebigen Winkel aufweisen können. Wie bei Liniensegmenten können Leitungssegmente in jede beliebige Richtung zeigen, wie oben unter Hinweis auf 1 beschrieben. Gemäß einem Ausführungsbeispiel der Erfindung dürfen nicht alle Punkte auf einem Leitungssegment aufeinanderfallen, um sicherzustellen, daß jede Seite eine Länge ungleich null und eine definierte Richtung aufweist.
  • 3 zeigt eine Leitung 300, die aus einem Leitungssegment 302 und einem mit dem Leitungssegment 302 in einem 45°-Winkel verbundenen Leitungssegment 304 gemäß einem Ausführungsbeispiel der Erfindung gebildet ist. Das Leitungssegment 302 ist aus einer ersten gerichteten Kante 306, die die linke Seite des Leitungssegments 302 bildet, und einer zweiten gerichteten Kante 308, die die rechte Seite des Leitungssegments 302 bildet, aufgebaut. Das Leitungssegment 302 weist auch eine erste Endseite 310 und eine zweite Endseite 312 auf. Beide gerichteten Kanten 306 und 308 zeigen in die Richtung (unten). Somit zeigt das Leitungssegment 302 auch in die Richtung (unten).
  • Das Leitungssegment 304 ist aus einer ersten gerichteten Kante 314 und einer zweiten gerichteten Kante 316 gebildet. Beide gerichteten Kanten 314, 316 sind in die Richtung (unten, rechts) gerichtet und bewirken somit, daß das Leitungssegment 304 in die Richtung (unten, rechts) gerichtet ist. Das Leitungssegment 304 weist eine mit der zweiten Endseite des Leitungssegments 302 zusammenfallende erste Endseite 312 und eine zweite Endseite 318 auf.
  • 2) Datenstrukturen
  • Gemäß einem Ausführungsbeispiel der Erfindung wird eine neue Datenstrukturarchitektur zur Repräsentation von Polygonen in einem IC-Layout, wie durch 4A4G veranschaulicht, bereitgestellt. Gemäß einem Ausführungsbeispiel der Erfindung wird jedes Polygon in einem IC-Layout durch eine Leitung oder mehrere Leitungen repräsentiert. Jede Leitung wird durch ein Leitungssegment oder mehrere Leitungssegmente repräsentiert, von denen jedes durch ein Paar gerichteter Linien segmente repräsentiert wird. Jedes Leitungssegment verweist auf die Leitung, in der es enthalten ist, und jede Leitung verweist auf ein Polygon, in dem sie enthalten ist. Somit kann bei einem gegebenen Verweis auf ein einziges Leitungssegment ein gesamtes Polygon aufgefunden und bearbeitet werden.
  • 4A veranschaulicht den Inhalt einer Punkt-Datenstruktur 400 gemäß einem Ausführungsbeispiel der Erfindung. Die Punkt-Datenstruktur 400 gibt den Ort eines Punkts in einem IC-Layout an, indem die X-und Y-Koordinaten (X-KOORDINATE, Y-KOORDINATE) für einen Punkt eines IC-Layouts angegeben werden.
  • 4B veranschaulicht den Inhalt einer Datenstruktur 410 für ein gerichtetes Liniensegment. Die Datenstruktur 410 für ein gerichtetes Liniensegment gibt sowohl einen ersten Endpunkt (ENDE1) als auch einen zweiten Endpunkt (ENDE2) des entsprechenden gerichteten Liniensegments an. Die Datenstruktur 410 für das gerichtete Liniensegment gibt auch eine Richtung (RICHTUNG) eines gerichteten Liniensegments an. Wie oben beschrieben, kann ein gerichtetes Liniensegment in irgendeine von acht vordefinierten Richtungen, wie in 1 dargestellt, gerichtet sein.
  • Die Datenstruktur 410 für ein gerichtetes Liniensegment gibt auch einen Ortho-Anzeiger (ORTHO) und einen Oktant-Anzeiger (OKTANT) an. Der Ortho-Anzeiger ist ein Boole'scher Anzeiger (boolean flag), der anzeigt, ob ein gerichtetes Liniensegment mit einem Winkel, der ein Mehrfaches von 90° ist, ausgerichtet ist, während der Oktant-Anzeiger ein Boole'scher Anzeiger ist, der angibt, ob ein gerichtetes Liniensegment mit einem Winkel, der ein Mehrfaches von 45° ist, ausgerichtet ist. Gemäß einem Ausführungsbeispiel der Erfindung ist, wenn weder der Ortho- noch der Oktant-Anzeiger gesetzt sind, das gerichtete Liniensegment dann in einem "ungewöhnlichen" Winkel, d. h., anders als 45° oder 90°, ausgerichtet, was in manchen Umständen Gleitkommaarithmetik ertordert, um Koordinaten des gerichteten Liniensegments zu berechnen.
  • 4C zeigt den Inhalt einer Leitungssegment-Datenstruktur 420, die eine linke Kante (LINKE KANTE) und eine rechte Kante (RECHTE KANTE) eines Leitungs segments angibt. Sowohl die linke Kante als auch die rechte Kante verweisen jeweils auf eine Datenstruktur 410 für ein gerichtetes Liniensegment. Die Leitungssegment-Datenstruktur 420 weist auch einen Verweis auf das nächste Leitungssegment (NÄCHSTES LEITUNGSSEGMENT) und das vorherige Leitungssegment (VORHERIGES LEITUNGSSEGMENT) in der Leitung auf und bildet somit eine doppelt verkettete Liste. Die Leitungssegment-Datenstruktur für das erste Leitungssegment in einer Leitung enthält die Angabe eines vorbestimmten Wertes, um anzuzeigen, daß das Leitungssegment nicht auf ein vorheriges Leitungssegment verweist. Gemäß einem Ausführungsbeispiel der Erfindung wird ein Wert NULL als vorbestimmter Wert verwendet. Auf ähnliche Weise enthält die Leitungssegment-Datenstruktur für das letzte Leitungssegment in einer Leitung einen vorbestimmten Wert, um anzuzeigen, daß das Leitungssegment nicht auf ein nächstes Leitungssegment verweist. Auch wenn ein Ausführungsbeispiel der Leitungs-Datenstruktur 420 im Zusammenhang mit einer doppelt verketteten Liste beschrieben worden ist, ist keine doppelt verkettete Liste erforderlich.
  • Die Leitungssegment-Datenstruktur 420 weist auch einen Verweis auf eine das Leitungssegment enthaltende Elternleitung (ELTERNLEITUNG) und einen Verweis (VERZWEIGUNG) auf eine Verzweigungs-Datenstruktur auf, die von Bedeutung ist, wenn eine offene Endseite des gegenwärtigen Leitungssegments eine seitliche Seite einer anderen Leitung berührt, um eine Verzweigung zu bilden. Der Inhalt einer Verzweigungs-Datenstruktur wird unten noch beschrieben. Verzweigungs-Datenstrukturen werden für Leitungssegmente, die keine Verzweigung aufweisen, nicht angelegt, um Speicher zu sparen.
  • 4D zeigt den Inhalt einer Leitungs-Datenstruktur 430. Die Leitungs-Datenstruktur 430 enthält die Angabe eines Verweises auf ein Elternpolygon (ELTERNPOLYGON) und eine Zweignummer (ZWEIGNUMMER), die die Leitung angibt. Die Leitungs-Datenstruktur 430 gibt auch eine Begrenzungsbox (bounding box–BBX) an, die alle Leitungssegmente der Leitung umfaßt. Eine Begrenzungsbox erlaubt schnelle Bereichsabfragenüberprüfungen, so daß auch dann, wenn eine Leitung von einer Bereichsabfrage ermittelt wird, kein Segment in der Leitung überprüft zu werden braucht, wenn sich kein Leitungssegment in der Leitung nahe genug am Abfragepunkt befindet. Gemäß einem Ausführungsbeispiel der Erfindung wird eine Begrenzungsbox (BBX) als vier ganzzahlige Werte implementiert, die der linken, unteren, rechten und oberen Koordinate der Begrenzungsbox entsprechen.
  • Die Leitungs-Datenstruktur 430 weist auch je einen Verweis auf das erste Leitungssegment (ERSTES LEITUNGSSEGMENT) und das letzte Leitungssegment (LETZTES LEITUNGSSEGMENT) in der Leitung und ebenso je einen Verweis auf eine mit dem ersten Ende verbundene Leitung (MIT ERSTEM ENDE VERBUNDENE LEITUNG) und eine mit dem zweiten Ende verbundene Leitung (MIT ZWEITEM ENDE VERBUNDENE LEITUNG) auf.
  • 4E zeigt den Inhalt einer Polygon-Datenstruktur 440, die eine Begrenzungsbox (BBX) und ein Feld mit Zweignummern (FELD MIT ZWEIGNUMMERN) angibt, das alle in einem Polygon beinhalteten Leitungen durch ihre Zweignummern angibt, wie oben im Hinblick auf die Leitungs-Datenstruktur 430 beschrieben. Gemäß einem Ausführungsbeispiel der Erfindung weist die Polygon-Datenstruktur 440 auch einen Verweis auf die entsprechende Prozeßschicht (SCHICHT) für das Polygon und eine Polygonnummer (POLYGONNUMMER) auf, die zur eindeutigen Kennzeichnung des Polygons verwendet wird. Beispielsweise kann diese Information mit einer Liste verwendet werden, die alle Polygone für eine bestimmte Prozeßschicht angibt.
  • 4F zeigt den Inhalt einer Verzweigungs-Datenstruktur 450, die verwendet wird, wenn gemäß einem Ausführungsbeispiel der Erfindung ein Zweig in einem Polygon gebildet wird. Ein Zweig wird gebildet, wenn eine offene Endseite eines Leitungssegments eine seitliche Seite einer anderen Leitung berührt. Die Verzweigungs-Datenstruktur 450 gibt einen Verweis auf das Eltern-Leitungssegment (ELTERN-LEITUNGSSEGMENT) und Verweise auf andere Leitungssegmente an, die mit dem ersten Ende (ENDE1-ZWEIG) bzw. dem zweiten Ende (ENDE2-ZWEIG) des Leitungssegments verbunden sind. Die Verzweigungsstruktur 450 weist auch je einen Verweis auf den ersten und den letzten linken Zweig (ERSTER LINKER ZWEIG, LETZTER LINKER ZWEIG) und den ersten und den letzten rechten Zweig (ERSTER RECHTER ZWEIG, LETZTER RECHTER ZWEIG), die von einem Leitungssegment abgehen, auf. Das heißt, daß diese Datenstrukturelemente auf eine Seitenabzweigungsstruktur verweisen, wenn ein bestimmtes Leitungssegment andere Leitungssegmente aufweist, die sich an einer der Seiten des Leitungssegments mit diesem schneiden. Gemäß einem Ausführungsbeispiel der Erfindung kann jedwede Anzahl von Zweigen mit einer seitlichen Seite eines Leitungssegments verbunden werden, aber die Endseite einer Leitung kann nur mit einem einzigen anderen Leitungssegment verbunden werden.
  • 4G zeigt den Inhalt einer Seitenabzweigungsstruktur 460, die je einen Verweis sowohl auf ein Leitungssegment (ANDERES LEITUNGSSEGMENT), das Teil des mit dem Eltern-Leitungssegment verbundenen Zweigs ist, als auch auf das Liniensegment (ELTERN-LINIENSEGMENT) in dem Eltern-Leitungssegment angibt, an das das andere Leitungssegment angeschlossen ist. Die Seitenabzweigungs-Struktur 460 gibt auch an, ob das andere Leitungssegment an der linken Seite des Eltern-Leitungssegments anschließt, und zwar auf Grundlage eines Boole'schen Anzeigers (AN LINKER KANTE). Die Seitenabzweigungs-Struktur 460 weist auch je einen Verweis auf die Datenstrukturen für den nächsten Seitenzweig (NÄCHSTER SEITENZWEIG) und den vorherigen Seitenzweig (VORHERIGER SEITENZWEIG) und auch auf den ersten Seitenpunkt (ERSTER SEITENPUNKT) und den zweiten Seitenpunkt (ZWEITER SEITENPUNKT) auf, die die Orte auf dem Eltern-Leitungssegment angeben, an denen das andere Leitungssegment anknüpft. Die Seitenpunkte sind beim Sortieren der Seitenzweiglisten hilfreich; der erste Seitenpunkt ist näher am Ende1 des Eltern-Leitungssegments.
  • Die oben erwähnten Datenstrukturen werden nun mit Hinweis auf 5 und ein aus drei Leitungen, LEITUNG A, LEITUNG B und LEITUNG C, gebildetes Polygon 500 gemäß einem Ausführungsbeispiel der Erfindung beschrieben. Jede Leitung, LEITUNG A, LEITUNG B und LEITUNG C, besteht aus einem einzigen Leitungssegment, bezeichnet mit LEITUNGSSEGMENT A, LEITUNGSSEGMENT B und LEITUNGSSEGMENT C.
  • Das LEITUNGSSEGMENT A ist aus zwei gerichteten Liniensegmenten a1 und a2 gebildet, die beide in die Richtung (oben) gerichtet sind, wie durch die Richtungspfeile angezeigt. Das LEITUNGSSEGMENT B ist aus gerichteten Liniensegmenten b1 und b2 gebildet, die beide in die Richtung (links) gerichtet sind. Die LEITUNG B ist mit der LEITUNG A bei dem gerichteten Liniensegment a1 an einem durch die Punkte d1 und d2 definierten Ort zusammengefügt. Das LEITUNGSSEGMENT C ist aus gerichteten Liniensegmenten c1 und c2 gebildet, die beide in die Richtung (rechts) gerichtet sind. Die LEITUNG C vereinigt sich mit LEITUNG A bei dem gerichteten Liniensegment a1 an einer durch die Punkte e1 und e2 definierten Stelle. Begrenzungsboxen BBXA , BBXB , BBXC definieren den Inhalt von LEITUNG A, LEITUNG B bzw. LEITUNG C, und eine Begrenzungsbox BBXp definiert den Inhalt des Polygons 500.
  • Gemäß einem Ausführungsbeispiel der Erfindung weisen alle Leitungen in einem Polygon eine gemeinsame logische Zuordnung auf. Beispielsweise können, bei einem bestimmten Polygon, alle Leitungen physisch zusammenhängend sein und gemeinsame elektrische Eigenschaften aufweisen. Bei einem anderen Polygon brauchen die Leitungen nicht eine gemeinsame physische Zuordnung aufzuweisen, aber sie können elektrisch verbunden sein, wie dies beispielsweise bei einer Gruppe von Kontakten der Fall ist. Andererseits kann ein Satz Leitungen auch logisch in ein Polygon gruppiert werden, weil es bequem ist, diese Leitungen ein einziges, gemeinsames Polygon einnehmen zu lassen. Beispielsweise können, auch wenn sie nicht physisch oder elektrisch miteinander in Beziehung stehen, alle Polysilizium-Gates (polysilicon gates) einer Diffusionsinsel in ein einziges Polygon aufgenommen werden, weil ist bequem ist, alle Polysilizium-Gates einer Diffusionsinsel zusammen zu verarbeiten.
  • Der Satz von Datenstrukturen, die zur Repräsentation des Polygons 500 gemäß einem Ausführungsbeispiel der Erfindung erzeugt werden, ist in 6A6E gezeigt. 6A zeigt eine Polygon-Datenstruktur 600 für das Polygon 500. Die Polygon-Datenstruktur 600 gibt an, daß das Polygon 500 drei Leitungen enthält: LEITUNG A, LEITUNG B und LEITUNG C. Die Polygon-Datenstruktur 600 gibt auch an, daß das Polygon 500 Diffusionsschicht-Geometriestrukturen repräsentiert und die Polygonnummer 1 hat.
  • Eine Leitungs-Datenstruktur 610 wird für die LEITUNG A erzeugt. Auf ähnliche Weise werden Leitungs-Datenstrukturen 620, 630 für die LEITUNGEN B bzw. C erzeugt. Eine Leitungssegment-Datenstruktur 640 wird für das LEITUNGSSEGMENT A erzeugt. Eine Leitungssegment-Datenstruktur 650 wird für das LEITUNGSSEGMENT B erzeugt. Schließlich wird eine Leitungs-Datenstruktur 660 für das LEITUNGSSEGMENT C erzeugt. Auf ähnliche Weise werden Verzweigungs-Datenstrukturen 660, 670 und 680 für jedes Leitungssegment erzeugt. Zusätzlich werden zwei Seitenzweig-Datenstrukturen 690 und 695 für das LEITUNGSSEGMENT A erzeugt, weil LEITUNG B und LEITUNG C entlang der gerichteten Kante a1 von LEITUNG A mit LEITUNG A verbunden sind.
  • 7 zeigt ein Polygon 700, das aus zwei Leitungen 702 und 704 gemäß einem Ausführungsbeispiel der Erfindung gebildet ist. Die Leitungen 702 und 704 sind aus einem Satz Leitungssegmente gebildet, die jeweils aus einem Paar gerichteter Liniensegmente gebildet sind. Die Richtung der gerichteten Liniensegmente ist durch Pfeile 706 angegeben.
  • Das Polygon 700 weist mehrere unterschiedliche Arten von IC-Layout-Geometriestrukturen auf; die unter Verwendung von Leitungssegmenten gebildet sind, welche, gemäß einem Ausführungsbeispiel der Erfindung, entweder Polysilizium- oder Metallschicht-Gometriestrukturen repräsentieren. Eine Kontakteinfassung 708 ist über einen Hin-und-her-führenden Pfad 710 mit der Leitung 704 verbunden. Die Leitung 704 weist eine achteckige Kontakteinfassung 712 auf, die aus drei Leitungssegmenten 714, 715 und 716 gebildet ist. Gemäß einem Ausführungsbeispiel der Erfindung, und wie durch die Leitungssegmente 714 und 716 veranschaulicht, brauchen gerichtete Liniensegmente, die zur Konstruktion eines Leitungssegments verwendet werden, nicht parallel zu sein oder Endpunkte zu haben, die mit benachbarten Segmenten zusammenfallen. Dieser Aspekt der Erfindung gestattet die Konstruktion einer breiten Vielfalt von IC-Layout-Geometriestrukturen.
  • 8 zeigt eine IC-Layout-Diffusionsinsel 800, die gemäß einem Ausführungsbeispiel der Erfindung aus Leitungssegmenten gebildet ist. Die Diffusionsinsel 800 weist Diffusionsbereiche 802 auf, die Diffusionsgeometriestrukturen darstellen. Die Diffusionsinsel 800 weist auch Polysiliziumbereiche 804 auf, die Polysiliziumgeometriestrukturen darstellen. Die Diffusionsinsel 800 weist auch eine Reihe Kontakte 806 auf. Schließlich weist die Diffusionsinsel 800 einen Senkenverbindungsteil (well tie) 808 auf, der einen Kontakt 810 umfaßt.
  • Die Diffusionsinsel 800 wird durch drei Polygone repräsentiert. Trotz der unregelmäßigen Gestalt der Diffusionsinsel 800 enthält ein Polygon alle Diffusionsbereiche 802 und ist aus einem Leitungssegment 812, einem Leitungssegment 814 und einem Leitungssegment 816 gebildet. Ein weiteres Polygon enthält alle Polysiliziumbereiche 804 und ist aus vier Leitungen gebildet, eine für jedes Polysilizium-Gate. Ein weiteres Polygon enthält alle Kontakte 806 und auch den in dem Senkenverbindungsteil 808 enthaltenen Kontakt 810. Die Kontakte 806 können wegen ihrer gemeinsamen elektrischen Eigenschaften in einem einzigen Polygon definiert werden, oder sie können, als Alternative, als separate Polygone definiert werden. Beispielsweise können, wenn ein Polysilizium-Gate mehr als einen Kontakt auf einer Seite aufweist, die Kontakte auf dieser Seite als ein Polygon, mit einer Leitung pro Kontaktbereich (Rechteck/Achteck etc.), repräsentiert werden.
  • 3) Verwendung von Datenstrukturen während der IC-Layout-Synthese
  • Gemäß einem Ausführungsbeispiel der Erfindung werden die oben beschriebenen Datenstrukturen während der IC-Layout-Synthese verwendet, um zu überprüfen, daß bestimmte Eigenschaften eines Layouts, wie beispielsweise Polygonbreiten, Abstände und Kontaktumfassungen, vorbestimmte Entwurtsregeln erfüllen. Das Konzept der kanonischen Richtung wie hier beschrieben ist ein wichtiger Aspekt dieser Art von Überprüfung, weil es dazu beiträgt, die in dem Layout benötigte Anzahl vollständiger Überprüfungen zu minimieren. Im Zusammenhang mit der IC-Layout-Überprüfung bezieht sich eine vollständige Prüfung auf den Vorgang, alle Seiten eines Polygons hinsichtlich eines anderen in dem IC-Layout enthaltenen Objekts zu prüfen, im Gegensatz beispielsweise zur Überprüfung nur der dem anderen Objekts nächsten Seite des Polygons.
  • a. Bestimmen der kanonischen Richtung von einem Liniensegment zu einem Punkt
  • Gemäß einem Ausführungsbeispiel der Erfindung werden bis zu drei Halbebenen-Überprüfungen verwendet, um die kanonische Richtung von einem gerichteten Liniensegment zu einem beliebigen Punkt zu bestimmen. Die erste Halbebenen-Überprüfung bestimmt, ob sich der beliebige Punkt links, rechts oder überhalb des gerichteten Liniensegments befindet. Die zweite Halbebenen-Überprüfung bestimmt, ob sich der beliebige Punkt über oder unter dem ersten Endpunkt des gerichteten Liniensegments befindet. Die dritte Halbebenen-Überprüfung bestimmt, ob sich der beliebige Punkt über oder unter dem zweiten Endpunkt des gerichteten Liniensegments befindet. Indem die Ergebnisse der drei Halbebenen-Überprüfungen ausgewertet werden, wird jede Unklarheit hinsichtlich des Orts des beliebigen Punkts bezüglich des gerichteten Liniensegments aufgelöst.
  • Jede Halbebenen-Überprüfung beinhaltet die Berechnung des inneren Produkts (dot product) des beliebigen Punkts bezüglich des gerichteten Liniensegments. Ein Liniensegment, das die Grenze der Halbebene darstellt, wird um 90° gegen den Uhrzeigersinn gedreht, und der beliebige Punkt wird auf das neue Liniensegment projiziert. Das Vorzeichen des inneren Produkts gibt dann an, ob sich der beliebige Punkt links von der Halbebenengrenze(+1), auf der Grenze (0) oder rechts von der Grenze (–1) befindet. Die drei Halbebenengrenzen sind das ursprüngliche Liniensegment, ein durch den ersten Endpunkt verlaufendes und um 90° gedrehtes Liniensegment, und ein durch den zweiten Endpunkt verlaufendes und um 90° gedrehtes Liniensegment.
  • Beispielsweise zeigt 9A ein gerichtetes Liniensegment 900, das durch einen ersten Endpunkt 902 und einen zweiten Endpunkt 904 definiert ist. Die Bereiche um das gerichtete Liniensegment 900 entsprechen dem Orientierungsschlüssel 100 von 1. Genauer definiert der Bereich 906 einen Bereich, der sich im. Hinblick auf das gerichtete Liniensegment 900 oben (oben) befindet. Der Bereich 908 definiert einen Bereich, der sich oben und rechts (oben, rechts) des gerichteten Liniensegments 900 befindet. Der Bereich 910 definiert einen Bereich, der sich hinsichtlich des gerichteten Liniensegments 900 rechts (rechts) befindet. Der Bereich 912 definiert einen Bereich, der sich unterhalb und rechts (unten, rechts) des gerichteten Liniensegments 900 befindet. Der Bereich 914 definiert einen Bereich, der sich im Hinblick auf das gerichtete Liniensegment 900 unten (unten) befindet. Der Bereich 916 definiert einen Bereich, der sich unterhalb und links (unten, links) des gerichteten Liniensegments 900 befindet. Der Bereich 918 definiert einen Bereich, der sich links vom gerichteten Liniensegment 900 befindet. Schließlich definiert der Bereich 920 einen Bereich, der sich oberhalb und links (oben, links) des gerichteten Liniensegments 900 befindet.
  • Um die kanonische Richtung zwischen einem beliebigen Punkt 925 und dem gerichteten Liniensegment 900 zu bestimmen, werden bis zu drei Halbebenen-Überprüfungen verwendet. Die erste Halbebenen-Überprüfung bestimmt, ob sich der Punkt 925 links, rechts oder über dem gerichteten Liniensegment 900 befindet. Wie in 9A gezeigt, befindet sich der Punkt 925 links von dem gerichteten Liniensegment 900. Dies heißt, daß nach Beendigung der ersten Halbebenen-Überprüfung der Punkt 925 in den Bereichen 916, 918 oder 920 gelegen sein kann.
  • Die zweite Halbebenen-Überprüfung bestimmt, ob sich der Punkt 925 über oder unter dem ersten Endpunkt 902 des gerichteten Liniensegments 900 befindet. Das Ergebnis der zweiten Halbebenen-Überprüfung zeigt an, daß sich der Punkt 925 über dem ersten Endpunkt 902 befindet, was bedeutet, daß der Punkt 925 nicht in dem Bereich 916 gelegen sein kann und entweder. im Bereich 918 oder im Bereich 920 gelegen sein muß. Die dritte Halbebenen-Überprüfung bestimmt, ob sich der Punkt 925 über oder unter dem zweiten Endpunkt 904 befindet. Wie dargestellt, zeigt die dritte Halbebenen-Überprüfung an, daß sich der Punkt 925 unter dem zweiten Endpunkt 904 befindet, was heißt, daß der Punkt 925 in dem Bereich 918, oder links vom gerichteten Liniensegment 900, gelegen sein muß.
  • b. Bestimmen der kanonischen Richtung von einem Leitungssegment zu einem Punkt
  • Um Abstandsüberprüfungen während der IC-Layout-Prüfung auszuführen, müssen Abstände zwischen Polygonen bestimmt und dann mit den von den angewandten Entwurfsregeln geforderten Mindestzwischenräumen verglichen werden. Typischerweise wird eine Abstandsüberprüfung zwischen einem Polygon und einem ausgewählten Punkt auf einem anderen Polygon ausgeführt.
  • Gemäß einem Ausführungsbeispiel der Erfindung wird ein Verfahren bereitgestellt, um die kanonische Richtung von einem Leitungssegment zu einem Punkt zu bestimmen, so daß höchstens nur zwei Seiten eines Polygons hinsichtlich des Punkts überprüft werden müssen. Bis zu vier Überprüfungen der kanonischen Richtung von Segmentseiten zu dem beliebigen Punkt werden ausgeführt, um die kanonische Richtung von einem Leitungssegment zu einem Punkt zu bestimmen und um jedwede Unsicherheit aufzulösen, die der Frage zuzuordnen ist, ob sich der Punkt innerhalb oder außerhalb des Leitungssegments befindet.
  • 9B zeigt ein Leitungssegment 952, das durch eine linke Seite 956, eine rechte Seite 958, eine erste Endseite 960 und eine zweite Endseite 962 definiert wird. Die Bereiche um das Leitungssegment 952 entsprechen dem Orientierungsschlüssel 100 von 1. Genauer definiert der Bereich 964 einen Bereich, der sich im Hinblick auf das Leitungssegment 952 oben (oben) befindet. Der Bereich 966 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 952 oben und rechts (oben, rechts) befindet. Der Bereich 968 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 902 rechts (rechts) befindet. Der Bereich 970 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 952 unten und rechts (unten, rechts) befindet. Der Bereich 972 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 952 unten (unten) befindet. Der Bereich 974 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 952 unten und links (unten, links) befindet. Schließlich definiert der Bereich 976 einen Bereich, der sich im Hinblick auf das Leitungssegment 952 links (links) befindet. Der Bereich 978 definiert einen Bereich, der sich im Hinblick auf das Leitungssegment 952 oben und links (oben, links) befindet.
  • Zum Beispiel sei die kanonische Richtung von dem Leitungssegment 952 zu einem Punkt 980 zu bestimmen. Eine erste kanonische Richtungsüberprüfung von Punkt 980 im Hinblick auf die linke Seite 956 wird durchgeführt, um zu bestimmen, ob sich der Punkt 980 links, rechts oder oberhalb der linken Seite 956 befindet. In dieser Situation zeigt die erste kanonische Richtungsüberprüfung an, daß sich der Punkt 980 rechts von der linken Seite 956 befindet. Somit muß sich der Punkt 980, basierend auf den Ergebnissen der ersten kanonischen Richtungsüberprüfung, im Bereich 964, 966, 968, 970, 972 oder innerhalb des Leitungssegments 952 befinden.
  • Eine zweite kanonische Richtungsüberprüfung von Punkt 980 im Hinblick auf die rechte Seite 958 wird durchgeführt, um zu bestimmen, ob sich der Punkt 980 links, rechts oder über der rechten Seite 958 befindet. In dieser Situation zeigt die zweite kanonische Richtungsüberprüfung an, daß sich der Punkt 980 links von der rechten Seite 958 befindet. Somit muß der Punkt 980, basierend auf den Ergebnissen der ersten und der zweiten ausgeführten. kanonischen Richtungsüberprüfung, in den Bereichen 964, 972 oder innerhalb des Leitungssegments 952 gelegen sein.
  • Eine dritte kanonische Richtungsüberprüfung des Punkts 980 im Hinblick auf die erste Endseite 960 wird ausgeführt, um zu bestimmen, ob sich der Punkt 980 links, rechts oder über der ersten Endseite 960 befindet. In dieser Situation zeigt die dritte kanonische Richtungsüberprüfung an, daß sich der Punkt 980 links von der ersten Endseite 960 befindet. Daher muß, basierend auf den Ergebnissen der drei kanonischen Richtungsüberprüfungen, der Punkt 980 im Bereich 972, oder (unten) im Hinblick auf das Leitungssegment 952, gelegen sein.
  • Für das spezielle gerade beschriebene Szenario waren nur drei kanonische Richtungsüberprüfungen erforderlich, um die kanonische Richtung von einem Leitungssegment zu einem Punkt eindeutig zu bestimmen. In manchen Situationen ist jedoch eine vierte kanonische Richtungsüberprüfung erforderlich, um die kanonische Rich tung zwischen einem Leitungssegment und einem Punkt endgültig zu bestimmen. Wenn beispielsweise die dritte kanonische Richtungsüberprüfung des Punkts 980 im Hinblick auf die erste Endseite 960 anzeigt, daß sich der Punkt 980 rechts von der ersten Endseite 960 befindet, dann ist eine vierte kanonische Richtungsüberprüfung des Punkts 980 im Hinblick auf die zweite Endseite 962 erforderlich, um zu bestimmen, ob sich der Punkt 970 in dem Bereich 964 oder innerhalb des Leitungssegments 952, oder auf ihm, befindet.
  • Die kanonische Richtung von den Leitungssegmentseiten zu dem beliebigen Punkt 980 wird verwendet, um sicherzustellen, daß die Bereiche 964, 966, 968, 970, 972, 974, 976 und 978 sich nicht verengen, wenn der Abstand des beliebigen Punkts 980 zum Leitungssegment 952 zunimmt. Dies kann immer dann geschehen, wenn der Winkel zwischen zwei benachbarten Seiten größer als 90° ist.
  • c. Abstandsüberprüfungen
  • Gemäß einem Ausführungsbeispiel der Endung wird eine Vorgehensweise zum Ausführen von Abstandsüberprüfungen zwischen Polygonen, die unter Verwendung von Leitungssegmenten und kanonischen Richtungen erzeugt worden sind, bereitgestellt. 10 zeigt ein IC-Layout 1000, das eine Diffusionsinsel 1002 und eine Diffusionsinsel 1004 enthält. Die Diffusionsinsel 1002 weist ein Polygon 1005 auf, das eine Diftusionsgeometriestruktur darstellt und das aus einem einzigen Leitungssegment gebildet ist. Auf ähnliche Weise weist die Diffusionsinsel 1004 ein Polygon 1009 auf, das Diffusionsgeometriestruktur repräsentiert und das aus einem einzigen Leitungssegment gebildet ist.
  • Gemäß einem Ausführungsbeispiel der Erfindung wird eine Abstandsüberprüfung zwischen parallelen, überlappenden Seiten von Leitungssegmenten dadurch durchgeführt, daß der orthogonale Abstand zwischen den Leitungen mit dem von den anwendbaren Entwurfsregeln geforderten Mindestabstand verglichen wird. Beispielsweise beinhaltet das Ausführen einer Abstandsüberprüfung zwischen dem Polygon 1005 und dem Polygon 1009 das Berechnen eines orthogonalen Abstands zwischen Punkten a1 und a2 auf einem gerichteten Liniensegment a und Punkten b1 und b2 auf einem Liniensegment b, und dann das Vergleichen des berechneten Abstands mit dem durch die Entwurfsregeln angegebenen Mindestabstand. Wenn der berechnete Abstand den durch die Entwurfsregeln angegebenen Mindestabstand nicht erfüllt, dann muß eines der Polygone 1005 oder 1009 verschoben werden. Wenn beispielsweise der Abstand zwischen dem Polygon 1005 und dem Polygon 1009 den durch die Entwurfsregeln angegebenen Mindestabstand nicht erfüllt, dann kann das Polygon 1005 nach unten bewegt werden, um den Abstand zwischen dem Polygon 1005 und dem Polygon 1009 zu vergrößern. Als Alternative kann das Polygon 1009 in die Richtung nach oben bewegt werden.
  • Zum Berechnen des Abstands zwischen nicht-überlappenden Leitungen werden die nächstliegenden Ecken zwischen den beiden Leitungen verwendet, und statt eines orthogonalen Abstands wird ein nicht-orthogonaler oder Manhattan-Abstand verwendet. Der Begriff Manhattan-Abstand bezeichnet einen Abstand, bei dem jede Einheit eine Einheit weit in der X-Richtung und eine Einheit weit in der Y-Richtung ist. Der sich ergebende Richtungsvektor ist dann einer der Vektoren (oben, links), (oben, rechts), (unten, rechts) oder (unten, links). Wenn der Abstand den durch die Entwurfsregeln angegebenen Mindestabstand nicht erfüllt, dann wird eines der Polygone in eine Richtung bewegt, die den beiden gegenüberliegenden Seiten einer der Ecken entgegengesetzt ist.
  • Beispielsweise werde in 10 eine Diffusions-nach-Polysilizium-Abstandsüberprüfung zwischen Punkt b1 auf dem Polygon 1009 und Punkt c1 auf einem Polygon 1010 durchgeführt. Wenn der Abstand zwischen den Punkten b1 und c1 den durch die Entwurfsregeln angegebenen Mindestabstand nicht erfüllt, dann wird das Polygon 1010 in die Richtung (unten, links) bewegt, weil eine der nächsten Seiten 1014 des Polygons 1010 nach oben gerichtet ist und die andere der nächstliegenden Seiten 1016 nach rechts gerichtet ist. Auf ähnliche Weise könnte das Polygon 1009 in die Richtung (oben, rechts) bewegt werden.
  • Sobald eine Abstandsverletzung erkannt worden ist und die Richtung bestimmt worden ist, in die eines der Polygone bewegt werden muß, um die Entwurfsregeln zu erfüllen, muß die Strecke bestimmt werden, um die das Polygon bewegt werden muß, um die Mindestabstandsanforderungen zu erfüllen. Gemäß einem Ausführungsbeispiel der Erfindung wird eine neue Vorgehensweise zum Bestimmen der Strecke bereitgestellt, um Layoutgeometriestrukturen zum Erfüllen einer Abstandsanforderung neu anzuordnen. Allgemein beinhaltet die Vorgehensweise das Erzeugen einer "Ausschlußzone" um die Layoutgeometriestruktur, um den Mindestabstand zu definieren, der zwischen dieser Layoutgeometriestruktur und anderen Layoutgeometriestrukturen beibehalten werden muß, um den von den Entwurfsregeln geforderten Mindestabstand zu erfüllen. Diese Vorgehensweise hängt nicht von irgendeiner besonderen Datenstrukturarchitektur ab. Wenn sich ein Punkt, der Teil der anderen Geometriestrukturen ist, innerhalb der Ausschlußzone befindet, dann besteht eine Abstandsübertretung.
  • Wie in 11 dargestellt, ist ein Leitungssegment 1100 zumindest teilweise aus zwei gerichteten Liniensegmenten 1102 und 1104 gebildet, die sich in einem Punkt 1105 treffen. Um die Ausschlußzone zu bilden, werden zwei Linien 1106 und 1108 entlang der Richtungsvektoren der Liniensegmente 1102 und 1104 erzeugt, und zwar so von den gerichteten Liniensegmenten 1102, 1104 getrennt, daß die Entwurfsregeln erfüllt werden. Die Linien 1106 und 1108 werden durch eine Bewegung nach außen vom Punkt 1105 aus in eine Richtung, die senkrecht zur Richtung der gerichteten Liniensegmente 1102 und 1104 ist, gebildet. Wenn die gerichteten Liniensegmente 1102 und 1104 senkrecht aufeinander stehen, dann wird eine dritte Linie 1110 konstruiert, die die Linien 1106 und 1108 verbindet. Die Linien 1106, 1108 und 1110 bilden eine Ausschlußzone 1112 um das Leitungssegment 1100. Wenn die gerichteten Liniensegmente 1102 und 1104 orthogonal sind, beruht die Anordnung der Linien 1106 und 1108 im Hinblick auf die gerichteten Liniensegmente 1102 und 1104 auf dem kartesischen Breiten-, Abstands- oder Umfassungswert. Die Anordnung der dritten Linie 1110 beruht auf der Manhattan-Breite, dem Manhattan-Abstand oder den Manhattan-Umfassungen, wie von den Entwurfsregeln angegeben. In dem Maße, wie die Regel hinsichtlich der Manhattan-Breite, des Manhattan- Abstands oder der Manhattan-Umfassungen im Verhältnis zur kartesischen Regel zunimmt, bewegt sich die Linie 1110 von dem Leitungssegment 1100 nach außen, während die Linien 1106 und 1108 an ihren Stellen verbleiben. Im Grenzfall kann sich die Linie 1110 bis zu dem Schnittpunkt der Linien 1106 und 1108 nach außen bewegen.
  • Wenn andererseits die gerichteten Liniensegmente 1102 und 1104 nicht-orthogonal sind, basiert die Anordnung der Linien 1106 und 1108 im Hinblick auf die gerichteten Liniensegmente 1102 und 1104 auf dem kartesischen Breiten-, Abstands- oder Umfassungswert dividiert durch die Quadratwurzel von zwei und aufgerundet auf den nächsten ganzzahligen Wert, um den Manhattan-Abstand bereitzustellen, der zum Erreichen des geforderten kartesischen Abstands erforderlich ist.
  • Die Vorgehensweise zum Neu-Anordnen eines Leitungssegments, um gemäß einem Ausführungsbeispiel der Erfindung eine Abstandsanforderung zu erfüllen, wird nun unter Hinweis auf das Flußdiagramm von 12 beschrieben. Nach dem Start in Schritt 1200 werden in Schritt 1202 zwei Linien 1106 und 1108 entlang der Richtungsvektoren der beiden Liniensegmente, die das Leitungssegment bilden, konstruiert. In Schritt 1204 wird bestimmt, ob die gerichteten Liniensegmente 1102, 1104 zueinander senkrecht stehen. Falls dies der Fall ist, dann wird in Schritt 1206 bestimmt, ob die gerichteten Liniensegmente 1102, 1104 orthogonal sind. Wenn die gerichteten Liniensegmente 1102, 1104 sowohl senkrecht aufeinander stehen als auch orthogonal sind, dann wird in Schritt 1208 der Manhattan-Abstand verwendet, um eine dritte Linie 1110 im Hinblick auf die beiden konstruierten Linien anzuordnen.
  • Wenn andererseits in Schritt 1204 festgestellt wurde, daß die gerichteten Liniensegmente 1102, 1104 nicht senkrecht aufeinander stehen, dann umfaßt die Ausschlußzone die gerichteten Liniensegmente 1106 und 1108, und der Vorgang ist in Schritt 1214 abgeschlossen. Wenn jedoch in Schritt 1206 festgestellt wurde, daß die gerichteten Liniensegmente 1102, 1104 nicht orthogonal sind, dann wird in Schritt 1210 der Ort der dritten Linie 1110 im Hinblick auf die ersten beiden konstruierten Linien auf Grundlage des von den Entwurfsregeln angegebenen kartesischen Mindestabstands (Produkt der Quadratwurzel von 2 – SQRT(2) – und des Manhattan-Abstands, aufgerundet) festgelegt.
  • Dann wird in Schritt 1212 die dritte Linie 1110 konstruiert und zwischen den gerichteten Liniensegmenten 1102 und 1104 angeordnet. Der Vorgang ist in Schritt 1214 abgeschlossen. Diese Vorgehensweise kann auch verwendet werden, um Polygonbreiten und Kontaktumfassungen zu überprüfen und zu korrigieren.
  • d. Erzeugen von Polygonausgaben
  • Gemäß einem Ausführungsbeispiel der Erfindung wird die Fähigkeit bereitgestellt, basierend auf der hier beschriebenen Datenstrukturhierarchie Polygonausgaben zu erzeugen. Diese Vorgehensweise erzeugt weniger Polygone als die alternative Vorgehensweise, ein Polygon für jedes Leitungssegment zu erzeugen. Die Erzeugung weniger Polygone verringert den Zeitaufwand, der zum Ausführen von Analyseprogrammen wie beispielsweise Entwurfsregelüberprüfungen, Schaltungsextraktion und Maskenherstellung erforderlich ist. In dem Umfeld von Programmpaketen zum computergestützten Entwerten können weniger Polygone auch das Betrachten eines Layouts vereinfachen, weil sich weniger Polygone auf dem Bildschirm befinden. Allgemein umfaßt die Vorgehensweise das Auswerten der Leitungssegment-Datenstrukturen für jede Leitung, um kollineare Punktesätze zu identifizieren, die dann kombiniert werden, um die Anzahl der Polygone zu verringern. Gemäß einem Ausführungsbeispiel der Erfindung werden die linken Seiten zusammenhängender Leitungssegmente ausgewertet, und dann werden die rechten Seiten der gleichen zusammenhängenden Leitungssegmente ausgewertet.
  • Beispielsweise zeigt 13A eine Leitung 1300, die aus drei zusammenhängenden Leitungssegmenten 1302, 1304 und 1306 gemäß einem Ausführungsbeispiel der Erfindung gebildet ist. Die linke Seite des Leitungssegments 1302 ist durch ein gerichtetes Liniensegment A definiert, das seinerseits durch Endpunkte a1 und a2 definiert ist. Die linke Seite des Leitungssegments 1304 ist durch ein gerichtetes Liniensegment b definiert, das seinerseits durch Endpunkte b1 und b2 definiert ist.
  • Die linke Seite des Leitungssegments 1306 ist durch ein gerichtetes Liniensegment c definiert, das seinerseits durch Endpunkte c1 und c2 definiert ist. Um eine Polygondarstellung der Leitung 1300 gemäß einem Ausführungsbeispiel der Erfindung zu erzeugen, werden kollineare Sätze von Punkten entlang der linken und der rechten Seiten der Leitungssegmente 1302, 1304, 1306 kombiniert. Weil das gerichtete Liniensegment a kollinear mit dem gerichteten Liniensegment b ist, können die Punkte a2 und b1 eliminiert werden, wodurch im Ergebnis eine einzige linke Seite entlang den Leitungssegmenten 1302 und 1304 erzeugt wird. Auf ähnliche Weise können die Punkte b2 und c1 , da sie aufeinander liegen, durch einen einzigen Punkt ersetzt werden. 13B zeigt eine Polygonrepräsentation 1308 der Leitung 1300 von 13A, nachdem kollineare Punktesätze gemäß einem Ausführungsbeispiel. der Erfindung kombiniert worden sind.
  • Manche Verfahren zur Polygonverarbeitung definieren eine Maximalzahl von Polygonpunkten pro Polygon. In diesem Fall ist die Anzahl von Segmenten, die gemäß dieser Vorgehensweise verfolgt werden können, auf die Maximalzahl der zulässigen Polygone geteilt durch vier begrenzt. Wenn die Anzahl der Leitungssegmente für eine gegebene Leitung diese Anzahl übersteigt, dann werden zusätzliche Polygone verwendet, um diese Leitung zu repräsentieren.
  • HARDWAREÜBERSICHT
  • 14 ist ein Blockschaltbild, das ein Computersystem 1400 veranschaulicht, in dem eine Ausführungsform der Erfindung implementiert werden kann. Das Computersystem 1400 weist einen Bus 1402 oder einen anderen Kommunikationsmechanismus zum Übermitteln von Informationen und einen mit dem Bus 1402 gekoppelten Prozessor 1404 zum Verarbeiten von Informationen auf. Das Computersystem 1400 umfaßt auch einen Hauptspeicher 1406, wie beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM) oder eine andere dynamische Speichereinrichtung, der mit dem Bus 1402 gekoppelt ist, um Informationen und Befehle, die vom Prozessor 1404 ausgeführt werden sollen, zu speichern. Der Hauptspeicher 1406 kann auch verwendet werden, um während der Ausführung von Befehlen, die von dem Prozes sor 1404 ausgeführt werden sollen, temporäre Variablen und andere Zwischeninformationen zu speichern. Das Computersystem 1400 weist ferner einen Nur-Lese-Speicher (ROM) 1408 oder eine andere statische Speichereinrichtung auf, der/die mit dem Bus 1402 gekoppelt ist, um statische Informationen und Befehle für den Prozessor 1404 zu speichern. Eine Speichereinrichtung 1410, wie beispielsweise eine magnetische Platte oder optische Platte, ist vorgesehen und mit dem Bus 1402 gekoppelt, um Informationen und Befehle zu speichern.
  • Das Computersystem 1400 kann über den Bus 1402 mit einer Anzeige 1412 gekoppelt sein, beispielsweise einer Elektronenstrahlröhre (CRT – cathode ray tube), um Informationen einem Computerbenutzer anzuzeigen. Eine Eingabeeinrichtung 1414, die alphanumerische und andere Tasten aufweist, ist mit dem Bus 1402 gekoppelt, um dem Prozessor 1404 Informationen und Befehlsauswahlen zu übermitteln. Eine andere Art von Benutzereingabeeinrichtung ist eine Cursorsteuerung 1416, wie beispielsweise eine Maus, eine Rollkugel oder Cursorrichtungstasten, um Richtungsinformationen und Befehlsauswahlen an den Prozessor 1404 zu übermitteln und um die Cursorbewegung auf der Anzeige 1412 zu steuern. Diese Eingabeeinrichtung weist typischerweise zwei Freiheitsgrade in zwei Achsen auf, nämlich einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), was es der Einrichtung ermöglicht, Positionen in einer Ebene anzugeben.
  • Die Erfindung betrifft die Verwendung des Computersystems 1400 für die Repräsentation von Polygonen in einem IC-Layout. Gemäß einem Ausführungsbeispiel der Erfindung wird durch das Computersystem 1400 die Polygonrepräsentation in einem IC-Layout ansprechend darauf bereitgestellt, daß der Prozessor 1404 Sequenzen von Befehlen ausführt, die im Hauptspeicher 1406 enthalten sind. Solche Befehle können von einem anderen computerlesbaren Medium, wie beispielsweise der Speichereinrichtung 1410, in den Hauptspeicher 1406 eingelesen werden. Das computerlesbare Medium ist jedoch nicht auf Vorrichtungen wie die Speichereinrichtung 1410 beschränkt. Beispielsweise kann das computerlesbare Medium eine Diskette, eine flexible Platte, Festplatte, Magnetband oder irgendein anderes magnetisches Medium, eine CD-ROM, irgendein anderes optisches Medium, Lochkarten, Loch streifen, irgendein anderes physisches Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein FLASH-EPROM, irgendeinen anderen Speicherchip oder ein anderes Speichermodul, eine Trägerwelle wie unten beschrieben, oder irgendein anderes Medium, von dem ein Computer lesen kann, sein.
  • Die Ausführung der im Hauptspeicher 1406 enthaltenen Befehlssequenzen veranlaßt den Prozessor 1404, die oben beschriebenen Verfahrensschritte auszuführen. In Ausführungsalternativen kann eine festverdrahtete Schaltung statt oder in Kombination mit Softwarebefehlen verwendet werden, um die Erfindung zu implementieren. Daher sind Ausgestaltungen der Erfindung nicht auf irgendeine bestimmte Kombination von Hardwareschaltungen und Software beschränkt.
  • Das Computersystem 1400 weist auch eine mit dem Bus 1402 gekoppelte Kommunikationsschnittstelle 1418 auf. Die Kommunikationsschnittstelle 1418 stellt eine Datenkommunikationsverbindung in beide Richtungen mit einer Netzwerkverbindung 1420 bereit, die mit einem lokalen Netzwerk 1422 verbunden ist. Beispielsweise kann die Kommunikationsschnittstelle 1418 eine Karte für ein Digitalnetzwerk mit integrierten Diensten (ISDN) oder ein Modem sein, um eine Datenübertragungsverbindung mit einer Telefonleitung entsprechenden Typs bereitzustellen. Als weiteres Beispiel kann die Kommunikationsschnittstelle 1418 eine Karte für ein lokales Netzwerk (LAN) sein, um eine Datenkommunikationsverbindung zu einem passenden LAN bereitzustellen. Auch drahtlose Verbindungen können implementiert werden. In jeder solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 1418 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen, welche unterschiedliche Arten von Informationen darstellen.
  • Die Netzwerkverbindung 1420 sorgt typischerweise für eine Datenübermittlung über ein Netzwerk oder mehrere Netzwerke zu anderen Datenvorrichtungen. Beispielsweise kann die Netzwerkverbindung 1420 eine Verbindung über das lokale Netzwerk 1422 mit einem Hintergrundcomputer 1424 oder einer von einem Internet-Dienstleister (Internet Service Provider- ISP) 1426 betriebenen Datenausrüstung bereitstellen. Der ISP 1426 stellt seinerseits Datenübertragungsdienste über das weltweite Datenpaket-Kommunikationsnetzwerk bereit, das nun allgemein als das "Internet" 1428 bezeichnet wird. Das lokale Netzwerk 1422 und das Internet 1428 benutzen beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale über die unterschiedlichen Netzwerke und die Signale auf der Netzwerkverbindung 1420 und durch die Kommunikationsschnittstelle 1418, die die digitalen Daten an und von dem Computersystem 1400 übertragen, sind beispielhafte Formen von Trägerwellen, die die Informationen übertragen.
  • Das Computersystem 1400 kann Nachrichten senden und Daten, einschließlich Progammcode, empfangen, und zwar über das Netzwerk oder die Netzwerke, die Netzwerkverbindung 1420 und die Kommunikationsschnittstelle 1418. Bei dem Internet-Beispiel kann ein Server 1430 einen angeforderten Code für ein Anwendungsprogramm über das Internet 1428, den ISP 1426, das lokale Netzwerk 1422 und die Kommunikationsschnittstelle 1418 übertragen. Gemäß der Erfindung sorgt ein solches heruntergeladenes Anwendungsprogramm für die Repräsentation von Polygonen in einem IC-Layout, wie hier beschrieben.
  • Der empfangene Code kann von dem Prozessor 1404 beim Empfang ausgeführt werden, und/oder er kann in der Speichereinrichtung 1410 oder in einem anderen nicht-flüchtigen Speicher zur späteren Ausführung gespeichert werden. Auf diese Weise kann das Computer-System 1400 Anwendungsprogrammcode in Gestalt einer Trägerwelle erhalten.
  • Auch wenn Ausführungsbeispiele der Erfindung zum Zwecke der Veranschaulichung im Zusammenhang mit IC-Layouts, die Transistoren aufweisen, beschrieben worden sind, ist die Erfindung für IC-Layouts anwendbar, die integrierte Schaltungskomponenten oder -elemente jedweden Typs aufweisen, wie beispielsweise Widerstände, Kondensatoren, Logikgatter oder irgendeinen anderen Typ von IC-Elementen.
  • Die Erfindung liefert mehrere Vorteile gegenüber früheren Vorgehensweisen zur Repräsentation von Polygonen in einem IC-Layout. Erstens können auch die komplexesten Geometriestrukturen unter Verwendung von Leitungssegmenten repräsen tiert werden, einschließlich achteckiger Kontaktumfassungen und unregelmäßig geformter Diffusionsinseln. Auch erleichtert die Repräsentation von Polygonen unter Verwendung von Leitungssegmenten die geometrische Analyse wie beispielsweise die Abstands- und Umfassungsüberprüfung. Leitungssegmente sind für die geometrische Analyse bequem nutzbar, weil die meisten offenen Polygonkanten bekannt sind und die Breiten-, Abstands- und Umfassungsüberprüfungen nur gültig sind, wenn sie auf offene Polygonkanten angewendet werden. Viele der horizontalen Kanten in einer Datenbank mit Trapezoiden sind tatsächlich polygonintern, und die Analysesoftware muß beträchtliche Arbeit aufwenden, um die externen Kanten zu finden. Leitungssegmente können auch viele übliche Layoutformen unmittelbar repräsentieren und erlauben dadurch die einfache Implementierung komplexerer Regeln (wie beispielsweise der Ausschließungszone). Beispielsweise kann ein Polysilizium-Gate das Erfordernis aufweisen, daß seine Breite größer ist, wenn das Gate-Polygon in einem Winkel kreuzt. Weil das Gate-Polygon unmittelbar aus Leitungssegmenten gebildet ist, ist es einfach, diese Regel Segment für Segment durchzusetzen, indem die Liniensegmentrichtungen überprüft werden und indem sichergestellt wird, daß ihr Abstand größer ist, wenn ihre Winkel nicht-orthogonal sind. Die Leitungssegment-Vorgehensweise erleichtert auch eine vergleichsweise einfache elektrische Analyse wie beispielsweise eine Widerstandsüberprüfung, weil es die Verwendung von Leitungssegmenten erlaubt, den Widerstand einer Leitung schnell zu berechnen. Die Leitungssegment-Vorgehensweise ist auch gut geeignet, um in Computersoftware implementiert zu werden, weil Leitungssegmente einfach in Datenstrukturen repräsentiert werden können. Der Vorteil von Leitungssegmenten ist, daß sie in ihrer Gestalt allgemein vervendeten Layoutstrukturen viel näher kommen, so daß viel weniger von ihnen benötigt werden, um diese Strukturen zu repräsentieren, und es ist viel weniger wahrscheinlich, daß die Gestalt eines Objekts nach Sichtung von nur einer oder zwei Datenstrukturen nicht offensichtlich ist. Bei Trapezoiden und Rechtecken kann eine kleine Veränderung der Polygonform bewirken, daß die Trapezoid-Datenstrukturen die gesamte Strecke bis zur anderen Seite des Polygons verändert werden, wodurch es schwierig wird, mit dem Polygon als einer Einheit zu arbeiten.
  • In der obigen Beschreibung ist die Erfindung unter Hinweis auf spezielle Ausführungsbeispiele der Erfindung beschrieben worden. Es ist jedoch offensichtlich, daß verschiedene Modifikationen und Änderungen vorgenommen werden können, ohne den allgemeineren Geist und Bereich der Erfindung zu verlassen. Die Beschreibung und die Zeichnungen sollen demgemäß zur Veranschaulichung, und nicht als Einschränkungen, angesehen werden.

Claims (21)

  1. Ein Computersystem (1400) zum Erzeugen einer Datenrepräsentation eines Layouts einer integrierten Schaltung (IC), wobei das Computersystem (1400) aufweist: a) einen Speicher (1406); und b) einen oder mehrere mit dem Speicher (1406) gekoppelte Prozessor/en (1404), wobei der Speicher (1406) eine Reihe von Befehlen aufweist, die, wenn sie von dem einen oder den mehreren Prozessor/en (1404) ausgeführt werden, den einen oder die mehreren Prozessor/en (1404) zur Ausführung der Schritte veranlassen: i) Erzeugen von Polygondaten (440), die einem Polygon (300) zugeordnet sind, welches eine Ansammlung von durch das IC-Layout zu repräsentierenden IC-Elementen repräsentiert, wobei das Polygon (300) durch eine oder mehrere Leitung/en repräsentiert wird, wobei jede der einen oder mehreren Leitung/en durch ein oder mehrere Leitungssegment/e (302, 304) repräsentiert wird und jedes des einen oder der mehreren Leitungssegments/e (302, 304) durch zwei gerichtete Liniensegmente (306, 308) repräsentiert wird, ii) Erzeugen von Leitungsdaten (430), die sowohl die eine oder die mehreren Leitung/en repräsentieren als auch zumindest einen Verweis auf die Polygondaten (440) enthalten, gekennzeichnet durch: iii) Erzeugen von Daten (410) für gerichtete Liniensegmente, die zwei gerichtete Liniensegmente (306, 308) für jedes Leitungssegment (302, 304) repräsentieren und die eine Richtung jedes gerichteten Liniensegments (306, 308) angeben, wobei jede der einen oder der mehreren Leitung/en durch ein oder mehrere Leitungssegmente (302, 304) repräsentiert wird und jedes des einen oder der mehreren Leitungssegments/e (302, 304) durch zwei gerichtete Liniensegmente (306, 308) repräsentiert wird, (iv) Erzeugen von Leitungssegmentdaten, die sowohl das eine oder die mehreren Leitungssegment/e für jede Leitung repräsentieren als auch zumindest einen Verweis auf die Leitungsdaten enthalten, (v) Erzeugen zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, und (vi) Erzeugen zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist.
  2. Das Computersystem nach Anspruch 1, wobei die Reihe von Befehlen ferner Befehle aufweist, die, wenn sie von dem einen oder den mehreren Prozessoren (1404) ausgeführt werden, den einen oder die mehreren Prozessor/en (1404) dazu veranlassen, den Schritt auszuführen, Daten (410) für gerichtete Liniensegmente zu erzeugen, die für jedes gerichtete Liniensegment (306, 308) eine Veränderung von ersten Koordinaten für eine Veränderung von zweiten Koordinaten angeben.
  3. Das Computersystem nach Anspruch 1, wobei der Schritt des v) Erzeugens zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, den Schritt umfaßt, für jede in den Leitungssegmentdaten (420) repräsentierte Leitung einen Verweis in den Polygondaten (440) zu erzeugen, der auf Daten in den diese Leitung repräsentierenden Leitungsdaten (430) verweist, und der Schritt des vi) Erzeugens zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist, den Schritt umfaßt, für jede der einen oder der mehreren Leitung/en einen Verweis in den Leitungsdaten (430) zu erzeugen, der sowohl auf das erste als auch auf das letzte in der Leitung enthaltene Leitungssegment verweist.
  4. Das Computersystem nach Anspruch 1, wobei die Reihe von Befehlen ferner Befehle aufweist, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessor/en veranlassen, den Schritt des Erzeugens von Zweigdaten (450) auszuführen, die Leitungssegmente angeben, welche verbundenen Leitungen zugeordnet sind.
  5. Ein computerlesbares Medium mit Befehlssequenzen zum Erzeugen einer Datenrepräsentation eines Layouts einer integrierten Schaltung (IC), wobei die Befehlssequenzen Befehle aufweisen, die, wenn sie von einem oder mehreren Prozessoren (1404) ausgeführt werden, den einen oder die mehreren Prozessor/en (1404) zur Ausführung der Schritte veranlassen: a) Erzeugen von Polygondaten (440), die einem Polygon (300) zugeordnet sind, welches eine Ansammlung von durch das IC-Layout zu repräsentierenden IC-Elementen repräsentiert, wobei das Polygon (300) durch eine oder mehrere Leitung/en repräsentiert wird, b) Erzeugen von Leitungsdaten (430), die sowohl die eine oder die mehreren Leitung/en repräsentieren als auch zumindest einen Verweis auf die Polygondaten (440) enthalten, gekennzeichnet durch die Schritte: c) Erzeugen von Daten (410) für gerichtete Liniensegmente, die zwei gerichtete Liniensegmente (306, 308) für jedes Leitungssegment (302, 304) repräsentieren und die eine Richtung jedes gerichteten Liniensegments (306, 308) angeben, wobei jede der einen oder der mehreren Leitung/en durch ein oder mehrere Leitungssegmente (302, 304) repräsentiert wird und jedes des einen oder der mehreren Leitungssegments/e (302, 304) durch zwei gerichtete Liniensegmente (306, 308) repräsentiert wird, d) Erzeugen von Leitungssegmentdaten (420), die sowohl das eine oder die mehreren Leitungssegment/e (302, 304) für jede Leitung repräsentieren als auch zumindest einen Verweis auf die Leitungsdaten (430) enthalten, e) Erzeugen zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, und f) Erzeugen zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist.
  6. Das computerlesbare Medium nach Anspruch 5, wobei die Befehlssequenzen ferner Befehle zur Ausführung des Schrittes des Erzeugens von Daten (410) für gerichtete Liniensegmente aufweisen, wobei die Daten (410) für jedes gerichtete Liniensegment (306, 308) eine Veränderung von ersten Koordinaten für eine Veränderung von zweiten Koordinaten angeben.
  7. Das computerlesbare Medium nach Anspruch 5, wobei der Schritt des e) Erzeugens zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, den Schritt umfaßt, für jede in den Leitungssegmentdaten (420) repräsentierte Leitung einen Verweis in den Polygondaten (440) auf Daten in den diese Leitung repräsentierenden Leitungsdaten (430) zu erzeugen, und der Schritt des f) Erzeugens zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist, es umfaßt, für jede der einen oder der mehreren Leitung/en einen Verweis in den Leitungsdaten (430) sowohl auf das erste als auch auf das letzte in der Leitung enthaltene Leitungssegment (302, 304) zu erzeugen.
  8. Das computerlesbare Medium nach Anspruch 5, wobei die Mehrzahl von Befehlssequenzen Befehle zur Ausführung des Schritts aufweist, Zweigdaten (450) zu erzeugen, die Leitungssegmente (302, 304) angeben, welche verbundenen Leitungen zugeordnet sind.
  9. Ein computerimplementiertes Verfahren zum Erzeugen einer Datenrepräsentation eines Layouts einer integrierten Schaltung (IC), wobei das computerimplementierte Verfahren die Schritte aufweist: a) Erzeugen von Polygondaten (440), die einem Polygon (300) zugeordnet sind, welches eine Ansammlung von durch das IC-Layout zu repräsentierenden IC-Elementen repräsentiert, wobei das Polygon (300) durch eine oder mehrere Leitung/en repräsentiert wird, b) Erzeugen von Leitungsdaten (450), die sowohl die eine oder die mehreren Leitung/en repräsentieren als auch zumindest einen Verweis auf die Polygondaten (440) enthalten, gekennzeichnet durch die Schritte: c) Erzeugen von Daten (410) für gerichtete Liniensegmente, die zwei gerichtete Liniensegmente (306, 308) für jedes Leitungssegment (302, 304) repräsentieren und die eine Richtung jedes gerichteten Liniensegments (306, 308) angeben, wobei jede der einen oder der mehreren Leitung/en durch ein oder mehrere Leitungssegment/e (302, 304) repräsentiert wird und jedes des einen oder der mehreren Leitungssegments/e (302, 304) durch zwei gerichtete Liniensegmente (306, 308) repräsentiert wird, d) Erzeugen von Leitungssegmentdaten (420), die sowohl das eine oder die mehreren Leitungssegmente (302, 304) für jede Leitung repräsentieren als auch zumindest einen Verweis auf die Leitungsdaten (430) enthalten, e) Erzeugen zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, und f) Erzeugen zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist.
  10. Das Verfahren nach Anspruch 9, wobei das Verfahren ferner den Schritt aufweist, Daten für gerichtete Liniensegmente zu erzeugen, wobei die Daten für jedes gerichtete Liniensegment (306, 308) eine Veränderung von ersten Koordinaten für eine Veränderung von zweiten Koordinaten angeben.
  11. Das Verfahren nach Anspruch 9, wobei der Schritt des e) Erzeugens zumindest eines Verweises in den Polygondaten (440), der auf die Leitungsdaten (430) verweist, den Schritt umfaßt, für jede in den Leitungssegmentdaten (420) repräsentierte Leitung einen Verweis in den Polygondaten auf Daten in den diese Leitung repräsentierenden Leitungsdaten (430) zu erzeugen, und der Schritt des f) Erzeugens zumindest eines Verweises in den Leitungsdaten (430), der auf die Leitungssegmentdaten (420) verweist, es umfaßt, für jede der einen oder der mehreren Leitung/en einen Verweis in den Leitungsdaten (430) sowohl auf das erste als auch auf das letzte in der Leitung enthaltene Leitungssegment zu erzeugen.
  12. Das Verfahren nach Anspruch 9, ferner mit dem Schritt, Zweigdaten (450) zu erzeugen, die Leitungssegmente (302, 304) angeben, welche verbundenen Leitungen zugeordnet sind.
  13. Das Verfahren nach Anspruch 9, bei dem der Schritt des a) Erzeugens von Polygondaten (600), die einem Polygon (1000) zugeordnet sind, welches einen durch das IC-Layout zu repräsentierenden Satz von IC-Elementen repräsentiert, ferner den Schritt aufweist: Erzeugen von Polygondaten (600), die einer Mehrzahl von Polygonen (1000) zugeordnet sind, welche einen Satz, von durch das IC-Layout zu repräsentierenden IC-Elementen repräsentieren, wobei jedes Polygon (1002, 1004) der Mehrzahl von Polygonen (1000) durch eine oder mehrere Leitung/en repräsentiert wird, und das Verfahren ferner den Schritt aufweist: e) Ausführen einer Gültigkeitsüberprüfung der Polygondaten (600), indem die Schritte ausgeführt werden: i) Auswählen eines ersten Polygons (1002) und eines zweiten Polygons (1004) aus der Mehrzahl der zu überprüfenden Polygone (1000), ii) Bestimmen der kanonischen Richtung von dem ersten Polygon (1002) zu dem zweiten Polygon (1004), und iii) Bestimmen, basierend auf der kanonischen Richtung von dem ersten Polygon (1002) zu dem zweiten Polygon (1004), ob ein Abstand zwischen dem ersten Polygon (1002) und dem zweiten Polygon (1004) einen Satz vorbestimmter Abstandskriterien erfüllt.
  14. Das Verfahren nach Anspruch 13, bei dem der Schritt des ii) Bestimmens der kanonischen Richtung von dem ersten Polygon (1002) zu dem zweiten Polygon (1004) die Schritte aufweist: 1) Auswählen einer Seite des ersten Polygons (1002) von einer oder mehreren bislang nicht ausgewählten Seite/n des ersten Polygons (1002), 2) Bestimmen der kanonischen Richtung von der ausgewählten Seite des ersten Polygons (1002) zu dem zweiten Polygon (1004), 3) Bestimmen, beruhend auf der kanonischen Richtung von der ausgewählten Seite des ersten Polygons (1002) zu dem zweiten Polygon (1004), ob das zweite Polygon (1004) sich auf oder unmittelbar außerhalb der ausgewählten Seite des ersten Polygons (1002) befindet, 4) falls sich das zweite Polygon (1004) auf oder unmittelbar außerhalb der ausgewählten Seite des ersten Polygons (1002) befindet, dann Bestimmen einer kanonischen Richtung, die der ausgewählten Seite des ersten Polygons (1002) zugeordnet ist, 5) falls sich das zweite Polygon (1004) nicht, auf und nicht unmittelbar außerhalb der ausgewählten Seite des ersten Polygons (1002) befindet, dann Wiederholen der Schritte 1) bis 4), bis alle der einen oder mehreren bislang nicht ausgewählten Seite/n des ersten Polygons (1002) ausgewählt worden sind, und 6) falls sich das zweite Polygon (1004) nicht auf oder unmittelbar außerhalb irgendeiner der ausgewählten Seiten des ersten Polygons (1002) befindet, dann Bestimmen der kanonischen Richtung von dem ersten Polygon (1002) zu dem zweiten Polygon (1004) unter Verwendung der kanonischen Richtung von zwei oder mehr der ausgewählten Seiten zu dem zweiten Polygon (1004).
  15. Das Verfahren nach Anspruch 13, ferner mit dem Schritt: falls der Abstand zwischen dem ersten Polygon (1002) und dem zweiten Polygon (1004) den Satz vorbestimmter Abstandskriterien nicht erfüllt, dann Ausführen des Schritts: Bewegen des zweiten Polygons (1004) bezüglich des ersten Polygons (1002) in eine Richtung, die der Richtung zweier Seiten des ersten Polygons (1002), welche dem zweiten Polygon (1004) am nächsten liegen, entgegengesetzt ist, wodurch eine Trennung zwischen dem ersten Polygon (1002) und dem zweiten Polygon (1004) bewirkt wird, um die vorbestimmten Abstandsbedingungen zu erfüllen.
  16. Das Verfahren von Anspruch 15, wobei das Verfahren ferner den Schritt aufweist: Definieren einer Ausschlußzone um das erste Polygon (1002), welche eine Trennung von dem zweiten Polygon (1004) angibt, die den Satz vorbestimmter Abstandskriterien erfüllt, und Bewegen des zweiten Polygons (1004) bezüglich des ersten Polygons (1002) in eine Richtung, die der Richtung der beiden Seiten des ersten Polygons (1002), die dem zweiten Polygon (1004) am nächsten liegen, entgegengesetzt ist, ferner mit dem Schritt des Bewegens des zweiten Polygons (1004) bezüglich des ersten Polygons (1002) in eine Richtung, die der Richtung der beiden Seiten des ersten Polygons (1002), die dem zweiten Polygon (1004) am nächsten liegen, entgegengesetzt ist, wodurch bewirkt wird, daß das zweite Polygon (1004) außerhalb der Ausschlußzone angeordnet wird.
  17. Das Verfahren nach Anspruch 13, ferner mit dem Schritt: falls der Abstand zwischen dem ersten Polygon (1002) und dem zweiten Polygon (1004) den Satz vorbestimmter Abstandskriterien nicht erfüllt, dann Ändern der Größe des zweiten Polygons (1004), um zu bewirken, daß der Satz vorbestimmter Abstandskriterien erfüllt wird.
  18. Das Verfahren nach Anspruch 13, ferner mit den Schritten: Bestimmen einer Größe des ersten Polygons (1002), beruhend auf einer kanonischen Richtung von einer ersten Seite des ersten Polygons zu einer zweiten Seite des ersten Polygons (1002), und falls die Größe des ersten Polygons (1002) einen Satz Größenkriterien nicht erfüllt, dann Bewegen der zweiten Seite des ersten Polygons (1002) bezüglich der, ersten Seite des ersten Polygons (1002), um zu bewirken, daß der Satz Größenkriterien erfüllt wird.
  19. Das Verfahren nach Anspruch 13, bei dem der Schritt des i) Auswählens eines ersten Polygons (1002) und eines zweiten Polygons (1004) aus der Mehrzahl zu überprüfender Polygone (1000) den Schritt aufweist: Auswählen eines ersten Leitungssegments und eines zweiten Leitungssegments aus der Mehrzahl von zu überprüfenden Leitungssegmenten, der Schritt des ii) Bestimmens der kanonischen Richtung von dem ersten Polygon (1002) zu dem zweiten Polygon (1004) den Schritt aufweist, die kanonische Richtung von dem ersten Leitungssegment zu dem zweiten Leitungssegment zu bestimmen, und der Schritt des iii) Bestimmens, ob ein Abstand zwischen dem ersten Polygon (1002) und dem zweiten Polygon (1004) einen Satz vorbestimmter Abstandskriterien erfüllt, den Schritt aufweist, beruhend auf der kanonischen Richtung von dem ersten Leitungssegment zu dem zweiten Leitungssegment zu bestimmen, ob der Abstand zwischen dem ersten Leitungssegment und dem zweiten Leitungssegment den Satz vorbestimmter Abstandskriterien erfüllt.
  20. Das Verfahren nach Anspruch 9, ferner mit dem Schritt des e) Erzeugens von Polygonausgabedaten, beruhend auf einem ersten Leitungssegment mit einer von einem ersten und einem zweiten Endpunkt definierten linken Seite und einem zweiten Leitungssegment mit einem von einem ersten und einem zweiten Endpunkt definierten linken Seite, indem der Schritt ausgeführt wird: falls der erste Endpunkt der linken Seite des ersten Leitungssegments kollinear sowohl mit dem ersten als auch dem zweiten Endpunkt der linken Seite des zweiten Leitungssegments ist und der zweite Endpunkt der linken Seite des ersten Leitungssegments kollinear mit dem ersten Endpunkt der linken Seite des zweiten Leitungssegments ist, dann Bilden einer ersten linken Polygonseite mit einem ersten Endpunkt, der durch den ersten Endpunkt der linken Seite des ersten Leitungssegments definiert wird, und einem zweiten Endpunkt, der durch den zweiten Endpunkt der linken Seite des zweiten Leitungssegments definiert wird.
  21. Das Verfahren nach Anspruch 9, ferner mit dem Schritt des e) Erzeugens von Polygonausgabedaten, beruhend auf einem ersten Leitungssegment mit einer durch einen ersten und einen zweiten Endpunkt definierten linken Seite und einem zweiten Leitungssegment mit einer durch einen ersten und einen zweiten Endpunkt definierten linken Seite, indem der Schritt ausgeführt wird: falls der zweite Endpunkt der linken Seite des ersten Leitungssegments mit dem ersten Endpunkt der linken Seite des zweiten Leitungssegments zusammenfällt, dann Bilden sowohl einer ersten linken Polygonseite mit einem durch den ersten Endpunkt der linken Seite des ersten Leitungssegments definierten ersten Endpunkt und einem durch den zweiten Endpunkt der linken Seite des ersten Leitungssegments definierten zweiten Endpunkt und einer zweiten linken Polygonseite mit einem durch den zweiten Endpunkt der linken Seite des ersten Leitungssegments definierten ersten Endpunkt und einem durch den zweiten Endpunkt der linken Seite des zweiten Leitungssegments definierten zweiten Endpunkt.
DE69813892T 1997-10-30 1998-10-28 Polygon darstellung im layout eines integrierten schaltkreises Expired - Lifetime DE69813892T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/960,715 US6128767A (en) 1997-10-30 1997-10-30 Polygon representation in an integrated circuit layout
US960715 1997-10-30
PCT/US1998/022819 WO1999023699A2 (en) 1997-10-30 1998-10-28 Polygon representation in an integrated circuit layout

Publications (2)

Publication Number Publication Date
DE69813892D1 DE69813892D1 (de) 2003-05-28
DE69813892T2 true DE69813892T2 (de) 2004-02-26

Family

ID=25503526

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69813892T Expired - Lifetime DE69813892T2 (de) 1997-10-30 1998-10-28 Polygon darstellung im layout eines integrierten schaltkreises
DE69824765T Expired - Lifetime DE69824765T2 (de) 1997-10-30 1998-10-28 Polygondarstellung im Layout eines integrierten Schaltkreises

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69824765T Expired - Lifetime DE69824765T2 (de) 1997-10-30 1998-10-28 Polygondarstellung im Layout eines integrierten Schaltkreises

Country Status (9)

Country Link
US (1) US6128767A (de)
EP (2) EP1044471B1 (de)
JP (1) JP3710710B2 (de)
KR (1) KR100399645B1 (de)
CA (1) CA2308707C (de)
DE (2) DE69813892T2 (de)
IL (1) IL135870A (de)
TW (1) TW515066B (de)
WO (1) WO1999023699A2 (de)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000048052A (ja) * 1998-07-27 2000-02-18 Mitsubishi Electric Corp レイアウト検証方法とレイアウト検証装置
US6693719B1 (en) * 1998-09-16 2004-02-17 Texas Instruments Incorporated Path to trapezoid decomposition of polygons for printing files in a page description language
US6288724B1 (en) * 1998-09-16 2001-09-11 Texas Instruments Incorporated Clipping and trapezoid decomposition of polygons for printing files in a page description language
US6341366B1 (en) * 1999-01-15 2002-01-22 Spring Soft Inc. Rule-driven method and system for editing physical integrated circuit layouts
US6285805B1 (en) * 1999-01-25 2001-09-04 International Business Machines Corp. System and method for finding the distance from a moving query point to the closest point on one or more convex or non-convex shapes
JP3822009B2 (ja) * 1999-11-17 2006-09-13 株式会社東芝 自動設計方法、露光用マスクセット、半導体集積回路装置、半導体集積回路装置の製造方法、および自動設計プログラムを記録した記録媒体
US6889372B1 (en) 2000-07-15 2005-05-03 Cadence Design Systems Inc. Method and apparatus for routing
US6898773B1 (en) 2002-01-22 2005-05-24 Cadence Design Systems, Inc. Method and apparatus for producing multi-layer topological routes
US6826737B2 (en) * 2000-12-06 2004-11-30 Cadence Design Systems, Inc. Recursive partitioning placement method and apparatus
US7003754B2 (en) * 2000-12-07 2006-02-21 Cadence Design Systems, Inc. Routing method and apparatus that use of diagonal routes
US7055120B2 (en) * 2000-12-06 2006-05-30 Cadence Design Systems, Inc. Method and apparatus for placing circuit modules
US6516455B1 (en) * 2000-12-06 2003-02-04 Cadence Design Systems, Inc. Partitioning placement method using diagonal cutlines
US6957410B2 (en) 2000-12-07 2005-10-18 Cadence Design Systems, Inc. Method and apparatus for adaptively selecting the wiring model for a design region
US7024650B2 (en) * 2000-12-06 2006-04-04 Cadence Design Systems, Inc. Method and apparatus for considering diagonal wiring in placement
EP1362373A2 (de) * 2000-12-06 2003-11-19 Simplex Solutions, Inc. Verfahren und apparat mit berücksichtigung der diagonalen verdrahtung in der plazierung
US7080336B2 (en) * 2000-12-06 2006-07-18 Cadence Design Systems, Inc. Method and apparatus for computing placement costs
US7073150B2 (en) 2000-12-07 2006-07-04 Cadence Design Systems, Inc. Hierarchical routing method and apparatus that use diagonal routes
US7096448B2 (en) * 2001-01-19 2006-08-22 Cadence Design Systems, Inc. Method and apparatus for diagonal routing by using several sets of lines
US6915501B2 (en) 2001-01-19 2005-07-05 Cadence Design Systems, Inc. LP method and apparatus for identifying routes
US6957408B1 (en) 2002-01-22 2005-10-18 Cadence Design Systems, Inc. Method and apparatus for routing nets in an integrated circuit layout
US6882055B1 (en) 2001-06-03 2005-04-19 Cadence Design Systems, Inc. Non-rectilinear polygonal vias
US6957411B1 (en) 2001-06-03 2005-10-18 Cadence Design Systems, Inc. Gridless IC layout and method and apparatus for generating such a layout
US6829757B1 (en) 2001-06-03 2004-12-07 Cadence Design Systems, Inc. Method and apparatus for generating multi-layer routes
US6976238B1 (en) 2001-06-03 2005-12-13 Cadence Design Systems, Inc. Circular vias and interconnect-line ends
US7069530B1 (en) 2001-06-03 2006-06-27 Cadence Design Systems, Inc. Method and apparatus for routing groups of paths
US6859916B1 (en) 2001-06-03 2005-02-22 Cadence Design Systems, Inc. Polygonal vias
US7107564B1 (en) 2001-06-03 2006-09-12 Cadence Design Systems, Inc. Method and apparatus for routing a set of nets
US6951005B1 (en) 2001-06-03 2005-09-27 Cadence Design Systems, Inc. Method and apparatus for selecting a route for a net based on the impact on other nets
US6877146B1 (en) 2001-06-03 2005-04-05 Cadence Design Systems, Inc. Method and apparatus for routing a set of nets
US6895569B1 (en) 2001-06-03 2005-05-17 Candence Design Systems, Inc. IC layout with non-quadrilateral Steiner points
US7310793B1 (en) 2001-06-03 2007-12-18 Cadence Design Systems, Inc. Interconnect lines with non-rectilinear terminations
US6795958B2 (en) 2001-08-23 2004-09-21 Cadence Design Systems, Inc. Method and apparatus for generating routes for groups of related node configurations
US6931616B2 (en) * 2001-08-23 2005-08-16 Cadence Design Systems, Inc. Routing method and apparatus
US6877149B2 (en) 2001-08-23 2005-04-05 Cadence Design Systems, Inc. Method and apparatus for pre-computing routes
US7143382B2 (en) 2001-08-23 2006-11-28 Cadence Design Systems, Inc. Method and apparatus for storing routes
US7058913B1 (en) 2001-09-06 2006-06-06 Cadence Design Systems, Inc. Analytical placement method and apparatus
US6629304B1 (en) * 2001-09-19 2003-09-30 Lsi Logic Corporation Cell placement in integrated circuit chips to remove cell overlap, row overflow and optimal placement of dual height cells
US7159197B2 (en) * 2001-12-31 2007-01-02 Synopsys, Inc. Shape-based geometry engine to perform smoothing and other layout beautification operations
US6938234B1 (en) 2002-01-22 2005-08-30 Cadence Design Systems, Inc. Method and apparatus for defining vias
US6944841B1 (en) 2002-01-22 2005-09-13 Cadence Design Systems, Inc. Method and apparatus for proportionate costing of vias
US7089524B1 (en) 2002-01-22 2006-08-08 Cadence Design Systems, Inc. Topological vias route wherein the topological via does not have a coordinate within the region
US7117468B1 (en) 2002-01-22 2006-10-03 Cadence Design Systems, Inc. Layouts with routes with different spacings in different directions on the same layer, and method and apparatus for generating such layouts
US6973634B1 (en) 2002-01-22 2005-12-06 Cadence Design Systems, Inc. IC layouts with at least one layer that has more than one preferred interconnect direction, and method and apparatus for generating such a layout
US7080329B1 (en) 2002-01-22 2006-07-18 Cadence Design Systems, Inc. Method and apparatus for identifying optimized via locations
US7096449B1 (en) 2002-01-22 2006-08-22 Cadence Design Systems, Inc. Layouts with routes with different widths in different directions on the same layer, and method and apparatus for generating such layouts
US6892371B1 (en) 2002-01-22 2005-05-10 Cadence Design Systems, Inc. Method and apparatus for performing geometric routing
US6684380B2 (en) * 2002-04-01 2004-01-27 International Business Machines Corporation Intelligent structure simplification to facilitate package analysis of complex packages
US6931615B1 (en) 2002-06-04 2005-08-16 Cadence Design Systems, Inc. Method and apparatus for identifying a path between source and target states
US7069531B1 (en) 2002-07-15 2006-06-27 Cadence Design Systems, Inc. Method and apparatus for identifying a path between source and target states in a space with more than two dimensions
US7047512B1 (en) 2002-06-04 2006-05-16 Cadence Design Systems, Inc. Method and apparatus for specifying a cost function that represents the estimated distance between an external state and a set of states in a space
US7058917B1 (en) 2002-06-04 2006-06-06 Cadence Design Systems, Inc. Method and apparatus for specifying a cost function that represents the estimated distance between an external state and a set of states in a space
US6892369B2 (en) * 2002-11-18 2005-05-10 Cadence Design Systems, Inc. Method and apparatus for costing routes of nets
US6988257B2 (en) * 2002-11-18 2006-01-17 Cadence Design Systems, Inc. Method and apparatus for routing
US7171635B2 (en) * 2002-11-18 2007-01-30 Cadence Design Systems, Inc. Method and apparatus for routing
US7093221B2 (en) * 2002-11-18 2006-08-15 Cadence Design Systems, Inc. Method and apparatus for identifying a group of routes for a set of nets
US7480885B2 (en) * 2002-11-18 2009-01-20 Cadence Design Systems, Inc. Method and apparatus for routing with independent goals on different layers
US6996789B2 (en) * 2002-11-18 2006-02-07 Cadence Design Systems, Inc. Method and apparatus for performing an exponential path search
US7624367B2 (en) 2002-11-18 2009-11-24 Cadence Design Systems, Inc. Method and system for routing
US7047513B2 (en) * 2002-11-18 2006-05-16 Cadence Design Systems, Inc. Method and apparatus for searching for a three-dimensional global path
US7216308B2 (en) * 2002-11-18 2007-05-08 Cadence Design Systems, Inc. Method and apparatus for solving an optimization problem in an integrated circuit layout
US7003752B2 (en) * 2002-11-18 2006-02-21 Cadence Design Systems, Inc. Method and apparatus for routing
US7010771B2 (en) * 2002-11-18 2006-03-07 Cadence Design Systems, Inc. Method and apparatus for searching for a global path
US7506295B1 (en) * 2002-12-31 2009-03-17 Cadence Design Systems, Inc. Non manhattan floor plan architecture for integrated circuits
US7089519B1 (en) 2002-12-31 2006-08-08 Cadence Design System, Inc. Method and system for performing placement on non Manhattan semiconductor integrated circuits
US7013445B1 (en) 2002-12-31 2006-03-14 Cadence Design Systems, Inc. Post processor for optimizing manhattan integrated circuits placements into non manhattan placements
US7096445B1 (en) 2003-01-14 2006-08-22 Cadence Design Systems, Inc. Non-orthogonal structures and space tiles for layout, placement, and routing of an integrated circuit
US7243328B2 (en) * 2003-05-07 2007-07-10 Cadence Design Systems, Inc. Method and apparatus for representing items in a design layout
US7100135B2 (en) * 2004-06-18 2006-08-29 Intel Corporation Method and system to evaluate signal line spacing
US7191425B1 (en) * 2004-11-18 2007-03-13 Sun Microsystems, Inc. Method and apparatus for inserting extra tracks during library architecture migration
JP4817746B2 (ja) * 2005-07-27 2011-11-16 株式会社東芝 半導体装置の設計データ処理方法、そのプログラム、及び半導体装置の製造方法
US20070220472A1 (en) * 2006-02-28 2007-09-20 Inventec Corporation Computer aided wave-shaped circuit line drawing method and system
JP4637043B2 (ja) * 2006-03-23 2011-02-23 新光電気工業株式会社 自動配線整形方法および自動配線整形装置
US8161426B2 (en) * 2009-01-30 2012-04-17 Synopsys, Inc. Method and system for sizing polygons in an integrated circuit (IC) layout
US8146025B2 (en) * 2009-07-30 2012-03-27 United Microelectronics Corp. Method for correcting layout pattern using rule checking rectangle
JP7119688B2 (ja) * 2018-07-18 2022-08-17 株式会社ニューフレアテクノロジー 描画データ生成方法、プログラム、及びマルチ荷電粒子ビーム描画装置
US11106850B2 (en) * 2019-09-04 2021-08-31 International Business Machines Corporation Flexible constraint-based logic cell placement

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097422A (en) * 1986-10-10 1992-03-17 Cascade Design Automation Corporation Method and apparatus for designing integrated circuits
DE3935418A1 (de) * 1988-10-24 1990-04-26 Hitachi Ltd Verfahren und vorrichtung zur bestimmung von verdrahtungsmustern
US5113451A (en) * 1989-10-16 1992-05-12 Vlsi Technology, Inc. Method for labelling polygons
US5416722A (en) * 1992-11-19 1995-05-16 Vlsi Technology, Inc. System and method for compacting integrated circuit layouts
US5581475A (en) * 1993-08-13 1996-12-03 Harris Corporation Method for interactively tailoring topography of integrated circuit layout in accordance with electromigration model-based minimum width metal and contact/via rules
US5613102A (en) * 1993-11-30 1997-03-18 Lucent Technologies Inc. Method of compressing data for use in performing VLSI mask layout verification
US5515293A (en) * 1993-12-22 1996-05-07 Vlsi Technology, Inc. Method and apparatus for generating a linked data structure for integrated circuit layout
US5625568A (en) * 1993-12-22 1997-04-29 Vlsi Technology, Inc. Method and apparatus for compacting integrated circuits with standard cell architectures
US5524182A (en) * 1994-12-21 1996-06-04 Hewlett-Packard Company System and method for compressing and decompressing fonts based upon font stroke regularities
US5640497A (en) * 1995-01-23 1997-06-17 Woolbright; Phillip Alexander Layout redesign using polygon manipulation

Also Published As

Publication number Publication date
JP3710710B2 (ja) 2005-10-26
IL135870A0 (en) 2001-05-20
CA2308707A1 (en) 1999-05-14
EP1324234A1 (de) 2003-07-02
TW515066B (en) 2002-12-21
KR100399645B1 (ko) 2003-09-29
DE69813892D1 (de) 2003-05-28
EP1324234B1 (de) 2004-06-23
WO1999023699A2 (en) 1999-05-14
DE69824765T2 (de) 2005-07-21
IL135870A (en) 2005-03-20
JP2001522111A (ja) 2001-11-13
EP1044471B1 (de) 2003-04-23
CA2308707C (en) 2005-01-11
US6128767A (en) 2000-10-03
DE69824765D1 (de) 2004-07-29
WO1999023699A3 (en) 1999-07-22
KR20010031616A (ko) 2001-04-16
EP1044471A2 (de) 2000-10-18

Similar Documents

Publication Publication Date Title
DE69813892T2 (de) Polygon darstellung im layout eines integrierten schaltkreises
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
EP0441810B1 (de) Verfahren zur plazierung von modulen auf einem träger
DE60116769T2 (de) Verfahren und system zur hierarchischen metallenden-, einschliessungs- und belichtungsprüfung
DE102014112789B4 (de) Zellen-Layout und Struktur
DE69817168T2 (de) Interaktive zeitspannenanzeige
DE112013005820T5 (de) Graphische Benutzerschnittstelle für ein Werkzeug zur Lageplanerstellung bei der Entwurfsautomatisierung elektronischer Systeme
DE102016118811B4 (de) Integrierte Schaltungen mit versetzten leitenden Merkmalen und Verfahren zur Konfiguration eines Layouts einer integrierten Schaltung
DE10025583A1 (de) Verfahren zur Optimierung integrierter Schaltungen, Vorrichtung zum Entwurf von Halbleitern und Programmobjekt zum Entwerfen integrierter Schaltungen
DE112014003741T5 (de) Detektieren und Anzeigen einer Behebungsführung für Multi-Strukturierung
DE102019116952B4 (de) Integrierte-schaltkreis-struktur, layout-schaubild-verfahren und system
DE112021002870T5 (de) Halbleiterschaltungs-entwurf und einheits-pin-anordnung
DE102013106539A1 (de) Verfahren zur Verifikation eines Layouts für Polysilizium-Zellrandstrukturen in FinFET-Standardzellen
DE102019116733A1 (de) Verfahren, vorrichtung und system eines integrierten schaltungslayouts
DE112022003147T5 (de) Regionsbasiertes layoutleitungsführen
DE69833720T2 (de) Integrierte Halbleiterschaltung mit On-Chip Kondensatoren
DE102004022395A1 (de) Rechnerunterstützte Modellierung
DE10149021B4 (de) Datenverarbeitungssystem zum Entwurf eines Layouts einer integrierten elektronischen Schaltung aus einer Vielzahl von elektronischen Bauelementen
DE10245452A1 (de) Verfahren zum Bestimmen der Anordnung von Kontaktflächen auf der aktiven Oberseite eines Halbleiterchips
DE112013005783T5 (de) Mit Stromnetzwerksynthese (PNS) zur Stromversorgungsnetz(PG)-Justierung integriertes Modellieren
DE10206658B4 (de) Verfahren zum Überprüfen einer integrierten elektrischen Schaltung
DE102007059429A1 (de) Verfahren zum Überprüfen des Layouts eines integrierten Schaltkreises
EP0927399B1 (de) Verfahren zur optimierten rechnergestützten aufteilung von knoten eines graphen in cluster, wobei der graph ein technisches system darstellt
DE202023103509U1 (de) Ein System für beziehungsbasiertes neues K-Linien-Clustering
DE102023123018A1 (de) Chip-Struktur auf Wafer-Skala und Verfahren und System zum Entwerfen der Struktur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition