DE10313949A1 - Schaltungsentwurfsduplizierungssystem - Google Patents

Schaltungsentwurfsduplizierungssystem Download PDF

Info

Publication number
DE10313949A1
DE10313949A1 DE10313949A DE10313949A DE10313949A1 DE 10313949 A1 DE10313949 A1 DE 10313949A1 DE 10313949 A DE10313949 A DE 10313949A DE 10313949 A DE10313949 A DE 10313949A DE 10313949 A1 DE10313949 A1 DE 10313949A1
Authority
DE
Germany
Prior art keywords
block
design
circuit design
computer
circuit
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.)
Withdrawn
Application number
DE10313949A
Other languages
English (en)
Inventor
Brandon S. Evans Keller
Gregory Dennis Fort Collins Rogers
Charles Anthony Windsor Lelm
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10313949A1 publication Critical patent/DE10313949A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

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)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

Techniken zum Kopieren eines Teilsatzes der Blockentwurfsinformationen, die in einer Schaltungsentwurfsdatenbank enthalten sind, in ein Blockentwurfs-"Kabuff" sind offenbart. Ein Schaltungsentwurfsduplizierungstool kann in Software implementiert sein, um die Blockentwurfsinformationen zu kopieren. Das Duplizierungstool muß nicht fest mit Informationen über den Ort von Blockentwurfsinformationen für bestimmte Blöcke innerhalb der Schaltungsentwurfsdatenbank oder mit Informationen über die logische Struktur der Datenbank codiert sein. Vielmehr können dem Duplizierungstool Schaltungsentwurfsmetadaten, die die Orte von Blockentwufsinformationen und die Logikstruktur der Datenbanken anzeigen, bereitgestellt werden, um es dem Duplizierungstool zu ermöglichen, den Teilsatz der Blockentwurfsinformationen zu kopieren. Die Schaltungsenwurfsdatenbank und/oder das Kabuff können in einem herkömmlichen Computerdateisystem gespeichert sein und das Duplizierungstool kann den Teilsatz der Blockentwurfsinformationen unter Verwendung herkömmlicher Dateisystembefehle kopieren.

