DE112017001063T5 - Erstellung und Wiederverwendung anpassbarer strukturierter Verbindungen - Google Patents

Erstellung und Wiederverwendung anpassbarer strukturierter Verbindungen Download PDF

Info

Publication number
DE112017001063T5
DE112017001063T5 DE112017001063.2T DE112017001063T DE112017001063T5 DE 112017001063 T5 DE112017001063 T5 DE 112017001063T5 DE 112017001063 T DE112017001063 T DE 112017001063T DE 112017001063 T5 DE112017001063 T5 DE 112017001063T5
Authority
DE
Germany
Prior art keywords
layout
connection
directives
circuit elements
pins
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.)
Pending
Application number
DE112017001063.2T
Other languages
English (en)
Inventor
Jimmy Lin Hsiang-wen
Gunter Kurt Sendig Friedrich
Eric Drut Mathieu
Aubert Mccomber Philippe
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.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of DE112017001063T5 publication Critical patent/DE112017001063T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/16Customisation or personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/06Structured ASICs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

Ein anpassbares Routing-System ermöglicht es Designern, benutzerdefinierte Verbindungslayouts zu erstellen, die gespeichert, in Vorlagen umgewandelt, wiederverwendet und weiter angepasst werden können. Das System beschreibt benutzerdefinierte Verbindungslayouts in Form von „Strukturdirektiven“, die ihre Muster und Eigenschaften festlegen, anstatt genaue Abmessungen zu verwenden. Strukturdirektiven können bestimmte Verbindungsmuster zwischen Strukturbauteilen (z.B. Backbone oder Fischgrät), die Anordnung, Breite, Richtung oder Lage bestimmter Strukturbauteile und Eigenschaften von Strukturbauteilen im Vergleich zu anderen Bauteilen beschreiben. Diese Strukturdirektiven werden in der Regel beim Routing umgesetzt, z.B. durch Designbeschränkungen, die es dem Router ermöglichen, das Design lokal zu optimieren (z.B. hinsichtlich Kosten oder Leitungslänge) und dabei die strukturellen Absichten des Designers zu berücksichtigen. Das System kann auch Anpassungsmuster auf der Grundlage vorhandener Layoutvorlagen lernen und replizieren, indem es Verbindungsinformationen mit denen vorhandener Layoutvorlagen vergleicht und entsprechende Strukturdirektiven anwendet.

