DE69824765T2 - Polygondarstellung im Layout eines integrierten Schaltkreises - Google Patents

Polygondarstellung im Layout eines integrierten Schaltkreises Download PDF

Info

Publication number
DE69824765T2
DE69824765T2 DE69824765T DE69824765T DE69824765T2 DE 69824765 T2 DE69824765 T2 DE 69824765T2 DE 69824765 T DE69824765 T DE 69824765T DE 69824765 T DE69824765 T DE 69824765T DE 69824765 T2 DE69824765 T2 DE 69824765T2
Authority
DE
Germany
Prior art keywords
segment
point
polygon
line segment
wire
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
DE69824765T
Other languages
English (en)
Other versions
DE69824765D1 (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
Application granted granted Critical
Publication of DE69824765D1 publication Critical patent/DE69824765D1/de
Publication of DE69824765T2 publication Critical patent/DE69824765T2/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
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Manufacturing & Machinery (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft die Konstruktion integrierter Schaltungen, und insbesondere ein Verfahren und eine Vorrichtung zum Darstellen von Polygonen in einem Integrierte-Schaltungs-Layout.
  • HINTERGRUND DER ERFINDUNG
  • Im Kontext der Konstruktion integrierter Schaltungen (IC) ist eine "Auslegung" bzw. ein "Layout" ein Satz geometrischer Muster, typischerweise in der Form von Polygonen, die die Größe und den Ort unterschiedlicher Materialtypen spezifizieren, die dazu benutzt werden, um Halbleitervorrichtungen und elektrische Verbindungen zwischen den Vorrichtungen während der Herstellung eines IC zu erzeugen. Z. B. kann ein Diffusionsfenster auf einem IC in einem Layout durch ein oder mehrere Polygone dargestellt werden, die durch eine Fabrikationseinrichtung mit der Bedeutung von "Diffusionsschichtgeometrie" interpretiert werden. Andere Materialschichten und Merkmale, wie etwa Kontakte und Bahnen, können auf ähnliche Weise in einem IC-Layout dargestellt werden. Die Polygone eines IC-Layouts müssen einen Satz von Konstruktionsregeln erfüllen, der die minimalen Größen für bestimmte Materialtypen sowie die minimalen Platzanforderungen zwischen den unterschiedlichen Materialtypen definiert. Der Satz der Konstruktionsregeln spezifiziert auch die Größe und die Abstandsanforderungen für andere Layoutmerkmale, wie etwa Kontakte.
  • Manchmal werden IC-Layouts mittels eines computerunterstützten Design (CAD)-Systems von Hand gezeichnet. Häufig ist dieser Ansatz für die Konstruktion IC-Layouts angemessen, die eine relativ kleine Anzahl von Vorrichtungen aufweisen. Jedoch erlaubt die moderne Herstellungstechnologie, dass mehrere Millionen Transistoren auf einem einzigen Siliciumsubstrat angeordnet werden. Das Zeichnen eines IC-Layouts von Hand, das Millionen von Transistoren enthält, nicht praktikabel, weil der Zeitaufwand übermäßig ist, auch wenn standardisierte Zellen dazu benutzt werden, die Anzahl einzelner Transistoren zu reduzieren, die gezeichnet werden müssen. Demzufolge sind verschiedene IC-Layoutkonstruktionswerkzeuge auf Computerbasis entwickelt worden, um das Generieren von IC-Layouts zu automatisieren. Zwei Typen von Layoutkonstruktionswerkzeugen enthalten Astzellen-Kompaktierungswerkzeuge und Astzellen-Synthesewerkzeuge. Im Kontext von IC-Layouts bezieht sich der Begriff "Astzelle" auf eine Gruppe von Transistoren, typischerweise von zwei bis mehreren Hundert, die zusammen eine spezifische Funktion haben, wie etwa eine logische NAND-Operation oder die Speicherung eines Informationsbits.
  • Astzellen-Kompaktierungswerkzeuge werden dazu benutzt, die Größe eines existierenden IC-Layouts zu reduzieren. Die meisten Astzellen-Kompaktierungswerkzeuge kompaktieren ein Layout entweder in der vertikalen oder horizontalen Richtung, indem Extraraum zwischen den Polygonen eliminiert wird. Eine "volle" Kompaktierung wird manchmal erreicht, indem zuerst ein Layout in der horizontalen Richtung komprimiert wird und dann das Layout in der vertikalen Richtung komprimiert wird. Jedoch sind die meisten Astzellen-Kompaktierungswerkzeuge auch in der Lage, die Koordinaten von Polygonpunkten in einem IC-Layout einzustellen, bis sie die Konstruktionsregeln für einen bestimmten Herstellungsprozess erfüllen, was diese hilfreich macht, um ein existierendes Layout von einem gegenwärtigen Satz von Konstruktionsregeln auf einen neuen Satz von Konstruktionsregeln zu übertragen.
  • Trotz der Vorteile der Astzellen-Kompaktierungswerkzeuge ist auch ein kompaktiertes Layout größer als vergleichbare handgezeichnete Zellen, weil die Kompaktierung allgemein ein eindimensionaler Prozess ist. Auch halten Kompaktierungswerkzeuge die existierende Layoutstruktur bei, obwohl durch nicht-lineare Änderungen in den Konstruktionsregeln (z. B. eine proportional vergrößerte Metallüberlappung um einen Kontakt) häufig bewirkt, dass menschliche Layoutkonstrukteure unterschiedliche Entscheidungen treffen, wenn sie das Layout in diesen neuen Konstruktionsregeln zeichnen.
  • Im Gegensatz zu Astzellen-Kompaktierungswerkzeugen haben Astzellen-Synthesewerkzeuge die Fähigkeit zum Erzeugen eines neuen Astzellenlayouts auf der Basis einer Netzliste auf Transistorebene, die die Größe von Transistoren und der elektrischen Verbindungen zwischen den Transistoren spezifiziert. Weil das Layoutsynthesesystem eine existierende Layoutstruktur nicht beibehalten braucht, kann sie den vollen Vorteil der Konstruktionsregeln oder Schaltungsanforderungen nutzen, z. B. durch Umordnen von Transistoren, Platzieren von Transistoren in abwechselnden Reihen oder Umordnen der Lenkung dort, wo Betriebsmittel verfügbar werden. Viele Layoutsynthesesysteme verwenden die Kompaktierung als letztendlichen Schritt bei der Erzeugung eines Layouts, aber sie können noch kompaktere Layouts erzeugen als ihre Gegenstücke, die nur existierende Layouts kompaktieren.
  • Die meisten IC-Layoutkonstruktionswerkzeuge erzeugen eine interne Darstellung der in einem Layout enthaltenen Polygone. Zwei Ansätze zum Darstellen von Polygonen in einem IC-Layout beinhalten den allgemeinen Polygonansatz und den Ader- oder Pfadansatz.
  • Der allgemeine Polygonansatz verwendet eine einzige Liste von Punkten, die Rechtecke oder Trapeze repräsentieren, die zum Konstruieren der in einem IC-Layout enthaltenen Polygone verwendet werden. Jedes Rechteck oder Trapez hat parallele Seiten mit der gleichen Orientierung und ist durch vier Punkte definiert. Komplexe Polygone werden dargestellt, indem mehrere Trapeze einander benachbart angeordnet werden. Der allgemeine Polygonansatz ist beliebt und sorgt für die Flexibilität zur Darstellung jeder Layoutgeometrie. Es gibt keine bevorzugte Orientierung oder "Abwicklungsrichtung" in den Trapezen. D. h. ein Trapez wird nicht in Bezug auf eine bestimmte Ecke referenziert, und die Seiten eines Trapezs sind nicht geordnet (z. B. in Bezug auf den Stromfluss). Jedoch macht es die beliebige Natur schwierig, dass der allgemeine Polygonansatz in Software implementiert wird. Weil die meiste Synthesesoftware die Anzahl von Punkten begrenzt, die in einem einzigen Polygon enthalten sein können, müssen einige komplexe Polygone, die zahlreiche Trapeze enthalten, in kleinere Polygone aufgeteilt werden. Das Erfordernis, ein Polygon in viele Trapeze oder Rechtecke aufzuteilen, überdeckt ihren Zweck und es ist schwierig, nützliche Eigenschaften, wie etwa die Größe eines Widerstands oder einer Transistorvorrichtung zu bestimmen. Auch können relativ einfache Änderungen in den Polygonen dazu führen, dass die Trapezdarstellung insgesamt restrukturiert wird. Viele Werkzeuge verwenden nur Rechtecke, weil die Algorithmen, die zur Handhabung aus Trapezen gebauter, nicht orthogonaler Geometrie erforderlich sind, kompliziert sind. Es sind große Mengen an Trapezen oder Rechtecken erforderlich, um alle außer die einfachsten Polygone darzustellen, und nützliche Operationen, wie das Einfügen einer Biegung in einen Ader, sind schwierig, weil sie keinen direkten Analog in einer Liste verketteter Trapeze haben. Schließlich repräsentieren einige Implementationen des allgemeinen Polygonansatzes den gesamten Konstruktionsraum, einschließlich eines etwa ungenutzten Raums zwischen den Polygonen, was die Anzahl der Polygone erhöht und mehr Daten erfordert, um das Layout darzustellen.
  • Der Ader- oder Pfadansatz repräsentiert Polygone unter Verwendung einer Mittellinie und einer Polygonbreite für jeden Punkt entlang der Mittellinie. Die Einfachheit dieses Ansatzes lässt sich in Synthesewerkzeugen leicht implementieren und kann das Lenken (Rooting) zwischen Diffusionsinseln vereinfacht. Auch können die Breite und der Widerstand eines Pfads leicht errechnet werden. Die meiste Layoutgeometrie kann dargestellt werden, ohne Adern zu verketten oder Adern nächst beieinander anzuordnen, und dieser Ansatz wird in vielen Rooting-Werkzeugen verwendet. Jedoch erfordert der Pfadansatz, dass Polygone parallele Seiten haben, was ihn für komplexere Formen ungeeignet macht, wie etwa achteckige Kontakte, unregelmäßig geformte Diffusionsinseln oder -adern mit veränderlicher Breite.
  • Im Hinblick auf das Erfordernis, Polygone in IC-Layoutsynthesewerkzeugen darzustellen und die Einschränkungen in existierenden Ansätzen ist ein verbessertes Verfahren zum Vorbestimmen der kanonischen Richtung aus einem gerichteten Liniensegment zu einem beliebigen Punkt in einer integrierten Schaltungsauslegung besonders erwünscht.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß einem Aspekt der Erfindung, wie er in den Ansprüchen 1 bis 3 ausgeführt ist, wird im Wesentlichen ein Verfahren zum Vorbestimmen der kanonischen Richtung aus einem gerichteten Liniensegment zu einem beliebigen Punkt in einer integrierten Schaltungsauslegung vorgesehen, wobei das Verfahren die Schritte umfasst: a) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen Punkt auf dem gerichteten Liniensegment; b) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen ersten Endpunkt des gerichteten Liniensegments; und c) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen zweiten Endpunkt des gerichteten Liniensegments; und d) auf der Basis der Ergebnisse der Schritte a) bis c), Zuweisen einer kanonischen Richtung von dem gerichteten Liniensegment zu dem beliebigen Punkt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungen der Erfindung werden als Beispiel und keineswegs als Einschränkung in den Figuren der beigefügten Zeichnungen dargestellt, worin gleiche Bezugszahlen ähnliche Elemente betreffen, und worin:
  • 1 zeigt eine kanonische Orientierung gemäß einer Ausführung der Erfindung;
  • 2 zeigt ein gerichtetes Liniensegment und einen benachbarten Punkt gemäß einer Ausführung der Erfindung;
  • 3 zeigt eine Ader gemäß einer Ausführung der Erfindung;
  • 4A zeigt eine Punktdatenstruktur gemäß einer Ausführung der Erfindung;
  • 4B zeigt eine Gerichtetes-Liniensegment-Datenstruktur gemäß einer Ausführung der Erfindung;
  • 4C zeigt eine Adersegmentdatenstruktur gemäß einer Ausführung der Erfindung;
  • 4D zeigt eine Aderdatenstruktur gemäß einer Ausführung der Erfindung;
  • 4E zeigt eine Polygondatenstruktur gemäß einer Ausführung der Erfindung;
  • 4F zeigt eine Zweigdatenstruktur gemäß einer Ausführung der Erfindung;
  • 4G zeigt eine Seitenzweigdatenstruktur gemäß einer Ausführung der Erfindung;
  • 5 zeigt ein aus Adersegmenten aufgebautes Polygon gemäß einer Ausführung der Erfindung;
  • 6A6E zeigen einen Satz von Datenstrukturen, die dem Polygon von 5 zugeordnet sind, gemäß einer Ausführung der Erfindung;
  • 7 zeigt ein aus Adersegmenten aufgebautes zweites Polygon gemäß einer Ausführung der Erfindung;
  • 8 zeigt eine aus Adersegmenten aufgebaute Diffusionsinsel gemäß einer Ausführung der Erfindung;
  • 9A zeigt ein gerichtetes Liniensegment und einen Orientierungsschlüssel gemäß einer Ausführung der Erfindung;
  • 9B zeigt ein Adersegment und einen Orientierungsschlüssel gemäß einer Ausführung der Erfindung;
  • 10 zeigt ein mittels Adersegmenten aufgebauten Abschnitt eines IC-Layouts gemäß einer Ausführung der Erfindung;
  • 11 zeigt die Verwendung einer Ausschlusszone zur Bestimmung des Polygonabstands gemäß einer Ausführung der Erfindung;
  • 12 ist ein Flussdiagramm mit Darstellung eines Verfahrens zur Durchführung einer Abstandsprüfung zwischen Polygonen gemäß einer Ausführung der Erfindung;
  • 13A zeigt ein mittels Adersegmenten aufgebaute Ader gemäß einre Ausführung der Erfindung;
  • 13B zeigt eine Polygondarstellung der Ader von 13A gemäß einer Ausführung der Erfindung; und
  • 14 ist ein Blockdiagramm eines Computersystems, an dem Ausführungen der Erfindung implementiert werden können.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNG
  • Es wird ein neuartiger Ansatz zur Darstellung von Polygonen in einem IC-Layout beschrieben. In der folgenden Beschreibung werden zu Erläuterungszwecken spezifische Details aufgeführt, um für ein gründliches Verständnis der Erfindung zu sorgen. Jedoch wird es ersichtlich, dass die Erfindung ohne diese spezifischen Details praktiziert werden kann. In anderen Umständen sind gutbekannte Strukturen und Vorrichtungen in Blockdiagrammform abgebildet, um ein unnötiges Überdecken der Erfindung zu vermeiden.
  • FUNKTIONELLE ÜBERSICHT
  • Allgemein werden gemäß einer Ausführung der Erfindung Polygone eines IC-Layouts durch ein oder mehrere Adern dargestellt, die jeweils durch ein oder mehrere Adersegmente dargestellt werden. Jedes Adersegment ist aus einem Paar gerichteter Liniensegmente gebildet. Eine neuartige Datenstrukturhierarchie wird vorgesehen, um Daten beizubehalten, die Adern, Adersegmente und gerichtete Liniensegmente darstellen. Die Datenstrukturhierarchie wird während der IC-Layoutsynthese benutzt, um an dem IC-Layout Gültigkeitsprüfungen durchzuführen.
  • DETAILLIERTE BESCHREIBUNG
  • 1) Kanonische Orientierung
  • Wie in 1 dargestellt, bezieht sich die kanonische Orientierung allgemein auf die Richtung der IC-Layoutgeometrie in Bezug auf einen vorbestimmten Orientierungsschlüssel 100. Gemäß einer Ausführung der Erfindung kann die IC-Layoutgeometrie in einer von acht kanonischen Orientierungen orientiert werden, wobei jede kanonische Orientierung ein Mehrfaches von 45° darstellt. Beginnt man an der Oberseite des Orientierungsschlüssels 100 und schreitet im Uhrzeigersinn fort, enthalten die kanonischen Orientierungen (oben), (oben rechts), (rechts), (unten rechts), (unten), (unten links), (links) und (oben links).
  • Zusätzlich zu der in einer kanonischen Orientierung orientierten IC-Layoutgeometrie wird die Beziehung zwischen IC-Layoutmerkmalen auch im Hinblick auf eine kanonische Richtung beschrieben. Z. B. ist, wie in 2 dargestellt, ein Liniensegment 100 durch Endpunkte 202 und 204 definiert. Gemäß einer Ausführung der Erfindung beruht die kanonische Orientierung des Liniensegments 200 auf der Position des Endpunkts 204 in Bezug auf den Endpunkt 202. Somit ist das Liniensegment 200 in Richtung (oben rechts) orientiert oder gerichtet, wie mit dem Richtungspfeil 205 angegeben. Es gibt keine Einschränkungen auf die Richtung, in der ein Liniensegment zeigen kann. Wenn z. B. der Endpunkt 204 unterhalb und links des Endpunkts 202 ist, dann wäre die kanonische Orientierung des Liniensegments 200 (unten links). Zusätzlich 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. Dieser Ansatz ist zur Bestimmung nützlich, ob der Abstand zwischen dem Liniensegment 200 und dem Punkt 206 einem Satz vorbestimmter Abstandskriterien genügt, wie nachfolgend beschrieben wird.
  • Wie zuvor eingeführt, werden IC-Layoutpolygone durch ein oder mehrere Adern dargestellt, und jede Ader wird durch ein oder mehrere Adersegmente dargestellt. Gemäß einer Ausführung der Erfindung hat jedes Adersegment vier Seiten, zwei seitlichen Seiten (links und rechts) und zwei Endseiten (erste und zweite). Die seitlichen Seiten sind durch ein Paar gerichteter Ränder ausgedrückt, die im Wesentlichen in derselben Richtung orientiert sind, aber die nicht notwendigerweise parallel sind oder zusammenfallende Endpunkte aufweisen. Gemäß einer Ausführung der Erfindung müssen die linken und rechten Seiten jeweils ein Mehrfaches eines 45° Winkels in Bezug aufeinander haben, wobei aber die Endseiten jeden Winkel in Bezug zueinander haben können. Allgemein haben die Endseiten ein Mehrfaches von 45° an den freien Enden der Ader, während "interne" Endseiten jeden Winkel haben können. Wie bei den Adersegmenten können die Adersegmente in jede Richtung zeigen, wie zuvor in Bezug auf 1 beschrieben. Gemäß einer Ausführung der Erfindung brauchen nicht alle Punkte eines Adersegments zusammenfallen, um sicherzustellen, dass jede Seite eine Nicht-null-Länge und eine definierte Richtung hat.
  • 3 zeigt eine Ader 300, die aus einem Adersegment 302 und einem Adersegment 304 aufgebaut ist, die zu einem Adersegment 302 mit einem 45° Winkel verknüpft sind, gemäß einer Ausführung der Erfindung. Das Adersegment 302 ist aufgebaut aus einem ersten gerichteten Rand 306, der die linke Seite des Adersegments 302 bildet, und einem zweiten gerichteten Rand 308, der die rechte Seite des Adersegments 302 bildet. Das Adersegment 302 enthält auch eine erste Endseite 310 und eine zweite Endseite 312. Beide gerichteten Ränder 306 und 308 zeigen in der (unten) Richtung. Daher zeigt auch das Segment 302 in der (unten) Richtung.
  • Das Adersegment 304 ist aus einem ersten gerichteten Rand 314 und einem zweiten gerichteten Rand 416 aufgebaut. Beide gerichteten Ränder 314, 316 sind in der (unten, rechts) Richtung orientiert, sodass das Adersegment 304 in der (unten, rechts) Richtung orientiert wird. Das Adersegment 304 enthält eine erste Endseite 312, die mit der zweiten Endseite des Adersegments 302 zusammenfällt, und eine zweite Endseite 318.
  • 2) Datenstrukturen
  • Gemäß einer Ausführung der Erfindung wird eine neuartige Datenstrukturarchitektur angegeben, um Polygone in einem IC-Layout darzustellen, wie in den 4A4G gezeigt. Gemäß einer Ausführung der Erfindung wird jedes Polygon in einem IC-Layout durch ein oder mehrere Adern dargestellt. Jede Ader wird durch ein oder mehrere Adersegmente dargestellt, die jeweils durch ein Paar gerichteter Liniensegmente dargestellt werden. Jedes Adersegment referenziert die Ader, in der es enthalten ist, und jede Ader referenziert ein Polygon, in der sie enthalten ist. Es kann bei gegebener Referenz auf ein einziges Adersegment ein gesamtes Polygon lokalisiert und manipuliert werden.
  • 4A zeigt den Kontext einer Punktdatenstruktur 400 gemäß einer Ausführung der Erfindung. Die Punktdatenstruktur 400 spezifiziert den Ort eines Punkts in einem IC-Layout, indem die X- und Y-Koordinaten (X KOORDINATE, Y KOORDINATE) für einen Punkt in einem IC-Layout spezifiziert werden.
  • 4B zeigt die Inhalte einer Gerichtetes-Liniensegment-Datenstruktur 410. Die Gerichtetes-Liniensegment-Datenstruktur 410 spezifiziert sowohl einen ersten Endpunkt (ENDE 1) als auch einen zweiten Endpunkt (ENDE 2) des entsprechenden gerichteten Liniensegments. Die Gerichtetes-Liniensegment-Datenstruktur 410 spezifiziert auch eine Richtung (RICHTUNG) eines gerichteten Liniensegments. Wie zuvor beschrieben, kann ein gerichtetes Liniensegment in einer von acht vordefinierten Richtungen gerichtet sein, wie in 1 gezeigt.
  • Die Gerichtetes-Liniensegment-Datenstruktur 410 spezifiziert auch ein Orthoflag (ORTHO) und ein Oktantflag (OKTANT). Das Orthoflag ist ein BOOL'SCHES Flag, das angibt, ob ein gerichtetes Liniensegment mit einem Winkel ausgerichtet ist, der ein Mehrfaches von 90° beträgt, während das Oktantflag ein BOOL'SCHES Flag ist, das spezifiziert, ob ein gerichtetes Liniensegment in einem Winkel ausgerichtet ist, der ein Mehrfaches von 45° beträgt. Wenn, gemäß einer Ausführung der Erfindung, weder das Ortho- noch das Oktantflag gesetzt ist, dann ist das gerichtete Liniensegment mit einem "schiefen" Winkel orientiert, d. h. einem anderen Winkel als 45° oder 90°, der unter gewissen Umständen eine Gleitpunktarithmetik erfordert, um Koordinaten des gerichteten Liniensegments zu berechnen.
  • 4C zeigt die Inhalte einer Adersegmentdatenstruktur 420, der einen linken Rand (linken RAND) und einen rechten Rand (rechten RAND) eines Adersegments spezifiziert. Sowohl der linke Rand als auch der rechte Rand referenzieren jeweils eine Gerichtetes-Liniensegment-Datenstruktur 410. Die Adersegmentdatenstruktur 420 enthält auch eine Referenz auf das nächste Adersegment (NÄCHSTES ADERSEGMENT) und das vorherige Adersegment (VORHERIGES ADERSEGMENT) in der Ader, unter Bildung einer doppelt verknüpften Liste. Die Adersegmentdatenstruktur für das erste Adersegment in einer Ader spezifiziert einen vorbestimmten Wert, um anzugeben, dass sich das Adersegment nicht auf ein vorheriges Adersegment bezieht. Gemäß einer Ausführung der Erfindung wird als der vorbestimmte Wert ein NULL-Wert verwendet. Ähnlich spezifiziert die Adersegmentdatenstruktur für das letzte Adersegment in einer Ader einen vorbestimmten Wert zur Angabe, dass das Adersegment sich nicht auf ein nächstes Adersegment bezieht. Obwohl eine Ausführung der Aderdatenstruktur 420 im Kontext einer doppelt verknüpften Liste beschrieben, ist keine doppelt verknüpfte Liste erforderlich.
  • Die Adersegmentdatenstruktur 420 enthält auch eine Referenz auf eine Stammader (STAMMADER), die das Adersegment enthält, sowie einen Bezug (ABZWEIGUNG) auf eine Zweigdatenstruktur, die relevant wird, wenn eine freiliegende Endseite des gegenwärtigen Adersegments eine SeitenSeite einer anderen Ader berührt, zur Bildung einer Verzweigung. Inhalte einer Zweigdatenstruktur werden nachfolgend beschrieben. Zweigdatenstrukturen sind nicht Adersegmenten zugeordnet, die keine Verzweigung aufweisen, um Speicher einzusparen.
  • 4D zeigt die Inhalte einer Aderdatenstruktur 430. Die Aderdatenstruktur 430 spezifiziert einen Bezug auf ein Stammpolygon (STAMMPOLYGON) sowie eine Zweigzahl (ZWEIGZAHL), die die Ader identifiziert. Die Aderdatenstruktur 430 spezifiziert auch einen Begrenzungskasten (BBX), der alle Adersegmente der Ader umschließt. Ein Begrenzungskasten erlaubt schnelle Bereichsabfrageprüfungen, sodass auch dann, wenn eine Ader durch eine Bereichsabfrage zurückgebracht wird, wenn kein Adersegment dem Anfragepunkt nahe genug ist, dann kein Segment in der Ader geprüft zu werden braucht. Gemäß einer Ausführung der Erfindung wird ein Begrenzungskasten (BBX) als vier ganze Zahlen entsprechend den linken, unteren, rechten und oberen Koordinaten des Begrenzungskastens implementiert.
  • Die Aderdatenstruktur 430 enthält auch einen Bezug auf das erste Adersegment (ERSTES ADERSEGMENT) und das letzte Adersegment (LETZTES ADERSEGMENT) in der Ader sowie einen Bezug auf ein an dem ersten Ende angebrachte Ader (AM ERSTEN ENDE ANGEBRACHTE ADER) und eine am zweiten Ende angebrachte Ader (AM ZWEITEN ENDE ANGEBRACHTE ADER).
  • 4E zeigt die Inhalte einer Polygondatenstruktur 440, die einen Begrenzungskasten (BBX) in einem Feld von Zweigzahlen (FELD VON ZWEIGZAHLEN) spezifiziert, das alle Aderelemente eines Polygons durch eine Zweigzahl spezifiziert, wie zuvor in Bezug auf die Aderdatenstruktur 430 beschrieben. Gemäß einer Ausführung der Erfindung enthält die Polygondatenstruktur 440 auch einen Bezug auf die entsprechende Prozessschicht (SCHICHT) für das Polygon sowie die Polygonzahl (POLYGONZAHL), die zum eindeutigen Identifizieren des Polygons verwendet wird. Z. B. kann diese Information mit einer Liste verwendet werden, die alle Polygone für eine bestimmte Prozessschicht spezifiziert.
  • 4F zeigt die Inhalte einer Zweigdatenstruktur 450, die verwendet wird, wenn eine Abzweigung in einem Polygon gebildet wird, gemäß einer Ausführung der Erfindung. Eine Abzweigung wird gebildet, wenn eine freie Endseite eines Adersegments eine seitliche Seite einer anderen Ader berührt. Die Zweigdatenstruktur 450 spezifiziert eine Referenz auf ein Stammadersegment (STAMMADERSEGMENT) sowie Referenzen auf andere Adersegmente, die an dem ersten Ende (ZWEIGENDE 1) bzw. dem zweiten Ende (ZWEIGENDE 2) des Adersegments angebracht sind. Die Zweigstruktur 450 enthält einen Bezug auf erste und letzte Zweite (ERSTER linker ZWEIG, LETZTER linker ZWEIG) und erste und letzte rechte Zweige (ERSTER rechter ZWEIG, LETZTER rechter ZWEIG) aus einem Adersegment. D. h. diese Datenstrukturelemente referenzieren eine Seitenzweigstruktur, wenn ein bestimmtes Adersegment andere Adersegmente aufweist, die sich mit dem Adersegment an einem seiner Seiten schneidet. Gemäß einer Ausführung der Erfindung kann jede Anzahl von Zweigen an einer seitlichen Seite eines Adersegments angebracht sein, wobei aber auch die Endseite einer Ader an nur einem anderen Adersegment angebracht sein kann.
  • 4G zeigt die Inhalt einer Seitenzweigstruktur 460, die eine Referenz auf ein Adersegment (ANDERES ADERSEGMENT) spezifiziert, das ein Teil des an dem Stammadersegment angebrachten Zweigs ist, sowie das Liniensegment (STAMMLINIENSEGMENT) in dem Stammadersegment, an dem das andere Adersegment angebracht ist. Die Seitenzweigstruktur 460 spezifiziert, ob ein anderes Adersegment an der linken Seite des Stammadersegments angebracht ist, auf der Basis eines BOOL'SCHEN Flags (AM linkem RAND). Die Seitenzweigstruktur 460 enthält auch eine Referenz auf die Datenstruktur des nächsten Seitenzweigs (NÄCHSTER SEITENZWEIG) und des vorherigen Seitenzweigs (VORHERIGER SEITENZWEIG) sowie den ersten Seitenpunkt (ERSTER SEITENPUNKT) und den zweiten Seitenpunkt (ZWEITER SEITENPUNKT), die die Orte auf dem Stammadersegment spezifizieren, wo die anderen Adersegmente angebracht sind. Die Seitenpunkte unterstützen die Sortierung der Seitenzweiglisten; der erste Seitenpunkt ist dem Ende1 des Stammadersegments näher.
  • Die vorgenannten Datenstrukturen werden nun in Bezug auf 5 und ein Polygon 500 beschrieben, das aus drei Adern, ADER A, ADER B und ADER C, aufgebaut ist, gemäß einer Ausführung der Erfindung. Jede Ader, ADER A, ADER B und ADER C, besteht aus einem einzigen Adersegment, identifiziert als ADERSEGMENT A, ADERSEGMENT B und ADERSEGMENT C.
  • Das ADERSEGMENT A ist aus zwei gerichteten Liniensegmenten a1 und a2 aufgebaut, die beide in der (oben) Richtung ausgerichtet sind, wie durch die Richtungspfeile angegeben. Das ADERSEGMENT B ist aus gerichteten Liniensegmenten b1 und b2 aufgebaut, die beide in der (linken) Richtung ausgericthet sind. Die ADER B ist mit der ADER A an dem gerichteten Liniensegment a1 an einem Ort verknüpft, der durch die Punkte d1 und d2 definiert ist. Das ADERSEGMENT C ist aus gerichteten Liniensegmenten c1 und c2 aufgebaut, die beide in der (rechts) Richtung ausgerichtet sind. Die ADER C verbindet sich mit ADER A auf dem gerichteten Liniensegment a1 an einem Ort, der durch die Punkte e1 und e2 definiert ist. Begrenzungskästen BBXA, BBXB, BBXC definieren die Inhalte von ADER A, ADER B bzw. ADER C, und der Begrenzungskasten BBXP definiert die Inhalte des Polygons 500.
  • Gemäß einer Ausführung der Erfindung teilen sich alle Adern eines Polygons eine logische Zuordnung. Z. B. können für ein bestimmtes Polygon alle Adern physikalisch durchgängig sein und sich elektrische Eigenschaften teilen. Für ein anderes Polygon brauchen sich die Adern keine physikalische Zuordnung teilen, sondern können elektrisch verbunden sein, z. B. im Falle einer Gruppe von Kontakten. Andererseits kann ein Satz von Adern logisch in ein Polygon gruppiert sein, weil es zweckdienlich ist, dass sich diese Adern ein einziges Polygon teilen. Obwohl z. B. nicht physikalisch oder elektrisch zugeordnet, können alle Polysiliciumgatter auf einre Diffusionsinsel in einem einzigen Polygon enthalten sein, weil es zweckdienlich ist, alle Polysiliciumgatter auf einer Diffusionsinsel zusammen zu manipulieren.
  • Der Satz von Datenstrukturen, die zur Darstellung des Polygons 500 gemäß einer Ausführung der Erfindung erzeugt sind, ist in den 6A6E gezeigt. 6A zeigt eine Polygondatenstruktur 600 für das Polygon 500. Die Polygondatenstruktur 600 spezifiziert, dass das Polygon 500 drei Adern enthält: ADER A, ADER B und ADER C. Die Polygondatenstruktur 600 spezifiziert auch, dass das Polygon 500 eine Diffusionsschichtgeometrie repräsentiert und eine Polygonzahl von 1 hat.
  • Eine Aderdatenstruktur 600 wird für ADER A erzeugt. Ähnlich werden Aderdatenstrukturen 620, 630 für ADER B bzw. ADER C erzeugt. Eine Adersegmentdatenstruktur 640 wird für das ADERSEGMENT A erzeugt. Eine Adersegmentdatenstruktur 650 wird für das ADERSEGMENT B erzeugt. Schließlich wird eine Aderdatenstruktur 660 für das ADERSEGMENT C erzeugt. Ähnlich werden Zweigdatenstrukturen 660, 670 und 680 für jedes Adersegment erzeugt. Zusätzlich werden zwei Seitenzweigdatenstrukturen 690 und 695 für das ADERSEGMENT A erzeugt, da ADER B und ADER C mit ADER A entlang einem gerichteten Rand a1 von ADER A verbunden sind.
  • 7 zeigt ein Polygon 700, das aus zwei Adern 702 und 704 aufgebaut ist, gemäß einer Ausführung der Erfindung. Die Adern 702 und 704 sind aus einem Satz von Adersegmenten aufgebaut, die jeweils aus einem Paar gerichteter Liniensegmente aufgebaut sind. Die Richtung der gerichteten Liniensegmente ist durch die Pfeile 706 angegeben.
  • Das Polygon 700 enthält mehrere unterschiedliche Typen von IC-Layoutgeometrien, die mittels Adersegmenten aufgebaut sind, die, gemäß einer Ausführung der Erfindung, entweder eine Polysilicium- oder Metallschichtgeometrie repräsentieren. Eine Kontakteinfassung 708 ist mit der Ader 704 über einen geknickten Pfad 710 verbunden. Die Ader 704 enthält eine achteckige Kontakteinfassung 712, die aus drei Adersegmenten 714, 715 und 716 aufgebaut ist. Gemäß einer Ausführung der Erfindung, und wie durch die Adersegmente 714 und 716 dargestellt, brauchen die zur Bildung eines Adersegments verwendeten gerichteten Liniensegmente nicht parallel sein oder Endpunkte aufweisen, die mit benachbarten Segmenten zusammenfallen. Dieser Aspekt der Erfindung erlaubt eine weite Vielzahl von IC-Layoutgeometrien, die mittels Adersegmenten konstruiert werden können.
  • 8 zeigt eine IC-Layoutdiffusionsinsel 800, die aus Adersegmenten aufgebaut ist, gemäß einer Ausführung der Erfindung. Die Diffusionsinsel 800 enthält Diffusionsflächen 802, die eine Diffusionsgeometrie darstellen. Die Diffusionsinsel 800 enthält auch Polysiliciumflächen 804, die eine Polysiliciumgeometrie darstellen. Die Diffusionsinsel 800 enthält auch eine Serie von Kontakten 806. Schließlich enthält die Diffusionsinsel 800 eine Verbindungswanne 808, die einen Kontakt 810 enthält.
  • Die Diffusionsinsel 800 wird durch drei Polygone dargestellt. Trotz der unregelmäßigen Form der Diffusionsinsel 800 enthält ein Polygon alle Diffusionsflächen 802 und ist aufgebaut aus einem Adersegment 812, einem Adersegment 814 und einem Adersegment 816. Ein anderes Polygon enthält alle Polysiliciumflächen 804 und ist aufgebaut aus vier Adern, einer für jedes Polysiliciumgatter. Ein anderes Polygon enthält alle Kontakte 806 sowie den in der Verbindungswanne 808 enthaltenen Kontakt 810. Die Kontakte 806 können, aufgrund ihrer gemeinsamen elektrischen Charakteristika, in einem einzigen Polygon definiert werden, oder können alternativ als separate Polygone definiert werden. Wenn z. B. ein Polysiliciumgatter an einer Seite mehr als einen Kontakt aufweist, können die Kontakte an dieser Seite als ein Polygon dargestellt werden, mit einer Ader pro Kontaktbereich (Rechteck/Achteck etc.).
  • 3) Verwendung von Datenstrukturen während der IC-Layoutsynthese
  • Gemäß einer Ausführung der Erfindung werden die oben beschriebenen Strukturen während der IC-Layoutsynthese verwendet, um zu verifizieren, dass bestimmte Charakteristika eines Layouts, wie etwa Polygonbreiten, Abstände und Kontakteinfassung, vorbestimmte Konstruktionsregeln efüllen. Das Konzept der kanonischen Richtung, wie hierin beschrieben, ist ein wichtiger Aspekt dieses Typs der Verifizierung, weil sie dazu beiträgt, die Anzahl der im Layout erforderlichen vollständigen Prüfungen zu minimieren. Im Kontext der IC-Layoutverifizierung bezieht sich eine Vollprüfung auf den Prozess der Prüfung aller Seiten eines Polygons in Bezug auf ein in dem IC-Layout enthaltenes Objekt, differenziert z. B. aus der Prüfung nur der dem anderen Objekt nächsten Seite des Polygons.
  • a. Bestimmung der kanonischen Richtung von einem Liniensegment zu einem Punkt
  • Gemäß einer Ausführung der Erfindung werden bis zu drei Halbebenenprüfungen verwendet, um die kanonische Richtung von einem gerichteten Liniensegment zu einem beliebigen Punkt zu bestimmen. Die erste Halbebenenprüfung bestimmt, ob der beliebige Punkt links, rechts oder an der Oberseite des gerichteten Liniensegments ist. Die zweite Halbebenenprüfung bestimmt, ob der beliebige Punkt über oder unter dem ersten Endpunkt des gerichteten Liniensegments ist. Die dritte Halbebenenprüfung bestimmt, ob der beliebige Punkt über oder unter dem zweiten Endpunkt des gerichteten Liniensegments ist. Durch Auswerten der Ergebnisse der drei Halbebenenprüfungen wird eine etwaige Mehrdeutigkeit aufgelöst, die dem Ort des beliebigen Punkts in Bezug auf das gerichtete Liniensegment zuordenbar ist.
  • Jede Halbebenenprüfung beinhaltet die Berechnung des Punktprodukts des beliebigen Punkts in Bezug auf das gerichtete Liniensegment. Ein Liniensegment, das die Grenze der Halbebene darstellt, wird um 90° im Gegenuhrzeigersinn gedreht, und ein beliebiger Punkt wird auf das neue Liniensegment projiziert. Das Vorzeichen des Punktprodukts bestimmt dann, ob sich der beliebige Punkt links der Halbebenengrenze (+1), auf der Grenze (0) oder rechts der Grenze (–1) befindet. Die drei Halbebenengrenzen sind jeweils das ursprüngliche Liniensegment, ein Liniensegment, das durch den ersten Endpunkt hindurchgeht und um 90° gedreht ist, sowie ein Liniensegment, das durch den zweiten Endpunkt hindurchgeht und um 90° gedreht ist.
  • Z. B. zeigt 9A ein gerichtetes Liniensegment 900, das durch einen ersten Endpunkt 902 und einen zweiten Endpunkt 904 definiert ist. Die Flächen um das gerichtete Liniensegment 900 herum entsprechen dem Orientierungsschlüssel 100 von 1. Insbesondere definiert die Fläche 906 eine Fläche, die in Bezug auf das gerichtete Liniensegment 900 oben ist (oben). Die Fläche 908 definiert eine Fläche, die über und rechts (oben, rechts) des gerichteten Liniensegments 900 ist. Die Fläche 910 definiert eine Fläche, die rechts (rechts) in Bezug auf das gerichtete Liniensegment 900 ist. Die Fläche 912 definiert eine Fläche, die unten und rechts (unten, rechts) des gerichteten Liniensegments 900 ist. Die Fläche 914 definiert eine Fläche, die unten (unten) in Bezug auf das gerichtete Liniensegment 900 ist. Die Fläche 916 definiert eine Fläche, die unten und links (unten, links) des gerichteten Liniensegments 900 ist. Die Fläche 918 definiert eine Fläche, die sich links des gerichteten Liniensegments 900 befindet. Schließlich definiert die Fläche 920 eine Fläche, die oben und links (oben, links) des gerichteten Liniensegments 900 ist.
  • Um die kanonische Richtung zwischen einem beliebigen Punkt 925 und dem gerichteten Liniensegment 900 zu bestimmen, werden bis zu drei Halbebenenprüfungen verwendet. Die erste Halbebenenprüfung bestimmt, ob sich der Punkt 925 links, rechts oder an der Oberseite des gerichteten Liniensegments 900 befindet. Wie in 9A gezeigt, liegt der Punkt 925 links des gerichteten Liniensegments 900. Dies bedeutet, dass bei Abschluss der ersten Halbebenenprüfung der Punkt 925 in den Flächen 916, 918 oder 920 liegen könnte.
  • Die zweite Halbebenenprüfung bestimmt, ob der Punkt 925 über oder unter dem ersten Endpunkt 902 des gerichteten Liniensegments 900 liegt. Das Ergebnis der zweiten Halbebenenprüfung zeigt an, dass sich der Punkt 925 über dem ersten Punkt 902 befindet, was bedeutet, dass der Punkt 925 nicht in der Fläche 916 liegen kann und daher in entweder der Fläche 918 oder der Fläche 920 liegen muss. Die dritte Halbebenenprüfung bestimmt, ob sich der Punkt 925 über oder unter dem zweiten Endpunkt 904 befindet. Wie dargestellt, zeigt die zweite Halbebenenprüfung an, dass der Punkt 925 unter dem zweiten Endpunkt 904 liegt, was bedeutet, dass der Punkt 925 in der Fläche 918 liegen muss oder links des gerichteten Liniensegments 900.
  • b. Bestimmung der kanonischen Richtung aus einem Adersegment zu einem Punkt
  • Zur Durchführung von Abstandsprüfungen während der IC-Layoutverifizierung müssen Abstände zwischen Polygonen bestimmt und dann mit der minimalen Trennung verglichen werden, die durch die geltenden Designregeln gefordert werden. Typischerweise wird eine Abstandsprüfung zwischen einem Polygon und einem gewählten Punkt an einem anderen Polygon durchgeführt.
  • Gemäß einer Ausführung der Erfindung wird ein Verfahren angegeben, um die kanonische Richtung von einem Adersegment zu einem Punkt zu bestimmen, sodass höchstens zwei Seiten eines Polygons gegenüber dem Punkt geprüft werden müssen. Bis zu vier Prüfungen der kanonischen Richtung von Segmentseiten zu dem beliebigen Punkt werden durchgeführt, um die kanonische Richtung von einem Adersegment zu einem Punkt zu bestimmen und eine etwaige Mehrdeutigkeit aufzulösen, die dem zuzuordnen ist, ob sich der Punkt innerhalb oder außerhalb des Adersegments befindet.
  • 9B zeigt ein Adersegment 952, das durch eine linke Seite 956, eine rechte Seite 958, eine erste Endseite 960 und eine zweite Endseite 962 definiert ist. Die Flächen um das Adersegment 952 herum entsprechen dem Orientierungsschlüssel 100 von 1. Insbesondere definiert die Fläche 964 eine Fläche, die in Bezug auf das Adersegment 952 oben liegt (oben). Die Fläche 966 definiert eine Fläche, die in Bezug auf das Adersegment 952 oben und rechts (oben, rechts) liegt. Die Fläche 968 definiert eine Fläche, die in Bezug auf das Adersegment 902 rechts (rechts) liegt. Die Fläche 920 definiert eine Fläche, die in Bezug auf das Adersegment 952 unten und rechts (unten, rechts) liegt. Die Fläche 972 definiert eine Fläche, die in Bezug auf das Adersegment 952 unten (unten) liegt. Die Fläche 974 definiert eine Fläche, die in Bezug auf das Adersegment 952 unten und links (unten, links) liegt. Schließlich definiert die Fläche 976 eine Fläche, die in Bezug auf das Adersegment 952 links (links) liegt. Die Fläche 978 definiert eine Fläche, die in Bezug auf das Adersegment 952 oben und links (oben, links) liegt.
  • Man nehme z. B. an, dass die kanonische Richtung von dem Adersegment 952 zu einem Punkt 980 bestimmt werden soll. Eine erste kanonische Richtungsprüfung des Punkts 980 in Bezug auf die linke Seite 956 wird durchgeführt, um zu bestimmen, ob der Punkt 980 links, rechts oder an der Oberseite der linken Seite 956 liegt. In dieser Situation zeigt die erste kanonische Richtungsprüfung an, dass der Punkt 980 rechts der linken Seite 956 liegt. Somit muss auf der Basis der Ergebnisse der ersten kanonischen Richtungsprüfung der Punkt 980 in der Fläche 964, 966, 968, 970, 972 oder innerhalb des Adersegments 952 angeordnet sein.
  • Eine zweite kanonische Richtungsprüfung des Punkt 980 in Bezug auf die rechte Seite 958 wird durchgeführt, um zu bestimmen, ob der Punkt 980 links, rechts oder an der Oberseite der rechten Seite 958 liegt. In dieser Situation zeigt die zweite kanonische Richtungsprüfung an, dass der Punkt 980 links der rechten Seite 958 liegt. Somit muss auf der Basis der Ergebnisse beider durchgeführten ersten und zweiten kanonischen Richtungsprüfungen der Punkt 980 in den Flächen 964, 972 oder innerhalb des Adersegments 952 liegen.
  • Eine dritte kanonische Richtungsprüfung von Punkt 980 in Bezug auf die erste Fläche 960 wird durchgeführt, um zu bestimmen, ob der Punkt 980 links, rechts oder an der Oberseite der ersten Endseite 960 liegt. In dieser Situation zeigt die dritte kanonische Richtungsprüfung an, dass der Punkt 980 links der ersten Endseite 960 liegt. Daher muss, auf der Basis der Ergebnisse der drei kanonischen Richtungsprüfungen, der Punkt 980 in der Fläche 972 liegen, oder (unten) mit Bezug auf das Adersegment 952.
  • Für das gerade beschriebene bestimmte Szenario waren nur drei kanonische Richtungsprüfungen erforderlich, um die kanonische Richtung von einem Adersegment zu einem Punkt unzweideutig zu bestimmen. Jedoch ist in einigen Situationen eine vierte kanonische Richtungsprüfung erforderlich, um die kanonische Richtung zwischen einem Adersegment und einem Punkt definitiv zu bestimmen. Wo z. B. die dritte kanonische Richtungsprüfung von Punkt 980 in Bezug auf die erste Endseite 960 anzeigt, dass der Punkt 980 rechts der ersten Endseite 960 liegt, dann ist eine vierte kanonische Richtungsprüfung des Punkts 980 in Bezug auf die zweite Endseite 962 erforderlich, um zu bestimmen, ob der Punkt 970 in der Fläche 964 angeordnet ist, oder innerhalb oder oberhalb des Adersegmetns 952 angeordnet ist.
  • Die kanonische Richtung von den Adersegmentseiten zu einem beliebigen Punkt 980 wird verwendet, um sicherzustellen, dass die Flächen 964, 966, 698, 970, 972, 974,. 976 und 978 nicht enger werden, wenn der Abstand von dem beliebigen Punkt 980 zu dem Adersegment 852 zunimmt. Dies kann immer dann passieren, wenn der Winkel zwischen zwei benachbarten Seiten größer als 90° ist.
  • c. Abstandsprüfungen
  • Gemäß einer Ausführung der Erfindung wird ein Ansatz zur Durchführung von Abstandsprüfungen zwischen Polygonen, die mittels Adersegmenten und kanonischer Richtung konstruiert sind, vorgesehen. 10 zeigt ein IC-Layout 1000, das eine Diffusionsinsel 1002 und eine Diffusionsinsel 1004 enthält. Die Diffusionsinsel 1002 enthält ein Polygon 1005, das eine Diffusionsgeometrie darstellt und aus einem einzigen Adersegment aufgebaut ist. Ähnlich enthält die Diffusionsinsel 1004 ein Polygon 1009, das eine Diffusionsgeometrie darstellt und aus einem einzigen Adersegment aufgebaut ist.
  • Gemäß einer Ausführung der Erfindung wird die Durchführung einer Abstandsprüfung zwischen parallelen überlappenden Rändern von Adersegmenten erreicht durch einen Vergleich des senkrechten Abstands zwischen den Adern mit dem minimalen Platz, der durch die geltenden Konstruktionsregeln gefordert wird. Z. B. beinhaltet die Durchführung einer Abstandsprüfung zwischen dem Polygon 1005 und dem Polygon 1009 die Berechnung eines orthogonalen Abstands zwischen den Punkten a1 und a2 auf dem gerichteten Liniensegment A und den Punkten b1 und b2 auf dem Liniensegment B, und dann Vergleichen des berechneten Abstands mit dem durch die Konstruktionsregeln spezifizierten minimalen Abstand. Wenn der berechnete Abstand dem durch die Konstruktionsregeln spezifizierten minimalen Abstand nicht genügt, dann muss eines der Polygone 1005 oder 1009 bewegt werden. Wenn z. B. der Abstand zwischen dem Polygon 1005 und dem Polygon 1009 dem durch die Konstruktionsregeln spezifizierten minimalen Abstand nicht genügt, dann könnte das Polygon 1005 in der Abwärtsrichtung bewegt werden, um den Abstand zwischen dem Polygon 1005 und dem Polygon 1009 zu vergrößern. Alternativ könnte das Polygon 1009 in der Aufwärtsrichtung bewegt werden.
  • Zur Berechnung des Abstands zwischen nicht überlappenden Adern werden die nächsten Ecken zwischen den zwei Adern verwendet, und anstatt eines orthogonalen Abstands wird ein nicht orthogonaler oder Manhattenabstand verwendet. Der Begriff Manhattenabstand bezieht sich auf einen Abstand, wo jede Einheit in der X-Richtung einer Einheit darüber und in der Y-Richtung eine Einheit darüber liegt. Der resultierende Richtungsvektor ist dann einer von (oben, links), (oben, rechts), (unten, rechts) oder (unten, links). Wenn der Abstand dem durch die Konstruktionsregeln spezifizierten minimalen Abstand nicht genügt, dann wird eines der Polygone in einer Richtung bewegt, die den zwei gegenüberliegenden Seiten einer der Ecken gegenüberliegt.
  • Man nehme z. B. in 10A an, dass eine Diffusion zu Polysiliciumabstandsprüfung zwischen dem Punkt b1 auf dem Polygon 1009 und dem Punkt c1 auf dem Polygon 1010 durchgeführt wird. Wenn der Abstand zwischen den Punkten b1 und c1 dem durch die Konstruktionsregeln spezifizierten minimalen Abstand nicht genügt, dann wird das Polygon 1010 in Richtung (unten, links) bewegt, da eine der nächsten Seiten 1014 des Polygons 1010 nach oben gerichtet ist, und die andere der nächsten Seiten 1016 nach rechts gerichtet ist. Auf ähnliche Weise könnte das Polygon 1009 in der Richtung (oben, rechts) bewegt werden.
  • Sobald eine Abstandsverletzung identifiziert worden ist und die Richtung, um die eines der Polygone zur Erfüllung der Konstruktionsregeln bewegt werden muss, bestimmt worden ist, muss der Abstand, um den das Polygon zur Erfüllung der minimalen Abstandserfordernisse bewegt werden muss, bestimmt werden. Gemäß einer Ausführung der Erfindung wird ein neuartiger Ansatz vorgesehen, um den Abstand zur Umordnung der Layoutgeometrie zu bestimmen, um ein Abstandserfordernis zu erfüllen. Allgemein beinhaltet der Ansatz die Konstruktion einer "Ausschlusszone" um die Layoutgeometrie herum, um die minimale Trennung zu definieren, die zwischen dieser Layoutgeometrie und einer anderen Layoutgeometrie eingehalten werden, um den durch die Konstruktionsregeln geforderten minimalen Abstand zu erfüllen. Dieser Ansatz ist nicht von irgendeiner bestimmten Datenstrukturarchitektur abhängig. Wenn ein Punkt, der ein Teil der anderen Geometrie ist, innerhalb der Ausschlusszone liegt, dann liegt eine Abstandsverletzung vor.
  • Wie in 11 gezeigt, ist ein Adersegment 1100 zumindest teilweise aus zwei gerichteten Liniensegmenten 1102 und 1104 aufgebaut, die sich an einem Punkt 1105 treffen. Zur Konstruktion der Ausschlusszone werden zwei Linien 1106 und 1108 entlang der Richtungsvektoren der Liniensegmente 1102 und 1104 an einer Trennung von den gerichteten Liniensegmenten 1102, 1104 gezogen, um die Konstruktionsregeln zu erfüllen. Die Linien 1106 und 1108 werden gebildet durch Auswärtsbewegung von einem Punkt 1105 in Richtung senkrecht zur Richtung der gerichteten Liniensegmente 1102 und 1104. Wenn die gerichteten Liniensegmente 1102 und 1104 zueinander senkrecht, dann wird eine dritte Linie 1110 gezogen, die die Linien 1106 und 1108 verbindet. Die Linien 1106, 1108 und 1110 bilden eine Ausschlusszone 1112 um das Adersegment 1100 herum. Wenn die gerichteten Liniensegmente 1102 und 1104 orthogonal sind, beruht die Platzierung der Linien 1106 und 1108 in Bezug auf die gerichteten Liniensegmente 1102 und 1104 auf dem Kartesischen Breiten-Abstands- oder Umfangswert. Die Platzierung der dritten Linie 1110 beruht auf der Manhattenbreite, dem Abstand oder den Umfängen, wie sie durch die Konstruktionsregeln definiert sind. Da die Manhattenbreiten, Abstands- oder Umfangsregeln relativ zur Kartesischen Regel größer werden, bewegt sich die Linie 1110 von dem Adersegment 1100 auswärts, während die Linien 1106 und 1108 am Ort verbleiben. Innerhalb der Grenze kann die Linie 1110 bis zu den Kreuzungen der Linien 1106 und 1108 nach außen bewegt werden.
  • Wenn andererseits die gerichteten Liniensegmente 1102 und 1104 nicht orthogonal sind, dann beruht die Platzierung der Linien 1106 und 1108 in Bezug auf die gerichteten Liniensegmente 1102 und 1104 auf dem Kartesischen Breiten-, Abstands- oder Umfangswert, geteilt durch die Quadratwurzel von zwei und aufgerundet zum nächsten ganzzahligen Wert, um den Manhattenabstand bereitzustellen, der zum Erhalten des erforderlichen Kartesischen Abstands erforderlich ist.
  • Der Ansatz zum Umordnen eines Adersegments, um einem Abstandserfordernis zu erfüllen, gemäß einer Ausführung der Erfindung, wird nun in Bezug auf das Flussdiagramm von 12 beschrieben. Nach dem Start in Schritt 1200 werden in Schritt S1202 zwei Linien 1106 und 1108 entlang den Richtungsvenktoren der zwei Liniensegmente konstruiert, die das Adersegment aufbauen. In Schritt 1204 wird bestimmt, ob die gerichteten Liniensegmente 1102, 1104 senkrecht sind. Falls ja, dann wird in Schritt 1206 bestimmt, ob die gerichteten Liniensegmente 1102, 1104 orthogonal sind. Wenn die gerichteten Liniensegmente 1102, 1104 beide senkrecht und orthogonal sind, dann wird in Schritt 1208 der Manhattenabstand benutzt, um eine dritte Linie 1110 in Bezug auf die zwei konstruierten Linien zu positionieren.
  • Wenn andererseits in Schritt 1204 bestimmt wird, dass die gerichteten Liniensegmente 1102, 1104 nicht senkrecht sind, dann umfasst die Ausschlusszone die gerichteten Liniensegmente 1106 und 1108, und der Prozess wird in Schritt 1214 abgeschlossen. Wenn jedoch in Schritt 1206 bestimmt wird, dass die gerichteten Liniensegmente 1102, 1104 nicht orthogonal sind, dann basiert der Ort der dritten Linie 1110 in Bezug auf die ersten zwei konstruierten Linien auf dem minimalen Kartesischen Abstand (Produkt der Quadratwurzel von zwei und des Manhattenabstands, aufgerundet), der durch die Konstruktionsregeln spezifiziert ist.
  • Dann wird in Schritt 1212 die dritte Linie 1110 konstruiert und zwischen die gerichteten Liniensegmente 1102 und 1104 gelegt. Der Prozess ist in Schritt 1214 abgeschlossen. Dieser Ansatz kann auch dazu benutzt werden, die Polygonbreiten und Kontaktumfassungen zu prüfen und zu korrigeren.
  • d. Erzeugen der Polygonausgabe
  • Gemäß einer Ausführung der Erfindung wird hierin die Fähigkeit angegeben, eine Polygonausgabe auf der Basis der hierin beschriebenen Datenstrukturhierarchie zu generieren. Dieser Ansatz erzeugt weniger Polygone als der alternative Ansatz zum Erzeugen eines Polygons für jedes Adersegment. Das Erzeugen weniger Polygone reduziert die Zeit, die zum Durchlauf der Analyseprogramme erforderlich ist, wie etwa Konstruktionsregelprüfungen, Schaltungsextraktion und Maskenherstellung. Im Kontext von computerunterstützten Designpaketen können weniger Polygone auch den Überblick über das Layout leichter machen, weil weniger Polygone auf dem Schirm sind. Allgemein beinhaltet der Ansatz das Auswerten von Aderssegmentdatenstrukturen für jede Ader, um kolineare Punktsätze zu identifizieren, die dann kombiniert werden, um die Anzahl der Polygone zu reduzieren. Gemäß einer Ausführung der Erfindung werden linke Seiten durchgehender Adersegmente ausgewertet und werden dann die rechten Seiten derselben durchgehenden Adersegmente ausgewertet.
  • Z. B. zeigt 13A eine Ader 1300, die aus drei durchgehenden Adersegmenten 1302, 1304 und 1306 aufgebaut ist, gemäß einer Ausführung der Erfindung. Die linke Seite des Adersegments 1302 ist durch ein gerichtetes Liniensegment a definiert, das wiederum durch Endpunkte a1 und a2 definiert ist. Die linke Seite des Adersegments 1304 ist durch ein gerichtetes Liniensegment b definiert, das wiederum durch Endpunkte b1 und b2 definiert ist. Die linke Seite des Adersegments 1306 ist durch ein gerichtetes Liniensegment c definiert, das wiederum durch Endpunkte c1 und c2 definiert ist. Zum Erzeugen einer Polygondarstellung der Ader 1300 gemäß einer Ausführung der Erfindung werden kolineare Punktsätze entlang linken und rechten Seiten von Adersegmenten 1302, 1304 und 1306 kombiniert. Da das gerichtete Liniensegment a kolinear zu dem gerichteten Liniensegment b ist, können die Punkte a2 und b1 eliminiert werden, was effektiv eine einzige linke Seite entlang den Adersegmenten 1302 und 1304 erzeugt. Da die Punkte b2 und c1 zusammenfallen, können sie ähnlich durch einen einzigen Punkt ersetzt werden. 13B zeigt eine Polygondarstellung 1308 der Ader 1300 von 13A, nachdem kolineare Punktsätze kombiniert worden sind, gemäß einer Ausführung der Erfindung.
  • Einige der Polygonmanipulationsprozesse definieren eine maximale Anzahl von Poylgonpunkten pro Polygon. In dieser Situation ist die Anzahl der Segmente, die gemäß diesem Ansatz verfolgt werden können, auf die maximale Anzahl zulässiger Polygone, geteilt durch vier, begrenzt. Wenn die Anzahl der Adersegmente diese Zahl für eine gegebene Ader überschreitet, dann werden zusätzliche Polygone benutzt, um diese Ader dadrzustellen.
  • HARDWARE-ÜBERBLICK
  • 14 ist ein Blockdiagramm, das ein Computersystem 1400 zeigt, auf dem eine Ausführung der Erfindung implementiert werden kann. Das Computersystem 1400 enthält einen Bus 1402 oder einen anderen Kommunikationsmechanismus zum Kommunizieren von Information sowie einen mit dem Bus 1402 gekoppelten Prozessor 1404 zur Informationsverarbeitung. Das Computersystem 1400 enthält auch einen Hauptspeicher 1406, wie etwa einen Direktzugriffsspeicher (RAM) oder eine andere dynamische Speichervorrichtung, die mit dem Bus 1402 gekoppelt ist, zur Speicherung von Information und Anweisung zur Ausführung durch den Prozessor 1404. Der Hauptspeicher 1406 kann auch zum Speichern temporärer Variablen oder anderer intermediärer Information während der Ausführung von Anweisungen zur Ausführung durch den Prozessor 1404 verwendet werden. Das Computersystem 1400 enthält ferner einen Festwertspeicher (ROM) 1408 oder eine andere statische Speichervorrichtung, die mit dem Bus 1402 gekoppelt ist, zum Speichern von statischer Information und Anweisungen für den Prozessor 1404. Eine Speichervorrichtung 1410, wie etwa eine Magnetplatte oder eine Optikplatte, ist vorgesehen und mit dem Bus 1402 gekoppelt, zum Speichern von Information und Anweisungen.
  • Das Computersystem 1400 kann über den Bus 1402 mit einer Anzeige 1412, wie etwa einer Kathodenstrahlröhre (CRT) gekoppelt sein, um einem Computeranwender Information anzuzeigen. Eine Eingabevorrichtung 1414, einschließlich alphanumerischen und anderen Tasten, ist mit dem Bus 1402 gekoppelt, zur Kommunikation von Informations- und Befehlsauswahlen an den Prozessor 1404. Ein anderer Typ der Verwendereingabevorrichtung ist eine Cursorsteuerung 1416, wie etwa eine Maus, ein Trackball oder Cursorrichtungstasten zur Kommunikation von Richtungsinformation und Befehlsauswahlen an den Prozessor 1404 und zum Steuern der Cursorbewegung auf der Anzeige 1412. Diese Eingabevorrichtung hat typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. X) und einer zweiten Achse (z. B. Y), die es erlauben, dass die Vorrichtung Positionen in einer Ebene spezifiziert.
  • Die Erfindung bezieht sich auf die Verwendung des Computersystems 1400 zur Darstellung von Polygonen in einem IC-Layout. Gemäß einer Ausführung der Erfindung wird die Darstellung von Polygonen in einem IC-Layout durch das Computersystem 1400 in Antwort darauf vorgesehen, dass der Prozessor 1404 in dem Hauptspeicher 1406 enthaltene Anweisungssequenzen ausführt. Diese Anweisungen können in den Hauptspeicher 1406 aus einem anderen computerlesbaren Medium eingelesen werden, wie etwa einer Speichervorrichtung 1410. Jedoch ist das computerlesbare Medium nicht auf solche Vorrichtungen, wie etwa die Speichervorrichtung 1410, beschränkt. Z. B. kann das computerlesbare Medium eine Floppy Disk, eine Flexi Disk, eine Festplatte, ein Magnetband oder irgendein anderes magnetisches Medium enthalten, eine CD-ROM, irgendein anderes optisches Medium, Lochkarten, Papierband oder irgendein anderes physikalisches Medium mit Lochmuster, ein RAM, ein PROM sowie ein EPROM und ein FLASH-EPROM, irgendeinen anderen Speicherchip und eine Kassette, eine Trägerwelle, wie nachfolgend beschrieben, oder irgendein anderes Medium sein, aus dem ein Computer lesen kann.
  • Die Ausführung der in dem Hauptspeicher 1406 enthaltenen Anweisungssequenzen bewirkt, dass der Prozessor 1404 die zuvor beschriebenen Prozessschritte ausführt. In alternativen Ausführungen kann eine hartverdrahtete Schaltung anstelle von oder in Kombination mit Softwareanweisungen verwendet werden, um die Erfindung zu implementieren. Daher sind die Ausführungen der Erfindung nicht auf irgendeine bestimmte Kombination von Hardwareschaltung und Software beschränkt.
  • Das Computersystem 1400 enthält auch eine Kommunikationsschnittstelle 1418, die mit dem Bus 1402 gekoppelt ist. Die Kommunikationsschnittstelle 1418 bietet eine Zweiwegedaten-Kommunikationskupplung mit einer Netzwerkverknüpfung 1420, die mit einem lokalen Netzwerk 1422 verbunden ist. Z. B. kann die Kommunikationsschnittstelle 1418 eine integrierte digitale Dienstnetzwerk (ISDN)-Karte oder ein Modem sein, um für eine Datenkommunikationsverbindung mit einem entsprechenden Telefonleitungstyp zu sorgen. Als ein anderes Beispiel kann die Kommunikationsschnittstelle 1418 eine Lokalbereichnetzwerk (LAN)-Karte sein, um eine Datenkommunikationsverbindung mit einem kompatiblen LAN vorzusehen. Es können auch drahtlose Verknüpfungen implementiert werden. In jeder solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 1418 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, welche verschiedene Informationstypen repräsentieren.
  • Die Netzwerkverknüpfung 1420 liefert typischerweise eine Datenkommunikation durch ein oder mehrere Netzwerke zu anderen Datenvorrichtungen. Z. B. kann die Netzwerkverknüpfung 1420 eine Verbindung durch ein lokales Netzwerk 1422 zu einem Hostecomputer 1424 oder zu einem Datengerät vorsehen, das durch einen Internet-Serviceprovider (ISP) 1426 betrieben wird. Das ISP 1426 liefert wiederum Datenkommunikationsdienste durch ein weltweites Paketdaten-Kommunikationsnetzwerk, das nun allgemein als "Internet" 1428 bezeichnet wird. Das lokale Netzwerk 1422 und das Internet 1428 verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverknüpfung 1420 und durch die Kommunikationsschnittstelle 1418, welche die digitalen Daten zu und von dem Computersystem 1400 tragen, sind beispielhafte Formen von Trägerwellen, welche die Information transportieren.
  • Das Computersystem 1400 kann Meldungen senden und Daten empfangen, einschließlich einem Programmcode, und zwar durch das oder die Netzwerke, die Netzwerkverknüpfung 1420 und die Kommunikationsschnittstelle 1418. Im Beispiel des Internets könnte ein Server 1430 einen angeforderten Code für ein Anwenderprogramm durch das Internet 1428, das ISP 1426, das lokale Netzwerk 1422 und die Kommunikationsschnittstelle 1418 übertragen. Gemäß der Erfindung sorgt eine solche heruntergeladene Anwendung für die Darstellung von Polygonen in einem IC-Layout, wie hierin beschrieben.
  • Der empfangene Code kann durch den Prozessor 1414 ausgeführt, wenn er empfangen wird, und/oder in der Speichervorrichtung 1410 oder einer anderen nicht-flüchtigen Speicherung zur späteren Ausführung gespeichert werden. Auf diese Weise kann das Computersystem 1400 einen Anwendercode in der Form einer Trägerwelle erhalten.
  • Obwohl Ausführungen der Erfindung zu Illustrationszwecken im Kontext von Transistoren enthaltenden IC-Layouts beschrieben worden sind, ist die Erfindung auch auf IC-Layouts anwendbar, die irgendeinen typ integrierter Schaltungskomponenten oder -vorrichtungen enthält, wie etwa Widerstände, Kondensatoren, Logikgatter oder irgendeinen anderen Typ von IC-Vorrichtungen.
  • Die Erfindung bietet verschiedene Vorteile gegenüber früheren Ansätzen zur Darstellung von Polygonen in einem IC-Layout. Erstens kann auch die höchstkomplizierte Geometrie durch Adersegmente dargestellt werden, einschließlich achteckigen Kontaktumfängen und unregelmäßig geformten Diffusionsinseln. Auch erleichtert die Polygondarstellung mittels Adersegmenten die geometrische Analyse, wie etwa Abstands- und Umfangsprüfung. Die Adersegmente sind für die geometrische Analyse zweckdienlich, weil die meisten freiliegenden Polygonränder bekannt sind und die Breiten, Abstands- und Umfangsprüfungen nur dann gültig sind, wenn sie an freiliegenden Polygonrändern angewendet werden. Viele horizontale Ränder in einer Datenbank von Trapezen befinden sich tatsächlich innerhalb der Polygone, und die Analysesoftware muss signifikanten Aufwand betreiben, um diese Außenräder zu finden. Adersegmente können auch die meisten üblichen Layoutformen direkt darstellen, was eine leichte Implementierung komplizierterer Regeln erlaubt (wie etwa die Ausschlusszone). Z. B. könnte ein Polysiliciumgatter erfordern, dass seine Breite größer wird, wenn das Gatterpolygon mit einem Winkel quert. Weil das Gatterpolygon direkt aus Adersegmenten aufgebaut ist, ist es leicht, diese Regel auf segmentweiser Basis in Kraft zu setzen, durch Prüfen der Liniensegmentrichtungen und Sicherstellen, dass ihr Abstand größer ist, wenn ihre Winkel nicht orthogonal sind. Der Adersegmentansatz erleichtert auch eine relativ leichte elektrische Analyse, wie etwa Widerstandsprüfung, weil die Verwendung von Adersegmenten erlaubt, dass der Widerstand einer Ader schnell berechnet wird. Der Adersegmentansatz ist auch zur Implementierung in Computersoftware gut geeignet, weil sich Adersegmente in Datenstrukturen leicht ausdrücken lassen. Der Vorteil von Adersegmenten ist, dass die Form allgemein verwendeter Layoutstrukturen viel näher sind, sodass viel weniger von diesen erforderlich sind, um diese Strukturen darzustellen, und es viel weniger wahrscheinlich ist, dass die Form eines Objekts nicht offensichtlich ist, nachdem nur ein oder zwei Datenstrukturen inspiziert sind. Mit Trapezen und Rechtecken kann eine kleinere Änderung zur Polygonform bewirken, dass die Trapezdatenstrukturen auf dem gesamten Weg an der anderen Seite des Polygons modifiziert werden, was es schwierig macht, mit einem Polygon als Einheit zu arbeiten.