Description

  • Die vorliegende Erfindung bezieht sich auf einen Entwurf integrierter Schaltungen und insbesondere auf Techniken zum Duplizieren von Teilsätzen von Entwürfen integrierter Schaltungen.
  • Integrierte Schaltungen (ICs) werden immer größer und komplexer und umfassen üblicherweise Millionen einzelner Schaltungselemente, wie zum Beispiel Transistoren und Logikgatter. Höchstintegrationsschaltungen (VLSI-Schaltungen) sind zu groß und komplex für einen Schaltungsentwerfer oder sogar ein großes Team von Schaltungsentwerfern, um dieselben wirksam auf einer Element-für-Element-Basis zu verwalten. Als ein Ergebnis dieser erhöhten Größe und Komplexität verwenden IC-Entwerfer in zunehmendem Maße elektronische Entwurfsautomatisierungs-(EDA-)Softwaretools bzw. -Werkzeuge zur Unterstützung beim IC-Entwurf. Derartige Tools helfen auf eine Vielzahl von Weisen, die Komplexität der Entwurfsaufgabe zu verwalten, wie zum Beispiel dadurch, daß sie ermöglichen, daß ICs hierarchisch entworfen werden, wodurch es ermöglicht wird, daß der Entwurf in Module unterteilt wird, und es ermöglicht wird, daß die Entwurfsaufgabe unter mehreren Entwerfern auf eine Weise aufgeteilt wird, die die Komplexität, auf die ein einzelner Entwerfer trifft, einschränkt.
  • Verschiedene Hardwarebeschreibungssprachen (HDLs) wurden entwickelt, um es zu ermöglichen, daß Schaltungsentwürfe auf verschiedenen Abstraktionsebenen beschrieben werden. Eine Beschreibung einer Schaltung gemäß einer HDL (im folgenden hierin als ein „HDL-Modell" der Schaltung bezeichnet) kann zum Beispiel einen bestimmten Schaltungsentwurf hinsichtlich des Layouts seiner Transistoren und Verbindungen auf einer IC oder hinsichtlich der Logikgatter in einem Digitalsystem beschreiben. Beschreibungen einer Schaltung auf unterschiedlichen Abstraktionsebenen können zu verschiedenen Zwecken bei verschiedenen Stufen in dem Entwurfsverfahren verwendet werden. HDL-Modelle können zum Testen von Schaltungen und Schaltungsentwürfen sowie zum Herstellen der Schaltungen selbst verwendet werden. Die beiden am häufigsten verwendeten HDLs sind Verflog und VHDL (Hardwarebeschreibungssprache für integrierte Höchstgeschwindigkeitsschaltungen (VHSIC)), die beide durch das Institute of Electrical and Electronics Engineers (IEEE = Institut für Elektrik- und Elekturonikingenieure) als Standards aufgenommen wurden. VHDL wurde 1987 zum IEEE-Standard 1076 und Verilog wurde 1995 zum IEEE-Standard 1364.
  • EDA-Tools ermöglichen es Schaltungsentwerfern üblicherweise, Schaltungsentwürfe unter Verwendung von HDLs zu spezifizieren. Derartige Tools können zum Beispiel eine HDL-Beschreibung einer Schaltung als einen Eingang annehmen und aus der Beschreibung eine hierarchische Datenbank erzeugen, die den Schaltungsentwurf darstellt. Das EDA-Tool kann auch eine graphische Darstellung des Schaltungsentwurfs basierend auf der HDL-Beschreibung anzeigen. Ein Beispiel eines derartigen Tools zum Entwerfen von VLSI-Schaltungen ist der Schemaverfasser Virtuoso®, der bei Cadence Design Systems, Inc. in San Jose, Kalifornien erhältlich ist.
  • EDA-Tools können es dem Schaltungsentwerfer außerdem ermöglichen, Schaltungen unter Verwendung einer graphischen Benutzerschnittstelle zu entwerfen. Das EDA-Tool kann zum Beispiel eine graphische 2D- oder 3D-Darstellung des Schaltungsentwurfs in der Form eines schematischen Diagramms auf einem Anzeigemonitor anzeigen. Der Schaltungsentwerfer kann herkömmliche Eingabevorrichtungen, wie zum Beispiel eine Maus und/oder Tastatur, verwenden, um den Entwurf durch die graphische Benutzerschnittstelle des EDA-Tools zu bearbeiten.
  • Wie oben erwähnt wurde, weisen die Entwürfe moderner komplexer Schaltungen üblicherweise eine hierarchische Struk tur auf, die verwendet wird, um die Komplexität der Entwurfsaufgaben zu steuern. Bezug nehmend auf 1 zum Beispiel ist die Logikstruktur einer herkömmlichen hierarchischen Schaltungsentwurfsdatenbank 100 in Blockdiagrammform dargestellt. An dem oberen Ende der Hierarchie ist eine relativ kleine Anzahl miteinander verbundener Blöcke (oder „Zellen"). Zwei Blöcke auf hoher Ebene 102a–b sind in 1 gezeigt, wobei ein typischer Schaltungsentwurf jedoch Hunderte oder Tausende derartige Blöcke umfassen kann. Die Anzahl von Blöcken auf hoher Ebene ist jedoch wesentlich kleiner als die Gesamtzahl von Schaltungselementen in der entsprechenden Schaltung.
  • In 1 sind die Namen, die verwendet werden, um Blöcke in der Datenbank 100 zu identifizieren, unter Verwendung von Namen angezeigt, die alle in Großbuchstaben geschrieben sind. Der Name von Block 102a zum Beispiel ist „HOCH1" und der Name von Block 104a ist „MITTEL1".
  • Die Blöcke auf hoher Ebene 102a–b entsprechen Strukturelementen auf hoher Ebene der entsprechenden Schaltung. Jeder der Blöcke auf hoher Ebene 102a–b enthält Informationen, die Eigenschaften (wie zum Beispiel Form, Größe, Material und Ort) entsprechender Strukturelemente auf hoher Ebene in der Schaltung beschreiben. Die Datenbank 100 enthält auch Informationen, die Verbindungen (zum Beispiel Anschlußstiftverbindungen) zwischen den Blöcken auf hoher Ebene 102a–b beschreiben. Informationen, die die Datenbank 100 über einen Block enthält, werden hierin als „Blockentwurfsinformationen" bezeichnet.
  • Der Schaltungsentwerfer kann ein EDA-Tool verwenden, um derartige Blöcke auf hoher Ebene 102a–b innerhalb des Schaltungsentwurfs hinzuzufügen, zu entfernen und zu modifizieren. Das EDA-Tool kann zum Beispiel eine graphische Anzeige liefern, die die physischen Orte der Blöcke auf hoher Ebene 102a–b innerhalb des Schaltungsentwurfs und die Verbindungen zwischen denselben darstellt. Diese graphische Darstellung des physischen Layouts des Schaltungsentwurfs (im Gegensatz zu der logischen Darstellung der Schaltungsentwurfshierarchie, die in 1 dargestellt ist) kann verwendet werden, um einen Layout auf hoher Ebene und ein Leiten bzw. Routing in dem Schaltungsentwurf durchzuführen.
  • Wie ferner in 1 dargestellt ist, sind die Blöcke auf hoher Ebene 102a–b aus Blöcken auf mittlerer Ebene 104a–d aufgebaut, die wiederum aus Blöcken auf niedriger Ebene 106a–i aufgebaut sind. Die Blöcke auf niedriger Ebene 106a–i können zum Beispiel diskrete strukturelle Schaltungselemente, wie zum Beispiel Widerstände oder Logikgatter, darstellen. Obwohl die Schaltungsentwurfsdatenbank 100 drei Abstraktionsebenen enthält, die als „hoch", „mittel" und „niedrig" bezeichnet sind, kann eine tatsächliche Schaltungsentwurfsdatenbank in einer Hierarchie angeordnet sein, die jede Anzahl von Ebenen aufweist.
  • Wenn der Schaltungsentwerfer die Blöcke auf hoher Ebene 102a–b innerhalb des Schaltungsentwurfs unter Verwendung des EDA-Tools, wie oben beschrieben wurde, plaziert und gestaltet, kann das EDA-Tool unter Umständen dem Schaltungsentwerfer die Blöcke auf mittlerer Ebene 104a–d oder die Blöcke auf niedriger Ebene 106a–i nicht anzeigen. Auf diese Weise kann der Schaltungsentwerfer einen Entwurf auf hoher Ebene der Schaltung (das heißt durch Plazieren und Verbinden von Blöcken auf hoher Ebene 102a–b) ohne den Bedarf durchführen, sich mit Blöcken auf niedriger Ebene in dem Entwurf zu befassen. Allgemeiner zeigt das EDA-Tool, wenn eine bestimmte Ebene der Schaltungshierarchie bearbeitet wird, dem Schaltungsentwerfer keine Blöcke auf niedrigen Ebenen der Hierarchie. Auf diese Weise ermöglicht es der hierarchische Entwurf der Schaltung, daß die Komplexität, der sich der Schaltungsentwerfer gegenüber sieht, auf eine verwaltbare Ebene reduziert wird.
  • Es ist üblich, daß unterschiedliche Schaltungsentwerfer oder -teams von Schaltungsentwerfern Zellen auf unter schiedlichen Ebenen der Schaltungshierarchie entwerfen. Ein Schaltungsentwurfsteam zum Beispiel kann mit einem Entwerfen der Blöcke auf hoher Ebene 102a–b beauftragt sein, ein weiteres Entwurfsteam mit einem Entwerfen der Blöcke auf mittlerer Ebene 104a–d und ein drittes Entwurfsteam mit einem Entwerfen der Zellen auf niedriger Ebene 106a–i. Ähnlich können ein bestimmter Schaltungsentwerfer oder ein -entwurfsteam der Arbeit an einer bestimmten Zelle oder Zellen in einer Ebene in der Hierarchie zugewiesen sein.
  • Üblicherweise sind derartige verschiedene Teams von Schaltungsentwerfern gleichzeitig an einem Entwurf beteiligt. Um die Integrität der Schaltungsentwurfsdatenbank 100 beizubehalten, ist es jedoch notwendig zu vermeiden, daß sich Modifizierungen, die durch einen Schaltungsentwerfer an einem Block auf einer bestimmten Ebene der Entwurfshierarchie durchgeführt werden, sich sofort zu Blöcken auf höheren Ebenen der Entwurfshierarchie fortpflanzen. Wenn zum Beispiel alle Schaltungsentwerfer direkt und gleichzeitig an unterschiedlichen Ebenen der Schaltungsentwurfsdatenbank 100 arbeiten sollten, würden Veränderungen, die an einer Ebene der Entwurfshierarchie (zum Beispiel an den Blöcken auf mittlerer Ebene 104a–d) vorgenommen würden, die Struktur von Blöcken (zum Beispiel Blöcken auf hoher Ebene 102a–b) auf höheren Ebenen der Entwurfshierarchie beeinflussen. Derartige Veränderungen würden sich mit der Arbeit stören, die durch Schaltungsentwerfer auf den höheren Ebenen der Entwurfshierarchie durchgeführt wird. Ferner könnten als das Ergebnis von mehreren Veränderungen, die durch unterschiedliche Schaltungsentwerfer an unterschiedlichen, sich überlappenden Abschnitten der Datenbank 100 vorgenommen werden, Informationen in der Schaltungsentwurfsdatenbank 100 verfälscht oder anderweitig intern inkonsistent werden.
  • Um derartige Probleme zu lindern, liefern herkömmliche EDA-Tools Mechanismen, um Kopien von Entwurfsdaten in lokalen Arbeitsgebieten anzufertigen. Wenn ein Schaltungsentwerfer einen bestimmten Block in der Schaltungsentwurfsdatenbank 100 modifizieren möchte, weist der Schaltungsentwerfer das EDA-Tool an, diesen Block der Schaltungsentwurfsdatenbank 100 und alle Blöcke unter demselben in der Hierarchie in ein virtuelles „Kabuff" bzw. „Cubby" zu kopieren. Das Kabuff ist im wesentlichen eine Momentaufnahme des Zustands eines Blocks und aller Blöcke, die es zu einem bestimmten Zeitpunkt enthält. Das Kabuff ist als eine Datenstruktur implementiert, die sich zum Beispiel auf dem lokalen Festplattenlaufwerk eines Schaltungsentwerfers befinden kann. Ein Kabuff kann Momentaufnahmen von mehr als einem Block in der Schaltungsentwurfsdatenbank 100 enthalten.
  • Nach dem Kopieren eines bestimmten Blocks und seiner Nachkommen in ein Kabuff kann der Schaltungsentwerfer das EDA-Tool verwenden, um die Kopie des Blockentwurfs zu modifizieren, der sich in dem Kabuff befindet (hierin als der „Kabuff-Blockentwurf" bezeichnet), und nicht die ursprüngliche („Live"-) Version des Blockentwurfs, die sich in der Schaltungsentwurfsdatenbank 100 selbst befindet. Veränderungen, die durch den Schaltungsentwerfer an dem Kabuff-Blockentwurf vorgenommen werden, ändern den ursprünglichen Blockentwurf in der Schaltungsentwurfsdatenbank 100 nicht und stören deshalb nicht die Arbeit, die durch andere Schaltungsentwerfer bei Blockentwürfen höherer Ebenen durchgeführt wird, die den Kabuff-Blockentwurf umfassen. Sobald der Schaltungsentwerfer mit einem Modifizieren des Kabuff-Blockentwurfs abgeschlossen hat, kann er das EDA-Tool anweisen, den modifizierten Kabuff-Blockentwurf von dem Kabuff wieder zurück in die Schaltungsentwurfsdatenbank 100 zu kopieren, und dadurch die ursprüngliche Version des Blockentwurfs zu ersetzen. Die Veränderungen, die durch den Schaltungsentwerfer an dem Blockentwurf vorgenommen werden, werden dadurch für andere Schaltungsentwerfer verfügbar. Ein Kopieren mehrerer modifizierter Kabuff-Blockentwürfe wieder zurück in die Schaltungsentwurfsdatenbank 100 kann abgestimmt und synchronisiert sein, um die Integrität der Datenbank 100 beizubehalten.
  • Das Entwerfen eines Kabuff-Softwaretools kann eine schwierige und mühsame Aufgabe sein. Unter Verwendung von herkömmlichen Techniken zum Beispiel erfordert ein Kopieren von Teilsätzen der Schaltungsentwurfsdatenbank 100 in Kabuffe eine Kenntnis der bestimmten Merkmale der Datenstrukturen und des Dateiformats, in dem die Datenbank 100 gespeichert ist. Insbesondere ist es unter Umständen notwendig, daß das Kabuff-Softwaretool fest bzw. „hard" mit einer Kenntnis folgender Elemente codiert ist: (1) der bestimmten hierarchischen Struktur der Schaltungsentwurfsdatenbank; (2) der Orte, an denen Blockinformationen in der Datenbank gespeichert sind; (3) der Datenstrukturen, die durch die Datenbank 100 verwendet werden, um Blockinformationen darzustellen; und (4) des bestimmten Binärdateiformats, in dem die Datenbank 100 auf einer Platte gespeichert ist. Veränderungen an einem dieser Merkmale der Datenbank 100 können es unter Umständen erforderlich machen, daß das Kabuff-Tool neu codiert wird.
  • Es besteht ein Bedarf nach verbesserten Techniken zum Duplizieren von Entwürfen integrierter Schaltungen und Teilsätzen derselben.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein computerimplementiertes Verfahren oder ein System zu schaffen, mit deren Hilfe die Teamarbeit mehrerer Schaltungsentwerfer beim Entwerfen komplexer Schaltungen unterstützt werden kann.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder ein System gemäß Anspruch 11 gelöst.
  • Techniken zum Kopieren eines Teilsatzes der Blockentwurfsinformationen, die in einer Schaltungsentwurfsdatenbank enthalten sind, in ein Blockentwurfs-"Kabuff" sind offenbart. Ein Schaltungsentwurfsduplizierungstool kann in Software implementiert sein, um die Blockentwurfsinformationen zu kopieren. Das Duplizierungstool muß nicht fest mit In formationen über den Ort von Blockentwurfsinformationen für bestimmte Blöcke innerhalb der Schaltungsentwurfsdatenbank oder mit Informationen über die logische Struktur der Datenbank codiert sein. Vielmehr können Schaltungsentwurfs-Metadaten, die die Orte von Blockentwurfsinformationen und die logische Struktur der Datenbank anzeigen, für das Duplizierungstool bereitgestellt werden, um es dem Duplizierungstool zu ermöglichen, den Teilsatz der Blockentwurfsinformationen zu kopieren. Die Schaltungsentwurfsdatenbank und/oder das Kabuff können in einem herkömmlichen Computerdateisystem gespeichert sein und das Duplizierungstool kann den Teilsatz der Blockentwurfsinformationen unter Verwendung herkömmlicher Dateisystembefehle kopieren.
  • Bei einem Aspekt zum Beispiel wird ein computerimplementiertes Verfahren zur Verwendung in einem System bereitgestellt, das eine Schaltungsentwurfsdatenbank umfaßt, die greifbar auf einem ersten computerlesbaren Medium gespeichert ist. Die Schaltungsentwurfsdatenbank enthält Blockentwurfsinformationen, die eine Mehrzahl von Blöcken in einem Schaltungsentwurf beschreiben. Das Verfahren umfaßt folgende Schritte: (A) Erhalten eines Identifizierers eines der Mehrzahl von Blöcken; (B) Identifizieren eines Teilsatzes der Blockentwurfsinformationen, die dem identifizierten Block entsprechen, basierend auf ersten Metadaten, die eine Mehrzahl von Blockidentifizierern auf eine Mehrzahl von Orten von Teilsätzen der Blockentwurfsinformationen abbilden; und (C) Kopieren des identifizierten Teilsatzes der Schaltungsentwurfsdatenbank an ein zweites computerlesbares Medium, wie zum Beispiel ein Verzeichnis in einem Computerdateisystem.
  • Der Identifizierer kann zum Beispiel ein Name des identifizierten Blocks innerhalb der Schaltungsentwurfsdatenbank sein. Der Identifizierer kann zum Beispiel ein Name einer Datei in einem Computerdateisystem sein, in dem Blockentwurfsinformationen für den identifizierten Block gespeichert sind. Der Schritt (B) kann einen Schritt des Identi fizierens der Datei basierend auf dem Dateinamen umfassen und der Schritt (C) kann einen Schritt des Kopierens der Datei an das zweite computerlesbare Medium umfassen.
  • Der Identifizierer kann zum Beispiel ein Name eines Verzeichnisses in einem Computerdateisystem sein, in dem Blockentwurfsinformationen für den identifizierten Block gespeichert sind. Der Schritt (B) kann einen Schritt des Identifizierens des Verzeichnisses basierend auf dem Verzeichnisnamen umfassen und der Schritt (C) kann einen Schritt des Kopierens zumindest einer Datei in dem Verzeichnis an das zweite computerlesbare Medium umfassen. Die Mehrzahl von Blöcken kann hierarchisch in dem Schaltungsentwurf angeordnet sein und der Schritt (C) kann ferner folgende Schritte umfassen: Identifizieren zumindest eines Kindes des identifizierten Blocks und Durchführen der Schritte (A), (B) und (C) für das zumindest eine Kind.
  • Die Mehrzahl von Blöcken kann hierarchisch in dem Schaltungsentwurf angeordnet sein. Der Schritt (C) kann ferner folgende Schritte umfassen: (C)(1) Identifizieren zumindest eines Kindes des identifizierten Blocks; und (C)(2) Durchführen der Schritte (A), (B) und (C) für das zumindest eine Kind. Der Schritt (C)(1) kann einen Schritt des Identifizierens des zumindest einen Kindes des identifizierten Blocks basierend auf zweiten Metadaten umfassen, die die Mehrzahl von Blockidentifizierern auf Kindblöcke der Mehrzahl von Blöcken abbilden. Der Schritt (C)(1) kann einen Schritt des Identifizierens zumindest eines Unterverzeichnisses in einem Computerdateisystemverzeichnis umfassen, das dem identifizierten Block entspricht.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beigefügten Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm der Logikstruktur einer Schaltungsentwurfsdatenbank des Stands der Technik;
  • 2 ein Funktionsblockdiagramm eines Systems zum Duplizieren eines Teilsatzes eines Schaltungsentwurfs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 2B ein Blockdiagramm der Logikstruktur von Schaltungsentwurfsmetadaten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 2C ein Blockdiagramm der Logikstruktur einer Schaltungsblockname-zu-Ort-Abbildung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 2D ein Blockdiagramm der Logikstruktur einer Schaltungsblock-Eltern-zu-Kind-Abbildung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 3 ein Funktionsblockdiagramm eines Systems zum Bearbeiten eines duplizierten Teilsatzes eines hierarchischen Schaltungsentwurfs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 4 ein Blockdiagramm der Logikstruktur einer hierarchisch angeordneten Sammlung von Blockentwurfsinformationsverzeichnissen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 5 ein Flußdiagramm eines Verfahrens, das durch ein Schaltungsentwurfsduplizierungstool durchgeführt wird, um Blockentwurfsinformationen von einer Schaltungsentwurfsdatenbank an ein Blockentwurfkabuff zu kopieren, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 6 ein Blockdiagramm der Logikstruktur eines Blockentwurfskabuffs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Bezug nehmend auf 2A ist ein Funktionsblockdiagramm eines Systems 200 zum Duplizieren eines Teilsatzes eines Schaltungsentwurfs (wie zum Beispiel eines VLSI-Entwurfs) gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gezeigt. Der Schaltungsentwurf kann zum Beispiel in einer herkömmlichen Schaltungsentwurfsdatenbank 100 ausgeführt sein, die oben Bezug nehmend auf 1 detaillierter beschrieben ist. Ein Teil der oder die gesamte Schaltungsentwurfsdatenbank 100 kann in einem Computerdateisystem 218 gespeichert sein, wie zum Beispiel dem Microsoft Windows®-NT-Dateisystem (NTFS) oder einem Unix-basierten Dateisystem.
  • Die Schaltungsentwurfsdatenbank 100 kann verschiedene Arten von Blockentwurfsinformationen für jeden Block in dem Entwurf enthalten. Die Blockentwurfsinformationen für einen bestimmten Block können zum Beispiel eine schematische Ansicht des Blocks, eine Layoutansicht des Blocks und die Ergebnisse einer Entwurfsregelprüfung (DRC) oder einer anderen Analyse umfassen, die hinsichtlich des Entwurfs des Blocks durchgeführt wird. Blockentwurfsinformationen für einen bestimmten Block können zum Beispiel in einem bestimmten Verzeichnis in dem Dateisystem 218 gespeichert sein, wobei jede Art von Blockentwurfsinformationen für den Block in einem unterschiedlichen Unterverzeichnis dieses Verzeichnisses gespeichert sein kann.
  • Das System 200 umfaßt ein Schaltungsentwurfsduplizierungstool bzw. -Werkzeug 202, das die Schaltungsentwurfsdatenbank 100 oder jeden Teilsatz derselben in ein Blockentwurfskabuff 216 kopieren kann. Das Schaltungsentwurfsduplizierungstool 202 kann zum Beispiel als ein Computerprogramm implementiert sein. Das Blockentwurfskabuff 216 kann zum Beispiel in einem Verzeichnis in dem gleichen Dateisystem 218 wie die Schaltungsentwurfsdatenbank 100 oder in einem unterschiedlichen Dateisystem gespeichert sein. Ein menschlicher Schaltungsentwerfer 206 kann zum Beispiel einen Ka buff-Erzeugen-Befehl 208 an das Schaltungsentwurfsduplizierungstool 202 liefern. Der Kabuff-Erzeugen-Befehl 208 kann spezifizieren, daß ein Teilsatz der Schaltungsentwurfsdatenbank 100 in das Blockentwurfskabuff 216 kopiert wird. Es wird zum Beispiel angenommen, daß der „Kabuff-Erzeugen"-Befehl 208 anzeigt, daß ein Block auf mittlerer Ebene 104a in das Blockentwurfskabuff 216 kopiert werden soll. Das Schaltungsentwurfsduplizierungstool 202 kann einige oder alle der Blockentwurfsinformationen für den Block 104a und die Blöcke, die derselbe enthält, von der Schaltungsentwurfsdatenbank 100 in das Blockentwurfskabuff 216 kopieren. Die dadurch kopierten Informationen werden hierin als ursprüngliche Blockentwurfsinformationen 212 bezeichnet.
  • Alternativ kann der Kabuff-Erzeugen-Befehl 208 anweisen, daß das Schaltungsentwurfsduplizierungstool 202 alle Blockentwurfsinformationen in dem Blockentwurfskabuff 216 mit neueren Blockentwurfsinformationen aktualisiert, die in der Schaltungsentwurfsdatenbank 100 enthalten sind. Auf ein Empfangen des Kabuff-Erzeugen-Befehls 208 hin kann das Schaltungsentwurfsduplizierungstool 202 Blockentwurfsinformationen in dem Blockentwurfskabuff 216 durch entsprechende neuere Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100, falls vorhanden, ersetzen.
  • Das Schaltungsentwurfsduplizierungstool 202 kann Blockentwurfsinformationen von der Datenbank 100 in das Blockentwurfskabuff 216 kopieren, ohne mit einer Kenntnis eines oder mehrerer der folgenden Elemente fest codiert sein: (1) der bestimmten hierarchischen Struktur der Schaltungsentwurfsdatenbank 100; (2) der Orte, an denen Blockinformationen in der Datenbank 100 gespeichert sind; (3) der Datenstrukturen, die durch die Datenbank 100 verwendet werden, um Blockinformationen darzustellen; und (4) des bestimmten Binärdateiformats, in dem die Datenbank 100 auf einer Platte gespeichert ist. Diese vier Merkmale der Datenbank 100 in jeder Kombination werden hierin als das „Format" der Datenbank 100 bezeichnet.
  • Schaltungsentwurfsmetadaten 204 zum Beispiel können Informationen umfassen, die die Blockentwurfsinformationen beschreiben, die in der Schaltungsentwurfsdatenbank 100 enthalten sind, und zwar auf eine Weise, die unabhängig von dem Datenformat der Datenbank 100 ist. Die Schaltungsentwurfsmetadaten 204 können zum Beispiel als eine Befehlszeile oder als eine Datei in dem Dateisystem 218 implementiert sein und können als ein Eingang in das Schaltungsentwurfsduplizierungstool vorgesehen sein, wodurch ermöglicht wird, daß das Schaltungsentwurfsduplizierungstool 202 Blockentwurfsinformationen von der Schaltungsentwurfsdatenbank 100 kopiert.
  • Bezug nehmend auf 3 kann, sobald der spezifizierte Teilsatz der Schaltungsentwurfsdatenbank in das Blockentwurfskabuff 216 kopiert ist, der Schaltungsentwerfer 206 das Blockentwurfskabuff 216 unter Verwendung eines herkömmlichen Schaltungseditors 304 bearbeiten, der durch ein herkömmliches Schaltungsentwurfstool 302 bereitgestellt wird. Der Schaltungsentwerfer 206 kann zum Beispiel Schaltungsbearbeitungsbefehle 308 an den Schaltungseditor 304 unter Verwendung einer Tastatur 306 oder einer anderen Eingabevorrichtung ausgeben. Ansprechend auf einen Empfang der Bearbeitungsbefehle 308 kann der Schaltungseditor 304 die Schaltungsentwurfsinformationen in dem Blockentwurfsinformationskabuff 216 modifizieren 316. Der Schaltungseditor 304 kann auch Informationen aus dem Blockentwurfskabuff 216 extrahieren 314, um eine graphische Darstellung 312 des Blockentwurfs, der bearbeitet wird, auf einem Anzeigemonitor 310 oder einer anderen Ausgabevorrichtung anzuzeigen.
  • Wenn der Schaltungsentwerfer 206 ein Modifizieren des Blockentwurfs, der in dem Blockentwurfskabuff 216 enthalten ist, abgeschlossen hat, kann der Schaltungsentwerfer 206 einen Kabuff-Speichern-Befehl 210 an das Schaltungsentwurfsduplizierungstool 202 ausgeben, wobei ansprechend darauf das Schaltungsentwurfsduplizierungstool 202 die modifi zierten Blockentwurfsinformationen 214, die in dem Blockentwurfskabuff 216 enthalten sind, wieder zurück in die Schaltungsentwurfsdatenbank 100 kopieren kann, wodurch die ursprünglichen Blockentwurfsinformationen 214, die in derselben enthalten sind, ersetzt werden. Das Schaltungsentwurfsduplizierungstool 202 kann die modifizierten Blockentwurfsinformationen 214 unter Verwendung der gleichen Kopiertechniken in die Schaltungsentwurfsdatenbank 100 kopieren, die verwendet werden, um die ursprünglichen Blockentwurfsinformationen 212 in das Blockentwurfskabuff 216 zu kopieren. Das System 200 liefert dadurch die Vorteile des Gebens in einen Kabuff ohne es erforderlich zu machen, daß das Schaltungsentwurfsduplizierungstool 202 mit einer Kenntnis des Formats der Datenbank 100 fest codiert ist.
  • Andere Operationen können hinsichtlich der Blockentwurfsinformationen, die in dem Kabuff 216 gespeichert sind, durchgeführt werden. Es ist zum Beispiel oft wünschenswert, elektronische computergestützte Entwurfs-(E-CAD-)Tools zu verwenden, um Analysen hinsichtlich Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100 laufenzulassen. Beispiele derartiger Tools umfassen VoltageStormTM SoC, das bei Simplex Solutions, Inc. in Sunnyvale, Kalifornien, erhältlich ist, sowie PathMill®, das bei Synopsys, Inc. in Mountain View, Kalifornien, erhältlich ist. Es wird üblicherweise bevorzugt, daß derartige Tools auf Blockentwurfsinformationen wirken, die in dem Kabuff 216 gespeichert sind, und nicht auf die Schaltungsentwurfsdatenbank 100 selbst, da es vorzuziehen ist, eine sich nicht verändernde Entwurfs-"Momentaufnahme" zu analysieren. Obwohl ein Teil der Beschreibung hierin sich auf den Prozeß des Kopierens eines Teilsatzes der Schaltungsentwurfsdatenbank 100 in ein Kabuff 216 beziehen kann, kann das Schaltungsentwurfsduplizierungstool 202 die gesamten Blockentwurfsinformationen zur Verwendung durch E-CAD-Tools oder zu anderen Zwecken in der Schaltungsentwurfsdatenbank 100 in das Kabuff 216 kopieren. Deshalb kann sich der Ausdruck „Teilsatz", wie er hierin verwendet wird, auf die gesamte oder jeden Abschnitt der Schaltungsentwurfsdatenbank 100 beziehen.
  • Nach der Beschreibung des allgemeinen Betriebs des Schaltungsentwurfsduplizierungssystems 200, das in 2A dargestellt ist, werden nun bestimmte Ausführungsbeispiele des Systems 200 detaillierter beschrieben.
  • Bezug nehmend auf 2B ist ein Ausführungsbeispiel der Schaltungsentwurfsmetadaten 204 in Blockdiagrammform dargestellt. Die Schaltungsentwurfsmetadaten 204 umfassen sowohl eine Blockname-zu-Ort-Abbildung 220 als auch eine Block-Eltern-zu-Kind-Abbildung 224. Wie unten detaillierter beschrieben ist, können bei anderen Ausführungsbeispielen die Schaltungsentwurfsmetadaten 204 auch nur eine der Abbildungen 220 und 224 oder keine der Abbildungen 220 und 224 umfassen.
  • Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100 können über eine große Anzahl und Vielfalt von Verzeichnissen und Dateien in dem Dateisystem 218 verteilt sein. Die Verteilung von Blockentwurfsinformationen innerhalb des Dateisystems 218 kann der hierarchischen internen Struktur der Schaltungsentwurfsdatenbank 100 (1) entsprechen oder nicht. Die Blockname-zu-Ort-Abbildung 220 bildet Namen von Blöcken in der Schaltungsentwurfsdatenbank 100 auf Orte ab, an denen Blockentwurfsinformationen für derartige Blöcke gespeichert sind. Die Blockname-zu-Ort-Abbildung 220 umfaßt zwei Spalten 222a und 222b. Die Blocknamenspalte 222a spezifiziert den Namen eines Blocks und die Blockortsspalte 222b spezifiziert einen Ort, an dem die Blockentwurfsinformationen für den entsprechenden Block gespeichert sind. Die Blockname-zu-Ort-Abbildung 220 umfaßt einzelne Abbildungen 220a–o, wobei jede derselben einem bestimmten der Blöcke in der Schaltungsentwurfsdatenbank 100 entspricht. Obwohl die bestimmte Blockname-zu-Ort-Abbildung 220, die in 2B dargestellt ist, 15 Abbildungen (eine für jeden der Blöcke in der Schaltungsentwurfsdatenbank 100, die in 1 dargestellt ist) umfaßt, kann es jede Anzahl einzelner Abbildungen in der Blockname-zu-Ort-Abbildung 220 geben.
  • Ferner kann es mehr als eine einzelne Name-zu-Ort-Abbildung für jeden Block geben, wenn zum Beispiel Blockentwurfsinformationen für einen bestimmten Block an mehr als einem Ort gespeichert sind. Die Blockorte 222b können zum Beispiel Verzeichnisnamen, Dateinamen oder beides sein. Ferner kann die Blockname-zu-Ort-Abbildung 220 unter Verwendung anderer Datenstrukturen und/oder Verfahren als einer Tabelle implementiert sein, wie für Fachleute auf diesem Gebiet ersichtlich ist.
  • Die Blockname-zu-Ort-Abbildung 220 kann den Namen eines bestimmten Blocks auf die Orte folgender Elemente abbilden: (1) aller Blockentwurfsinformationen für den Block oder (2) eines Teilsatzes der Blockentwurfsinformationen für den Block. Wie zum Beispiel oben beschrieben wurde, kann die Schaltungsentwurfsdatenbank 100 mehrere Arten von Blockentwurfsinformationen für einen bestimmten Block umfassen. Die Blockname-zu-Ort-Abbildung 220 kann zum Beispiel den Namen eines Blocks auf die schematischen Entwurfsinformationen für den Block, jedoch nicht auf andere Arten von Blockentwurfsinformationen für den Block abbilden. Auf diese Weise kann die Blockname-zu-Ort-Abbildung 220 nicht nur verwendet werden, um Orte von Blockentwurfsinformationen für Blöcke in der Schaltungsentwurfsdatenbank 100 zu spezifizieren, sondern auch, um zu spezifizieren, welche Blockentwurfsinformationen für bestimmte Blöcke in der Schaltungsentwurfsdatenbank 100 in das Blockentwurfskabuff 216 zu kopieren sind.
  • Ferner können die Schaltungsentwurfsmetadaten 204 zum Beispiel die Orte von Schemata für Blöcke in der Datenbank 100 spezifizieren, während ein weiterer Satz von Schaltungsentwurfsmetadaten (nicht gezeigt) die Orte von Blockentwurfsinformationen spezifizieren kann, die zur Verwendung durch ein bestimmtes Entwurfsanalysetool erforderlich sind. Wenn zum Beispiel die beiden Sätze von Schaltungsentwurfsmetadaten in unterschiedlichen Dateien gespeichert sind, kann des Schaltungsentwerfer 206 durch ein Bereitstellen der entsprechenden Schaltungsentwurfsmetadatendatei als Eingabe in das Schaltungsentwurfsduplizierungstool 202 spezifizieren, welche Informationen (zum Beispiel Schemata- oder Analysetoolinformationen) in das Blockentwurfskabuff 216 kopiert werden sollen. Ein Ausführen der Name-zu-Ort-Abbildung 220 in den Schaltungsentwurfsmetadaten 204 entkoppelt dadurch die Abbildung 220 von dem Schaltungsentwurfsduplizierungstool 202 selbst. Da keine bestimmte Abbildung fest in das Schaltungsentwurfsduplizierungstool 202 codiert ist, hat der Schaltungsentwerfer 206 einfach durch ein Bereitstellen unterschiedlicher Sätze von Schaltungsentwurfsmetadaten für das Schaltungsentwurfsduplizierungstool 202 eine größere Flexibilität, um unterschiedliche Arten und Teilsätze von Blockentwurfsinformationen in das Blockentwurfskabuff 216 zu kopieren.
  • Bezug nehmend auf 2C ist ein Beispiel der Blocknamezu-Ort-Abbildung 220 gezeigt, die der Schaltungsentwurfsdatenbank 100, die in 1 dargestellt ist, entspricht. Es wird zum Beispiel eine einzelne Abbildung 220a betrachtet, die einem Block auf hoher Ebene 102a entspricht. Die einzelne Abbildung 220a zeigt an, daß Blockentwurfsinformationen für einen Block (das heißt Block 102a), der „HOCH1" (Spalte 222a) heißt, in einem Verzeichnis gespeichert sind, das einen Pfadnamen „C:\ENTWÜRFE\SCHALTUNG1\HOCH1\" (Spalte 222b) aufweist. Es wird nun eine einzelne Abbildung 220b betrachtet, die einem Block auf mittlerer Ebene 104a (mit dem Namen „MITTEL1") entspricht. Die einzelne Abbildung 220b zeigt an, daß Blockentwurfsinformationen für einen Block (das heißt Block 104a), der „MITTEL1" (Spalte 222a) heißt, in einem Verzeichnis gespeichert sind, das einen Pfadnamen „C:\ENTWÜRFE\SCHALTUNG1\HOCH1\MITTEL1\" (Spalte 222b) aufweist. Die Bedeutung der verbleibenden einzelnen Abbildungen 220c–0 sollte basierend auf der gerade gelieferten Beschreibung klar sein.
  • Wieder Bezug nehmend auf 2B bildet die Block-Elternzu-Kind-Abbildung 224 Namen von Elternblöcken in der Schaltungsentwurfsdatenbank 100 auf die Namen ihrer Kinder ab. Wie die Ausdrücke „Eltern", „Kind", „Vorfahre" und „Nachkomme" hierin verwendet werden, haben dieselben ihre typischen Bedeutungen hinsichtlich Elementen einer hierarchischen Struktur. Die Block-Eltern-zu-Kind-Abbildung 224 umfaßt zwei Spalten 226a und 226b. Die Block-Eltern-Name-Spalte 226a spezifiziert den Namen eines Blocks, während die Block-Kind-Name-Spalte 226b den oder die Namen von Kindern des Blocks, falls vorhanden, spezifiziert. Die Block-Eltern-zu-Kind-Abbildung 224 umfaßt einzelne Abbildungen 224a–o, die jeweils einem bestimmten der Blöcke in der Schaltungsentwurfsdatenbank 100 entsprechen. Obwohl die bestimmte Blockname-zu-Ort-Abbildung 224, die in 2B dargestellt ist, 15 Abbildungen umfaßt (eine für jeden der Blöcke in der Schaltungsentwurfsdatenbank 100, die in 1 dargestellt ist), kann es jede Anzahl einzelner Abbildungen in der Block-Eltern-zu-Kind-Abbildung 224 geben. Ferner kann die Blockname-zu-Ort-Abbildung 224 unter Verwendung anderer Datenstrukturen und/oder Verfahren als einer Tabelle implementiert sein, wie für Fachleute auf diesem Gebiet ersichtlich ist.
  • Bezug nehmend auf 2D ist ein Beispiel einer Block-Eltern-zu-Kind-Abbildung 224, die der Schaltungsentwurfsdatenbank entspricht, die in 1 dargestellt ist, gezeigt. Es wird zum Beispiel eine einzelne Abbildung 224a betrachtet, die anzeigt, daß Blockentwurfsinformationen für einen Block (das heißt Block 102a), der den Namen „HOCH1" (Spalte 226a) aufweist, zwei Kinder mit den Namen „MITTEL1" und „MITTEL2" (Spalte 226b) aufweisen. Nun wird eine einzelne Abbildung 224b betrachtet, die anzeigt, daß Blockentwurfsinformationen für einen Block (das heißt Block 104a) mit dem Namen „MITTEL1" (Spalte 226a) drei Kinder mit den Namen „NIEDRIG1", „NIEDRIG2" und „NIEDRIG3" (Spalte 226b) aufweisen. Wenn die Spalte 226b für eine bestimmte einzelne Abbildung leer ist, weist dem entsprechende Block keine Kinder auf (wie in dem Fall von Block 106a („NIEDRIG1"), entsprechend der einzelnen Abbildung 224c). Die Bedeutung der verbleibenden einzelnen Abbildungen 224c–0 sollte basierend auf der gerade gelieferten Beschreibung klar sein.
  • Bezug nehmend auf 5 ist ein Flußdiagramm eines Verfahrens 500, das durch das Schaltungsentwurfsduplizierungstool 202 durchgeführt wird, um einen Teilsatz der Schaltungsentwurfsdatenbank 100 an das Blockentwurfskabuff 216 zu kopieren gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gezeigt. Das Verfahren 500 kann als eine Softwareroutine mit dem Namen Kabuff_Erzeugen() implementiert sein, die einen einzelnen Parameter BN als Eingang nimmt (Schritt 502). Der Parameter BN spezifiziert den Blocknamen eines Blocks B, für den Blockentwurfsinformationen in das Blockentwurfskabuff 216 kopiert werden sollen.
  • Das Verfahren 500 identifiziert den Ort L der Blockentwurfsinformationen für den Block B basierend auf dem Blockname BN (Schritt 504). Der Ort L kann zum Beispiel eines oder mehrere Verzeichnisse und/oder Dateien in einem Computerdateisystem sein. Der Ort L kann jedoch jeder computerlesbare Ort sein. Der Ort L kann zum Beispiel eine einzelne Datei in einem Computerdateisystem, ein Abschnitt einer Datei (wie zum Beispiel eine Aufzeichnung in einer Datenbank, Text in einer Textdatei oder eine oder mehrere Zeilen in einer Tabellenkalkulationstabelle) oder eine Datenstruktur (wie zum Beispiel eine Liste oder ein Array) in einem Computerprogramm sein.
  • Das Verfahren 500 kann zum Beispiel die Blockname-zu-Ort-Abbildung 220 verwenden, um Schritt 504 durchzuführen. Das Verfahren 500 kann zum Beispiel die einzelnen Block-zu-Ort-Abbildungen 220a–0 nach einer Abbildung (oder Abbildungen) durchsuchen, in denen der Wert in der Blocknamensspalte 222a gleich dem Blocknamen BN ist, und den Ort L als den oder die entsprechenden Werte in der Blockortstabelle 222b identifizieren.
  • Ein Vorteil des Bereitstellens der Blockname-zu-Ort-Abbildung 220 in den Schaltungsentwurfsmetadaten 204 und dadurch des Lösens der Kopplung der Blockname-zu-Ort-Tabelle 220 von dem Schaltungsentwurfsduplizierungstool 202 ist der, daß Veränderungen an der Organisation von Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100 es nicht erforderlich machen, daß der Entwurf des Schaltungsentwurfsduplizierungstools 202 modifiziert (zum Beispiel neu codiert) wird. Vielmehr kann die Veränderung an der Blockentwurfsinformationsorganisierung einfach durch eine entsprechende Veränderung an der Blockname-zu-Ort-Abbildung 220 widergespiegelt werden. Eine derartige Veränderung ist üblicherweise einfacher und weniger zeitaufwendig durchzuführen als eine Veränderung an dem Entwurf des Schaltungsentwurfsduplizierungstools 202 selbst.
  • Das Verfahren 500 erzeugt eine neue Blockentwurfsdatenstruktur D in dem Blockentwurfskabuff 216 (Schritt 505), liest die ursprünglichen Blockentwurfsinformationen 212 von dem Ort L (Schritt 506) und schreibt die ursprünglichen Blockentwurfsinformationen 212 in die Datenstruktur D in dem Blockentwurfskabuff 216 (Schritt 507). Das Verfahren 500 kann die ursprünglichen Blockentwurfsinformationen 212 in den Schritten 505 bis 507 unter Verwendung einer einer Vielzahl von Techniken kopieren. Wenn zum Beispiel die Schaltungsentwurfsdatenbank 100 und das Blockentwurfskabuff 216 in dem Dateisystem 218 gespeichert sind, können die Schritte 505 bis 507 unter Verwendung bekannter und herkömmlicher Computerbefehle zum Schreiben und Lesen von Informationen an das und von dem Dateisystem 218 durchgeführt werden. Dies ist jedoch keine Einschränkung der vorliegenden Erfindung. Vielmehr können alle geeigneten Techniken verwendet werden, um die ursprünglichen Blockentwurfsinformationen 212 in das Kabuff 216 zu kopieren. Wenn zum Bei spiel die ursprünglichen Blockentwurfsinformationen 212 in einer Datenstruktur in einem Speicher gespeichert sind, kann Schritt 506 unter Verwendung von Befehlen, die in einer Computerprogrammiersprache, wie zum Beispiel C oder Java, implementiert sind, zum Kopieren von Informationen von einer Datenstruktur zu einer anderen implementiert sein.
  • Wenn das Kabuff 216 bereits vor der Einleitung von Schritt 507 Blockentwurfsinformationen für den Block BN enthält, kann das Verfahren 500 in Schritt 507 entweder die existierenden Blockinformationen in dem Kabuff 216 durch die neuen Blockentwurfsinformationen 212 ersetzen, dem Schaltungsentwerfer 206 einen Fehler signalisieren oder den Schaltungsentwerfer 206 auffordern auszuwählen, ob die existierenden Blockentwurfsinformationen ersetzt werden sollen oder der Prozeß 500 beendet werden soll.
  • Das Verfahren 500 identifiziert die Namen aller Kinder des Blocks BN (Schritt 508). Das Verfahren 500 kann zum Beispiel die Block-Eltern-zu-Kind-Abbildung 224 verwenden, um Schritt 508 durchzuführen. Das Verfahren 500 kann zum Beispiel die einzelnen Eltern-zu-Kind-Abbildungen 224a–o nach einer Abbildung (oder Abbildungen) durchsuchen, in denen der Wert in der Block-Eltern-Name-Spalte 226a gleich dem Blocknamen BN ist und die Namen der Kinder des Blocks als die Namen identifizieren, die in der Block-Kind-Name-Spalte 226b der Abbildung enthalten sind, die dem Eltern-Blockname BN entspricht.
  • Für jeden Kind-Blocknamen C (Schritt 510) ruft das Verfahren 500 das Kabuff_Erzeugen()-Verfahren 500 mit dem Namen C als einem Parameter auf (Schritt 512). Anders ausgedrückt ruft das Verfahren 500 rekursiv sich selbst auf, um die Blockentwurfsinformationen für alle der Nachkommen von Block B zu kopieren. Auf eine Beendigung der Schleife hin (Schritt 514) endet das Verfahren 500.
  • Das Verfahren 500 kann die Schritte 502 bis 514 auf jede einer Vielzahl von Weisen durchführen. Einige oder alle der Schritte in dem Verfahren 500 können zum Beispiel durch ein Aufrufen von Prozeduren in einer Anwendungsprogrammschnittstelle (API), die durch das Schaltungsentwurfstool 302 (3) zum Zugreifen auf die Schaltungsentwurfsdatenbank 100 vorgesehen ist, durchgeführt werden. Die Block-Elternzu-Kind-Abbildung 224 zum Beispiel kann in der Form einer Datei oder einer anderen Datenstruktur für jeden Block in der Schaltungsentwurfsdatenbank 100 implementiert sein, die die Kinder des Blocks spezifiziert. Die Datei kann in dem gleichen Verzeichnis wie die Entwurfsinformationen des Blocks gespeichert sein. Das Schaltungsentwurfsduplizierungstool 202 kann Schritt 508 zum Beispiel durch ein direktes Lesen von Informationen von der Datei oder durch ein Durchführen eines API-Aufrufs, was Informationen von der Datei liest, durchführen. Bei derartigen Ausführungsbeispielen muß das Schaltungsentwurfsduplizierungstool 202 nicht die bestimmte Block-Eltern-zu-Kind-Abbildung 224 beibehalten, die in 2B dargestellt ist.
  • Alternativ können einige oder alle der Schritte im Verfahren 500 unter Verwendung von Computerprogramminstruktionen zum direkten Zugreifen auf die Schaltungsentwurfsdatenbank 100 und/oder das Blockentwurfskabuff 216 durchgeführt werden. Wie unten detaillierter beschrieben ist, können einige oder alle der Schritte in dem Verfahren 500 unter Verwendung von API-Prozeduren durchgeführt werden, die durch das Dateisystem 218 bereitgestellt werden. Für Fachleute auf diesem Gebiet ist es ersichtlich, wie diese verschiedenen Techniken in verschiedenen Kombinationen zur Implementierung des Verfahrens 500 anzuwenden sind.
  • Einige oder alle der Schaltungsentwurfsmetadaten 204 können zum Beispiel in dem Dateisystem 218 implementiert sein, anstatt als eine bestimmte Datenstruktur, wie in 2A dargestellt ist, vorgesehen sein. Die Blockname-zu-Ort-Abbildung 220 zum Beispiel, die Block-Eltern-zu-Kind-Abbil dung 224 oder beide können in dem Dateisystem 218 implementiert sein. Ein Ausführungsbeispiel, bei dem die Blocknamezu-Ort-Abbildung 220 in dem Dateisystem 218 implementiert ist, wird nun beschrieben.
  • Blockentwurfsinformationen für jeden Block in der Schaltungsentwurfsdatenbank 100 können in einem bestimmten Verzeichnis in dem Dateisystem 218 gespeichert sein. Blockentwurfsinformationen für einen Block auf hoher Ebene 102a können zum Beispiel in einem einzelnen Verzeichnis gespeichert sein, das nur Blockentwurfsinformationen für den Block 102a enthält. Ferner können Blockentwurfsinformationen für einen bestimmten Block in einem Verzeichnis gespeichert sein, das den gleichen Namen wie der Block selbst aufweist (das heißt der Name, der verwendet wird, um den Block innerhalb der Schaltungsentwurfsdatenbank 100 zu identifizieren). Das Verzeichnis zum Beispiel, das Blockentwurfsinformationen für den Block 102a („HOCH1") speichert, kann „HOCH1" genannt werden und das Verzeichnis, das Blockentwurfsinformationen für den Block 104a („MITTEL1") speichert, kann „MITTEL1" genannt werden.
  • Wieder Bezug nehmend auf 5 kann der Blockname BN sich deshalb auf sowohl den Namen eines Blocks als auch auf den Namen des Verzeichnisses beziehen, in dem Blockentwurfsinformationen für den Block gespeichert sind. Das Kabuff_Erzeugen()-Verfahren 500 kann zusätzliche Parameter aufweisen. Ein Parameter IP kann zum Beispiel den oder die Pfadnamen eines oder mehrerer Verzeichnisse spezifizieren, in denen Blockentwurfsinformationen zu finden sind (das heißt der oder die Pfadnamen eines oder mehrerer Verzeichnisse, in denen die Schaltungsentwurfsdatenbank 100 gespeichert ist). Ein Parameter DP kann einen Pfadnamen des Zielverzeichnisses spezifizieren, das verwendet werden soll, um das Blockentwurfskabuff 216 zu speichern. Obwohl der Blockname BN sich auf mehr als einen Block beziehen kann, bezieht sich BN in den hierin beschriebenen bestimmten Bei spielen zur Erleichterung der Erklärung auf einen einzelnen Block.
  • Der Blockort L (5) kann ein Blockquellenpfadname oder Dateiname sein (hierin als S bezeichnet), der den Pfad oder die Datei identifiziert, von dem/der Blockentwurfsinformationen kopiert werden sollen. Das Verfahren 500 kann den Blockquellennamen S basierend auf dem Blocknamen BN (5, Schritt 504) zum Beispiel durch ein Durchsuchen des oder der Blockentwurfsinformationspfade IP und Unterverzeichnisse derselben nach einer Datei/einem Verzeichnis, die/das den Namen S aufweist, identifizieren.
  • Das Verfahren 500 kann eine neue Blockentwurfsdatenstruktur D in dem Blockentwurfskabuff 216 (5, Schritt 505) durch ein Erzeugen einer neuen Datei oder eines Verzeichnisses in dem Zielverzeichnis D erzeugen. Wenn der Quellenname S eine einzelne Datei spezifiziert, kann das Verfahren 500 unter Umständen durch ein Lesen der Datei ursprüngliche Blockentwurfsinformationen 212 von der Quelle S (5, Schritt 506) lesen. Wenn der Quellenname S ein Verzeichnis spezifiziert, kann das Verfahren 500 ursprüngliche Blockentwurfsinformationen 212 von der Quelle S lesen und alle der Dateien in dem Verzeichnis lesen. Das Verfahren 500 kann die ursprünglichen Blockentwurfsinformationen 212 durch ein Schreiben der Datei/en in das Verzeichnis D, die in Schritt 506 gelesen wurden, in das Zielverzeichnis D schreiben. Die Schritte 505 bis 507 können unter Verwendung herkömmlicher Befehle zum Erzeugen, Lesen und Schreiben von Verzeichnissen und Dateien in einem Dateisystem durchgeführt werden.
  • Das Verfahren 500 kann deshalb die ursprünglichen Blockentwurfsinformationen 212 von der Schaltungsentwurfsdatenbank 100 in das Blockentwurfskabuff 216 kopieren, ohne daß die Kenntnis des bestimmten Datenformats benötigt wird, in dem die Schaltungsentwurfsdatenbank 100 gespeichert ist. Obwohl das Schaltungsentwurfsduplizierungstool 202 Informationen 212 unter Verwendung des Verfahrens 500 von der Schaltungsentwurfsdatenbank 100 kopiert, erfordert die Kopieroperation kein Prüfen oder Verarbeiten eines Inhalts der Datenbank. Vielmehr kann das Verfahren 500 herkömmliche Dateilese- und Schreibbefehle der Art verwenden, die durch herkömmliche Betriebssysteme und Programmiersprachen bereitgestellt werden, um die ursprünglichen Blockentwurfsinformationen 212 von der Schaltungsentwurfsdatenbank 100 an das Blockentwurfskabuff 216 zu kopieren.
  • Ferner ermöglicht es die Verwendung herkömmlicher Dateisystembefehle zur Durchführung einer Blockname-zu-Ort-Abbildung (5, Schritt 504), daß eine derartige Abbildung ohne ein Implementieren der Blockname-zu-Ort-Abbildung 220 als eine separate Datenstruktur, wie in 2B dargestellt ist, durchgeführt wird. Ferner ermöglichen es die oben beschriebenen Techniken, daß Blockorte für spezifizierte Blöcke selbst dann identifiziert werden, wenn sich die Namen und Orte von Blockentwurfsinformationen verändern, da das oben beschriebene Benennungsschema es ermöglicht, daß herkömmliche Dateisystembefehle verwendet werden, um Blocknamen auf entsprechende Blockentwurfsinformationen abzubilden, und zwar unabhängig von den Namen von Blöcken oder der bestimmten Organisierung von Blöcken innerhalb der Entwurfshierarchie. Dieses Merkmal liefert einen Vorteil gegenüber herkömmlichen Kabuffbildungs-Tools, die üblicherweise jedesmal ein Neucodieren erfordern, wenn sich die Organisierung der Schaltungsentwurfsdatenbank 100 verändert.
  • Wie oben beschrieben wurde, kann das Schaltungsentwurfsduplizierungstool 202 den Namen eines Blocks auf den oder die Namen, falls vorhanden, seiner Kinder (5; Schritt 508) abbilden. Obwohl, wie oben Bezug nehmend auf 5 beschrieben wurde, das Schaltungsentwurfsduplizierungstool 202 diese Abbildung unter Verwendung der Eltern-zu-Kind-Abbildung 224 (2D) durchführen kann, kann die Abbildung von Eltern-zu-Kind-Blöcken in dem Dateisystem 218 selbst implementiert sein, was den Bedarf nach der separaten Eltern-zu-Kind-Abbildung 224 überflüssig macht.
  • Bezug nehmend auf 4 zum Beispiel sind bei einem Ausführungsbeispiel Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100 in einem Schaltungsentwurfs-Wurzelverzeichnis 400 in dem Computerdateisystem 218 gespeichert. Zu Beispielzwecken ist der Name des Schaltungsentwurfs-Wurzelverzeichnisses 400 „SCHALTUNG1". Das Schaltungsentwurfs-Wurzelverzeichnis 400 und seine Unterverzeichnisse können die gleiche hierarchische Struktur wie die der Schaltungsentwurfsdatenbank 100 selbst (in 1 dargestellt) aufweisen. Das Schaltungsentwurfs-Wurzelverzeichnis 400 kann zum Beispiel der Wurzel der Schaltungsentwurfsdatenbank 100 entsprechen. Das Schaltungsentwurfs-Wurzelverzeichnis 400 umfaßt Blockverzeichnisse auf hoher Ebene 402a–b. Das Blockverzeichnis auf hoher Ebene 402a entspricht dem Block auf hoher Ebene 102a und das Blockverzeichnis 402b auf hoher Ebene entspricht dem Block auf hoher Ebene 102b. Ähnlich entsprechen Blockverzeichnisse auf mittlerer Ebene 404a–d jeweils Blöcken auf mittlerer Ebene 104a–d, während Blockverzeichnisse auf niedriger Ebene 406a–d jeweiligen Blöcken auf niedriger Ebene 106a–i entsprechen. Verzeichnisse 400, 402a–b, 404a–d und 406a–i bilden eine Dateisystemhierarchie 410. Jedes Verzeichnis in der Hierarchie 410 umfaßt Dateien, die Blockentwurfsinformationen für den oder die entsprechenden Blöcke enthalten.
  • Blockentwurfsinformationen in der Schaltungsentwurfsdatenbank 100 können auf jede einer Vielzahl von Weisen in eine geeignete hierarchische Struktur organisiert sein. Herkömmliche EDA-Tools zum Beispiel ermöglichen es, daß der Schaltungsentwerfer 206 die Namen und Orte von Blockentwurfsinformationsdateien spezifiziert. Der Schaltungsentwerfer 206 kann deshalb Blockentwurfsinformationen in Verzeichnissen speichern, die die gleichen Namen wie die Blöcke selbst aufweisen, und in einer hierarchischen Verzeichnisstruktur, wie zum Beispiel der, die in 4 gezeigt ist.
  • Es wird zum Beispiel angenommen, daß das Dateisystem 218 ein Dateisystem auf Basis von Microsoft Windows ist, und daß das Schaltungsentwurfs-Wurzelverzeichnis 400 ein Unterverzeichnis eines Verzeichnisses mit dem Namen ENTWÜRFE ist, das in dem Wurzelverzeichnis eines Festplattenlaufwerks ist, das den Laufwerksbuchstaben C aufweist. In einem derartigen Fall wäre der gesamte Pfadname IP des Schaltungsentwurfs-Wurzelverzeichnisses 400 „C:\ENTWÜRFE\SCHALTUNG1\". Dieser Pfadname kann als ein Parameter an das Kabuff-Erzeugen()-Verfahren 500, wie oben beschrieben wurde, geleitet werden.
  • Wenn Blockentwurfsinformationen in der Datenbank 100 in dem Dateisystem 218 hierarchisch organisiert sind, wie in 1 dargestellt ist, kann das Verfahren 500 zum Beispiel El- tern-Blocknamen auf Kind-Blocknamen (5, Schritt 508) durch ein Durchsuchen des Verzeichnisses des Blocks BN nach Unterverzeichnissen abbilden. Ein Durchsuchen des Blockverzeichnisses auf mittlerer Ebene 404a nach Unterverzeichnissen zum Beispiel würde Blockverzeichnisse auf niedriger Ebene 406a–c identifizieren. Techniken zum Identifizieren von Unterverzeichnissen eines Verzeichnisses sind Fachleuten auf diesem Gebiet bekannt. Da die Hierarchie des Schaltungsentwurfs-Wurzelverzeichnisses 400 und seiner Nachkommen der Hierarchie der Schaltungsentwurfsdatenbank 100 (1) entspricht, identifiziert ein Identifizieren von Unterverzeichnissen eines Verzeichnisses des Blocks BN effektiv die Namen der Kinder von Block BN (Schritt 508) ohne den Bedarf, die Block-Eltern-zu-Kind-Abbildung 224 als eine separate Datenstruktur, wie in 2B dargestellt ist, beizubehalten.
  • Ein bestimmtes Beispiel des Betriebs von Verfahren 500 wird nun beschrieben, um weiter zu verdeutlichen, wie das Verfahren 500 verwendet werden kann, um ursprüngliche Blockentwurfsinformationen 212 in das Blockentwurfskabuff 216 zu kopieren. Bei diesem Ausführungsbeispiel ist der Blockname BN 552 „MITTEL1", was anzeigt, daß der Block 104a (1), dessen Blockentwurfsinformationen in dem Verzeichnis 404a (4) gespeichert sind, in das Blockentwurfskabuff 216 (2A) kopiert werden sollen.
  • Wenn der Schaltungsentwerfer 206 den Kabuff-Erzeugen-Befehl 208 an das Schaltungsentwurfsduplizierungstool 202 sendet, wird das Kabuff_Erzeugen()-Verfahren 500 ausgeführt (5). Das Verfahren 500 identifiziert den Blockentwurfsinformationsort L als das Blockverzeichnis auf mittlerer Ebene 404a (4) unter Verwendung einer der oben beschriebenen Techniken (Schritt 504). Bezug nehmend auf 6 erzeugt das Verfahren 500 ein neues Verzeichnis 602 in dem Blockentwurfskabuff 216, um Blockentwurfsinformationen für den Block 104a (5, Schritt 505) zu speichern. Das Verfahren 500 liest Blockentwurfsinformationen 212 für den Block 104a von dem Verzeichnis 404a (Schritt 506) und schreibt die Informationen 212 in das Verzeichnis 602 (Schritt 507).
  • Das Verfahren 500 identifiziert die Namen der Kinder von Block 104a unter Verwendung einer der oben beschriebenen Techniken (Schritt 508). Das Verfahren 500 kann zum Beispiel die Namen („NIEDRIG1", „NIEDRIG2" und „NIEDRIG3") der Unterverzeichnisse 406a–c des Verzeichnisses 404a identifizieren. Das Verfahren 500 ruft sich selbst dann für jedes der identifizierten Unterverzeichnisse auf (Schritte 510514).
  • In den Schritten 510514 wendet das Verfahren 500 die gerade beschriebenen Techniken an, und Unterverzeichnisse 604a–c (6) innerhalb des Verzeichnisses 602 in dem Kabuff 216 zu erzeugen und Blockentwurfsinformationen für die Blöcke auf niedriger Ebene 106a–c aus ihren jeweiligen Verzeichnissen 406a–c in der Datenbank 100 in ihre jeweiligen Verzeichnisse 604a–c in dem Kabuff 216 zu kopieren. Wenn die Kinder der Blöcke auf niedriger Ebene 106a–c Kinder hatten, würde das Verfahren 500 für dieselben wiederholt werden, und so weiter. Auf eine Beendigung des Verfahrens 500 hin enthält das Blockentwurfskabuff 216 eine Kopie der spezifizierten Blockentwurfsinformationen für den Block 104a und alle seine Nachkommen.
  • Es wird darauf verwiesen, daß, obwohl die Erfindung oben hinsichtlich bestimmter Ausführungsbeispiele beschrieben wurde, die vorherigen Ausführungsbeispiele nur darstellend vorgesehen sind und den Schutzumfang der Erfindung nicht einschränken oder definieren. Verschiedene andere Ausführungsbeispiele, einschließlich, jedoch nicht ausschließlich des folgenden, sind ebenso innerhalb des Schutzumfangs der Ansprüche.
  • Die Beschreibung hierin bezieht sich auf ein „Kopieren" von Blockentwurfsinformationen (zum Beispiel Schritte 506–7 aus 5). Der Ausdruck „Kopieren", wie er hierin verwendet wird, bezieht sich auf ein Kopieren des Informationsinhaltes von Blockentwurfsinformationen. Das Format jedoch, in dem Blockentwurfsinformationen 212 in dem Blockentwurfskabuff 216 gespeichert sind, kann sich jedoch von dem Format unterscheiden, in dem die Blockentwurfsinformationen 212 in der Schaltungsentwurfsdatenbank 100 gespeichert sind. Das Schaltungsentwurfsduplizierungstool 202 kann zum Beispiel Blockentwurfsinformationen 212 auf jede einer Vielzahl von Weisen (wie zum Beispiel Komprimierung oder Verschlüsselung) vor einem Speichern der Blockentwurfsinformationen 212 in dem Kabuff 216 verarbeiten. Ferner kann das Schaltungsentwurfsduplizierungstool 202 zum Beispiel weniger als alle Blockentwurfsinformationen für einen bestimmten Block oder Blöcke kopieren.
  • Die bestimmte Schaltungsentwurfsdatenbank 100 ist hierin beschrieben, um eine „hierarchische Struktur" aufzuweisen. Die vorliegende Erfindung jedoch ist nicht auf eine Verwendung mit Schaltungsentwürfen eingeschränkt, die eine hierarchische Struktur aufweisen. Ferner bezieht sich der Ausdruck „hierarchische Struktur", wie er hierin verwendet wird, auf eine Struktur, in der Elemente (wie zum Beispiel Schaltungsblockentwürfe) teilweise und/oder vollständig andere Elemente enthalten können. Der Ausdruck „hierarchische Struktur" ist jedoch nicht auf Strukturen (wie zum Beispiel die Dateisystemhierarchie 410, die in 4 dargestellt ist) beschränkt, die einen einzelnen Wurzelknoten aufweisen (zum Beispiel das Schaltungsentwurfs-Wurzelverzeichnis 400).
  • Die verschiedenen Datenstrukturen (zum Beispiel die Schaltungsentwurfsdatenbank 100, die ursprünglichen Blockentwurfsinformationen 212, die modifizierten Blockentwurfsinformationen 214, das Blockentwurfskabuff 216, die Schaltungsentwurfsmetadaten 204, der Kabuff-Erzeugen-Befehl 208 und der Kabuff-Speichern-Befehl 210), die hierin beschrieben sind, können auf jede einer Vielzahl von Weisen implementiert sein. Diese und andere Datenstrukturen innerhalb des Schutzumfangs der Ansprüche können zum Beispiel als Dateien, die in einem Computerdateisystem gespeichert sind (wie zum Beispiel Datenbankdateien oder Textdateien), Befehlszeilen, Umgebungsvariablen oder Befehle einer graphischen Benutzerschnittstelle implementierbar sein. Ferner kann eine Funktionalität, die durch diese Datenstrukturen bereitgestellt wird, in Computerprogramminstruktionen in dem Schaltungsentwurfsduplizierungstool 202 implementiert sein.
  • Hierin beschriebene Elemente und Komponenten können ferner in zusätzliche Komponenten unterteilt oder miteinander verbunden sein, um zum Durchführen der gleichen Funktionen weniger Komponenten zu bilden.
  • Die oben beschriebenen Techniken können zum Beispiel in Hardware, Software, Firmware oder jeder Kombination derselben implementiert sein. Das Schaltungsentwurfsduplizierungstool 202 kann zum Beispiel als ein Computerprogramm implementiert sein. Insbesondere kann das Verfahren 500 als Softwareroutinen in jeder einer Vielzahl von Programmiersprachen, wie zum Beispiel der Perl Scriptsprache, imple mentiert sein. Das Verfahren 500 kann auf jede einer Vielzahl von Weisen aufgerufen werden. Das Verfahren 500 kann zum Beispiel eine Prozedur (auch als eine Funktion oder eine Teilroutine bezeichnet) in einem Computerprogramm sein, das durch andere Prozeduren in dem gleichen oder anderen Programmen unter Verwendung herkömmlicher Computerprogramminstruktionen aufgerufen werden kann. Alternativ kann das Verfahren 500 zum Beispiel unter Verwendung einer Text-Befehlszeile, wie zum Beispiel derjenigen, die bei Varianten der Betriebssysteme Unix und Microsoft DOS verfügbar sind, aufgerufen werden. Die Parameter BN, IP und DP können Befehlszeilenargumente oder Umgebungsvariablen sein, deren Werte durch den Schaltungsentwerfer 206 unter Verwendung einer Tastatur 306 zugeführt werden können. Alternativ kann das Verfahren 500 unter Verwendung einer graphischen Benutzerschnittstelle aufgerufen werden, wie zum Beispiel derer, die durch die X-Windows-System- und die Microsoft-Windows-Betriebssystemlinie bereitgestellt werden. Der Schaltungsentwerfer 206 kann Werte für die Parameter BN, IP und DP unter Verwendung von Steuerungen (wie zum Beispiel Textkästen), die durch eine derartige graphische Benutzerschnittstelle bereitgestellt werden, liefern.
  • Die oben beschriebenen Techniken können in einem oder mehreren Computerprogrammen implementiert sein, die auf einem programmierbaren Computer laufen, der einen Prozessor, ein Speichermedium, das durch den Prozessor lesbar ist (zum Beispiel einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfaßt. Der Programmcode kann auf eine Eingabe angewendet werden, die unter Verwendung der Eingabevorrichtung eingegeben wurde, um die beschriebenen Funktionen durchzuführen und eine Ausgabe zu erzeugen. Die Ausgabe kann an eine oder mehrere Ausgabevorrichtungen geliefert werden.
  • Jedes Computerprogramm innerhalb des Schutzumfangs der unten aufgeführten Ansprüche kann in jeder Programmiersprache implementiert sein, wie zum Beispiel einer Assemblersprache, Maschinensprache, einer verfahrensorientierten Programmiersprache auf hoher Ebene oder einer objektorientierten Programmiersprache. Die Programmiersprache kann zum Beispiel eine kompilierte oder interpretierte Programmiersprache sein.
  • Jedes derartige Computerprogramm kann in einem Computerprogrammprodukt implementiert sein, das greifbar in einer maschinenlesbaren Speichervorrichtung zur Ausführung durch einen Computerprozessor ausgeführt ist. Verfahrensschritte der Erfindung können durch einen Computerprozessor durchgeführt werden, der ein Programm ausführt, das greifbar auf einem computerlesbaren Medium ausgeführt ist, um Funktionen der Erfindung durch ein Wirken auf eine Eingabe und ein Erzeugen einer Ausgabe durchzuführen. Geeignete Prozessoren umfassen beispielhaft sowohl Allzweck- als auch zweckgebundene Mikroprozessoren. Allgemein empfängt der Prozessor Instruktionen und Daten von einem Nur-Lese-Speicher und/oder einem Direktzugriffsspeicher. Speichervorrichtungen, die geeignet für ein greifbares Ausführen von Computerprogramminstruktionen sind, umfassen zum Beispiel alle Formen eines nichtflüchtigen Speichers, wie zum Beispiel Halbleiterspeichervorrichtungen, einschließlich EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, wie zum Beispiel interne Festplatten und Wechselplatten; magnetooptische Platten und CD-ROMs. Jedes der zuvor genannten Elemente kann durch speziell entworfene ASICs (anwendungsspezifische integrierte Schaltungen) ergänzt oder in dieselben eingebaut sein. Ein Computer kann allgemein auch Programme und Daten von einem Speichermedium, wie zum Beispiel einer internen Platte (nicht gezeigt) oder einer Wechselplatte, empfangen. Diese Elemente sind auch in einem herkömmlichen Tisch- oder Arbeitsstationscomputer sowie in anderen Computern zu finden, die geeignet zur Ausführung von Computerprogrammen sind, die die hierin beschriebenen Verfahren implementieren, die in Verbindung mit jeder digitalen Druckmaschine oder Markierungsmaschine, einem Anzeigemonitor oder einer anderen Rasterausgabevorrichtung verwendet werden können, die in der Lage ist, Farb- oder Grauskalierungspixel auf Papier, Folie, einem Anzeigebildschirm oder einem anderen Ausgabemedium zu erzeugen.

Claims (21)

  1. Computerimplementiertes Verfahren (500) in einem System (200), das eine Schaltungsentwurfsdatenbank (100) umfaßt, die auf einem ersten computerlesbaren Medium (218) gespeichert ist, wobei die Schaltungsentwurfsdatenbank (100) Blockentwurfsinformationen enthält, die eine Mehrzahl von Blöcken in einem Schaltungsentwurf beschreiben, mit folgenden Schritten: (A) Erhalten (502) eines Identifizierers eines der Mehrzahl von Blöcken; (B) Identifizieren (504) eines Teilsatzes der Blockentwurfsinformationen, die dem identifizierten Block entsprechen, basierend auf ersten Metadaten (220), die eine Mehrzahl von Blockidentifizierern (222a) auf eine Mehrzahl von Orten (222b) von Teilsätzen der Blockentwurfsinformationen abbilden; und (C) Kopieren (506, 507) des identifizierten Teilsatzes der Schaltungsentwurfsdatenbank auf ein zweites computerlesbares Medium (216).
  2. Verfahren gemäß Anspruch 1, bei dem der Identifizierer einen Namen des identifizierten Blocks innerhalb der Schaltungsentwurfsdatenbank (100) aufweist.
  3. Verfahren gemäß Anspruch 1 oder 2, bei dem der Identifizierer einen Namen einer Datei in einem Computerdateisystem (218) aufweist, in dem Blockentwurfsinformationen für den identifizieren Block gespeichert sind, bei dem der Schritt (B) einen Schritt des Identifizierens der Datei basierend auf dem Dateinamen aufweist, und bei dem der Schritt (C) einen Schritt des Kopierens der Datei auf das zweite computerlesbare Medium (216) aufweist.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, bei dem der Identifizierer einen Namen eines Verzeichnisses in einem Computerdateisystem (218) aufweist, in dem Blockentwurfsinformationen für den identifizierten Block gespeichert sind, bei dem der Schritt (B) einen Schritt des Identifizierens des Verzeichnisses basierend auf dem Verzeichnisnamen aufweist, und bei dem der Schritt (C) einen Schritt des Kopierens zumindest einer Datei in dem Verzeichnis auf das zweite computerlesbare Medium (216) aufweist.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, bei dem die Mehrzahl von Blöcken hierarchisch in dem Schaltungsentwurf angeordnet ist, und bei dem der Schritt (C) ferner folgende Schritte aufweist: (C)(1) Identifizieren (508) zumindest eines Kindes des identifizierten Blocks; und (C)(2) Durchführen (518) der Schritte (A), (B) und (C) für das zumindest eine Kind.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, bei dem die ersten Metadaten in einem dritten computerlesbaren Medium ausgeführt sind, und wobei das Verfahren ferner folgenden Schritt aufweist: (D) vor dem Schritt (B), Empfangen der ersten Metadaten als einen Eingang.
  7. Verfahren gemäß Anspruch 6, bei dem der Schritt (C)(1) einen Schritt des Identifizierens des zumindest einen Kindes des identifizierten Blocks basierend auf zweiten Metadaten aufweist, die die Mehrzahl von Blockidentifizierern auf Kind-Blöcke der Mehrzahl von Blöcken abbilden.
  8. Verfahren gemäß Anspruch 7, bei dem die zweiten Metadaten in einem dritten computerlesbaren Medium ausgeführt sind, und wobei das Verfahren ferner folgenden Schritt aufweist: (D) vor dem Schritt (C)(1), Empfangen der zweiten Metadaten als einen Eingang.
  9. Verfahren gemäß Anspruch 7, bei dem der Schritt (C)(1) einen Schritt des Identifizierens zumindest eines Unterverzeichnisses in einem Computerdateisystemverzeichnis aufweist, das dem identifizierten Block entspricht.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, bei dem das zweite computerlesbare Medium ein Verzeichnis in einem Computerdateisystem (218) aufweist.
  11. System mit folgenden Merkmalen: einer Schaltungsentwurfsdatenbank (100), die auf einem ersten computerlesbaren Medium (218) gespeichert ist, wobei die Schaltungsentwurfsdatenbank (100) Blockentwurfsinformationen enthält, die eine Mehrzahl von Blöcken in einem Schaltungsentwurf beschreiben; einer Einrichtung zum Erhalten (502) eines Identifizierers eines der Mehrzahl von Blöcken; ersten Metadaten (220), die eine Mehrzahl von Blöckidentifizierern (222a) auf eine Mehrzahl von Orten (222b) von Teilsätzen der Blockentwurfsinformationen abbilden; einer Einrichtung zum Identifizieren (504) eines Teilsatzes der Blockentwurfsinformationen, die dem identifizierten Block entsprechen, basierend auf den ersten Metadaten (220); und einer Einrichtung zum Kopieren (506, 507) des identifizierten Teilsatzes der Schaltungsentwurfsdatenbank auf ein zweites computerlesbares Medium (216).
  12. System gemäß Anspruch 11, bei dem der Identifizierer einen Namen des identifizierten Blocks innerhalb der Schaltungsentwurfsdatenbank (100) aufweist.
  13. System gemäß Anspruch 11 oder 12, bei dem der Identifizierer einen Namen einer Datei in einem Computerdateisystem (218) aufweist, in dem Blockentwurfsinformationen für den identifizierten Block gespeichert sind, wobei die Einrichtung zum Identifizieren eine Einrichtung zum Identifizieren der Datei basierend auf dem Dateinamen aufweist, und wobei die Einrichtung zum Kopieren eine Einrichtung zum Kopieren der Datei auf das zweite computerlesbare Medium (216) aufweist.
  14. System gemäß einem der Ansprüche 11 bis 13, bei dem der Identifizierer einen Namen eines Verzeichnisses in einem Computerdateisystem (218) aufweist, in dem Blockentwurfsinformationen für den identifizierten Block gespeichert sind, wobei die Einrichtung zum Identifizieren eine Einrichtung zum Identifizieren des Verzeichnisses basierend auf dem Verzeichnisnamen aufweist, und wobei die Einrichtung zum Kopieren eine Einrichtung zum Kopieren zumindest einer Datei in dem Verzeichnis auf das zweite computerlesbare Medium (216) aufweist.
  15. System gemäß Anspruch 14, bei dem die Mehrzahl von Blöcken hierarchisch in dem Schaltungsentwurf angeordnet ist, und bei dem die Einrichtung zum Kopieren ferner folgende Merkmale aufweist: eine Einrichtung zum Identifizieren (508) zumindest eines Kindes des identifizierten Blocks; und eine Einrichtung zum Anwenden (512) der Einrichtung zum Erhalten, der Einrichtung zum Identifizieren und der Einrichtung zum Kopieren auf das zumindest eine Kind.
  16. System gemäß einem der Ansprüche 11 bis 15, bei dem die ersten Metadaten in einem dritten computerlesbaren Medium ausgeführt sind, und bei dem die Einrichtung zum Identifizieren ferner eine Einrichtung zum Empfangen der ersten Metadaten als einen Eingang aufweist.
  17. System gemäß einem der Ansprüche 11 bis 16, bei dem die Mehrzahl von Blöcken hierarchisch in dem Schaltungsentwurf angeordnet ist, und bei dem die Einrichtung zum Kopieren ferner folgende Merkmale aufweist: eine Einrichtung zum Identifizieren zumindest eines Kindes des identifizierten Blocks; und eine Einrichtung zum Durchführen der Schritte (A), (B) und (C) für das zumindest eine Kind.
  18. System gemäß Anspruch 17, wobei das System ferner folgende Merkmale aufweist: zweite Metadaten, die die Mehrzahl von Blockidentifizierern auf Kindblöcke der Mehrzahl von Blöcken abbilden, und wobei die Einrichtung zum Identifizieren des zumindest einen Kindes eine Einrichtung zum Identifizieren des zumindest einen Kindes des identifizierten Blocks basierend auf den zweiten Metadaten aufweist.
  19. System gemäß Anspruch 18, bei dem die zweiten Metadaten in einem dritten computerlesbaren Medium ausgeführt sind, und bei dem die Einrichtung zum Identifi zieren des zumindest einen Kindes ferner eine Einrichtung zum Empfangen der zweiten Metadaten als einen Eingang aufweist.
  20. System gemäß Anspruch 18, bei dem die Einrichtung zum Identifizieren des zumindest einen Kindes des identifizierten Blocks eine Einrichtung zum Identifizieren des zumindest eines Unterverzeichnisses in einem Computerdateisystemverzeichnis, das dem identifizierten Block entspricht, aufweist.
  21. System gemäß einem der Ansprüche 11 bis 20, bei dem das zweite computerlesbare Medium ein Verzeichnis in einem Computerdateisystem (218) aufweist.
DE10313949A 2002-06-10 2003-03-27 Schaltungsentwurfsduplizierungssystem Withdrawn DE10313949A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/167081 2002-06-10
US10/167,081 US20030229612A1 (en) 2002-06-10 2002-06-10 Circuit design duplication system

Publications (1)

Publication Number Publication Date
DE10313949A1 true DE10313949A1 (de) 2004-01-08

Family

ID=29710802

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10313949A Withdrawn DE10313949A1 (de) 2002-06-10 2003-03-27 Schaltungsentwurfsduplizierungssystem

Country Status (2)

Country Link
US (1) US20030229612A1 (de)
DE (1) DE10313949A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702636B1 (en) * 2002-07-31 2010-04-20 Cadence Design Systems, Inc. Federated system and methods and mechanisms of implementing and using such a system
US7730114B2 (en) * 2004-11-12 2010-06-01 Microsoft Corporation Computer file system
US20200257596A1 (en) * 2005-12-19 2020-08-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US10042898B2 (en) 2007-05-09 2018-08-07 Illinois Institutre Of Technology Weighted metalabels for enhanced search in hierarchical abstract data organization systems
US9128954B2 (en) * 2007-05-09 2015-09-08 Illinois Institute Of Technology Hierarchical structured data organization system
US9633028B2 (en) 2007-05-09 2017-04-25 Illinois Institute Of Technology Collaborative and personalized storage and search in hierarchical abstract data organization systems
US20110145772A1 (en) * 2009-05-14 2011-06-16 Pikus Fedor G Modular Platform For Integrated Circuit Design Analysis And Verification
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050091A (en) * 1985-02-28 1991-09-17 Electric Editor, Inc. Integrated electric design system with automatic constraint satisfaction
US5978811A (en) * 1992-07-29 1999-11-02 Texas Instruments Incorporated Information repository system and method for modeling data
US5481473A (en) * 1993-02-19 1996-01-02 International Business Machines Corporation System and method for building interconnections in a hierarchical circuit design
US5519628A (en) * 1993-02-19 1996-05-21 International Business Machines Corporation System and method for formulating subsets of a hierarchical circuit design
US5519630A (en) * 1993-03-22 1996-05-21 Matsushita Electric Industrial Co., Ltd. LSI automated design system
US5592392A (en) * 1994-11-22 1997-01-07 Mentor Graphics Corporation Integrated circuit design apparatus with extensible circuit elements
US5805861A (en) * 1995-08-29 1998-09-08 Unisys Corporation Method of stabilizing component and net names of integrated circuits in electronic design automation systems
US5787006A (en) * 1996-04-30 1998-07-28 Micron Technology, Inc. Apparatus and method for management of integrated circuit layout verification processes
US6026220A (en) * 1996-11-19 2000-02-15 Unisys Corporation Method and apparatus for incremntally optimizing a circuit design
US5956256A (en) * 1996-11-19 1999-09-21 Unisys Corporation Method and apparatus for optimizing a circuit design having multi-paths therein
US5940604A (en) * 1996-11-19 1999-08-17 Unisys Corporation Method and apparatus for monitoring the performance of a circuit optimization tool
US6516456B1 (en) * 1997-01-27 2003-02-04 Unisys Corporation Method and apparatus for selectively viewing nets within a database editor tool
US6754879B1 (en) * 1997-01-27 2004-06-22 Unisys Corporation Method and apparatus for providing modularity to a behavioral description of a circuit design
JP4077578B2 (ja) * 1999-04-30 2008-04-16 松下電器産業株式会社 集積回路装置の設計方法
JP2000315221A (ja) * 1999-04-30 2000-11-14 Matsushita Electric Ind Co Ltd 集積回路装置の設計用データベース及び集積回路装置の設計方法
US6463568B1 (en) * 1999-05-07 2002-10-08 Morphics Technology, Inc. Apparatus and method for designing a circuit using minimum slice construction and replication
US6496965B1 (en) * 1999-09-20 2002-12-17 Magma Design Automation, Inc. Automated design of parallel drive standard cells
US6647362B1 (en) * 1999-09-24 2003-11-11 Frederic Reblewski Emulation system scaling
US6449762B1 (en) * 1999-10-07 2002-09-10 Synplicity, Inc. Maintaining correspondence between text and schematic representations of circuit elements in circuit synthesis
JP2001142928A (ja) * 1999-11-16 2001-05-25 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法
US20020156757A1 (en) * 2000-05-12 2002-10-24 Don Brown Electronic product design system
US6578174B2 (en) * 2001-06-08 2003-06-10 Cadence Design Systems, Inc. Method and system for chip design using remotely located resources
US6763505B2 (en) * 2002-04-04 2004-07-13 International Business Machines Corporation Apparatus and method for automated use of phase abstraction for enhanced verification of circuit designs

Also Published As

Publication number Publication date
US20030229612A1 (en) 2003-12-11

Similar Documents

Publication Publication Date Title
DE60116769T2 (de) Verfahren und system zur hierarchischen metallenden-, einschliessungs- und belichtungsprüfung
DE69723489T2 (de) Verfahren und System zur Verwaltung von Bau- und Produktionsinformation
DE69233037T2 (de) Automatisiertes neues Layout mit dimensionaler Verknüpfung
DE60008264T2 (de) Datenaustausch zwischen cad-systemen
DE69532307T2 (de) Ausdrucks-Propagierung für hierarchisches Netzlisten
DE69738556T2 (de) Interaktiver cad-apparat zum entwerfen des zusammenbaus von logischen schaltungen
DE3900750A1 (de) Wissensbasis - verfahren - vorrichtung zum entwerfen integrierter schaltungen mittels funktionaler spezifikationen
DE4325095A1 (de) Verfahren und Vorrichtung zur verzögerten Baugruppenbestimmung
DE69533467T2 (de) System und verfahren zur erzeugung von modellen elektrischer bauelemente
DE10135445A1 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE102020115968A1 (de) Systeme und verfahren für multi-bit-speicher mit eingebetteter logik
DE69433907T2 (de) Autonomes, evolutionsartiges Hardwareentwurfssystem
DE10251440A1 (de) Reproduzierbare Auswahl von Elementen in einer Hierarchie
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
EP2425331A1 (de) Verfahren zur erzeugung mindestens einer anwendungsbeschreibung
DE102008006648A1 (de) Simulatorentwicklungssystem und Simulatorentwicklungsverfahren
DE60007826T2 (de) Unterhaltssystem für einen elektronischen Katalog um ausserhalb des Standards liegende Katalogveränderungen zu ermöglichen
DE10321981A1 (de) Verifizieren der Nähe von Massedurchgangslöchern zu Signaldurchgangslöchern in einer integrierten Schaltung
DE10313949A1 (de) Schaltungsentwurfsduplizierungssystem
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
DE10118801A1 (de) System-Entwicklungsverfahren, Entwicklungsverfahren für Funktionseinheiten, Entwicklungsunterstützungssystem und Speichermedium zum Speichern entsprechender Programme
DE19626984C1 (de) Verfahren zur rechnergestützten Ermittlung einer Systemzusammenhangsfunktion
DE60101097T2 (de) Generierung eines Zeichensymbols in einer Zeichnung
EP1947567A2 (de) Verfahren und Vorrichtung zum automatischen Testen von modellbasierten Funktionen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8130 Withdrawal