Description

  • QUERVERWEIS AUF VERWANDTE ANWENDUNGEN
  • Diese Anmeldung beansprucht den Nutzen der U.S. Provisional Patent Application Serial No. 62/301,059 mit dem Titel „Method to Create and Reuse Customizable Structured Interconnects“ und am 29. Februar 2016 eingereicht, die hiermit durch Verweis in ihrer Gesamtheit aufgenommen wird.
  • HINTERGRUND
  • Gebiet der Erfindung
  • Diese Offenbarung bezieht sich im Allgemeinen auf das Design von integrierten Schaltungen (ICs), insbesondere auf wiederverwendbare kundenspezifische strukturierte Verbindungsdesigns.
  • Beschreibung der verwandten Arbeiten
  • Routing ist ein integraler Bestandteil des integrierten Schaltungsentwurfs, aber aufgrund der Hartnäckigkeit von Routingproblemen erzielen Stapelrouter selten ein wirklich optimales Ergebnis. Stattdessen sind sie auf Heuristiken angewiesen, um ein Ergebnis zu erzielen, das „gut genug“ ist und sich oft auf Ziele wie die Kosten konzentriert. Benutzerdefinierte Routen stehen oft im Widerspruch zu diesen Zielen, da sie häufig Funktionen erfordern, die von Stapelroutern nicht berücksichtigt werden, wie zum Beispiel Symmetrie oder Redundanz. Insbesondere die Redundanz ist ein Problem, da sie aus Sicht des Stapelrouters von Natur aus nicht „notwendig“ ist und somit Kosten spart. Aus diesem Grund wird das anpassbare Routing in der Regel manuell durchgeführt, was mühsam und zeitintensiv ist. Darüber hinaus erfordert die Wiederverwendung sorgfältig gestalteter strukturierter Verbindungen für ähnliche Layouts in der Regel erhebliche Anpassungen, die ähnlich zeitaufwändig sind
  • ÜBERBLICK
  • Ausführungsformen beziehen sich auf ein anpassbares Routing-System, das es Entwicklern ermöglicht, eigene Verbindungslayouts zu erstellen, die gespeichert, als Vorlagen exportiert, wiederverwendet und angepasst werden können. Dies spart dem Entwickler Zeit, da nicht jedes kundenspezifische Verbindungslayout für jedes Design manuell erstellt oder für ähnliche, aber variierende Schaltungen manuell geändert werden muss. Durch die Beschreibung benutzerdefinierter Verbindungslayouts in Form von „Strukturdirektiven“, die ihre Muster und Eigenschaften festlegen, anstatt präzise Bemaßungen zu verwenden, kann das anpassbare Routing-System Layoutvorlagen generieren, die auf ähnliche Designs angewendet oder in Zukunft weiter angepasst werden können, und zwar nicht nur für dasselbe Design. Dies ermöglicht es Entwicklern, Konstruktionsänderungen vorzunehmen oder strukturelle Prinzipien eines früheren Designs in einem anderen Design mit anderen Verbindungsinformationen zu verfolgen. Darüber hinaus werden die Strukturdirektiven generell während des Routingprozesses umgesetzt, z.B. durch Designbeschränkungen, die es dem Router ermöglichen, das Design (z.B. für Kosten oder Leitungslänge) zu verbessern und gleichzeitig die strukturellen Absichten des Entwicklers zu berücksichtigen.
  • In einer Ausführungsform erzeugt das anpassbare Routing-System eine eigene Layoutverbindung, indem es Verbindungsinformationen für ein oder mehrere Schaltungselemente und ein benutzerdefiniertes Layout empfängt, das die physikalische Anordnung der Verbindungen zwischen dem einen oder den mehreren Schaltungselementen darstellt. Diese Verbindungsinformationen können in Form eines Schaltplans oder einer Netzliste vorliegen. Das benutzerdefinierte Layout enthält erste Strukturbestandteile und kann über eine interaktive Zeichnung in einer grafischen Oberfläche oder einer vorhandenen visuellen Darstellung vermittelt werden. Das anpassbare Routing-System extrahiert dann eine oder mehrere Strukturdirektiven aus dem benutzerdefinierten Layout, z.B. indem es das Layout analysiert, um eine oder mehrere Strukturdirektiven zu bestimmen, die zur Beschreibung der physikalischen Struktur der Verbindung verwendet werden können. Jede Strukturdirektive beschreibt eine Eigenschaft der physikalischen Auslegung von Verbindungen zwischen einem oder mehreren Schaltungselementen, wie z.B. bestimmte Verbindungsmuster zwischen Strukturkomponenten (z.B. Backbone oder Fischgrät, engl. Fishbone), die Anordnung, Breite, Richtung oder Lage bestimmter Strukturkomponenten und Eigenschaften von Strukturkomponenten im Vergleich zu anderen Strukturkomponenten. Eine Strukturdirektive kann die Platzierung einer Verbindung relativ zu einer oder mehreren Reihen festlegen, in denen mindestens ein Schaltungselement des einen oder der mehreren Schaltungselemente angeordnet ist. Beispielsweise kann eine Verbindung näher an einer entsprechenden Zeile als die Mitte eines Kanals zwischen zwei Zeilen der einen oder mehreren Zeilen oder über einer entsprechenden Zeile der einen oder mehreren Zeilen platziert werden. Das anpassbare Routing-System speichert die eine oder mehrere Strukturdirektiven als Layoutvorlage für die empfangenen Verbindungsinformationen, die dann ausgewählt (und ggf. geändert) und auf zukünftige Designs angewendet werden können. Das anpassbare Routing-System kann ein oder mehrere Schaltungselemente unter Beibehaltung der in den Strukturdirektiven beschriebenen Eigenschaften weiterleiten.
  • In einer Ausführungsform lernt bzw. repliziert das anpassbare Routing-System Anpassungsmuster auf Basis vorhandener Layoutvorlagen. Insbesondere speichert das anpassbare Routing-System eine oder mehrere Layoutvorlagen, die jeweils ein physikalisches Layout von Verbindungen zwischen einem oder mehreren Quellschaltungselementen einer Quellschaltung darstellen. Jede Layoutvorlage enthält Strukturdirektiven, die die Eigenschaften des entsprechenden physikalischen Layouts von Verbindungen beschreiben. Das anpassbare Routing-System identifiziert eine oder mehrere Layoutvorlagen, die sich auf Verbindungsinformationen für ein oder mehrere Zielschaltungselemente einer Zielschaltung beziehen. Die Verbindungsinformationen der Zielschaltungselemente können mit den Verbindungsinformationen für ein oder mehrere Quellschaltungselemente von mindestens einem der identifizierten Layoutvorlagen übereinstimmen. Alternativ können die Verbindungsinformationen der Zielschaltungselemente eine skalierte Version von Verbindungsinformationen sein, die Geräte (die in Reihe oder parallel geschaltet sind) von mindestens einer der identifizierten Layoutvorlagen hinzufügen oder entfernen. Eine Vielzahl der identifizierten Layoutvorlagen kann ein physikalisches Layout für das gleiche oder mehrere Quellschaltungselemente darstellen. Das anpassbare Routing-System wendet die Strukturvorgaben der identifizierten einen oder mehreren Layoutvorlagen auf das eine oder die mehreren Zielschaltungselemente des Zielschaltkreises an, um das eine oder die mehreren Zielschaltungselemente zu routen. Das anpassbare Routing-System kann die identifizierten einen oder mehrere Layoutvorlagen anwenden, indem es eine oder mehrere Änderungen an den Layoutvorlagen identifiziert, die Strukturdirektiven der identifizierten einen oder mehreren Layoutvorlagen entsprechend der einen oder mehreren Änderungen überarbeitet und die überarbeiteten Strukturdirektiven zum Routing der einen oder mehreren Ziel-Schaltungselemente sendet. Die Änderungen können das Hinzufügen einer oder mehrerer redundanter Verbindungen beinhalten. Die Änderungen können identifiziert werden, indem eine oder mehrere Unterschiede zwischen den Verbindungsinformationen des einen oder der mehreren Zielschaltungselemente und den Verbindungsinformationen des einen oder der mehreren Quellschaltungselemente des identifizierten einen oder der mehreren Layoutvorlagen ermittelt und dann die eine oder die mehreren Unterschiede berücksichtigt werden. Das anpassbare Routing-System kann die Verbindungsinformationen für die Ziel-Schaltungselemente weiter in eine Vielzahl von Blöcken aufteilen, und jede identifizierte Layoutvorlage der einen oder mehreren Layoutvorlagen kann einem der Vielzahl von Blöcken entsprechen.
  • Figurenliste
    • Figur (FIG.) 1 ist ein Flussdiagramm, das verschiedene Operationen für den Entwurf und die Herstellung eines integrierten Schaltkreises (engl. integrated circuit, IC) nach einer Ausführungsform darstellt.
    • 2 ist ein High-Level-Blockdiagramm, das ein Beispiel für ein Berechnungsgerät zur Durchführung eines kundenspezifischen Designs eines ICs nach einer Verkörperung darstellt.
    • 3 ist ein Blockschaltbild, das die Architektur eines anpassbaren Routing-Systems gemäß einer Ausführungsform darstellt.
    • 4A bis 4E sind visuelle Darstellungen von Beispielverbindungslayouts, die gemäß einer Ausführungsform verschiedenen Strukturdirektiven entsprechen.
    • 5 ist ein Flussdiagramm, das eine Methode zur Erstellung einer Layoutvorlage gemäß einer Ausführungsform darstellt.
    • 6A ist eine schematische Darstellung eines Teils eines ICs gemäß einer ersten Ausführungsform.
    • 6B ist ein Verbindungsdiagramm, das dem Teil des IC in 6A entspricht, gemäß der ersten Ausführungsform.
    • 6C ist ein Layout-Diagramm, das ein benutzerdefiniertes Verbindungslayout entsprechend dem Verbindungsdiagramm von 6B, entsprechend der ersten Ausführungsform, darstellt.
    • 7A ist eine schematische Darstellung eines Teils eines ICs gemäß einer zweiten Ausführungsform.
    • 7B ist ein Verbindungsdiagramm, das dem Teil des IC in 7A entspricht, entsprechend der zweiten Ausführungsform.
    • 7C ist ein Layout-Diagramm, das ein benutzerdefiniertes Verbindungslayout entsprechend dem Verbindungsdiagramm von 7B, entsprechend der zweiten Ausführungsform, darstellt.
    • 8 ist ein Flussdiagramm, das eine Methode zur Anpassung einer bestehenden Layoutvorlage gemäß einer Ausführungsform darstellt.
    • 9A und 9B sind Layoutdiagramme, die ein kundenspezifisches Verbindungslayout veranschaulichen, das für die Wiederverwendung weiter angepasst wurde, nach einer Ausführungsform.
    • 10A und 10B sind Diagramme, die Sätze von benutzerdefinierten Layoutvorlagen und ihre entsprechenden Teile eines ICs in Schaltplänen entsprechend einer Ausführungsform darstellen.
    • 11 ist ein Flussdiagramm, das eine Methode zur automatischen Anpassung einer vorhandenen Layoutvorlage gemäß einer Ausführungsform darstellt.
    • 12A ist ein Verbindungsdiagramm, das sich von den vorhandenen Layoutvorlagen unterscheidet, die wiederverwendet werden können, gemäß einer ersten Ausführungsform.
    • 12B ist ein Layout-Diagramm, das ein Verbindungslayout darstellt, das dem Verbindungsdiagramm von 12A entsprechend der ersten Ausführungsform entspricht.
    • 13A ist ein Verbindungsdiagramm, das sich von den vorhandenen Layoutvorlagen, die zur Wiederverwendung zur Verfügung stehen, unterscheidet, entsprechend einer zweiten Ausführungsform.
    • 13B ist ein Layout-Diagramm, das ein Verbindungslayout darstellt, das dem Verbindungsdiagramm von 12A entspricht, gemäß der zweiten Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Figuren (FIG.) und die folgende Beschreibung beziehen sich lediglich zur Veranschaulichung auf bevorzugte Ausführungsformen. Es sei darauf hingewiesen, dass aus der folgenden Diskussion alternative Ausführungsformen der hier dargestellten Strukturen und Methoden als praktikable Alternativen erkannt werden, die ohne Abweichung von den Prinzipien des Beanspruchten eingesetzt werden können.
  • Es wird nun ausführlich auf einige Ausführungsformen Bezug genommen, die in den beigefügten Figuren beispielhaft dargestellt sind. Es wird darauf hingewiesen, dass, wo immer möglich, ähnliche oder ähnliche Bezugsnummern in den Abbildungen verwendet werden können und ähnliche oder ähnliche Funktionen angeben können. Die Figuren stellen Ausführungsformen des offenbarten Systems (oder der Methode) lediglich zur Veranschaulichung dar. Ein Fachmann wird aus der folgenden Beschreibung leicht erkennen, dass alternative Verkörperungen der hier dargestellten Strukturen und Methoden verwendet werden können, ohne von den hier beschriebenen Prinzipien abzuweichen.
  • Ausführungen beziehen sich auf eine Layoutvorlage, die Strukturdirektiven enthält, die bestimmte Verbindungsmuster zwischen Strukturbauteilen, die Platzierung, Breite, Richtung oder Lage bestimmter Strukturbauteile und Eigenschaften von Strukturbauteilen im Vergleich zu anderen Bauteilen beschreiben. Die Vorlage kann von einem Benutzer generiert werden oder automatisch durch die Analyse eines physikalischen Layouts von Verbindungen zwischen Quellschaltungselementen einer Quellschaltung. Das Layout-Template kann ohne Modifikation oder mit Modifikation auf Zielschaltungselemente eines Zielschaltkreises angewendet werden, um das Routing zwischen den Zielschaltungselementen durchzuführen.
  • Ein hier beschriebenes Schaltungselement bezieht sich auf ein Element in einem Schaltplan. Das Schaltelement kann ein aktives Schaltelement (z.B. Transistor) oder ein passives Schaltelement (z.B. Widerstand, Kondensator und Induktivität) sein.
  • Ein hier beschriebenes Bauteil bezieht sich auf Abgriffe, Bündel, engl. trunk, und Stege, engl. spines, die physikalische Verbindungen zwischen Pins von Schaltungselementen herstellen. Ein Abgriff bezieht sich auf eine Verbindung, die sich direkt zu oder von einem Pin erstreckt. Ein Bündel bezieht sich auf eine Verbindung, die mit einer Vielzahl von Pins verbunden ist. Ein Steg verbindet Bündel und/oder andere Stege.
  • Überblick über einen EDA Entwurfsablauf
  • Figur (FIG.) 1 ist ein Flussdiagramm, das verschiedene Operationen für den Entwurf und die Herstellung einer integrierten Schaltung gemäß einer Ausführungsform veranschaulicht. Der Designprozess 100 beginnt mit der Generierung einer Produktidee 110, die im Rahmen eines Designprozesses mit Hilfe der Electronic Design Automation (EDA) Software 112 realisiert wird. Wenn der Entwurf fertig ist, kann er zum Tape-Out 134 gegeben werden. Nach dem Tape-Out wird ein Halbleiterchip hergestellt, um die verschiedenen Objekte (z.B. Gates, Metallschichten, Vias) im integrierten Schaltungsdesign zu bilden. Es werden Verpackungs- und Montageprozesse 138 durchgeführt, die zu fertigen Chips 140 führen.
  • Die EDA-Software 112 kann in einem oder mehreren Datenverarbeitungsgeräten wie dem Datenverarbeitungsgerät 200 aus 2 implementiert werden. Beispielsweise ist die EDA-Software 112 als Anweisungen auf dem computerlesbaren Datenträger gespeichert, die von einem Prozessor zur Durchführung der nachfolgend beschriebenen Operationen 114-132 des Entwurfsablaufs ausgeführt werden. Diese Designablaufbeschreibung dient zur Veranschaulichung. Insbesondere soll diese Beschreibung die vorliegende Offenlegung nicht einschränken. Beispielsweise kann ein tatsächlicher Entwurf eines integrierten Schaltkreises erfordern, dass ein Entwickler die Entwurfsoperationen in einer anderen Reihenfolge als der hier beschriebenen durchführt.
  • Beim Systementwurf 114 beschreiben die Entwickler die zu implementierende Funktionalität. Sie können auch eine Was-wäre-wenn-Planung durchführen, um die Funktionalität zu verfeinern und die Kosten zu kontrollieren. Es ist zu beachten, dass zu diesem Zeitpunkt eine Partitionierung der Hardware-Software-Architektur erfolgen kann. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Model Architect®, Saber®, System Studio® und Designware® Produkte.
  • Beim Logikentwurf und der Funktionsprüfung 116 wird VHDL- oder Verilog-Code für Module im Schaltkreis geschrieben und der Entwurf auf Funktionsgenauigkeit geprüft. Genauer gesagt, wird das Design überprüft, um sicherzustellen, dass es die richtigen Ergebnisse liefert. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: VCS®, Vera®, 10 Designware®, Magellan®, Formality®, ESP® und Leda® Produkte.
  • Während Synthese und Design für Test 118 wird VHDL/Verilog in eine Netzliste übersetzt. Diese Netzliste kann für die Zieltechnologie optimiert werden. Zusätzlich können Tests zur Überprüfung der fertigen Chips konzipiert und durchgeführt werden. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Design Compiler®, Physical Compiler®, Test Compiler®, Power Compiler®, FPGA Compiler®, Tetramax® und Designware® Produkte.
  • Bei der Netzlistenprüfung 120 wird die Netzliste auf Einhaltung der Timing-Bedingungen und auf Übereinstimmung mit dem VHDL/Verilog-Quellcode geprüft. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Formality®, Primetime® und VCS® Produkte.
  • Bei der Entwurfsplanung 122 wird ein Gesamtgrundriss für den Chip erstellt und für das Timing und das Top-Level-Routing analysiert. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Astro® und IC Compiler® Produkte.
  • Bei der physikalischen Umsetzung 124 erfolgt die Platzierung (Positionierung der Schaltungselemente) und das Routing (Verbindung derselben). Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Custom Compiler®, die Produkte Astro® und IC Compiler®. Die hier beschriebenen Ausführungsformen beziehen sich in erster Linie auf die physische Umsetzung 124.
  • Bei der Schaltungsanalyse 126 wird die Funktion der Schaltung auf Transistorebene überprüft, was eine Verfeinerung erlaubt. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Astrorail®, Primerail®, Primetime® und Star RC/XT® Produkte.
  • Bei der physikalischen Prüfung 128 wird der Entwurf auf Korrektheit geprüft für: Fertigung, elektrische Probleme, lithographische Probleme und Schaltkreise. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in dieser Phase verwendet werden können, sind das Hercules®-Produkt.
  • Bei der Auflösungsverbesserung 130 werden geometrische Manipulationen am Layout vorgenommen, um die Herstellbarkeit des Designs zu verbessern. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in diesem Stadium verwendet werden können, sind u.a: Proteus®, Proteus®AF und PSMGED® Produkte.
  • Bei der Maskendatenaufbereitung 132 werden die'Tape-Out'-Daten für die Herstellung von Masken zur Herstellung von fertigen Chips bereitgestellt. Beispiele für EDA-Softwareprodukte von Synopsys, Inc. aus Mountain View, CA, die in dieser Phase eingesetzt werden können, sind die CATS®-Produktfamilie.
  • Die formale Prüfung kann in der Phase des logischen Entwurfs und der Funktionsprüfung durchgeführt werden 116. Die Design-Spezifikation für niedrige Leistung wird typischerweise während der Stufen Synthese und Design für Test 118 oder Netzlistenverifikation 120 verarbeitet.
  • Ausführungsformen der vorliegenden Offenbarung können während einer oder mehrerer der oben beschriebenen Phasen verwendet werden. Konkret können Ausführungsformen für die Prozesse der Entwurfsplanung 122 und der physischen Umsetzung 124 verwendet werden.
  • Rechengeräte-Übersicht
  • 2 ist ein Blockschaltbild, das die Komponenten einer beispielhaften Maschine zeigt, die Befehle von einem maschinenlesbaren Medium lesen und in einem Prozessor (oder einem Controller) ausführen kann. Konkret zeigt 2 eine schematische Darstellung einer Maschine in der Beispielform eines Computersystems 200, in dem Anweisungen 224 (z.B. Software) zur Ausführung einer oder mehrerer der hier beschriebenen Methoden ausgeführt werden können. In alternativen Ausführungen arbeitet die Maschine als Einzelgerät oder kann mit anderen Maschinen verbunden (z.B. vernetzt) werden. In einer Netzwerkinstallation kann die Maschine als Server- oder Clientmaschine in einer Server-Client-Netzwerkumgebung oder als Peer-Maschine in einer Peer-to-Peer (oder verteilten) Netzwerkumgebung betrieben werden.
  • Die Maschine kann ein Server-Computer, ein Client-Computer, ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, ein Smartphone, eine Web-Appliance, ein Netzwerk-Router, Switch oder Bridge oder jede andere Maschine sein, die in der Lage ist, Anweisungen 224 (sequentiell oder anderweitig) auszuführen, die von dieser Maschine auszuführende Aktionen festlegen. Der Begriff „Maschine“ umfasst aber auch jede Sammlung von Maschinen, die einzeln oder gemeinsam Anweisungen 224 zur Durchführung einer oder mehrerer der hier beschriebenen Methoden ausführen.
  • Das beispielhafte Computersystem 200 umfasst einen Prozessor 202 (z.B. eine Zentraleinheit (CPU), eine Grafikprozessoreinheit (GPU), einen digitalen Signalprozessor (DSP), eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), eine oder mehrere integrierte Hochfrequenz-Schaltungen (RFICs) oder eine beliebige Kombination davon), einen Hauptspeicher 204 und einen statischen Speicher 206, die so konfiguriert sind, dass sie über einen Bus 208 miteinander kommunizieren. Das Computersystem 200 kann außerdem eine Grafikanzeigeeinheit 210 (z.B. ein Plasma-Bildschirm (PDP), eine Flüssigkristallanzeige (LCD), einen Projektor oder eine Kathodenstrahlröhre (CRT)) enthalten. Das Computersystem 200 kann auch ein alphanumerisches Eingabegerät 212 (z.B. eine Tastatur), ein Cursorsteuergerät 214 (z.B. eine Maus, einen Trackball, einen Joystick, einen Bewegungssensor oder ein anderes Zeigegerät), eine Speichereinheit 216, ein Signalerzeugungsgerät 218 (z.B. einen Lautsprecher) und ein Netzwerkschnittstellengerät 220 enthalten, die ebenfalls für die Kommunikation über den Bus 208 konfiguriert sind.
  • Die Speichereinheit 216 enthält ein maschinenlesbares Medium 222, auf dem Anweisungen 224 (z.B. Software) gespeichert sind, die eine oder mehrere der hier beschriebenen Methoden oder Funktionen enthalten. Die Anweisungen 224 (z.B. Software) können sich auch ganz oder teilweise im Hauptspeicher 204 oder im Prozessor 202 (z.B. im Cache-Speicher eines Prozessors) während dessen Ausführung durch das Computersystem 200 befinden, wobei der Hauptspeicher 204 und der Prozessor 202 ebenfalls maschinenlesbare Medien darstellen. Die Anweisungen 224 (z.B. Software) können über ein Netzwerk 226 über das Netzwerkschnittstellengerät 220 gesendet oder empfangen werden.
  • Während das maschinenlesbare Medium 222 in einem Beispiel als ein einzelnes Medium dargestellt wird, sollte unter dem Begriff „maschinenlesbares Medium“ ein einzelnes Medium oder mehrere Medien (z.B. eine zentrale oder verteilte Datenbank oder zugehörige Caches und Server) verstanden werden, die Befehle speichern können (z.B. Anweisungen 224). Unter dem Begriff „maschinenlesbares Medium“ ist auch jedes Medium zu verstehen, das in der Lage ist, Anweisungen (z. B. Anweisungen 224) zur Ausführung durch die Maschine zu speichern und das die Maschine veranlasst, eine oder mehrere der hier beschriebenen Methoden auszuführen. Der Begriff „maschinenlesbares Medium“ umfasst unter anderem Datenspeicher in Form von Festkörperspeichern, optischen Medien und magnetischen Medien.
  • Anpassbares Routing-System
  • 3 ist ein Blockschaltbild, das die Architektur eines anpassbaren Routing-Systems 300 gemäß einer Ausführungsform veranschaulicht. Das anpassbare Routing-System 300 ermöglicht es Anwendern (Designern), eigene strukturierte Verbindungen zu entwerfen, die dann über Stapel-Routing-Prozesse oder Nicht-Stapel-Routing-Prozesse hergestellt werden können. Das in 3 gezeigte anpassbare Routing-System 300 umfasst einen Schaltungsentwurfsspeicher 310, einen Strukturdirektivenspeicher 320, ein Strukturdirektiven-Extraktionsmodul 330, ein Layoutanpassungsmodul 340 und ein Vorlagenanpassungsmodul 350. In anderen Ausführungen kann das anpassbare Routing-System 300 zusätzliche, weniger oder andere Komponenten für verschiedene Anwendungen enthalten. Jede der oben genannten Komponenten kann als Modul im Speicher 204 eines Rechners des anpassbaren Routing-Systems 300 ausgeführt werden. Herkömmliche Komponenten wie Netzwerkschnittstellen, Sicherheitsfunktionen, Load Balancer, Failover-Server, Management- und Netzwerkbetriebskonsolen und ähnliches werden nicht dargestellt, um die Details der Systemarchitektur nicht zu verdecken.
  • Der Schaltungsentwurfsspeicher 310 ist eine Datenbank, die physikalische Layoutdaten für einen oder mehrere Schaltkreise speichert. Physikalische Layoutdaten für einen bestimmten Schaltkreis umfassen ein (physikalisches) Verbindungslayout, einen Schaltplan, Informationen zur Zuordnung von Schaltplänen, eine Anzahl von zu verwendenden Metallschichten und physikalische Prozesse, die mit der Herstellung des Schaltkreises verbunden sind. Das Verbindungslayout ist eine visuelle Darstellung der physikalischen Platzierung von Verbindungen zwischen Pins einer Schaltung. 4A bis 4E, 6B, 6C, 7B, 7C, 9A, 9B, 10A, 10B, 12B und 13B enthalten Beispiele für Verbindungslayouts, wie unten im Detail beschrieben. Schaltplan-Layout-Mappinginformationen können die Gruppierung von Pins eines oder mehrerer Schaltungselemente in eine oder mehrere Untergruppen von Pins und die Zuordnung von Pins in dem einen oder den mehreren Schaltungselementen zu anderen Pins in dem einen oder den mehreren Schaltungselementen anzeigen.
  • Der Schaltungsentwurfsspeicher 310 speichert auch „Layoutvorlagen“, d.h. Sätze von Strukturdirektiven (beschrieben in Verbindung mit dem Strukturdirektivenspeicher 320 unten), die ein bestimmtes Verbindungslayout in Verbindung mit den entsprechenden Verbindungsinformationen beschreiben. Verbindungsinformationen zeigen an, welche Pins angeschlossen sind und können durch Schaltpläne und Schaltplan-Layout-Mappinginformationen abgeleitet oder direkt in Form einer Netzliste oder ähnlicher Angaben bereitgestellt werden. Obwohl der Schaltungsentwurfsspeicher 310 als Teil des anpassbaren Routing-Systems 300 beschrieben wird, kann der Schaltungsentwurfsspeicher 310 Teil eines anderen Systems außerhalb des anpassbaren Routing-Systems 300 sein. Beispielsweise kann der Schaltungsentwurfsspeicher 310 als OpenAccess-Datenbank ausgeführt werden.
  • Der Strukturdirektivenspeicher 320 ist eine Datenbank, die „Strukturdirektiven“ speichert, die den allgemeinen physikalischen Aufbau und die Platzierung von Verbindungen in einem Verbindungslayout beschreiben. Ein Stapel-Routing-System (das Teil des anpassbaren Routing-Systems 300 oder ein separates System sein kann) kann die Strukturdirektiven interpretieren und anwenden, z.B. indem es sie zu Designbeschränkungen macht. Strukturdirektiven können z.B. ein Verbindungsmuster innerhalb einer Zeile oder über mehrere Zeilen hinweg beschreiben. Strukturdirektiven können weitere Eigenschaften der Strukturbauteile selbst beschreiben, wie Richtung, Breite, Anordnung (z.B. auf einer Achse parallel zum Strukturbauteil) und Metallschicht. Strukturdirektiven können außerdem die Art der zu verbindenden Pins angeben, wie z.B. Diffusion, Poly oder eine Kombination davon. Strukturdirektiven werden in Verbindung mit 4A bis 4E näher erörtert.
  • Das Strukturdirektiven-Extraktionsmodul 330 extrahiert Strukturdirektiven aus Verbindungslayouts. Dazu passt das Strukturdirektiven-Extraktionsmodul 330 das Verbindungslayout an bekannte Muster an, die mit Strukturdirektiven verknüpft sind. Beispielsweise kann das Strukturdirektiven-Extraktionsmodul 330 die in einem Verbindungslayout vorhandenen physikalischen Formen in Verbindung mit der logischen Verbindung und den Prozessdaten analysieren, um die Richtung (z.B. nach oben, unten, zu einer Mittelachse) der Abgriffe von den Pins der Geräte zu bestimmen, wie viele Bündel (z.B. ein einzelnes Bündel, ein Bündel für je drei Pins), um die Abgriffe in einer Zeile zu verbinden, und wo das Bündel bzw. die Bündel relativ zu der Zeile angeordnet werden sollen (z.B. entlang einer Mittelachse, versetzt von der Mittelachse in Richtung der Zeile oder von ihr weg).
  • Das Layout-Anpassungsmodul 340 generiert eigene Verbindungslayouts und Layoutvorlagen. Um ein eigenes Verbindungslayout „von Grund auf“ zu erstellen, erhält das Layout-Anpassungsmodul 340 Strukturbauteile von einem Designer, z.B. durch Zeichnungen (z.B. vorhandene Layoutdaten oder in einer grafischen Oberfläche des anpassbaren Routing-Systems 300) oder Textbefehle. Die Strukturbauteile sind in einem eigenen Verbindungslayout organisiert. Um ein benutzerdefiniertes Verbindungslayout auf Basis einer vorhandenen Layoutvorlage zu generieren, ruft das Layout-Anpassungsmodul 340 die Layoutvorlage ab und erhält vom Designer Änderungen an den Strukturbauteilen. Das Layout-Anpassungsmodul 340 generiert dann ein modifiziertes Verbindungslayout basierend auf dem Verbindungslayout aus der abgerufenen Layoutvorlage und den Änderungen des Benutzers. Das Layout-Anpassungsmodul 340 kann außerdem eine Layoutvorlage aus beiden oben beschriebenen Arten von benutzerdefinierten Verbindungslayouts erzeugen, indem die extrahierten Strukturdirektiven in Verbindung mit der entsprechenden logischen Struktur (z.B. einem Schaltplanausschnitt) im Schaltungsentwurfsspeicher 310 zur späteren Verwendung gespeichert werden. In beiden Szenarien können zusätzlich oder alternativ für das Stapel-Routing der entsprechenden Schaltungselemente Strukturdirektiven gesendet werden.
  • Das Vorlagenanpassungsmodul 350 generiert Verbindungslayouts auf Basis von Anpassungen an bestehende Layoutvorlagen. Beispielsweise kann eine Zielschaltung ähnliche Verbindungsinformationen wie eine oder mehrere Quellschaltungen haben, die bereits mit Layoutvorlagen verknüpft sind. Anstatt dass der Designer ein neues Verbindungslayout für die Zielschaltung erstellen muss, modifiziert das Vorlagenanpassungsmodul 350 automatisch (falls erforderlich) und wendet die Strukturdirektiven einer vorhandenen Layoutvorlage auf die Zielschaltung an, um ein Verbindungslayout zu erstellen.
  • Das Vorlagenanpassungsmodul 350 passt Layoutvorlagen an, indem es Musterähnlichkeiten erkennt, ohne eine identische physikalische Struktur zu benötigen. Beispielsweise bezeichnet eine aus 4A (weiter unten beschrieben) erstellte Layoutvorlage eine Struktur von zwei Zeilen mit einem Bündel im Kanal unter jeder Zeile. Für eine Struktur mit vier Zeilen, die ähnliche Gerätemuster hat, würde das Vorlagenanpassungsmodul 350 bestimmen, dass vier Bündel im Kanal unter einer der vier Zeilen platziert werden sollen. Weitere Anpassungen, die das Vorlagenanpassungsmodul 350 durchführt, sind die Erweiterung der Anzahl der Geräte pro Zeile und die Anpassung der Bündel- oder Stegplatzierung an ein Design mit einer anderen Anzahl von Spuren, engl. tracks. In einigen Ausführungsformen könnte das Vorlagenanpassungsmodul 350 eine Abbildungsanleitung zwischen den Technologien erhalten, um die Anpassung zu steuern. Beispielsweise kann die ursprüngliche Layoutvorlage geometrische Abmessungen und/oder Prozessebenen relativ zu einer bestimmten Technologie festlegen. Eine externe Abbildungsspezifikation, die beschreibt, wie die Schichten einer Zielschaltung mit denen einer Quellschaltung übereinstimmen, die der ursprünglichen Layoutvorlage zugeordnet ist, und die eine dimensionale Schrumpfführung bereitstellt, könnte angewendet werden, um die entsprechenden Teile der ursprünglichen Layoutvorlage auf die Zielschaltung abzubilden.
  • In einigen Ausführungsformen kann der Designer das angepasste Verbindungslayout durch das Layout-Anpassungsmodul 340 weiter anpassen. Das angepaßte Verbindungslayout oder das weitere angepasste Verbindungslayout kann entweder (oder beides) als Layoutvorlage gespeichert werden. Die Anpassung von Layoutvorlagen wird weiter unten in Verbindung mit 11 bis 13B diskutiert.
  • Eigenschaften des Verbindungslayouts und Strukturdirektiven
  • Strukturdirektiven beschreiben die allgemeinen Strukturmerkmale von Strukturbauteilen in einem Verbindungslayout und lassen sich danach kategorisieren, welche Aspekte der Strukturbauteile sie beschreiben. Beispielsweise lassen sich die im Folgenden diskutierten Strukturdirektiven in Strukturen, Eigenschaften und Muster gruppieren. Strukturdirektiven, die Strukturen beschreiben, geben an, wie Strukturbauteile miteinander verbunden sind, Strukturdirektiven, die Eigenschaften beschreiben, spezifizieren Eigenschaften der Strukturbauteile selbst, und Strukturdirektiven, die Muster beschreiben, geben an, wie die Strukturbauteile über mehrere Reihen von Pins organisiert sind. Die nachfolgend beschriebenen Strukturdirektiven sind lediglich Beispiele dafür, wie Strukturdirektiven mit Verbindungslayouts übereinstimmen und sind nicht einschränkend. Andere Ausführungen oder Implementierungen können andere Strukturdirektiven verwenden, um ähnliche oder zusätzliche Strukturkomponenten von Verbindungslayouts zu beschreiben. Ebenso können andere Ausführungsformen oder Implementierungen andere strukturelle Merkmale anstelle oder zusätzlich zu den nachfolgend beschriebenen spezifischen strukturellen Merkmalen beschreiben. Strukturdirektiven werden unten in geschweiften Klammern, d.h. {}, angegeben und können durch Semikolons getrennt werden, um zwischen den Zeilen abzugrenzen..
  • 4A bis 4E sind Layout-Diagramme von Beispiel-FinFETs, die verschiedenen Strukturdirektiven entsprechen, entsprechend einer Ausführungsform. Jedes der Beispiele 400a bis 400e enthält 16 Pins von FinFETs, die als vertikale Rechtecke dargestellt werden. Die 16 Pins sind in zwei Zeilen zu je acht Pins organisiert, die als „obere Zeile“ (d.h. der obere FinFET) und eine „untere Zeile“ (d.h. der untere FinFET) bezeichnet werden. Die obere und untere Zeile sind durch einen Mittelkanal getrennt, der keine Pins enthält. In einigen der Beispiele 400a bis 400e gibt es auch einen unteren Kanal unterhalb der unteren Zeile, der ebenfalls keine Pins enthält. Die verdunkelten Pins in beiden Zeilen repräsentieren die zu verbindenden Pins. Die vier mittleren Pins in der oberen Reihe sind verdunkelt und werden als „obere Pins“ bezeichnet. Die beiden äußersten Pins auf jeder Seite der unteren Zeile (d.h. insgesamt vier Pins) sind ebenfalls verdunkelt und werden als „untere Pins“ bezeichnet. Einige der Beispiele 400a bis 400e zeigen nicht explizit die oberen Pins, die mit den unteren Pins verbunden sind. In der Praxis können der (die) Bündel der oberen Pins und der (die) Bündel der unteren Pins durch einen oder mehrere Stege verbunden sein. Diese Stege, die die oberen Pins und die unteren Pins verbinden, wurden der Einfachheit halber weggelassen.
  • 4A bis 4D zeigen Beispiele für Strukturen, die durch Strukturdirektiven beschrieben werden. 4A und 4B sind Beispiele für Primärstrukturen {Backbone} bzw. {Fischgrät}. 4C und 4D sind Beispiele für Strukturänderungen {intermittierend} und {passend}, die auf Primärstrukturen angewendet werden können. {Backbone}, {Fischgrät}, {intermittierend} und {passend} sind alles Strukturdirektiven, die verwendet werden können, um Bündel zu beschreiben, und in einigen Verkörperungen können sie auch verwendet werden, um Stege zu beschreiben..
  • Beispiel 400a von 4A zeigt eine {Backbone} Struktur, die durch Abgriffe gekennzeichnet ist, die sich nur von einer Seite des Bündels erstrecken. Die Abgriffe 402 erstrecken sich von den vier oberen Pins in den Mittelkanal und sind mit einem einzigen Bündel 404 im Mittelkanal verbunden. Die Abgriffe 406a reichen von den beiden linken unteren Pins in den unteren Kanal. Die Abgriffe 406b reichen von den beiden rechten unteren Pins in den unteren Kanal. Die Abgriffe 406a und 400b sind alle an ein einziges Bündel 408 im unteren Kanal angeschlossen. Die Stämme 404 und 408 haben die Abgriffe 402 und 406a bzw. 406b nur auf einer Seite und würden daher durch die Strukturrichtlinie {Backbone} beschrieben. Beachten Sie, dass eine unmodifizierte {Backbone} Struktur ein einzelnes Bündel (z.B. 404 und 408) pro Zeile von Pins enthält, auch wenn die Pins nicht nebeneinander liegen (z.B. die unteren Pins).
  • Beispiel 400b aus 4B zeigt eine {Fischgrät} Struktur, die durch Abgriffe von beiden Seiten des Bündels gekennzeichnet ist. Wie im Beispiel 400a reichen die Abgriffe 402 von den vier oberen Pins nach unten und verbinden sich mit einem einzigen Bündel 410 im Mittelkanal. Im Gegensatz zu Beispiel 400a reichen die Abgriffe 406a und 406b der unteren Pins von den vier unteren Pins nach oben in den mittleren Kanal und verbinden sich mit dem gleichen Bündel 410, mit dem die oberen Pins verbunden sind. Das Bündel 410 hat von beiden Seiten ausgehende Abzweigungen zur Verbindung mit Pins sowohl in der oberen als auch in der unteren Zeile und würde daher durch die Strukturdirektive {Fischgrät} beschrieben werden.
  • Beispiel 400c aus 4C zeigt eine {intermittierende} Änderung an einer {Backbone} Struktur. Die {intermittierende} Änderung ist gekennzeichnet durch die Definition der Anzahl und Platzierung der Bündel auf der Basis von Gruppen benachbarter Pins. Die Anschlüsse der oberen Pins von Beispiel 400c entsprechen denen von Beispiel 400a, aber die Anschlüsse der unteren Pins enthalten nun zwei getrennte Bündel 410a und 410b im unteren Kanal anstelle eines einzelnen Bündels 408. Im Beispiel 400a überspannt das einzelne Bündel 408 die gesamte Länge des unteren Kanals, einschließlich vier Pins, die nicht verbunden werden, um die beiden linken unteren Pins mit den beiden rechten unteren Pins zu verbinden. Die {intermittierende} Änderung teilt jedoch das einzelne Bündel 408 in mehrere Bündel 412a und 412b auf, die jeweils nur den Teil des unteren Kanals überspannen, der der Gruppe der benachbarten Pins entspricht, die sie verbinden. Konkret sind die beiden linken unteren Pins benachbart, so dass die entsprechenden Abgriffe 406a mit einem Bündel 410a und die beiden rechten unteren Pins benachbart sind, so dass die entsprechenden Abgriffe 406b mit einem anderen Bündel 410a verbunden sind. Anders als im Beispiel 400a sind hier der zweite linke und der zweite rechte untere Pin nicht über ein Bündel verbunden.
  • Bei manchen Ausführungsformen müssen die Pins nicht direkt nebeneinander (d.h. buchstäblich nebeneinander) liegen, um für die Zwecke der Gruppierung als nebeneinander betrachtet zu werden. Beispielsweise können Pins, die innerhalb von vier Pins liegen, als nebeneinander liegend betrachtet werden und mit demselben Stamm in einer {intermittierenden} Struktur verbunden werden. Zusätzlich kann die Nachbarschaft nur in horizontaler Richtung gelten, so dass Pins in verschiedenen Zeilen als „benachbart“ gelten, wenn sie sich in benachbarten Spalten befinden. So kann ein Stamm, der Pins in mehreren Reihen verbindet (z.B. eine {Fischgrät} Struktur), entsprechend dem {intermittierenden} Veränderungszeichen in mehrere Bündel aufgeteilt werden. Der {intermittierende} Veränderer kann auch keine Auswirkung auf einige Stämme haben, wie z.B. den der obersten Zeile in Beispiel 400c. Wenn alle mit dem Bündel verbundenen Pins nebeneinander liegen (z.B. die oberen Pins), ist es nicht notwendig, mehrere Bündel einzuführen, wodurch eine {intermediate backbone} Struktur nicht von einer unmodifizierten {backbone} Struktur unterscheidbar ist.
  • Beispiel 400d von 4D zeigt eine {passend} Änderung an einer {backbone} Struktur. Die Änderung {passend} ist dadurch gekennzeichnet, dass eine gemeinsame Bündellänge für alle Bündel im Verbindungsaufbau durch das kürzeste Bündel (z.B. das Bündel, das die kleinste Gruppe benachbarter Pins verbindet) definiert wird. Der einzige Unterschied zwischen Beispiel 400d und Beispiel 400c besteht darin, dass das einzelne Bündel 404 von Beispiel 400c durch zwei Bündel 414a und 414b ersetzt wird, um die Bündellänge der Bündel 412a und 412b in der unteren Zeile anzupassen, die die kleinsten Gruppen von benachbarten Pins verbinden. Ähnlich wie die {intermittierende} Änderung kann die {passend} Änderung in einigen Fällen nicht von anderen Strukturen unterscheidbar sein. Zum Beispiel ist die Struktur {passend backbone} nicht von der Struktur {intermittierend backbone} zu unterscheiden, wenn man nur die unteren Zeilen der Beispiele 400c und 400d betrachtet.
  • Eigenschafts-Strukturdirektiven können sich von anderen Strukturdirektiven unterscheiden, da sie keine Regeln sind, die auf eine Gruppe von Strukturbestandteilen angewendet werden, sondern einen bestimmten Wert des/der Strukturelemente widerspiegeln. Beispiel 400e von 4E zeigt die Spezifikation der Eigenschaft <Spur> für Bündel in einer {Backbone} Struktur. Die Eigenschaft <Spur> gibt die „Spur“ des Kanals an, auf dem die der Zeile zugeordneten Trunk(s) platziert sind. Die Eigenschaft <Spur> wird relativ zur Gesamtzahl der verfügbaren Spuren angegeben, wobei von oben gezählt wird. Im Beispiel 400e gibt es eine erste Spur 416 und eine zweite Spur 418. Bündel 404 verläuft entlang der ersten Spur 416, so dass es durch die Strukturdirektive {Spur 1/2} beschrieben wird. Bündel 420 verläuft entlang der zweiten Spur 418, also würde es durch die Strukturrichtlinie {Spur 2/2} beschrieben werden. Wird ein ungültiger Wert für die Eigenschaft <Spur> eingegeben, kann das anpassbare Routing-System 300 den Wert auf den nächstliegenden gültigen Wert runden (z.B. bei der Anpassung einer Layoutvorlage). Wenn beispielsweise {Spur 3/5} für einen Kanal eingegeben wird, der nur drei Spuren hat, wird er auf {Spur 2/3} gerundet. In einigen Ausführungsformen kann {über} zur Eigenschaft <Spur> hinzugefügt werden, um anzuzeigen, dass sich die Spuren über der Reihe der Pins befinden und nicht im Kanal. Zum Beispiel beschreibt die Strukturdirektive {über Spur 1/3} ein Bündel, das sich auf der ersten Spur von drei Spuren befindet, die über der Zeile der Pins angeordnet sind.
  • Andere Eigenschaften sind <Zeile>, <Breite> und <Schicht>. Die Eigenschaft <Zeile> gibt an, wie viele Zeilen von Pins über einen oder mehrere Kanäle mit dem Bündel verbunden sind. Beispielsweise zeigt {Zeile alle} an, dass Pins in allen Zeilen des Verbindungslayouts mit einem einzigen Bündel verbunden sind, während {Zeile 2} anzeigt, dass Pins in den ersten beiden Zeilen (aus der Zeile, auf die sich die Strukturdirektive bezieht) mit einem einzigen Bündel verbunden sind. Die Eigenschaft <Zeile> kann auch verwendet werden, um anzugeben, ob sich das Bündel über den zu verbindenden Zeilen (beschrieben durch {Zeile oben}) oder unter den zu verbindenden Zeilen (beschrieben durch {Zeile unten}) befindet. Die Eigenschaft <Breite> gibt die Breite eines Bündels an. Zum Beispiel gibt {Breite 0.2} an, dass die Breite des Bündels 20% der Standardbreite betragen soll. Die Eigenschaft der <Schicht> gibt die Metallschicht an, in der das Bündel gefertigt werden soll. Beispielsweise kann ein Bündel als {Schicht M2} und ein anderes als {Schicht M1} angegeben werden.
  • Obwohl die obigen Beispiele die Strukturdirektiven in Bezug auf Bündel behandeln, können einige auch für Stege oder sogar Abzweigungen gelten. Beispielsweise können die Eigenschaften <Breite> und <Schicht> zusätzlich für Abzweigungen und Stege gelten. Zusätzlich können Stege zusätzliche Strukturdirektiven haben, die Eigenschaften beschreiben, wie z.B. <Spalte> (ähnlich wie <Zeile> für Bündel relativ zu Abzweigungen), oder <Richtung> (z.B. {horizontal} oder {vertikal}). Darüber hinaus können allgemeine Eigenschaften wie <Offset> auf jedes Strukturelement angewendet werden.
  • Zurückkommend zu 4E, zeigt Beispiel 400e auch ein Beispiel für ein {Spiegel} Muster. Das {Spiegel} Muster ist durch Reflexion um eine horizontale Achse gekennzeichnet und beeinflusst die Platzierung der Bündel in den Kanälen entweder über oder unter der Zeile der Pins, die sie verbinden. Wie in Verbindung mit der Erklärung der Eigenschaft <Spur> erwähnt, verbindet Bündel 420 die unteren Pins und befindet sich auf der zweiten Spur im mittleren Kanal. In den anderen Beispielen 400a bis 400d befinden sich die Bündel, die die untere Zeile der Pins verbinden, im unteren Kanal, was das Standardverhalten in diesen Beispielen 400a bis 400e ist. Da das Beispiel 400e ein Spiegelmuster enthält, werden die Strukturbauteile für die unteren Pins (Abgriffe 406a und 400b und Bündel 420) über eine Achse in der Mitte des mittleren Kanals reflektiert. Dieses Beispiel wird durch die Strukturrichtlinie {Backbone Spiegel} beschrieben.
  • Das {Spiegel} Muster wendet auch alle Strukturen oder Eigenschaften an, die in der Zeile enthalten sind, die die Grundlage für die Spiegelung der gespiegelten Zeile ist. Zum Beispiel würden die Strukturdirektiven {intermittierende Backbone Schicht M1 Breite 0,5 Spiegel} eine erste Zeile ergeben, die auch durch {intermittierende Backbone Schicht M1 Breite 0,5} beschrieben werden könnte, und eine zweite Zeile, die durch {intermittierende Backbone Zeile 1 oben Schicht M1 Breite 0,5} beschrieben wird, die zu {intermittierende Backbone Schicht M1 Breite 0,5; intermittierende Backbone Zeile 1 oben Schicht M1 Breite 0,5} kombiniert werden kann.
  • Das {Spiegel} Muster kann auch für mehrzeilige Muster verwendet werden, die als {Spiegel} dargestellt werden und wie auf einer eigenen Zeile (d.h. nach einem Semikolon) verwendet werden. Wenn man das {Spiegel} Muster für mehrere Zeilen verwendet, werden alle anderen zeilenbasierten Muster um eine Achse durch den zentralen Kanal des Verbindungslayouts reflektiert. Gibt es weniger spezifizierte Zeilenmuster als Zeilen vor der Mittelachse, wiederholen sich die spezifizierten Zeilenmuster. Zum Beispiel, wenn {Backbone Zeile 1 oben; intermittierende Backbone Zeile 1 unten; Mirror} auf ein Verbindungslayout mit sechs Zeilen angewendet werden, wäre die erste Zeile {Backbone Zeile 1 oben}, die zweite Zeile wäre {intermittierende Backbone Zeile 1 unten}, die dritte Zeile wäre {Backbone Zeile 1 oben}, die vierte Zeile wäre {Backbone Zeile 1 unten}, die fünfte Zeile wäre {intermittierende Backbone Zeile 1 oben}, und die sechste Zeile wäre {Backbone Zeile 1 unten}.
  • Erstellen einer Verbindungslayoutvorlage
  • 5 ist ein Flussdiagramm, das eine Methode 500 zur Erstellung einer Layoutvorlage gemäß einer Ausführungsform darstellt. 6A bis 6C und 7A bis 7C zeigen zwei Anwendungsbeispiele der Methode 500 von 5. Das anpassbare Routing-System 300 empfängt 510 Verbindungsinformationen für eine Vielzahl von Schaltungselementen, für die die strukturierten Verbindungen entworfen werden. Die Konnektivität gibt an, welche Pins der mehreren Schaltungselemente angeschlossen werden sollen. Die Verbindungsinformationen können dem anpassbaren Routing-System 300 in Form eines Schaltplans und entsprechender Abbildungsinformationen zum Schaltplan-Layout übermittelt werden. Alternativ kann ein Designer manuell Pins auswählen oder eine Matrix (oder eine andere ähnliche Darstellung) eingeben, die die zu verbindenden Pins angibt.
  • Das anpassbare Routing-System 300 empfängt bei 520 die ersten Strukturkomponenten für das Verbindungslayout, z.B. von einem Designer, um das eigene Verbindungslayout zu bilden. Der Designer kann die ersten Strukturkomponenten (z.B. Bündel und Abzweigungen in 4A bis 4E) über eine Schnittstelle des anpassbaren Routing-Systems 300 zeichnen oder eine andere Art der visuellen Darstellung vorlegen. Bei einigen Ausführungsformen können die Verbindungsinformationen und die ersten Strukturkomponenten gemeinsam empfangen werden, z.B. durch eine Detailzeichnung.
  • Das anpassbare Routing-System 300 übersetzt dann bei 530 die ersten Strukturkomponenten in Strukturdirektiven. Diese Übersetzung 530 kann durchgeführt werden, indem Muster im benutzerdefinierten Verbindungslayout analysiert und mit ähnlichen bekannten Mustern verglichen werden, die durch die Strukturanalyse beschrieben werden. Das anpassbare Routing-System 300 generiert dann bei 540 eine Layoutvorlage, indem es die Strukturdirektiven des benutzerdefinierten Verbindungslayouts mit den Verbindungsinformationen verknüpft, die für die zukünftige Verwendung gespeichert werden. Die zukünftige Verwendung kann die direkte Wiederverwendung (z.B. Anwendung der benutzerdefinierten Verbindungslayoutvorlage auf dasselbe Design), die indirekte Wiederverwendung (z.B. Anwendung der benutzerdefinierten Verbindungslayoutvorlage auf ein ähnliches Design ohne Änderungen) oder die kundenspezifische Wiederverwendung umfassen, die durch die Methoden 800 und 1100 in Bezug auf die 8 bzw. 11 beschrieben werden.
  • 6A zeigt einen Schaltplan 600 eines Teils eines ICs, und 6B ist ein Verbindungsdiagramm einer physikalischen Darstellung entsprechend dem Schaltplan 600, entsprechend einer ersten Ausführungsform. Der Schaltplan 600 enthält zwei Transistoren 602 und 604, wobei der Gateanschluss 606 des Transistors 602 hervorgehoben ist, um anzuzeigen, dass es sich um den Anschluss handelt, dem die Anschlussanordnung entspricht. Das Anschlussdiagramm von 6B ist eine visuelle Darstellung von vier Zeilen von Pins, die durch einen ersten, einen zweiten und einen dritten Kanal getrennt sind. Die Zeile 620 gibt die Verbindungsinformationen wieder und zeigt an, dass die Pins 610, 612a, 612b, 614a, 614b und 616 angeschlossen werden sollen. Diese Pins wurden abgedunkelt, um sie von Pins zu unterscheiden, die in diesem Beispiel nicht angeschlossen werden müssen.
  • 6C ist ein kundenspezifisches Verbindungslayout 650 entsprechend dem Anschlussplan von 6B, entsprechend der ersten Ausführungsform. In der ersten Zeile erstrecken sich die Abgriffe 652a von den drei äußersten linken Pins 610 nach unten, um mit einem Bündel 654a im ersten Kanal verbunden zu werden, und die Abgriffe 652b erstrecken sich von den drei äußersten rechten Pins der Pins 610 nach unten, um mit einem Bündel 654b im ersten Kanal verbunden zu werden. Bündel 654a und 654b befinden sich beide auf der ersten Spur, {Spur 1/2}, im ersten Kanal. In der zweiten Zeile erstrecken sich die Abgriffe 656a von den Pins 612a nach oben, um mit dem Bündel 658a im ersten Kanal verbunden zu werden, und die Abgriffe 656b von den Pins 612b nach oben, um mit dem Bündel 685b im ersten Kanal verbunden zu werden. Die Bündel 658a und 658b befinden sich beide auf der zweiten Spur, {Spur 2/2}, im ersten Kanal. In der dritten Zeile erstrecken sich die Abgriffe 660a von den Pins 614a nach unten und verbinden sich mit dem Bündel 662a im dritten Kanal, und die Abgriffe 660b erstrecken sich von den Pins 614b nach unten und verbinden sich mit dem Bündel 662b im dritten Kanal. Die Bündel 662a und 662b befinden sich beide auf der ersten Spur, {Spur 1/2}, im dritten Kanal. In der vierten Zeile erstrecken sich die Abgriffe 664a von den drei äußersten rechten Pins 616 nach oben, um mit dem Bündel 660a im dritten Kanal verbunden zu werden, und die Abgriffe 664a von den drei äußersten rechten Pins 616 nach oben, um mit dem Bündel 666b im dritten Kanal verbunden zu werden. Die Bündel 666a und 666b befinden sich beide auf der zweiten Spur, {Spur 2/2}, des dritten Kanals. Die Bündel 658a und 662a sind über Steg 668a, die Bündel 654a und 660a sind über Steg 670a, die Bündel 654b und 660b sind über Steg 670a und die Bündel 658b und 662b sind über Steg 668b verbunden. Die Stege 668a, 668b, 670a und 670b sind durch einen horizontalen Steg 672 verbunden.
  • Der Verbindungsaufbau 650 wird durch die Strukturdirektiven {passend Backbone Spiegel} beschrieben. Jedes Bündel 654a, 654b, 658a, 658b, 662a, 622b, 666a und 666b hat nur von einer Seite ausgehende Abzweigungen, die es zu einer {Backbone} Struktur machen. Zusätzlich hat jedes Bündel 654a, 654b, 658a, 658b, 662a, 662b, 666a und 666b die gleiche Länge, d.h. die Länge der Bündel 658a, 685b, 662a und 662b, da sie mit der kleinsten Gruppe von Pins (d.h. drei Pins) verbunden sind, was zu einer Änderung {passend} führt. Schließlich ist die Platzierung des Bündels in der zweiten Zeile eine Reflexion der Platzierung des Bündels in der ersten Zeile über eine Achse durch die Mitte des ersten Kanals, was ein {Spiegel} Muster ist. Allgemeiner gesagt, die Bündel 654a, 654b befinden sich auf Spur x/n im Kanal unterhalb der entsprechenden Zeile (der erste Kanal), und die Bündel 656a, 656b sind auf Spur (n-x+1)/n im Kanal oberhalb der entsprechenden Zeile (der erste Kanal). Die dritte und vierte Zeile haben dann die gleichen Eigenschaften wie die erste und zweite Zeile, was nicht explizit beschrieben werden muss, da sich die Strukturdirektiven automatisch wiederholen. Das Verbindungslayout 650 kann auch expliziter durch andere Strukturrichtlinien beschrieben werden, wie z.B. {passend Backbone Zeile 1 unten Spur 1/2; passend Backbone Zeile 1 oben Spur 2/2}.
  • 7A ist ein Schaltplan 700 eines Teils eines ICs, und 7B ist ein Verbindungsdiagramm, das einer physikalischen Implementierung von Schaltplan 700 entspricht, entsprechend einer zweiten Ausführungsform. Der Schaltplan 700 enthält zwei Transistoren 602 und 604, wobei der Gateanschluss 706 des Transistors 604 hervorgehoben ist, um anzuzeigen, dass es sich um den Anschluss handelt, für den das Verbindungslayout entworfen wird. Das Verbindungsdiagramm von 7B ist eine visuelle Darstellung von vier Zeilen von Pins, die durch einen ersten, einen zweiten und einen dritten Kanal getrennt sind. Die Zeile 720 gibt die Verbindungsinformationen wieder und zeigt an, dass die Pins 710a, 710b, 712, 714, 716 a und 716b zu verbinden sind. Diese Pins wurden verdunkelt, um sie von Pins zu unterscheiden, die in diesem Beispiel nicht angeschlossen werden müssen.
  • 7C ist ein kundenspezifisches Verbindungslayout 750 entsprechend dem Anschlussplan von 7B, entsprechend der zweiten Ausführungsform. In der ersten Zeile erstrecken sich die Abgriffe 752a von den drei äußersten linken Pins 610a nach unten, um mit einem Bündel 754a im ersten Kanal verbunden zu werden, und die Abgriffe 752b erstrecken sich von den drei äußersten rechten Pins der Pins 710 nach unten, um mit einem Bündel 754b im ersten Kanal verbunden zu werden. Bündel 754a und 754b befinden sich beide auf der ersten Spur, {Spur 1/2}, im ersten Kanal. In der zweiten Zeile erstrecken sich die Abgriffe 756 von den Pins 712 nach oben und verbinden sich mit dem Bündel 758 im ersten Kanal. Bündel 758 befindet sich auf der zweiten Spur, {Spur 2/2}, im ersten Kanal. In der dritten Zeile erstrecken sich die Abgriffe 760 von den Pins 714 nach unten und verbinden sich mit dem Bündel 762 im dritten Kanal. Bündel 662 befindet sich auf der ersten Spur, {Spur 1/2}, im dritten Kanal. In der vierten Zeile erstrecken sich die Abgriffe 764a von den drei äußersten linken Pins 616a nach oben, um mit dem Bündel 766a im dritten Kanal verbunden zu werden, und die Abgriffe 764a von den Pins 616b nach oben, um mit dem Bündel 766b im dritten Kanal verbunden zu werden. Die Bündel 766a und 766b befinden sich beide auf der zweiten Spur, {Spur 2/2}, des dritten Kanals. Die Bündel 754a und 766a sind über die Stege 768a, die Bündel 754a und 660a sind über redundante Bündel 770a und 770b, die Bündel 754b und 760b sind über die Stege 770a und 770b verbunden, und die Bündel 758 und 662 sind über die Stege 770a und 770b verbunden. Die Stege 768a, 768b, 770a und 770b sind durch einen horizontalen Steg 772 verbunden.
  • Das Verbindungslayout 750 wird durch die Strukturrichtlinien {intermittierender Backbone Spiegel; Spiegel} beschrieben. Jedes Bündel 754a, 754b, 758, 762, 766a und 766b hat nur von einer Seite ausgehende Abzweigungen, die ihn zu einer {Backbone} Struktur machen. Zusätzlich werden die Bündel 658a, 658b, 662a und 662b wegen der {intermittierenden} Modifikation getrennt. Schließlich ist die Platzierung des Bündels in der zweiten Zeile, ähnlich dem Verbindungslayout 650, eine Reflexion der Platzierung des Bündels in der ersten Zeile über eine Achse durch die Mitte des ersten Kanals, was ein {Spiegel} Muster ist. Die dritte und vierte Zeile sind dann eine Spiegelung der ersten und zweiten Zeile über die Mittelachse des Verbindungslayouts 750 (durch die Mitte des zweiten Kanals). Die Anschlussbelegung 750 kann auch durch andere Baurichtlinien genauer beschrieben werden.
  • Kundenspezifisches Anpassen einer Verbindungslayoutvorlage zur Wiederverwendung
  • 8 ist ein Flussdiagramm, das eine Methode 800 zur Anpassung einer bestehenden Layoutvorlage gemäß einer Ausführungsform darstellt. Das anpassbare Routing-System 300 erhält zunächst eine Auswahl einer bestehenden Layoutvorlage, die für bestimmte Verbindungsinformationen modifiziert werden soll. In einer Ausführungsform gibt es möglicherweise nur eine Layoutvorlage, die mit diesen Verbindungsinformationen verknüpft ist. In diesem Fall stellt die Übermittlung der Verbindungsinformationen den Eingang 810 der Auswahl dar, da nur eine Option zur Verfügung steht. In anderen Ausführungsformen können mehrere Layoutvorlagen mit den Verbindungsinformationen verknüpft werden, wobei die empfangene Auswahl 810 eine Benutzerauswahl zwischen mehreren anwendbaren Layoutvorlagen oder eine automatische Systemauswahl basierend auf dem Erreichen von Designzielen sein kann.
  • Nachdem die Layoutvorlage ausgewählt wurde, erhält das anpassbare Routing-System 300 vom Designer eine Anpassung 820, z.B. durch eine Zeichnung in einer grafischen Oberfläche. Das anpassbare Routing-System 300 analysiert dann die Anpassung an das Verbindungslayout, um die mit der Layoutvorlage verbundenen Strukturdirektiven zu ermitteln und zu aktualisieren 830. Die aktualisierten Strukturdirektiven können dann verwendet werden, um Verbindungen zu routen und/oder 840 weitere Layoutvorlagen zu generieren, die für die weitere Verwendung oder Anpassung in der Zukunft gespeichert werden 850.
  • 9A und 9B sind Beispiele für benutzerdefinierte Verbindungslayouts 900 und 950, die für die Wiederverwendung mit der Methode 800 entsprechend einer Ausführungsform angepasst wurden. 9A zeigt das Anschlusslayout 900, das eine kundenspezifische Version des Anschlusslayouts 650 ist. Die Anpassung zur Generierung des Verbindungslayouts 900 umfasst das Entfernen von zwei vertikalen Stegen, das Verschieben der beiden verbleibenden vertikalen Stege und das Verlängern der Bündel. Konkret umfasst das Verbindungslayout 900 die Stege 918a und 918b, die zwischen dem dritten und vierten Pin jeder Reihe und zwischen dem neunten und zehnten Pin jeder Reihe angeordnet sind. Da es jetzt nur noch zwei vertikale Stege 918a, 918b gibt, werden die Bündel 904a, 904b, 908a, 908b, 912a, 912b, 916a und 916b verlängert, um sich mit den Stegen zu verbinden. Ebenso ist der horizontale Steg 922 kürzer als der ursprüngliche horizontale Steg 672, da die Stege 918a, 918b nicht so weit auseinander liegen wie die Stege 668a, 668b, 670a und 670b. Wenn der Abstand zwischen den einzelnen Pins als eine Spur betrachtet wird, kann diese Anpassung als {Steg Spur 3/11 8/11} beschrieben werden, die alle vertikalen Stege definiert (d.h. es sind keine anderen vertikalen Stege im Verbindungslayout 900 vorhanden). Alternativ können die Strukturdirektiven die angepassten vertikalen Stege 918a, 918b relativ definieren, z.B. zwischen den Bündeln 908a/912a und 904a/916a, und zwischen den Bündeln 904b/916b und 908b/912b.
  • 9B zeigt das Verbindungslayout 950, das eine kundenspezifische Version des Verbindungslayouts 750 ist. Die Anpassung zur Generierung des Verbindungslayouts 900 beinhaltet das Verschieben der Bündel für die zweite und dritte Zeile auf die gleichen Spuren wie die Bündel der ersten und vierten Zeile, das Verschieben der beiden äußeren vertikalen Stege und das Hinzufügen von zwei zusätzlichen vertikalen Stegen. Insbesondere wird Bündel 958 auf {Spur 1/2} anstelle von {Spur 2/2} gesetzt, und Bündel 962 wird auf {Spur 2/2} im dritten Kanal anstelle von {Spur 1/2} gesetzt. Wenn es eine Spur durch die Mitte jedes Pins gibt, werden die vertikalen Stege 968a, 968b, 969a, 969b, 970a und 970b nun als {Steg Spur 1/12 3/12 5/12 8/12 10/12 10/12 12/12} bezeichnet. Der horizontale Steg 972 ist auch länger, um die Position der äußersten vertikalen Stege 968a, 968b aufzunehmen. Die Strukturdirektiven können ebenfalls relativ definiert werden, z.B. dass sich die Bündel 958 und 962 auf der Standardspur der Bündel 754a, 754b, 764a und 764b befinden und die modifizierten vertikalen Stege 968a, 968b, 970a und 970b sich an den Außenkanten der entsprechenden Bündel 754a, 754b, 766a und 766b befinden.
  • 10A und 10B sind Diagramme, die Sätze von benutzerdefinierten Layoutvorlagen und die entsprechenden Schaltplanteile gemäß einer Ausführungsform darstellen. Jeder Schaltplanteil (oder eine andere Art von Verbindungsinformationen) kann mit mehreren Layoutvorlagen verknüpft werden. 10A zeigt an, dass der Schaltplanteil 600 den Anschlusslayouts 650 und 900 zugeordnet ist, da beide Anschlusslayouts 650 und 900 die gleichen Pins des zugehörigen Anschlussdiagramms von 6B verbinden. Der Schaltplanteil 600 und die Verbindungslayouts 650 und 900 können gemeinsam als Layoutvorlage betrachtet werden, oder der Schaltplanteil 600 gepaart mit dem Verbindungslayout 650 als eine Layoutvorlage und der Schaltplanteil 600 gepaart mit dem Verbindungslayout 900 als eine andere Layoutvorlage. 10B zeigt an, dass der Schaltplanteil 700 den Anschlusslayouts 750 und 950 zugeordnet ist, da beide Anschlusslayouts 750 und 950 die gleichen Pins des zugehörigen Anschlussdiagramms von 7B verbinden. Ebenso können der Schaltplanteil 700 und die Verbindungslayouts 750 und 950 gemeinsam oder in Schaltplanteil-Verbindungs-Layoutpaaren als Layoutvorlage betrachtet werden.
  • Automatisches Anpassen einer Verbindungslayoutvorlage zur Wiederverwendung
  • 11 ist ein Flussdiagramm, das eine Methode 1100 zur automatischen Anpassung einer bestehenden Layoutvorlage gemäß einer Verkörperung darstellt. Die Felder mit gestrichelten Linien zeigen an, dass diese Schritte (1120, 1140, 1150 und 1170) optional sind.
  • Das anpassbare Routing-System 300 empfängt bei 1110 Verbindungsinformationen für eine Vielzahl von Zielschaltungselementen einer Zielschaltung. In einigen Ausführungsformen trennt 1120 das anpassbare Routing-System 300 die Verbindungsinformationen für die Schaltungselemente in eine Vielzahl von Blöcken, die sich überlappen können oder nicht. Jeder Block stellt eine Teilmenge der Verbindungsinformationen für die Zielschaltungselemente dar und kann verwendet werden, um die Verbindungsinformationen an mehrere vorhandene Layoutvorlagen anzupassen, die kombiniert werden können, um die Konnektivität der Zielschaltungselemente zu erreichen. 13B zeigt beispielhafte Blöcke.
  • Das anpassbare Routing-System 300 identifiziert bei 1130 eine oder mehrere ähnliche Layoutvorlagen, die auf die Vielzahl von Zielschaltungselementen (oder -blöcken) angewendet werden können. Die eine oder mehrere ähnliche Layoutvorlagen können „ähnlich“ sein, z.B. indem sie Verbindungsinformationen haben, die mit denen der Zielschaltungselemente oder eines Teils davon übereinstimmen oder skaliert werden können. 12A zeigt ein Beispiel für die Skalierung. Das anpassbare Routing-System 300 ermittelt die Verbindungsunterschiede zwischen einer oder mehreren ähnlichen Layoutvorlagen und aktualisiert bei Bedarf die Strukturdirektiven für die Layoutvorlagen.
  • Das anpassbare Routing-System wendet bei 1150 Strukturdirektiven (oder ggf. aktualisierte Strukturdirektiven 1140) auf die empfangenen Verbindungsinformationen 1110 an, die dann verwendet werden können, um bei 1160 die Vielzahl der Schaltungselemente zu routen.
  • 12A ist ein Verbindungsdiagramm 1200, das sich von dem bestehender Layoutvorlagen, die zur Wiederverwendung zur Verfügung stehen, unterscheidet, entsprechend einer ersten Ausführungsform. Das Verbindungsdiagramm 1200 hat vier Zeilen mit je 16 Pins. Zeile 1220 zeigt an, dass die Pins 1210, 1212a, 1212b, 1214a, 1214b und 1216 angeschlossen werden sollen. Das anpassbare Routing-System 300 erhält dieses Verbindungsdiagramm 1200, das mit keinem der beiden zuvor genannten Verbindungsdiagramme übereinstimmt. Das anpassbare Routing-System 300 kann jedoch diese Verbindungsinformationen analysieren und feststellen, dass es sich um eine horizontal skalierte Version des Verbindungsdiagramms von 6B handelt.
  • Horizontal skaliert bedeutet in diesem Zusammenhang, dass das allgemeine Verbindungsmuster und die Anzahl der Zeilen gleich bleiben, die Anzahl der Pins pro Zeile jedoch skaliert zugenommen hat. Beispielsweise entspricht im Anschlussdiagramm 1200 jede Gruppe von vier Pins jeder Gruppe von drei Pins im Anschlussdiagramm von 6B. Konkret gibt es acht Pins 1210, die sechs Pins 610 entsprechen, vier Pins 1212a, die drei Pins 612a entsprechen, vier Pins 1212b, die drei Pins 1212b entsprechen, vier Pins 1214a, die drei Pins 614a entsprechen, vier Pins 1214b, die drei Pins 1214b entsprechen, und acht Pins 1216, die sechs Pins 610 entsprechen. Das Verbindungsdiagramm 1200 skaliert also 4/3 in horizontaler Richtung (Anzahl der Pins) relativ zum Verbindungsdiagramm von 6B. Ein Verbindungsdiagramm kann ebenfalls in vertikaler Richtung skaliert werden, basierend auf der Anzahl der Zeilen und nicht auf der Anzahl der Pins pro Zeile.
  • Basierend auf dieser Analyse und Bestimmung kann das kundenspezifische StapelRouter-System 300 eine Layout-Vorlage entsprechend dem Anschlussplan von 6B anpassen. Anhand der Layoutvorlage mit Verbindungslayout 900 bestimmt das anpassbare Routing-System 300, dass die primären strukturellen Anpassungen, die es vornehmen muss, in {vertikal Steg 3/11, 8/11} zu {vertikal Steg 4/15, 11/15} geändert werden. Alternativ können die Stege auch relativ definiert werden (z.B. in Verbindung mit 9A und 9B), wobei keine strukturellen Anpassungen notwendig sind.
  • Das anpassbare Routing-System 300 aktualisiert die Strukturdirektiven entsprechend und erzeugt ein entsprechendes Verbindungslayout 1250, wie in 12B dargestellt.
  • Das Verbindungslayout 1250 von 12B repliziert das Verbindungslayout 900 bei 4/3 horizontaler Skalierung. Die Abgriffe 1252a, 1252b, 1256a, 1256b, 1260a, 1260b, 1264a und 1264b entsprechen den Abgriffen 652a, 652b, 656a, 656b, 660a, 660b, 664a und 664b. Die Bündel 1254a, 1254b, 1258a, 1258b, 1262a, 1262b, 1266a und 1266b entsprechen den Bündeln 904a, 904b, 908a, 908b, 912a, 912b, 916a und 916b. Die Stege 1268a, 1268b und 1272 entsprechen den Stegen 918a, 918b und 922. Obwohl das Verbindungslayout 1250 eine andere Größe (und damit andere Verbindungsinformationen) als das Verbindungslayout 900 hat, behält es die strukturellen Aspekte des Verbindungslayout 900 bei. Konkret hat das Verbindungslayout 1250 nur zwei vertikale Stege 1268a, 1268b, die sich zwischen (1) den Bündeln 1256a/1262a und 1254a/1266a und (2) den Bündeln 1254a/1266b und 1258b/1262b befinden.
  • 13A ist ein weiteres Verbindungsdiagramm 1300, das sich von dem bestehender Layoutvorlagen, die zur Wiederverwendung zur Verfügung stehen, unterscheidet, entsprechend einer zweiten Ausführungsform. Das Verbindungsdiagramm 1300 hat vier Zeilen mit je 24 Pins. Das anpassbare Routing-System 300 analysiert das Verbindungsdiagramm 1300 und stellt fest, dass es in zwei Blöcke 1310 und 1320 aufgeteilt werden kann, die jeweils den vorhandenen Layoutvorlagen entsprechen. Der Block 1310 entspricht der Verbindung des Verbindungsdiagramms von 6B, und der Block 1320 entspricht der Verbindung des Verbindungsdiagramms von 7B. Das anpassbare Routing-System 300 ruft die Strukturdirektiven für die entsprechenden Verbindungslayouts 900 und 950 ab, stellt fest, dass es lediglich die horizontalen Stege 922 und 972 kombiniert und die Strukturdirektiven entsprechend modifiziert. Das anpassbare Routing-System 300 erzeugt dann das Verbindungslayout 1350 von 13B, indem es das Verbindungslayout 900 auf den Block 1310 anwendet, um eine Hälfte 1360 des Verbindungslayouts 1350 zu erzeugen, das Verbindungslayout 950 auf den Block 1320 anwendet, um die andere Hälfte 1370 des Verbindungslayouts 1350 zu erzeugen, und die beiden horizontalen Stege verbindet.
  • Die vorstehende Beschreibung der Ausführungsformen der Erfindung wurde zur Veranschaulichung vorgelegt; sie soll nicht erschöpfend sein oder die Erfindung auf die offenbarten Formen beschränken. Fachkundige Personen können sich darüber im Klaren sein, dass viele Änderungen und Variationen in Anbetracht der obigen Offenbarung möglich sind.
  • Die in der Spezifikation verwendete Sprache wurde hauptsächlich aus Gründen der Lesbarkeit und der didaktischen Aufbereitung ausgewählt und ist nicht zur Abgrenzung des erfinderischen Gegenstands geeignet. Es ist daher beabsichtigt, den Anwendungsbereich der Erfindung nicht durch diese detaillierte Beschreibung zu begrenzen, sondern durch jegliche Ansprüche, die sich auf eine darauf basierende Anmeldung beziehen. Dementsprechend soll die Offenbarung der Ausführungsformen der Erfindung den Umfang der Erfindung veranschaulichen, aber nicht einschränken, der in den folgenden Ansprüchen dargelegt ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62301059 [0001]