Claims (3)

  1. Computerimplementiertes Verfahren der Bestimmung der kanonischen Richtung von einem gerichteten Liniensegment zu einem beliebigen Punkt in einer integrierten Schaltungsauslegung, wobei das Verfahren die Schritte umfasst: a) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen Punkt auf dem gerichteten Liniensegment; b) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen ersten Endpunkt des gerichteten Liniensegments; und c) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen zweiten Endpunkt des gerichteten Liniensegments; und d) auf der Basis der Ergebnisse der Schritte a) bis c), Zuweisen einer kanonischen Richtung von dem gerichteten Liniensegment zu dem beliebigen Punkt.
  2. Computerlesbares Medium zum Bestimmen der kanonischen Richtung von einem gerichteten Liniensegment zu einem beliebigen Punkt in einer integrierten Schaltungsauslegung, wobei das computerlesbare Medium computerlesbare Codes aufweist, die, wenn sie durch einen oder mehrere Prozesse ausgeführt werden, sämtliche Verfahrensschritte von Anspruch 1 ausführen.
  3. Computersystem zum Bestimmen der kanonischen Richtung von einem gerichteten Liniensegment zu einem beliebigen Punkt in einer integrierten Schaltungsauslegung, wobei das Computersytem umfasst: ein oder mehrere Prozessoren; und einen Speicher, der mit dem einen oder mehreren Prozessoren kommunikativ gekoppelt ist, wobei der Speicher computerlesbare Codes aufweist, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren die Funktionen ausführen von: a) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen Punkt auf dem gerichteten Liniensegment; b) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen ersten Endpunkt des gerichteten Liniensegments; und c) Bestimmen des Orts des beliebigen Punkts in Bezug auf einen zweiten Endpunkt des gerichteten Liniensegments; und d) auf der Basis der Ergebnisse der Schritte a) bis c), Zuweisen einer kanonischen Richtung von dem gerichteten Liniensegment zu dem beliebigen Punkt.
