-
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 510– 514).
-
In den Schritten 510–514 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.