Claims (20)

  1. Verfahren zum Entwurf einer integrierten Schaltung, umfassend: Empfangen von Verbindungsinformationen für ein oder mehrere Schaltungselemente; Empfangen eines benutzerdefinierten Layouts, das den physikalischen Aufbau von Verbindungen zwischen dem einen oder den mehreren Schaltungselementen wiedergibt; Extrahieren einer oder mehrerer Strukturdirektiven aus dem benutzerdefinierten Layout, wobei jede Strukturdirektive eine Eigenschaft des physikalischen Layouts von Verbindungen zwischen dem einen oder den mehreren Schaltungselementen beschreibt; und Speichern der einen oder mehreren Strukturdirektiven als Layoutvorlage für die empfangenen Verbindungsinformationen.
  2. Verfahren nach Anspruch 1, wobei die Verbindungsinformationen einen Schaltplan umfassen.
  3. Verfahren nach Anspruch 1, wobei die Verbindungsinformationen eine Netzliste umfassen.
  4. Verfahren nach Anspruch 1, wobei mindestens eine der einen oder mehreren Strukturdirektiven eine Breite einer Verbindung zwischen den mehreren Schaltungselementen angibt.
  5. Verfahren nach Anspruch 1, wobei mindestens eine der einen oder mehreren Strukturdirektiven eine Platzierung einer Verbindung zwischen dem einen oder den mehreren Schaltungselementen relativ zu einer oder mehreren Zeilen spezifiziert, wo mindestens ein Schaltungselement des einen oder der mehreren Schaltungselemente angeordnet ist.
  6. Verfahren nach Anspruch 5, wobei die Platzierung die Verbindung näher zu einer entsprechenden Zeile als zu einer Mitte eines Kanals zwischen zwei Zeilen der einen oder mehreren Zeilen platziert.
  7. Verfahren nach Anspruch 5, wobei die Platzierung die Verbindung über eine entsprechende Zeile der einen oder mehreren Zeilen platziert.
  8. Verfahren nach Anspruch 1, wobei mindestens eine der einen oder mehreren Strukturdirektiven eine Backbone-Verbindungsstruktur spezifiziert.
  9. Verfahren nach Anspruch 1, wobei mindestens eine der einen oder mehreren Strukturdirektiven eine Fischgrät-Verbindungsstruktur spezifiziert.
  10. Verfahren nach Anspruch 1, wobei das Verfahren ferner umfasst: Routing des einen oder der mehreren Schaltungselemente unter Beibehaltung der Eigenschaften, die in den Strukturdirektiven beschrieben sind.
  11. Verfahren zum Entwurf einer integrierten Schaltung, umfassend: Speichern einer oder mehrerer Layoutvorlagen, wobei jede der einen oder mehreren Layoutvorlagen ein physikalisches Layout von Verbindungen zwischen einem oder mehreren Quellschaltungselementen einer Quellschaltung darstellt und Strukturdirektiven enthält, die die Eigenschaften des physikalischen Layouts von Verbindungen beschreiben; Identifizieren einer oder mehrerer Layoutvorlagen, die sich auf Verbindungsinformationen für ein oder mehrere Zielschaltungselemente einer Zielschaltung beziehen; und Anwenden der Strukturdirektiven der identifizierten einen oder mehreren Layoutvorlagen auf das eine oder die mehreren Zielschaltungselemente des Zielschaltkreises zum Routing des einen oder der mehreren Zielschaltungselemente.
  12. Verfahren nach Anspruch 11, wobei das Anwenden der identifizierten einen oder mehreren Layoutvorlagen umfasst: Identifizieren einer oder mehrerer Änderungen an einer oder mehreren Layoutvorlagen; Überarbeitung der Strukturdirektiven der identifizierten einen oder mehreren Layoutvorlagen entsprechend der einen oder mehreren Änderungen; und Senden der überarbeiteten Strukturdirektiven für das Routing eines oder mehrerer Zielschaltungselemente.
  13. Verfahren nach Anspruch 11, wobei die Verbindungsinformationen der Zielschaltungselemente mit den Verbindungsinformationen für das eine oder die mehreren Quellschaltungselemente von mindestens einem der identifizierten Layoutvorlagen übereinstimmen.
  14. Verfahren nach Anspruch 11, wobei eine Vielzahl der identifizierten einen oder mehrere Layoutvorlagen ein physikalisches Layout für das gleiche eine oder mehrere Quellschaltungselemente darstellen.
  15. Verfahren nach Anspruch 12, wobei die eine oder mehrere Änderungen das Hinzufügen einer oder mehrerer redundanter Verbindungen umfassen.
  16. Verfahren nach Anspruch 11, wobei das Verfahren ferner umfasst: Speicherung der überarbeiteten Strukturdirektiven als Layoutvorlage für die Verbindungsinformationen der Zielschaltungselemente.
  17. Verfahren nach Anspruch 11, wobei das Verfahren ferner umfasst: Unterteilung der Verbindungsinformationen für die Zielschaltungselemente in eine Vielzahl von Blöcken, wobei jede identifizierte Layoutvorlage der einen oder mehreren Layoutvorlagen einem der Vielzahl von Blöcken entspricht.
  18. Verfahren nach Anspruch 17, wobei ein oder mehrere der Vielzahl von Blöcken mit Verbindungsinformationen für die Quellschaltung einer der identifizierten einen oder mehreren Layoutvorlagen übereinstimmen.
  19. Verfahren nach Anspruch 12, wobei die Identifizierung der einen oder mehreren Änderungen umfasst: Bestimmen eines oder mehrerer Unterschiede zwischen den Verbindungsinformationen des einen oder der mehreren Zielschaltungselemente und den Verbindungsinformationen des einen oder der mehreren Quellschaltungselemente des identifizierten einen oder der mehreren Layoutvorlagen; wobei die eine oder die mehreren Änderungen die eine oder die mehreren Unterschiede ausmachen.
  20. Verfahren nach Anspruch 11, wobei die Verbindungsinformation des einen oder der mehreren Zielschaltungselemente eine skalierte Version der Verbindungsinformation von mindestens einer der identifizierten einen oder mehreren Layoutvorlagen ist.