DE69824765T 1997-10-30 1998-10-28 Polygondarstellung im Layout eines integrierten Schaltkreises Expired - Lifetime DE69824765T2 (de)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
DE69824765D1 DE69824765D1 (de) 2004-07-29
DE69824765T2 true DE69824765T2 (de) 2005-07-21

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 Before (1)

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

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 レイアウト検証方法とレイアウト検証装置
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
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
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 株式会社東芝 自動設計方法、露光用マスクセット、半導体集積回路装置、半導体集積回路装置の製造方法、および自動設計プログラムを記録した記録媒体
US6898773B1 (en) 2002-01-22 2005-05-24 Cadence Design Systems, Inc. Method and apparatus for producing multi-layer topological routes
US6889372B1 (en) 2000-07-15 2005-05-03 Cadence Design Systems Inc. Method and apparatus for routing
US7003754B2 (en) * 2000-12-07 2006-02-21 Cadence Design Systems, Inc. Routing method and apparatus that use of diagonal routes
US7080336B2 (en) * 2000-12-06 2006-07-18 Cadence Design Systems, Inc. Method and apparatus for computing placement costs
US6516455B1 (en) * 2000-12-06 2003-02-04 Cadence Design Systems, Inc. Partitioning placement method using diagonal cutlines
US7055120B2 (en) * 2000-12-06 2006-05-30 Cadence Design Systems, Inc. Method and apparatus for placing circuit modules
US6826737B2 (en) * 2000-12-06 2004-11-30 Cadence Design Systems, Inc. Recursive partitioning placement method and apparatus
WO2002047165A2 (en) * 2000-12-06 2002-06-13 Simplex Solutions, Inc. Method and apparatus for considering diagonal wiring in placement
US7024650B2 (en) * 2000-12-06 2006-04-04 Cadence Design Systems, Inc. Method and apparatus for considering diagonal wiring in placement
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
US7073150B2 (en) 2000-12-07 2006-07-04 Cadence Design Systems, Inc. Hierarchical routing method and apparatus that use diagonal routes
US6915501B2 (en) 2001-01-19 2005-07-05 Cadence Design Systems, Inc. LP method and apparatus for identifying routes
US6738960B2 (en) * 2001-01-19 2004-05-18 Cadence Design Systems, Inc. Method and apparatus for producing sub-optimal routes for a net by generating fake configurations
US6895569B1 (en) 2001-06-03 2005-05-17 Candence Design Systems, Inc. IC layout with non-quadrilateral Steiner points
US6957411B1 (en) 2001-06-03 2005-10-18 Cadence Design Systems, Inc. Gridless IC layout and method and apparatus for generating such a layout
US6882055B1 (en) 2001-06-03 2005-04-19 Cadence Design Systems, Inc. Non-rectilinear polygonal vias
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
US7310793B1 (en) 2001-06-03 2007-12-18 Cadence Design Systems, Inc. Interconnect lines with non-rectilinear terminations
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
US6829757B1 (en) 2001-06-03 2004-12-07 Cadence Design Systems, Inc. Method and apparatus for generating multi-layer routes
US6957408B1 (en) 2002-01-22 2005-10-18 Cadence Design Systems, Inc. Method and apparatus for routing nets in an integrated circuit layout
US7155697B2 (en) 2001-08-23 2006-12-26 Cadence Design Systems, Inc. Routing method and apparatus
US6795958B2 (en) 2001-08-23 2004-09-21 Cadence Design Systems, Inc. Method and apparatus for generating routes for groups of related node configurations
US7143382B2 (en) 2001-08-23 2006-11-28 Cadence Design Systems, Inc. Method and apparatus for storing routes
US6931616B2 (en) * 2001-08-23 2005-08-16 Cadence Design Systems, Inc. Routing method and apparatus
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
US6892371B1 (en) 2002-01-22 2005-05-10 Cadence Design Systems, Inc. Method and apparatus for performing geometric routing
US6938234B1 (en) 2002-01-22 2005-08-30 Cadence Design Systems, Inc. Method and apparatus for defining vias
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
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
US6944841B1 (en) 2002-01-22 2005-09-13 Cadence Design Systems, Inc. Method and apparatus for proportionate costing of vias
US7036105B1 (en) 2002-01-22 2006-04-25 Cadence Design Systems, Inc. Integrated circuits with at least one layer that has more than one preferred interconnect direction, and method for manufacturing such IC's
US7080329B1 (en) 2002-01-22 2006-07-18 Cadence Design Systems, Inc. Method and apparatus for identifying optimized via locations
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
US6684380B2 (en) * 2002-04-01 2004-01-27 International Business Machines Corporation Intelligent structure simplification to facilitate package analysis of complex packages
US7073151B1 (en) 2002-06-04 2006-07-04 Cadence Design Systems, Inc. Method and apparatus for identifying a path between a set of source states and a set of target states in a triangulated space
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
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
US6889371B1 (en) 2002-06-04 2005-05-03 Cadence Design Systems, Inc. Method and apparatus for propagating a function
US6988257B2 (en) * 2002-11-18 2006-01-17 Cadence Design Systems, Inc. Method and apparatus for routing
US6892369B2 (en) * 2002-11-18 2005-05-10 Cadence Design Systems, Inc. Method and apparatus for costing routes of nets
US7010771B2 (en) * 2002-11-18 2006-03-07 Cadence Design Systems, Inc. Method and apparatus for searching for a global path
US6996789B2 (en) * 2002-11-18 2006-02-07 Cadence Design Systems, Inc. Method and apparatus for performing an exponential path search
US7047513B2 (en) * 2002-11-18 2006-05-16 Cadence Design Systems, Inc. Method and apparatus for searching for a three-dimensional global path
US7003752B2 (en) * 2002-11-18 2006-02-21 Cadence Design Systems, Inc. Method and apparatus for routing
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
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
US7624367B2 (en) 2002-11-18 2009-11-24 Cadence Design Systems, Inc. Method and system for routing
US7480885B2 (en) * 2002-11-18 2009-01-20 Cadence Design Systems, Inc. Method and apparatus for routing with independent goals on different layers
US7171635B2 (en) * 2002-11-18 2007-01-30 Cadence Design Systems, Inc. Method and apparatus for routing
US7013445B1 (en) 2002-12-31 2006-03-14 Cadence Design Systems, Inc. Post processor for optimizing manhattan integrated circuits placements into non manhattan placements
US7089519B1 (en) 2002-12-31 2006-08-08 Cadence Design System, Inc. Method and system for performing placement on non Manhattan semiconductor integrated circuits
US7506295B1 (en) * 2002-12-31 2009-03-17 Cadence Design Systems, Inc. Non manhattan floor plan architecture for integrated circuits
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
US5625568A (en) * 1993-12-22 1997-04-29 Vlsi Technology, Inc. Method and apparatus for compacting integrated circuits with standard cell architectures
US5515293A (en) * 1993-12-22 1996-05-07 Vlsi Technology, Inc. Method and apparatus for generating a linked data structure for integrated circuit layout
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
IL135870A0 (en) 2001-05-20
EP1324234A1 (de) 2003-07-02
CA2308707C (en) 2005-01-11
JP3710710B2 (ja) 2005-10-26
JP2001522111A (ja) 2001-11-13
EP1044471B1 (de) 2003-04-23
CA2308707A1 (en) 1999-05-14
US6128767A (en) 2000-10-03
IL135870A (en) 2005-03-20
TW515066B (en) 2002-12-21
KR100399645B1 (ko) 2003-09-29
EP1324234B1 (de) 2004-06-23
WO1999023699A3 (en) 1999-07-22
DE69813892T2 (de) 2004-02-26
WO1999023699A2 (en) 1999-05-14
KR20010031616A (ko) 2001-04-16
EP1044471A2 (de) 2000-10-18
DE69813892D1 (de) 2003-05-28
DE69824765D1 (de) 2004-07-29