DE112017001063.2T 2016-02-29 2017-02-28 Erstellung und Wiederverwendung anpassbarer strukturierter Verbindungen Pending DE112017001063T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662301059P 2016-02-29 2016-02-29
US62/301,059 2016-02-29
PCT/US2017/020046 WO2017151681A1 (en) 2016-02-29 2017-02-28 Creating and reusing customizable structured interconnects

Publications (1)

Publication Number Publication Date
DE112017001063T5 true DE112017001063T5 (de) 2018-12-06

Family

ID=59679556

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001063.2T Pending DE112017001063T5 (de) 2016-02-29 2017-02-28 Erstellung und Wiederverwendung anpassbarer strukturierter Verbindungen

Country Status (4)

Country Link
US (2) US10528696B2 (de)
CN (2) CN115618786B (de)
DE (1) DE112017001063T5 (de)
WO (1) WO2017151681A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002224B2 (en) * 2016-02-29 2018-06-19 Synopsys, Inc. Interactive routing of connections in circuit using auto welding and auto cloning
US10572622B2 (en) * 2016-11-28 2020-02-25 Mentor Graphics Corporation Interconnect reuse resolution with bump compensation in a package design

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745084A (en) * 1986-11-12 1988-05-17 Vlsi Technology, Inc. Method of making a customized semiconductor integrated device
US5995734A (en) * 1996-03-07 1999-11-30 Matsushita Electric Industrial Co., Ltd. Method for generating transistor placement in an automatic cell layout design
US5768479A (en) 1996-09-17 1998-06-16 Cadence Design Systems, Inc. Circuit layout technique with template-driven placement using fuzzy logic
US6066179A (en) * 1997-06-13 2000-05-23 University Of Edinburgh Property estimation of an integrated circuit
GB9929084D0 (en) * 1999-12-08 2000-02-02 Regan Timothy J Modification of integrated circuits
KR100363087B1 (ko) * 2000-04-06 2002-12-02 삼성전자 주식회사 비표준 셀을 포함하는 집적회로의 설계 및 레이아웃 방법및 이를 기록한 기록매체
TW548562B (en) * 2002-01-16 2003-08-21 Springsoft Inc Method and system for drawing layout of process testing components
US7178114B2 (en) * 2002-05-31 2007-02-13 Springsoft, Inc. Scripted, hierarchical template-based IC physical layout system
US7062740B2 (en) * 2003-05-22 2006-06-13 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for reducing design cycle time for designing input/output cells
EP1820130B1 (de) 2004-11-30 2011-09-14 Freescale Semiconductor Inc. Verfahren und system zur verbesserung der herstellbarkeit integrierter schaltungen
US7739646B2 (en) * 2006-10-12 2010-06-15 Springsoft, Inc. Analog and mixed signal IC layout system
JP5216287B2 (ja) * 2007-09-21 2013-06-19 株式会社日立製作所 半導体装置
US7890909B2 (en) * 2008-01-02 2011-02-15 Oracle America, Inc. Automatic block composition tool for composing custom blocks having non-standard library cells in an integrated circuit design flow
CN101990671A (zh) * 2008-02-05 2011-03-23 纳恩盖特公司 集成电路设计和库的优化
US8336015B2 (en) * 2009-09-08 2012-12-18 Synopsys, Inc. Pre-route and post-route net correlation with defined patterns
US8276110B2 (en) * 2010-01-22 2012-09-25 Taiwan Semiconductor Manufacturing Company, Ltd. Reducing voltage drops in power networks using unused spaces in integrated circuits
US8667444B2 (en) * 2012-02-17 2014-03-04 Synopsys, Inc. Concurrent placement and routing using hierarchical constraints
US8826195B2 (en) * 2012-06-05 2014-09-02 Taiwan Semiconductor Manufacturing Co., Ltd. Layout modification method and system
US8806405B2 (en) * 2012-10-31 2014-08-12 Cadence Design Systems, Inc. Producing a net topology pattern as a constraint upon routing of signal paths in an integrated circuit design
US8701055B1 (en) * 2012-12-07 2014-04-15 Taiwan Semiconductor Manufacturing Co., Ltd. Macro cell based process design kit for advanced applications
US9613175B2 (en) * 2014-01-28 2017-04-04 Globalfoundries Inc. Method, computer system and computer-readable storage medium for creating a layout of an integrated circuit

Also Published As

Publication number Publication date
US20200089835A1 (en) 2020-03-19
CN115618786B (zh) 2023-11-28
CN108701168B (zh) 2022-10-14
US20170249414A1 (en) 2017-08-31
US10528696B2 (en) 2020-01-07
US10909300B2 (en) 2021-02-02
CN108701168A (zh) 2018-10-23
CN115618786A (zh) 2023-01-17
WO2017151681A1 (en) 2017-09-08

Similar Documents

Publication Publication Date Title
DE102014108739B4 (de) Layoutentwurfsverfahren für Doppelstrukturierung
EP1425638B1 (de) Verfahren zur validierung von simulationsergebnissen eines systems sowie darauf aufbauender äquivalenzvergleich digitaler schaltungen
DE102014112789B4 (de) Zellen-Layout und Struktur
DE102006037162B4 (de) Verfahren und Vorrichtung und deren Verwendung zur Prüfung des Layouts einer elektronischen Schaltung
DE102017118336B4 (de) Standardzellen-layout, halbleiter-bauelement mit technische-änderungsanweisungs(eco)-zellen und verfahren
DE102015200694A1 (de) Verfahren, computersystem und computerlesbares speichermedium zum erzeugen eines layouts eines integrierten schaltkreises
DE112014003741T5 (de) Detektieren und Anzeigen einer Behebungsführung für Multi-Strukturierung
DE102019116952B4 (de) Integrierte-schaltkreis-struktur, layout-schaubild-verfahren und system
DE112014000616T5 (de) Doppelstruktur-Taktbaumsynthese (CTS)
DE102020108217A1 (de) Die-zu-Die-Verbindungsstruktur für modularisierte integrierte Schaltungsvorrichtungen
DE102013106541A1 (de) System zum Entwerfen einer Halbleitervorrichtung, die hergestelle Vorrichtung und Verfahren zur Verwendung des Systems
DE102016114812A1 (de) Mehrfachstrukturierungsverfahren für halbleiter-bauelemente
DE202016008735U1 (de) Integrierter Schaltkreis und Masken zur Herstellung eines integrierten Schaltkreises
DE102013106539A1 (de) Verfahren zur Verifikation eines Layouts für Polysilizium-Zellrandstrukturen in FinFET-Standardzellen
DE102019128571B4 (de) Verfahren zum erzeugen eines layoutdiagramms mit zelle mit darauf basierenden stiftmustern und halbleitervorrichtung
DE102012220715B4 (de) Gitterebenen mit wechselnden Abständen von Gitterleitungen für mehrschichtige Keramikpackungen sowie deren Entwurf
DE112021002870T5 (de) Halbleiterschaltungs-entwurf und einheits-pin-anordnung
DE112017001063T5 (de) Erstellung und Wiederverwendung anpassbarer strukturierter Verbindungen
DE102005003001A1 (de) Verfahren zur Korrektur des optischen Proximity-Effektes
DE4327652C2 (de) Integrierte Halbleiterschaltungsvorrichtung und Verfahren zum Entwerfen einer integrierten Halbleiterschaltungsvorrichtung
DE10205559B4 (de) Integrierte Schaltung und Verfahren und Vorrichtung zum Entwurf einer integrierten Schaltung
DE102016110384A1 (de) Verfahren zum Halbleiterbauelementdesign und zur Halbleiterbauelementherstellung sowie entsprechende Halbleiterbauelemente
DE102016111337B4 (de) Verfahren zur Steigerung der Entkoppelungs-Kapazität in einer mikroelektronischen Schaltung
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
DE19626984C1 (de) Verfahren zur rechnergestützten Ermittlung einer Systemzusammenhangsfunktion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017500000

Ipc: G06F0030000000

R016 Response to examination communication