Similar Documents

Publication Publication Date Title
DE69824765T2 (de) Polygondarstellung im Layout eines integrierten Schaltkreises
DE69424944T2 (de) Datenreduktion in einem system zur analysierung von geometrischen datenbanken
DE69525606T2 (de) Eingabe- und Anzeigegerät für Handschrift
DE69521507T2 (de) System und verfahren zur auf einem modell basierender prüfung von lokalen entwurfsregeln
DE60116769T2 (de) Verfahren und system zur hierarchischen metallenden-, einschliessungs- und belichtungsprüfung
DE102014112789B4 (de) Zellen-Layout und Struktur
DE3856234T2 (de) Hierarchischer Aufstellungsplan
DE3650323T2 (de) VLSI-Chip und Verfahren zur Herstellung.
DE112013005820T5 (de) Graphische Benutzerschnittstelle für ein Werkzeug zur Lageplanerstellung bei der Entwurfsautomatisierung elektronischer Systeme
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
DE69817168T2 (de) Interaktive zeitspannenanzeige
DE3852596T2 (de) Verfahren zur Erzeugung eines diskreten Netzes zur Simulation mittels finiter Differenzen.
DE68926189T2 (de) Verarbeitungsverfahren von Layoutdaten
DE69327636T2 (de) Verfahren und Gerät zum Entwurf des Layouts von integrierten Millimeterwellen oder Mikrowellenschaltungen
EP0441810A1 (de) Verfahren zur plazierung von modulen auf einem träger.
DE102019116952B4 (de) Integrierte-schaltkreis-struktur, layout-schaubild-verfahren und system
DE68929110T2 (de) Verfahren zur Knotenpositionierung in einem graphen-basierenden Diagramm
DE102016118811A1 (de) Integrierte schaltung mit versetzten leitenden merkmalen
DE102013106539A1 (de) Verfahren zur Verifikation eines Layouts für Polysilizium-Zellrandstrukturen in FinFET-Standardzellen
DE102019116733A1 (de) Verfahren, vorrichtung und system eines integrierten schaltungslayouts
DE112021002870T5 (de) Halbleiterschaltungs-entwurf und einheits-pin-anordnung
DE10116328A1 (de) Verfahren zur Verifikation eines Layouts einer integrierten Schaltung mit Hilfe eines Rechners sowie dessen Anwendung zur Herstellung einer integrierten Schaltung
DE69232026T2 (de) Entwurfssystem zur Platzierung von Elementen
DE3688580T2 (de) Verfahren zur Verdrahtungsverbesserung von Meisterbild-DCVS-Chips.
DE102019123621A1 (de) Routungsressourcenverbesserndes verfahren zum generieren von layout-diagrammen, und system dafür

Legal Events

Date Code Title Description
8364 No opposition during term of opposition