DE68925121T2 - Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät - Google Patents

Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät

Info

Publication number
DE68925121T2
DE68925121T2 DE68925121T DE68925121T DE68925121T2 DE 68925121 T2 DE68925121 T2 DE 68925121T2 DE 68925121 T DE68925121 T DE 68925121T DE 68925121 T DE68925121 T DE 68925121T DE 68925121 T2 DE68925121 T2 DE 68925121T2
Authority
DE
Germany
Prior art keywords
logic
chip
chips
design
ercgas
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE68925121T
Other languages
English (en)
Other versions
DE68925121D1 (de
Inventor
Jon Batcheller
Michael Butts
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.)
Quickturn Design Systems Inc
Original Assignee
Quickturn Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22964407&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE68925121(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Quickturn Systems Inc filed Critical Quickturn Systems Inc
Application granted granted Critical
Publication of DE68925121D1 publication Critical patent/DE68925121D1/de
Publication of DE68925121T2 publication Critical patent/DE68925121T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Microcomputers (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

    Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft die Verwendung von elektronisch rekonfigurierbaren Gatterfeld-Logikelementen (ERCGA) und insbesondere ein Verfahren, das das Verbinden einer Mehrzahl derartiger Logikelemente und das Wandeln der elektronischen Darstellung großer digitaler Netzwerke in eine zeitweilig tatsächlich arbeitende Hardware unter Verwendung der miteinander verbundenen logischen Elemente für den Zweck der Simulation, der Musterbildung, der Ausführung und/oder der Berechnung einschließt.
  • Hintergrund und Zusammenfassung der Erfindung
  • Zum Zwecke der Vereinfachung wird in der vorliegenden Anmeldung die Erfindung als Realizer -System bezeichnet, wobei das Wörterbuch einen bestimmten beschreibenden Namen für ein System, wie es im folgenden beschrieben wird, nicht kennt.
  • Das Realizer-System weist eine Hardware und eine Software auf, die die Darstellungen großer digitaler logischer Netzwerke in zeitweise tatsächlich arbeitende Hardware zum Zwecke der Simulation, der Erstellung von Prototypen, der Ausführung und der Berechnung erlaubt. (Ein digitales logisches Netzwerk wird als "groß" bezeichnet, wenn es zu viele logische Funktionen ausführt, um in einigen wenigen der größten verfügbaren, konfigurierbaren logischen Einheiten beinhaltet zu sein.)
  • Die nachfolgenden Diskussionen werden durch eine kurze Darstellung der relevanten Terminologie, wie sie typischerweise (nicht aber ausschließlich) verwendet wird, deutlicher.
  • Etwas zu "realisieren" heißt, es real oder tatsächlich zu machen. Das Realisieren des Ganzen oder eines Teiles eines logischen Netzwerkes oder Aufbaus ist das Verursachen, daß es die tatsächliche Betriebsform annimmt, ohne es dauerhaft aufzubauen.
  • Eine "Eingabeausgestaltung" ist die Repräsentation des digitalen logischen Netzwerks, das zu realisieren ist. Es beinhaltet Grundelemente, die Kombinationen der Logik und des Speicherns darstellen, als auch Instrumente oder vom Verwender zugelieferte tatsächliche Einheiten und Netze, die Leiterbahnen zwischen Grundeingaben und Ausgangspins darstellen.
  • Das "Konfigurieren" eines logischen Chips oder eines Verbindungschips ist die Bewirkung seiner internen logischen Funktionen und/oder Verbindungen derart, daß diese in einer bestimmten Weise angeordnet sind. Das Konfigurieren eines Realizer-Systems für den Eingabeaufbau ist die Bewirkung der Anordnung seiner internen logischen Funktionen und Verbindungen entsprechend der Eingabeausgestaltung.
  • Das "Konvertieren" einer Ausgestaltung ist das Wandeln seiner Darstellung in ein File von Konfigurationsdaten, die bei einer direkten Verwendung zur Konfiguration der Realizer-Hardware die Verwirklichung der Ausgestaltung verursachen.
  • Das "Betreiben" einer Ausgestaltung ist die Bewirkung des tatsächlichen Arbeitens der Realizer-Hardware, die entsprechend der Darstellungen der Eingabe-Ausgestaltung konfiguriert sind.
  • Eine "Verbindung" ist ein wandelbares Mittel zum Führen von logischen Signalen zwischen einer großen Anzahl von I/O-Pins eines Chips derart, als wenn die Pins über Leiterbahnen verbunden wären.
  • Ein "Pfad" ist einer von eingebauten Verbindungsbahnen zwischen einem Logik-Chip und einem Kreuzschienen-Chip in einer Partial-Kreuzschienen-Verbindung oder zwischen Kreuzschienen-Chips in einer Hierarchie von Partial- Kreuzschienen.
  • Eine "Pfadnummer" gibt einen bestimmten Pfad aus einer Vielzahl an, die ein Paar von Chips miteinander verbinden können.
  • Ein "ERCGA" ist ein elektronisch rekonfigurierbares Gatterfeld, das eine Sammlung von Kombinationslogiken und Eingabe-/Ausgabe-Verbindungen (und ggf. Speichern) ist, deren Funktionen in Verbindungen viele Male ausschließlich durch Aufbringung von elektronischen Signalen konfiguriert und rekonfiguriert werden können.
  • Ein "Logik-Chip" ist ein ERCGA, das verwendet wird, um die Kombinationslogik, den Speicher und die Verbindungen einer Eingabeausgestaltung in dem Realizer-System zu verwirklichen.
  • Ein "LChip" ist ein logischer Chip oder ein Speichermodul oder ein vom Verwender beigebrachtes Modul, das anstelle eines logischen Chips installiert wird.
  • Ein "Verbindungs-Chip" ist eine elektronisch rekonfigurierbare Einheit, die willkürlich Verbindungen zwischen seinen I/O-Stiften implementieren kann.
  • Ein "Routen-Chip" ist ein Verbindungschip, das in einer direkten oder einer Kanalrouten-Verbindung verwendet wird.
  • Ein "Kreuzschienen-Chip" ist ein Verbindungschip, das in einer Kreuzschiene oder einer Partial-Kreuzschienen-Verbindung verwendet wird.
  • Ein "XChip" ist ein Kreuzschienen-Chip in der Partial-Kreuzschiene, das die LChips miteinander verbindet. Ein "YChip" ist eine Kreuzschienen-Chip auf der zweiten Ebene einer hierarchischen Partial-Kreuzschienen-Verbindung, das die die XChips miteinander verbindet. Ein "ZChip" ist ein Kreuzschienen-Chip auf der dritten Ebene der hierarchischen Partial-Kreuzschienen-Verbindung, das die YChips miteinander verbindet.
  • Eine "Logik-Karte" ist eine gedruckte Schaltkarte, die logische und Verbindungs-Chips trägt. Eine "Box" ist eine gegenständliche Aufnahme, etwa ein Platinengehäuse, das eine oder mehrere logische Schaltkarten aufnimmt.
  • Ein "Rack" ist eine gegenständliche Aufnahme, die eine oder mehrere Boxen aufnimmt.
  • Eine "System-Ebenen-Verbindung" ist eine solche, die Einheiten miteinander verbindet, die größer als einzelne Chips sind, etwa logische Schaltkarten, Boxen, Racks usw.
  • Ein "logisches Zellenfeld" oder "LCA" ist ein besonderes Beispiel eines ERCGA, das von Xilinx, Inc. und anderen hergestellt wird und das bei dem bevorzugten Ausführungsbeispiel verwendet wird.
  • Ein "konfigurierbarer Logikblock" oder "CLB" ist ein kleiner Block von konfigurierbaren Logiken und Flip- Flops, die die zu kombinierenden Logiken und Speicher in einem LCA darstellen.
  • Ein "Ausgestaltungsspeicher" ist eine Speichereinrichtung, die eine Speicherfunktion, die in der Eingabe- Ausgestaltung" eingegeben wird, verwirklicht.
  • Ein "Vektorspeicher" ist eine Speichereinrichtung, die verwendet wird, um einen großen Körper von Stimulus- Signalen zu einer realisierten Ausgestaltung in dem Realizer-System auszusenden oder aber eine große Menge von Antwortsignalen aus dem Realizer-System aufzunehmen.
  • Ein "Stimulator" ist eine Einheit in dem Realizer- System, das verwendet wird, um Stimulus-Signale zu einem einzelnen Eingang einer realisierten Ausgestaltung zu geben.
  • Ein "Sampler" ist eine Einrichtung in dem Realizer- System, das verwendet wird um Antwort-Signale von einem einzelnen Ausgang der realisierten Ausgestaltung aufzunehmen.
  • Ein "Host-Computer" ist ein übliches Rechnersystem, mit dem die Host-Schnittstellen-Hardwares des Realizer- Systems verbunden ist, und das die Konfiguration und den Betrieb der Realizer-Hardware steuert.
  • Ein "EDA-System" ist ein elektronisches Ausgestaltungsautomationssystem, das heißt ein System von rechnergestützten Werkzeugen, die zum Kreieren, Editieren und Analysieren von elektronischen Ausgestaltungen verwendet wird. Das Host-EDA-System ist eines, das den Eingabe-Ausgestaltungs-File bei den meisten Anwendungen des Realizer-Systems erzeugt.
  • Wenn ein rekonfigurierbares Gatterfeld mit einer ausreichenden Kapazität zum Halten einer großen Ausgestaltung verfügbar wäre, wäre ein großer Teil der Realizer-Technologie nicht notwendig. Dies wird jedoch aus zwei Gründen nie der Fall sein.
  • Zum einen können ERCGA nie eine so große logische Kapazität haben, da es eine nicht-rekonfigurierbare, integrierte Schaltung derselben gegenständlichen Größe, die mit derselben Herstellungstechnologie erstellt worden ist, ist. Die Möglichkeiten zur Rekonfigurierbarkeit erfordern einen erheblichen Raum auf dem Chip. Ein ERCGA muß Schalttransistoren haben, um Signale und Speichertransistoren zur Steuerung dieser Schalter zu richten, während ein nicht-rekonfigurierbares Chip einfach eine metallische Spur hat und diese Transistoren zur Verwendung als Logik nehmen kann. Die erforderliche Regelmäßigkeit eines rekonfigurierbaren Chips bedeutet auch, daß einige der Ressourcen bei tatsächlichen Ausgestaltungen unverwendet bleiben, da die Anordnung und der Verlauf von regelmäßigen logischen Strukturen nie dazu in der Lage sind, 100 % der verfügbaren Gatter zu verwenden. Diese Faktoren in ihrer Kombination führen dazu, daß bei ERCGA etwa ein Zehntel der logischen Kapazität von nicht-rekonfigurierbaren Chips haben. Bei der gegenwärtig tatsächlichen Praxis ist die höchste Gatterkapazität, die für ein ERCGA gefordert wird, 9.000 Gatter (Xilinx XC3090). Tatsächliche integrierte Semikunden-Schaltungen, die mit einer entsprechenden Technologie hergestellt sind, bieten eine logische Kapazität von mehr als 100.000 (Motorola).
  • Es ist weiter bekannt, daß tatsächliche digitale Systeme mit vielen integrierten Schaltungen, typischerweise zehn bis hundert oder mehr, aufgebaut werden, oft auf vielen gedruckten Schaltkarten. Wenn ein ERCGA eine derartig große logische Kapazität wie die größte integrierte Schaltung haben würde, würde es immer noch so viele Chips benötigen, um die meisten digitalen Systeme zu verwirklichen. Da es dies nicht hat, sind noch mehr erforderlich.
  • Für ein Realizer-System, das eine logische Kapazität auch nur eines einzigen großen Chips haben soll, müßte man daher viele ERCGA haben, in der Größenordnung von 10. Um eine Kapazität für ein System eines solchen Chips zu haben, in der Größenordnung sind Hunderte von ERCGA erforderlich. Es ist zu beachten, daß dies unabhängig von den jeweiligen Herstellungsmöglichkeiten gilt. Wenn ein Herstellungsvorgang das Doppelte der Kapazität eines ERCGA durch Verdoppeln der Anzahl von Transistoren pro Chip ermöglicht, werden sich die Kapazitäten der nicht-rekonfigurierbaren Chips und damit die Größe des Gesamtaufbaus ebenfalls verdoppeln.
  • Aus diesem Grund ist es erforderlich, ein verwendbares Realizer-System aufzubauen, das dazu in der Lage ist, Hunderte von ERCGA in einer elektronisch rekonfigurierbaren Weise zu verbinden und die Ausgestaltungen in Konfigurationen von Hunderten von ERCGA zu konvertieren. Die Erfindung betrifft nicht die Technologie irgendeines ERCGA selbst, lediglich das Verfahren zum Aufbauen eines Realizer-Systems unter Verwendung vieler ERCGA.
  • Die britische Patentveröffentlichung GB 2.180.382 offenbart einen rekonfigurierbaren Halbleiter-Schaltkreis, der eine Vielzahl von logischen Schaltelementen und Mittel zum reversiblen Erstellen von Verbindungsfaden zwischen den Elementen aufweist. Jede der Halbleiter-Schaltungen wird mit elektrischen Eingabe-Signalen konfiguriert, die die gewünschten logischen Konfigurationen, die von den Halbleiter-Schaltungen anzunehmen sind, definieren. Ein Feld derartiger Schaltungen kann auf einer gedruckten Schaltkarte montiert werden, in welchen Fall die Verbindungen zwischen benachbarten Schaltungen bewirkt werden. Der Ausgang von einem solchen Feld wird auf eine Verwendungsvorrichtung (beispielsweise eine Diskette, einen Drucker oder einem Display) ausgegeben. Ein Host-System, etwa Desk-Top- Computer mit einem Diskettenspeicher, wird üblicherweise in Verbindung mit dem Feld zu Steuerzwecken verwendet und dient zum Speichern einer Bibliothek der Chip- Ausgestaltungen. Das Host-System kann auch als Verwendungsvorrichtung dienen. Durch geeignete Eingangssignale kann das durch eine Vielzahl von Chips gebildete Feld so programmiert werden, daß es als ein logisches System für einen besonderen Zweck dient, das entweder für eine serielle oder für eine parallele Verarbeitung geeignet ist. Eine Vielzahl derartiger Felder können in einer Mutter-Tochter-Schaltkarten-Anordnung verbunden werden, um größere Systeme zu bilden.
  • Die vorliegende Offenbarung wird unter Bezugnahme auf Xilinx ERCGA gemacht. Die Technologie, die in solchen ERCGA verwendet wird, ist eingehend in den US-Patenten 4 642 487, 4 706 216, 4 758 985 und in dem "The Programmable Gate Array Design Handbook", First Edition, Xilinx, 1986, beschrieben.
  • Das Wissen über das Partitionieren wird von Palesko, C. A., und anderen, "Logic Partitioning for Minimizing Gate Arrays" IEEE Trans. auf CAD, Nr. 2, Ss. 117-121, April 1993, beschrieben. Die Autoren offenbaren eine auf Gruppen basierende Technik, die eine "vorteilhafte Funktion" für eine Optimierung einsetzt.
  • Die ERCGA-Technologie zeigt nicht, wie ein Realizer- System aufzubauen ist, da die Probleme unterschiedlich sind. Die ERCGA-Technologie zum rekonfigurierbaren Verbinden von logischen Elementen, die alle ein Teil eines IC-Chips sind, ist nicht auf die Verbindung vieler anwendbar. Die ERCGA-Verbindungen werden einfach durch Schalttransistoren hergestellt, die Signale in eine Richtung leiten. Da keine Grenzen über einen Chip vorhanden sind, sind eine große Anzahl von Pfaden verfügbar, um die Verbindungen herzustellen. Da das Chip klein ist, sind die Signalverzögerungen klein. Die Verbindung zwischen ERCGA ist ein unterschiedliches Problem, da die IC-Package-Pins und gedruckte Schaltkarten betroffen sind. Die begrenzte Anzahl von verfügbaren Stiften bedeutet eine begrenzte Anzahl von Pfaden für die Verbindungen. Das Aussenden von Signalen auf und von den Chips muß über aktive (das heißt verstärkende) Pinpuffer erfolgen, die lediglich Signale in eine Richtung senden können. Diese Puffer und die Bahnen der gedruckten Schaltkarten führen zu weiteren Verzögerungen, die um eine Größenordnung größer sind als die Verzögerungen auf einem Chip. Die Verbindungstechnik des Realizer-Systems löst diese Probleme in einer von derjenigen von ERCGA sehr unterschiedlichen Weise.
  • Das Erfordernis, eine Ausgestaltung in Konfigurationen für viele Chips umzuwandeln, wird von der ERCGA- Technologie nicht berührt. Die Verbindung des Realizer-Systems ist vollständig unterschiedlich zu demjenigen im Inneren eines ERCGA und ist ein völlig unterschiedliches Verfahren der Bestimmung und Konfiguration der erforderlichen Verbindungen.
  • ERCGA sind mit der schnellsten und dichtesten Sihzium-Technologie, die es jemals gab, hergestellt worden (1989 wurden Xilinx XC3000 LCA in 1 Mikron SRAM- Technologie hergestellt). Das ist dieselbe Technologie wie die schnellsten und dichtesten zu realisierenden Systeme. Da ERCGA allgemein verwendbar sind und rekonfigurierbare Verbindungen haben, werden sie immer um einen bestimmten Faktor weniger dicht als übliche Gatter-Arrays und übliche Chips sein. Realizer-Systeme wiederholen die Unterstützung bezüglich der Allgemeinheit und der Rekonfigurationsfähigkeit oberhalb der ERCGA-Levels. Ein Realizer-System ist daher immer um einen bestimmten Faktor, etwa in einer Größenordnung, weniger dicht als das dichteste übliche System.
  • Realizer-Systeme auf dem Karten-Level verwirklichen Gate-Arrays, Realizer-Systeme auf dem Box-Level verwirklichen Karten und große übliche Chips, und Realizer-Systeme auf der Rack-Ebene verwirklichen Boxen.
  • Die Architekturen der Ausgestaltung werden erheblich durch die Art und Weise der Packung betroffen. Die I/O-Pinbreite: bei dem VLSI-Chiplevel 100 I/O-Pins ist einfach zu erstellen, 200 Pins sind schwerer zu erstellen, nicht aber ungewöhnlich, und 400 Pins sind praktisch nicht zu erreichen. Auf dem Kartenlevel sind diese Zahlen etwa doppelt so hoch. Logische Dichten: Platten nehmen oft 5 VLSI-Chips auf, 10 sind möglich und 20 sind ungewöhnlich, einfach aufgrund dessen, daß die verwirklichten Karten auf maximal 200 Quadratzoll begrenzt sind. Boxen nehmen 10 bis 20 Karten, selten 40 Karten, auf. Verbindungsdichte: Module können reichlich auf den Chips und den Karten verbunden sein, etwa durch mehrere Ebenen der zweidimensionalen Verdrahtung sind verfügbar, aber weniger auf dem Box-Level und oberhalb, als Rückebene und sind im wesentlichen eindimensional.
  • Diese Restriktionen bezüglich der Packung haben einen starken Effekt auf die Architekturen des Systems, das bei tatsächlichen Realizer-Systemen zu beachten ist. Aufgrund der geringeren Dichte in dem Realizer-System wird ein einziger Logik-Chip gewöhnlich nur ein Modul in der verwirklichten Ausgestaltung verwirklichen.
  • Ein Logik-Chip-Komplex auf einer Karte wird ein VLSI- Chip oder zwei realisieren, eine Box von Realizer- Karten wird durch eine einzige Karte in der Ausgestaltung verwirklicht und ein Rack von Boxen wird die Ausgestaltungsbox von Karten verwirklichen.
  • Der logische und der Verbindungskomplex eines Realizer-Systems auf der Kartenebene muß daher eine so große logische und Verbindungskapazität und eine I/O-Pinbreite haben, wie der VLSI-Chip der Ausgestaltung. Die Box des Realizer-Systems muß so viele wie die Karte der Ausgestaltung haben und das Rack des Realizer-Systems muß so viele wie die Ausgestaltungsbox haben.
  • Die Erfindung ergibt sich aus den Ansprüchen.
  • Kurze Erläuterung der Zeichnungen
  • Fig. 1 ist ein schematisches Blockdiagramm eines Realizer-Hardwaresystems.
  • Fig. 2 ist ein schematisches Blockdiagramm eines direkten Verbindungs-Leitungsführungssystems.
  • Fig. 3 ist ein schematisches Blockdiagramm eines kanalweisen Verbindungs-Leitungssystems.
  • Fig. 4 ist ein schematisches Blockdiagramm eines Kreuzschienen-Verbindungs systems.
  • Fig. 5 ist ein schematisches Blockdiagramm eines Kreuzschienennetz-Verbindungs systems.
  • Fig. 6 ist ein schematisches Blockdiagramm eines einfachen besonderen Beispiels eines partiellen Kreuzschienen-Verbindungssystems.
  • Fig. 7 ist ein schematisches Blockdiagramm eines partiellen Kreuzschienen-Verbindungssystems.
  • Fig. 8a und 8b zeigen eine Abweichung in der Breite eines Kreuzschienen-Chips.
  • Fig. 9 ist ein schematisches Blockdiagramm eines Tri-State-Netz.
  • Fig. 10 ist ein schematisches Blockdiagramm eines Produktsummen-Äquivalents des Tri-State- Netzes von Fig. 9.
  • Fig. 11a sind schematische Blockdiagramme des "floating low" und "floating high" des Produktsummen-Netzwerks.
  • Fig. 12 ist ein schematisches Blockdiagramm der Treiber und Empfänger, die zum Minimieren der Verbindungsleitungen zusammengefaßt sind.
  • Fig. 13 ist ein schematisches Blockdiagramm einer Ausgestaltung zum logischen Summieren.
  • Fig. 14 ist ein schematisches Blockdiagramm einer Kreuzschienenausgestaltung zum Summieren.
  • Fig. 15 ist ein schematisches Blockdiagramm einer zweidirektionalen Summierungs-Kreuzschienenausgestaltung.
  • Fig. 16 ist ein schematisches Blockdiagramm einer zweidirektionalen Tri-State-Kreuzschienenausgestaltung.
  • Fig. 17 ist ein schematisches Blockdiagramm, das die von der Leiterplatte weg führenden Verbindungen der partiellen Kreuzschiene zeigt.
  • Fig. 18 ist ein schematisches Blockdiagramm einer partiellen Kreuzschienenverbindung vom Y-Level.
  • Fig. 19 ist ein schemtisches Blockdiagramm einer zweidirektionalen Bussystem-Levelverbindung.
  • Fig. 20 ist ein schematisches Blockdiagramm, das acht Karten auf einer gemeinsamen Busverbindung zeigt.
  • Fig. 21 ist ein schematisches Blockdiagramm, das die Hierarchie der beiden Buslevel zeigt.
  • Fig. 22 ist ein schematisches Blockdiagramm, das eine maximale Busverbindungshierarchie zeigt.
  • Fig. 23 ist ein schematisches Blockdiagramm der Architektur eines allgemeinen Speichermoduls.
  • Fig. 24 ist ein schematisches Blockdiagramm eines Speicheradress-Logikchips.
  • Fig. 25 ist ein schematisches Blockdiagramm eines Speicherdaten-Logik-Chips, das einen gemeinsamen I/O verwendet.
  • Fig. 26 ist ein schematisches Blockdiagramm eines Speicherdaten-Logik-Chips, das einen separaten I/O verwendet.
  • Fig. 27 ist ein schematisches Blockdiagramm, das Mehrfach-RAMs auf einem Datenbit zeigt.
  • Fig. 28 ist ein schemtisches Blockdiagramm eines bevorzugten Ausführungsbeispiels eines Speichermoduls.
  • Fig. 29 ist ein schematisches Blockdiagramm eines Stimulusvektorspeichers.
  • Fig. 30 ist ein schematisches Blockdiagramm eines Antwortvektorspeichers.
  • Fig. 31 ist ein schematisches Blockdiagramm eines Vektorspeichers zum Stimululieren und zum Antworten.
  • Fig. 32 ist ein schematisches Blockdiagramm eines bevorzugten Ausführungsbeispiels eines Vektor-Speicher-Adresschips.
  • Fig. 33 ist ein schemtisches Blockdiagramm eines bevorzugten Ausführungsbeispiels eines Vektor-Speicher-Datenchips.
  • Fig. 34 ist ein schemtisches Blockdiagramm eines Stimulators mit wahlfreiem Zugriff.
  • Fig. 35 ist ein schematisches Blockdiagramm eines rand-sensitiven Stimulators.
  • Fig. 36 ist ein schematisches Blockdiagramm von Abtasteinheiten.
  • Fig. 37 ist ein schematisches Blockdiagramm von Änderung erkennenden Abtasteinheiten
  • Fig. 38 ist ein schematisches Blockdiagramm einer benutzergespeisten Gerätemodul-Architektur.
  • Fig. 39 ist ein schematisches Blockdiagramm eines bevorzugten Ausführungsbeispiels eines USDM mit installierten Einrichtungen.
  • Fig. 40 ist ein schematisches Blockdiagramm einer Konfigurationsgruppe.
  • Fig. 41 ist ein schematisches Blockdiagramm einer Host-Schnittstellen-Architektur.
  • Fig. 42 zeigt RBUS-Lese- und Schreibzyklen.
  • Fig. 43 ist ein schematisches Blockdiagramm eines Konversionssystems in Realizerausbildung.
  • Fig. 44a und 44b zeigen Auslegungsdatenstrukturen, die bei der vorliegenden Erfindung verwendet werden.
  • Fig. 45a, 45b und 45c zeigen eine Grundvorgangswandlung, die in der vorliegenden Erfindung verwendet wird.
  • Fig. 46 zeigt das Bewegen eines Grundvorgangs in einen Cluster.
  • Fig. 47a, 47b und 47c zeigen eine einfache Netzverbindung.
  • Fig. 48a, 48b und 48c zeigen eine Tri-State- Netzverbindung.
  • Fig. 49 ist ein schematisches Blockdiagramm eines die Realizer-Logik simulierenden Systems.
  • Fig. 50a - c zeigen schematisch eine Ausbildung eines Realizer-Systems einer Multi- State-Logik.
  • Fig. 51a - b zeigen schematisch ein Beispiel einer verzögerungsabhängigen Funktionalität.
  • Fig. 52a - c zeigen schematisch ein Beispiel einer Einheitsverzögerungsausgestaltung.
  • Fig. 53a - c zeigen schematisch eine Echtverzögerungsausgestaltung.
  • Fig. 54 ist ein schematisches Blockdiagramm eines einen Fehler des Realizers simulierenden Systems.
  • Fig. 55 ist ein schematisches Blockdiagramm eines Systems zum Bewerten des Simulators für die Realizer-Logik.
  • Fig. 56 ist ein schematisches Blockdiagramm eines Realizer-Grundsystems.
  • Fig. 57 zeigt ein Digitalrechner-Beispiel eines Realizer-Grundsystems.
  • Fig. 58 ist ein schemtisches Blockdiagramm einer virtuellen Logikanalysator-Ausgestaltung.
  • Fig. 59 ist ein schematisches Blockdiagramm eines Realizer-Produktionssystems.
  • Fig. 60 ist ein schemtisches Blockdiagramm eines Realizer-Berechnungssystems.
  • Fig. 61a - c zeigen die allgemeine Architektur eines bevorzugten Ausführungsbeispiels einschließlich der hierarchischen Verbindungen der logischen Karten einer Box und eines Racks.
  • Fig. 62a - b zeigen den gegenständlichen Aufbau einer logischen Kartenbox und einer Z-Level-Box.
  • EINGEHENDE BESCHREIBUNG Inhaltsverzeichnis
  • 1. Realizer-Hardwaresystem
  • 1.1 Technologie des logischen und Verbindungschips
  • 1.2 Verbindungsarchitektur
  • 1.2.1 Verbindungen zwischen den nächsten Nachbarn
  • 1.2.2 Kreuzschienenverbindungen
  • 1.2.3 Verbindungen der Tristate-Netze
  • 1.2.4 Verbindungen des Systemlevels
  • 1.3 Elemente für Sonderzwecke
  • 1.3.1 Ausgestaltungsspeicher
  • 1.3.2 Reiz/Antwort
  • 1.3.3 Vom Anwender gespeiste Einrichtungen
  • 1.4 Ausgestaltung
  • 1.5 Host-Schnittstelle
  • 2. Konversionssystem der Realizer-Ausgestaltung
  • 2.1 Ausgestaltungs leser
  • 2.2 Grundwandlung
  • 2.3 Partionierung
  • 2.4 Netzlisting & Verbindung
  • 3. Realizeranwendungen
  • 3.1 Simulationssystem der Realizerlogik
  • 3.1.1 Translationssystem zur logischen Simulation des Reizes und der Antwort
  • 3.1.2 Logischer Simulationsbetriebskern
  • 3.1.3 Verwenden des Realizer-Logik-Simulationssystems
  • 3.1.4 Verwirklichung von mehr als zwei Zuständen
  • 3.1.5 Darstellung der Verzögerung durch den Realizer
  • 3.1.6 Übertragen des Zustandes von der Realizer-Simulation in eine andere Simulation
  • 3.2 Simulationssystem für Realizerfehler
  • 3.3 Simulationsbewertungssystem für die Realizerlogik
  • 3.4 Realizer-Grundsystem
  • 3.4.1 Verwirklichte virtuelle Instrumente
  • 3.5 Realizer-Ausführungssystem
  • 3.6 Realizer-Produktionssystem
  • 3.7 Realizer-Rechensystem
  • 4. Bevorzugte Ausführungsbeispiele
  • 4.1 Hardware
  • 4.2 Software
  • 1. Realizer-Hardware-System
  • Das Realizer Hardware-System (Fig. 1) besteht aus:
  • 1) einem Satz von LChips, bestehend aus:
  • 1) wenigstens zwei Logik-Chips (normalerweise zig oder hunderte)
  • 2) optional ein oder mehrere Sonderzweck-Elemente, etwa Speichermodule und vom Anwender gespeiste Gerätemodule.
  • 2) einer konfigurierbare Verbindung, die mit allen LChips verbunden ist, die mit I/O Pins verbunden werden können.
  • 3) einer Host-Schnittstelle, die mit dem Host-Computer, dem Konfigurationssystem und allen Einrichtungen, die von dem Host für eine Dateneingabe oder eine Datenausgabe oder eine Steuerung verwendet werden können, verbunden ist.
  • 4) einem Konfigurationssystem, das mit der Host- Schnittstelle und mit allen konfigurierbaren LChip verbunden ist und die Einrichtungen miteinander verbindet.
  • Diese Hardware ist üblicherweise in Form von logischen Karten, Boxen und Racks gepackt und ist mit dem Host- Rechner verbunden und wird unter dessen Steuerung betrieben.
  • 1.1 Logische & Verbindungs-Chiptechnologie
  • 1.1.1 Für einen Baustein, der als ein Realizer- Logikchip verwendbar ist, sollte dieser ein elektronisch rekonfigurierbares Gate-Array (ERCGA) sein:
  • 1) Es sollte die Fähigkeit haben, entsprechend einem beliebigen digitalen logischen Netzwerk, das aus einer kombinierbaren Logik (und optional einer Speicherung besteht), das Begrenzungen, bezüglich der Kapazität unterworfen ist, konfiguriert zu werden.
  • 2) Es sollte elektronisch insofern rekonfigurierbar sein, daß seine Funktion und seine interne Verbindung elektronisch eine beliebige Anzahl von Malen konfiguriert werden kann, um vielen unterschiedlichen logischen Netzwerken zu entsprechen.
  • 3) Es sollte die Fähigkeit zur freien Verbindurch von I/O-Pins mit digitalem Netzwerk haben unabhängig von dem jeweiligen Netzwerk oder aber welche der I/O-Stifte spezifiziert sind, um es der partiellen Querschiene des Realizer-Systems oder eine direkte Verbindung zur erfolgreichen Verbindung mit den Logikchips zu erlauben.
  • Ein Beispiel eines rekonfigurierbaren Logikchips, das für die Logikchips geeignet ist, ist das logische Zell- Array (LCA oder FPGA) ("The Programmable Gate Array Handbook", Xilinx, Inc., San Jose, CA. 1989). Dies wird von Xilinx, Inc., und anderen hergestellt. Dies Chip besteht aus einem regelmäßigen, zweidimensionalen Array von konfigurierbaren logischen Blöcken (CLBs), die von rekonfigurierbaren I/O-Blöcken (IOBs) umgeben und durch Verdrahtungssegmente miteinander verbunden sind, die in Reihen und Spalten entlang der CLBs und IOBs angeordnet sind. Jedes CLB hat eine kleine Anzahl von Eingängen, ein kombinatorisches logisches Netzwerk mit mehreren Eingängen, deren logische Funktion rekonfiguriert werden kann, ein oder mehrere Flip-Flops und ein oder mehrere Ausgänge, die miteinander durch rekonfigurierbare Verbindungen im Hinteren des CLB miteinander verbunden werden können. Jedes IOB kann als Eingangs- oder Ausgangspuffer für den Chip rekonfiguriert werden und ist mit einem externen I/O-Pin verbunden. Die Verdrahtungssegmente können mit CLBs, lobs und miteinander verbunden werden, um über rekonfigurierbare Schalttransistoren und Verbindungsmatrizen Verbindungen zwischen diesen zu schaffen. Alle rekonfigurierbaren Eigenschaften werden durch Bits in einem seriellen Schieberegister auf dem Chip gesteuert. Das LCA wird so vollständig durch Schieben in dem "Konfigurationsbitmuster" konfiguriert, was zwischen 10 und 100 Millisekunden dauert. Die LCAs der Xilinx 2000er und 3000er Reihe haben zwischen 64 und 320 CLBs, wobei zwischen 56 und 144 IOBs für die Verwendung verfügbar sind.
  • Das LCA-Netzlisten-Konversionswerkzeug (unten beschrieben) bildet die Logik auf CLBs ab, um so die Verbindungen zwischen CLBs und IOBs zu optimieren. Die Konfigurierbarkeit der Verbindungen zwischen den CLBs und I/O-Pins gibt dem LCA die Fähigkeit zum freien Verbinden der I/O-Pins mit dem digitalen Netzwerk, unabhängig von dem jeweiligen Netzwerk oder aber davon, welche der I/O-Pins spezifiziert sind. Die bevorzugte Implementation des Realizer-Systems verwendet LCA-Bauteile als logische Chips.
  • Ein anderer Typ von ERCGA, das für logische Chips geeignet ist, ist das ERA oder das elektronisch rekonfigurierbare Array. Ein käuflich erhältliches Beispiel ist das Plessey Bauelement ERA60K. Dieses wird durch Laden eines Konfigurationsbitmusters in ein RAM in dem Bauelement konfiguriert. Das ERA ist als ein Array von NAND-Gattern mit zwei Eingängen organisiert, von denen jedes unabhängig mit anderen entsprechend den Werten in dem RAM verbunden werden kann, wodurch die Gatter- Eingangsverbindungen in einer Reihe von Zwischenverbindungswegen geschaltet werden. Das ERA60100 hat ungefähr 10.000 NAND-Gatter. I/O-Zellen an der Peripherie des Arrays werden verwendet, um Gattereingänge und/oder Ausgänge mit externen I/O-Pins zu verbinden. Das ERA- Netzlisten-Konversionswerkzeug bildet die Logik auf den Gattern ab, um so die Verbindungen zwischen diesen zu optimieren und erzeugt eine Konfigurationsbitmusterdatei, wie unten beschrieben. Die Fähigkeit zum Konfigurieren der Verbindung zwischen den Gattern und den I/O-Zellen gibt dem ERA die Fähigkeit zum freien Verbinden von I/O-Pins mit dem digitalen Netzwerk, unabhängig von dem jeweiligen Netzwerk, oder aber davon, welcher der I/O-Pins spezifiziert ist.
  • Eine andere Art von rekonfigurierbaren Logik-Chips, die als ein Logik-Chip verwendet werden können, sind die EEPLD oder aber elektrisch löschbare programmierbare Logik-Bausteine ("GAL Handbook", Lattice Semiconductor Corp., Portland, OR, 1986). Ein käuflich erhältliches Beispiel ist die Lattice Generic Array Logic (GAL). Es wird durch Laden eines Bitmusters in den Teil, der die Logik bildet, konfiguriert. Die GAL wird als ein Produktsummen-Array mit Ausgangs-Flip-Flops organisiert, so daß es weniger allgemein konfigurierbar ist als das Xilinx LCA. Es bietet die Freiheit der Verbindung von I/O-Pins mit der Logik lediglich unter allen Eingangspins und allen Ausgangspins so daß es teilweise das Erfordernis erfüllt. Es ist mit 10 bis 20 I/O-Pins kleiner. Es kann jedoch als ein Realizer-Logik-Chip verwendet werden.
  • Zusätzliche Einzelheiten bezüglich programmierbarer Logik-Chips finden sich in den US-Patenten 4 642 487, 4 700 187, 4 706 216, 4 722 084, 4 724 307, 4 758 985, 4 768 196 und 4 786 904, deren Offenbarung hier durch Bezugnahme einbezogen wird.
  • 1.1.2 Verbindungs-Chipbauteile
  • Verbindungschips schließen Kreuzschienenchips ein, die zur vollständigen und zur partiellen Kreuzschienenverbindung und für Leitungsführungschips, die in direkten und kanalgeleiteten Verbindungen verwendet werden. Ein Bauteil, das als Realizer-Verbindungschip nützlich ist, sollte:
  • 1) die Fähigkeit zur Erstellung vieler logischer Verbindungen zwischen willkürlich gewählten Gruppen von I/O-Pins gleichzeitig haben, wobei die Verbindung logische Signale von seinem Eingangs-I/O-Pin aufnimmt und diese Signale zu seinen Ausgangs-I/O-Pins führt,
  • 2) elektronisch rekonfigurierbar sein, das heißt, seine Verbindungen sollen elektronisch definiert sein und sollen umdefiniert werden können, um vielen unterschiedlichen Ausgestaltungen zu entsprechen,
  • 3) wenn eine Querschienen-Summierungstechnik verwendet wird, um Tri-state-Netze in der partiellen Kreuzschienenverbindung zu verbinden, dazu in der Lage sein, Summierungsgatter zu implementieren, falls nicht, werden andere tri-state-Verfahren verwendet, wie dies in dem Tri-state-Abschnitt diskutiert werden wird.
  • Die ERCGA-Bausteine, die oben diskutiert worden, nämlich das LCA, das ERA und EEPLD, erfüllen diese Anforderungen, so daß sie als Verbindungschips verwendet werden können. Obwohl in dem Verbindungs-Chip wenig oder keine Logik verwendet wird, schließt die Fähigkeit, in nahezu jedes beliebige digitale Netzwerk konfiguriert zu werden, die Fähigkeit aus, Daten direkt von den Eingangs- zu den Ausgangspins zu führen. Das LCA wird für Kreuzschienen-Chips bei einer bevorzugten Implementierung des Realizer-Systems verwendet.
  • Kreuzschienen-Schaltbausteine wie der TI 74A58840 digitale Kreuzschienen-Schalter (SN74AS8840 Data Sheet, Texas Instruments, Dallas TX, 1987), oder der Kreuzpunkt-Schaltbaustein, der üblicherweise in Telefonschaltern verwendet wird, können als Verbindungs-Chips verwendet werden. Sie bieten jedoch eine Geschwindigkeit der Rekonfiguration, die der Geschwindigkeit der Datenübertragung vergleichbar ist, da sie für Anwendungen vorgesehen sind, bei denen die Konfiguration sich während des Betriebs dynamisch ändert. Dies ist viel schneller als die Konfigurationsgeschwindigkeit von ERCGA-Bauteilen. Infolgedessen haben solche Einrichtungen höhere Preise und geringere Kapazitäten als die ERCGAs, und machen diese damit als Realizer-Verbindungschips weniger wünschenswert.
  • 1.1.3 Die ERCGA-Konfigurationssoftware
  • Die Konfigurationsbitmuster, die in ein ERCGA eingeladen werden, um seine Logik entsprechend den Anforderungen des Verwenders zu konfigurieren, sind für den Verwender zu unpraktisch, um von diesem selbst erzeugt zu werden. Hersteller ERCGA-Bauteilen bieten daher üblicherweise Netzlisten-Konversionssoftware-Werkzeuge an, die die logischen Spezifikationen, die in einer Netzlistendatei beinhaltet sind, in eine Konfigurationsbitmusterdatei zu konvertieren.
  • Das Realizer-Baustein-Konversionssystem verwendet die Netzlisten-Konversionswerkzeuge, die von den Herstellern von ERCGA angeboten werden. Wenn dies einmal in das Bauteil eingelesen worden ist, dieses konvertiert hat, dieses in Logik-Chips gewandelt hat und die Verbindung bestimmt hat, erzeugt es Netzlisten für jede Logik und jeden Verbindungs-Chip in der Realizer- Hardware. Die Netzlisten-Datei ist eine Liste aller Grundelemente (Gatter, Flip-Flops und I/O-Puffer) und ihrer Verbindungen, die in einer einfachen Logik oder in einem Verbindungs-Chip konfiguriert sind.
  • Das Konversionssystem für die Ausbildung des Realizers wendet das ERCGA-Netzlisten-Konversionswerkzeug auf jede Netzlistendatei an, um eine Konfigurationsdatei für jeden Chip zu gewinnen. Wenn unterschiedliche Bauteile als logische Chips und als Verbindungs-Chips verwendet werden, wird in jedem Fall ein geeignetes Werkzeug verwendet. Die Konfigurations-Datei weist die binären Bitmuster auf, die, wenn sie in das ERCGA-Bauteil geladen werden, dieses entsprechend den Spezifikationen der Netzlisten-Datei konfigurieren wird. Es sammelt dann diese Dateien in einer einzigen binären Datei, die dauernd gespeichert wird und die verwendet wird, um das Realizer-System fur eine Ausbildung vor dem Betrieb zu konfigurieren. Das Konversionssystem für die Ausgestaltung des Realizers entspricht der Netzliste und den Formaten der Konfigurationsdatei, die von dem ERCGA-Hersteller für sein Werkzeug definiert sind.
  • 1.1.4 Netzlisten-Konversionswerkzeuge
  • Da die bevorzugte Implementation des Realizer-Systems LCA als Logik-Chips und als Kreuzschienen-Chips verwendet, werden das Xilinx LCA-Netzlisten-Werkzeug und seine Datenformate hier beschrieben. Andere ERCGA Netzlisten-Konversionswerkzeuge werden entsprechende Eigenschaften und Formate haben.
  • Das Xilinx LCA-Netzlisten-Konversionswerkzeug (XACT) nimmt die Beschreibung eines logischen Netzwerks in einer Netzlistenform auf und bildet die logischen Elemente automatisch in CLB ab. Diese Abbildung wird in einer optimalen Weise bezüglich der Anordnung der I/O-Pins ausgeführt, um die internen Verbindungen zu erleichtern. Das Werkzeug arbeitet sodann aus, wie die innere Verschaltung des logischen Chips auszuführen ist, wodurch als Ausgangsergebnis eine Konfigurationsdatei erzeugt wird. Das LCA-Netzlisten-Konversionswerkzeug wandelt lediglich individuelle LCAs und versagt, wenn das logische Netzwerk zu groß ist, um in ein einzelnes LCA zu passen.
  • Die Xilinx LCA-Netzlistendatei wird XNF-Datei genannt. Es ist eine ASCII-Textdatei, die einen Satz von Statements in der XNF-Datei für jedes Grundelement unter Angabe des Typs des Grundelelements, der Pins und der Namen der mit der diesen Pins verbundenen Netze beinhaltet. Es ist zu beachten, daß diese Netze in der LCA- Netzliste verbunden sind, die die LCA-Grundelemente verbinden, nicht die Netze der Eingabebausteine. Einige Netze in der XNF-Datei entsprechend direkt Netzen der Eingangsbausteine infolge der Konversion der Bausteine, andere tun dies nicht.
  • Diese sind beispielsweise die XNF-Datei-Grundanweisungen, die ein XOR-Gatter mit zwei Eingängen als "I_1781" beinhalten, dessen Eingangspins mit Netzwerken verbunden sind, die als "DATA0" und "INVERT" bezeichnet sind, und dessen Ausgangspin mit einem Netz verbunden ist, das als "RESULT" bezeichnet ist.
  • SYM, I_1781,XOR
  • PIN,O,O,RESULT
  • PIN, 1,I,DATA0
  • PIN,0,I,INVERT
  • END
  • Eingangs- und Ausgangs I/O-Stift-Puffer (IBUF als Eingang und OBUF als Ausgang) werden in ähnlicher Weise spezifiziert, mit der Zufügung eines Statements zum Spezifizieren des I/O-Pins . Dies sind die Grundstatements für die OBUF, das das Netz "RESULT" betreibt, auf den I/O-Pin "P57", über das Netz, das bezeichnet ist als "RESULT_D".:
  • SYM,IA_1266,OBUF
  • PIN,O,O,RESULT_D
  • PIN,I,I,RESULT
  • END
  • EXT, RESULT_D,O,,LOC=P57
  • Die Xilinx LCA-Konfigurationsdatei wird als RBT-Datei bezeichnet. Dies ist eine ASCII-Textdatei, die einige Kopfstatements beinhaltet, welche den zu konfigurierenden Teil angeben und einen Strom von "0"en und "1"en, die die binären Bit-Muster angeben, die zum Konfigurieren des Teiles für den Betrieb verwendet werden.
  • 1.2 Verbindunasarchitektur
  • Da in der Praxis viele Logikchips verwendet werden müssen, um einen großen Eingangs-Baustein zu realisieren, sind die Logik-Chips in einem Realizer-System zu einer rekonfigurierbaren Verbindung verbunden, die es erlaubt, Signale in dem Baustein zwischen den verschiedenen Logik-Chips zu führen, wie dies erforderlich ist. Die Verbindung besteht aus einer Kombination von elektrischen Verbindungen und/oder von Verbindungs-Chips. Um einen großen Baustein mit dem Realizer-System zu verwirklichen, müssen hunderte von Logik-Chips mit einer Menge von zigtausenden von I/O-Pins von der Verbindung bedient werden.
  • Eine Verbindung sollte wirtschaftlich vergrößerbar sein, wenn die Systemgröße wächst, sollte für eine große Vielzahl von Eingangsbausteinen einfach und zuverlässig konfigurierbar sein und unter einer Minimierung der Verzögerung zwischen den Logik-Chips schnell sein. Da die durchschnittliche Anzahl von Pins pro Netz bei tatsächlichen Bausteinen eine kleine Zahl ist, die von der Bausteingröße, der Größe und den Kosten einer großen Verbindung unabhängig ist, sollte eine Vergrößerung direkt mit der Gesamtzahl der Pins der Logik-Chips, die zu verbinden sind, ansteigen. Bei einer bestimmten Kapazität des Logik-Chips wird die Anzahl der Logik- Chips und damit die Anzahl der Pins des Logik-Chips direkt zunehmen, wenn die Kapazität des Bausteins zunimmt. Die Größe und die Kosten einer guten Verbindung sollten sich weiter direkt mit der Kapazität des Baustein ändern.
  • Zwei Klassen von Verbindungsarchitekturen werden beschrieben: Verbindungen mit dem unmittelbaren Nachbarn werden in dem ersten Abschnitt beschrieben und Kreuzschienenverbindungen werden in dem nachfolgenden Abschnitt beschrieben. Verbindungen mit dem unmittelbaren Nachbarn werden mit Logik-Chips organisiert, und Verbindungen sind gemischt und angeordnet entsprechend einer Fläche von zwei, drei oder mehreren Dimensionen. Sie erstrecken sich in einer Reihen- und Spalten- Organisation eines Gatter-Array-Chips oder einer gedruckten Schaltkarte in der Organisation von Logik- Chips. Ihre Ausbildung für einen vorgegebenen Eingangsbaustein ist durch einen Anordnungs- und Führungsvorgang entsprechend demjenigen, der bei der Entwicklung von den Chips und Schaltkarten verwendet wird, bestimmt. Kreuzschienen-Verbindungen sind unterschiedlich von den zu verbindenden Logik-Chips. Sie basieren auf der Viele-Eingänge-zu-viele-Ausgänge-Organisation von Kreuzschienen, die bei Kommunikationsgeräten und bei Rechengeräten verwendet werden, und ihre Konfiguration wird in einer tabularen Weise bestimmt.
  • Verbindungen mit dem nächsten Nachbarn nehmen in ihrer Größe direkt zu, wenn die logische Kapazität zunimmt, wenn jedoch Führungswege übermäßig groß werden, werden die Verbindungen langsam und die Bestimmung der Konfiguration wird schwierig und unzuverlässig. Reine Kreuzschienen sind wegen ihrer Direktheit sehr schnell und sind wegen ihrer Regelmäßigkeit sehr einfach zu konfigurieren, sie wachsen jedoch sehr schnell auf eine nicht mehr praktikable Größe. Die partielle Kreuzschienenverbindung nutzt das meiste der Direktheit und der Regelmäßigkeit der reinen Kreuzschiene, sie nimmt jedoch direkt mit der Kapazität des Bausteins zu, was es zu einer idealen Realizer-Verbindung macht. Während tatsächliche Realizer-Systeme möglicherweise die anderen gezeigten Verbindungen nutzen, wird die partielle Kreuzschiene bei der bevorzugten Implementation verwendet und seine Verwendung wird im weiteren in der Beschreibung angenommen.
  • 1.2.1 Die Verbindungen mit dem unmittelbaren Nachbarn 1.2.1.1 Direkte Verbindungen
  • Bei der direkten Verbindung werden alle Logik-Chips miteinander in einem regelmäßigen Array verbunden ohne die Verwendung eines Verbindungs-Chips. Die Verbindung besteht lediglich aus elektrischen Verbindungen zwischen den einzelnen Chips. Viele unterschiedliche Muster der Verbindung der Logik-Chips sind möglich. Im allgemeinen werden die Pins eines Logik-Chips in Gruppen aufgeteilt. Jede Gruppe von Pins wird sodann mit einer anderen Gruppe von Pins von entsprechenden Logik-Chips verbunden usw., für alle Logik-Chips. Jeder Logik-Chip ist mit einem Untersatz aller Logik-Chips verbunden, derart, daß ihre unmittelbaren Nachbarn in einem gegenständlichen Sinn oder wenigsten in dem sinn der Topologie des Arrays verknüpft sind.
  • Alle Eingabe-Bausteinnetze, die eine Logik auf mehr als einem Logik-Chip oder aber direkt verbinden, wenn alle diese Logik-Chips direkt verbunden sind, oder aber durch eine Reihe anderer Logik-Chips geführt sind, mit denen anderer Logik-Chips, nehmen die Funktion von Verbindungs-Chips, führen logische Signale von einem I/O-Pin zu einem anderen, ohne Verbindung mit einer der verwirklichten Logik des Chips. So wird jeder Logik- Chip entsprechend seinem Anteil an dem Logik-Bausteins, zuzüglich einiger Verbindungssignale, die von einem Chip zu einem anderen durchlaufen, konfiguriert. Nicht-Logik-Chips, die keine Verbindungsfunktionen erfüllen können, werden mit vorgegebenen Logik-Chip-Pins an dem Umfang des Arrays verbunden, oder aber tangential mit Pins, die auch Logik-Chips verbinden.
  • Ein besonderes Beispiel, das in Figur 2 gezeigt ist, hat Logik-Chips, die in einem zweidimensionalen Reihen- und Spalten-Gitter ausgerichtet sind, wobei jeder Chip vier Gruppen von Pins hat, die mit benachbarten Logik- Chips verbunden sind, Nord, Süd, Ost und West, mit einem Speicher, I/O und vom Verwender gespeisten Bausteinen, die an dem Umfang verbunden sind.
  • Die Verbindung kann auf mehr Dimensionen, über dieses zweidimensionale Beispiel hinaus, erstreckt werden. Im allgemeinen sind, wenn "n" die Anzahl der Dimensionen ist, alle Pins der Logik-Chips in 2*n-Gruppen aufgeteilt. Jeder Logik-Chip verbindet mit 2*n anderen Logik-Chips in einer regelmäßigen Weise. Eine andere Variation ist ähnlich, die Größen der Stiftgruppen sind nicht jeweils gleich. In Abhängigkeit von der Anzahl der Logik-Chips und der Anzahl der Pins auf jedem Logik-Chip, wird eine Dimension und ein Satz von Stiftgruppengrößen gewählt, die der Anzahl der logischen Chips, die mit jedem der beiden Logik-Chips intervenieren, minimieren, unter Schaffung von ausreichenden Verbindungen zwischen einem direkt benachbarten Paar von Chips, um es Netzen zu erlauben, die sich nur über diese beiden Chips erstrecken. Die Bestimmung, wie die Logik-Chips konfiguriert werden, für eine Verbindung bestimmt werden, erfolgt gemeinsam mit dem Bestimmen, wie diese für die Logik zu konfigurieren sind. Zum Konfigurieren der Logik-Chips werden die folgenden Schritte ausgeführt:
  • 1) Konvertieren der Logik des Bausteins in eine Grundform des logischen Chips, wie in dem Abschnitt der Grundwandlung beschrieben.
  • 2) Aufteilen und Plazieren der logischen Grundformen in den logischen Chips. Weiter zu dem Partitionieren der Ausgestaltung in Sub-Netzwerke, die jeweils der logischen Kapazität des Logik-Chips entsprechen, sollten die Sub-Netzwerke bezüglich einander derart plaziert sein, daß die Menge der erforderlichen Verbindungen minimiert wird. Es wird ein Standard-Werkzeugverfahren zum Partitionieren und zum Anordnen verwendet, etwa das, daß in einem Werkzeug für ein Gate-Array oder einen Standardzellen-Chip zum automatischen Partitionieren und Anordnen verwendet wird ("Gate Station Reference Manual", Mentor Graphics Corp., 1987) verwendet, um zu bestimmen, wie die logischen Grundformen zu logischen Tips zugeordnet werden, um so die Verbindung zu erreichen. Da dies ein gut etabliertes Verfahren ist, wird dies hier nicht weiter beschrieben.
  • 3) Die Route der Verbindungen zwischen den Logik- Chips, das heißt deren Zuordnung zu bestimmten Logik-Chips und die Verbindungen der I/O-Pins unter Verwendung einer Standard-Routing-Werkzeugverfahren, die diejenige, die einen automatischen Routing-Werkzeug für Standardzellen-Chips (Gate Station Reference Manual", Mentor Graphics Corp., 1987) wird verwendet, um zu bestimmen, wie die Chips zu konfigurieren sind, um die Verbindung zu erstellen. Da auch dies ein gut etabliertes Verfahren ist, wird es hier nicht weiter beschrieben, mit Ausnahme des Anteils, wie es bezüglich des Verbindungsproblems angewendet wird. Das Array der logischen Chips wird mit demselben Verfahren behandelt, wie bei einem großen Gate-Array oder einem Standardzellen-Chip, wobei jedes partionierte logische Sub-Netzwerk entsprechend einem großen Gate-Array- Logikmakro und den verbundenen Logik-Chips I/O- Pins, die die Verdrahtungskanäle definieren, die für das Routen verfügbar sind. Insbesondere sind dort so viele Kanäle in jeder Richtung vorhanden, als Pins in jeder Gruppe von miteinander verbundenen I/O-Pins der Logik-Chips. Da dort viele Möglichkeiten der Verbindungen über die Logik-Chips vorhanden sind, ist dieses Routen nicht begrenzt und durch die Verwendung derselben Kanäle an jedem Ende, mit demselben Verfahren, wie bei den Routenschichten, die von den Kanälen in einem Gate-Array entfernt sind.
  • 4) Wenn es aufgrund einer Erstreckung der Routen (Nicht-Verfügbarkeit von Routen-Kanälen an einem Punkt während des Routenvorgangs) nicht möglich ist, eine Verbindung herzustellen, wird die Ausgestaltung anders partitioniert und/oder neu angeordnet unter Verwendung von vorgegebenen Kriterien zum Freiwerden von der Begrenzung, und die Verbindung wird erneut versucht.
  • 5) Konvertieren der Spezifikationen, welches der Netze mit welchen Kanälen belegt wird, in den Netzlistendateien für die einzigen Logik-Chips und Spezifizieren der Chip-Ausbildung für die Logik-Chip- Signale, entsprechend der Entsprechung zwischen bestimmten Routen-Kanälen und I/O-Pins. Die Ausgabe dieser Spezifikationen in der Form von I/O-Pins- Spezifikationen und den internen Verbindungen der Logik-Chips gemeinsam mit den Spezifikationen der Logik-Grundformen zu den Netzlistendateien für jeden Logik-Chip.
  • 6) Verwenden des Netzlisten-Konversionswerkzeugs für den logischen Chip zum Erzeugen von Konfigurationsdateien für jeden logischen Chip und deren Kombinieren in die schließliche Realizer-Konfigurationsdatei für die Eingabeausbildung.
  • 1.2.1.2 Kanalführungsverbindungen
  • Die Kanalführungsverbindung ist eine Variation der Direktverbindung, bei der die Chips in einige aufgeteilt werden, die nicht für die Logik verwendet werden, sondern lediglich zum Bewirken von Verbindungen bestimmt sind und so zu Verbindungs-Chips werden, und in andere, die ausschließlich für die Logik verwendet werden, die Logik-Chips bleiben. Insbesondere werden Logik-Chips nicht direkt miteinander verbunden, sondern sind stattdessen nur mit Verbindungs-Chips verbunden. In allen anderen Bezügen ist die über Kanäle führende Verbindung entsprechend dem Verfahren der direkten Verbindung zusammengesetzt. Netze, die sich über mehr als einen Logik-Chip erstrecken, sind miteinander durch Konfigurieren einer Reihe von Verbindungs-Chips, als Routen-Chips bezeichnet, das mit den Logik-Chips miteinander verbindet, so daß logische Verbindungen zwischen den I/O-Pins in der Logik-Chips hergestellt werden. Es wird so als konfigurierbare "Schaltkarte" verwendet.
  • Ein Beispiel einer Kanalrouten-Verbindung ist zwar die zweidimensionale: Logik-Chips werden reihen- und spaltenweise angeordnet, vollständig von Routen-Chips umgeben, wie in Figur 3 gezeigt. Das Array besteht aus Reihen, die vollständig aus Routen-Chips bestehen, alternierend mit Reihen, die alternierend aus Logik- Chips und aus Routen-Chips bestehen. Auf diese Weise sind ungebrochene Reihen und Spalten von Routen-Chips gebildet, die von Logik-Chips umgeben sind. Die Pins jedes Chips sind in vier Gruppen oder Ränder gebrochen, die als "Nord, Ost, Süd und West" bezeichnet sind. Die Pins jedes Chips sind mit den vier unmittelbaren Nachbarn in einer gatterartigen Weise verbunden. Die nördlichen Pins sind mit den südlichen Pins der nördlichen Nachbarn verbunden, die östlichen Pins sind mit den westlichen Pins der östlichen Nachbarn verbunden usw.
  • Dieses Modell kann auf mehr Dimensionen über das gegebene zweidimensionale Beispiel hinaus erweitert werden. Wenn "n" die Anzahl der Dimensionen ist, werden die Pins der logischen Chips in 2 * n Gruppen aufgeteilt. Jeder Logik-Chip ist mit 2 * n Nachbarn verbunden. Es sind (2**n-1) Routen-Chips für jeden Logik-Chip in der Mitte des Arrays vorgesehen.
  • Es werden auch Verallgemeinerungen dieses Kanal- Routenmodells verwendet, basierend auf der Unterscheidung zwischen Logik-Chips und Routen-Chips. Die Pins der Logik-Chips können in eine beliebige Anzahl von Gruppen gebrochen sein. Die Pins der Routen-Chips können in eine beliebige Anzahl von Gruppen aufgeteilt sein, die nicht dieselbe Anzahl haben muß, wie diejenigen der Gruppen von Logik-Chips. Die Logik-Chips und die Routen-Chips müssen nicht dieselbe Anzahl von Pins haben. Diese Variationen werden solange aufgebracht, bis sie zu einem regelmäßigen Feld von logischen Chips und Routen-Chips führen, und jeder gegebene Logik-Chip verbindet sich lediglich mit einem begrenzten Satz von unmittelbaren Nachbarn.
  • Die Festlegung, wie die Verbindungs-Chips zu konfigurieren sind, erfolgt gemeinsam mit der Festlegung, wie die Logik-Chips zu konfigurieren sind, mit demselben Verfahren, das für die direkte Verbindung verwendet wird mit der Ausnahme, daß die Verbindungen zwischen Logik-Chips lediglich über Verbindungs-Chips geführt werden, nicht über Logik-Chips.
  • Ein logisches Signal des Netzes verläuft durch so viele Routen-Chips, wie erforderlich sind, um die Verbindung herzustellen. Da jeder Routen-Chip das Fortschreiten des Signals verzögert, ist die Verzögerungszeit des Signals durch die Verbindung um so langsamer, um so mehr Routen-Chips ein Signal passieren müssen. Es ist im allgemeinen erwünscht, ein Logikbaustein aufzuteilen und die Teile auf bestimmte Logik-Chips derart zu verteilen, daß die Anforderungen an die Führung minimiert werden. Wenn es nicht möglich ist, eine Verbindung aufgrund von Beschränkungen der Route zu erreichen, wird der Baustein unter Verwendung von vorgegebenen Kriterien erneut aufgeteilt oder anders angeordnet, um die Beschränkung zu überwinden, und die Verbindung wird. erneut versucht. Dieser Zyklus wird solange wiederholt, wie es erforderlich ist, um zu einem Erfolg zu kommen.
  • 1.2.2 Kreuz-Schienenverbindungen 1.2.2.1 Vollkreuz-Schienenverbindung
  • Die Kreuzschiene ist eine Verbindungsarchitektur, die jeden Pin mit jedem anderen Pin oder Pins ohne Einschränkung verbinden kann. Sie wird weit verbreitet für Kommunikationsbotschaften in Schaltschnitzwerken in Computern oder in Kommunikationsgeräten verwendet. Eine Verbindung, die als eine Voll-Kreuzschiene verbunden ist, ist mit allen Pins der logischen Chips verbunden und ist dazu in der Lage, in jeder Kombination der Stiftverbindungen konfiguriert zu werden, und bewirkt eine direkte Verbindung jedes Eingangsaussteins mit einer Partitionierung der logischen Chips, da es dazu in der Lage ist, jeden Pin mit einem anderen zu verbinden.
  • Unglücklicherweise ist kein einzelnes Bauteil praktisch verfügbar, das eine Anzahl von logischen Chips miteinander verbinden kann. Die logische Karte nach dem bevorzugten Ausführungsbeispiel hat beispielsweise 14 logische Chips mit jeweils 128 Pins, die alle zu verbinden sind, insgesamt also 1792 Pins, was weit jenseits der Fähigkeit eines einzelnen verfügbaren Chips ist. Es ist möglich, Kreuzschienen aus einer Reihe von praktisch verfügbaren Verbindungs-Chips zu bilden, Bausteine, die ausgebildet werden können, um willkürliche Verbindungen zwischen der I/O-Pins zu schaffen. In dem Zusammenhang von Kreuzschienen-Verbindung werden auch diese als Kreuzschienen-Chips bezeichnet.
  • Ein allgemeines Verfahren zum Aufbau einer Kreuzschienen-Verbindung aus tatsächlich verfügbaren Kreuzschienen-Chips ist die Verwendung eines Kreuzschienen- Chips zum Verbinden eines Stifts eines logischen Chips mit so vielen anderen Pins der logischen Chips wie das Kreuzschienen-Chip Pins hat. Figur 4 zeigt ein Beispiel, das zur Vereinfachung extrem vereinfacht ist. Vier logische Chips, mit jeweils 8 Pins, sind miteinander zu verbinden. Es werden Kreuzschienen-Chips mit jeweils neun Pins verwendet. Die am weitesten links angeordnete Spalte der drei Kreuzschienen-Chips verbindet den vierten Pin H des logischen Chips mit den Pins der logischen Chips 1, 2 und 3. Die nächste Spalte verbindet den Pin G usw. mit dem Pin G des logischen Chips 4. Es besteht kein Erfordernis, einen Pin eines logischen Chips mit anderen Pins auf demselben logischen Chip zu verbinden, da eine solche Verbindung intern hergestellt werden könnte. Die nächsten acht Spalten von Kreuzschienen-Chips verbinden das logische Chip 3 mit den logischen Chips 1 und 2. Das logische Chip 4 ist nicht eingeschlossen, da seine Pins mit den 3er Pins des logischen Stifts durch die ersten acht Spalten des Kreuzschienen-Chips verbunden sind. Die verbleibenden acht Spalten verbinden die logischen Chips 1 und 2. Es werden 48 Kreuzschienen-Chips verwendet.
  • Zwei Netze eines Eingabe-Bauteils sind miteinander verbunden gezeigt. Das Netz A wird von dem logischen Chip 1, Pin D betrieben und wird von dem logischen Chip 4, Pin B empfangen. Das mit 1 markierte Kreuzschienen-Chip ist dasjenige, das beide dieser Chips verbindet, so daß es ausgebildet ist, um von dem Chip 1, Pin D aufzunehmen und das, was es aufgenommen hat, zu dem Chip 4, Pin 5 zu führen, um so eine logische Verbindung zu schaffen. Das Netz B wird von dem Chip 2, Pin F betrieben und wird von dem Chip 3, Pin G und Chip 4, Pin G aufgenommen. Ein Kreuzschienen-Chip 2 macht die erste Verbindung und das Kreuzschienen-Chip 3 macht die zweite Verbindung.
  • Im allgemeinen kann die Anzahl der Kreuzschienen-Chips, die erforderlich sind, vorhergesagt werden. Wenn L logische Chips vorhanden sind, jeweils mit P1 Pins, und Kreuzschienen-Chips, die jeweils einen Pin als logischen Chip mit so vielen anderen Pins der logischen Chips wie möglich verbindet, haben Px Stifte:
  • 1) Ein Pin des logischen Chips 1 muß mit (L-1) Pl Pins auf logischen Chips 2 über L verbunden sein. Dies erfordert (L-1) Pl/ (Px-1) Kreuzschienen-Chips. Die Verbindung aller Pins wird (L-1) Pl² / (Px-1) Kreuzschienen-Chips erfordern.
  • 2) Jeder Pin des logischen Chips 2 muß mit den (L-2) Pl Pins auf den logischen Chips 3 über L verbunden sein. Dies erfordert (L-2) Pl²/ (Px-1) Kreuzschienen-Chips.
  • 3) Jeder Pin auf dem logischen Chip L-1 muß mit Pl Pins auf dem logischen Chip L verbunden sein. Dies wird Pl²/ (Px-l) Kreuzschienen-Chips erfordern.
  • 4) X = (L-l) Pl² / (Px-1) + (L-2) Pl² / (Px-1) + ... + Pl² / (Px-1) = (L2-L) Pl² / 2 (Px-1).
  • Die Anzahl der Kreuzschienen-Chips, X, nimmt im Quadrat der Anzahl der logischen Chips mal der Anzahl der Pins pro logischen Chip zu. Eine Kreuzschienen-Verbindung für die bevorzugte Ausgestaltung einer logischen Schaltkarte (14 logische Chips mit jeweils 128 Pins) würde 11.648 Kreuzschienen-Chips mit jeweils 129 Pins oder aber 23.296 Kreuzschienen-Chips mit jeweils 65 Pins erfordern. Kreuzschienen-Verbindungen sind unpraktikabel groß und teuer für jedes sinnvolle Realizer- System.
  • 1.2.2.2 Vollkreuzschienen-Netzverbindungen
  • Die Größe der Kreuzschienen-Verbindungen kann durch Erkennen, daß die Anzahl der Bausteinnetze, die miteinander zu verbinden sind, niemals eine Hälfte der Gesamtanzahl der logischen Chips übersteigen kann, verringert werden. Eine Kreuzschienen-Netzverbindung ist logisch aus zwei Kreuzschienen zusammengesetzt, von denen jede alle Pins der logischen Chips mit einem Satz von Verbindungen, die als Verbindungsnetze (ICNs) bezeichnet werden, die sich auf die Hilfte der Gesamtanzahl der Pins der logischen Chips beläuft. Da ein Kreuzschienen-Chip, das einen Satz von Pins der logischen Chips mit einem Satz von ICNs verbindet, auch von diesen zurück zu den Pins verbindet (was auf der allgemeinen Verwendbarkeit der Verbindungs-Chips beruht), ist diese Verbindung mit Kreuzschienen-Chips aufgebaut, die jeweils einen Satz von logischen Chip-Pins mit einem Satz von ICNs verbindet.
  • Figur 5 zeigt ein Beispiel, bei dem dieselben vier logischen Chips wie in Fig. 4 miteinander verbunden sind. Kreuzschienen-Chips mit acht Pins werden jeweils verbunden, es sind 16 ICN vorhanden. Jeder der 32 Kreuzschienen-Chips verbindet vier Pins der logischen Chips mit vier ICN. Das Netz A wird durch einen Kreuzschienen-Chip 1 verbunden, der ausgebildet ist, um von dem Chip 1, Pin D aufzunehmen und das, was es aufgenommen hat, an einen ICN weiterzugeben und durch einen Kreuzschienen-Chip 2, der dazu ausgebildet ist, von dem ICN aufzunehmen und den Chip 4, Pin B anzusteuern, um so eine logische Verbindung zu erstellen. Das Netz B wird von dem Chip 2, Pin F, gesteuert, verbunden mit einem anderen ICN über ein Kreuzschienen-Chip 3, aufgenommen von Chip 3, Pin G, über den Kreuzschienen-Chip 4 und durch den Chip 4, Pin G, über den Kreuzschienen- Chip 5.
  • Eine Kreuzschienen-Netzverbindung für die Schaltkarte nach einem bevorzugten Ausführungsbeispiel (14 logische Chips mit jeweils 128 Pins) würde 392 Kreuzschienen- Chips mit jeweils 128 Pins oder 1568 Kreuzschienen- Chips mit jeweils 64 Pins erfordern. Die Kreuzschienen-Netzverbindung verwendet weniger Kreuzschienen- Chips als die reine Kreuzschiene. Seine Größe nimmt mit dem Produkt der logischen Chips und der Gesamtanzahl der Pins der logischen Chips zu, was zu einem Quadrat der Anzahl der logischen Chips führt. Dies ist besser als eine reine Kreuzschiene, doch noch nicht die gewünschte direkte Skalierung.
  • 1.2.2.3 Partiale Kreuzschienen-Verbindung
  • Das logische Chip selbst kann ein zusätzliches Ausmaß an Freiheit bieten, das die Kreuzschienen nicht ausnutzen, da es die Fähigkeit hat, zur Verwendung jeder der I/O-Pins für einen gegebenen Eingang oder für einen Ausgang eines logischen Netzwerks, für das es definiert ist, ausgestaltet zu werden, unabhängig von dem bestimmten Netzwerk. Diese Freiheit erlaubt die Möglichkeit einer partialen Kreuzschienen-Verbindung, der Grund dafür ist in der Definition der logischen Chips angegeben.
  • Bei der partialen Kreuzschienen-Verbindung werden die I/O-Pins jeden logischen Chip in geeignete Untergruppen unter Verwendung derselben Teilung auf jedem logischen Chip aufgeteilt. Die Pins jeden Kreuzschienen-Chips sind mit derselben Untergruppe von Pins von jedem von allen logischen Chips verbunden. Das Kreuzschienen-Chip "n" ist mit der Untergruppe "n" jeden Stifts der logischen Chips verbunden. Es werden so viele Kreuzschienen-Chips verwendet, wie Untergruppen vorhanden sind, und jedes Kreuzschienen-Chip hat so viele Pins wie die Anzahl der Pins in der Untergruppe mal der Anzahl der logischen Chips. Jedes Paar von logischen Chips/Kreuzschienen-Chips wird durch so viele Leitungen, als Pfade bezeichnet, verbunden, wie Pins in jeder Untergruppe vorhanden sind.
  • Da jeder Kreuzschienen-Chip mit derselben Untergruppe von Pins auf jedem logischen Chip verbunden ist, kann eine Verbindung von einem I/O-Pin in einer Untergruppe von Pins auf einem logischen Chip mit einem I/O-Pin in einer anderen Untergruppe von Pins eines anderen logischen Chips nicht konfiguriert werden. Dies wird durch Verbinden jedes Netzes, das I/O-Pins von derselben Untergruppe von Pins auf jedem der zu verbindenden logischen Chips und entsprechendes Konfigurieren der logischen Chips vermieden. Da das logische Chip zur Verwendung konfiguriert werden kann, kann jeder I/O-Pin für die Logik bestimmt werden, in einem logischen Chip konfiguriert, das mit einem Netz verbunden ist. Jeder I/O-Pin ist so gut wie jeder andere.
  • Das allgemeine Muster ist in Figur 6 gezeigt. Jede Leitung, die ein logisches Chip und ein Kreuzschienen-Chip verbindet, stellt in dieser Figur eine Untergruppe von Pins des logischen Chips dar. Jedes Kreuzschienen-Chip ist mit einer Untergruppe von Pins für jeden logischen Chip verbunden. Umgekehrt bedeutet dies, daß jeder logische Chip mit einer Untergruppe von Pins jeden Kreuzschienen-Chips verbunden ist. Die Anzahl der Kreuzschienen-Chips muß nicht der Anzahl der logischen Chips entsprechen, wie es in diesen Beispielen zufällig der Fall ist. Bei der bevorzugten Implementation ist es nicht so.
  • Figur 7 zeigt ein Beispiel, bei der dieselben vier logischen Chips wie in Figuren 1 und 2 verbunden sind. Vier Kreuzschienen-Chips mit jeweils acht Pins werden verwendet. Jeder Kreuzschienen-Chip stellt eine Verbindung mit denselben beiden Pins jeden logischen Chips her. Das Kreuzschienen-Chip 1 ist mit den Pins A und B jeden der logischen Chips 1 bis 4 verbunden. Der Kreuzschienen-Chip 2 ist mit allen Pins C und D verbunden, das Chip 3 mit allen Pins E und F und Chip 4 mit allen Pins G und H.
  • Das Bausteinnetz A wurde in den vorangehenden Beispielen von dem Pin B eines logischen Chips aufgenommen, es ist bzw. sind jedoch kein weiterer Kreuzschienen-Chip bzw. Chips vorgesehen, die diesen mit dem Treiber auf dem Pin D des logischen Chips 1 verbinden können. Da jeder I/O-Pin zu der Logik zugeordnet werden kann, die in dem logischen Chip 4, das das Netz A aufnimmt, zugeordnet werden kann, ist der Pin C so gut wie der Pin B, der dann für ein anderes Netz verwendet werden kann. Infolgedessen wird das Netz A stattdessen von dem Chip C gebildet und die Verbindung wird durch Konfigurieren des Kreuzschienen-Chips 2 erreicht. Das Bausteinnetz B wird von dem Chip 3, Pin G und durch Chip 4, Pin G, aufgenommen, es sind dort jedoch keine Kreuzschienen- Chips vorgesehen, die diesen mit dem Treiber auf dem Pin F des logischen Chips 2 verbinden kann. Das Netz B wird stattdessen von dem Pin H aufgenommen und die Verbindung wird durch Konfigurieren des Kreuzschienen- Chips 4 erreicht.
  • Die Partial-Kreuzschienen-Verbindung wird in dem bevorzugten Ausführungsbeispiel verwendet. Seine logische Karte besteht aus 14 logischen Chips, jeweils mit 128 Pins, die über 32 Kreuzschienen-Chips mit jeweils 56 Pins verbunden sind. Die Pins der logischen Chips sind in 32 geeignete Untergruppen von jeweils 4 Pins aufgeteilt und die Pins jeden Kreuzschienen-Chips sind in 14 Untergruppen von jeweils 4 Pins aufgeteilt. Jedes Paar besteht aus einem Logik-Chip und einem Kreuzschienen- Chip und ist über vier Pfade verbunden, da das Kreuzschienen-Chip "n" mit einer Untergruppe "n" von jeden der Pins der logischen Chips verbunden ist.
  • Die Partialverbindung verwendet die wenigsten Kreuzschienen-Chips aller Kreuzschienen-Verbindungen. Seine Größe nimmt direkt zu, wenn die Anzahl der Pins der logischen Pins zunimmt. Dies ist direkt in Bezug zu der Anzahl der logischen Chips und damit der Kapazität der Logik, was das gewünschte Ergebnis ist. Es ist insofern schnell, als alle Verbindungen durch nur einen Verbindungs-Chip laufen. Es ist relativ einfach zu verwenden, da es regelmäßig ist, seine Pfade können in einer Tabelle dargestellt werden und die Bestimmung, wie eine bestimmte Verbindung zu erstellen ist, ist einfach eine Frage der Untersuchung der Tabelle auf das am besten verfügbare Paar der Pfade.
  • 1.2.2.4 Fähigkeit der Partial-Kreuzschienen-Verbindung
  • Partial-Kreuzschienen-Verbindungen können nicht so viele Netze verbinden, wie dies Voll-Kreuzschienen können. Die Partial-Kreuzschienen-Verbindung versagt bei der Verbindung eines Netzes, wenn die einzigen I/O-Stifte, die nicht bereits für andere Netze auf dem Ausgangs- Logik-Chip verwendet werden, zu dem Destinations- Logik-Chip bereits voll sind. Die Destination kann Pins verfügbar haben, in einem solchen Fall gehen sie jedoch zu anderen Kreuzschienen mit vollen Quellenpins und es ist keine Möglichkeit vorhanden, von einer dieser Kreuzschienen zu der ersten zu gelangen.
  • Die Kapazität einer Partial-Kreuzschienen-Verbindung hängt von ihrer Architektur ab. Bei einem logischen Extrem ist nur eine Untergruppe der Pins der logischen Chips vorhanden, eine Kreuzschiene würde alle Pins bedienen. Eine solche Anordnung hat die größte Fähigkeit zur Verbindung, es ist jedoch eine nicht zu verwirklichende Voll-Kreuzschiene. In dem anderen logischen Extrem ist die Größe der Untergruppe 1, mit so vielen Kreuzschienen-Chips wie Pins auf einem logischen Chip vorhanden sind. Dies hat die geringste Fähigkeit zur Verbindung aller Partial-Kreuzschienen, die Fähigkeit kann jedoch ausreichend sein. Zwischen diesen beiden Extremen liegen Architekturen, bei denen jeder Kreuzschienen-Chip zwei, drei oder mehr Pins jeden logischen Chip verbinden. Eine größere Verbindungsfähigkeit wird verfügbar, wenn die Anzahl der Kreuzschienen-Chips abnimmt und die Anzahl des Stifts pro Kreuzschienen-Chip zunimmt.
  • Die Variation ergibt sich aus der früher erwähnten Tatsache, daß freie Pins logischer Chips vorhanden sein können, die nicht miteinander verbunden werden können, da sie von unterschiedlichen Kreuzschienen-Chips bedient werden. Um so geringer die Anzahl der und um so größer die Kreuzschienen-Chips sind, um so weniger häufig wird dies auftreten. Die Voll-Kreuzschienen-Verbindung kann per Definition alle Pins in jedem Muster verbinden.
  • Als ein einfaches Beispiel des Unterschieds sei angenommen, daß drei logische Chips vorhanden sind, die mit 1, 2 und 3 bezeichnet werden, wobei jeder drei Pins habe, und daß vier Netze, A, B, C und D vorhanden sind. Das Netz A verbindet die logischen Chips 1 und 2, das Netz B verbindet die logischen Chips 1 und 3. C verbindet 2 und 3 und D verbindet die Logik-Chips 1 und 2. In den Figuren 8a und 8b sind die Pins jeden Logik-Chips als eine Reihe von Zellen dargestellt und jedes Kreuzschienen-Chip deckt so viele Spalten ab wie Stifte, die es bedient, vorhanden sind.
  • In dem ersten Fall (Fig. 8a) verwenden wir drei Kreuzschienen-Chips, die mit 1, 2 und 3 bezeichnet sind, die jeweils eine Breite von einem Pin haben. Jedes Kreuzschienen-Chip kann nur einem Netz entsprechen: Der Kreuzschienen-Chip 1 ist programmiert, um das Netz A zu vermitteln, das der Kreuzschienen-Chip 2 verbindet. Das Netz B und der Kreuzschienen-Chip 3 verbindet das Netz C. Das Netz D ist links nicht verbunden, obwohl dort vier freie Pins des Logik-Chips verfügbar sind. In dem zweiten Fall (Fig. 8b) ist ein Voll- Kreuzschienen-Chip verwendet, das eine Breite von drei Pins hat, anstelle eines Kreuzschienen-Chips 1, 2 und 3, und das Netz D kann verbunden sein.
  • Eine Analyse und eine Rechnermodellierung wurde bezüglich der Anzahl der Eingangsbaustein-Netzwerke durchgeführt, die verbunden werden können durch unterschiedliche Partial-Kreuzschienen-Verbindungsarchitekturen. Die Ergebnisse zeigen an, daß eine enge Partial-Kreuzschiene fast so effizient wie eine breite oder sogar eine volle Kreuzschiene ist. Beispielsweise zeigt die Verbindung, die auf der logischen Karte nach dem bevorzugten Ausführungsbeispiel (14 Logik-Chips mit 128 Pins, 32 Kreuzschienen-Chips mit 56 Pins) 98 % der Verbindungskapazität hatte, die eine Voll-Kreuzschiene haben würde.
  • Es ist für tatsächliche Eingangsbausteine extrem selten, daß die maximal verfügbare Anzahl von Netzen mit Mehrlogik-Chips und Pins von Logik-Chips erforderlich sind, was bei der Modellierung angenommen wurde. Tatsächliche Ausgestaltungen haben nahezu immer weniger Netze als maximal möglich, und weniger als die durchschnittliche Anzahl von Netzen sind durch die Partial- Kreuzschienen in dem obigen Beispiel verwendet, wie gewöhnlich wesentlich weniger. Dies wird durch Verwenden eines kleinen Teiles von mehr Pins logischen Chips und der Kreuzschienen-Chips, als dies absolut erforderlich wäre, um die logische Kapazität zu unterstützten, erreicht, wodurch sichergestellt ist, daß die tatsächlichen Ausgestaltungen durch eine enge Partial-Kreuzschiene verbunden werden können.
  • Enge Kreuzschienen-Chips sind viel kleiner und daher weniger teuer, Pin für Pin, als breite. Da sie eine fast ebenso große Möglichkeit der Zwischenverbindung bilden, werden diese bevorzugt.
  • 1.2.3 Tri-State Netz-Verbindungen
  • Ein wichtiger Unterschied zwischen einer aktiven Verbindung, etwa einer Partial-Kreuzschienen-Verbindung und einer passiven, etwa einer gegenständlichen Leitung, ist diejenige, das die aktive Verbindung eindirektional ist. Jede Verbindung besteht tatsächlich aus einer Reihe von Treibern und Empfängern an den Grenzen des Chips, die durch Metall und Spuren verbunden sind. Normale Netze haben einen einzigen Treiber, der mit festen Treibern und Empfängern in der aktiven Verbindung implementiert werden kann. Einige Netze bei einer tatsächlichen Ausgestaltung sind Tri-State-Netze mit mehreren Tri-State-Treibern, wie in Figur 9 gezeigt.
  • Zu einem gegebenen Zeitpunkt ist ein Maximum der Treiber aktiv und die anderen stellen eine hohe Impedanz gegenüber dem Netz dar. Alle Empfänger sehen zu allen Zeiten dieselben logischen Level (unter Vernachlässigung von Verzögerungen bei dem Voranschreiten).
  • 1.2.3.1 Summe der Produkte ersetzt Tri-State-Netz
  • Wenn das gesamte Netz in demselben Logik-Chip partitioniert ist, kann das Netzwerk durch ein Äquivalent der Zwei-Zustands-Produktsumme oder einen Multiplexer ersetzt werden, wie in Figur 10 gezeigt ist. Wenn dort keine aktive Freigabe vorhanden ist, wird das Netzwerk ein logisches Low ausgeben. Oft werden Tri-State-Netze passiv hochgezogen. Wenn erforderlich, wird die Produktsumme veranlaßt, ein logisches High auszugeben, wenn es nicht freigegeben ist, durch Invertieren des Dateneingangs zu jedem AND und zum Invertieren des sich ergebenden Ausgangs des Summierungsgatters. Wenn mehr als eine Freigabe aktiv ist, ist das Ergebnis die Summe (OR) aller Eingaben. Dies ist akzeptabel, da das Verhalten eines wirklichen Tri-State-Treibers nicht definiert ist, wenn mehr als eines mit unterschiedlichen Daten freigegeben ist. Figur 11a und 11b zeigen die beiden Arten des Netzwerks: "schwebendes Low" und "schwebendes High".
  • Der grundlegende Konversionsteil des Konversionssystems zur Ausbildung des Realizer-Systems führt eine Produktsummen-Substitution aus, da die Xilinx LCA, die für die Logik-Chips und für die Vergütungs-Chips bei der bevorzugten Implementation verwendet wird, den Support-Tri-State-Treiber nicht gleichförmig in allen Netzen verbindet. Tri-State-Treiber sind auf allen I/O- Pins an der Grenze der LCA verfügbar. Eine begrenzte Anzahl von Tri-State-Treibern sind im Inneren in den XC3000 Serien LCAs verfügbar, nur eine kleine Anzahl der internen Verbindungen sind über den Chip beabstandet, jedes von ihnen bedient nur eine einzige Reihe der CLBs. Eine Abbildung von Tri-State-Netzen auf diesen Verbindungen würde zu einer weiteren Beschränkung der Partitionierung führen und könnte die Freiheit der Anordnung von CLB auf dem LCA beschränken. Gleichzeitig sind die Tri-State-Verbindungen mit einer kleinen Anzahl von Treiber pro Netz in demselben Gate-Array- Bibliothekszellen gemeinsam. Infolgedessen erfolgt, wenn möglich, die Produktsummen-Substitution, um diese Komplexitäten zu vermeiden.
  • Wenn ein Tri-State-Netz über mehr als einen logischen Chip durch das Partitionieren des Aufbaus in viele logische Chips gespalten ist, werden Produktsummen lokal verwendet, um jede Logik-Chip-Verbindung mit dem Netz auf einen einzelnen Treiber und/oder Empfänger an der Grenze des Logik-Chips zu reduzieren. Figur 12 zeigt zwei Treiber und zwei Empfänger, die zusammengefaßt sind. Die beiden Treiber werden durch eine lokale Produktsumme zusammengefaßt, wenn dies zu der Gesamtproduktsumme beiträgt, oder erfordern nur einer einzigen Treiberverbindung. Entsprechend ist nur eine einzige Empfängerverbindung über zwei Empfänger verteilt.
  • Sodann kommt die aktive Verbindung ins Spiel. Bei jedem gegebenen Punkt entlang eines Tri-State-Netzes hängt die "Richtung" des Antriebs davon ab, welcher Treiber aktiv ist. Während dies bei einer passiven Verbindung keinen Unterschied macht, muß eine aktive Verbindung organisiert sein, um in die richtige Richtung aktiv zu treiben und zu empfangen. Es sind mehrere Ausgestaltungen, die dies in der Partial-Kreuzschienen-Verbindung bewirkt.
  • 1.2.3.2 Ausgestaltung des logischen Summierens
  • Drei Ausbildungen basieren auf dem Reduzieren des Netzes auf eine Produktsumme. Die Ausgestaltung der logischen Summierung ordnet das summierende OR-Gatter in einen der betroffenen Logik-Chips, wie in Figur 13 gezeigt.
  • Die AND-Gatter, die die Produkte erzeugen, werden in den Treiber-Logik-Chips verteilt, von denen jedes einen Ausgangs-Pin benötigt. Jeder Empfangs-Logik-Chip benötigt einen Eingangspin und der summierende Logik-Chip, der ein Sonderfall ist, benötigt einen Eingangspin für jeden anderen Betreiber und einen Ausgangsanschluß. Diese Verbindungen sind alle eindirektional, einschließlich eines OBUF/IBUF-Paares über jeder Chip- Grenze. Die Kosten pro Anschluß für die Treiber ist daher größer, es sollte daher ein Treiber-Logik-Chip als Summierungs-Chip verwendet werden.
  • Zum Zwecke der Klarheit sind in diesen Figuren nicht alle eingeschlossenen LCA-Grundelemente dargestellt. Der tatsächliche Pfad von einem Treiber-Eingangsanschluß über einen empfangenen Ausgangsanschluß weist einen CLB und einen OBUF auf den Treiber, ein IBUF/OBUF auf der Kreuzschiene, einen IBUF, einen CLB und einen OBUF auf den Summierungs-Chip, einen weiteren IBUF/OBUF auf der Kreuzschiene und einen IBUF auf dem Empfgnger auf. Wenn wir die Kreuzschienen-IBUF-Verzögerung als lx, die Logik-CLB-Verzögerung Cl, usw., bezeichnen, ist die gesamte Verzögerung auf dem Datenweg CL + Ol Ix + Ox + Il + Cl + Ol + Ix + Ox + Il. In einem bestimmten Fall beträgt die Gesamtverzögerung dann, wenn das Logik-Chip ein XC 3090-70 und die Kreuzschiene ein XC 2018-70 ist, 82 ns zuzüglich einer internen LCA- Verbindungsverzögerung, Dieselbe Verzögerung hört bei der Freigabe auf.
  • Wenn ein Bus mit n-Bit zu verbinden ist, werden alle Freigaben für jedes Bit auf dem Bus dieselbe sein. Bei dieser besonderen Ausbildung sind die Produktgatter in den Treiber-Logikbits, die Freigaben bleiben im Inneren und die für den Bus erforderlichen Anschlüsse betragen nur das n-fache derjenigen für ein Bit.
  • 1.2.3.3 Ausbildung des Kreuzschienen-Summierens
  • Bei der Ausbildung des Kreuzschienen-Summierens wird das summierende OR-Gatter auf dem Kreuzschienen-Chip plaziert, unter Nutzung der Tatsache, daß die Kreuzschienen-Chips in einigen Ausführungsbeispielen mit ERCGAs, etwa LCAs implementiert werden, die eine Logik verfügt haben, wie in Figur 14 gezeigt.
  • Jedes Logik-Chip benötigt einen Pin, wenn es ein Treiber ist und/oder einen Pin, wenn es ein Empfänger ist. Das Kreuzschienen-Chip muß einen oder mehrere logische Elemente für das Summierungsgatter haben. Die Kreuzschienensummierung ergibt sich aus dem Eingeben der gesamten Logik in das Logik-Chip und keines in den Kreuzschienen-Chip ab, es ist jedoch ein wichtiger Unterschied, daß die Logik, die in dem Kreuzschienen-Chip angeordnet ist, nicht ein Teil der verwirklichten Logik der Ausgestaltung ist. Es ist nur die Logik, die dazu dient, die Verbindungsfunktionalität eines Tri-State- Netzes zu bewirken.
  • Diese Ausgestaltung verwendet weniger Pins als die vorangenannte Ausgestaltung, wenn mehr als zwei Treiber- Logik-Chips vorhanden sind. Ein Bus mit n-Bit benötigt n-mal so viele Anschlüsse. Die Gesamtverzögerung ist verringert auf: Cl + Ol + Ix + Cx + Ox + Il oder maximal 51 ns. Die Freigabe hat dieselbe Verzögerung.
  • 1.2.3.4 Die Ausgestaltung des zweidirektionalen Kreuzschienen-Summierens
  • Das Summierungsgatter des Kreuzschienen-Chips wird über zweidirektionale Verbindungen in der Ausgestaltung des zweidirektionalen Kreuzschienen-Summierens erreicht, gezeigt in Figur 15.
  • AND-Gatter, die nur den freigegebenen Pfad in das OR- Gatter erlauben, sind in dem Kreuzschienen-Chip vorgesehen, um Rückkopplungs-Latchwege zu blockieren. Ein Logik-Chip benötigt nur einen Anschluß, wenn es nur ein Empfänger ist und zwei Anschlüsse, wenn es ein Treiber oder aber beides ist, einen für das Signal selbst und einen für die Freigabe-Ausgabe, das von dem Kreuzschienen-Chip verwendet wird. Eine verringerte Verbindung ist für Busse mit mehreren Bit möglich durch die Verwendung einer einzelnen Freigabe für mehr als einen Bit. Wenn mehr als ein Bit des Busses über denselben Kreuzschienen-Chip verbunden ist, muß nur ein Satz von Freigabesignalen an den Chip angelegt werden. Die Gesamtverzögerung des Datenpfads beträgt Ol+Ix+Cx+Ox+Il oder 42 ns in dem bevorzugten LCA-Ausführungsbeispiel. Ein zusätzliches Cx (10 ns) kann hinzugefügt werden, wenn die Summe der Produkte mehr als ein CLB benötigt. Die Freigabeverzögerung hängt von der Freigabeverzögerung des OBUFZ, El ab, anstatt von der Ausgangsverzögerung Ol.
  • 1.2.3.5 Tristate-Ausgestaltung der zweidirektionalen Kreuzschiene
  • Es ist zu beachten, daß alle bisher beschriebenen Ausgestaltungen mit einer identischen Hardware verwendet werden können. Lediglich die Anordnung der Grundelemente und die Verbindungen variieren. Wenn der Kreuzschienen-Chip schließlich eine interne tristate Verbindung unterstützt, verdoppelt die zweidirektionale Kreuzschienen-Tristate-Ausgestaltung das tatsächliche Tristate-Netz im Inneren des Kreuzschienen-Chips, wie in Fig. 16 gezeigt.
  • Jeder jeweilige Tristate-Treiber des Logik-Chips wird auf dem Bus des Kreuzschienen-Chips wiederholt und sollte durch eine Verbindung für das Freigabesignal begleitet sein. Der Bus des Kreuzschienen-Chips wird rückwärts getrieben, wenn der Treiber wieder freigegeben ist. Wenn das ECA als Kreuzschienen-Chip verwendet wurde, würden dessen interne Tristate-Verbindungen wie oben beschrieben verwendet. Insbesondere ist dort ein IBUF/OBUFZ-Paar an der Grenze des logischen Chips, ein anderes IBUF/OBUFZ-Paar für einen logischen Chip auf der Grenze des Kreuzschienen-Chips und ein TBUF zum Antreiben der internen Tristate-Leitung jeden Logik- Chips. Jede Freigabe verläuft durch ein OBUF und ein IBUF. Die Gesamtverzögerung des freigegebenen Datenpfads ist Ol+Ix+Tx+Ox+Il oder 39 ns (XC3030-70 LCA- Kreuzschiene) und die gesamte Freigabeverzögerung beträgt Ol+Ix+TEx+Ox+Il oder 45 ns.
  • Wenn mehr als ein Bit des Busses über denselben Kreuzschienen-Chip verbunden ist, muß nur ein Satz von Freigabesignalen an den Chip angelegt werden.
  • Die Ausgestaltung erfordert, daß die Kreuzschiene ein LCA oder ein anderes ERCGA ist, das eine interne Tristate-Fähigkeit hat, und unterliegt der Verfügbarkeit seiner internen Verbindungen. Insbesondere haben die LCAs der XC2000-Serie keinen internen Tristate, die XC3000 haben dies jedoch. Die XC3030 hat 80 I/O- Anschlüsse, 100 CLBs und 20 interne, lange Leitungen, die im Tristate antreibbar sind. Ein Maximum von 20 derartiger Tristate-Netze könnten durch einen Kreuzschienen-Chip verbunden sein. Dies könnte die Verbindungsgrenze sein, dies gilt jedoch nur für einen kleinen Teil der Fälle, gegeben durch die Begrenzung der I/O-Anschlüsse. Die XC3030 ist heute zweimal so teuer wie die XC2018.
  • Wenn es die zu verwendende Tristate-Ausgestaltung erlaubt, sind die anderen Ausgestaltungen nicht ausgeschlossen und können ebenfalls verwendet werden.
  • 1.2.3.6 Zusammenfassung aller Ausgestaltungen
  • Die folgende Darstellung faßt die Ausgestaltungen zusammen: Logik Kreuzschiene zweidir. Kreuzschiene Summieren Tri-State Pins/Logik-Chip: zweidirektional nur Treiben = Treiben + Empfangen 1. Chip:0 andere: 1. nicht-sum.: andere: 1 1 Datenpfad
  • Verzögerung:
  • (unter der Annahme von LCA Kreuzschienen-Chips: + LCA Verbindung, 70 MHz LCA Chip-Geschwindigkeit) Datenpfad Freigabe
  • Resourcen pro Chip:
  • (d = Anzahl der Treiber) nur Treiben 2-in AND Sum.: d-in OR nur Empfangen zweidirekt. Kreuzschiene 2-in AND
  • Die Ausgestaltung des logischen Summierens ist eindeutig weniger effektiv. Das Kreuzschienen-Summieren ist viel schneller und verwendet weniger Anschlüsse und ist fast so einfach. Das zweidirektionale Kreuzschienen- Summieren ist noch etwas schneller und bietet die Möglichkeit einer verringerten Anschlußanzahl für zweidirektionale Busse, es ist jedoch komplexer und stellt mehr Anforderungen an die begrenzten Logik-Resourcen in den Kreuzschienen-Chips. Die Tristate-Ausbildung bietet eine ähnliche Stiftanzahl und Verzögerung, erfordert jedoch mehr teure Kreuzschienen-Chips.
  • 1.2.3.7 Vergleichen von einfachen und zweidirektionalen Kreuzschienen-Summierungs-Ausgestaltungen
  • Es ist nützlich, die Eigenschaften der am meisten effizienten Ausgestaltungen zu prüfen. Die folgende Darstellung zeigt die Anzahl der Kreuzschienen-CLBs der Kreuzschienen CLB-Verzögerungen, die auftreten, wenn die einfache und die zweidirektionale Kreuzschienen- Summierungs-Ausgestaltungen verwendet werden, um eine große Anzahl von zweidirektionalen Netzen zu verbinden, und wenn LCAs als Kreuzschienen-Chips verwendet werden. Es wird angenommen, daß XC2018-70 Kreuzschienen-Chips verwendet werden, die 72 I/O-Anschlüsse und 100 CLBs verfügbar haben. Jedes CLB unterstützt bis zu 4 Eingaben und bis zu 4 Ausgaben. Es wird angenommen, daß jeder Logik-Chip eine zweidirektionale Verbindung mit dem Netz hat, ohne Freigabeteilung, so daß jeder Testfall alle 72 I/O Anschlüsse in dem Kreuzschienen-Chip verwendet. Kreuzschiene Summieren zwei-dir Kreuzschiene Summieren zwei-direk. Netzbedienung CLBs Logik-Chips jeweils 1 Cx
  • Die Ausgestaltung des zwei-direktionalen Kreuzschienen- Aufsummierens verwendet bis zu 2,5 mal so viele CLBs, was die Möglichkeit erhöht, daß der Kreuzschienen-Chip nicht routiert oder daß die internen Verbindungsverzögerungen höher sind, obwohl es bei den 100 CLBs verbleibt. Dagegen weist die eindirektionale Konfiguration mehr Gatter auf den Logik-Chips auf, obwohl die Logik- Chips in einer besseren Position zum Betreiben zusätzlicher Gatter sind. Die zwei-direktionale Ausgestaltung hat häufiger zusätzliche Cx-Verzögerungen, was ihren Geschwindigkeitsvorteil beseitigen kann. Das bevorzugte Ausführungsbeispiel des Realizer-Systems verwendet die Kreuzschienen-Summierung für alle Tri-State-Netze.
  • 1.2.4 Verbindung auf der Systemebene
  • Die natürliche Art und Weise zum Packen eines Satzes von Logik-Chips, die durch Kreuzschienen-Chips verbunden sind, ist die Anordnung auf einer einzigen Schaltkarte. Wenn ein System zu groß ist, um auf eine einzige Karte zu passen, müssen die Karten miteinander in geeigneter Weise mit einer Systemebenen-Verbindung gekoppelt sein. Es ist wegen der sehr breiten Verteilung der Pfade unpraktisch, eine einzige Partial-Kreuzschienen- Verbindung und seine Logik-Chips über mehr als eine Schaltkarte zu verteilen. Es sei beispielsweise ein Komplex angenommen von 32 Logik-Chips mit 128 Anschlüssen und Kreuzschienen-Chips mit 64 Anschlüssen, die über zwei Karten aufzuteilen sind, mit 16 Logik-Chips und 32 Kreuzschienen-Chips auf jeder Karte. Wenn der Schnitt zwischen den Logik-Chips und den Kreuzschienen-Chips gemacht wurde, würden alle 4096 verbindungspfade zwischen den Logik-Chips und den Kreuzschienen-Chips durch ein Paar von Rückebenen- Verbindern verlaufen müssen. Wenn auf andere Weise aufgeteilt wird, etwa "durch die Mitte", wobei auf jeder Schaltkarte 16 Logik-Chips und 32 Kreuzschienen-Chips angeordnet sind, müßten alle Pfade, die die Logik-Chips auf der Karte 1 zu den Kreuzschienen-Chips auf der Karte 2 verlaufen (16 Logik-Chips * 64 Pins = 1024), und umgekehrt (weiter 1024, insgesamt 2048) kreuzen müssen.
  • Eine weitere Beschränkung besteht darin, daß eine einzige solcher Verbindungen nicht ausdehnbar ist. Ein Kreuzschienen-Chip hat per Definition Verbindungen mit allen Logik-Chips. Einmal für eine bestimmte Anzahl von Logik-Chips ausgelegt, können weitere nicht hinzugefügt werden.
  • Der größtmögliche Komplex von Logik-Chips und Kreuzschienen-Chips, die gemeinsam auf eine Schaltkarte gepackt werden können, wird als Modul behandelt verwendet, die als logische Karte bezeichnet wird, und mehrere von diesen werden durch eine Verbindung auf der Systemebene miteinander verbunden. Um Pfade für Verbindungsnetze, die sich über mehr als eine Karte erstrecken, zu schaffen, werden zusätzliche Verbindungen außerhalb der Karte zu zusätzlichen I/O-Anschlüssen für jeden Kreuzschienen-Chip auf jeder logischen Karte gemacht, unter Erstellung von I/O-Anschlüssen der logischen Karte (Fig. 17). Die I/O-Anschlüsse des Kreuzschienen-Chips, die verwendet werden, um die I/O-Pins der logischen Karte zu verbinden, sind unterschiedlich von denen, die mit den I/O-Anschlüssen der Logik-Chips der Karte verbinden.
  • 1.2.4.1 Verbindungen auf der Systemebene von Partial-Kreuzschienen
  • Ein Mittel zum Verbinden von logischen Schaltkarten ist das erneute Aufbringen der partialen Kreuzschienen-Verbindung hierarchisch, Behandeln jeder Schaltkarte, als wenn sie ein Logik-Chip wäre und Verbinden der I/O- Anschlüsse der Karten unter Verwendung eines zusätzlichen Satzes von Kreuzschienen-Chips. Diese Partial- Kreuzschienen verbinden alle Karten in einer Box. Eine dritte Verbindung wird wieder aufgebracht, um alle Boxen zu einem Rack zu verbinden, usw. Das Anwenden desselben Verbindungsverfahrens überall hat den Vorteil der Einfachheit des Konzepts und der Gleichförmigkeit mit der Verbindung auf der Kartenebene.
  • Um zwischen Kreuzschienen-Chips in einem Realizer- System zu unterscheiden, wird die Partial-Kreuzschienen-Verbindung, die Logik-Chips verbindet, als Verbindung der X-Ebene bezeichnet, und seine Kreuzschienen- Chips werden als XChips bezeichnet. Die Verbindung, die logische Karten verbindet, wird als Verbindung der Y-Ebene bezeichnet und seine Kreuzschienen-Chips werden als YChips bezeichnet. In der Verbindung der X-Ebene sind die I/O-Anschlüsse jeder logischen Karte in geeignete Untergruppen aufgeteilt, unter Verwendung derselben Aufteilung auf jeder logischen Karte. Die Anschlüsse aller YChips werden mit derselben Untergruppe von Anschlüssen von jeder der logischen Karten verbunden. Es werden so viele YChips verwendet wie Untergruppen vorhanden sind, und jeder YChip hat so viele Anschlüsse wie die Anzahl der Anschlüsse in den Untergruppen, mal der Anzahl der logischen Karten.
  • Entsprechend werden zusätzliche aus der Box führende Verbindung zu zusätzlichen I/O-Anschlüssen jedes der YChips hergestellt, unter Erstellung von I/O-Anschlüssen der Box, jeweils in geeignete Untergruppen aufgeteilt, unter Verwendung derselben Aufteilung in jeder Box (Fig. 18). Die Anschlüsse jeder der ZChips sind mit derselben Untergruppe von Anschlüssen von jeder Box verbunden. Es werden so viele ZChips verwendet, wie Untergruppen vorhanden sind, und jeder ZChip hat eine Anzahl von Anschlüssen, die der Anzahl der Anschlüsse in der Untergruppe mal der Anzahl der Boxen entspricht.
  • Dieses Verfahren der Erstellung zusätzlicher Ebenen von partialen Kreuzschienen-Verbindungen kann so häufig wie erforderlich wiederholt werden.
  • Wenn die Eingabeausgestaltung partitioniert wird, ist die begrenzte Anzahl der I/O-Anschlüsse der Karte, durch die die Netze, die auf und von der Karte verlaufen, eine Einschränkung, die beobachtet wird, gerade wie ein Logik-Chip, der eine begrenzte Anzahl von I/O- Anschlüssen hat. In einem Realizer-System mit mehreren Boxen wird die begrenzte Anzahl von I/O-Anschlüssen der Box überwacht, usw. Die optimale Anordnung der Symmetriemittel der Verbindung über den Chips, den Karten oder den Platinengehäusen ist nicht notwendig, soweit nicht besondere Einrichtungen, etwa Gerätespeicher, vorhanden sind.
  • Zwei-direktionale Netze und Busse werden implementiert unter Verwendung eines der Verfahren, daß in dem Tri- State-Abschnitt diskutiert worden ist, etwa das Verfahren der Kreuzschienen-Summierung, angewandt über jede Ebene der Verbindungs-Hierarchie, die sich über das Netz erstreckt.
  • Ein besonderes Beispiel ist das bevorzugte Ausführungsbeispiel:
  • - Die partiale Kreuzschienen-Verbindung wird hierarchisch auf drei Ebenen über das gesamte Hardware- System verwendet.
  • - Eine logische Karte besteht aus bis zu 14 Logik- Chips mit 128 miteinander jeweils verbundenen I/O- Anschlüssen und einer partialen Kreuzschiene auf der X-Ebene, bestehend aus 32 XChips. Jeder XChip hat vier Pfade zu jedem der 14 LChips (insgesamt 56) und 8 Pfade zu jedem der YChips, insgesamt 512 I/O Anschlüssen der logischen Karte pro Karte.
  • - Eine Box beinhaltet eine bis acht Karten mit 512 miteinander verbundenen I/O-Anschlüssen und eine partiale Kreuzschiene der Y-Ebene, bestehend aus 64 YChips. Jeder YChip hat acht Pfade zu einem XChip auf jeder Karte über I/O-Anschlüssen der logischen Karte und acht Pfade zu einem ZChip, insgesamt 512 I/O-Anschlüssen der Box pro Box.
  • - Ein Rack beinhaltet ein bis acht Boxen, mit jeweils 512 miteinander verbundenen I/O-Anschlüssen und eine Partial-Kreuzschiene der Z-Ebene, bestehend aus 64 ZChips.
  • Jedes ZChip hat acht Pfade zu einem YChip in jeder Box über I/O-Anschlüsse der Box.
  • 1.2.4.2 Zwei-direktionale Busverbindungen der Systemebene
  • Die Praxis der Computer-Hardware kennt ein anderes Verfahren der Verbindung von logischen Schaltkarten auf der Systemebene unter Verwendung einer Rückwandplatine zwei-direktionaler Busse. Jede Logik-Karte ist mit I/O-Anschlüssen versehen, wie oben, und jeder I/O- Anschluß der Karte ist mit entsprechenden I/O- Anschlüssen aller anderer Karten in der Box über eine Busverdrahtung verbunden (Fig. 19).
  • Einige I/O-Anschlüsse der logischen Karte werden verschwendet, das heißt sie sind zum Verbinden mit dem Auslegungsnetz nicht in der Lage, da die Verwendung einer Busleitung zum Verbinden eines Blocks des Ausgestaltungsnetzes außerhalb der Verwendung der Stifte, die mit der Leiterbahn auf allen anderen Karten, die den Bus teilen, verbunden sind. Die maximale Anzahl der Ausgestaltungsnetze, die verbunden werden können, ist der Anzahl der Busverdrahtungen gleich, was der Anzahl der I/O-Pins pro Karte entspricht. Für ein besonderes Beispiel sei angenommen, daß acht Karten einen gemeinsamen Verbindungsbus teilen, mit 512 Busleitungen, die die 512 I/O-Anschlüsse auf jeder Karte verbinden (Fig. 20).
  • Es wird angenommen, daß unterschiedliche Verteilungen von Netzen mit 2, 3, 4, 5, 6, 7 und 8 Karten vorhanden sind. Eine Analyse zeigt, daß, während die durchschnittliche Anzahl der Netze, die mit jeden der Karten verbinden, in jedem Fall 512 ist, die Karten und der Bus sollten bis zu 1.166 Anschlüsse breit sein, um einen Zugang für alle Netze zu erlauben. Dies kann teilweise bewirkt werden durch Kleinhalten der Anzahl der Karten auf einer einzigen Rückwandplatine. Die maximale Anzahl der Karten, die mit einem Satz von zweidirektionalen Bussen verbunden sind, ist jedoch begrenzt. Um größeren Systemen effizienter zu entsprechen, werden Gruppen von Bussen hierarchisch miteinander verbunden.
  • Das erste in Fig. 21 gezeigte Beispiel hat zwei Sätze von Bussen, X0 und X1, die jeweils vier Karten verbinden. Die Busse der X-Ebene werden durch einen anderen Bus, Y, miteinander verbunden. Jede Leitung in einem X-Bus kann mit seinem Gegenstück in Y durch einen rekonfigurierbaren zweidirektionalen Übertrager verbunden werden, dessen Konfiguration bestimmt, ob die X- und Y-Leitungen isoliert werden, angetrieben von X nach Y oder von Y nach X. Wenn ein Netz lediglich den linken Satz von Karten oder den rechten Satz von Karten verbindet, werden nur der eine oder der andere der Busse auf der X-Ebene verbunden. Wenn Karten auf beiden Seiten betroffen sind, wird eine Leitung sowohl auf X0 als auch auf X1 verwendet und diese Leitungen werden durch eine Leitung in Y über die Übertrager miteinander verbunden. Jede Karte sollte so viele I/O-Anschlüsse haben, die der Breite eines der Busse auf der X-Ebene entspricht.
  • Wenn die Verbindung über Y zwei-direktional ist, das heißt entweder X0 oder X1 angetrieben wird, sollte ein zusätzliches Signal von X0 zu X1 geführt werden, um die Übertragervorrichtungen dynamisch zu steuern.
  • Diese Verbindung wurde analysiert, um ihre Fähigkeit zum Verbinden von Netzen zwischen den Karten zu prüfen, wobei dieselben Annahmen bezüglich der Anzahl der Netzanschlüsse und der Anzahl der I/O-Anschlüsse gemacht worden sind, wie oben. Während das Einebenen Verfahren dieselbe Breite bei der Gesamtzahl aller Netze erfordert, verringert deren Aufbrechen zu zwei eine maximale Breite, die um 10 bis 15 % geringer ist.
  • Die Gesamtlänge der Hierarchie hat nur zwei Karten oder Gruppen von Karten pro Bus (Fig. 22).
  • Die zweidirektionalen Busverbindungen sind einfach und leicht aufzubauen, sie sind jedoch teuer, da eine große Anzahl von I/O-Anschlüssen der logischen Karten verschwendet werden durch die Verbindung mit anderen Kartennetzen. Das Einführen einer Hierarchie und kurzer Rückwandplatinen, um dies zu vermeiden, hat, wie sich gezeigt hat, nur eine geringe Wirkung. Weiter beseitigt die Einführung von zwei-direktionalen übertragern einen Vorteil bezüglich der Geschwindigkeit und des Vorteils, den eine Busverbindung einer Einebenen-Rückwandplatine gegenüber einer partialen Kreuzschiene hatte. Infolgedessen werden bei dem bevorzugten Ausführungsbeispiel partiale Kreuzschienen in der Verbindung auf der Systemebene verwendet.
  • 1.3 Elemente für Sonderzwecke
  • Elemente für Sonderzwecke sind Hardware-Elemente, die zu der Verwirklichung der Eingabeausbildung beitragen, und die an Orten von LChips auf der Logik-Karte des bevorzugten Ausführungsbeispiels installiert werden, sie sind aber nicht kombinatorische Logikgatter oder Flip- Flops, die in Logik-Chips konfiguriert sind.
  • 1.3.1 Bausteinspeicher
  • Die meisten Eingabebausteine weisen Speicher auf. Es wäre ideal, wenn logische Chips Speicher aufweisen würden. Heute verfügbare Logik-Speicher haben dies nicht. Auch wenn sie dies hätten, würde immer noch ein Bedarf an Hauptspeichern in einer Größe Megabyte bestehen, die man in einem Logik-Chip nie erwarten würde. Es sind daher Bausteinspeichergeräte in dem Realizer-System vorhanden.
  • 1.3.1.1 Architektur des Bausteinspeichers
  • Die Architektur eines Bausteinspeichermoduls ergibt sich aus den folgenden Anforderungen:
  • a) Da es ein Teil des Bausteins ist, sollte es frei mit anderen Komponenten verbindbar sein.
  • b) Es sollte eine Freiheit bezüglich der Zuweisung von Daten, der Adressierung und der Steuereingaben und der -ausgaben zum Verbinden von Pfaden erlauben, wie es ein Logik-Chip tut, um eine erfolgreiche Verbindung zu ermöglichen.
  • c) Eine Variabilität der Ausbildungen, die eine oder mehr Bausteinspeicher erlaubt, mit unterschiedlichen Fähigkeiten und Bit-Breiten und entweder gemeinsamen oder gesonderten I/O, sollten verfügbar sein.
  • d) Es sollte von dem Host-Interface zugreifbar sein, um einen Fehlersuchvorgang mit dem Baustein zu erlauben.
  • e) Es sollte statisch, nicht aber dynamisch sein, so daß der Baustein willkürlich gestoppt, gestartet oder bei jeder Taktgeschwindigkeit betrieben werden kann.
  • Die allgemeine Architektur eines Speichermoduls, das diese Erfordernisse erfüllt, ist in Fig. 23 gezeigt.
  • Um die Verbindbarkeit mit dem Baustein und die Flexibilität der gegenständlichen Zusammensetzung des Realizer-Systems zu unterstützen, ist das Speicher- Modul ausgebildet, um in einen LChip-Sockel eingesteckt zu werden, verbunden mit derselben Verbindung und anderen Anschlüssen, wie dem Logik-Chip, den es ersetzt. Es werden so viele Module wie erforderlich installiert.
  • RAM-Chips sind nicht direkt mit der Verbindung verbunden, hauptsächlich weil ihre Daten-, Adress- und Steuerfunktionen fest bestimmten Anschlüssen zugeordnet sind. Da der Erfolg der partialen Kreuzschienen- Verbindung von der Fähigkeit des logischen Chips abhängt, frei-interne Verbindungen mit I/O-Anschlüssen herzustellen, sollten Nicht-Logik-Chip-Bausteine an einem Ort eines Logik-Chips eine ähnliche Fähigkeit haben. Um dies zu erreichen, und um andere Logikfunktionen in dem Speichermodul zu erreichen, werden Logik- Chips in dem Speicher-Chip installiert, die RAM-Chips mit den XChips der Kreuzschiene verbinden.
  • Diese sind konfiguriert, um bestimmte RAM-Anschlüsse mit willkürlich gewählten Anschlüssen der XChips zu verbinden, unter Verwendung derselben L-X-Pfade, die von den Logik-Chips verwendet werden, deren Stelle das Speichermodul eingenommen hat. Mehr als ein Logik-Chip wird pro Modul verwendet, wegen der großen Anzahl von RAM-Pins und der L-X-Pfade, die zu verbinden sind.
  • Ein zusätzliche Funktion des Logik-Chips des Speichermoduls ist es, dieses konfigurierbar und durch den Host zugänglich zu machen. Die Adress-, Daten- und Steuerwege werden durch die Logik-Chips konfiguriert, um die RAM-Chips in einer Vielzahl von Kapazitäten, Bitbreiten und Strukturen der Eingabe/Ausgabe zu verbinden. Das Speichermodul kann als ein großer Speicher oder mehrere kleine konfiguriert sein. Durch Verbinden jeden dieser Logik-Chips mit dem Interface-Bus des Host-Bus und durch Konfigurieren der Bus-Interface-Logik in diesem wird die Funktionalität verwirklicht, die es dem Host- Prozessor erlaubt, wahlfrei auf die RAMs zuzugreifen, so daß ein Host-Rechnerprogramm des Verwenders, etwa ein Fehlersuchprogramm die Inhalte des Speichers prüfen und verändern kann. Beispiele dieser logischen Strukturen werden unten gezeigt.
  • Der dichteste und am billigsten verfügbare statische Speicher, der die zeitlichen Anforderungen der realisierten Ausgestaltungen erfüllt, wird für den Bauteil- Speicher gewählt. In dem bevorzugten Ausführungsbeispiel ist das Element ein 32K mal 8 bit CMOS SRAM, wie das Fujitsu MB84256. Es ist verfügbar bei Geschwindigkeiten bis herab auf 50 ns. Sehr viel schnellere Bauelemente bieten verringerte Rücksprünge, da die Verbindung des Kreuzschienen-Chips des Realizer-Chips beginnt zu überwiegen.
  • Dynamische Speicher-Elemente werden nicht verwendet, da diese regelmäßig aufgefrischt werden müssen, was in einem Realizer-System zu Problemen führen würden. Wenn der Eingabe-Baustein nach einem dynamischen Speicher verlangt, sollte es vorzugsweise eine Auffrisch-Logik beinhalten. Da verwirklichte Bausteine jedoch nicht bei 100 % der ausgelegten Geschwindigkeit arbeiten können, kann die Ausgestaltung zum Auffrischen jedoch nicht erfolgreich sein. In der Tat ist es erwünscht, den Betrieb des Bausteins bei der Fehlersuche zu stoppen. Oder aber kann das Bausteinteil eines Systems sein, das zum Auffrischen von anderen Elementen abhängt, das in dem Eingabebaustein nicht eingeschlossen ist. Schließlich wird dann, wenn der Baustein ein statischer Speicher sein muß, das Auffrischen des dynamischen Bausteinspeichers nicht praktikabel sein. Ein statisches Speichern kann in dem Baustein einen dynamischen Speicher verwirklichen, wenn die Auffrischzyklen einfach ignoriert werden. Ein Baustein-Speicher wird daher mit statischen Bausteinen implementiert.
  • 1.3.1.2 Die Verwendung von Logik-Chips zum Verbinden von RAMs mit der Kreuzschiene
  • Es wäre ideal, einen einzigen Logik-Chips zu verwenden, um RAMs mit der Kreuzschiene auf der X-Ebene zu verbinden, mit ausreichend Anschlüssen zum Verbinden aller RAM-Signalanschlüssen als auch aller LX-Verbindungswegen. Praktisch verfügbare Speichermodule für das Realizer-System benötigen viel zu viele Anschlüsse für einen einzigen Logik-Chip, um diese Anforderung zu erfüllen. Unter der Annahme, daß zwei Sätze von acht 32K mal 8 bit RAMs in einem Modul mit 128 LX-Pfaden verwendet werden. Jeder RAM-Satz hätte 15 Adressanschlüsse, 8 Schreibfreigabeanschlüsse und 64 Datenanschlüsse. Zwei Sätze und die LX-Pfade würden 302 Anschlüsse zuzüglich Anschlüsse für den Host-Interface-Bus erfordern. Dies übersteigt die Stiftanzahl verfügbarer Logik-Chips um den Faktor 2. Mehr als ein Logik-Chip muß verwendet werden. Die hier beschriebene Architektur verwendet eine Anzahl von kleinen Logik-Chips, denen besondere Funktionen gegeben worden sind, einige für die Adressierung und Steuerung, andere für die Datenwege.
  • 1.3.1.2.1 Speicheradress-Logik-Chips
  • Die Adress- und Steuerlogik-Chips sind in Fig. 23 als "MA0" und "MA1" bezeichnet. Die RAMs sind in Gruppen aufgespalten, von denen jede von einem MA-Chip gesteuert wird. Es gibt so viele MA-Chips wie die maximale Anzahl von gesonderten Ausgestaltungsspeichern, die von dem Modul zu realisieren sind. Jedes ist durch einen eigenen Satz von L-X-Wegen mit der Kreuzschiene verbunden, so viele Wege, wie erforderlich für die Gruppenadresse und die Steuerleitungen. MA0 und MA1 verwenden einen unterschiedlichen Satz von Wegen. Beispielsweise zwei MA-Chips, jeweils mit der Hälfte des RAM verbunden, erlauben die Verwirklichung zweier unterschiedlicher Speicher. Wenn ein großer Speicher zu verwirklichen ist, sind die Adress- und Steuernetze mit beiden MA-Chips verbunden, unter Verwendung beider Sätze von L-X-Wegen. Jeder MA-Chip steuert die Adresseneingänge aller RAM in dieser Gruppe, die miteinander in einem einzigen Bus verbunden sind. Jeder MA-Chip steuert individuell die Steuereingänge zu den RAM, um das Einschreiben von Daten lediglich in die adressierten RAM (s) zu erlauben. Schließlich ist jeder MA-Chip mit dem Host-Schnittstellenbus verbunden, um zugänglich zu sein, und mit einem Steuerbus, der allen logischen Chips auf diesem Speichermodul gemeinsam ist.
  • Fig. 24 zeigt in größerer Einzelheit, wie ein MA-Chip mit einer X-Ebenen-Kreuzschiene und mit den RAM-Chips verbunden ist. Der MA-Chip ist entsprechend der logischen und der Datenwege wie gezeigt ausgestaltet. Die volle Adresse erreicht das MA-Chip von der Kreuzschiene. Normalerweise (wenn die Bus-Schnittstelle inaktiv ist) wird ein Teil der Adressen-Bits, die der Anzahl der RAM-Adressen entsprechen, zu der Adresse des RAMs in der Gruppe, die durch diesen MA-Chip kontrolliert wird, weitergeführt. Die anderen Adress-Bits und die Ausgestaltungen beschreiben eine Dekoder-Logik, die den Treiber freigibt, die die Schreibfreigabe-Signale für jedes RAM steuert. Die Logik ist entsprechend der für das Ausgestaltungs-Speicher erforderlichen Ausgestaltung ausgestaltet. Wenn, beispielsweise, das Ausgestaltungs-Speicher dieselbe Bitbreite wie eines der RAM hat, verlangt die Ausgestaltung die Schreibfreigabe nur ein einziges RAM-Schreibfreigabe gefordert wird, entsprechend den Adress-Bits. Wenn das Ausgestaltungs- Speicher zweimal so breit wie ein Bit ist, werden ein Paar von RAM-Schreibfreigaben verlangt, usw.
  • Wenn das Ausgestaltungs-Speicher mit mehr als einer Schreibfreigabe vorhanden ist, wird jedes Steuern eines Untersatzes von den Speicherdatenwegbreiten verlangt, können verschiedene Ausgestaltungs-Schreibfreigabennetze verwendet werden, die jeweils entlang der oben beschriebenen Linien arbeiten, mit geeigneten Ausgestaltungen der Dekoder-Logik in den MA- und MD-Chips. Dies ist Gegenstand der Verfügbarkeit von L-X-Wegen in dem MA-Chip und den Steuerbuswegen in die MD-Chips.
  • Die Bus-Schnittstellenlogik erlaubt es dem Host, auf dieses RAM über den Host-Schnittstellenbus zuzugreifen. Wenn dieser Satz von RAMs von dem Bus adressiert wird, schaltet die Bus-Schnittstelle den Adressen-Multiplexer ("Mux") die RAMs mit seinen Adressen zu adressieren. Wenn der Host in eines der RAMs schreibt, sendet die Bus-Schnittstellenlogik ein Signal zu der Dekoder- Logik, das (die) die Adressen-Bits verwendet, die die RAMs nicht antreiben, um eine geeignete RAM- Schreibfreigabe sicherzustellen.
  • Einige Signale werden schließlich benötigt, um die Datenwege in den MD-Chips zu steuern. Da die MD-Chips nicht alle mit denselben L-X-Wegen wie das (bzw. die) MA-Chip(s) verbunden sind, ist es möglich, daß diese keinen Zugang zu den Adress- und Steuersignalen von der Ausgestaltung haben. Ein Steuerbus ist mit allen MA- und MD-Chips verbunden, um das Aussenden dieser Signal und das Aussenden von Bus-Schnittstellen-Steuersignalen zu den MD-Chips zu erlauben.
  • 1.3.1.2.2 Speicherdatenweg-Logik-Chips
  • MD-Chips handhaben die Datenwege entsprechend einer Bit-Slice-Organisation. Multi-Bit-Busdatenwege sind mit einem Realisator-System verbunden durch ein Bit-Slicing über die Kreuzschiene. Busse sind über die XChips verstreut, mit einem oder zwei Bits pro Chip. MD-Chips sind Bit-gesliced, um die Verbindung mit diesen Bussen zu erleichtern. Jedes MD-Chip ist mit demselben Chip oder denselben Bits jedes RAM in allen Gruppen und mit einem Untersatz von XChips verbunden. Das Bringen aller gleichartiger RAM-Bits gemeinsam in dem MD-Chip erlaubt einer Flexibilität in der Ausbildung der Ausgestaltungsspeicher verschiedener Bitbreiten und -größen. Ausgestaltungsspeicher werden in verschiedenen Vielfachen der RAM-Breite durch eine geeignete Ausgestaltungslogik und Datenwege in dem MD-Chip verwirklicht.
  • Wenn "n" MD-Chips und "M" XChips vorhanden sind, verbindet jeder MD-Chip mit M/n unterschiedlichen XChips. Jedes Datenbit erfordert zwei L-X-Wege, entweder einen DI- und einen DO-Weg für gesonderte I/O-Konfigurationen, oder aber den Summierungseingang und das Summierungsergebnis für gemeinsame bidirektionale I/O-Konfigurationen aufgrund der Kreuzschienen-Summierungsverbindungs-Konfiguration. Jedes MD-Chip hat wenigstens 2*M/n L-X-Pfade. Zusätzliche Pfade können darüberhinaus vorgesehen sein und können mit MAS L-X-Pfaden überlappen. Die Anzahl der MD-Chips, RAMs und RAM-Bitbreiten werden gewählt, um diesen Begrenzungen und den Kapazitätsbegrenzungen zu entsprechen, um die Anzahl der Stifte des Logik-Chips, die für den MD-Chip verwendet werden, effizient zu nutzen und um gerade auszukommen.
  • Der statische RAM-Chip vom Industrie-Standard hat eine gemeinsame I/O-Struktur mit bidirektionalen Daten-Pins (als DQ bezeichnet), die für eine Dateneingabe und eine Tri-State-Datenausgabe verwendet werden. Es hat Adresseneingangs-Pins (ADDR) und Schreibfreigabe-Pins (WE). Die Ausgabefreigabe-Pins und die Chip-Auswahl-Pins sind bei dieser Implementation ständig freigegeben, so daß die Ausgangspins durch eine Schreibfreigabe gesteuert werden. Bei einer Sperrung ist das RAM lesend, und die Adressdaten werden auf den DQ-Pins ausgegeben. Wenn die Schreibfreigabe angefordert wird, werden die Daten auf den DQ-Pins aufgenommen. An dem nachfolgenden Rand der Anforderung werden Daten in den Adressort eingeschrieben. Die Standard-Einrichtung benötigt lediglich Daten bei dem Aufbau zu dem nachlaufenden Rand der Schreibfreigabe und verlangt eine Null-Haltezeit, so daß die Schreibfreigabe-Steuerung der Datenpfade akzeptabel ist.
  • Wenn der Aufbau-Speicher ein gemeinsames I/O verlangt, das heißt ein Tri-State-Netz in dem Aufbau, das durch Verwendung einer Kreuzschienen-Summierungs-Konfiguration verwirklicht wird, sind die Antriebsstifte einzeln durch ihre Freigaben gegatet und in einem Summierungs-OR-Gatter zusammengefaßt, das die Empfangsstifte antreibt. Die RAM-DQ-Datenpins sind durch logische und Datenpfade miteinander verbunden, die in dem MD-Chips konfiguriert sind, wie in Fig. 25 gezeigt (ein Bit, das Bit "n", ist gezeigt, andere sind ähnlich).
  • Jedes MD-Chip (MD "n" ist gezeigt) ist mit einem Freigabe-Gatter versehen, das ein Summierungs-Gatter in dem XChip freigibt, gerade wie ein LChip ein Freigabe- Gatter hat, das ein Summierungs-Gatter in dem XChip hat, wenn es einen Tri-State-Treiber hat. Wenn die Ausgabe des Eingabenetzes des Aufbauspeichers freigegeben ist und das Schreiben gesperrt ist, geben die logischen Gatter des RAM an das Summierungs-Gatter aus und sperrt den Empfangstreiber. Ansonsten wird der Netzwert von dem Summierungsgatter in das RAM hineinbetrieben, was ein Einschreiben erlaubt, wenn die Schreibfreigabe angefordert wird. Es ist zu beachten, daß die Ausgestaltung der Schreibfreigabe und der Ausgangsfreigabesignale von dem MA-Chip über den Steuerbus kommen, wie oben erwähnt. Die Schnittstellenlogik ist nicht gezeigt.
  • Wenn das Aufbauspeicher separate I/O aufruft, wird es von dem gemeinsamen I/O des SRAMs extrahiert, wie in Fig. 26 gezeigt. Die Datenausgabe berücksichtigt immer den Pin-Zustand der RAM-Daten, wenn eine Ausgabefreigabe verlangt wird. Wenn eine Schreibfreigabe verlangt wird, wird eine Dateneingabe auf die DQ-Stifte des SRAMs gelegt.
  • Die obigen Figuren zeigen nur ein RAM, das mit einem Aufbaudaten-Bit verbunden ist. Oft werden verschiedene vorhanden sein, wenn die Anzahl der Orte in dem Aufbauspeicher ein Vielfaches der Größe eines einzigen RAM- Chips ist. In diesen Fällen ist MD-Chip konfiguriert wie in Fig. 27 gezeigt.
  • Ein DQ-Pin von jedem der verschiedenen RAMs ist mit dem MD-Chip verbunden. Bits mit einer niedrigen Adresse und dem Aufbau und dem Bus-Schnittstellen-Steuersignal werden zu den MD-Chips über den Steuerbus von dem MA-Chip übertragen. Bei dem Auslesen wählen die geringwertigen Bits der Adresse einen der DQ-Ausgänge des RAMs über den Multiplexer. Der gewählte Ausgang wird von der Aufbauausgabe-Freigabe gegatet, um die Datenausgabe des Aufbauspeichers zu bilden, wie in dem obengenannten Fall. Wenn der Aufbau sein Schreibfreigabe verlangt, wird die Dateneingabe auf einen der DQ-Eingabe durch Freigeben eines Treibers aufgebracht. Die Dekodier- Logik, die von den geringwertigen Adress-Bits und dem Aufbauschreibfreigabe-Signal betrieben wird, wählt den geeigneten Treiber zum Treiben. Es ist darauf hinzuweisen, daß die Schreibfreigabe des RAM-Chips von dem MA- Chip betrieben wird.
  • Fig. 27 zeigt eine separate I/O-Konfiguration. Eine gemeinsame I/O-Konfiguration würde ähnlich sein, wobei die Daten durch das Kreuzschienen-Summierungs-Gatter eingetrieben werden und die Datenausgabe durch Ausbildung der Ausgabefreigabe und der Schreibfreigabe gegatet wird und durch das Treiben einer Summierungs- Gatter-Eingabe, wie in Fig. 25.
  • Wenn die Host-Schnittstelle auf diesen Speicher über den Host-Schnittstellen-Bus zurückgreift, erzeugt die Logik, die in dem MA-Chip konfiguriert ist, Steuersignale für den Buszugriff, die sodann von der MA über den Steuerbus ausgeführt werden. Wenn der Bus liest, treibt die Buslese-Freigabe die Daten, die von dem durch den Multiplexer adressierten RAM ausgewählt sind, auf dem Busdaten-Bit der Host-Schnittstelle, die diesem MD-Chip entspricht. Wenn der Bus schreibt, werden Daten von dem Busdaten-Bit auf die Treiber durch einen anderen Multiplexer umgeschaltet. Er wird auf dem DQ-Pin des RAM betrieben, der durch denselben Prozeß wie das normale Schreiben ausgewählt wird.
  • Es ist zu beachten, daß diese Diskussion MD-Chip- Ausbildungen gezeigt hat, mit einem einzigen Daten-Bit aus einer einzigen Datenpfadbreite eines Ausgestaltungsspeichers. Bei Aufruf durch die Ausgestaltungsspeicher-Ausbildung und die Anzahl der MD- und RAM- Chips in dem Modul kann mehr als ein Daten-Bit in jedem MD-Chip auftreten, einfach durch Vervielfachen der Datenpfade wie geeignet. Zusätzlich kann mehr als ein Ausbildungsspeicher implementiert sein und Verwendung eines gemeinsamen Satzes von MD-Chips durch Vervielfachen der obigen Datenpfade und der Kontrolleitungen zur Implementierung mehrerer Speicher.
  • Da einige LX-Pfade in dem Speichermodul lediglich mit MA-Chips verbunden sind und einige lediglich mit MD- Chips verbunden sind, ist der Verbindungsprozeß der Ausbildungswandlung aufgebaut, um lediglich Netze miteinander zu verbinden, die mit Ausbildungsspeichern verbunden sind, die geeignete L-X-Pfade verwenden.
  • 1.3.1.3 Auslegungskonversion für Auslegungsspeicher
  • Auslegungsspeicher sind in der Eingangsausgestaltung durch Verwendung eines Ausgestaltungsspeicher-RAMs entsprechend einer der verfügbaren Konfigurationen in dem ursprünglichen Ausgestaltung-File angegeben. Das Verfahren zum Konversieren der Ausgestaltung basiert auf einem Satz von vordefinierten Partial-Netzlisten-Files, eine für jeden der Logik-Chips der Speichermodule mit Anweisungen für die gesamte Logik und die zu konfigurierenden Datenwege für die angegebene besondere Speicherkonfiguration, wie oben gezeigt.
  • Die vordefinierten Files sind vollständig, mit Ausnahme der Angaben der I/O-Stiftnummer für die Modul-I/O- Stifte, die verwendet werden, um die Ausgestaltungsspeicheradresse, die Daten- und Steuerverbindungen mit der Verbindung zu verbinden. Die Methode ist wie folgt:
  • Normale Verfahren werden für die Ausgestaltungkonversion verwendet, wie in den Ausgestaltungskonversionsabschnitten beschrieben, mit besonderen Ausnahmen für den Ausgestaltungsspeicher wie folgt:
  • - Der Ausgestaltungsleser liest den Speichergrund für den bestimmten Vektorspeicher in seine Ausgestaltungsdatenstruktur. Die Daten, die angeben, welche Konfiguration zu verwenden ist, werden in der Datenstrukturaufzeichnung für den Speicher gelesen.
  • - Die Konversionsstufe prüft, um zu sehen, daß die Konfiguration verfügbar ist und daß die Stifte der Konfiguration richtig entsprechen.
  • - Der Partitionierer wird von dem Verwender darüber informiert, welche LChip-Positionen auf welchen Karten Speichermodule installiert haben. Basierend auf diesen Daten, wählt es ein Speichermodul für den Speicher entsprechend seinem normalen Partitionierungsalgorithmus. Alternativ kann der Verwender den Speicher zu einem bestimmten Modul zuordnen durch Bestimmen, daß Daten mit dem Grund in dem Ursprungsort-Ausgestaltungsfile, der in der Grundaufzeichnung des Speichers von dem Ausgestaltungsleser eingeschlossen ist.
  • - Der Interkonnektor ordnet sodann die Netze und Stifte, die mit dem Speicher verbunden sind zu bestimmten L-X-Verbindungspfaden. Es tut dies aufgrund der Beschränkungen, daß Adressen- und Kontrollnetze nur bestimmten Wegen zugeordnet werden können, die das MA-Chip verbinden, und Datennetze nur zu Pfaden zugeordnet werden können, die das MD-Chip verbinden. Diese Beschränkungen werden während der Verbindung angebracht, wenn die Fähigkeit jedes Satzes von Kreuzschienen-Chips bestimmt wird, das Netz zu verbinden, unter Zurückweisung solcher Sätze und Nichtzählen oder -verwenden solcher Pfade, die nicht mit dem verlangten MA- oder MD-Chip verbinden.
  • - Wenn die Netzlisten-Files für jedes logische Chip in dem Realisator-System ausgeschrieben werden, wird jede Netzverbindung des Ausgestaltungsspeichers aufgelistet:
  • 1) Bestimmen, welches MA oder MD mit dem für den Grund durch das Verbindungsverfahren gewählt wird.
  • 2) Herleiten der Stiftnummer des logischen Chips I/O aus der Pfadnummer und der MA/MD-Chipnummer unter Verwendung eines Verfahrens, das demjenigen ähnlich ist, das für das Herleiten der I/O-Pin- Nummer des logischen Chips beschrieben worden ist.
  • 3) Auswählen einer vorgegebenen Adresse von Daten oder einer Steuerverbindung aus einem aus diesem MA/MD-Chip, das bisher anderen Netzen nicht zugeordnet worden ist.
  • 4) Anhängen einer Anweisung an ein Netzlisten-File für dieses logische Chip, spezifizieren, daß die I/O-Stiftnummer des logischen Chips für eine Verbindung mit der vorbestimmten Ausgestaltungs-speicher-Verbindung verwendet wird.
  • - Die Netzlisten-Files werden in Konfigurations-Bit- Muster von dem Netzlisten-Konversionswerkzeug verarbeitet und in dem logischen Chip gerade wie die Netzlisten-Files für LChips und XChips geladen.
  • 1.3.1.4 Eine bestimmte Ausgestaltung des Speichermoduls
  • Fig. 28 zeigt die Ausgestaltung eines Speichermoduls, wie es bei einem bevorzugten Ausführungsbeispiel verwendet wird. Es ist zu beachten, daß es entsprechend der oben beschriebenen und in Fig. 23 beschriebenen Organisation aufgebaut ist. Es ist dazu ausgestaltet, in einen LChip-Sockel anstelle eines XC3090 LCA-Logik- Chips eingesteckt zu werden. Es sind jedoch 128 L-X- Pfade, 4 Pfade zu jeweils 32 XChips vorgesehen.
  • 32K mal 8 Bit statische RAM-Chips mit gemeinsamem I/O werden in zwei Gruppen von jeweils 8 RAMs verwendet. Jede Gruppe hat ihr eigenes MA-Chip, ein XC2018 LCA. Jedes MA-Chip steuert seinen RAM mit 15 Adressenpfaden und 8 Schreibfreigaben. Es ist über den Steuerbus gemeinsam mit allen MA- und MD-Chips in dem Modul und mit dem Host-Schnittstellenbus verbunden. Die verbleibenden Stifte verbinden mit der Kreuzschiene. 28 L-X-Pfade, jeweils zu einem anderen XChip sind vorgesehen. Das MA-Chip 0 verwendet einen Satz von Pfaden, Pfad 0, und MAL verwendet den Pfad 1, was separate Adressen und Steuernetze für zwei unabhängige Ausgestaltungs-RAM erlaubt. Weniger als volle 32 L-X-Pfade sind lediglich wegen der Pin-Begrenzungen in dem XC2018 verbunden. Während der Wandlung der Ausgestaltung werden Pfadelemente in der L-X-Pfadtabelle des Verbinders entsprechend den fehlenden L-X-Pfaden in diesem Modul als unerreichbar markiert, so daß Netze nicht durch diese verbunden werden.
  • Acht MD-Chips, alle XC2018 LCAs werden verwendet. Da 32 XChips vorhanden sind, verbindet jedes MD-Chip mit 32/8 = 4 unterschiedlichen XChips (entsprechend dem oben beschriebenen Verfahrens). Jedes Chip hat 2*M/n = 8 Pfade, die für Ausgestaltungsspeicher-Datenbits verwendet werden, zwei zu jedem XChip. Zusätzlich sind zwei Pfade zu dem XChip vorgesehen, um zu erlauben, daß das Modul als ein Vektorspeicher mit 128 Bit verwendet wird, wie oben diskutiert.
  • Der Host-Schnittstellenbus, der bei dem bevorzugten Ausführungsbeispiel implementiert wird, wird als R-Bus, der alle LChip-Position über zusätzliche Stifte verbindet und der in dem Host-Schnittstellenabschnitt beschrieben wird.
  • Fünf unterschiedliche Ausgestaltungsspeicher-Konfigurationen sind in diesem Modul verfügbar. In der folgenden Darstellung und in Fig. 28 bedeutet "Pfad 0" ein Satz von L-X-Pfaden, einer von jedem XChip, "Pfad 1" bedeutet einen anderen Satz usw.
  • *1 Seicher, 512K mal 8:
  • 19 Adressen und 2 Steuerungen (WE, OE) über L-X-Pfade 0 & 1 (dupliziert, um sowohl MA0 und MA1 zu erreichen), 16 Daten "DI/DO oder Treiber/Empfänger) über L-X-Pfade 2 & 3.
  • Jedes MD-Chip hat einen Daten-Bit, verbunden mit 16 RAMs.
  • *1 Speicher, 256K mal 16:
  • 18 Adressen und 2 Steuerungen über L-X-Pfade 0 & 1, 32 Daten über L-X-Pfade 2 & 3.
  • Jedes MD-Chip hat zwei Daten-Bits, jeweils verbunden mit 8 RAMs.
  • *1 Speicher, 128K mal 32:
  • 17 Adressen und 2 Steuerungen über L-X-Pfade 0 & 1, 64 Daten über L-X-Pfade 2 & 3.
  • Jedes MD-Chip hat vier Daten-Bits, jeweils verbunden mit 4 RAMs.
  • *2 Speicher, 256K mal 8:
  • 18 Adressen und 2 Steuerungen über L-X Pfad 0 für einen Speicher (MA0) und Pfad 1 für den anderen (MA1), jeder hat 16 Daten über Pfade 2 & 3.
  • Jedes MD-Chip hat einen Daten-Bit, verbunden mit 8 RAMs für jeden Speicher.
  • *2 Speicher, 128K mal 16:
  • jeder hat 17 Adressen und 2 Steuerungen über L-X Pfad für einen Speicher und Pfad 1 für den anderen, jeder hat 32 Daten über Pfade 2 & 3.
  • Jedes MD-Chip hat zwei Daten-Bits, verbunden mit 4 RAMs für jeden Speicher.
  • Der Steuerbus besteht aus 12 Pfaden, die mit allen MA- und MD-Chips gemeinsam verbunden sind. 12 Pfade sind erforderlich, um die maximale Steuerkonfiguration zu unterstützen, was 3 Adressen-Bits, Ausgestaltungs-Schreibfreigabe- und Ausgestaltungs-Ausgabefreigabe- Signale für jeden der beiden 256K mal 8 Bit Ausgestaltungsspeicher, zuzüglich der Bus-Schreibfreigabe und der Bus-Lesefreigabe ist.
  • 1.3.2 Stimulus und Antwort
  • Viele Verwendungen des Realizer-Systems hängen von dem Host-Computer ab, der Stimulus-Signale aussendet und Antwortsignale von der Ausgestaltung empfängt. Wenn dies in einer Batch-Form geschieht, das heißt das Senden und Aufnehmen eines großen Umfangs von Signalen gleichzeitig passiert, werden Vektorspeicher verwendet. Wenn ein Signal zu einem Zeitpunkt getan wird, werden Stimulatoren und Abtaster verwendet.
  • 1.3.2.1 Vektorspeicher zum Bilden des Stimulus
  • Es ist manchesmal erforderlich, einen kontinuierlichen und wiederholbaren Strom von Reizen auf einen Satz von Netzen in der verwirklichten Ausgestaltung für eine sich mit hoher Geschwindigkeit wiederholende Aufbringung von Testvektoren zu schaffen, etwa bei einer Simulationsanwendung. Dies geschieht durch ein Einbringen eines Speichers in Netze in der realisierten Ausgestaltung, Schreiben der Stimulusvektoren in den Speicher aus dem Host-Computer und abschließendes sequentielles Lesen des Speichers, einmal durch diesen oder mehrfach, zur Ausgabe eines Reizes auf die Ausgestaltung. Da eine kontinuierliche, lineare Reihe von Speicherorten zu lesen ist, wird der Adressenstrom von einem Binär- Zähler gebildet. Fig. 29 zeigt ein Mittel zum Darstellen eines solchen Stimulus-Vektorspeichers.
  • Ein regelmäßiges Taktsignal, ECLK, steuert den Vorgang. ECLK arbeitet in einem Zyklus, das heißt in einem hohen und sodann in einem tiefen Zustand, einmal für jeden Stimulus-Vektor. Ein Binär-Zähler schafft die Abfolge von Adressen. Wenn ECLK hoch ist, zählt der Zähler bis zu der Adresse des nächsten Stimulus-Vektors hoch, der von dem RAM während des ECLK-Zyklus ausgelesen wird. Wenn ECLK sodann hochgesetzt wird, wird der Stimulus- Vektor, der gerade gelesen worden ist, in ein D-Flip- Flop getaktet. Der Ausgang des Flip-Flops treibt das zu stimulierende Netz mit dem Stimulus-Vektor-Wert an. Der Flip-Flop schafft einen sauberen Übergang zwischen Vektoren, der erforderlich ist, da die RAM-Ausgabe während seines Lesezyklus fluktuieren kann, bevor es sich auf den richtigen Wert stabilisiert. Dieser Vorgang wird wiederholt, um die Reihe von Stimulus-Vektoren der verwirklichten Ausgestaltung zu präsentieren.
  • Dieser Aufbau wird wiederholt, um einen Stimulus für viele Netze zu bilden. Die Schnittstelle zu dem Host- Computer, der verwendet wird, um die Stimulus-Vektoren in das bzw. die RAM einzuschreiben, ist zur Verdeutlichung nicht gezeigt, er wird jedoch in den unten erläuterten Figuren eingehender beschrieben.
  • 1.3.2.2 Vektorspeicher zum Aufnehmen der Antwort
  • Entsprechend ist es eine Betriebsweise des Aufnehmens der Antwort von der realisierten Ausgestaltung, einen kontinuierlichen Strom von Abtastungen oder Vektoren von einem Satz von Netzen aufzunehmen, wie dies ein logischer Analysator von tatsächlichen Hardware-Geräten tut. Dies wird durch ein Verknüpfen eines Speichers mit Netzen in der realisierten Ausgestaltung, sequentielles Schreiben von Vektoren von den Netzen in den Speicher getan, wenn die realisierte Ausgestaltung betrieben wird, und schließliches Lesen der gesammelten Antwortvektoren zurück in den Host-Computer zur Analyse. Da eine kontinuierliche, lineare Reihe von Speicherorten zu lesen ist, wird der Adress-Strom von einem Binär- Zähler gebildet, wie oben. Fig. 30 zeigt ein Mittel zum Bewirken eines solchen Antwort-Vektor-Speichers.
  • Wie bei dem Stimulus-Mechanismus steuert ein Taktsignal ECLK den Prozeß. ECLK wird einmal für jeden Antwortsektor zyklisch betrieben. Der Binärzähler schafft eine Abfolge von Adressen. Wenn das ECLK in einem hohen Zustand ist, zählt der Zähler auf zu der Adresse des nächsten Vektors. Wenn ECLK in einem tiefen Zustand ist, wird der Antwort-Vektorwert auf den RAM-DQ- Datenpin von dem Tri-State-Treiber aufgelegt, und das RAM ist zum Schreiben freigegeben. Wenn ECLK wieder in einen hohen Zustand gebracht wird, wird der Wert in den RAM-Ort eingeschrieben, die RAM-Schreibfreigabe und die Tri-State-Treiberfreigabe sind gesperrt, und der Zähler schreitet zu der Adresse für den nächsten Vektor fort. Dieser Vorgang wiederholt, um die Reihe von Antwort- Vektoren von der verwirklichten Ausgestaltung zu wiederholen.
  • Dieser Aufbau wird wiederholt, um den Stimulus auf viele Netze aufzubringen. Die Schnittstelle zu dem Host- Computer, der verwendet wird, um die Stimulus-Vektoren in das bzw. RAM einzuschreiben, ist zur Vereinfachung nicht gezeigt, er ist jedoch in seinen Einzelheiten in den unten diskutierten Figuren gezeigt.
  • Typischerweise wird die realisierte Ausgestaltung auch stimuliert, um diese Antworten zu erzeugen. Wenn der Stimulus von einem Stimulus-Vektorspeicher kommt, werden die beiden Vektorspeicher dasselbe ECLK-Signal verwenden. Das ECLK-Signal sollte für einen ausreichend langen Zeitraum hoch sein, damit die neue Adresse von dem Zähler erreicht wird, der Adresse des RAM und für die Daten, die zu lesen und aufzustellen sind auf den Eingängen des Stimulus-D-Flip-Flop. Es sollte sodann für eine ausreichend lange Zeit lang sein, damit der Stimulus die realisierte Ausgestaltung beeinflußt und für alle Antworten des Effekts zu stabilisieren und für solche Anworten, die in das RAM einzuschreiben sind. Wenn der Stimulus von irgendwo herkommt, sollte das ECLK-Signal des Antwort-Vektorspeichers mit der realisierten Ausgestaltung synchronisiert sein, um so die Antwortnetze richtig abzutasten.
  • 1.3.2.3 Vektorspeicher für Stimulus und Antwort
  • Es ist möglich, die Merkmale der Stimulus- und Antwort-Vektorspeicher zu kombinieren, wie sie oben in einem Stimulus- und Antwort-Vektorspeichersystem definiert sind, wie in Fig. 31 gezeigt. RAM-Bits können frei entweder zu dem Stimulus oder zu der Antwort zugeordnet sein, auch wenn sie auf derselben RAM-Einheit sind, da die Stimulus-Lesefunktion auftritt, wenn ECLK hoch ist und die Antwort-Schreibfunktion folgt, wenn ECLK tief ist. Durch ein Verbinden sowohl des Tri- State-Antworttreibers mit demselben RAM-DQ-Datenpin wie dem Eingang des Stimulus-D-Flip-Flops, kann ein Bit verwendet werden, sowohl für den Stimulus als auch für die Antwort. Ein wichtiger Unterschied zwischen dem einfachen Stimulus-Vektorspeicher und dem kombinierten Stimulus-Antwort-Vektorspeicher besteht darin, daß die Stimulus-Vektoren nur einmal von dem RAM ausgelesen werden können, da jeder Speicherplatz während der tiefen Hälfte des ECLK-Zyklus beschrieben wird, auch wenn das RAM-Bit lediglich für den Stimulus verwendet wird.
  • Dies kann nur dann vermieden werden, wenn alle Bits des RAM-Chips für den Stimulus verwendet werden und die Schreibfreigabe nicht von dem ECLK angefordert wird.
  • Die vorangehenden Figuren zeigen die Verwirklichung von Vektorspeichern in allgemeiner Weise. Zusätzlich zeigen die gepunkteten Linien, wie die logischen Funktionen des Vektorspeichers realisiert werden können durch eine Konfigurierung von Logik-Chip ("MA-Chip" und "MD'n'"), die geeignet mit RAM-Chips und der Realisator-Verbindung (XChips) verbunden sind.
  • Vektorspeicher und die Wandlung des Stimulus von der Software in die elektrische Form und zurück ist in dem US-Patent 4 744 084 beschreiben, auf deren Offenbarungsgehalt hier Bezug genommen wird.
  • 1.3.2.4 Vektorspeicher für Fehlersimulation
  • Das Realizer-System zur Fehlersimulation wird in dem Abschnitt zu diesem Thema diskutiert. Bei der Fehlersimulation wird die Antwort nicht in Vektorspeichern gesammelt, sondern wird stattdessen mit vorgegebenen guten Schaltungen in Antwort auf den auf den Fehler antwortenden Vektorspeicher verglichen. Es ist dasselbe wie ein einfacher Stimulus-Vektorspeicher, wie oben gezeigt, mit den folgenden Zusätzen: anstatt des Antreibers des Netzes mit dem Flip-Flop Ausgang des MD-Chips wird der Ausgang mit dem Wert des Netzes durch ein XOR-Gatter verglichen. Das XOR-Gatter ist mit einem Setz-Flip-Flop verbunden, der von einem ECLK derart getaktet wird, daß wenn dieses immer hoch geht, einen Unterschied zwischen dem Netz und dem Speicher angibt, daß das Flip-Flop gesetzt ist. Das Setz-Flip-Flop ist von dem Host über die Host-Schnittstelle lesbar, um zu prüfen, ob eine Differenz erkannt worden ist.
  • 1.3.2.5 Verbindung des Vektorspeichers mit der realisierten Ausgestaltung
  • Viele Wege der Verbindung des Vektorspeichers mit der verwirklichten Ausgestaltung sind möglich. Realizer- Systeme können mit Vektorspeichern aufgebaut sein, die mit einem oder mehreren logischen Chips verbunden sind und/oder mit einem oder allen der Verbindungspfade verbunden sind. Vektorspeicher können, beispielsweise, auf der logischen Schaltkarte gemeinsam mit LChips und XChips installiert sein und mit den X-Y-Pfaden, die von der Karte weggehen, verbunden sein. Eine andere Möglichkeit ist die Installation von Vektorspeichern auf der YChip-Karte der Kreuzschiene auf dem Y-Level, verbunden mit dem X-Y-Pfad und dem Y-Z-Pfad.
  • Ein anderes Verfahren ist das Installieren des Vektorspeichers an einem Ort eines LChips anstelle eines logischen Chips, verbunden mit den L-X-Pfaden, die den Ort des LChips bedienen. In diesem Fall sind diese L-X-Pfade lediglich zwischen dem Vektorspeicher und dem XChips verbunden. Verbindungen zu Netzen in der verwirlichten Ausgestaltung werden durch Konfigurieren des XChips erstellt, um den Vektorspeicher mit den Netzen zu verbinden, wenn diese durch die Verbindung auf dem X-Level laufen. Das Ersetzen von logischen Chips durch Vektorspeicher-Module kann in einer modularen Weise erfolgen, was es erlaubt, daß die zu konfigurierende Realizer-Hardware so viele oder so wenig Vektorspeicher hat wie erforderlich. Da die Speichermodule der Realizer-Ausgestaltung auch anstelle eines oder mehrerer Logik-Chips an den Orten der LChips installiert sind erlaubt die Verwendung dieser Technik die Verwendung eines gemeinsamen Hardware-Speichermoduls als Aufbauspeicher-Modul oder als Vektorspeicher-Modul. Die Wahl der Funktionen hängt von der Konfiguration der logischen Chips in dem Speichermodul und der geeigneten Verbindungen des Realizer-Systems ab. Dies ist die Vektorspeicher-Architektur, die bei dem bevorzugten Ausführungsbeispiel verwendet wird.
  • 1.3.2.6 Eine besondere Ausgestaltung des Vevktorspeichers
  • Bei dem bevorzugten Ausführungsbeispiel wird ein gemeinsames Speichermodul sowohl für Ausgestaltungsspeicher als auch für Vektorspeicher-Anwendungen verwendet. Denn allgemeine Architektur und Ausgestaltung werden in dem Abschnitt, der die Ausgestaltung des Speichers betrifft, beschrieben und werden hier nicht diskutiert. Die Einzelheiten, wie das Modul für eine Verwendung als Vektorspeicher konfiguriert wird, folgen.
  • Die folgenden beiden Figuren zeigen die Art und Weise, in der die Logik in den MA- und MD-Chips konfiguriert werden für einen kombinierten Stimulus-Antwort-Vektorspeicher mit einem vollen Lese-/Schreib-Zugriff von der Host-Schnittstelle. Wenn die Host-Schnittstelle inaktiv ist, ist der Gesamtvorgang entsprechend derselben Technik, die in dem obigen vereinfachten Beispiel gezeigt ist.
  • In Fig. 32 wird das ECLK-Signal, das von dem Host über die Host-Schnittstelle erzeugt wird, mit dem bzw. den MA-Chip(s) über die Verbindung verbunden. Es taktet den Adresszähler, der in jedem MA-Chip konfiguriert ist. Da in einem Modul mehr als ein MA-Chip ist, die jeweils einen Untersatz des RAM steuern, hat jedes MA-Chip seine eigene Kopie des Adresszählers des Vektorspeichers. Da alle Zähler dieselben Steuersignale (ECLK und ein Rückführsignal von der Bus-Schnittstelle) erhalten, wird jedes immer dieselbe Adresse wie die anderen ausgeben. Normalerweise (wenn die Bus-Schnittstelle inaktiv ist) wird die Adresse von dem Zähler hinaus zum Adressieren der RAM geführt. Wenn ECLK tief ist (Schreib-Antwort-Phase), fordert die Decoder-Logik alle RAM-Schreibfreigaben an wie in dem vorangehenden Beispiel. ECLK wird weiter auf den Steuerbus gelegt, um die Logik auf den MD-Chips zu treiben.
  • Die MD-Logik behandelt die Werte des Stimulus- und Antwort-Vektors selbst (Fig. 33). Normalerweise (wenn die Bus-Schnittstelle inaktiv ist) werden die RAM dann, wenn ECLK hoch ist, die Stimulus-Vektorwerte auslesen und wenn ECLK abfällt, werden in sie in Flip-Flops eingetaktet, einen für jedes zu stimulierende Netz (eins ist gezeigt) wie oben. Der Stimulus wird sodann auf die Netze über die Verbindungs-XChips aufgebracht. Wenn ECLK tief ist, werden alle Tri-State-Freigaben (e0, e1, en) angefordert, um die Antwortwerte, die von den Netzen über die Verbindung (zwei sind gezeigt) ankommen, auf die RAM-DQ-Datenpins über die Multiplexer aufgebracht.
  • Wenn der Host-Computer über den Host-Schnittstellenbus (in dem bevorzugten Ausführungsbeispiel, insbesondere dem R-Bus) auf den Speicher zugreift, wird die Schnittstellen-Logik, die in jedem MA-Chip konfiguriert wird, aktiv. Es schaltet den Adress-Multiplexer (mux) derart, daß der Bus die RAM adressiert. Wenn der Bus- Zyklus die RAM beschreiben soll, verwendet die Dekoder-Logik die Adress-Bits zum Dekodieren, welches RAM zu beschreiben ist, und fordert das entsprechende Schreibfreigabe-Signal an. Die Adress-Bits, die erforderlich sind, um die RAM auszuwählen und die Lese- und Schreibe-Steuersignale, werden ebenfalls zu den MD- Chips über die Bus-Steuerung geführt. Auf den MD-Chips sperrt die Dekodier-Logik alle Tri-State RAM-DQ- Stifttreiber, wenn der Bus einen Lesezyklus ausführt, die Adress-Bits werden verwendet, um den adressierten RAM-DQ-Datenausgang über das Lesen des Multiplexers zu selektieren, und das Buslese-Freigabesignal treibt den Datenwert auf der Host-Schnittstellen-Busdatenleitung für dieses Bit. Bei einem Bus-Schreibzyklus verwendet die Dekodierlogik die Schaltmultiplexer, um den Datenwert auszuwerten, der von der Host-Schnittstellen- Busdatenzeile ankommt, statt daß das Netz eine Antwort gibt, und gibt den Tri-State RAM-DQ-Treiber für das adressierte RAM frei unter Auflegen der Daten auf den RAM-Eingang.
  • 1.3.2.7 Ausgestaltungskonversion und Spezifikation der Vektorspeicher
  • Um anzugeben, daß ein Netz mit einem Vektorspeicher zu verbinden ist, markiert der Verwender das Netz mit einer speziellen Eigenschaft in der Eingabe-Ausgestaltung unter Angabe eines besonderen Vektorspeichers und ob die Verbindung für einen Stimulus oder für eine Antwort ist. Das Verfahren zur Konversion der Ausgestaltung basiert auf einem Satz von vordefinierten Partial-Netzlisten-Files, eine für jedes der logischen Chips des Moduls, mit Anweisungen für die Verbindungen für den Vektorspeicher-Stimulus und die Vektorspeicher-Antwort, die Vektorspeicher-Datenpfade und die Steuerlogik und die Bus-Schnittstellen-Logik, wie oben gezeigt. Die Methode geht davon aus, daß das ERCGA- Netzlisten-Konversionswerkzeug nicht die Logik und die Verbindungen für die Grundfunktionen und das Netz in der Netzliste konfiguriert, die nicht nützlich verbunden sind, wie etwa Eingänge, die mit keinem der Ausgänge oder I/O-Pins verbunden sind und die Ausgänge nicht mit einem der Eingänge oder I/O-Pins verbunden sind. Es ist eine Logik für eine Stimulus-Verbindung und eine Antwort-Verbindung in jedem Vektorspeicher-Bit vorgesehen. Lediglich das eine, für das die Verbindung zu der Netzliste ausgegeben wird, wird tatsächlich konfiguriert werden, das andere wird es nicht, da es nicht in der Netzliste nützlich verbunden ist.
  • Die vordefinierten Files sind komplett, mit Ausnahme der Spezifikationen der I/O-Stiftnummer für die Modul- I/O-Stifte, die verwendet werden, um die Vektorspeicher-Stimulus-Verbindungen und die Vektorspeicher-Antwort-Verbindungen mit dem Verbindungssystem zu verbinden. Die Anzahl der Stimulus-Verbindungen und der Antwort-Verbindungen in jedem File wird dadurch bestimmt, wie viele I/O-Stifte in dem Logik-Chip des Files verfügbar sind und dadurch, wieviel Logik man in jedem und durch das Modul als Ganzes aufnehmen kann. Das Verfahren ist wie folgt:
  • Normale Verfahren werden für die Ausgestaltungskonversion verwendet, wie dies in den die Ausgestaltungskonversion betreffenden Abschnitten beschrieben worden ist, mit besonderen Ausnahmen für den Vektorspeicher wie folgt:
  • - Der Ausgestaltungsleser liest die Eigenschaftsinformation von dem Eingangsausgestaltungs-File, das die Netze identifiziert, die für die Vektorspeicherverbindungen markiert sind, und gibt eine oder mehrere Vektorspeicher-Grundfunktionen, die mit den Netzen, nicht aber mit der Schnittstellenlogik verbunden sind, in ihrer Ausgestaltungsdatenstruktur aus. Es erzeugt weiter das ECLK-Netz, verbunden mit dem Host-Schnittstellen-Taktgenerator und mit allen Vektorspeicher-Grundfunktionen.
  • - Der Partitionierer wird von dem Verwender darüber informiert, welche Positionen des LChip auf welcher Karte Speichermodule installiert haben. Basierend auf diesen Daten teilt dieser die Vektorspeicher- Grundfunktionen in den Speichermodulen in der normalen Weise auf.
  • - Der Verbinder behandelt die Vektorspeicher- Grundfunktionen identisch zu anderen Grundfunktionen der logischen Chips, unter Bestimmen der L-X- Pfade, die diese mit den anderen Grundfunktionen auf ihren Netzen verbinden.
  • - Wenn die Netzlisten-Files für jeden Logik-Chip in dem Realizer-System ausgeschrieben werden, wird jede Verbindung des Vektorspeichers netzgelistet durch:
  • 1) Bestimmen, welcher logische Chip mit dem für die Grundfunktionen von dem Verbindungsvorgang ausgewählt ist.
  • 2) Herleiten der I/O-Pinnummer des logischen Chips aus der Pfadzahl und der logischen Chipnummer, die einen Vorgang verwendet ähnlich zu demjenigen, der geschrieben worden ist für eine Leitung der normalen I/O- Pinnummern des logischen Chips.
  • 3) Wählen eines vorgewählten Stimulus oder einer Antwort-Vektorspeicher-Verbindung für die einen dieser Logik-Chips, die bisher nicht anderen Netzen zugewiesen worden sind.
  • 4) Anhängen einer Anweisung an den Netzlisten- File für diesen Logik-Chip, Angeben, daß die I/O-Pinnummer dieses Logik-Chips zum Verbinden mit der vorgegebenen Vektorspeicher- Verbindung zu verwenden ist.
  • - Das Ausbildungskonversionssystem erzeugt weiter ein entsprechendes Tabellen-File, das sich auf die Netznamen mit Vektorspeichern und die Bit-Positionen des Vektorspeichers zur Verwendung während des Betriebs bezieht.
  • - Das Konversionswerkzeug der ERCGA-Netzliste konfiguriert lediglich die Logik und die Verbindungen der Stimulus-Eingaben und der Antwort-Eingaben des Vektorspeichers, die verwendet werden.
  • 1.3.2.8 Stimulatoren
  • Ein Stimulator ist ein einziges Bit der Speicherung, das von dem Host-Computer gesteuert wird und ein Netz in der Ausgestaltung treibt. Es wird von dem Host verwendet, um Eingangssignale an die Ausgestaltung zu geben.
  • Es gibt zwei Typen von Stimulatoren: welche mit wahlfreiem Zugriff und randempfindliche. Der Stimulator mit wahlfreiem Zugriff ist einfach ein Flip-Flop, dessen Ausgang das Netzwerk, in das über den Host- Schnittstellenbus Daten bei Anforderung durch den Host eingeladen werden können, antreibt. Es wird verwendet, um Netze zu stimulieren, die den Wert zu jedem Zeitpunkt relativ zu anderen stimulierten Netzen ohne Änderung des Betriebs einer Ausgestaltung ändern können. Ein Beispiel eines solchen Netzes ist die Dateneingabe zu einem Register. Jeder Stimulator hat eine einzigartige Busadresse, und wenn der Host Daten in die Adresse einschreibt, bringt die Schnittstellen-Logik Daten auf den D-Eingang auf und betreibt den Takteingang des Stimulator-Flip-Flops zyklisch (Fig. 34).
  • Der randempfindliche Stimulator wird zum Stimulieren von Netzen verwendet, deren Änderung synchron mit anderen solchen Netzen sein muß für einen richtigen Betrieb einer Ausgestaltung, beispielsweise die Takteingabe zu Registern. Ein zweites Flip-Flop ist zwischen dem Ausgang eines Stimulators mit wahlfreiem Zugriff und dem Ausgestaltungsnetz angeordnet. Alle derartigen Flip- Flops in einer Gruppe von Stimulatoren, die synchronisiert werden müssen, sind mit einem gemeinsamen Taktgeber verbunden. Um einen neuen Satz von Netzwerten zu erhalten, lädt der Host die neuen Werte in das erste Flip-Flop jedes Stimulators über den Host-Schnittstellenbus in einer beliebigen Reihenfolge wie oben. Wenn die neuen Werte alle auf die Ausgestaltung aufzubringen sind, betreibt der Host den gemeinsamen "sync clock" unter Laden aller Werte in den zweiten Flip- Flops gleichzeitig und betreibt so alle Netze gleichzeitig (Fig. 35).
  • 1.3.2.9 Abtaster
  • Ein Abtaster ist ein einziges Bit einer Speicherung, das von dem Host-Computer gesteuert wird und ein Netz in der Ausgestaltung aufnimmt. Es wird von dem Host verwendet, um Ausgangssignale von der Ausgestaltung auszugeben.
  • Die einfachste Form eines Abtasters ist ein Flip-Flop, das ein Ausgestaltungsnetz auf seinem D-Eingang aufnimmt und das getaktet werden kann und auf Anforderung von dem Host über den Host-Schnittstellenbus und die Bus-Schnittstellen-Logik gelesen werden kann. Üblicherweise sind viele Abtaster mit einer gemeinsamen "sample clock" verbunden. Die Ausgaben von Abtasterdaten haben einzigartige Busadressen, wie dies der "sample clock"- Ausgang hat. Der Host betreibt den Taktgeber zyklisch, um eine Gruppe von Abtastern aufzunehmen, und liest sodann die abgetasteten Datenwerte eine nach der anderen (Fig. 36).
  • Um die Menge der erforderlichen I/O des Hosts zu verringern, ist ein zweites Flip-Flop optional hinzugegeben, um einen eine Änderung erkennenden Abtaster zu bilden. Das zweite Flip-Flop ist mit demselben Taktgeber wie das Abtaster-Flip-Flop verbunden, und sein Eingang ist mit dem Ausgang des Abtasters verbunden. Infolgedessen beinhaltet es den Wert, den der Abtaster vor dem unmittelbar vorangehenden Taktzyklus hatte. Die beiden Ausgänge des Flip-Flops werden durch ein XOR- Gatter miteinander verglichen, das einen hohen Wert ausgeben wird, wenn die beiden Flip-Flops sich voneinander unterscheiden, da eine Änderung des abgetasteten Wertes vorliegt. Alle XOR-Ausgänge von einer Gruppe von Abtastern werden von einem OR-Gatter gemeinsam aufsummiert, das von dem Host lesbar ist. Nach dem Abtasten der Netze durch zyklisches Betreiben der "sample clock" wie oben, prüft der Host diesen OR-Gatter-"Änderungs"- Wert zunächst, um zu sehen, ob irgendwelche Werte in der Gruppe sich geändert haben. Falls nicht, muß es nicht irgendwelche dieser Abtastwerte lesen (Fig. 37).
  • 1.3.2.10 Die Ausgestaltungskonversion und die Spezifikation von Stimulatoren und Abtastern
  • Die Flip-Flops des Abtasters und des Stimulators, die logischen Gatter und die Bus-Schnittstellen-Logik sind in dem Realizer-System durch die Logik-Chips verwirklicht. Um anzugeben, daß ein Netz mit einem Abtaster oder einem Stimulator zu verbinden ist, markiert der Verwender das Netz mit einer besonderen Eigenschaft in der Eingangs-Ausgestaltung unter Angabe des spezifischen Typs des Stimulators oder Abtasters und der Gruppenidentifikation. Ein allgemeines Verfahrens für eine Software-System für die Ausgestaltungskonversion zur Verwendung für eine Konfiguration der Stimulatoren und Abtaster und zu deren Verbinden mit dem Rest der Ausgestaltung und mit der Bus-Schnittstelle ist wie folgt:
  • Normale Verfahren werden für die Ausgestaltungskonversion verwendet, wie dies in den Ausgestaltungs-konversions-Abschnitten beschrieben worden ist, mit besonderen Ausnahmen für Stimulatoren und Abtaster wie folgt:
  • - Der Ausgestaltungsleser liest die Eigenschaftsinformation aus der Eingabe-Ausgestaltungs-File, die die Netze identifiziert, die für Stimulatoren und/ oder Abtaster markiert sind, und gibt Stimulator- und Abtaster-Grundfunktionen vor, die mit den Netzen verbunden sind, jedoch mit der Logik der Bus- Schnittstelle, in die Ausgestaltungsdatenstruktur.
  • - Der System-Partitionierer hat eine Datenbasis darüber, wie viele Gatter-Äquivalente jede solcher Grundfunktionen in einem Logik-Chip zugerechnet sind. Es hat auch eine der Gatter äquivalente Zahl für die Logik der Bus-Schnittstelle. Basierend auf diesen Daten ortet es die Stimulatoren und Abtaster den logischen Chips entsprechend seinem normalen Partitionierungs-Algorithmus zu, mit der zusätzlichen Bedingung, daß es seine logische Kapazität absenkt, die durch die Größe der Logik der Bus- Schnittstelle begrenzt ist, um der Tatsache Rechnung zu tragen, daß jeder Logik-Chip mit einem oder mehreren Stimulatoren und/oder Abtastern einen Logik-Block der Bus-Schnittstelle haben muß.
  • - Der Interkonnektor behandelt die Grundfunktionen des Stimulators und des Samplers identisch mit anderen Grundfunktionen.
  • - Wenn die Netzlisten-Files für jeden Logik-Chip in dem Realizer-System ausgeschrieben werden, wird jede Grundfunktion des Abtasters oder des Stimulators über das folgende Verfahren genetzlistet:
  • 1) Die Anweisungen der Grundfunktion für die Gatter und/oder Flip-Flop(s), die den Abtaster oder den Stimulator bilden, werden an die Netzlisten-File für den Logik-Chip, in den es aufgeteilt war, ausgegeben. Netznamen für die zusätzlichen Netze über das Netz hinaus, das abgetastet oder stimuliert wird, werden von dem Namen abgetastet, entsprechend einem Verfahren, das demjenigen ähnlich ist, das für die Verbindungs-Grundfunktionen beschrieben worden ist.
  • 2) Wenn dies der erste Stimulator oder Abtaster ist, der für das jeweilige Logik-Chip-File genetzlistet ist, wird ein vorgegebenes Netzlisten-File-Segment für die Bus-Schnittstelle verwendet, um die Grundfunktionen und die Netze auszugeben, die die Bus-Schnittstelle in dem Logik-Chip konfigurieren werden. Die Netzverbindungen der Bus-Schnittstelle werden lediglich einmal pro Schnittstelle verwendet, ihnen sind Standardnamen zugegeben, die in dem File- Segment definiert sind. Diejenigen, die mit der Stimulator- oder Abtaster-Logik verbunden sind, sind abgeleitete Netznamen zugeordnet, die mit den Namen koordiniert sind, die verwendet werden, wenn die Grundfunktionen in Schritt 1 ausgegeben werden.
  • Eine einfachere aber weniger allgemeine Methode verwirklicht Stimulatoren und Abtaster nur in dem Logik- Chip des Speichermoduls oder in von dem Verwender gestützten Einrichtungsmodulen. Es nimmt an, daß das Konversionswerkzeug der ERCGA Netzliste nicht die Logik und die Verbindungen für die Grundfunktionen und Netze in der Netzliste konfiguriert, die nicht nützlich verbunden sind, etwa die Eingänge, die nicht mit irgendwelchen Ausgängen oder I/O-Pins verbunden sind, und Ausgänge, die nicht mit irgendwelchen Eingängen oder I/O-Pins verbunden sind. Es basiert auf einem Satz von vordefinierten Partial-Netzlisten-Files, eine für jede der Logik-Chips des Moduls, mit den folgenden Anweisungen:
  • 1) Eine Anzahl von randempfindlichen Stimulatoren, die alle mit einem gemeinsamen "sync clock" verbunden sind.
  • 2) Eine Anzahl von eine Änderung erkennenden Abtastern, alle mit dem gleichen "sample clock" verbunden.
  • 3) Bus-Schnittstellen-Logik für alle Obigen.
  • Die vorgegebenen Files sind vollständig mit der Ausnahme der Angaben der I/O-Pinnummer für die I/O-Pins des Moduls, die verwendet werden, um die Abtaster und Stimulatoren mit der Verbindung zu verbinden. Der Steuerbus wird verwendet, um die gemeinsamen Signale, wie der Synchronisations-Takt und der Abtast-Takt, unter den Logik-Chips zu verteilen. Die Anzahl der Stimulatoren und Abtaster in jedem File wird dadurch bestimmt, wie viele I/O-Pins in den Logik-Chip des Files verfügbar sind, und durch wieviel Logik durch jedes Chip und durch das Modul insgesamt aufgenommen werden kann. Das Verfahren ist wie folgt:
  • Normale Verfahren werden für die Ausgestaltungskonversion verwendet, wie dies in den Ausgestaltungskonversionsabschnitten beschrieben worden ist, mit besonderen Ausnahmen für die Stimulatoren und die Abtaster wie folgt:
  • - Der Ausgestaltungsleser liest die Eigenschaftsinformation aus dem Eingabe-Ausgestaltungs-File, das die Netze identifiziert, die für die Stimulatoren und/oder Abtaster markiert sind, und gibt die Stimulator- und Samplerfunktionen, die mit den Netzen, nicht jedoch mit der Bus-Schnittstellen-Logik verbunden sind, in seine Ausgestaltungsdatenstruktur.
  • - Dem Partitionierer wird von dem Verwender mitgeteilt, welche LChip-Positionen auf welcher Karte Speichermodule haben und auf welcher vom Verwender vorgesehene Gerätemodule vorgesehen sind. Basierend auf diesen Daten weist es Speicher- und USD- Grundfunktionen zunächst zu den Modulen, sodann Partitionsstimulator- und Abtaster-Grundfunktionen in den Rest solcher Module entsprechend seinem normalen Partitionierungs-Algorithmus, hinauf bis zu der Grenze der verfügbaren Anzahl pro Modul.
  • - Der Verbinder behandelt den Stimulator und die Abtaster-Grundfunktionen identisch mit anderen Grundfunktionen der logischen Chips unter Bestimmung der L-X-Pfade, die diese mit den anderen Grundfunktionen auf ihren Netzen verbinden.
  • - Wenn die Netzlisten-File für jeden Logik-Chip in dem Realizer-System ausgeschrieben werden, wird jede Abtaster- oder Stimulator-Grundfunktion genetzlistet durch:
  • 1) Bestimmen, welches Logik-Chip den gewählten Pfad für die Grundfunktionen durch das Verbindungsverfahren verbindet.
  • 2) Herleiten der I/O-Pinnummer des logischen Chips aus der Pfadnummer und die logische Chip-Nummer unter Verwendung eines Verfahrens, das demjenigen ähnlich ist, das zum Herleiten der I/O- Pinnummern für gewöhnliche Logik-Chips geschrieben wird.
  • 3) Wählen eines vorbestimmten Stimulators/Abtasters aus denen auf dem Logik-Chip, die bisher anderen Netze nicht zugewiesen worden sind.
  • 4) Anhängen einer Anweisung an das Netzlisten-File für diesen Logik-Chip unter Angeben, daß diese I/O-Pinnummer des Logik-Chips zum Verbinden des vorgegebenen Abtasters 1 Stimulators zu verwenden ist.
  • - Das Konversionswerkzeug der ERCGA-Netzliste konfiguriert lediglich die Logik und die Verbindungen für die Stimulatoren, Abtaster und die zugehörige Bus-Schnittstellen-Logik, die verwendet worden sind.
  • Bei beiden Verfahren gibt das Ausgestaltungs- Konversionssystem weiter ein entsprechendes Tabellen-File aus, das sich auf die Netznamen mit den bestimmten Stimulatoren und Abtastern bezieht und entsprechend den Adressen auf dem Host-Schnittstellenbus zur Verwendung während des Betriebs.
  • 1.3.3 Vom Verwender versorgte Geräte
  • Da die Eingangsausgestaltung in einer tatsächlich arbeitenden Hardware in Form von konfigurierten logischen und Verbindungschips verwirklicht wird, ist es praktisch unerwünscht, andere tatsächliche Hardware-Einheiten mit dem Realizer-System zu verbinden. Diese können beliebige Geräte mit digitalen Eingängen und Ausgängen, etwa Mikroprozessoren oder andere VLSI-IC-Chips Digital/Analog-Wandler, Displays, Eingabetastaturen und Schalter, Speichergeräte, Computereingabe-/Ausgabebusse usw. Es können auch Teile von digitalen Systemen sein, etwa Schaltkarten oder größere, kompakte Komponenten, von denen die verwirklichte Ausgestaltung ein Teil ist.
  • Die Geräte repräsentieren den Teil der Eingabe- Ausgestaltung, die zu realisieren ist, die nicht in den logischen Gattern, Flip-Flops und Speichern des Realizer-Systems implementiert werden können, entweder aus physikalischen Gründen, etwa ein Display, aufgrund der unzureichenden Ressourcen des Realizer-systems, etwa als Massenspeicher oder weil die logische Beschreibung nicht verfügbar ist, wie als Standard-Mikroprozessor. Alternativ können sie Geräte repräsentieren, die der Verwender mit den Ressourcen des Realizer-Systems nicht verwirklichen möchte, etwa als ein Halbkunden-Gatter- array-Chip, das hergestellt worden ist und das als richtig bekannt ist, weil kein Bedarf besteht, Ressourcen des Realizer-Systems zu verbrauchen, um dieses zu implementieren, oder aber weil der Verwender prüfen möchte, ob der verwirklichte Teil der Ausgestaltung richtig mit diesem arbeitet. Da sie nicht Teile des gesamten Realizer-Systems sind, sondern stattdessen von dem Verwender geliefert werden, aufgrund der Erfordernisse der Ausbildung, werden diese Geräte als "vom Verwender beigebrachte Geräte" (USD) bezeichnet.
  • Es gibt eine Vielzahl möglicher USD, die nützlich sind, um eine Realizer-System mit üblichen Mitteln für einen Verwender zu schaffen, um solche Geräte mit der Hardware des Realizer-Systems zu verbinden. Dies Mittel ist das Modul für das vom Verwender beigestellte Gerät (USDM).
  • 1.3.3.1 Modul für vom Verwender beigestellte Geräte
  • Das Modul für vom Verwender beigestellte Geräte:
  • 1) bildet ein Mittel zum physikalischen Verbinden von vom Verwender beigestellter Hardware.
  • 2) schafft Verbindungen zwischen den USD und den logischen und/oder Verbindungschips des Realizer- Systems. Da die USD Aufgaben in der Ausbildung erfüllt, die derjenigen von Logik-Chips ähnlich sind, ist es sinnvoll, USDM in derselben Weise wie Logik-Chips zu verbinden.
  • 3) schafft die Möglichkeit zur freien Zuordnung von USD-Pins zu Verbindungspins, wie dies die Logik- Chips, die normalerweise in dem Ort des LChips installiert sind, tun.
  • Da das Modul Möglichkeiten schaffen sollte, die ähnlich denjenigen sind, die eine Speichermodul für seine RAM- Chips schafft, ist die Architektur des USDM ähnlich derjenigen eines Speichermoduls. Fig. 38 zeigt die USDM-Architektur. Geräte sind in dem Installationsbereich für vom Verwender beigestellte Geräte installiert, die ein Bereich der gedruckten Schaltkarte des USDM, eine entfernbare Tochterkarte, die in das USDM eingesteckt ist, oder ein anderer Bereich, der über ein Kabel in einer Weise, wie dies bei einen Mikroprozessor emulierenden Geräten üblich ist. Ein Anschlußblock schafft ein Mittel zum Herstellen der elektrischen Verbindungen zwischen den Eingabe- und Ausgabestiften des Gerätes und den Logik-Chips des USDM über einen Stecker, einen Anschlußstreifen, einen Satz von gedruckten Schaltkarten-Anschlüssen und anderer derartiger Mittel. Es kann weiter die elektrische Leistung für die Geräte schaffen. Eine oder mehrere Einrichtungen können installiert sein, wie es die physikalische und die Kapazität der Stifte des Anschlußblocks erlaubt. Alternativ können Geräte entfernt verbunden sein, über Kabel und Zwischenverstärker in üblicher Weise.
  • Jedes MA- und MD-Logik-Chip hat einige I/O-Pins, die mit dem Anschlußblock verbunden sind, und einige sind mit der Verbindung verbunden. Diese Chips sind mit der Verbindung in der gleichen Weise verbunden, wie dies für die Speichermoduladress- und Datenpfadlogik-Chips beschrieben worden ist. Optional können sie mit dem Host-Schnittstellenbus und/oder einem gemeinsamen Steuerbus verbunden werden, für Zwecke, die ihren Verwendungen in Speichermodulen ähnlich sind, wie gezeigt.
  • USD-Adress- und Datenbusse sind normalerweise mit dem MD-Chips in einer solchen Weise verbunden, daß die Busdaten-Bits über die MD-Chips verteilt sind und so über die Leiterbahn. Die MA-Chips werden für USD- Steuerleitungen und optional für USD-Adressleitungen verwendet. Die Figur zeigt drei hypothetische Verwendergeräte, die verbunden sind, um die Möglichkeiten darzustellen. USD0 hat seine Daten und seine Adressbusse über die MD-Chips und seine Steuerleitungen verbunden, A, B und C verbunden über MA0. USD1 hat drei Datenbusse, die mit den MD-Chips verbunden sind und Adress-Steuerverbindungen durch beide MA-Chips. USD2 verwendet MA1 zum Adressieren und die MD-Chips für die Daten. In einem bestimmten Fall kann der Verwender des Realizer-Systems deren USD in einer Weise verbinden, die für die Ausgestaltung und Verwendung geeignet ist.
  • Bi-direktionale USD-Verbindungen werden in derselben Weise wie bi-direktionale RAM-DQ-Stifte in einem Speichermodul MD-Chip verbunden, wie in dem Abschnitt gezeigt. Ein Unterschied in der Anforderung besteht darin, daß ein Netz in der Eingabe-Ausgestaltung als die Ausgabe-Freigabe-Steuerung spezifiziert sein sollte. Dieses Netz wird verbunden durch die Leiterplattenlogik in derselben Weise wie die "Ausgestaltungs-Ausgabe- Freigabe", in den die Speichermodule betreffenden Fig. 25 und 26 gezeigt ist, um die zweidirektionalen MD- Chiptreiber zu steuern, wenn ein geeignetes Ausgabe- Freigabe-Steuernetz nicht normalerweise in der Eingangsausgestaltung vorhanden sein sollte, sollte der Verwender ein solches herstellen.
  • 1.3.2.2 Bevorzugtes Ausführungsbeispiel USDM
  • Bei dem bevorzugten, in Fig. 39 gezeigten Ausführungsbeispiel ist das USDM mit einem Realizer-Speichermodul identisch, mit einem Bereich zum Installieren des USD, das den Platz des RAM-Chips einnimmt. Jedes der acht MD-Chips ist mit 16 USD-Pins verbunden und jeder der beiden MA-Chips verbindet bis zu 23 USD-Pins.
  • Die Figur zeigt zwei installierte VLSI-Einheiten, einen Motorola MC68020 32-bit-Mikroprozessor ("MC68020-32-Bit Microprocessor User's Manual", Motorola Inc., Phoenix, 1984) und einen Motorola MC68881 Gleitkomma-Coprozessor ("MC68881 Floating Pomt Coprocessor User's Manual", Motorola Inc., Phoenix, 1985). Diese Einheiten sind gute Beispiele für USD, da sie gemeinsam in digitalen Systemausbildungen verwendet werden und ihre Darstellungen der logischen Netzwerke für den Verwender nicht verfügbar sind. Sie haben die folgenden Eingangs/Ausgangs-Stifte, Einzelheiten davon ergeben sich in den angegebenen Literaturstellen:
  • MC68020
  • Daten: D31-D0, bi-direktional Ausgangs-Freigabe-Bedingung: Wenn R/W "Schreiben" angibt und DBEN wahr ist, D31-D0 treibende Ausgänge sind, ansonsten sind sie aufnehmende Eingänge.
  • Adresse: A31-A0, Ausgabe.
  • Kontroll- Eingänge: CLK, DSACK0, DSACK1, AVEC, CDIS, IPL9- IPL2, BR, BGACK, RESET, HALT, BERR.
  • Kontroll- Ausgänge: R/W, IPEND, BG, DS, DBEN, AS, RMC, OCS, ECS, SIZ0, SIZ1, FC0-FC2.
  • MC68881
  • Daten: D31-D0, bi-direktional Ausgangs-Freigabe-Bedingung: Wenn R/W "Lesen" angibt und DSACK0 und/oder DSACK1 wahr sind, D31-D0 sind treibende Ausgänge, ansonsten sind sie aufnehmende Eingänge.
  • Adresse: A4-A0 Eingabe.
  • Kontroll- Eingänge: CLK, SIZE, RESET, A/S, RW, DS, CS.
  • Kontroll- Ausgänge: DSACK0, DSACK1.
  • Die Daten- und Adressbusse sind über die MD-Chips miteinander verbunden. Busdaten-Bits sind über die Kreuzschiene geteilt, wie dies gezeigt ist, um die Verbindung zu erleichtern, wie dies in dem den Speicherdatenweg betreffenden Abschnitt diskutiert ist. Steuersignale werden durch die MA-Chips miteinander verbunden.
  • Die Ausgabe-Steuersignale werden durch ein besondere Logik erzeugt, die mit den Steuersignalen, wie oben beschrieben, verbunden sind, die von dem Verwender bei der Eingabeausgestaltung vorgesehen werden und in dem LChip mit der sonstigen Ausgestaltung realisiert werden. Da jedes MD-Chip mit einem anderen Satz von L-X- Pfaden verbindet und da die Ausgabe-Freigabe-Signale gewöhnlich mit einem Gesamtbus gemeinsam sind, verbindet das Ausgestaltungskonversionssystem diese Netze mit einem der MA-Chips und konfiguriert die MA- und MD- Chips zur Verwendung des USDM-Steuerbusses zur Verbindung des Netzes mit denjenigen MD- und MA-Chips, die damit verbunden sein müssen.
  • 1.3.3.3 Ausgestaltungskonversion für vom Verwender beigestellte Einrichtungen
  • Ein USD wird durch eine Eingabe-Ausgestaltung durch eine besondere Grundfunktion dargestellt. Es trägt die Eigenschaftsdaten, die ein USD-Spezifikations-File identifiziert, das von dem Verwender erzeugt wird. Dieser File identifiziert, in welchen LChip-Ort das USDM mit der Einrichtung installiert ist, und listet die I/O-Pins des USD auf unter Verwendung von Pinbezeichnungen, die in der Eingabe der Grundfunktionen des Ausgestaltungs-USD verwendet werden. Für jeden Stift listet es die Nummer des USDM-Logik-Chip und die Pinnummer, die mit dem Pin verbunden ist, auf und ob der Pin ein Eingang, ein Ausgang oder bi-direktional ist. Wenn der Pin bi-direktional ist, wird der Name des Ausgabe-Freigabe-Steuernetzes in der Eingabe- Ausgestaltung ebenfalls aufgelistet.
  • Das Ausgestaltungs-Konversions-Softwaresystem erzeugt die Netzlisten-Files, die das USDM konfigurieren wird, und verbindet diese mit dem Rest der Ausgestaltung. Die normalen Verfahren werden, mit Ausnahme derjenigen für die USD, wie folgt verwendet:
  • - Der Ausgestaltungsleser liest die USD-Grundfunktionen in seinen Ausgestaltungsdatenaufbau. Es verwendet die Fähigkeit des Files in dem USD-Spezifikationsfile zu lesen und speichert die Information, die der Grundfunktionen-Aufzeichnung zugehörig ist, für eine spätere Verwendung. Die Grundfunktionenaufzeichnung wird auf einen besonderen Pin aufgegeben, der mit jedem der verschiedenen Ausgangsfreigabe-Steuernetze zugehörig ist.
  • - Die Konversionsstufe prüft, um zu sehen, daß die Konfiguration verfügbar ist und der Pin der Konfiguration richtig entspricht.
  • - Der Systempartitionierer ordnet den USD zu dem LChip-Ort, der in dem USD-Spezifikations-File angegeben ist.
  • - Der Verbinder ordnet die Netze, die mit USD-Pins verbunden sind, bestimmten L-X-Verbindungspfaden zu. Er tut dies aufgrund der Begrenzungen, daß Netze, die mit USD-Pins verbunden sind, nur Pfaden zugeordnet werden können, die das MA- oder MD-Chip, das in dem USD-Spezifikations-File angegeben ist, und Freigabe-Steuernetz-Pins nur Pfaden zugeordnet werden können, die mit einem MA-Chip verbunden sind.
  • -Zur Ausgabe der Netzlisten-Files für ein USDM:
  • für jedes Ausgabe-Freigabe-Steuernetz, das die USD auf diesem USDM steuert:
  • Ausgeben der Grundfunktionen an seinen Netzlisten-File für das MA-Chip des Netzes für:
  • einen Eingangspuffer, der den L-X-Pfad, der für dieses Netz verwendet wird, aufnimmt, unter Antreiben des Eingangs eines Ausgangspuffers, der eine Steuerbusleitung treibt, die diesem Netz zugehörig ist.
  • für jedes Netz, das mit dem bzw. den USD auf diesem USDM verbunden ist:
  • wenn es einen USD-Eingabestift treibt, geben Grundfunktionen zu dem Netzlisten-File des Logik-Chips des Pins für:
  • einen Eingangspuffer von dem für dieses Netz verwendeten Eingabepfad, der den Eingang eines Ausgangspuffers treibt, der wiederum den Anschlußblock-Pin, der für dieses USD-Pin verwendet wird, treibt.
  • wenn es ein USD-Ausgangs-Pin aufnimmt, geben die Grundfunktionen auf den Netzlisten-File des Logik-Chips dieses Pins aus:
  • einen Ausgangspuffer des antreibenden Pfades, der für dieses Netz verwendet wird, der den Ausgang eines Eingangspuffers empfängt, der den Anschlußblock-Pin, der für diesen USD-Pin verwendet wird, aufnimmt.
  • wenn es mit einem USD-bi-direktionalen Pin verbunden ist, geben die Grundfunktionen an die Netzliste des Logik-Chips dieses Pins aus:
  • einen Eingangspuffer von dem Empfangsweg, der für dieses Netz verwendet wird, der die Dateneingabe eines Tri-State-Ausgangspuffers antreibt, der wiederum den Anschlußblock-Pin, der für dieses USD-Pin verwendet wird, antreibt,
  • einen Ausgangspuffer für den für dieses Netz verwendeten treibenden Pfad, der den Ausgang eines AND-Gatters mit zwei Eingängen aufnimmt, wobei ein Eingang von einem Eingangstreiber getrieben wird, der den Anschlußblock-Pin, der für dieses USD-Pin verwendet wird, empfängt,
  • einen Eingangspuffer von der Steuerbusleitung, der diesem Steuernetz der Ausgabefreigabe des Pins zugeordnet ist, unter Antreiben der Freigabeeingabe des Tri- State-Ausgangspuffers und des anderen Eingangs des AND-Gatters.
  • 1.4 Konfiguration
  • Wie in dem Abschnitt bezüglich der Technologie des Logik- und des Verbindungschips beschrieben, werden die Konfigurationsbitmuster für jeden Chip von dem ERCGA- Netzlisten-Konversionswerkzeug erzeugt. Der schließliche Zustand des Wandlersystems für die Realizer- Ausgestaltung sammelt die Daten von den Konfigurations-Files, die für alle Chips gesammelt werden, in einem einzelnen Binär-Konfigurations-File für die Ausgestaltung, die ständig in den Host-Computer gespeichert werden.
  • Vor jeder Verwendung des Realizer-Systems werden seine logischen und Verbindungschips für die zu verwendende Ausgestaltung durch das Lesen der Daten aus dem Konfigurationsfile, deren übertragen in die Realizer- Hardware durch die Host-Schnittstelle und dessen Laden in die Chips konfiguriert. Konfigurationsausgestaltungen sind zwischen der Host-Schnittstelle und allen logischen und Verbindungschips in dem System vorgesehen. Wenn die Chips einmal konfiguriert sind, paßt die Gesamtmenge ihrer logischen Funktionen und Verbindungen, die durch die Eingabeausgestaltung spezifiziert sind, und der Betrieb der Ausgestaltung kann beginnen.
  • Bei dem bevorzugten Ausführungsbeispiel werden Xilinx LCA als Logik- und Kreuzschienen-Chips verwendet. Das LCA wird durch Laden seines binären Konfigurations- Bitmusters in das serielle Schieberegister des LCA- Konfigurationsmusters ein Bit nach dem anderen konfiguriert. Jedes Bit wird auf den Konfigurationsdateneingang (DIN) aufgegeben und durch zyklisches Betreiben des Konfigurationstaktgebers (CCLK) einmal geladen.
  • Eine einzigartige Konfigurationsverbindung zwischen jedem LCA und der Host-Schnittstelle ist nicht vorgesehen, da das System insgesamt bis zu 3520 Logik- und Kreuzschienen-Chips haben kann. Stattdessen ist ein Konfigurationsbus vorgesehen, der aus einem Vielbit- Datenpfad und einem Konfigurationsdatengeber besteht, der mit allen Karten, die LCA haben, verbunden ist. Logik- und Kreuzschienen-Chips sind für den Zweck der Konfiguration gruppiert, mit so vielen Chips pro Gruppe wie Bits in dem Datenpfad vorhanden sind. Alle Chips in einer Gruppe sind parallel konfiguriert.
  • Jedes LCA in einer Gruppe ist, wie in Fig. 40 gezeigt, über seinen Konfigurationsdateneingang mit einem anderen Bit des Bus-Datenpfades verbunden. Ein logischer Block der Konfigurationssteuerung für jede Gruppe ist mit dem Host-Schnittstellenbus, dem Bus-Konfigurationstaktgeber und den Taktgebereingängen aller LCA in der Gruppe verbunden. Diese logischen Blocks der Steuerung werden wahlweise durch Host-Befehle über den Host-Schnittstellenbus freigegeben, um lediglich die Gruppe der LCA, für die die Daten auf dem Bus bestimmt sind, dazu zu veranlassen, Taktsignale zu erhalten und konfiguriert zu werden.
  • Dies ist das Verfahren, dem der Host-Computer folgt, um das Realizer-System zu konfigurieren. Die Steuerwirkungen und die Datenübergaben werden alle über die Host- Schnittstelle ausgeführt. Um alle Logik- und Kreuzschienen zu konfigurieren:
  • Für jede Konfigurationsgruppe:
  • Richte den Steuerlogikblock für diese Gruppe zum Führen des Konfigurations-Taktgebers zu diesen Chips.
  • Für so viele Zyklen, wie Konfigurationsbits in einem LCA vorhanden sind:
  • Lade einen Konfigurationsbit für jeden Chip in dieser Gruppe auf den Bus-Datenpfad.
  • Betreibe den Bus-Konfigurationstaktgeber einmal zyklisch.
  • Nächster Zyklus.
  • Richte die Steuerlogik für diese Gruppe, daß diese nicht länger den Konfigurations-Taktgeber passieren läßt.
  • 1.5 Host-Schnittstelle
  • Das Realizer-System arbeitet als Peripherie unter der Steuerung des Host-Computers. Der Host-Computer konfiguriert die Logik- und Schnittstellen-Chips des Realizer-Systems entsprechend einer Ausgestaltung unter Verwendung des Konfigurations-Bitmusters in dem Konfigurationsfile der Ausgestaltung. Es steuert den nachfolgenden Ablauf der Ausgestaltung durch Steuern seiner externen Rückstell- und Taktgeber-Signale. Es wirkt dann mit der Ausgestaltung durch Steuern von Stimulatoren, Abtastern und Vektorspeichern zusammen und durch Lesen und Schreiben der Inhalte von Vektor- und Ausgestaltungsspeichern. Der Host-Computer tut all dies über die Host-Schnittstelle des Realizer-Systems, das die Host- Schnittstelle des Realizer-Systems und der Konfigurationsbusse steuert.
  • 1.5.1 Host-Schnittstellenarchitektur
  • Die Host-Schnittstelle des Realizer-Systems ist entlang der ganzen konventionellen Leitungen aufgebaut (Fig. 41). Sie besteht aus dem Bus-Controller, der Host- Schnittstelle, dem Controller des Konfigurationsbusses, dem Taktgeber-Generator und dem Rückstell-Controller, die jeweils unten beschrieben werden. Die Schnittstelle ist auf einer Karte oder auf mehreren Karten in den Chassis der Realizer-Hardware aufgebaut, und ist mit I/O-Bus des Host-Computers über ein Kabel und eine Schnittstellen-Karte verbunden. Die Host-Schnittstelle steuert Funktionen, die entweder dem Adressraum des Computerspeichers oder aber in dem Eingangs/Ausgangsbusraum aufgelistet sind, entsprechend den Anforderungen des jeweiligen Computers.
  • 1.5.2 Host-Schnittstellenbus
  • Der Host-Schnittstellenbus ist mit den I/O-Stiften einiger oder aller regulären Logik-Chips und den Logik- Chips des Speichermoduls in dem Realizer-System verbunden. Er hat einen Adressraum, dem die Steuer- und Datenzugriffsfunktion des Realizer-Systems zugeordnet sind. Der Host ist der einziger Bus-Master und gibt die adressierten Lese- und Schreibbefehle über den Bus- Controller der Host-Schnittstelle auf den Bus, der die Daten zwischen den Funktionen des Realizer-System und dem Host überträgt.
  • Die logischen Blocks der Host-Schnittstellensteuerung sind in die vielen Logik-Chips und Logik-Chips des Speichermoduls programmiert, um es zu erlauben, daß die Funktionen des Realizer-Systems über diesen Bus gesteuert werden. Besondere Beispiele von Funktionen, die durch diesen Bus gesteuert werden, sind Abtaster, Stimulatoren, Vektorspeicheradressierung, Betrieb und der Host-Datenzugriff sowie der Host-Datenzugriff auf das Ausgestaltungsmuster. Da diese Steuerblocks alle in logischen Chips programmiert sind, sind ihre spezifischen Funktionen und Anordnungen in dem Busadressraum alle durch das Programmieren des logischen Chips definiert und können geändert werden, um den besonderen Erfordernissen jeder gegebenen Ausgestaltung oder jeder gegebenen Betriebsweise zu entsprechen.
  • Die besondere Ausgestaltung des Host-Schnittstellenbusses hängt von der Datenzugriffsgeschwindigkeit und der Verfügbarkeit des Hardware-Pins einer bestimmten Implementation des Realizer-Systems ab. Bei dem bevorzugten Ausführungsbeispiel ist ein Host-Schnittstellenbus mit 11-Pin, bezeichnet als R-Bus, mit zugeordneten I/O-Pins auf allen LChips verbunden. Seine Hardware hat acht bidirektionale Leitungen, die für Daten- und Adressleitungen, einen Taktgeber und zwei Steuerleitungen verwendet werden. Der R-Bus hat einen 32- bit-Adressraum und eine 8-bit-Datenbreite, was es erlaubt, acht Datenbits von oder bis zu vier Milliarden einzelnen Orten zu lesen oder zu schreiben. Es ist mit dem Host-Computer über ein Adressregister, ein Datenregister und ein Steuerregister verbunden, die durch den Bus-Controller der Host-Schnittstelle hergestellt werden, um in dem Speicher oder dem Eingangs-/Ausgangsraum des Host-Computers in üblicher Weise zu erscheinen.
  • Beispiele von Funktionen, die mit dem R-Bus verbunden sind, sind:
  • 1) Eine Gruppe von acht Abtastern, deren Abtast- Taktgeber zyklisch betrieben wird, wenn einer der Orte über den R-Bus beschrieben wird und dessen abgetastete Datenwerte von einem anderen R-Bus-Ort gelesen werden, entsprechend den Host-Befehlen.
  • 2) Eine Gruppe von acht Stimulatoren mit wahlfreiem Zugriff, deren Datenwerte geändert werden, wenn der Host einen bestimmten R-Bus-Ort beschreibt.
  • 3) Ein Ausgestaltungsspeicher, wobei jeder seiner Speicherorte auf einzigartigen R-Bus-Orten aufgelistet ist. Ein Lese- oder Schreibbetrieb des R-Busses in den Adressraum bewirkt, daß Auslesen oder Einschreiben des adressierten Ausgestaltungsspeicherortes durch den Host, unter Schaffung eines Host-Datenzugriffs.
  • Andere derartige Funktionen sind einfach vorstellbar.
  • Der R-Bus-Betrieb ist in Fig. 42 gezeigt. Um einen Ort zu lesen, lädt das Programm, das auf dem Host-Computer läuft, daß das Realizer-System betreibt, die Adresse in das Bus-Adressregister der Host-Schnittstelle und setzt das "Lese-Befehlsbit" in dem Bus-Steuerregister der Host-Schnittstelle. Der Bus-Controller der Host- Schnittstelle betreibt sodann einen R-Bus-Lesezyklus. Die Adresse wird auf den R-Bus-Datenleitungen acht Bits gleichzeitig präsentiert, jedesmal begleitet durch einen Zyklus des R-Bus-Taktgebers. Während des ersten Zyklus stellt der Bus-Controller sicher, daß die "sync" R-Bus-Steuerleitung angibt, daß ein R-Bus-Zyklus startet. Sodann wird die "Lese-R-Bus-Steuerleitung" und der R-Bus-Taktgeber ein fünftes Mal getaktet, was es dem Logikblock der Schnittstellensteuerung, die adressiert war, erlaubt, seinen Lesebetrieb abzuschließen. Der R-Bus-Taktgeber wird ein sechstes Mal zyklisch betrieben, währenddessen der Logikblock der Bus-Schnittstellensteuerung, die adressiert war, die Lesendaten auf den acht R-Bus-Datenleitungen liest. Der Bus- Controller fängt diese Daten, lädt diese in das Bus- Datenregister der Host-Schnittstelle und setzt das "abgeschlossen"-Kommando-Bit in dem Steuerregister des Host-Schnittstellenbusses. Das Host-Programm, das das "abgeschlossen"-Bit gesetzt hat, liest die Daten und löscht das "abgeschlossene"-Bit.
  • Das Beschreiben eines Ortes ist ähnlich, mit der Abweichung, daß das Host-Programm das "Schreib"-Befehlsbit setzt und die in das Host-Schnittstellen-Datenregister einzuschreibenden Daten lädt, wobei der Bus-Controller nicht die "Lese"-R-Bus-Steuerleitung in dem fünften Abtastzyklus hinzufügt und die Daten auf den R-Bus- Datenleitungen in dem sechsten Zyklus, die sodann von dem Logik-Block der adressierten Bus-Schnittstellen- Steuerung gefangen wird.
  • Der Logikblock der Busschnittstellensteuerung, der zu einem logischen Chip konfiguriert ist, besteht aus einer Maschine mit endlichen Zuständen und Datenwegen, die den RBus mit der gesteuerten Funktion in einer vollständig üblichen Weise verbindet, entsprechend dem oben beschriebenen Vorgang.
  • 1.5.3 Konfigurationsbus
  • Der Konfigurationsbus und seine Verwendung und sein Betrieb werden in dem Konfigurationsabschnitt beschrieben. Er wird durch den Host-Computer über die Host- Schnittstelle gesteuert. Er wird mit dem Host-Computer durch ein Datenregister und ein Steuerregister über eine Schnittstelle verbunden, die durch die Hardware der Host-Schnittstelle gebildet werden, um in dem Speicher und dem Eingabe/Ausgabe-Raum des Host-Computers in einer üblichen Weise aufzutreten. Daten, die in das Datenregister des Konfigurationsbusses durch das Konfigurationsprogramm, das auf dem Host-Computer läuft, geladen sind, werden auf dem Konfigurationsbus-Datenpfad getrieben. Wenn der Host-Computer das Steuerregister des Konfigurationsbusses beschreibt, wird die Hardware der Host-Schnittstelle den Taktgeber des Konfigurationsbus über einen Zyklus betreiben.
  • 1.5.4 Rückstell-Controller und Taktgenerator
  • Das Realizer-System setzt den Controller zurück und erzeugt zwei Rückstellsignale. Das Rückstellsignal des Systems ist mit den Rückstell-Eingabepins aller Logik- und Verbindungschips verbunden. Wenn der durch den Host aufgerufen wird, werden alle Chips in ihren Rückstellbetrieb gebracht und sind so für die Konfiguration vorbereitet.
  • Einer oder mehrbare Taktsignalgeneratoren üblicher Ausgestaltung haben Ausgangssignale, die auf einem I/O-Pin aller LChips verteilt sind. Der Host steuert seine Ausgangsfrequenz und kann es dazu veranlassen, den zyklischen Betrieb einzustellen, einmal oder eine bestimmte Anzahl von Malen zyklisch zu arbeiten, kontinuierlich zyklisch zu arbeiten usw. Er wird als ein Taktgenerator für implementierte Ausgestaltungen in dem Realizer-System verwendet und das Steuern der Taktsignale ist ein Mittel des Steuerns des Betriebs der Ausgestaltung. Das Ausgestaltungs-Rückstellsignal ist mit einem I/O-Pin einer LChips verbunden. Es wird als ein Mittel zum Rückstellen der in dem Realizer-System implementierten Ausgestaltung verwendet.
  • Diese Signale sind für Verbindungen mit der Ausgestaltung, die durch das Realizer-System implementiert wird, verfügbar. Ein Netz in der Eingabe-Ausgestaltung ist als eine System-Rückstellung oder ein Takt durch Anbringen einer bestimmten Eigenschaft zu diesem in der Eingabe-Ausgestaltungs-File bestimmt. Der Ausgestaltung-Leser erkennt diese Eigenschaft und markiert das Netz als ein Rückstell- oder Taktnetz in der Ausgestaltungs-Datenstruktur. Der Verbindungs- und Netzlistenteil des Ausgestaltungs- und Konversionssystems ordnet dieses Netz zu dem I/O-Pin hinzu, das mit dem Ausgestaltungs-Rückstellsignal oder dem Taktsignal in der Hardware verbunden ist.
  • 2 Das Konversionssvstem der Realizer-Auspestaltung
  • Das Konversionssystem für die Realizer-Ausgestaltung besteht aus dem Ausgestaltungs-Leser, dem Grundfunktionen-Konverter, dem Partitionierer, dem Netzlisting- und Verbindungssystem, dem ERCGA-Netzlisten-Konversionswerkzeug und dem Konfigurationfilecollektor (Fig. 43). Es nimmt den Eingangs-Ausgestaltungfile als Eingang und erzeugt ein Konfigurationsfile und einen Entsprechungstabellen-File als Ausgang, der von den verschiedenen Anwendungen zum Konfigurieren und zum Verwenden der Realizer-Hardware verwendet wird.
  • Um eine Eingabegestaltung zu konvertieren:
  • 1) Lies die Ausgestaltung in die Speicherdaten- Struktur mittels des Ausgestaltungs-Lesers.
  • 2) Konvertiere die Grundfunktionen in der Ausgestaltung-Datenstruktur von den systemspezifischen Grundfunktionen des Host-EDA in die Grundfunktionen des Logik-Chips, die in den Netzlistenfiles kompatibel mit dem ERCGA-Netzlisten- Konversionswerkzeug ausgegeben werden kann.
  • 3) Verwende den Partitionierer zum Bestimmen, welcher Logik-Chip jeder Grundfunktion konfiguriert werden wird.
  • 4) Verwende das Netzlisting- und Verbindungssystem zum Erzeugen von Netzlisten-files für jeden Logik- und Verbindungschip in dem Realizer- Hardwaresystem.
  • 5) Verwende das ERCGA-Netzlisten-Konversionswerkzeug sich wiederholend unter Wiederholung jedes Netzlistenfile in einen entsprechenden Konfigurationsfile.
  • 6) Verwende den Konfigurationsfile-Collektor, was ein einfaches Verfahren ist, daß die Konfigurationsdaten von jedem Konfigurationsfile der Logik- und Verbindungschips in ein einzelnes Konfigurationsfile für jede Ausgestaltung, die sodann verwendet wird, um die Realizer-Hardware zu konfigurieren.
  • Das Verfahren zur Konversion der Ausgestaltung, die hier beschrieben wird, wendet das Konvertieren der Kombinations-Logik-Gatter und Flip-Flops in der Eingabeausgestaltung an, außer wie angegeben. Variationen dieses Verfahrens werden verwendet, um Grundelemente für besondere Zwecke zu konvertieren. Diese Variationen werden in jenen Abschnitten beschrieben.
  • 2.1 Ausgestaltungsleser
  • Der Ausgestaltungsleser liest den Eingabe- Ausgestaltungsfile und bildet die entsprechende Datenstruktur der entsprechenden Ausgestaltung.
  • 2.1.1 Anforderungen für den Eingabe-Auspestaltungsfile
  • Der Eingabe-Ausgestaltungsfile, der von dem Host-EDA- System erzeugt wird, enthält Beschreibungen der Grundfunktionen und ihrer Eingabe- und Ausgabepins und der Netze, die zwei oder mehrere Pins miteinander und mit den Eingangs- und Ausgangsanschlüssen der Ausgestaltung verbinden. Er enthält Information, die auf die Grundfunktionen, die Pins und die Netze etwa Namen und dergleichen aufweist.
  • Das Eingabe-Ausgestaltungsfile sollte in einer einfachen Form sein, um von dem Konversionssystem der Realizer-Ausgestaltung gelesen zu werden. Eine "Grundfunktion" ist ein grundlegendes logisches Element, etwa ein Gatter, Flip-Flop oder ein Speicher. Strukturen auf einer höheren Ebene, die von dem Gestalter spezifiziert worden sein können und die bezüglich der Grundfunktionen definiert sind, sollten auf ihre diese bildenden Grundfunktionen durch das EDA-System aufgelöst werden, bevor es von dem Realizer-System gelesen wird. Ein Beispiel eines Satzes von Grundfunktionen, die in einer Eingabe-Ausgestaltung verfügbar sind, ist der folgende Satz von Mentor Graphics QuickSim- Grundfunktionen, die durch das bevorzugte Ausführungsbeispiel gelesen werden.
  • * Einfache Gatter (BUF, INV, AND, OR, NAND, NOR, NOR, XOR, XNOR) mit bis zu 25 Eingängen.
  • * Spezielle Gatter (DEL, ein Verzögerungselement; RES, ein Widerstand, NULL, ein offener Schaltkreis).
  • * Eindirektionalen Transfergatter (XFER), das ein Tri-State-Ausgang ist.
  • * Speichereinrichtung (LATCH, ein pegelempfindliches Flip-Flop oder REG, ein getaktetes Flip-Flop).
  • * Speichereinrichtung (RAM oder ROM).
  • 2.1.2 Die Datenstruktur der Ausgestaltung
  • Der Ausgestaltungsleser baut die Ausgestaltungs-Datenstruktur auf, die verwendet werden wird, um die Grundfunktionen in eine Form zu bringen, die für eine Netzauflistung des logischen Chips geeignet ist, um die Grundfunktionen in Teile, die der Größe der logischen- Chips entsprechen, aufzuteilen, um zu bestimmen, wie die logischen Chips zu verbinden sein werden, und die schließlich in die Netzlistenfiles für jeden der logischen Chips des Realizers einzulesen sind. Die Datenstruktur besteht aus einer Aufzeichnung für jede Grundfunktion, jeden Pin und für jedes Netz in der Ausgestaltung. Jede Aufzeichnung beinhaltet Daten über seine Gesamtheit und verbindet (beispielsweise weist hin auf) mit anderen Aufzeichnungen entsprechend ihrer Beziehung.
  • * Eine "Grundfunktion" ist ein grundlegendes Logikelement, etwa ein Flip-Flop oder eine Speichereinrichtung.
  • * Jede Grundfunktion ist durcheine Grundfunktion- Aufzeichnung dargestellt, die Daten über die Grundfunktion beinhaltet, etwa ob dies ein Typ oder ein Objekt ist oder dergleichen und beinhaltet Verbindungen zu anderen Grundfunktionen.
  • * Grundelementen-Aufzeichnungen sind in einer doppelt-verbundenen Liste.
  • * Ein "Pin" ist eine Eingabe- oder Ausgabeverbindung eines Grundelements.
  • * Die Stifte eines Grundelements werden durch eine Reihe von Pin-Aufzeichnungen präsentiert, die einer Grundelementen-Aufzeichnung benachbart angeordnet sind und die Daten über den Stift beinhalten, etwa den Namen, ob es invertiert ist, seinen Ausgangstreiber usw.
  • * Jedes Grundelement hat nur einen Ausgangspin, der einer der Pin-Aufzeichnungen sein kann.
  • * Ein "Netz" ist eine Sammlung von Pins, die miteinander verbunden sind.
  • * Jedes Netz wird durch eine Netzaufzeichnung repräsentiert, die die Daten über das Netz, etwa seinem Objekt usw. und beinhaltet Verbindungen zu anderen Netzen.
  • * Netzaufzeichnungen sind in einer doppelt-verbundenen Liste.
  • * Die Pins eines Netzes sind in einer einfach-verbundenen umlaufenden Liste.
  • * Jede Pin-Aufzeichnung hat eine Verbindung zu seiner Netzaufzeichnung.
  • * Jede Netzaufzeichnung hat eine Verbindung zu einem seiner Pins.
  • Figur 44a zeigt ein einfaches Beispiel eines Schaltungs-Netzwerkes, und Figur 44b zeigt, wie es mit der Ausgestaltung durch Datenstruktur zu repräsentieren wäre.
  • 2.1.3 Die Methode des Aufzeichnungs-Lesens
  • Der Zweck des Ausgestaltungs-Lesers dient dazu, die zu realisierende Ausgestaltung aus dem Eingabe-Ausgestaltungsfile zu lesen und dazu, die entsprechende Datenstruktur der Ausgestaltung aufzubauen. Diese Beschreibung ist auf das Mentor Graphics-Ausgestaltungsfile anwendbar, andere sind ähnlich. Das Ausgestaltungsfile hat einen Eingang, bezeichnet als ein File, für jedes Grundelement in der Ausgestaltung. Eigenschaften sind Information über besondere Aspekte des Grundelements, die an den File in dem Ausgestaltungsfile angebracht sind. Die Bezeichnungen in Klammern, die jedem Schritt folgen, sind die Namen der tatsächlichen Routinen, die bei dem bevorzugten Ausführungsbeispiel verwendet werden.
  • 1) Mache eine Aufzeichnung von Grundelementen und seinen Pins in der sich in dem Speicher befindlichen Datenstruktur für jedes Grundelement in dem Ausgestaltungsfile wie folgt:
  • Für jedes Beispiel eines Grundelements in dem Ausgestaltungsfile:
  • Lies, welche Grundfunktion es ist.
  • (get_dfi_model_type)
  • Nimm die Information über die von dem Verwender definierte Anordnung dieser Grundfunktion, falls vorhanden, von der "LChip"-Eigenschaft, verwende die Schnittstelle des Ausgestaltungsfiles, um höhere, kein Grundelement bildende Beispiels, die die Grundelemente aufweisen, um dort nach der Eigenschaft zu suchen.
  • (get_dfi_LChip)
  • Für jeden Chip dieses Files:
  • Sammle alle Eigenschaften wie den Pin- Namen, die auf dem Pin sind.
  • (get_dfi_pin_info)
  • Nächster Pin.
  • Ordne eine Aufzeichnung in der Datenstruktur in der in dem Speicher befindlichen Ausgestaltung für dieses Grundelement und seine Stifte (alloc_prim_and_pins) und fülle diese in die Grundelementen-Aufzeichnung.
  • Für jeden Stift:
  • Fülle die Pin-Aufzeichnung auf (beachte die verbundenen Netzobjekte, das heißt die Anzahl in dem Design-File, unter Beibehaltung der Spur der maximalen Zahl).
  • Nächster Stift.
  • Nächster File des Ausgestaltungsfiles.
  • Ordne eine Tabelle (net_table) von Zeigern den Pinaufzeichnungen (Pin-Zeiger) zu, einen für jedes mögliche Netz, indiziert durch einen Gegenstand, das heißt die Anzahl, zunächst NULL. Bringe die Tabelle auf eine Größe entsprechend dem Maximum, das heißt der oben gefundenen Zahl.
  • 2) Verbinde die Pinaufzeichnungen jedes zusammen in eine umlaufend verbundene Liste für jedes Netz wie folgt:
  • Für jede Grundelementenaufzeichnung in der Datenstruktur im Speicher:
  • Für jede Pinaufzeichnung:
  • "id" ist der verbundene Netzgegenstand, das heißt die Nummer für diesen Stift.
  • Wenn Netz_Tabelle [id] hat einen nicht- NULL-Pinzeiger, kopiere diesen in die "nächste pin"-Verbindung der Pinaufzeichnung.
  • Nimm den Pin-Zeiger zu diesem Pin in die Netz_Tabelle [id].
  • Nächster Pin.
  • Nächstes Grundelement.
  • 3) Mache eine Netzaufzeichnung für jedes Netz wie folgt:
  • Für jeden Stiftzeiger in der Netz_Tabelle:
  • Ordne eine Netzaufzeichnung zu.
  • Verbinde diese mit einer Verbindung zu dem Pin, auf den der Pin-Zeiger weist.
  • Nimm Information über das Netz von der Design-File-Schnittstelle durch dessen Adressieren mit einem Objekt, das heißt der Nummer (dfi_$get_net, get_dfi_net_info).
  • Für jeden Pin in der umlaufenden Liste der Pin-Aufzeichnungen für dieses Netz:
  • Weise diesen auf die Netzaufzeichnung.
  • Nächster Pin.
  • Nimm die umlaufende Liste: Verbinde den letzten Pin mit dem ersten.
  • Nächster Pin-Zeiger.
  • Befreie die Netz_Tabelle-Speicherung.
  • 4) Die Datenstruktur des im Speicher befindlichen Ausgestaltung ist jetzt komplett unter Repräsentieren aller Daten über die zu realisierende Ausgestaltung, die durch die späteren Stufen des Verfahrens zur Ausgestaltungskonversion benötigt werden.
  • 2.2 Der Wandler für die Grundelemente
  • Der Zweck der Konversion der Grundelemente ist das Wandeln der Grundelemente in der Datenstruktur der Ausgestaltung von den spezifischen Grundelementen, etwa den Grundelementen des Mentor Graphics QuickSim in logische, chip-spezifische Grundelemente, die in den Netzlisten-Files ausgegeben werden können, vergleichbar mit dem Konversionswerkzeug für die ERCGA Netzliste. Ein Teil dieser Konversion ist einfach und direkt unter Verwenden lediglich eines Platzes von Typen der Grundelemente und der Pin-Bezeichnungen. Andere Konversionen sind komplexer. Besondere Bezugnahmen werden unten auf das bevorzugte Ausführungsbeispiel gemacht, das hostspezifische Grundelemente des Mentor Graphics QuickSim verwendet, wie es sich indem Eingabe-Ausgestaltungsfile von Mentor Graphics findet, und Grundelementen, die Xilinx LCA-Logikchip-spezifisch sind.
  • Wenn ein Gatter in der Ausgestaltung mehr Eingänge hat, als dies in dem chip-spezifischen Gatter-Grundelement zulässig ist, wird es durch ein Netz von Gattern ersetzt, mit äquivalenter Funktion, von denen jedes eine geeignete Anzahl von Eingängen hat. Um einen solchen Ersatz zu machen, werden die Grundelemente und die Stiftaufzeichnungen für das Gatter entfernt und die Grundelemente, und die Pin-Aufzeichnungen für die neuen Gatter werden entfernt, und die Netzaufzeichnungen für die neuen Netze im Inneren des Netzwerks werden addiert und mit den Stift- und Netzaufzeichnungen für die Stifte und die Netze, die dem ersetzten Gatter entsprechen, verbunden (Fig. 45a).
  • Wenn ein Flip-Flop in der Ausgestaltung Funktionen hat, die in dem chip-spezifischen Flip-Flop-Grundelement nicht verfügbar ist, wird es durch ein Netzwerk von Gattern mit äquivalenter Funktion ersetzt. Zunächst wird das Netzwerk analysiert, um zu prüfen, ob die Funktion mit einem Netz verbunden ist, das nicht immer einen konstanten Wert hat. Wenn das Host-spezifische Grundelement REG beispielsweise mit sowohl direkten Lösch- und direkten Setzeingängen, die mit aktiven Netzen verbunden sind, die nicht immer einen konstanten Wert haben, wird das Grundelement in der Datenstruktur der im Speicher befindlichen Ausgestaltung durch ein Netz von Gattern ersetzt, das demjenigen ähnlich ist, das in dem 7474 der TTL-Flip-Flop-Logik-Teil verwendet wird, das wie gefordert funktionieren wird. Wenn dagegen der direkte Setzeingang mit einem Netz verbunden ist, das immer auch logisch null ist, etwa dem Massenetz oder, beispielsweise, einem AND-Gatter, dessen einer Eingang mit einem Massenetz verbunden ist, wird lediglich das direkte Löschen tatsächlich erfordern und das Grundelement des Logik-Chip-D-Flip-Flops wird stattdessen ersetzt.
  • Ein S_RAM-Grundelement ist ein Speicher mit wahlfreiem Zugriff, mit Adresseneingängen, einem bidirektionalen Datenport, einer Lese-Freigabe und einer Schreib-Freigabe. RAM-Grundelemente werden in einem oder mehreren Speichermodulen der Realizer-Ausgestaltung aufgelistet. Die Software für die Grundelementen-Konversion wandelt das S_RAM in eine oder mehrere X_RAM-Grundelemente, die direkt verfügbaren Konfigurationen des Ausgestaltungsspeichers entsprechen. Ein S_ROM (Nur-Lese-Speicher)- Grundelement ist genau wie ein S_RAM mit der Ausnahme des Fehlens von Freigabe-Eingängen und der Hinzufügung eines Files, das die ROM-Inhalte beinhaltet. Es wird in eines oder mehrere X_ROM-Grundelemente gewandelt, die direkt den Ausgestaltungen des Ausgestaltungsspeichers entsprechen. Ein X_ROM hat einen Lese-Freigabeeingang, nicht aber eine Schreib-Freigabe. Der Pfadname für den Inhalt-File und sein Ort bezüglich dem ursprünglichen S_ROM ist mit jedem X_ROM-Grundelement gespeichert. Wenn die Realizer-Hardware mit seiner Ausgestaltung konfiguriert wird, wird der Pfadname durch das Konfigurationssystem verwendet, um die X_ROM-Inhalte aufzunehmen und diese in den Ausgestaltungsspeicher durch die Host-Schnittstelle zu laden. S_RAM mit gesonderten Eingangs- und Ausgangs-Datenports werden entsprechend gehandhabt, sie sind in dem Grundelementen-Set des Mentor Graphics QuickSim nicht gezeigt.
  • Pins und Netze in der Vorlageausgestaltung können Initialisierungseigenschaften ausführen oder "inits", um anzugeben, daß sie dazu dienen, einige Ausgangswerte auszuführen, in manchen Fällen ständig. Lediglich die permanenten Inits eines bekannten Werts (null oder eins) werden von dem Realizer-System beobachtet, und sie verursachen, daß der Stift oder das mit der geeigneten "Masse" (das heißt logisch null) oder "vcc" (das heißt logisch eins)-Netz verbunden zu werden. In dem besonderen Fall des Mentor Graphics:
  • * T, X, R und Z inits werden ignoriert:
  • Nur 0SF (= 0 = OS) oder 1SF (= 1 = 1S) werden beachtet.
  • * 0SF oder 1SF auf einem Netz oder auf einem Ausgangsstift oder einem Netz, macht es zum Teil des Masse- oder vcc-Netzes.
  • * 0SF oder 1SF auf einem Eingangsstift bewirkt, daß der Stift gelöst wird, und mit dem Grund- oder vcc-Netz verbunden wird.
  • Ausgangspins in der Ursprungs-Ausgestaltung können unterschiedliche Antriebsstärken ausführen, um den Typ der Ausgangsstruktur, die von einem Stimulator zu modellieren ist, zu bestimmen. Das Realizer-System beobachtet diese Stärken in einem gewissen Ausmaß in der Grundelemente-Konversion. Wenn ein Ausgang als keine Antriebsstärke habend markiert wird, wenn hohe und starke Stärken gering sind, wird es als ein offener Kollektor identifiziert, und es ist zulässig für diesen, mit anderen Ausgängen und so mit einem Widerstand verbunden zu werden, der etwas bildet, was Logik- Ausgestalter als "wired-and"-Netz bezeichnen (Fig. 45b). Entsprechend ist ein Ausgang, der keinen Antrieb niedrig hat und der stark hoch ist, ein offener Emitter und wird verwendet, um "wired-or"-Netze zu bilden. Schließlich hat ein Ausgang eines XFER-Grundelementes keinen Antrieb, bis er freigegeben ist, und kann mit anderen XFER-Ausgängen und einem Widerstand verdrahtet werden, um ein "tri-state"-Netz zu bilden (Fig. 45 c).
  • All diese Strukturen werden von dem Konversionssystem für die Grundelemente erkannt und werden zu einem Produktsummen-Logik-Netzwerk mit äquivalenter Funktionalität konvertiert, wie dies in dem Abschnitt bezüglich der Tri-State-Netze diskutiert wird. In dem besonderen Fall von Mentor Graphics:
  • * Die X-Zustands-Antriebsstärke wird ignoriert.
  • * Ein oder mehrere XFER-Ausgänge können zu einem Netz verbunden werden, jedoch können keine anderen Ausgänge verbunden werden. Eine Ausnahme besteht darin, daß ein RES (Widerstand), dessen Eingangspin mit Masse- oder vcc-Netzen verbunden ist, auch verbunden wird. Wenn keine XFER freigegeben sind, wird der Netzwert logisch null sein, wenn nicht RES, daß mit vcc verbunden ist, verbunden wird, in welchem Fall es zu logisch eins wird. Wenn mehr als ein XFER freigegeben wird, ist das Ergebnis ein logisches OR.
  • * OC/OE-Ausgänge (SZ/ZS) können lediglich Netze betreiben, die auch mit entsprechenden Treibern betrieben werden. OC-Netze gehen auf hoch, wenn sie nicht betrieben werden, OE-Netze gehen tief, unabhängig davon, ob RES verbunden ist.
  • * Grundelemente mit RZ, ZR, RS, SR und ZZ-Ausgangstreiber werden eliminiert, ohne Fehler.
  • * Die folgenden Ausgangs-Netzwerkbedingungen verursachen fatale Fehler: mehr als ein stark, stark und Widerstand, mehr als ein Widerstand, XFER und stark, XFER und SZ, XFER und ZS, SZ oder ZS ohne Widerstand, SZ oder ZS mit stark, SZ und ZS.
  • Die besonderen Verfahren, die verfolgt werden, um Grundfunktionen in dem bevorzugten Ausführungsbeispiel mit einem Mentor-Graphics-Host und einem Xilinx LCA konvertiert werden, sind wie folgt (Subroutinen-Namen folgen jeder Kopfzeile):
  • 1) Ausgangskonversion der host-spezifischen Grundelemente in LCA-Grundelemente (konvertiere_s_to_x). Host-spezifische Grundelemente ergeben sich aus dem Mentor-Graphics-QuickSim, das oben angegeben worden ist und werden mit einem "S_"-Präfix bezeichnet. LCA-spezifische Grundelemente ergeben sich aus der Xilinx .xnf-Spezifikation und werden mit einem "X_"- Präfix bezeichnet.
  • Für jedes Grundelement gilt:
  • Wenn S_INV, ersetze durch X_INV, ersetze die Stiftnamen.
  • Wenn S_BUF, ersetze durch X_BUF, ersetze die Pinbezeichnungen.
  • Wenn S_RES, ersetze durch X_BUF, RR- Antrieb, ersetze Pinbezeichnungen.
  • Wenn S_DEL, verschmelze die Ein- und Aus- Netze miteinander.
  • Wenn S_AND, S_NAND, S_OR, S_NOR, S_XOR, S_XNOR, ersetze durch X_AND, X-NAND, X_OR, X_NOR, X_XOR, X_XNOR, ersetze die Pinbezeichnungen.
  • (Wenn > 25 Pins, Fehler)
  • Wenn S_REG, ersetze durch X_DFF, ersetze Pinbezeichnungen.
  • Wenn S_LATCH, ersetze durch X_DLAT, ersetze Pinbezeichnungen.
  • Wenn S_XFER lasse es für später.
  • Wenn S_NULL lösche es.
  • Wenn S_RAM oder S_ROM, lasse es für später.
  • Nächstes Grundelement.
  • 2) Verarbeitung von "inits" (get inits). Zwei Netze in der Datenstruktur der in dem Speicher befindlichen Ausgestaltung sind besonders: "gnd" (das heißt logisch null) und "vcc" (das heißt logisch eins).
  • Für jedes Netz gilt:
  • Wenn seine Init-Eigenschaft 0SF ist,
  • Wenn das Massenetz noch nicht gefunden worden ist, ist es dieses, nächstes Netz, ansonsten verbindet dieses Netz mit dem Grundelement, nächstes Netz.
  • Wenn die Init-Eigenschaft des Netzes 1SF ist,
  • Wenn das vcc-Netz bisher noch nicht gefunden ist, ist es dies, nächstes Netz.
  • Ansonsten verknüpfe dieses Netz mit dem vcc- Netz, nächstes Netz.
  • Für nächsten Ausgangspin:
  • Wenn die Init-Eigenschaft des Pins 0SF ist:
  • Wenn das Masse-Netz noch nicht gefunden worden ist, ist es dieses, nächstes Netz, ansonsten vermische dieses Netz mit dem Masse-Netz, nächstes Netz.
  • Wenn die Init-Eigenschaft des Netzes 1SF ist:
  • Wenn das vcc-Netz bisher noch nicht gefunden worden ist, ist es dieses, nächstes Netz,
  • ansonsten vermische dieses Netz mit dem vcc-Netz, nächstes Netz.
  • Nächster Pin.
  • Nächstes Netz.
  • Für jedes Netz:
  • Nimm die Stiftaufzeichnungen in eine Liste.
  • Für jeden Eingabestift:
  • Wenn die Init-Eigenschaft des Netzes 0SF ist und es nicht das Grundnetz ist, löse den Pin von dem Netz, verbinde ihn mit dem Masse-Netz.
  • Wenn die Init-Eigenschaft 1SF ist und es nicht das vcc-Netz ist, löse den Pin von dem Netz, verbinde ihn mit dem vcc-Netz.
  • Nächster Pin.
  • Nächstes Netz.
  • 3) Prüfe alle Ausgangspins zum Entfernen von Grundelementen mit (für das Realizer-System) ineffektiven Antriebsstärken und entferne XFER, die immer freigegeben oder gesperrt sind (clear_drives).
  • Für jedes Grundelement:
  • Wenn der Ausgangspin keinen Antrieb hat, ist SS, RR, SZ oder ZS, nächstes Grundelement.
  • Wenn es RZ, ZR, RS, SR oder ZZ hat, löse und eliminiere es.
  • Wenn es ein S_XFER:
  • Wenn der EO (Freigabe)-Pin konstant tief ist, lösche das Grundelement.
  • Wenn der EO-Pin konstant hoch ist, setze ein BUF.
  • Nächstes Grundelement.
  • 4) Aussortieren unzulässiger Mehrausgangs-Verbindungen und Identifizieren und Wandeln von wired-or, wired-and und Tri-State-Netzen und ihren Treibern (wired-Netz).
  • Für jedes Netz:
  • Nimm die Pin-Aufzeichnungen in eine Liste.
  • Zähle auf die XFER-Ausgangsstifte, Eingangsstifte und non-XFER-Ausgangsstifte, die stark sind, widerstandsfähig SZ (offener Kollektor) oder ZS (offener Emitter).
  • Wenn nur ein Ausgangsstift, der Stärke oder keine Stärke hat, nächstes Netz.
  • Wenn einer oder mehrere Widerstände verbunden sind, stelle sicher, daß alle Verbindungen entweder auf "vcc" ist (pullup) oder auf "Masse" (pulldown) und merke dies.
  • Fehler und Ausgang, wenn:
  • > 1 stark, > 1 Widerstand, XFER & strong, XFER & SZ, XFER & ZS. SZ oder ZS ohne Widerstand, SZ oder ZS mit Stärke, SZ & ZS.
  • Wenn 1 stark und 1 widerstandsfähig, lösche die Grundfunktion mit widerstandsfähigem Antrieb.
  • Wenn > 1 SZ: (offener Kollektor wired-and)
  • Für jeden Ausgangspin:
  • Wenn Widerstand: stelle sicher, daß es ein pullup ist, dann lösche ihn.
  • Sonst: löse den Pin, mache den Pinantrieb stark, erzeuge ein X_INV, verbinde seinen Eingang mit dem Ausgang und seinen Ausgang mit dem Netz.
  • Nächster Pin.
  • Markiere das Netz als ein Tri-State-Netz mit "schwebendem Hoch", so daß der Verbinder ihn mit OR/NOR-Gattern konfigurieren wird.
  • Wenn > 1 ZS: (offener Emitter, wired-or)
  • Für jeden Ausgangspin:
  • Wenn Widerstand: stelle sicher, daß es ein pulldown ist, dann lösche ihn.
  • Sonst: mache den Pinantrieb stark.
  • Nächster Pin.
  • Markiere das Netz als ein Tri-State-Netz mit "schwebendem Tief", so daß der Verbinder ihn mit OR-Gattern konfigurieren wird.
  • Wenn > 0 XFER und andere keinen Widerstand oder pulldown: (Tri-State "schwebendes Tief")
  • Für jedes S_XFER:
  • Ändere S_XFER auf ein X_AND, mit XFER E0 (oder ENA) wird zu AND I0, und XFER I0 wird AND I1.
  • Nächstes S_XFER.
  • Lösche jede Widerstands-Grundelemente
  • Markiere das Netz als ein "schwebendes Tief"- Tri-State-Netz, so daß der Verbinder es mit OR-Gattern konfigurieren wird.
  • Wenn > 0 XFER und pullup: (Tri-State "schwebendes Hoch")
  • Wenn 1 S_XFER-Grundelement:
  • Ändere S_XFER auf ein X_AND mit XFER E0 (oder ENA) zu NAND I0 werdend, und XFER I0 zu NAND I1 werdend, invertiert.
  • Wenn > 1 X_XFER Grundfunktion:
  • Für jedes X_XFER:
  • Ändere es in ein X_AND mit XFER E0 (oder ENA), das zu AND 10 wird und XFER 10 wird zu AND I1 invertiert.
  • Nächstes X_XFER.
  • Lösche das bzw. die Widerstandsgrund element(e).
  • Markiere das nächste Netz als "schwebendes Hoch" tri-state-Netz derart, daß der Verbinder es mit OR/NOR- Gattern konfigurieren wird.
  • Nächstes Netz
  • 5) Ersetze alle Gatter mit mehr als einem Eingang als in dem Grundelement des LCA-spezifischen Gatters zulässig, durch ein Netzwerk von Gattern mit einer äquivalenten Funktion, wobei jedes eine zulässige Anzahl von Eingängen hat (wide_gates)
  • Für jedes Grundelement:
  • Wenn sein eines Gatter und die Eingänger > 5 und (unter der Annahme, daß XC3000 Logikchips verwendet werden) und Eingänge < = 25:
  • Erzeuge ein End-Ausgangsgatter desselben Typs. Verbinde seinen Ausgang mit dem ursprünglichen Ausgang und Kopieeigenschaften.
  • Für kleinere erforderliche Eingangsgatter:
  • Verteile es (verteile AND für AND oder NAND-Ursprünge, usw.)
  • Verbinde seinen Ausgang mit einem End- Eingang.
  • Verbinde seine Eingänge mit realen Eingängen.
  • Nächstes Gatter.
  • Lösche das ursprüngliche weite Gatter.
  • Nächstes Grundelement.
  • 6) Prüfe auf die Flip-Flop-Funktionalität und setze wie erforderlich, um LCA-Beschränkungen zu entsprechen. Wenn die XC3000 Familie benutzt wird, können Flip-Flops ein direktes Löschen, nicht aber ein direktes Setzen haben und nicht beides. Da alle S_DFFs, die eingehen, Pins zum Setzen und zum Löschen haben, sollte das Grundelement unabhängig davon ersetzt werden, da es weniger Pins hat. Latches sollten durch äquivalente Gatter-Netze ersetzt werden, da XC3000 Latches nicht unterstützt (flops_for_3K)
  • Für jedes Grundelement:
  • Wenn es ein DLAT oder DFF ist:
  • Erinnere und trenne jeden Pin.
  • Finder heraus, ob SD und RD konstant tief sind durch Prüfen ihrer Netze, um zu sehen, ob sie "Masse" oder "vcc" ist, entweder direkt oder indirekt durch Gatter.
  • Wenn es ein DLAT ist:
  • Baue ein Netzwerk von Gattern ein, um das Latch zu konfigurieren, einschließlich der Gatter für SD und/oder RD, nur falls erforderlich.
  • Lösche die ursprüngliche Grundelementen- und Pinaufzeichnungen.
  • Oder aber wenn es ein DFF ist:
  • Wenn SD konstant tief ist, erzeuge ein X_DFF ohne SD und verbinde es.
  • Wenn dagegen RD tief aber nicht SD ist, erzeuge ein X_DFF mit X_INVs auf dem Eingang und dem Ausgang und verbinde es unter Verbindung des X_DFF RD-Pins mit dem SD-Netz.
  • Ansonsten erstelle ein Netzwerk von sechs 3-in NAND und 2 INV, die ein DFF mit Setzen und Löschen wie ein TTL 7474 konfiguriert.
  • Lösche das ursprüngliche Grundelement.
  • Nächstes Grundelement.
  • 7) Konvertiere die S_RAMs und S_ROM in X_RAM und X_ROM.
  • für jedes Grundelement:
  • Wenn es ein S_RAM oder S_ROM ist:
  • Bestimme seine Höhe (Anzahl von Worten) durch Zählen der Adreßpins (Höhe = 2 zu der Stärke der Pinzahl) und seine Breite gleich der Anzahl von Datenpins.
  • Für jede verfügbare Konfiguration des Ausgestaltungsspeichers:
  • Teile die S_RAM/ROM-Höhe durch die Höhe des Ausgestaltungsspeichers, um die Anzahl von Reihen von Modulen zu erhalten.
  • Dividiere die S_RAM/ROM-Breite mit der Breite des Ausgestaltungsspeichers, um die erforderliche Anzahl von Spalten von Modulen zu erhalten.
  • Die Gesamtzahl der erforderlichen Module für diese Ausgestaltung ist die Anzahl der Reihen bei der Anzahl der Spalten.
  • Nächste Konfiguration.
  • Wähle die Ausgestaltung, die die geringste Anzahl der erforderlichen Module hat.
  • Wenn mehr als Reihen von Modulen erforderlich ist, erzeuge Grundelemente und Netze für einen Decoder mit einem Ausgang für jede Reihe von Modulen und mit Eingängen, die mit Adreßnetzen höherer Ordnung verbunden sind.
  • Für jede Reihe:
  • (nur X_RAM) erzeuge ein AND-Gatter für eine Reihenschreibfreigabe mit zwei Eingängen: Der Decoderausgang für die Reihe und die S_RAM-Schreibfreigabe. Erzeuge ein AND- Gatter für eine Reihenlesefreigabe mit zwei Eingängen: dem Decoderausgang für diese Reihe und dem S_RAM-Lesefreigabe.
  • Nächste Reihe.
  • Für jede Reihe von Modulen:
  • Für jede Spalte:
  • Erzeuge ein X_RAM/ROM-Grundelement und speichere seine Konfiguration.
  • Wenn X_ROM, Speicher seine File-Bezeichnung und seine Reihen- und Spaltenzahl. Verbinde seine Schreib- und Lesefreigabepins mit den Lese- und Schreib- (nur X_RAM) Freigabepins für diese Reihe (oder das bzw. die S_RAM Freigabe(n), wenn nur eine Reihe).
  • Verbinde seine Adreßpins mit den Adressennetzen geringerer Ordnung.
  • Verbinde seine Datenpins mit dem Satz von Datenpins entsprechend dieser Spalte.
  • Nächste Spalte.
  • Nächste Reihe.
  • Lösche das Ursprungs S_RAM/ROM-Grundelement.
  • Nächstes Grundelement.
  • 2.3 Partitionierer
  • Die Realizer-Hardware besteht aus einer Hierarchie von Einheiten und Untereinheiten. Karten, die Logikchips beinhalten, Boxen, die Karten beinhalten, Racks, die Boxen beinhalten usw. Jede Einheit hat seine eigene Kapazität für Logik und für Verbindungen mit anderen Einheiten. Zu verwirklichende Ausgestaltungen sind in mehrere Gruppen von Funktionen entsprechend dieser Hierarchie partitioniert (das heißt aufgeteilt). Es gibt einen Satz von Partitionen für Boxen, die entsprechend der Logik und der Kapazität für jede Box in ihrer Größe bestimmt sind. Jede dieser Partitionierungen ist in Subpartitionierungen für die Karten aufgeteilt usw., bis hinunter zu Partitionierungen, die ausreichend gering sind, um in einem einzigen logischen Chip programmiert zu werden. Dasselbe Partitionierungsverfahren wird auf jeder Ebene der Hierarchie wiederum angewendet.
  • Die Ziele des Partitionierens sind:
  • 1) Das Zuordnen jedes Grundelements zu einer Box, einer Karte und einem logischen Chip.
  • 2) Zum Erhalten der Anzahl von Netzen, die eine Partitionierung unterhalb der Verbindungsfähigkeit der Einheit (Box, Karte oder Logikchip) verbinden.
  • 3) Zum Erhalten der Menge der durch die Partitionierung verwendeten Logik innerhalb der Grenzen der Einheit, und
  • 4) zum Minimieren der Gesamtanzahl von Partitionierungen und daher der Anzahl der verwendeten Einheiten.
  • 2.3.1 Partitionierungsmethode
  • Die hier bevorzugte Partitionierungsmethode basiert auf dem Verfahren der Gruppenbildung gemeinsam mit logischen Grundelementen, die beide in hohem Maße miteinander verbunden sind und eine minimale Anzahl von "Schnittnetzen" (Verbindungen mit Grundelementen außerhalb der Gruppe) haben. Jede Gruppe ist eine Partitionierung entsprechend einer Box, einer Karte oder eines LChip. Das Verfahren basiert auf einer vorbekannten Partitionierungsmethode von Palesko and Akers (Chet A. Palesko, Lex A. Akers, "Logic Partitioning for Minimizing Gate Arrays", IEEE Trans. auf CAD, Nr. 2, Seiten 117-121, April 1983), mit erheblichen Verbesserungen, wie dies unten angegeben werden wird.
  • Es gibt eine "Nullgruppe" bestehend aus den Grundelementen, die bisher noch nicht einer Gruppe zugeordnet sind, die ursprünglich alle Grundelemente beinhaltet. Jede Gruppe ist durch erstes Auswählen eines Ausgangsgrundelements von der Nullgruppe gebildet und anschließendes wiederholtes Berechnen des "Vorteils" aller Nullgruppen-Grundelemente und Wählen der Grundelemente mit dem höchsten Vorteil. Um so größer der Vorteil der Grundelemente, um so besser ist es dazu geeignet, in die Logikgruppe bewegt zu werden.
  • 2.3.2 Vorteilsfunktion
  • Der Vorteil basiert teilweise darauf, wie sich die Anzahl der Gruppenschnittnetze ändern würde, wenn dieses Grundelement in die Gruppe bewegt werden würde. Die Gesamtanzahl von Schnittnetzen einer Gruppe muß gezählt werden, um unterhalb der maximalen Verbindbarkeit der Einheit zu bleiben. Jedes Netz, das einen Pin des Grundelements beinhaltet, wird übertragen und klassifiziert entweder als ein "eingeschlossenes" Netz, ein "mehrfach geschnittenes" Netz oder ein isoliert geschnittenes Netz, unter der Annahme, daß das Grundelement in die Gruppe bewegt werden würde. Ein geschnittenes Netz wäre ein Einzelnetz, wenn eine oder nur eine Verbindungen im Inneren der Gruppe wäre und ein mehrfaches Netz, wenn eine Verbindung innerhalb der Gruppe wäre. Ein eingeschlossenes Netz ist ein Netz, das vollständig in einer Gruppe beinhaltet wäre.
  • Figur 46 zeigt eine Gruppe und fünf Grundelemente, die durch drei Netze S, M und E verbunden sind und was passieren würde, wenn die schattierten Grundelemente in die Gruppe bewegt werden würden. Das Netz S wäre unter Erhöhung der Schnittnetzanzahl der Gruppe um eins ein einzelnes. Das Netz E wäre unter Verringerung der Anzahl der Schnittnetze um eins ein geschlossenes. Das Netz M wre ein mehrfach geschnittenes Netz, das die Anzahl der Gruppe der geschnittenen Netze weder erhöht noch verringert und daher nicht zu berücksichtigen wäre. Die Anzahl der Gruppennetze ist die Differenz zwischen den einzelnen und geschlossenen Netzen:
  • Änderung der Clusterschnitte = einzeln geschnittene Netze - geschlossene Netze.
  • Die bevorzugte Vorteilsfunktion quantifiziert jedes Grundelement um zu bestimmen, welches die beste Wahl wäre, um in die Gruppe bewegt zu werden. Die beste Wahl ist das am dichtesten verbundene Grundelement mit der größten Anzahl von Pins. Die Funktion basiert auf der ursprünglichen Partitionierungs-Vorteilsfunktion von Palesko and Akers:
  • Wenn die Änderung der Gruppenschnitte > 0:
  • Vorteil = Anzahl der Stifte der Grundelemente/Änderung der Gruppenschnitte.
  • Sonst:
  • Vorteil = (-(Änderung in Gruppenschnitten) * 100) + 100 + Anzahl der Stifte des Grundelementes.
  • Bei dem Bewegen dieses Grundelements in die Gruppe nimmt die Anzahl der Gruppenschnitte zu, um so mehr Pins es hat und um so weniger Schnittnetze es hinzufügt, um so besser. Wenn es die Gruppenschnitte verringert, wird das Ausmaß der Zunahme um 100 vergrößert und 100 wird addiert um sicherzustellen, daß dieser Vorteilswert größer ist als der Wert jedes Grundelements, das nicht die Schnitte verringert. Die Anzahl der Pins wird zu Bruchschleifen in der Clusterschnittabnahme addiert unter Bevorzugung der Grundelemente mit mehr Pins.
  • Die Verbesserung, die bei der bevorzugten Methode verwendet wird, ist das Addieren eines Pinnummernausdrucks zu der Pinnummer/Schnittänderungsverhältnis, wenn dort eine Zunahme an Gruppenschnitten wäre. Die Änderung vergrößert die ursprüngliche Auswahl durch Wählen des Grundelements mit der Größenanzahl von Pins, wenn ihre Verhältnisse gleich sind. Das Verhältnis wird mit zehn multipliziert, so daß es über die Pinzahl alleine hinaus geht. Es gibt eine bevorzugte Vorteilsfunktion:
  • Wenn die Änderung der Clusterschnitte > 0:
  • Vorteil = ((10 * Anzahl der Pins des Grundelements/Änderung der Clusterschnitte) + Anzahl der Stifte des Grundelements.
  • Ansonsten:
  • Vorteil gleich (-(Änderung der Clusterschnitte) *1000) + 100 + Anzahl der Pins des Grundelements.
  • 2.3.3 Aufbauen von Gruppen
  • Zunächst sind alle Gruppenelemente in bestimmte Gruppen vorplazieren von Eigenschaften in der Eingabeausgestaltung zum Angeben der LChip, der Karte usw. der Wahl. Die vorangeordneten Grundelemente dienen dann als Ausgangsanordnung für die Gruppenbildung. Dies erlaubt es dem Verwender, zeitempfindliche oder eine andere Priorität habende Grundelemente zu verwenden und ändert die Partitionierungsergebnisse durch Zusammenbringen anderer Grundelemente, die in hohem Maße den Grundelementen hoher Priorität verbunden sind.
  • Bei dem Beginn jeder neuen Gruppe wird jeder Vorteil eines nicht-plazierten Grundelements für die neue Gruppe berechnet und in der Grundelementenaufzeichnung gespeichert. Wenn es keine Vor-Anordnungen gibt, wird das Grundelement mit dem größten Vorteil (das heißt, dasjenige mit dem höchsten Vorteuswert) als Ausgangs- Grundelement für die Gruppe gewählt. Nachdem jedes Grundelement mit dem maximalen Vorteil in die Gruppe bewegt worden ist, werden diejenigen Grundelemente mit einem Stift auf einem derselben Netze wie das bewegte Grundelement ihren Vorteil neu berechnet. Da die anderen Grundelemente nicht durch die Bewegung beeinflußt worden sind, bleiben ihre Vorteile für die Gruppe unverändert. Sodann werden die Grundelemente mit dem neuen maximalen Vorteil in die Gruppe bewegt usw., bis die Gruppe voll ist.
  • Das Bestimmen, wann die Gruppe voll ist, hängt sowohl von der logischen Kapazität als auch von den Verbindungen ab (das heißt den Gruppenschnittnetzen). Wenn ein Grundelement in die Gruppe bewegt wird, wird es immer die Anzahl der Gatter in der Gruppe erhöhen. Es wird jedoch nicht immer die Anzahl der Schnittnetze erhöhen, es kann diese verringern. Es ist möglich, daß die Gruppe ein örtliches Maximum an der Grenze seiner Verbindungen erreicht und noch eine logische Kapazität für zusätzliche Grundfunktionen hat, die die Anzahl der Schnittnetze verringern kann.
  • Wenn die Methode von Palesko und Akers die Verbindungsgrenze erreicht, erlaubt sie es, Grundfunktionen mit einem geringeren als maximalen Vorteil hinein zu bewegen, wenn sie nicht die logische Kapazität der Verbindungsgrenze übersteigt, sie es erlaubt jedoch nicht das Bewegen von Grundelementen über ein lokales Verbindungsmaximum. Das hier beschriebene Verfahren ist insofern verbessert, als daß es beides tut:
  • Es gibt ein Feld von Markierern, ein für jede mögliche Bewegung. Grundelemente werden in die Gruppe eine nach der anderen bewegt. Nach jeder Bewegung wird die Anzahl der Gruppenschnittnetze geprüft. Wenn es unterhalb der maximalen zulässigen Verbindungskapazität für die Einzeit ist, wird die Bewegung als für Verbindungen zulässig markiert. Wenn die Grenze der maximalen logischen Kapazität erreicht ist, werden, wenn die letzte Bewegung nicht als für eine Verbindung zulässig markiert worden war, Bewegungen zurückgeführt, bis die letzte verbindbare Bewegung gefunden worden ist.
  • Um eine Einheit (Rack, Box oder Karte) in Untereinheiten (Boxen, Karten oder LChips):
  • Bewege alle Grundelemente, die nicht vorplaziert werden in eine Null-Gruppe.
  • Für jede Gruppe:
  • Berechne und speichere den Vorteil für jedes Null-Gruppenelement.
  • Null-Bewegungszähler
  • Während die Grundelementenzahl < logische Kapazität
  • Inkrementiere Bewegungszähler.
  • Bewege Grundelement mit maximalen Vorteil in Gruppe.
  • Zeichne auf, welches Grundelement in Bewegung bewegt wurde. [Bewegungszähler]
  • Wenn Gruppenschnittnetze < maximale Verbindungskapazität, markiere Bewegung [Bewegungszähler] = OK.
  • Sonst markiere [Bewegungszähler] = NOT OK.
  • Berechne Vorteil der Grundelemente auf Netzen, die mit diesem verbunden sind.
  • Nächste Iteration.
  • Wenn das Bewegen [Bewegungszähler] = NOT OK:
  • Bewege die aufgezeichneten Grundelemente in Bewegung [Bewegungszähler] aus der Gruppe.
  • Dekrementieren Bewegungszähler.
  • Nächste Iteration.
  • Nächste Gruppe.
  • Der Partitionierungsvorgang setzt sich fort, bis alle Grundelemente erfolgreich in Gruppen plaziert sind oder bis alle Gruppen voll sind und das Verfahren versagt.
  • Um die gesamte Ausgestaltung bei dem bevorzugten Ausführungsbeispiel zu gestalten:
  • Partitionieren in Boxen auf der Rack-Ebene, eine Gruppe für jede Box, unter Verwendung der maximalen logischen Kapazität = die gesamte Box und die maximale Verbindungskapazität = Y-Z-Pfade pro Box.
  • Für jede Boxgruppe:
  • Partitionieren in Karten auf der Box-Ebene, eine Gruppe für jede Karte, unter Verwendung der maximalen logischen Kapazität = X-Y-Pfade pro Karte.
  • Nächste Boxgruppe.
  • Für jede Kartengruppe:
  • Partitionieren in LChips auf der Plattenebene, eine Gruppe für jedes LChip unter Verwendung der maximalen logischen Kapazität = LChip und maximale Verbindungskapazität = L-X-Pfade pro LChip.
  • Nächste Kartengruppe
  • 2.3.4 Kapazitätsgrenzen
  • Definieren der maximalen logischen Kapazitätsgrenze, die bei diesem Verfahren verwendet wird, hängt von die Eigenschaften der verwendeten Logik-Chips ab. Wenn Xilinx LCA als Logik-Chips verwendet werden, basieren sie auf konfigurierbaren Logik-Blocks (CLB). Jedes CLB kann viele Gatter und Flip-Flops implementieren. Wieviele, hängt von den Gatter- und Flip-Flop-Funktionen ab, wieviele von ihnen vorhanden sind und wie viele Pins sie haben, und davon, wie sie miteinander verbunden sind. Wenn die Ausgestaltung in die CLB-Form vor dem Partitionieren konvertiert wird, sind die CLB die partitionierten Grundelemente, und die Grenze der logischen Kapazität basiert auf der Anzahl der CLB in dem LCA. Falls nicht, sind die Gatter die partitionierten Grundelemente, und die Grenze basiert auf der Anzahl der Gatter, von denen erwartet werden kann, daß sie in das LCA passen. Die Gatter werden entsprechend dem Ausmaß gewichtet, in dem sie Kapazität verwenden, um die Partitionierungsergebnisse zu verbessern.
  • Die Grenzen, die verwendet werden, um jede Gruppe aufzubauen, müssen nicht immer dieselben sein. Wenn unterschiedliche logische und Bindungskapazitäten unter den Einheiten vorhanden sind, werden die geeigneten Grenzen zum Aufbau der Gruppen für diese Einheiten verwendet.
  • 2.3.5 Realizer-Partitionierung
  • Das Ergebnis des Partitionierungsprozesses ist ein durch drei Zahlen angegebener Box-/Karten-/Chip-Ort für jedes Grundelement in der Ausgestaltung, die in der Grundelementen-Aufzeichnung in der Ausgestaltungsdatenstruktur gespeichert ist. Dieses erlaubt das Nachverfolgen jedes Grundelementes eines Netzes in der Ausgestaltung über LChips, Karten und Boxen. Die Netzzeit kann durch Nachverfolgen eines Netzes durch das System und Summieren der Verzögerungen durch die Verbindungs- Kreuzschienen-Chips und die Logik-Chips abgeschätzt werden.
  • Während der Verbindungsphase wird die Netzliste, basierend auf der Gesamtanzahl der unterschiedlichen Box/Karten/Chip-Grundelementekombinationen, die in dem Netz beinhaltet sind, geortet. Sodann werden die Verbindungen von dem geringstkomplexen bis zu dem höchstkomplexen Netz ermittelt.
  • Schließlich müssen lokale schematische Logik-Änderungen nicht repartitioniert werden, da die Grundelemente eines Netzes und die Netzaufzeichnung Informationen beinhaltet, die insbesondere das Netz über die LChips und die Kreuzschienen-Chips auflisten, und lediglich die chips, die die geänderten Netze beinhalten, müssen aufgefrischt werden. Das Ergebnis ist die Fähigkeit zur inkrementellen Änderung der Ausgestaltung ohne das Erfordernis, die Ausgestaltung zu repartitionieren.
  • 2.4 Das Netzlisting und das Verbindungssystem
  • Die Aufgabe des Realizer-Netzlistings und des Verbindungs-Konversions-Systems ist das Erzeugen von Netzlisten-Files für jeden Logik- und Kreuzschienen-Chips in dem Realizer-System, das verwendet wird, um die Realizer-Hardware entsprechend der Eingabe-Ausgestaltung zu konfigurieren. Das Bestimmen, wie die Partial-Kreuzschienen-Verbindung netzzulisten ist, wird als ein integraler Teil dieses dreistufigen Prozesses ausgeführt.
  • Stufe 1: Anweisungen werden an die Logik-Chips-Netzlisten-Files in der Ausgestaltungsdatenstruktur, Grundelement nach Grundelement ausgegeben.
  • Stufe 2: Anweisungen für die Summierungsgatter für Tri-State-Netze die vollständig in einem einzigen Logik-Chip beinhaltet sind, werden ausgegeben, Netz nach Netz.
  • Stufe 3: Die Verbindungen für die Netze, die zwischen mehr als einem Logik-Chip verlaufen, werden genetzlistet. Schnittnetz nach Schnittnetz, die Anweisungen für alle Verbindungspuffer für dieses Netz in allen Chips und Summierungsgatter für dieses Netz in Kreuzschienen-Chips werden ausgegeben. Die Bestimmung der Spezifität, wie das Netz zu verbinden ist, wird als ein Teil ds Prozesses gemacht, das selbst vier Stufen hat:
  • Stufe 3a: Ein Baum wird konstruiert, der zeigt, wie das Netz durch jede Kreuzschiene verlaufen wird und wo die logischen Betreiber und die Empfänger lokalisiert sind.
  • Stufe 3b: Jeder Satz von Kreuzschienen- Chips wird auf seine Fähigkeit, dieses Netz zu verbinden, evaluiert.
  • Stufe 3c: Der beste Satz von Kreuzschienen-Chips zum Verbinden dieses Netzes wird gewählt.
  • Stufe 3d: Basierend auf der Satzwahl und der Baumstruktur wird die Verbindung durch Ausgeben von Anweisungen für die Puffer und Summieren der Gatter zu den logischen und den Kreuzschienen- Netzlisten-Files verbunden.
  • Dieser Abschnitt besteht aus Diskussionen der Techniken, die bei jeder Stufe verwendet werden, verfolgt durch eine eingehende Definition der Gesamtverbindungen und des Vorgangs des Netzlistings und zwei detaillierte Beispielnetze.
  • 2.4.1 Einfache und Tri-State-Netzverbindungsstrukturen
  • Einfache Netze sind solche mit nur einem Treiber. Das Quellen-LChip, das die Treiber beinhaltet, treibt das Signal die Hierarchie hinauf zu dem Kreuzschienen-Chip, das alle Empfänger überspannt. Wege für treibende Empfänger sind die Hierarchie abwärts verbunden, um alle empfangenen LChips zu verbinden. Fig. 47, die in ihren Einzelheiten nachfolgend diskutiert werden wird, zeigt die Verbindung für ein einfaches Netz.
  • Ein Tri-State-Netz ist eins, das durch zwei oder mehr Tri-State-Treiber mit offenem Kollektor oder offenem Emitter betrieben wird. Es wird in der Ausgestaltungsdatenstruktur als einziges Netz dargestellt mit zwei oder mehr Treibern (Ausgangspins), von denen jedes eines des AND-Gatters ist, in das die Treiber während der Grundelement-Konversion transformiert worden ist, und einen oder mehreren Empfängern (Eingabepins). "Schwebend tiefe" Netze, diejenigen, die auf null sind, wenn kein Treiber freigegeben ist, werden durch AND-Gatter verwirklicht, die eines oder mehrere Summierungs-OR- Gatter treiben. "Schwebend hohe" Gatter haben invertierte Dateneingänge auf den AND-Gattern und das schließliche Summierungsgatter ist ein NOR. Dieselbe Topologie und dasselbe Grundverfahren wird in beiden Fällen angewendet.
  • Tri-State-Netze werden als eine Summe von Produkten mit normalerweise eindirektionalen Verbindungen und einem oder mehreren Summierungs-OR-Gattern implementiert. Treiber werden in Summierungs-OR-Gatter gesammelt, wenn ihre Wege bei dem Aufschreiten der Verbindungshierarchie von X zu Z konvergieren. Der Summierungs-OR- Gatterausgang auf der höchsten Ebene ist der wahre Wert des logischen Netzes, seine Quelle, das die Verbindungshierachie hinab mit allen Treibern aller Empfänger verbunden ist. Infolgedessen werden einige Chip-Paare (L-X, X-Y und/oder Y-Z) zwei Pfade erfordern, einen für den Treiber in das bzw. die Summierungs-OR-Gatter und ein anderes für das Ergebnis hinaus zu den Empfängern. Fig. 48, die im folgenden in ihren Einzelheiten diskutiert wird, zeigt die Verbindung für ein Tri-State- Netz.
  • 2.4.2 Bezeichnung
  • Verbindungen innerhalb eines logischen Chips sind in einem Netzlisten-File durch die Verwendung von Netzen mit einzigartigen Namen definiert. Diese Netze sind nicht zu verwechseln mit den Netzen in der Ausgestaltungsdatenstruktur. Jedes Ausgestaltungsnetz wird sein Gegennetz in den Logik-Chip-Netzlisten-Files haben, und die tatsächlichen Netznamen, die in dem Eingabe-Ausgestaltungs-File verwendet werden, werden in den Netzlisten-Files verwendet. Netze, die zu der Ausgestaltungsdatenstruktur während der Grundelementen-Konversion hinzugefügt werden, erhalten künstlich erzeugte Namen.
  • Netze, die nicht in der Ausgestaltungsdatenstruktur erscheinen, werden zu den Netzlisten-Files der Logik- Chips und der Kreuzschienen-Chips ausgegeben, um die Verbindungen anzugeben. Die Netze zwischen dem I/O- Puffer der Logik-Chips oder der Kreuzschienen-Chips und dem I/O-Pin, die Netze zwischen den AND-Gattern und dem bzw. den Summierungsgatter(n) einer Tri-State-Produktsumme, und die Netze, die hinauf zu und herab von den Verbindungen verlaufen, wenn die Kreuzschienen-Summierung verwendet wird, sind alle auf ein einziges Netz in der Ausgestaltung bezogen, sie sind jedoch unterschiedliche Netze in den Netzlisten-Files. Variationen der tatsächlichen Netzbezeichnung werden verwendet bei dem Ausgeben der Verbindungs-Grundelemente zu den Netzlisten-Files, um so unterschiedliche Netzbezeichnungen für jede dieser Verbindungsfunktionen zu schaffen.
  • Diese Chart listet alle Verwendungen jeder Bezeichnungsvariation auf. Namen mit nur einer Verwendung pro Ebene des Chips sind für die Netze zwischen einem I/O- Puffer und seinem Pin. Sie werden entsprechend dem Chip an dem anderen Ende der Verbindung zur Schaffung der Einheitlichkeit numeriert. Namen mit mehr als einer Verwendung pro Ebene des Chips definieren interne Verbindungen eines Kreuzschienen-Chips. Dies ist nur eine Beispiel vieler solcher möglicher Bezeichnungssysteme. Der Buchstabe "N" wird anstelle des tatsächlichen Netznamens in der Chart verwendet. Wenn, beispielsweise, das Netz, das verbunden wird, als "enable" bezeichnet wäre, wäre das Netz zwischen dem Eingangspuffer, das den Eingang von dem logischen Chip 6 und seinen I/O-Pin aufnimmt, als "ENABLE_D_6" bezeichnet.
  • "N": LChip: Wahrer Netzwert, wenn dieses LChip die Netzquelle ist.
  • Tri-State Treiber, wenn dort nur eine auf diesem LChip ist.
  • X, Y, ZChips: Eingangspuffer-Ausgangspin von Tochter, wenn dort ein Tochtertreiber ist. Ausgangspuffer-Eingangspin zu Tochter, wenn das Chip die Netzquelle ist.
  • alle Chips: Ausgangspuffer-Eingangspin zur Mutter. Summierungsgatter-Ausgang.
  • "N_R": LChip: Wahrer Netzwert, wenn diese Netzquelle woanders ist.
  • X, Y, ZChips: Ausgangspuffer-Eingangspin zur Tochter, wenn dieser Chip nicht die Netzquelle ist.
  • alle Chips: Eingangspuffer-Ausgangsstift von Mutter.
  • "N_R_c": X, Y, ZChips: Ausgangspuffer-Ausgangsstift zu Tochter, wenn "c" die Chipnummer der Tochter ist.
  • "N_P": alle Chips: Eingangspuffer-Eingangspin von Mutter.
  • "N_D": alle Chips: Ausgangspuffer-Ausgangspin zu Mutter.
  • "N_D_c": X,Y,ZChips:Eingangspuffer-Eingangspin von Tochter
  • "N_OR_i": LChip:Tri-State-Treiber, wenn mehr als eins auf diesem LChip ist, wobei "i" zwischen vielen solchen Treibern unterscheidet.
  • X, Y, ZChips: Eingangspuffer-Ausgangspin von Tochter, wenn dort mehr als ein Tochtertreiber ist.
  • alle Chips: Summierungsgatter-Eingang.
  • 2.4.3 Stufe 1: Das Netzlisten der logischen Grundelemente
  • Anweisungen werden an die Logik-Chip-Netzlisten-Files für alle logischen Grundelemente in der Ausgestaltungsdatenstruktur ausgegeben, Grundelement nach Grundelement. Die Namen der Netze, die mit Grundelementenpins verbinden werden so ausgeführt, daß sie den Bezeichnungen entsprechen, die für die Verbindungspuffer den Zustand 3d, unten, verwendet worden sind.
  • Eingabestifte werden mit ihren wahren Netznamen bezeichnet, wenn die Quelle für das Netz in demselben logischen Chip ist, das immer für die eingeschlossenen Netze wahr ist (Netze, die nicht geschnitten sind) und wahr ist auf dem treibenden LChip des geschnittenen Netzes. Wenn das LChip nicht die Quelle ist, werden Eingangspins der Eingangspuffer ihrer Mutterempfänger verbunden. Ausgabepins werden mit ihren wahren Netznamen verbunden, außer dann, wenn diese mit einem Summierungsgatter auf dem logischen Chip verbunden werden, in dem Fall, daß einzigartige Netzbezeichnungsvariationen verwendet werden.
  • 2.4.4 Stufe 2: Das Netzlisten der Summierungsgatter der logischen Chips
  • Anweisungen für die Summierungsgatter für Tri-State- Netze werden vollständig in einem einzigen logischen Chip ausgegeben, Netz nach Netz. Die Eingänge werden unter Verwendung der oben erwähnten Netznamenvariationen verbunden und der Ausgang treibt den wahren Netznamen. Der geeignete Ausgabesinn (OR oder NOR) wird in Abhängigkeit davon verwendet, ob das Netz ein "schwebend hohes" ist oder nicht.
  • 2.4.5 Stufe 3: Das Bestimmen und Netzlisten von Schnittnetz-Verbindungen
  • Die Verbindungen für Netze, die zwischen mehr als einem Logik-Chip verlaufen (geschnittene Netze) werden aufgelistet. Geschnittene Netze werden zu einem Zeitpunkt verarbeitet, durch die Stufen 3a, 3b und 3c für jedes der Netze.
  • 2.4.5.1 Stufe 3a: Das Bilden des Verbindungs-Baumes
  • Eine zeitweise Baumdatenstruktur wird aufgebaut, um den Verbindungsvorgang zu führen. Es repräsentiert die Struktur des Netzes durch Zeigen der LChips, die in diesem Netz Grundelemente haben, die X-, Y- und ZChips, die mit ihren Verbindungen implementieren und den Verbindungsanforderungen jedes von ihnen.
  • Jeder Knoten auf jeder Ebene ist ein Baum, der einem Logik- oder Kreuzschienen-Chip in dem System entspricht, er hat Verzweigungen zu den Tochterknoten, die unterhalb liegen, und speichert Daten über den Knoten und den Verbindungsweg zu seinen Töchtern wie folgt: Ebene Chip Verbindungspfad Wurzel: erste Ebene: zweite Ebene: dritte Ebene: ZChip YChip XChip LChip -keiner-Y-Z-Pfad X-Y-Pfad L-X-Pfad
  • Jedes in dem Netz beteiligte LChip wird durch nur einen Knoten in dem Baum repräsentiert, unabhängig davon, wieviele Grundelemente auf dem Netz es hat.
  • Jeder Knoten hat die folgenden Eingänge:
  • Chip-Nummer: Welches LChip auf der Karte, wenn die Karte in der Box oder welche Box in dem Rack. Ursprünglich NULL.
  • D- und R-Zahlen: Die Anzahl der Treiber (D) und der Empfänger (R), die für diesen Notenweg erforderlich sind. Ursprünglich NULL.
  • D- und R-Pfad: Welche Pfadnummer (aus verschiedenen für jeden L-X, X-Y oder Y-Z-Pfad verfügbar) für den Treiber verfügbar ist, der den Baum von diesem Knoten aus aufwärts geht und den Empfänger, der herunterkommt. Ursprünglich NULL.
  • det, um das letzte Gatter in einem Produktsummen-Multigatter zu steuern, so daß der Fall des "schwebend-hoch" seine Ausgangsinversion kennt. Ursprünglich falsch.
  • Wenn es nicht mehrere Boxen umspannt, wird der Wurzelknoten einen Nulleingang und nur einen Knoten auf der ersten Ebene haben. Wenn es nicht mehrere Karten umfaßt, wird der Knoten der ersten Ebene einen Nulleingang haben und nur einen Knoten auf der zweiten Ebene. Wenn es nicht mehrere LChips umfaßt, bedarf es keiner Verbindungen und wird keinen Baum haben.
  • Der Baum wird durch Abtasten des Netzes in der Ausgestaltungsdatenstruktur abgetastet, entsprechend den Orten der Grundelemente, die durch den Partitionierer zugeordnet werden. Wenn das Netz nicht mehr als eine Box auf der Karte umspannt, werden die Knoten für die nicht benötigten Kreuzschienen-Pegel mit null markiert. Sodann wird die Anzahl der treibenden Ausgänge und der empfangenden Eingänge auf jedem LChip gezählt und in den LChip-Knoten gespeichert, um die Erfordernisse der Verbindungen der LChips zu identifizieren. Die Anzahl der LChips, die Treiber haben, und die Anzahl, die Empfänger haben, wird für jeden XChip-Knoten gezählt, um zu identifizieren, welche Verbindung von jedem XChip geschaffen werden muß. Entsprechend werden die antreibenden und die empfangenden XChips für jeden YChip gezählt und der YChips für jeden ZChip.
  • Schließlich wird der Baum analysiert, um den Punkt zu bestimmen, von dem der wahre Wert des Netzes, seine Quelle, aus dem Empfänger ausgetrieben wird. Für einfache Netze ist die Quelle in einem der LChips. Es kann ein Kreuzschienen-Chip für ein Tri-State-Netz sein, da ein Kreuzschienen-Summieren verwendet wird. Normalerweise ist es, wenn eine Kreuzschienen-Chip seine Empfänger unter seinen Tochter-Chips hat, genetzlistet, um den wahren Wert von dem auf der höheren Ebene liegenden Mutter-Chip herabzuführen. Wenn ein Chip oder der Chip unterhalb in der Hierarchie die Quelle hat, empfängt es den wahren Wert von sich selbst oder von unten. Um dies zu tun, werden die Kreuzschienen-Knoten abgetastet, und wenn ein Knoten oder sein Abkömmling die Quelle ist, wird die Empfängerzahl auf null gesetzt.
  • 2.4.5.2 Stufe 3b: Bestimmen der Fähigkeit jedes Satzes zur Verbindung
  • Da jedes ZChip den- bzw. dieselben YChip(s) in jeder Box verbindet und jedes YChip den- oder dieselben XChip(s) auf jeder Karte verbindet, bilden die verbundenen X-, Y-, und ZChips einen Satz. Bei dem bevorzugten Ausführungsbeispiel des Realizer-Systems werden 64 Sets, jedes aus 1 ZChip, den 8 YChips, je einer in jeder Box, die Y-Z-Pfade mit dem ZChip haben, und 64 XChips, einer auf jeder Karte, die X-Y-Pfade mit jedem YChip haben, zusammengesetzt. Jedes Paar von Sätzen hat dieselben XChips in diesem Fall, es ist jedoch zulässig, da nur ein Satz ausgewählt wird, um das Netz zu verbinden.
  • Jedes Paar von Verbindungs-Chips, wie ein LChip oder ein XChip, wird durch eine Gruppe von Leiterbahnen, die als Pfade bezeichnet werden, verbunden. Die Pfade in jeder Kreuzschiene werden in einer Pfadtabelle aufgelistet. Die L-X-Pfadtabelle hat ein Element für jeden Pfad in jeder L-X-Kreuzschiene in dem gesamten System. Für jede Karte in jeder Box ist eine L-X-Kreuzschiene vorgesehen, und für jede Kreuzschiene sind ein Satz von Pfaden für jeden LChip und jeden XChip vorgesehen. Die L-X-Pfadtabelle hat daher fünf Dimensionen: LX[Boxen] [Karten] [LChips] [XChips] [Pfade]. Entsprechend gibt es eine X-Y-Pfadtabelle: XY[Boxen] [Karten] [YChips] [Pfade], und eine Y-Z-Pfadtabelle: YZ[Boxen] [ZChips] [Pfade]. Jedes Element in der Tabelle wird als "frei" oder "verwendet" durch den Verbindungsvorgang bezeichnet. Ein Tabellenelement wird verwendet, wenn sein Pfad durch den I/O-Pin eines Eingangs- oder Ausgangspuffers verwendet worden ist, das zu einem Netzlisten-File ausgegeben worden ist.
  • Die Fähigkeit jedes Satzes, das Netz zu verbinden, ist durch das Sammeln seiner freien Pfadanzahl für jeden zu verbindenden Pfad bestimmt. Zunächst werden die Y-Z- Pfade zwischen den YChips in den Boxen und den ZChips betrachtet. Für jede Box in dem Netz wird die Anzahl der freien Pfade in der Y-Z-Pfadtabelle für den ZChip und den YChip dieser Box in diesen Satz gezählt und aufgezeigt. Zweitens, X-Y-Pfade zwischen XChips auf Karten und YChips in Boxen: für jede Karte in dem Netz wird die Anzahl der freien Pfade in der X-Y-Pfadtabelle und für den YChip dieser Box und den XChip der Karte in diesem Satz gezählt und aufgezeichnet. Drittens, L-X- Pfade zwischen LChips und XChips auf Karten: für jeden logischen Chip in dem Netz wird die Anzahl der freien Pfade in der L-X-Pfadtabelle für diesen LChip und den XChip der Karte in diesem Satz gezählt und aufgezeichnet. An jedem Punkt wird, wenn ausreichend freie Pfade vorhanden sind, um die Verbindung zuvervollständigen, dieser Satz als ein Fehler markiert, und der Vorgang schreitet mit dem nächsten Satz fort. Das Ergebnis ist eine Sammlung von Pfadzählungen für jeden Pfad in der Verbindung, für jeden Satz von Kreuzschienen-Chips, die erfolgreich die Verbindung vervollständigen können.
  • 2.4.5.3 Stufe 3c: Wählen des Satzes
  • Da viele Sätze mit dem Netz verbunden werden können, wird einer gewählt, um einen Ausgleich des verwendeten Pfads beizubehalten. Dies stellt sicher, daß die volle Kapazität der Verbindung ausgenutzt werden kann.
  • Ein einfaches Verfahren zum Wählen des Satzes wäre das Auswerten des Satzes mit der größten Anzahl aller Pfadzählungen. Dies ignoriert jedoch die örtlichen Bedingungen. Es ist besser, den Satz mit der größten minimalen Pfadanzahl unter den Pfadanzahlen auf allen Ebenen zu wählen. Beispielsweise seien zwei Sätze mit diesen Pfadzählungen angenommen: Pfad: Satz:
  • Satz A hat die größte Gesamtanzahl (23 gegenüber 21), diesen zu wählen würde jedoch bedeuten, daß der am schlechtesten verfügbare L-X-Pfad aus einem LChip- XChip-Paar genommen wird. Satz B hat das größte Minimum (3 gegenüber 1), es würde jedoch nicht ein LChip- XChip-Paar abschließen. In dem Fall von Schleifen eliminiert ein Minimum von jedem Satz von der Berücksichtigung und der Wahl des Satzes mit dem größten verbleibenden Minimum usw., bis ein Satz gewählt ist. Wenn alle Sätze tatsächlich dieselben sind (wie es in dem Fall des ersten Netzes ist), wird ein beliebiges ausgewählt. Dies ist das verwendete Verfahren.
  • Eine besondere Berücksichtigung findet Anwendung, wenn ein Satz für ein Tri-State Netz zu betrachten ist. Da einige Paare des Chips zwei Pfade haben müssen, die für dasselbe Netz verwendet werden, einer für einen Eingang, der die Hierarchie nach oben zu dem Summierungspunkt geht, und der andere, der den wahren Wert zurück nach unten bringt, muß der ausgewählte Satz wenigstens zwei freie Pfade für diese Fälle haben. Da ein Fall erkannt wird, wenn der Knoten des Pfadbaumes erkannt wird (d. h. XChip-Knoten für L-X-Pfad usw.) hat dieser Fall D- und R-Zählungen, die nicht null sind, und eine nicht-NULL-Mutter.
  • 2.4.5.4 Stufe 3d: Netzlisten der Verbindung
  • Es sei die Satzwahl und die Baumstruktur gegeben, die Verbindung wird durch Ausgeben von Anweisungen zu den Puffern und den Summierungpunkten zu den logischen den Kreuzschienen-Chip-Netzlisten verbunden. Dies wird Ebene nach Ebene gemacht, zunächst die logischen Chips, dann die X-, Y- und ZChips. Alle Verbindungen und Richtungen der Chips werden durch Verwendung der Daten in dem Baum bestimmt. Alle Verbindungen werden durch Ausgeben von Anweisungen für die Verbindungspuffer und -netze zu einen Netzlisten-File genetzlistet.
  • Die Verbindungen der Chips zu Tochterchips (Fall 2) wird zunächst genetzlistet. Jedes Tochter-Chip wird wiederum betrachtet. Wenn der Baum zeigt, daß er diesen Chip betreibt, wird ein Eingangspuffer genetzlistet unter Verwendung der Pin-Nummer, die mit dem Tochter- Chip-Treiber verbindet. Wenn dieser Chip mehr als einen Treiber hat, werden unterschiedliche Namen für jeden von ihnen verwendet, so daß diese durch das Summierungsgatter, das später genetzlistet wird, gesammelt werden können. Wenn der Baum zeigt, daß die Tochter diesen Chip aufnimmt, wird ein Ausgangspuffer genetzlistet unter Verwendung der Pin-Nummer, die mit dem Empfänger des Tochter-Chips verbindet. Wenn dieses chip selbst ein Empfänger von seiner Mutter ist, wird ein unterschiedlicher Name verwendet, so daß es mit dem Mutter-Empfänger verbindet.
  • Wenn das Chip mehr als einen Treiber unter den Töchtern hat, wird das Summierungsgatter genetzlistet unter Verbinden mit den oben definierten Treibernetzen. Schließlich werden die Verbindungen mit dem Mutter-Chip (falls vorhanden) genetzlistet. Wenn dieses Chip oder ein Abkömmling einen Treiber hat, wird ein Verbindungsweg für den Treiber von dem Pfadtabelleneingang für dieses Paar von Chips genommen, und der Satz, der gebildet worden war, und ein Ausgangspuffer wird genetzlistet, um die Mutter über den gerade genommenen Pfad zu betreiben. Wenn dieser Chip ein Empfänger von der Mutter ist, wird ein Pfad von der Pfadtabelle genommen und ein Eingangspuffer wird unter Verwendung des Pfades genetzlistet.
  • 2.4.6 Eingehende Definition des Vorgehens des Verbindens und des Netzlistens
  • Einige allgemeine Definitionen:
  • Es gibt vier Klassen von Netzen:
  • einfach eingeschlossen: Das Netz hat eine Treiber, alle Grundelemente sind auf demselben LChip.
  • einfach geschnitten: Das Netz hat einen Treiber, Grundelemente sind in mehreren LChips.
  • Tri-State-eingeschlossen: Das Netz hat > 1 Treiber, alle Grundelemente sind in demselben LChip.
  • Tri-State-geschnitten: Das Netz hat > 1 Treiber, die Grundelemente sind auf verschiedenen LChips.
  • Die "Quelle" eines Netzes ist das Chip, das den tatsächlichen logischen Wert treibt:
  • Für einfache Netze ist dies das LChip, das den Treiber hat.
  • Für Tri-State-Netze ist das das Chip, das das höchste Summierungsgatter hat.
  • Um es zu bestimmen:
  • Taste das Netz ab, um zu sehen, wo die Ausgangs- Pins lokalisiert sind.
  • Wenn sie alle auf demselben LChip sind, ist dies die Quelle.
  • Ansonsten, wenn alle auf derselben Karte sind, ist es das XChip auf der Karte.
  • Ansonsten, wenn alle in derselben Box sind, ist es das YChip in der Box.
  • Ansonsten ist es das ZChip.
  • Die Index-Nummer eines Ausgangs-Pins ist, welcher Ausgangs-Pin auf der umlaufenden Liste von Pins des Netzes, ausgehend von dem Pin, auf den von der Netzaufzeichnung gewiesen wird und Aufzählen derjenigen von null.
  • Stufe 1: Ausgeben aller Grundelemente der Ausgestaltungsdatenstruktur:
  • Für jeden LChip in der Ausgestaltungsdatenstruktur:
  • Öffne diese Netzliste des LChips, wenn sie nicht bereits offen ist.
  • Für jedes Grundelement auf diesem LChip:
  • Ausgeben der Kopfanweisung des Grundelements zu dem File.
  • Für jeden Pin in diesem Grundelement:
  • Nimm den Namen des verbundenen Netzes (unter Verwendung des Netzobjekts, d. h. das Nehmen von dem Eingabe-Ausgestaltungs- File) und rufe das "N".
  • Wenn Eingangspin:
  • Wenn dieses LChip die Netzquelle hat, Ausgeben einer Anweisung für den Eingangspin, der mit dem "N" verbunden ist.
  • Ansonsten Ausgeben der Eingangspin-Anweisung auf das Netz "N_R".
  • Ansonsten (Ausgangspin):
  • Nimm diese Index-Nummer des Ausgangspins, bezeichne es als "p".
  • Wenn das einfache Netz, Ausgeben des Pins auf Netz "N".
  • Wenn ein Tri-State eingeschlossenes Netz, Ausgeben des Pins auf dem Netz "N_OR_p".
  • Wenn ein Tri-State geschnittenes Netz:
  • Wenn dieses der einzige Ausgang auf diesem Netz auf diesem LChip ist, gib den Pin auf das Netz "N" aus.
  • Ansonsten gib den Pin auf das. Netz "N_OR_p" aus.
  • Nächster Pin.
  • Nächstes Grundelement.
  • Nächster LChip.
  • Stufe 2: Ausgeben aller eingeschlossenen Summierungsgatter
  • Für jedes eingeschlossene tri-statisches Netz:
  • Nimm den Namen des Netzes, bezeichne es als "N".
  • Öffne das Netzlistenfile dieses LChips, wenn es nicht schon offen ist.
  • Zähle, wie viele Ausgänge auf dem Netz sind, bezeichne diese "i". Gib Anweisungen aus für ein "i"-Eingangsgatter.
  • NOR wenn dieses Netz ein "Floating-Hoch" ist. Ansonsten OR,
  • dessen Eingänge mit den Netzen "N_ORi" verbunden ist,
  • (für alle j von 0 - i-1),
  • und Ausgang verbunden mit "N".
  • Nächstes Netz.
  • Stufe 3: Ausgabe der Puffer, die mit den geschnittenen Netzen verbunden sind und Ausgaben aller Summierungsgatter der geschnittenen Netze:
  • Markiere alle Elemente aller Verbindungspfadtabellen "frei".
  • Für jedes geschnittene Netz (einfach oder Tri-State),
  • Wählen geschnittener Netze in der Reihenfolge der Hierarchie, zunächst Mehrbox-Netze usw., und innerhalb dieser Reihenfolge das Größte zuerst:
  • Stufe 3A: Aufbau des Baumes:
  • Für jedes Grundelement auf dem Netz:
  • Wenn dort kein Baumknoten für diese Box des Grundelements ist, füge eines hinzu.
  • Wenn kein Baumknoten für die Karte dieses Grundelements in der Box ist, füge eines hinzu.
  • Wenn kein LChip des Grundelements auf dieser Karte in dieser Box ist, füge eines hinzu.
  • Wenn kein LChip des Grundelements auf dieser Karte in dieser Box ist, füge eines hinzu.
  • Wenn die Verbindung des Netzes dieses Grundelements ein Ausgabepin ist (d.h. Antreiben) inkrementiere die D-Zahl auf den Knoten dieses LChips.
  • Ansonsten, wenn dieses LChip nicht die Quelle für dieses Netz ist, inkrementiere die R-Zahl auf diesen Knoten des LChips.
  • Nächstes Grundelement.
  • Wenn alle Grundelemente auf diesem Netz in dem Baum representiert sind, wenn dort nur ein XChip-Knoten ist, markiere den YChip-Knoten mit NULL (d. h., das Netz bleibt auf der Karte).
  • Wenn dort nur ein YChip-Knoten ist, markiere den Z-Knoten mit Null (das Netz bleibt in der Box). Für jede nicht-NULL Kreuzschienenebene, zunächst das XChip, dann das YChip, dann das ZChip:
  • Für jeden Knoten auf dieser Ebene:
  • D = Anzahl der Tochterknoten, die nicht-Null-D-Zählungen haben
  • R = Anzahl der Tochterknoten, die nicht-Null-R-Zählungen haben.
  • Wenn dieser Knoten oder ein Abkömmling davon diese Netzquelle ist, setze den Knoten R = 0.
  • Wenn dieser Knoten die Quelle ist, und das Netz ein Tri-State ist, setze die "Topsumme" Flagge au wahr.
  • Nächster Knoten
  • Nächste Ebene
  • Stufe 3B: Bestimmen der Fähigkeit jeden Satzes zur Verbindung:
  • Für jeden Satz Bestimmen seiner Fähigkeit, durch Sammeln von Pfadzahlen für jeden zu verwendenden Pfad zu verbinden:
  • Verteilen des Speichers für die Pfadzahlen für diesen Satz:
  • Y-Z Pfadzahlen: einen für jede Box.
  • X-Y Pfadzahlen: eine für jede Karte.
  • L-X Pfadzahlen: eine für jeden LChip.
  • Wenn dort nur eine Box in diesem Netz ist (eine Verbindung der Z-Ebene wird nicht benötigt):
  • Belasse ein Null (nicht Null) Y-Z Pfadzahl für diese Box.
  • Ansonsten:
  • Für jede Box:
  • Zähle die Anzahl der freien Pfade in dem Pfadfeld
  • YZ [diese Box] [dieser Satz] [Pfade].
  • Wenn dieser Knoten des Boxen-Baums eine nicht- NULL-Mutter hat, und D > 0 und R > 0:
  • Dieser Box-Weg ist "doppelt": es hat sowohl eine Treiber als auch eine Empfänger.
  • Wenn dort weniger < 2 freie Pfade sind, kann dieser Satz nicht das Netz verbinden.
  • Ansonsten, wenn dort eine Pfade sind, kann dieser Satz nicht das Netz verbinden.
  • Wenn dieser Satz nichts verbinden kann, markiere ihn als nicht verwendbar und schreite zu dem nächsten Satz fort.
  • Ansonsten, sichern der Gesamtzahl als die Y-Z-Pfadzahl für diese Box.
  • Wenn dort nur eine Karte in diesem Netz ist (Y-Z Verbindung nicht erforderlich):
  • Lasse ein Null (nicht Null) X-Y Pfad für diese Karte.
  • Ansonsten:
  • Für jede Karte:
  • Zähle die Anzahl der freien Pfade in dem Pfad XY[diese Box] [diese Karte] [dieser Satz] [Pfade].
  • Wenn dieser Pfad ein "Doppel" ist und > 2 Pfade vorhanden sind,
  • oder wenn dort keine Pfade sind, kann dieser Satz das Netz nicht verbinden.
  • Markiere diesen Satz als unverwendbar und schreite zu dem nächsten Satz fort.
  • Ansonsten, sichere die Gesamtanzahl als die X-Y Pfad-Anzahl für diese Karte.
  • Für jeden LChip:
  • Zähle die Zahl der freien Pfade in diesem Pfadfeld LX[diese Box] [diese Karte] [diesen LChip] [diesen Satz] [Pfade].
  • Wenn dieser Pfad ein "Doppel" ist und dort < 2 Pfade sind, oder aber wenn dort keine Pfade sind, kann der Satz nicht mit dem Netz verbinden:
  • Markiere diesen Satz als nicht verwendbar und schalte zu dem nächsten Satz fort.
  • Ansonsten, sichere die Gesamtzahl als die L-X-Zahl für diesen LChip.
  • Nächster LChip auf dieser Karte. Nächste Karte in dieser Box.
  • Nächster Satz.
  • Stufe 3C: Wähle den Satz:
  • Für jeden Satz, der das Netz verbinden kann:
  • Finde die maximale Pfadzahl unter allen Pfadzahlen für diesen Satz.
  • Nächster Satz.
  • Finde den größten aller dieser minimalen Pfadzahlen.
  • Eliminiere aus der Betrachtung alle Sätze mit Pfadzahlen, die kleiner als das größte Minimum ist.
  • Wenn dort keine Sätze übrig geblieben sind, kann das Netz nicht verbunden werden. Wenn dort ein Satz übrig geblieben ist, ist dieser Satz für dieses Netz zu wählen.
  • Wenn dort mehr als ein Satz geblieben ist,
  • Finde das größte Minimum unter allen minimalen Pfadzahlen.
  • Eliminiere von der Betrachtung alle Sätze mit Pfadzahlen, die größer als diese sind.
  • Wiederhole dies, bis entweder ein Satz übrig geblieben ist oder alle verbliebenen Sätze dieselben Pfadzahlen haben. Wähle einen aus den verbleibenden Sätzen für dieses Netz.
  • Befreie den Speicher für alle die Pfadzahlen, für alle diese Sets.
  • Stufe 3D: Netzlisten der Verbindung
  • Definitionen aller unten verwendeten Verfahren:
  • Zum Nehmen und Empfangen eines Treiber- (oder Empfänger-) Pfads:
  • 1) Wählen eines Pfades aus einem freien Element in der Pfadtabelle für diese Ebene, die Chip- Anzahl dieses Knotens und der Anzahl des Chips des Mutterknotens.
  • 2) Markiere das Element der Pfad-Tabelle mit der verwendeten Pfad-Tabelle.
  • 3) Speichern, welcher Pfad als Pfad-Nummer in dem Treiber (oder Empfänger) Pfad-Nummer Eingang zu diesem Knoten verwendet worden ist.
  • Zur Herleitung einer I/O Stift-Nummer:
  • 1) Bestimmen der Identitäten dieses Knotens und des Chips des Tochterknotens (oder des Chips des Knotens der Mutter, wie es erforderlich sein kann) von den beiden Chip-Nummern des Knotens und der Satznummer. Dies identifiziert den betroffenen spezifischen Pfad (etwa als L4-X5 oder Karte 3-Y7)
  • 2) Rückrufen, daß die Pfadnummer einen Pfad aus verschiedenen bestimmt, die ein Paar von Chips verbindet. Der Chip, der Pfad und die Pfad- Nummer, lesen der Pin-Nummer, die mit diesem Pfad verbindet, aus der Lookup-Tabelle, die die I/O Pin-Nummer Information hält.
  • Zum Ausgeben eines Puffers (Eingabe oder Ausgabe) unter Verwendung eines Pfades:
  • 1) Nimm die Pfadnummer von dem Knoten, oder, wenn ein Tochterpfad spezifiziert ist, nimm es von dem Tochterknoten. Nimm die Treiber- oder Empfängerpfadnummer, wie vorgegeben.
  • 2) Leite diese I/O Pin-Nummer von dem Puffer unter Verwendung der Pfad-Nummer her.
  • 3) Ausgabe der Grundelementenanweisungen an den Netzlistenfile für den Chip des Knotens, entsprechend davon, ob es ein Eingangs- oder Ausgangspuffer ist, unter Verwendung von Eingabe- oder Ausgabenetznamen, wie gerichtet und verwenden die hergeleitete Pin-Nummer von seinen I/O Pin.
  • Verfahren zum Netzlisten der Verbindung:
  • Nimm den Namen von diesem Netz, bezeichne es als "N".
  • für jede nicht-NULL-Ebene, erst LChip, dann XChips, YChip und ZChip:
  • Für jeden Knoten auf diese Ebene über den gesamten Baum:
  • Öffnen des Netzlistenfiles für diesen Knotenchip, wenn er es nicht schon ist.
  • Wenn die Ebene X, Y oder Z: Für jeden Tochterknoten unterhalb des Knotens:
  • Setze einen Zähler, "i", auf Null.
  • Wenn das Tochter-D > 0: (Tochter ist Treiber)
  • Wenn der Knoten D = 1:
  • Ausgeben eines Eingangspuffers von "N_D_c' zu "N", (wobei "c" die Nummer des Tochterknotens ist) unter Verwendung des Tochtertreiberpfads.
  • Ansonsten ist der Knoten D > 1:
  • Eingeben eines Eingabepuffers von "N_D_c'" auf "N_OR_i" unter Verwendung des Tochtertreiberpfads und inkrementieren von "i".
  • Wenn das R der Tochter > 0 (Tochter ist Empfänger)
  • Wenn dieser Knoten D > 0 und der Knoten R = 0:
  • Ausgeben eines Ausgabepuffers von "N" auf "N_R_c'", unter Verwenden des Tochter-Empfänger-Pfads.
  • Ansonsten:
  • Ausgeben eines Ausgangspuffers von "N_R" auf "N_R_c", unter Verwenden des Tochterempfängerpfads.
  • Nächster Tochterknoten.
  • Wenn das D des Knotens > 1: (Knoten hat Summierungsgate)
  • Ausgeben eines "i"-Eingabe-Gatters:
  • NOR, wenn das Netz "schwebend hoch" ist und die "Topsummen"- Flagge des Netzes wahr ist, ansonsten OR,
  • mit Eingängen, die mit "N_OR_i" verbunden sind "für alle j von bis i-1),
  • und Ausgang verbunden mit "N".
  • Wenn das R des Knotens > 0, und der Knoten eine nicht-NULL-Mutter hat: (Knoten ist ein Treiber)
  • Nimm und bewahre einen Treiberpfad.
  • Ausgeben eines Ausgangspuffers von "N" bis "N_D", unter Verwendung des Treiberpfads.
  • Wenn der Knoten R > 0: (Knoten ist Empfänger)
  • Nimm und bewahre einen Empfängerpfad.
  • Ausgeben eines Eingabepuffers von "N_P" auf "N_R" unter Verwenden des Empfängerpfads.
  • Nächster Knoten auf dieser Ebene.
  • Nächste Ebene.
  • Nächstes geschnittenes Netz.
  • Schließen aller offenen Netzlistenfiles.
  • 2.4.7 Zwei beispielhafte Netze
  • Fig. 47a zeigt die anfängliche Eingabeausgestaltung für ein einfaches Netz, das als "BX" bezeichnet wird, mit einem Treiber und drei Empfängern, das sich über zwei logische Chips auf einer Karte erstreckt und einen Logikchip auf einer anderen Karte in derselben Box hat.
  • Der Verbindungsbaum, der durch die Stufe 3a für dieses Netz aufgebaut wird, ist in Fig. 47b gezeigt. Beachte hier, daß hier ein Knoten für jedes Logikchip, jede Karte und einen für die Box gezeigt ist. Die logischen Chipknoten entsprechen den spezifischen Logikchips. Die Kartenknoten entsprechen den XChips, einen auf jeder Karte und der Boxknoten entspricht einem YChip. Ein ZChip ist für dieses Netz nicht erforderlich. Welches der X- und YChips verwendet werden, hängt davon ab, welcher Satz gewählt wird und ist in dem Baum nicht gezeigt. Die D- und R-Werte sind gezeigt für jeden Knoten. Beachte, daß L0 D=0 hat, obwohl es einen Empfänger hat, da es der Quellenknoten für dieses Netz ist und nicht den Wert von oben aufnehmen muß, wie es die anderen tun. Der Knoten für die Karte 2 zeigt, daß R-Zahl ursprünglich Eins war unter Zählung L4-Empfänger, jedoch auf Null gesetzt war, da die Quelle ein Abkömmling ist. Entsprechendes gilt für den Boxknoten.
  • Die tatsächlichen Gatter und die an die Netzlisten- Files ausgegebenen Puffer für jedes Logik- und Kreuzschienenchip, und wie sie miteinander verbunden sind, ist in Fig. 47c gezeigt. "IBUF" und "OBUF" geben die Eingabe und Ausgangspuffer an. Die Netznamen, die ausgegeben werden, sind mit ihren Netzen gezeigt. Es ist zu beachten, wie das die Struktur der tatsächlichen Verbindung die Struktur des Baumes und der D- und R-Zahl in jedem Knoten wiedergibt.
  • Fig. 48a zeigt die ursprüngliche Eingabeausgestaltung für ein Tri-State-Netz, bezeichnet als "EX" mit drei Tri-State-Treibern, die sich über zwei Logik-Chips auf der Karte und einem Logik-Chip auf einer anderen Karte in derselben Box erstrecken und sechs Empfängern, die sich über vier LChips auf drei Karten in zwei Boxen erstrecken.
  • Der Verbindungsbaum, der von der Stufe 3a für dieses Netz aufgebaut wird, ist in Fig. 48b gezeigt. Da dieses Netz Boxen überspannt, wird die Kreuzschiene der Z-Ebene verwendet. Es ist zu beachten, das der zweite Knoten der Karte D=2 hat, wie es zwei der Tri-State- Treiber hat, so daß das XChip ein Summierungsgatter haben wird, das die Ausdrücke von den LChips auf der Karte 2 sammelt. Entsprechend wird der zweite Knoten der Box, der mit der Quelle des Netzes verbunden ist, mit "Topsumme" bezeichnet. Sein YChip wird das höchste Summierungsgatter haben unter Sammeln der Ausdrücke von den Karten 2 und 3. Dieser und der Z-Mutterknoten haben die Quelle, so daß ihre R-Zahlen genullt werden.
  • Die tatsächlichen Gatter und Puffer, die von den Netzlisten-Files für jeden Logik- und Kreuzschienenchip ausgegeben werden, und wie sie miteinander verbunden sind, ist in Fig. 48c gezeigt. Es ist zu beachten, daß die Tri-State-Treiber jeweils in AND-Gatter durch die ausgestaltete Konversation gewandelt werden. Diese Ausgänge werden durch Summierungsgatter auf den X- und Y-Ebenen gesammelt. Diese aufnehmenden Eingänge werden von den "Top-Summen-Knoten" betrieben, dem YChip in Box 2. Empfänger in Box 2 werden durch Pfade betrieben, die von der Verbindung zurückkommen. Die Empfänger in Box 6 werden über den Kreuzschienen-Chip auf der Z-Ebene betrieben.
  • 3 Anwendungen des Realizer Systems 3.1 Realizer Logic Simulationssystem
  • Ein logischer Simulator ist ein System, das in Hardware oder in Software implementiert ist und eine Eingangsausgestaltung, einen Satz von Stimuh zu der Ausgestaltung und eine Richtung zur Simulation für eine Zeitdauer aufnimmt und einen Satz von Antworten erzeugt, der diejenigen vorhersagt, die eine wirkliche Implementation bei demselben Stimulus erzeugen würde. Der Stimulus und die Antworten sind in der Form von logischen Zustandstransitionen von spezifischen Ausgestaltungsnetzen zu spezifischen Zeiten. Eine wichtige Eigenschaft ist, daß der Verwender des Simulators nur die Beschreibung einer Ausgestaltung in Form des Eingabeausgestaltungsfiles schafft, so daß die Ausgestaltung geändert und in einer kurzen Zeitdauer erneut simuliert werden kann.
  • Das übliche Vorgehen von Ausgestaltungen von Software- Logiksimulatoren ist die Verwendung eines Computer Softwareprogramms, das einen sequentiellen Algorithmus ausführt, das die Arbeitsweise der Ausgestaltung vorhersagt ("An Introduction to Digital Simulation", Mentor Graphics Corp., Beaverton, Oregon, 1989). Es werden entweder ereignisbetriebene oder aber mit einem Code kompilierte Algorithmen, die allgemein bekannt sind, verwendet. Die heutige Praxis der Ausgestaltung von Hardware-Logiksimulatoren ist das Aufbauen einer Hardware, die dieselben ereignisbetriebenen oder die Algorithmus mit sequentiellem kompiliertem Code, die in Software-Simulatore verwendet werden. Die Hardware gewinnt ihren Gestaltungsvorteil nur durch Vermeiden von Parallelitäten in dem Algorithmus und/oder durch ein direktes Implementieren von besonderenalgorithmischen Vorgängen, die für die Software, mit der ein Allgemeinzweck-Computer arbeitet, nicht möglich ist. Gegenwärtige auf einer Hardware beruhende logische Simulatoren arbeiten durch Ausführen eines sequentiellen Algorithmus, der die Anworten der Eingabeausgestaltung vorhersagt.
  • Ein neues Mittel des Aufbauens eines Logiksimulators basieren auf dem Realizer-System. Das Realizerlogik- Simulatorsystem nimmt eine Eingangsausgestaltung auf, die es in eine Konversation der Logik der Hardware des Realizers und die Verbindungschips wandelt unter Verwendung des Konversionssystems der Realizer-Ausgestaltung. Es nimmt einen Satz von Stimuh zu der Ausgestaltung und eine Richtung zum Simulieren für eine Zeitdauer auf, wendet den Stimulus auf die verwirklichte Ausgestaltung über Vektorspeicher an und sammelt einen Satz von Antworten von der verwirklichten Ausgestaltung über Vektorspeicher. Die Antworten entsprechen denjenigen einer tatsächlichen Implementation einer Eingangs- Ausgestaltung, die diese auf denselben Stimulus erzeugen würde, da eine tatsächliche Harware-Realisation der Ausgestaltung beobachtet wird, die auf diesen Stimulus antwortet.
  • Dies unterscheidet sich fundamental von allen gegenwärtigen Logik-Simulationssystemen insofern, als daß sie einen sequentiellen Algorithmus ausführen, der die Ausgestaltung der Anwort auf den Reiz vorhersagt, während der Realizer-Logiksimulator eine tatsächliche Realisation der Ausgestaltung betreibt, um die Antworten der Ausgestaltung auf den Reiz zu bestimmen. Der Hauptvorteil besteht darin, daß die realisierte Ausgestaltung Antworten erzeugt, die um viele Größenordnungen schneller sind, als ein sequentieller Algorithmus die Antworten vorhersagen kann.
  • Das Realizer-Logiksimulationssystem besteht aus einem Realizer-Ausgestaltungs-Konversationssystem (dieses wird an anderem Ort betrieben), dem logischen Simulatorstimulus- und Antwortübersetzungssystem und dem den logischen Simulator betreibenden Kern, gemeinsam mit dem Realizier-Hardwaresystem und dem Hostcomputer (Fig. 49).
  • 3.1.1. Logisches Simulator-Stimulus und -Antwort-Trans lationssystem
  • Dieses System konvertiert von einem von dem Verwender erzeugten Stimulusereignis-Eingabefile in einen Binärfile, der die Stimulusdaten beinhaltet, die direkt in Vektorspeicher geladen werden können und wandelt die Antworten von dem File, der die binären Antwortdaten, die aus den Vektorspeichern ausgelesen worden sind, in einen von dem Verwender lesbaren Antwort-Ereignisausgangsfile. Stimulus- und Antwortereignisse bestehen aus einem Netznamen, einer Zeit und einem neuen Netzstatuswert. Die Konversion ist eine zwischen Netznamen und Vektorspeicherbits und zwischen Simulation- "Echtzeit" und Vektorspeicherorten. Die Zeitkonversion erfolgt durch ein Auflisten jedes einzelnen Zeitpunkts mit Stimulusereignissen mit einem Vektorspeicherort und berichten der Antwortereignisse, zu denen der Vektorspeicherort zu dem Zeitpunkt aufgetreten ist.
  • In dem bevorzugten Ausführungsbeispiel sind der Stimuluseingabe-Ereignisfile und der Antwortausgabe- Ereignisfile Mentor Graphics Logfiles ("QuickSim Family Reference Manual", Mentor Graphics Corp., Beaverton, Oregon, 1989), die Textfiles sind, die eine Reihe von Zeiten, Netznamen und neuen Netzzustandswerten erhalten. Der Stimuluseingabe-Ereignisfile wird erzeugt und der Antwortausgabe-Ereignisfile wird durch das Schnittstellenwerkzeug für die Batchsimulation in dem EDA- System interpretiert. In dem bevorzugten Ausführungsbeispiel ist das Werkzeug das Mentor Graphics RSIM- Werkzeug.
  • Die Beschreibung nimmt an, daß alle Grundelemente ohne Verzögerung simuliert werden, wie dies später in diesem Abschnitt beschrieben werden wird. Um den Stimulusereignis-Eingabefile in den Stimulus-Binärfile zu konvertieren:
  • 1) Lies den Stimuluseingabe-Ereignisfile. Ordne die Stimulusereignisse entsprechend der zunehmenden Zeit und bestimme, wie viele unterschiedliche Zeiten Ereignisse haben.
  • 2) Lies die Entsprechungstabellen für den Vektorspeicher in dieser Ausgestaltung, die von dem Ausgestaltungs-Konversionssystem erzeugt worden sind.
  • 3) Jeder Vektorspeicherort wird einem Zeitpunkt entsprechen, der einen oder mehrere Stimulusereignisse hat. Wenn dort nicht auseichend Vektorspeicherorte für jeden der unterschiedlichen Stimulusereigniszeitpunkte sind, wiederhole die Schritte 5 und 6 so oft wie erforderlich, unter Erzeugen ausreichender Stimulus-Binärfiles für alle derartigen Zeitpunkte, wobei jeder File, der den Stimulus enthält, in den Speicher passen wird.
  • 4) Verteile den Speicher für die Vektorfelder "V0", "V1", usw. jedes in der Anzahl der Orte und der Netzbreite entsprechend mit einem Vektorspeicher, das in der zu simulierenden Ausgestaltung verwendet wird. Verteile den Speicher für ein Zeitfeld "T" mit derselben Längen wie einem Vektorfeld. Verteile "letzter Vektor"-Puffer "B0", "B1" usw., einen für jeden Vektorspeicher und jeder so breit wie die Netzbreite und initialisiere diese auf Null.
  • 5) Setze ein Vektorfeld-Indexzähler "v" auf Null. Für jeden Zeitpunkt, der einen oder mehrere Stimulusereignisse hat, das früheste zuerst:
  • Schreibe jeweils von B0, B1 usw. in V0[v], V1[v], usw.
  • Für jedes Stimulusereignis zu diesem Zeitpunkt:
  • Ordne den Vektorspeicher "n" und die Vektorspeicherbitposition "i" für dieses Netz unter Verwendung des Entsprechungstabellen-Eingangs für dieses Ereignisnetz.
  • Schreibe den neuen Wert für dieses Ereignis in das Vn [v]-Bit i und Bn- Bit i.
  • Nächstes Ereignis.
  • Schreibe die Inhalte jeweils von V0 [v], V1 [v] usw. in B0, B1 usw.
  • Speicher diese Zeit in T [v].
  • Inkrementiere v.
  • Nächster Zeitpunkt mit einem Stimulusereignis
  • 6) Schreibe die Vektorfelder V0, V1 usw., das Zeitfeld T und den Zykluszähler "v" in den Stimulus-Binärfile.
  • Um den Antwort-Binärfile in den Antwortereignis- Ausgangsfile zu konvertieren:
  • 1) Lies die Vektorfelder V0, V1, usw., das Zeitfeld T und die Zykluszahl "v" aus dem Antwort-Binärfile. Jeder Vektorspeicherort wird einem Zeitpunkt entsprechen, der einen oder mehrere Stimulusereignisse hat. Wenn dort nicht ausreichend Vektorspeicherorte für die unterschiedlichen Stimulus- Ereigniszeitpunkte sind, wiederhole die Schritte 1 - 4 so häufig wie nötig unter Einlesen aller Antwort-Binärfiles in diese Felder.
  • 2) Lies die entsprechenden Tabellen für jeden Vektorspeicher in dieser Ausgestaltung, die von dem Ausgestaltungs-Konversionssystem erzeugt worden sind.
  • 3) Verteile die "letzter Vektor"-Puffer "B0", "B1", usw., für jeden Vektorspeicher und jedem mit einer Breite wie der Netzweite, auf Null.
  • 4) Setze den Vektorfeldindexzähler "v" auf Null. Für jeden Ort in den Vektorfeldern:
  • Vergleichen die V0 [v] mit B0, V1 [v] mit B1, usw.
  • Für jeden Unterschied zwischen einem Bit in Vn [v] und Bn:
  • Ordne den Namen dieses Netzes entsprechend diesem Vektorspeicher dieses Bits und der Vektorspeicher- Bitposition unter Verwendung der Entsprechungstabelle für diesen Speicher.
  • Schreibe ein neues Antwortereignis in den Ausgabefile unter Verwendung des Netznamens, des neuen Bit-Werts und der Zeit T [v].
  • Nächstes Ereignis.
  • Schreibe die Inhalte jeweils V0 [v], V1 [v], usw. in B0, B1, usw.
  • Inkrementiere v.
  • Nächster Ort.
  • 3.1.2 Logiksimulator-Betriebskern
  • Der Betriebskern konfiguriert das Realizer-System für die zu simulierende Ausgestaltung, legt den Stimulus an und sammelt die Antwort. Es führt es an dem Hostcomputer aus. Es konfiguriert Logik- und Verbindungschips, liest und schreibt Vektor- und Ausgestaltungsspeicher und steuert Takt-Generatoren und Rückstell- Generatoren über die Host-Schnittstelle, wie in diesen Abschnitten beschrieben.
  • Um die Simulation zu beschreiben:
  • 1) Lesen des Ausgestaltungskonfigurationsfiles und dessen Verwenden zum Konfigurieren aller Realizerlogik- und Verbindungschips, wie in dem Konfigurationsabschnitt beschrieben. Lesen der anfänglichen Ausgestaltungs-Speicherdaten von den Files und schreibe diese in Ausgestaltungs-Speicher.
  • 2) Lese den Stimulus-Binärfile. Speicher die Vektorfeld-Inhalte in die entsprechenden Vektor-Speicher über die Host-Schnittstelle. Lies das Zeitfeld "T" und die Zykluszahl "v".
  • 3) Löschen aller Vektorspeicherzähler in den Vektorspeichermodulen. Betreibe den Gestaltungs- Rückstellgenerator zyklisch, um die verwirklichte Ausgestaltung zu initialisieren.
  • 4) Gib den ECLK-Taktgenerator für das Netz für "v"-Zyklen frei. Dies bewirkt, daß die Vektorspeicher ihre Stimulusdaten ausgeben unter Betreiben der verwirklichten Ausgestaltung entsprechend dem Stimulus und verursacht, daß die Vektorspeicher Antwortdaten sammeln, wie dies in dem Stimulus/Antwort-Abschnitt beschrieben worden ist.
  • 5) Lies die Vektorspeicher-Inhalte und speichere diese mit dem Zeitfeld "T" und der Zykluszahl "v" in dem Antwort-Binärfile.
  • 6) Wenn mehr als ein Stimulus-Binärfile vorhanden ist aufgrund einer unzureichenden Vektor- Speicherkapazität, wiederhole die Schritte 2 - für jeden File.
  • 7) Sicher die Ausgestaltungs-Speicherinhalte in Files für die Prüfung durch den Verwender.
  • 3.1.3 Verwenden des Realizer-Logiksimulationssystems
  • Um eine Eingabeausgestaltung mit dem Realizer- Logiksimulator zu simulieren:
  • 1) Bereite die Eingabeausgestaltung unter Verwendung des Erzeugungswerkzeugs für die EDA- Systemausgestaltung durch Markieren von zu stimulierenden Netzen und von zu sammelnden Netzantworten, von denen Eigenschaften die Vektor-Speicherverbindungen angeben werden. Bereite anfängliche Ausgestaltungsspeicher- Datenfiles, falls erforderlich. Bereite den Stimulusereignis-Eingangsfile unter Verwendung des Schnittstellenwerkzeugs für die Batch- Simulation des EDA-Systems.
  • 2) Konvertiere die Eingabeausgestaltung mit dem Konversionssystem für die Realizer-Ausgestaltung und Erzeugen eines Konfigurationsfiles und einer Vektorspeichernetz-Entsprechungstabellenfile.
  • 3) Betreibe das Stimulus- und Antworttranslationssystem unter Konvertieren des Stimulusereignis-Eingangsfiles in ein oder mehrere Stimulus-Binärfile(s).
  • 4) Betreibe den Betriebskern, der die Simulation durchführt und den bzw. die Antwort-Binärfile(s) erzeugt.
  • 5) Betreibe das Stimulus- und Antworttranslationssystem unter Konvertieren des bzw. der Antwort-Binärfile (5) in das Antwortereignis- Ausgangsfile.
  • 6) Interpretiere den Antwortereignis-Ausgangsfile unter Verwendung des Schnittstellenwerkzeugs der Batch-Simulation des EDA-Systems.
  • 7) Mache jedwede erforderlichen Änderungen in der Eingabeausgestaltung, den anfänglichen Ausgestaltungsfiles und/oder dem Stimulusereignis- Eingabefile, wie durch die Simulationsergebnisse angegeben, und wiederhole die Schritte 2 - 6 wie erforderlich.
  • Eine interaktive Variation des Realizerlogik-Simulationssystems verwendet Stimulatoren für den Stimulus und Abtaster für die Antwort. Die Zusammensetzung und der Betrieb sind ähnlich mit der Ausnahme, daß ein interaktives Simulations-Schnittstellenwerkzeug verwendet wird anstatt des Batch- Simulations-Schnittstellenwerkzeugs, das mit dem Stimulus- und Antwort-Translationssystem direkt kommuniziert anstatt über Files, und das Stimulus und Antwort-Translationssystem mit dem Betriebskern direkt anstatt über Files kommuniziert, wobei das interaktive Simulations-Schnittstellenwerkzeug, das den Kern betreibt, gleichzeitig arbeitet. Jeder Zeitschritt mit Ereignissen wird in einem "sync clock"-Zyklus der randempfindlichen Stimulatoren aufgelistet, statt einem Zyklus des Vektorspeicherorts.
  • 3.1.4 Verwirklichung von mehr als zwei logischen Zuständen
  • Es ist sinnvoll, zwei logische Zustände direkt in einem Realizer-System zu verwirklichen: logisch hoch (H) oder wahr, und logisch tief (L) oder falsch, durch direktes Realisieren jedes Netzes in der Eingabe-Ausgestaltung mit einem einzigen Signal in dem Realizer-System.
  • Es ist manchmal erwünscht, mehr als zwei Zustände eines logischen Signals in einer logischen Simulationsumgebung darzustellen. Beispielsweise kann ein dritter Zustand, "unbekannt (X)", verwendet werden, um eine nicht initialisierte logische Variable darzustellen oder aber eine ungeklärte logische Situation. Ein Hoch-Impedanz- Zustand (Z) kann nützlich sein bei der Verwirklichung von über Leiterbahnen verbundenen Busse, etwa einem Tri-State-Bus.
  • Hoch-Impedanz-Zustände können bei einigen Ausführungsbeispielen des Realizer-Systems direkt verwirklicht werden. Beispielsweise kann, wenn ein Tri-State-Bus in der Ausgestaltung aufgerufen wird, dieser durch einen Tri-State-Bus in dem Realizer-System verwirklicht werden, solange das bzw. die logischen Chip(s) und alle erforderlichen Verbindungen die Fähigkeit haben, die es erlaubt, Tri-State-Bus-Eigenschaften in ihnen zu konfigurieren. Alternativ werden willkürliche logische Zustände durch Kodieren eines Netzes in mehr als ein Signal verwirklicht. Die Anzahl der zu realisierenden Zustände werden erstellt. Die Anzahl der erforderlichen Binär-Bits zum minimalen Kodieren aller gleichartigen Zustände wird erstellt und als "n" bezeichnet. Ein Netz in der Ausgestaltung wird durch "n" tatsächliche binäre logische Signale verwirklicht. Wenn, beispielsweise, drei Zustände (H, L, X) erforderlich sind, werden zwei tatsächliche Binärsignale verwendet, um ein einziges Ausgestaltungsnetz in dem Realizer-System zu verwirklichen. Diese Transformation erfolgt während der primitiven Umwandlungsstufe und diese neuen Binärsignale werden in die Ausgestaltungs-Datenstruktur unter Ersetzen des ursprünglichen Ausgestaltungsnetzes eingebracht.
  • Weiter werden logische Grundelemente in dem Netz durch logische Netzwerke verwirklicht, die entsprechend der Mehrzustands-Logikfunktion arbeiten. Wenn, beispielsweise, 3 Zustände (H = hoch, L = tief, X = unbekannt) verwendet werden, wird ein 2-Eingangs-AND-Gatter in der Ausgestaltung durch ein logisches Netzwerk verwirklicht, das entsprechend der 3-Zustands-AND-Funktion arbeitet (Fig. 50a). Die logische Funktion arbeitet, als wenn sie in einem 3-Zustands-Simulator wäre, wobei der X-Zustand auf dem Ausgang erzeugt wird, wenn entweder der Eingang X ist oder keine der Eingänge L ist (Fig. 50b). Dieses Netzwerk hat zwei 2-Bit-Eingänge und einen 2-Bit-Ausgang (Fig. 50c). Das Verfahren zur Mehrzustands-Realisation kann über die gesamte Eingangs- Ausgestaltung verwendet werden oder aber lediglich in Teilen der Ausgestaltung, wie dies von den jeweiligen Anforderungen der Ausgestaltungsanalyse aufgerufen wird. Netze, die in mehr als zwei Zuständen zu simulieren sind, werden als solche in dem Einangs-Ausgestaltung-File markiert, der Ausgestaltungsleser notiert dies in der Ausgestaltungs-Datenstruktur und der Grundelementekonverter macht die obige Substitution des Netzwerks für Grundelemente und Mehrfachnetze für eines. Wenn ein logisches Grundelement Netzverbindungen aus einer Mischung von Zwei-Zuständen und Mehr-als- zwei-Zuständen hat, wird ein logisches Netzwerk verwendet, das entsprechend den Netzanforderungen arbeitet. Ansonsten arbeitet die Simulation wie oben beschrieben.
  • 3.1.5 Realizer-Darstellung einer Verzögerung
  • Die zeitliche Verzögerung eines Signals zum Passieren eines Logik-Elementes wird bei modernen Logik-Simulationen in vielfältiger Weise modelliert. Da die Logik in den Logik-Chips des Realizers tatsächlich eine Hardware ist, können seine Verzögerungseigenschaften nicht mit vollständiger Genauigkeit definiert werden, so daß die logische Verzögerung nicht direkt modelliert werden kann. Es wird durch Verwenden von besonderen Verfahren in dem den Simulator betreibenden Programm modelliert und/oder durch Einsetzen besonderer Logik-Funktionen zum Modellieren der Verzögerung während des Ausgestaltungs-Konversions-Prozesses. Die Verzögerung kann in einer verwirklichten Simulation als Null- Verzögerung, Einheitsverzögerung oder tatsächlichen Verzögerung modelliert werden. Die Wahl wird von dem Verwender getroffen und wird dem Realizer-Logik- Simulationssystem angegeben.
  • 3.1.5.1 Null-Verzögerung
  • Null-Verzögerung bedeutet, daß die Simulation ohne Modellierung einer Realzeit-Verzögerung arbeitet und diese behandelt, als wenn diese null wäre. Wenn, beispielsweise, ein Stimulus-Ereignis zu einem Zeitpunkt "t" auf einem Eingang auftritt, der direkt über eine kombinatorische Logik nur mit einem Ausgang verbunden ist, wird das Antwortereignis auf dem Ausgang als zu dem Zeitpunkt "t" auftretend berichtet werden.
  • Keine besonderen Logik-Funktionen werden durch das Ausgestaltungs-Konversionssystem für eine Null-Verzögerung eingebaut. Die Simulation arbeitet entsprechend dem Verfahren, das in dem oben diskutierten Haupt-Realizer-Logik-Simulationssystem geschrieben worden ist.
  • 3.1.5.2 Verzögerungsabhängige Funktionalität
  • Wenn es in der Ausgestaltung eine verzögerungsabhängige Funktionalität gibt, treten Komplikationen auf. Das Lohnverzögerungs-Zeitmodell versagt in diesem Fall. Wenn eine Funktionalität in Form einer geschlossenen Schleife vorliegt, d. h. eine asynchrone Rückkopplung wie in kreuzgekoppelten Gattern, kann dort eine implizite Speicherung vorhanden sein. Die Funktionalität der Speicherung kann von den relativen Verzögerungen abhängen. Die andere Form der verzögerungsabhängigen Funktionalität besteht dann, wenn die Verzögerung in einer Funktion einer offenen Schleife verwendet wird. Ein Beispiel davon ist das Exklusiv-Oder-Gatter mit einem Verzögerungselement, das über seinen Eingang verbunden ist (Fig. 51a). Der Exklusiv-Oder-Ausgang ist während der Zeit hoch, die ein Signal benötigt, um durch das Verzögerungselement zu wandern. Jede Übertragung, die auf dieses Netzwerk aufgebracht wird, wird einen Impuls an seinem Ausgang erzeugen (Fig. 51b).
  • Da die tatsächliche Realizer-Logik-Verzögerungen nichtnull sind, wenn nicht direkt steuerbar, arbeitet die verzögerungsabhängige Funktionalität in den meisten Fällen einer geschlossenen Schleife korrekt, etwa bei kreuzgekoppelten Gattern und einigen Fällen offener Schleifen.
  • Ein Verwender kann jedoch eine Bestimmtheit verlangen, daß die verwirklichte Ausgestaltung wie gewünscht arbeitet. Moderne Zeitanalyse-Werkzeuge finden automatisch und berichten das Auftreten einer asynchronen Rückkopplung und Erkennen einer verhaltensabhängigen offenschleifigen Verzögerung. Das Realizer-Ausgestaltungs-Konversionssystem führt Zeitanalysen durch, wenn diese von dem Verwender angefordert werden, durch Verwendung eines Zeitanalyse-Werkzeuges. Die bevorzugte Implementation verwendet das Mentor Graphics Quick Path-Zeitanalyse-Werkzeug ("Quickpath User's Manual", Mentor Graphics Corp., Beaverton, Oregon, 1989). Da die Arbeitsweise und die Möglichkeiten eines solchen Werkzeugs gut eingeführt sind, werden sie hier nicht weiter beschrieben. Die Analyse arbeitet entsprechend dem folgenden Verfahren:
  • 1) Als ein Teil des Ausgestaltungs-Konversionsvorgangs erzeugt das Netzlisten-Konversions- Werkzeug Abschätzungen der internen Verbindungen und Logikverzögerungen, die an Aufzeichnungs-Files ausgegeben werden.
  • 2) Nachdem alle Netzlisten gewandelt worden sind, lies die Daten aus den Aufzeichnungs-Files und gib diese in die Ausgestaltungs-Datenstruktur, wobei jede Verzögerungsabschätzung mit seinem Grundelement oder Netz zugehörig ist.
  • 3) Schreibe die Datenstruktur aus in einen Ausgestaltungs-File.
  • 4) Bringe das Zeitvorgabe-Analysewerkzeug auf den Ausgestaltungs-File auf. Berichte alle möglichen Anomalien, die von dem Zeitanalysator erkannt worden sind, an den Verwender, der diese auswerten und den Eingabe-Ausgestaltungs-File wie geeignet ändern wird.
  • 3.1.5.3 Einheitsverzögerung
  • Ein Einheitsverzögerungs-Modell ist eines, bei dem jedes logische Grundelement so modelliert wird, als hätte es eine Verzögerung einer Einheit. Eine solche Modellierung wird häufig bei Ausgestaltungen mit einem verzögerungsabhängigen Verhalten verwendet, um eine richtige Betriebsweise sicherzustellen. Der Verwender spezifiziert Einheitsverzögerungs-Grundelemente, die mit Null-Verzögerungs-Grundelementen vermischt sein können, durch Zuordnen von geeigneten Eigenschaften zu den Grundfunktionen in dem Eingabe-Ausgestaltungs-File.
  • Die Einheitsverzögerungs-Modellierung wird durch automatisches Anschließen eines Flip-Flops auf den Ausgang jedes Einheitsverzögerungs-Logikelementes verwirklicht. Diese Flip-Flops sind mit einem gemeinsamen Taktgeber verbunden, der einmal für jede Zeiteinheit in der Simulation durch einen zweiten Taktgeber zyklisch betrieben wird. Diese Flip-Flops und ihr "Zeittakt"-Netz werden zu der Ausgestaltungs-Datenstruktur durch den Grundelementen-Konversionsprozeß zugeordnet. Ein beispielhaftes logisches Ausgestaltungsnetz, das mit einer Einheitsverzögerung zu simulieren ist, ist das des Flip- Flops, das aus kreuzgekoppelten Gattern besteht (Fig. 52a). Jedes Gatter ist an seinem Ausgang mit einem Einheitsverzögerungs-Flip-Flop verbunden (Fig. 52b).
  • Der sich ergebende Betrieb ist bei einem kontinuierlichen Zeittakt und Eingangssignalen derjenige eines Flip-Flops mit Einheitsverzögerungs-Gattern (Fig. 52c).
  • Der Realizer-Logik-Simulator für eine Einheitsverzögerungs-Simulation arbeitet entsprechend demselben Verfahren wie für die Null-Verzögerung, mit den folgenden Abweichungen:
  • - Der Verwender gibt an, welche Zeit einer Einheit entsprechen soll.
  • - Die Stimulus- und Antwortzeiten werden auf ein von dem Verwender Vielfaches "M" einer Zeiteinheit eingeschränkt.
  • - Jeder Vektorspeicherort entspricht M-Zeiteinheiten, unabhängig davon, ob zu diesem Zeitpunkt Stimulus- Ereignisse vorliegen.
  • - Das Stimulus- und Antwort-Translationssystems verwendet diese Angaben, um zwischen den Ereignissen und den Vektorspeicherorten entsprechend dieser Übereinstimmung aufzulisten.
  • - Infolgedessen wird ein Zeitraum ohne Stimulus- Ereignisse durch einen Vektorspeicherort repräsentiert, dessen Inhalte dem vorangehenden Ort identisch sind.
  • - Der Betriebskern setzt die Frequenz des "Zeittakt"-Taktgebers auf das M-fache der Frequenz von ECLK und gibt an, daß sie synchron miteinander arbeiten. Während des Betriebs ist nur ein ECLK gegeben und daher ein Satz von Stimulus und Antwort für alle M-Zeiteinheiten.
  • 3.1.5.4 Reale Verzögerung
  • Die reale Verzögerung oder die Verzögerung um variable Einheiten von Zeiten, wird durch Verwendung besonderer Hardware-Konstruktionen in den Logik-Chips verwendet, die automatisch in die Ausgestaltungsdatenstruktur eingebracht werden für jedes Realverzögerungs-Logik-Element, während der Ausgestaltungskonversion. Es gibt verschiedene Verfahren:
  • Ein serielles Schieberegister wird in Reihe mit jedem logischen Grundelementen-Ausgang konfiguriert. Seine Länge wird entsprechend der Anzahl von Einheiten der erforderlichen Verzögerung in jedem Fall konfiguriert. Alle Schieberegister werden durch einen gemeinsamen "Zeittakt" getaktet, zyklisch einmal für jede Zeiteinheit betrieben. Das Schieberegister wirkt so als eine reale Verzögerung von "n" Einheiten, wobei "n" die Länge des Registers ist (Fig. 53a, gewählt über einen Multiplexer entsprechend dem Wert in dem Verzögerungsregister).
  • Alternativ wird eine Maschine mit endlichen Zuständen (FSM) und ein Zähler mit eine Speicherung für eine oder mehrere Start-Zählungen in Reihe mit jedem Ausgang des Grundelementes konfiguriert (Fig. 53b). Die FSM erkennt die Ausgangszustands-Transitionen der logischen Grundelemente. Für jede solcher Zustandstransitionen wird der Zähler durch das FSM mit einer Startzahl geladen, die für die jeweilige Art der Zustands-Transition, die aufgetreten ist (ansteigend oder abfallend), aufgetreten sind. Alle Zähler werden durch einen gemeinsamen "Zeittakt-"Geber getaktet, zyklisch einmal für jede Zeiteinheit. Wenn die Zahl erreicht wird, wird die Ausgangszustands-Transition von dem FSM zu dem verzögerten Ausgang zum Fortschreiten zu seinen verbundenen Eingängen übertragen (wie Fig. 53c).
  • Bei beiden Verfahren ist der Simulatorbetrieb identisch dem oben beschriebenen Einheitsverzögerungs-Verfahren. Der einzige Unterschied besteht darin, daß die logischen Grundelemente mehr als eine Einheitsverzögerung zulassen, aufgrund der obigen Struktur.
  • 3.1.6 Übertragen des Zustands von einem Realizer- Simulator in einen anderen Simulator
  • Das Realizer-Logik-Simulationssystem hat Vorteile bezüglich der extremen Geschwindigkeit und damit der Fähigkeit, um Größenordnungen mehr Testzyklen auszuführen als eine Software oder andere ereignisbetriebene Simulatoren. Es hat die Nachteile, daß Verzögerungen und andere zeitbezogene Einzelheiten nicht repräsentiert werden können und daß nicht alle Knoten in der Ausgestaltung beobachtet werden können. Übliche ereignisbetriebene Software-Simulationen können, obwohl weitaus langsamer, die Vorteile der Repräsentation der Einzelheit haben und des Zugangs zu allen Netzwerkknoten zur Stimulation und zur Beobachtung. Da sie so langsam sind, ist es jedoch nicht praktisch, die simulierte Ausgestaltung in einen fehlerhaften Zustand zu bringen, der viele Millionen oder Milliarden von Zyklen weg von dem Ausgangszustand ist. Das Finden des fehlerhaften Zustands kann in der Praxis unmöglich sein.
  • Wenn ein Realizer-System mit Logik-Chips aufgebaut ist (etwa als das Xilinx-LCA), die die Fähigkeit zum Auslesen ihrer internen Zustände hat, das sind die Werte der internen Flip-Flops und der logischen Gatterausgänge, kann die verwirklichte Simulation gestoppt werden, und der Zustand der gesamten Ausgestaltung kann ausgelesen werden. Ein Realizer-Logik-Simulator und ein anderer Simulator sind gekoppelt, um den Zustand der simulierten Ausgestaltung (d. h. den Werten aller internen Speicher in der Ausgestaltung und aller Eingaben in der Ausgestaltung) von einem zu dem anderen zu übertragen, entsprechend dem nachfolgenden Verfahren:
  • 1) Dieselbe Ausgestaltung wird in beide Simulatoren eingeladen.
  • 2) Die Ausgestaltung in dem Realizer-Logik- Simulator wird fur einige Anzahlen von Zyklen simuliert, etwa der Anzahl der Zyklen, die es benötigt, um die Ausgestaltung in einen Zustand zu bringen, der kurz vor einem Fehler oder einem in seinen Einzelheiten zu beobachtenden Zustand auftritt.
  • 3) Zu diesem Zeitpunkt, wird der Realizer-Stimulus-Taktgeber gestoppt und der Gesamtzustand der Ausgestaltung wird aus den logischen Chips ausgelesen.
  • 4) Die in dem anderen Simulator repräsentierte Ausgestaltung wird sodann initialisiert, um dem Zustand zu entsprechen, der von dem auf einem Realizer basierenden Simulator ausgelesen wird.
  • 5) Die Simulation wird in dem anderen Simulator fortgesetzt. Es wird so die extreme Geschwindigkeit des Realizer-Logik-Simulators verwendet, um Fehler zu entdecken, die auf eine andere Weise eine so lange Zeit benötigen, um entdeckt zu werden, und sodann werden die Einzelheiten und die Sichtbarkeit des anderen Simulators verwendet, um die Ursache des Fehlers zu ergründen.
  • 3.2 Realizer-Fehlersimulations-System
  • Die Fehlersimulation ist eine Variation einer logischen Simulation, die verwendet wird, um Testvektoren zu entwickeln und zu qualifizieren, d. h. einen Satz von Stimuli, die verwendet werden, um die Richtigkeit einer Ausgestaltung zu überprüfen, typischerweise einer integrierten Schaltung, nachdem diese hergestellt worden ist. Eine fehlerhafte Version der Ausgestaltung des Verwenders wird unter Verwendung eines Testvektor- Stimulus simuliert und mit der für gut befundenen Version verglichen, um zu sehen, ob der Prüfvektor- Stimulus irgendeine unterschiedliche Antwort als die Antwort der für gut befundenen Version verursacht. Wenn es dies tut, wird der Testvektor-Stimulus geprüft, um zu bewirken, daß Fehler erkannt werden. Dies wird für einen großen Satz von Fehlern wiederholt. Es ist das Ziel, einen Satz von Testvektoren zu bilden, die so viele Fehler wie möglich erkennen. Normalerweise werden zwei Fehler für jedes Netz in der Eingabe-Ausgestaltung simuliert, eins, bei dem das Netz konstant tief ist, bezeichnet als "setze auf tief" und einem "setze auf hoch". Da die Eingabe-Ausgestaltung üblicherweise Tausende von Netzen und Tausende von Testvektoren hat und die viele Simulationen für jede neue Version der Testvektoren wiederholt wird, ist dies ein sehr zeitaufwendiger Ansatz.
  • Ein neues Mittel zum Aufbauen eines Fehlersimulators basiert auf dem Realizer-System. Das Verfahren des Realizer-Logiksimulators wird verwendet, mit Abwandlungen für die Fehlersimulation. Das serielle Fehlersimulationsverfahren ("QuickSim Family Reference Manual", Mentor Graphics Corp., Beaverton, Oregon, 1989) wird verwendet: Für jeden Fehler:
  • 1) Modifiziere die realisierte Ausgestaltung, um den Fehler einzuführen.
  • 2) Betreibe die Ausgestaltung mit dem Stimulus, vergleiche die Antworten mit denjenigen einer fehlerfreien Ausgestaltung und zeige jegliche Abweichung an.
  • 3) Entferne den Fehler und zeichne auf, ob für diesen Fehler ein Unterschied vorlag.
  • Der Unterschied gegenüber allen gegenwärtigen Fehlersimulationen besteht darin, daß sie sequentielle Algorithmen ausführen, die den fehlerhaften Antworten der Ausgestaltung auf den Stimulus vorhersagen, während der Realizer-Simulator auf die tatsächliche Verwirklichung der fehlerhaften Ausgestaltung anspricht, um die Antworten der Ausgestaltungen auf den Reiz zu bestimmen. Der Hauptvorteil besteht darin, daß die verwirklichte Ausgestaltung Antworten um Größenordnungen schneller vorhersagt, als ein sequentieller Algorithmus Antworten vorhersagen kann.
  • Fehler werden direkt in die Ausgestaltung eingegeben, wie sie in dem Realizer-Logik- und Verbindungschips konfiguriert sind. Um einen Fehler in einen Eingabeausgestaltungsnetz einzubringen:
  • Wenn das Netz in der Eingabeausgestaltung einem (oder mehreren) entsprechendes Netz in Logikchip(s) hat:
  • Rekonfiguriere jedes Logikchip, das mit dem Netz mit einer fehlerhaften Ausgestaltung verbunden ist, die der ursprünglichen Ausgestaltung identisch ist mit der Ausnahme, daß die mit dem Netz verbundenen Eingänge mit einem konstanten Hoch oder Tief verbunden sind, entsprechend dem Fehler.
  • Falls nicht, wurde es in eine Logikfunktion eines logischen Chips subsummiert.
  • Rekonfiguriere das Logikchip mit einer fehlerhaften Ausgestaltung, die der ursprünglichen Ausgestaltung identisch ist mit der Abweichung, daß die logische Funktion, die das Netz subsummiert, konfiguriert ist, um so zu arbeiten, als wenn das Netz konstant hoch oder tief wäre, entsprechend dem Fehler.
  • Um den Fehler zu entfernen, rekonfiguriere das (bzw. die) Chip(s) mit ihren ursprünglichen Konfigurationen.
  • Der Realizer-Fehlersimulator ist im wesentlichen dem Realizer-Logiksimulator ähnlich mit den folgenden Abweichungen (Fig. 54):
  • Es hat einen Fehler-Konfigurator, der ein zusätzliches Teil des Ausgestaltungs-Konversionssystems jenseits dessen des Logik-Simulators ist. Es erzeugt Konfigurations-Fileabweichungen für jeden Fehler wie folgt:
  • 1) Zeitweiliges Einführen des Fehlers in die Ausgestaltungsdatenstruktur
  • 2) Bestimmen, welches logische Chip durch die Fehlerausgestaltungsänderung betroffen ist.
  • 3) Ausgeben von Netzlisten-Files für die betroffenen Logik-Chips.
  • 4) Erzeugen von Konfigurations-Files für die betroffenen Logikchips mit dem ERCGA-Netzlisten-Konversionswerkzeug.
  • 5) Vergleiche die fehlerhaften Konfigurationsfiles mit den ursprünglichen und sicher nur die Differenzen in dem abweichenden Konfigurationsfile.
  • Statt der Konfiguration von Antwort-Vektorspeichern in Antwortnetzen konfiguriert der Ausgestaltungs-Konverter Fehlerantwort-Vektorspeicher. Wie in dem Stimulus-Antwort-Abschnitt beschrieben, vergleichen diese das Antwortnetz mit dem fehlerfreien Wert, der in dem Speicher gespeichert ist, unter Setzen eines Flip-Flops, wenn eine Abweichung erkannt worden ist.
  • Der Betriebskern arbeitet für die Fehlersimulation unterschiedlich. Um die Fehlersimulation zu betreiben (gezeigt sind eine Nullverzögerung, die Einheits- oder eine Realverzögerung sind ähnlich):
  • 1) Lies den Konfigurationsfile der Ausgestaltung und verwende ihn zum Konfigurieren aller Logik- und Verbindungschips des Realizers, wie in dem Konfigurationsabschnitt beschrieben.
  • Lies die ursprünglichen Ausgestaltungs-Speicherdaten aus den Files und schreibe diese in Ausgestaltungsspeicher. Lies den Konfigurations-Abweichungsfile.
  • 2) Lies den Stimulus-Binärfile. Speicher die Inhalte des Vektorfeldes in die entsprechenden Stimulus-Vektorspeicher über die Host-Schnittstelle. Lies das Zeitfeld "T" und die Zykluszahl "v". Lies den Antwort-Binärfile der fehlerfreien Schaltung. Speicher die Vektor- Inhalte in die entsprechenden Vektor-Speicher der fehlerhaften Antwort.
  • 3) Erzeuge die Fehler-Konfigurationsfiles für die betroffenen Logikchips durch den ersten Fehler, der die Konfigurationsabweichungen für diesen Fehler verursacht, und verwende diesen zum Konfigurieren der logischen Chips für diesen Fehler.
  • 4) Lösche alle Vektorspeicher-Zähler und die den Unterschied erkennenden Flip-Flops in den Vektorspeicher-Modulen. Betreibe den Ausgestaltungs-Rückstellgenerator zyklisch, um die realisierte Ausgestaltung zu initialisieren.
  • 5) Gib den Taktgenerator des ECLK-Netzes für "v"-Zyklen frei. Dies verursacht, daß die Stimulus-Vektorspeicher ihre Stimulusdaten freigeben unter Betreiben der verwirklichten Ausgestaltung entsprechend dem Stimulus und die Fehlerantwort-Vektorspeicher dazu, die Antwortdaten gegenüber der fehlerfreien Schaltung zu vergleichen.
  • 6) Prüfe die Fehlerantwort-Detektions-Flip-Flops und die Aufzeichnung, ob für diesen Fehler eine Abweichung aufgetreten ist.
  • 7) Speichere die ursprüngliche Konfiguration zu den fehlerhaft gemachten Logikchips zurück.
  • 8) Wiederhole die Schritte 3 - 7 für jeden verbleibenden Fehler.
  • 3.3 Realizer-Logiksimulator-Bewertungssystem
  • Die gegenwärtig üblichsten Simulatoren in modernen EDA-Systemen arbeiten entsprechend einem der gut bekannten sequentiellen Algorithmen, die als ereignisbetrieben oder kompiliert-kodierte Simulation bezeichnet werden ("An Introduction to Digital Simulation", Mentor Graphics Corp., Beaverton, Oregon, 1989). Jedes Grundelement in der Eingabeausgestaltung wird für jeden zeitlichen Schritt, in dem ein Netz, das einen Eingabepin des Grundelements antreibt, ein Ereignis hat, "bewertet", das heißt, eine Änderung eines Zustands in dem ersten Algorithmus oder für alle Zeitschritte in dem zweiten. Eine Bewertung eines Grundelements ist der Vorrang des Bestimmens, welcher des (bzw. der) neuen Ausgangswerts(e) der Grundelemente eine Folge eines neuen Einheitswerts sind. Dies geschieht während einer Simulation mehrere Male. Normalerweise werden nur kleine Grundelemente, etwa Gatter, mit einem Vorgang unter Verwendung von Tabellen-Nachschlag- oder anderen direkten Verfahren bewertet. Große logische Netzwerke werden gewöhnlich als eine Zusammensetzung von kleinen Grundelementen oder Netzen simuliert. Viele zeitaufwendige interne Bewertungen werden für jede Bewertung eines großen Netzwerks erforderlich.
  • Ein Logiksimulator, der dem Realizer-System extern ist und einen sequentiellen Simulationsalgorithmus ausführt, ist mit dem Bewertungssystem des Realizer- Logiksimulators, der die Realizer-Hardware zur Bewertung eines oder mehrerer großer Netzwerke innerhalb einer algorithmischen Simulation verwendet, gekoppelt. Jedes von dem Realizer-System evaluierte große logische Netzwerk wird durch ein einziges Grundelement in dem externen logischen Simulator repräsentiert. Der Vorteil ist der der Geschwindigkeit, da das realisierte Grundelement nahezu sofort verwirklicht wird. Die Größe des bzw. der logischen Netzwerks (Netzwerke), das bzw. die von dem Realizer-System evaluiert wird, ist lediglich durch die logische Kapazität des Realizers begrenzt und umfaßt so viel, wie die ganze Eingabeausgestaltung.
  • Das Evaluationssystem des Realizer-Logiksimulators besteht aus dem Realizer-Ausgestaltungs-Konversionssystem (an anderer Stelle beschrieben) und dem Realizer- Logik-Simulationsevaluator, gemeinsam mit dem Realizer-Hardwaresystem und dem Host-Computer (Fig. 55). Es wird mit einem externen Logik-Simulator gekoppelt, der als ein sequentieller Simulations-Algorithmus arbeitet.
  • Um logische Netzwerke zur Evaluation durch das Evaluationssystem der Realizer-Logiksimulation vorzubereiten:
  • 1) Assembliere die von dem Realizer-System zu evaluierenden logischen Netzwerke als eine Eingabeausgestaltung auf dem EDA-System.
  • 2) Bringe die Eigenschaften zu den Eingabe- und Ausgabenetzen jeden logischen Netzwerks unter Angabe, daß diese von den Stimulatoren bzw. Abtastern zu betreiben sind.
  • 3) Konvertiere die Eingabe-Ausgabegestaltung unter Verwendung des Realizer-Ausgestaltungskonversionssystems in üblicher Weise unter Erzeugen von Ausgestaltungs- und Entsprechungstabellen-Files für die Sammlung der logischen Netzwerke.
  • Um die Simulation auszuführen, betreibe gemeinsam den externen Logiksimulator, der den Simulationsalgorithmus ausführt, und den Realizer-Logiksimulationsevaluator, entsprechend dem folgenden Verfahren:
  • 1) Organisiere die externen Datenstrukturen des Simulators derart, daß dort ein einziges Grundelement für jedes von dem Realizer-System zu evaluierende logische Netzwerk ist.
  • 2) Lies den Korrespondenz-Tabellenfile der Ausgestaltung und die zugehörigen Grundelementen- Eingänge- und Ausgänge mit ihren entsprechenden Stimulatoren und Abtastern und ihren Adressen auf ihrem Realizer-Host-Schnittstellenbus.
  • 3) Lies den Konfigurationsfile der Ausgestaltung und verwende diesen zum Konfigurieren aller Logik- und Verbindungschips des Realizers, wie in dem Konfigurationsabschnitt beschrieben. Lies die ursprünglichen Ausgestaltungs-Speicherdaten aus den Files und schreibe diese in Ausgestaltungsspeicher. Betreibe den Rückstellgenerator der Ausgestaltung zyklisch, um die realisierten logischen Netzwerke zu initialisieren.
  • 4) Initialisiere alle Simulatoren mit Ausgangswerten.
  • 5) Betreibe den Simulationsalgorithmus in dem externen Logik-Simulator. Der Simulationsalgorithmus verwendet dieses Verfahren zum Evaluieren von auf einem Realizer basierenden Grundelementen:
  • 1) Übertrage die Werte für alle Eingänge zu diesem Grundelement zu dem Simulations- Zeitschritt zu dem Realizer-Logik-Simulationsevaluator und dessen Richten zum Laden der Werte in die entsprechenden Stimulatoren.
  • 2) Richte den Logik-Simulationsevaluator des Realizers zum Prüfen aller Ausgabe-Abtaster für dieses Grundelement und Übertragen jeglicher Änderungen als Ausgänge zurück zu dem Simulationsalgorithmus.
  • 6) Schaffe die Möglichkeit für das externe Schnittstellensystem für den Verwender des Logik-Simulators zum Zugreifen auf die Inhalte der Ausgestaltungsspeicher über die Host- Schnittstelle für die Prüfung und Modifikation durch den Verwender vor, während und nach der Simulation.
  • Wenn der Simulationsalgorithmus in Software ausgeführt wird, wird er auf dem Realizer-Host-Computer ausgeführt und verwendet die Host-Schnittstelle zum Zugriff auf die Stimulatoren, Abtaster und den Ausgestaltungsspeicher. Wenn der Simulationsalgorithmus in Hardware ausgeführt wird, verwendet er Kommunikationsverbindungen zu dem Host-Computer, um auf die Stimulatoren, Abtaster und das Ausgestaltungsspeicher zurückzugreifen.
  • Eine Abwandlung von Hardware-Simulator-Systemen verwendet eine direkte Verbindung zwischen der Simulator- Hardware und dem bzw. den Modul(en) des von dem Verwender unterstützten Gerätes (USD) des Realizers. Das Verfahren ist wie oben mit den folgenden Unterschieden:
  • 1) Statt des Angebens der Stimulatoren und der Abtaster an den Grundelementeneingaben und -ausgaben in der Eingabe-Ausgestaltung, verbinde diese mit einer USD-Grundfunktion entsprechend der Hardware-Simulations-Evaluationseinheit.
  • 2) Elektrisches Verbinden der Evaluationseinheit des Hardware-Simulators mit dem USDM des Realizers.
  • 3) Wenn ein Eingabeereignis auftritt, wende diese neuen Werte zu dem verwirklichten Grundelement durcheine direkte Verbindung an und sammle die Ausgangsantworten durch eine Direktverbindung, statt über den Host. Es ergebe sich noch höhere Geschwindigkeiten.
  • 3.4 Realizer-Svstem zur Prototypisierung
  • Wenn eine Eingabeausgestaltung verwirklicht ist, kann diese direkt als eine Prototyp-Verwirklichung der Ausgestaltung betrieben werden. Obwohl die Zeitverzögerungen des Realizer-Systems im allgemeinen denjenigen der schließlichen Hardware-Verwirklichung nicht entsprechen und der Prototyp daher nicht vollständig mit der Geschwindigkeit der Ausgestaltung arbeiten kann, erlaubt die Prototyp-Verwirklichung auf der Realizer- Basis nahezu den tatsächlichen Echtzeitbetrieb der Ausgestaltung. Die verwirklichte Ausgestaltung wird durch den bzw. die Taktgenerator(en) des Realizers stimuliert, Stimulatoren werden über den Host, tatsächliche von dem Verwender bediente Hardware-Geräte, verwirklichte virtuelle Instrumente (unten beschrieben) oder aber sich selbst stimulierende, durch eine interne Logik und/oder Ausgestaltungsspeicherinhalte stimuliert. Das Operationsverhalten der Ausgestaltung wird beobachtet und mit Abtastern analysiert, über den Host, tatsächliche von dem Verwender bediente Hardware- Geräte, realisierte virtuelle Instrumente und/oder durch Prüfen der Inhalte der Ausgestaltungsspeicher gesteuert. Der Designer wirkt direkt mit der Ausgestaltung in Echtzeit als eine "Benchtop"-Umgebung zusammen.
  • Das Realizer-Prototyping-System besteht aus dem (an anderer Stelle beschriebenen) Ausgestaltungs-Konversionssystem und dem Prototyping-Operator, gemeinsam mit dem Realizer-Hardwaresystem und dem Host-Computer (Fig. 56).
  • Der Prototyping-Operator konfiguriert das Realizer- System für die zu betreibende Ausgestaltung und liefert den interaktiven Stimulus und die Antwort der realisierten Ausgestaltung. Es arbeitet auf dem Host- Computer und antwortet auf Verwenderbefehle, entweder direkt oder von einem Steuerprogramm, das ebenfalls auf dem Host-Computer läuft.
  • Um die verwirklichte Ausgestaltung zu betreiben:
  • 1) Lies den Ausgestaltungs-Konfigurationsfile und verwende diesen zum Konfigurieren aller Logik- und Verbindungschips des Realizers, wie in dem Konfigurationsabschnitt beschrieben. Lies die ursprünglichen Ausgestaltungsspeicherdaten aus den von dem Verwender gelieferten Files und schreibe diese Ausgestaltungsspeicher. Lies den Entsprechungs-Tabellenfile und erstelle Übereinstimmung zwischen den Ausgestaltungs- Netznamen und den Stimulatoren und den Abtastern und ihren Host-Schnittstellenbusadressen.
  • 2) Betreibe den Rückstellgenerator der Ausgestaltung zyklisch, um die realisierte Ausgestaltung zu initialisieren.
  • 3) Schaffe kontinuierlich die folgenden Betriebsweise auf Anforderung:
  • - Dienstverwenderbefehle, die den Takt- und Rückstellgenerator steuern.
  • - Dienstverwenderbefehle zum Ändern von Stimulatordaten-Ausgangswerten unter Verwendung der Entsprechungstabelle zum Beziehen des von dem Verwender geschaffenen Netznamens auf den entsprechenden Stimulator.
  • - Dienstverwenderbefehle zum Darstellen von Abtastdaten-Eingangswerten unter Verwendung der Entsprechungstabelle zum Beziehen der von dem Verwender geschaffenen Netznamen auf den entsprechenden Abtaster.
  • - Dienstverwenderbefehle zum Lesen und Schreiben von Orten in den Ausgestaltungsspeichermodulen. Stelle sicher, daß die Ausgestaltung nicht arbeitet durch Prüfen, daß die Taktgeneratoren gestoppt sind, bevor auf den Ausgestaltungsspeicher zugegriffen wird, um so einen ungewollten Ausgestaltungsspeicherbetrieb zu vermeiden. Melde dem Verwender, wenn die Ausgestaltung nicht gestoppt ist.
  • Um das Realizer-Prototyping-System zu verwenden:
  • 1) Verwende die Eingabedaten in dem Host-EDA- System.
  • 2) Markiere Ausgestaltungsnetze, die mit Stimulatoren, Abtastern und Takt- oder Rückstellgeneratoren zu verbinden sind.
  • 3) Schließe Ausgestaltungs-Grundelemente, Netze und Verbindungen zum Ausgestalten von Netzen für jede virtuelle verwendende Instrumentation ein (siehe unten).
  • 4) Konvertiere die Eingabeausgestaltung mit dem Realizer-Ausgestaltungs-Konversionssystem unter Erzeugen eines Konfigurationsfiles für die Ausgestaltung.
  • 5) Betreibe die Ausgestaltung mit dem Realizer- Prototyping-Operator.
  • In einem besonderen in Figur 57 gezeigten Beispiel ist eine digitale Computerausgestaltung mit einem Realizer-Prototypingsystem ausgestaltet. Der Verwender verwendet das Host-EDA-System zum Darstellen der Ausgestaltung der Logik und den Speicher des Computers in einem Eingabe-Ausgestaltungsfile, das der Verwender in einem Konfigurationsfile mittels des Realizer-Ausgestaltungs-Konversionssystems konvertiert. Steuereingaben über die Steuertafel und Anzeigenausgaben, die die tatsächlichen Steuerelemente und Anzeigen in einer tatsächlichen Implementation verbinden, werden in der Eingabeausgestaltung angegeben, um mit den Stimulatoren und den Abtastern unter der Steuerung des Verwenders über den Prototyp-Operator verbunden zu werden. Das Eingabesignal des Computer-Taktgebers wird angegeben, um von dem Realizer-Taktgeber erzeugt zu werden.
  • Um den Prototyp-Computer zu betreiben, läßt der Verwender den Realizer-Prototyp-Operator laufen, um das Realizer-System entsprechend der Computer-Ausgestaltung zu betreiben. Der Verwender lädt den auf der realisierten Computer-Ausgestaltung auszuführenden Computer- Programmcode und seine ursprünglichen Daten in das Ausgestaltungsspeicher bei dem Beginn des Vorgangs über den Prototyp-Operator. Wenn der Verwender den Taktgenerator freigibt, arbeitet die Computer-Ausgestaltung tatsächlich in den konfigurierten Logik- und Verbindungschips der Realizer-Hardware unter Ausführung von Programm-Befehlscodes, die aus dem Ausgestaltungsspeicher ausgelesen werden, und Lese- und Schreibdaten in dem Ausgestaltungsspeicher. Der Verwender betreibt die Steuereingaben der Bedienungstafel und liest die Anzeigeausgaben während des Betriebs über den Zugang für den Prototyp-Operator zu den entsprechenden Stimulatoren und Abtastern. Ergebnisse werden aus dem Speicher von dem Verwender über den Prototyp-Operator bei Beendigung des Programms ausgelesen. Der Verwender analysiert die Ergebnisse zum Bestimmen, ob die Ausgestaltung richtig ist, d. h. ob der Betrieb entsprechend der Absicht des Verwenders erfolgt. Wenn dies nicht aufgrund eines Ausgestaltungsfehlers in der Eingabe-Ausgestaltung ist, korrigiert der Verwender den Fehler unter Verwendung des Host-EDA-System und wiederholt den Prototyping- Vorgang.
  • 3.4.1 Realisierte virtuelle Instrumente
  • Wenn Stimulus und/oder Analyse-Instrumente in dem Prototyp-Fehlersuchprozeß aufgerufen werden, werden konventionelle Instrumente, etwa Logik-Analysatoren, direkt mit der verwirklichten Ausgestaltung über ein von dem Verwender bedientes Gerätemodul verbunden. Zum Verbinden eines tatsächlichen Instruments wird ein Grundelement, das das Instrument USD in der Eingabe- Ausgestaltung einschließt, mit Ausgestaltungsnetzen verbunden, die mit dem Instrument zu verbinden sind, unter Erzeugen eines USD-Spezifikations-File, das die USD-Verbindungen definiert. Sodann wird das Instrument direkt mit dem USDM verbunden und die realisierte Ausgestaltung wird wie oben konvertiert und betrieben.
  • Zusätzlich bestehen "virtuelle Instrumente" aus Grundelementen und Netzen, die in die Ausgestaltung des Eingabe-Ausgestaltungs-Files eingeschlossen und gemeinsam mit der Ausgestaltung realisiert werden. Ein logischer Analysator beispielsweise ist ein allgemein bekanntes Instrument, das einen Satz von logischen Signalen beobachtet und wenn sie eine bestimmte Trägerbedingung erfüllen, wird ein Satz von analysierten Signalen kontinuierlich abgetastet und ihre Werte werden in einer Speicher aufgezeichnet, der sodann für die Analyse ausgeschrieben wird. Fig. 58 zeigt die Ausgestaltung eines virtuellen Logik-Analysators, bestehend aus einem Antwort-Vektorspeicher, einem Bedingungsdetektor, der aus logischen Grundelementen besteht, einem oder mehreren Simulatoren und Abtastern und anderen logischen Grundelementen.
  • Zur Verwirklichung und Verwendung eines virtuellen Logik-Analysators mit einer Ausgestaltung:
  • 1) Schließe die Grundelemente für diese Komponenten in dem Eingabe-Ausgestaltungs-File zusätzlich zu der Ausgestaltung, verbunden wie gezeigt, ein. Insbesondere, verbinde Antwort- Vektorspeichereingänge mit den Ausgestaltungsnetzen, die zu analysieren sind, verbinde die Eingänge des Bedingungsdetektors mit den Ausgestaltungsnetzen, die für die Trägerbedingung zu beobachten sind, und gib die Bedingungs- Detektorlogik entsprechend der zu erkennenden Bedingung an.
  • 2) Konvertiere die Eingabe-Ausgestaltung mit einem Konfigurations-File entsprechend dem normalen Vorgehen.
  • 3) Konfiguriere die Ausgestaltung in dem Realizer-Prototyping-System.
  • 4) Betreibe das "Rückstell-"Signal zyklisch über seinen Stimulator und bewirke den Stimulus, der erforderlich ist, damit die realisierte Ausgestaltung den Betrieb beginnt.
  • 5) Beobachte den "getriggerten" Abtaster. Wenn der Abtaster zeigt, daß das "getriggerte" Signal wahr ist, sammelt der Logik-Analysator die analysierten Signaldaten.
  • 6) Lies diese Daten aus dem Antwort-Vektorspeicher des logischen Analysators über die Host-Schnittstelle. Zeige sie an und analysiere sie unter Verwendung eines üblichen Computer-Fehlersuchprogramms oder dergleichen.
  • Dies ist nur ein Beispiel, das zeigt, wie eine virtuelle Stimulus- oder Analyse-Instrumentation mit der Ausgestaltung in dem Realizer-System verwirklicht wird. Beachte, daß die Instrumentationskonzepte selbst, wie das Konzept eines logischen Analysators, nicht neu sind. Ein Element der Neuheit ist die Realisierung der Instrumentation gemeinsam mit der Eingabe-Ausgestaltung in einem Realizer-System.
  • 3.5 Realizer-Ausführungssystem
  • Das Realizer-Ausführungssystem wird verwendet, um Hardware-Funktionen auszuführen, die in Eingabe- Ausgestaltungs-Files spezifiziert sind, die noch nicht konstruiert sind oder aber nie für einen Aufbau in ständiger Abwehr dienen sollen. Es sind mehrere Vorteile, die durch ein solcher Verfahren erreicht werden.
  • Realisierte Ausgestaltungen werden zur Verwendung für eine Software-Entwicklung oder andere Zwecke eingesetzt, während der Zeit, in der die ständige Hardware konstruiert wird. Dies erlaubt beispielsweise eine Software-Entwicklung, um während der Herstellung fortzuschreiten, so daß diese von Fehlern befreit ist und fertig zur Verwendung ist, wenn die ständige Hardware fertiggestellt ist.
  • Das Realizer-Ausführungssystem wirkt als ein universelles Hardware-Gerät und wird für viele unterschiedliche austauschbare Funktionen eingesetzt, wie verlangt. Wenn eine bestimmte Funktion erforderlich ist (nachdem es von dem Realizer-Ausgestaltungs-Konversionssystem verwirklicht worden ist), werden die Konfiguration und die anderen Files für das Hardware-System aus dem Speicher durch den Host-Computer aufgerufen, das Realizer-System wird entsprechend dieser Ausgestaltung konfiguriert, und die Funktion wird ausgeführt. In einer elektronischen Ausgestaltungsumgebung wird das Realizer-Ausführungssystem beispielsweise verwendet, um die Funktion eines Logik-Simulations-Hardware-Beschleunigers, eines Routen-Hardware-Beschleunigers oder eines Hardware- Graphik-Prozessor, wie erforderlich, verwendet. In einer digitalen Signalverarbeitungsumgebung wird das Realizer-Ausführungssystem verwendet, um die Funktion eines Echtzeit-Spektrum-Analysators oder eines Spezialeffekt-Synthesizer, wie erforderlich, verwendet.
  • Das Realizer-Ausführungssystem ist dasselbe wie das Realizer-Prototyping-System mit der Ausnahme, daß:
  • 1) Die Instrumentation für die Analyse wird nicht verwendet, da die Eingabe-Ausgestaltung als richtig betrachtet wird. Stimulatoren, Abtaster und der Ausgestaltungsspeicher-Zugriff werden lediglich verwendet, um die Ausführungsfunktion und die Eingabe- und Ausgabedaten zu steuern.
  • 2) Ein Kontroller, der der besonderen ausgeführten Funktion spezifisch ist, kann erzeugt und verwendet werden, um den Realizer- Prototyping-Operator zu steuern, um die Ausführungsfunktion einer Eingabe-Ausgabe- und Steuerschnittstelle, die der Benutzungsfunktion entspricht, zu geben.
  • 3.6 Realizer-Produktionssystem
  • Eine Abwandlung des Realizer-Ausgestaltungs-Konversionssystem wird verwendet, um automatisch eine permanente, nicht-rekonfigurierbare Implementation der Eingabe-Ausgestaltung zu erzeugen. Diese permanente Implementation verwendet denselben Typ und die Anzahl von Realizer-Logikchips, als würden diese für die realisierte Ausgestaltung konfiguriert. Das Realizer- Produktionssystem verwendet sein ERCGA-Netzlisten-Konversionswerkzeug zum ständigen Konfigurieren nicht- rekonfigurierbarer, logischer Geräte, die in ihrer Funktion den ERCGA-Logik-Chips äquivalent sind und betreibt eine automatisch gedruckte Schaltkarte (PCB) der Anordnung und ein Routing-Werkzeug ("Getting Started with Board Station", "Layout User's Manual", Mentor Graphics Corp., Beaverton, Oregon, 1989) mit den Spezifikationen der Verbindungen des Logik-Chips, um die PCB herzustellen, die ständig diese nicht- rekonfigurierbaren logischen Einheiten verbinden.
  • Bei dem bevorzugten Ausführungsbeispiel werden LCA als ERCGA-Logik-Chips verwendet. Die LCA-Hersteller bilden ein nicht-rekonfigurierbares logisches Bauelement, das demjenigen des LCA in seiner Funktion äquivalent ist, in der Form eines LCA-Chips, das mit einem PROM-Konfigurationsspeicher-Chip gekoppelt wird ("The Programmable Gate Array Data Book", Xilinx, Inc., San Jose, 1989). Das LCA-Netzlisten-Konversionswerkzeug erzeugt den Binär-File, der verwendet wird, um das PROM zu programmieren, und die LCA beinhaltet die Logik, die es verursacht, automatisch sich selbst bei dem Aufbringen von Leistung zu konfigurieren, unter Verwendung des PROM, wenn eines vorhanden ist.
  • Das Realizer-Produktionssystem besteht aus demselben Ausgestaltungsleser, Grundelemente-Konverter und Partitionierer, wie sie in dem Realizer-Ausgestaltungs- Konversionssystem (RDCS) verwendet werden, einem Verbindungs- und Netzlistensystem und einem ERCGA- Netzlisten-Konversionswerkzeug, die Variationen derjenigen in dem RDCS sind, wie beschrieben, und einem automatischen PCB-Anordnungs- und Routenwerkzeug (Fig. 59). Es schließt das Realizer-Hardware-System oder den Host-Computer nicht ein. Es liest den Eingabe-Ausgestaltungs-File und einen PCB-Spezifikations-File. Es arbeitet mit dem folgenden Verfahren.
  • 1) Verwende den Ausgestaltungsleser zum Lesen des Eingabe-Ausgestaltungs-Files und erzeuge die Ausgestaltungsdatenstruktur.
  • 2) Verwende den Grundelemente-Konverter zum Konvertieren der Ausgestaltungsdatenstruktur in Logik-Chip-Grundelemente.
  • 3) Verwende den Partitionierer zum Zuordnen der Grundelemente zu spezifischen Logik-Chips.
  • 4) Verwende das Verbinder- und Netzlistingsystem zum Erzeugen von Netzlisten-Files für die Logik-Chips. Statt des Erzeugens von Netzlisten-Files für die Verbindungs-Chips, gib eine Liste von Schnittnetzen und ihren Logik- Chips I/O-Pin-Verbindungen auf ein einziges Verbindungs-File in einer Form aus, die für die automatische PCB-Anordnung und Routingwerkzeuge geeignet ist.
  • 5) Verwende das Netzlisten-Konversions-Werkzeug zum Erzeugen von binären Konfigurations-Files für jedes Logik-Chip in der Form, die für das Konfigurieren der äquivalenten, nicht- rekonfigurierbaren Logik-Einheiten geeignet ist.
  • 6) Verwende das automatische PCB-Anordnungs- und Routing-Werkzeug, das in dem Verbindungs-File und dem PCB-Spezifikations-File liest (einschließlich der gegenständlichen Information, die nicht direkt auf die logische Ausgestaltung bezogen ist, etwa als PCB-Dimension, Verbinderanforderungen, usw.) und das mit dem PCB-Herstellungsdaten-File erzeugt wird.
  • Der Verwender des Realizer-Produktionssystems verwendet sodann den PCB-Herstellungs-File, um PCB herzustellen, und verwendet die binären Konfigurations-Files zum Konfigurieren nicht-rekonfigurierbarer logischer Bauelemente und assembelt die Bauelemente und die PCB zur Erzeugung von fertigen Implementationen der Eingabe- Ausgestaltung.
  • Bei dem Realizer-Produktionssystem ist nicht die Verwendung eines nicht-rekonfigurierbaren Gatterfeld- Chips, das der Funktion des ERCGA in einer dauerhaften Hardware-Implementation äquivalent ist, neu, dies ist allgemein üblich. Ein Aspekt der Neuheit ist die Fähigkeit des Systems, ein digitales System von willkürlicher Größe (nicht auf die Kapazität eines einzigen IC- Chips begrenzt) zu nehmen, und ausgedrückt in einer generischen Grundelement-Logikform in einem Eingabe- Ausgestaltungs-File (nicht der logischen Bibliothek eines spezifischen Verwenders) und automatisch eine permanente Hardware-Implementation erzeugt.
  • 3.7 Realizer-Berechnungssystem
  • Das Realizer-Hardware-System kann entsprechend dem Verhalten konfiguriert werden, das in einem Eingabeprogramm spezifiziert ist, welches in einer höheren Computersprache geschrieben ist, etwa Pascal, und verwendet wird, um eine Rechenfunktion entsprechend diesem Programm auszuführen, gerade wie dies vielseitig verwendbare, über ein gespeichertes Programm betriebene Computer tun können. Dies wird erreicht durch Verwenden eines auf einer hohen Ebene arbeitenden Ausgestaltungs- Synthese-Compilers zum Konvertieren des Computerprogramms in eine digitale logische Form, die in einem Eingabe-Ausgestaltungs-File repräsentiert wird, und anschließendes Realisieren und Betreiben des Programms auf einer Realizer-Hardware.
  • Dieses Verfahren ist ein fundamental neues Mittel des Berechnens. Von dem Standpunkt des Rechnens her ist die Realizer-Hardware ein in hohem Maße parallel arbeitender Datenprozessor, dessen Datenverarbeitungselemente die logischen Funktions- und Speicherelemente in dem Logik-Chips, den Verbindungs-Chips und den Sonderzweck-Elementen des Realizers sind. Der Datenprozessor arbeitet nicht entsprechend dem Speicherprogramm- Rechenverfahren einer sequentiellen Befehlsausübung. Es arbeitet entsprechend den Datenpfaden, den funktionellen Einheiten und den Steuerstrukturen der Maschine mit endlichen Zuständen, die in der Realizer-Hardware konfiguriert ist, wie entsprechend dem Verhalten, das in dem Eingabe-Programm spezifiziert ist, arbeitet. Der Vorteil ist derjenige einer höheren Rechengeschwindigkeit, als dieser bei einem Rechenverfahren mit einem sequentiell gespeicherten Programm möglich ist.
  • Das dargestellte Realizer-Rechensystem besteht aus dem Realizer-Rechencompiler, dem Realizer-Ausgestaltungs- Konversionssystem und dem Realizer-Rechenoperator, gemeinsam mit dem Hardware-System des Realizers und dem Host-Computer (Fig. 60). Beachte, daß der Host-Computer lediglich als ein Mittel zum Betreiben des Realizer- Rechenoperators verwendet wird, nicht zum Ausführen der in dem Eingabe-Programm spezifizierten Funktion. Ein anderes Mittel zum Betreiben des Realizer-Rechenoperators kann natürlich verwendet werden.
  • 3.7.1 Realizer-Berechnungscompiler
  • Der Realizer-Berechnungscompiler konvertiert ein Eingabeprogramm-File, das in einer höheren Computersprache unter Verwendung eines Texteditors geschrieben ist, in einen Eingabe-Ausgestaltungs-File. Es besteht aus einem Ausgestaltungs-Synthese-Compiler, einem Logik-Synthese-Compiler und einer Funktionseinheit-Bibliothek.
  • Der Ausgestaltungs-Synthesecompiler ist ein Werkzeug, verschiedene Beispiele van diesen wurden kürzlich entwickelt ("Tutorial an High-Level Synthesis", McFarland, Parker and Camposano, Proceedings of the 25th Design Automation Conference, ACM and IEEE, 1988), das eine Beschreibung eines Systems von Maschinen-Kontrollern für endliche Zustände und Datenpfade, bestehend aus funktionellen Einheiten, Dateneingaben und -ausgaben und Busverbindungen, die entsprechend in einer üblichen prozeduralen Computersprache arbeiten. Ein Beispiel eines tatsächlichen Ausgestaltungs-Synthese-Compilers ist "Flamel", dessen Verfahren in seinen Einzelheiten in "Flamel: A High-Level Hardware Compiler", Howard Trickey, IEEE Transactions an Computer-Aided Design, Vo. CAD-6, Na. 2, März 1987, beschrieben ist. Es ergibt sich aus dieser Literaturstelle:
  • "Der Eingang zu Flamel ist eine Pascal-Programm."
  • "Der Verwender verwendet ein Pascal-Programm gemeinsam mit der Ausführung von Frequenz-Zählungen für eine typische Ausführung des Eingabeprogramms. Die andere Verwender-Eingabe ist eine Zahl, die im wesentlichen sagt, wieviel Hardware zu gelassen ist. Die Ausgabe ist eine Ausgestaltung für eine Hardware, die dieselben Funktionen wie das Pascal- Programm ausführen wird."
  • "Das allgemeine Modell für eine Schaltung, die durch Flamel erzeugt wird, ist dasjenige einer synchronen Digitalmaschine, die aus einem Datenweg und einer Kontrolle besteht. Der Datenweg besteht aus funktionellen Einheiten (ALU, Addierern, Registern, I/O-Kissen, usw.), die durch Busse verbunden sind. Der Kontroller ist eine Maschine mit endlichen Zuständen."
  • "Gewöhnliche Pascale-Programme werden verwendet, um das benötigte Verhalten der Hardware zu definieren. Flamel bewirkt das Finden van Parallelitäten in dem Programm, so daß es eine schnellaufende Implementierung erzeugen kann, die einer vom Verwender vorgegebenen Kostengrenze entspricht."
  • "Eine Implementation van Flamel wurde abgeschlossen. Der Ausgang ist eine Beschreibung eines Datenwegs und eines Kontrollers. Bei einer Serie von Tests erzeugt Flamel Implementationen des Programms, die um das 22- bis 200-fache schneller als ein MC68000 (Mikrocomputer), der dasselbe Programm bearbeitet, läuft, wenn die Taktzyklen dieselben wären."
  • Die "von dem Verwender angegebene Kostengrenze" wird von dem Verwender oder durch Realizer-Rechensystem zu dem Ausgestaltungs-Synthese-Compiler entsprechend der Kapazität des Realizer-Hardware-Systems, das zu verwenden ist, eingegeben. Der Ausgang des Design-Synthese- Compilers ist ein Zwischen-Darstellungs-File, das den Datenweg und die Kontroller-Beschreibungen beinhaltet.
  • Die Bibliothek für die Funktionseinheiten ist ein Satz von Beschreibungen vordefinierter Funktionseinheiten, eine für jeden Typ der von dem Ausgestaltungssynthese- Compiler erzeugten Funktionseinheiten. Diese Beschreibungen geben die Grundelemente der logischen und von dem Verwender bedienten Einheiten (USD) und ihre Netzverbindungen an, die den Erfarderungen der Grundelemente der Realizer-Eingabeausgestaltung entsprechen. USD- Grundelemente werden optional verwendet, um höhere Eigenschaften oder Kapazitäts-Grundelemente zu schaffen, die mit den Logikchips und den Ausgestaltungsspeichern verwirklicht werden können. Wenn, beispielsweise, schnelle VLSI-Fließpunkt-Multiplizierer als USD installiert sind, wird die Bibliothek für die Funktionseinheiten eine Beschreibung für die Gleitkomma Multiplizierer-Funktionale Einheit beinhalten, die die USD- Grundelemente spezifiziert.
  • Der Logik-Synthese-Compiler konvertiert die Beschreibung van Datenwegen und der Controller für die Maschinen mit endlichen Zuständen in eine Darstellung von logischen Grundelementen und Verbindungsnetzen in ein Eingabe-Ausgestaltungsfile. Es beinhaltet ein Synthesewerkzeug einer Maschine mit endlichen Zuständen, das käuflich erhältlich ist von Mentor Graphics Corp., VLSI Technology Inc., Synopsis Inc., und anderen ("Logic Syntheses speeds ASIC Design", A. J. de Geus, IEEE Spectrum, August 1989), oder wird entsprechend den in der Literatur beschriebenen Verfahren entwickelt ("The Implementation of a State Machine Compiler", C. Kingsley, Proceedings af the 24th Design Automation Conference, ACM and IEEE, 1987; "A State Machine Snthesizer", D. Brown, Proceedings of the 18th Design Automation Conference, ACM and IEEE, 1981; "An Overview of Lagic Syntesis Systems", L Trevillyan, Proceedings of the 24th Design Automation Canference, ACM and IEEE, 1987). Es arbeitet entsprechend den folgenden Verfahren:
  • 1) Lies den zwischenzeitlichen Repräsentationsfile der die Datenfile- und Controllerbeschreibungen beinhaltet, in die Datenstrukturen.
  • 2) Konvertiere jede Beschreibung der funktionalen Einheit des Datenwesens in Logik- und USD- Grundelemente und Netze, entsprechend den Beschreibungen in der Bibliothek der funktionalen Einheit.
  • 3) Schaffe Ausgestaltungsspeicher-Grundelemente für jeden Dateneingang und -ausgang zu und von den Datenpfaden.
  • 4) Verwende das Synthesewerkzeug für die Maschine mit endlichen Zuständen zum Konvertieren der Controllerbeschreibungen für die Maschine mit endlichen Zuständen in logische Grundelemente und ihre Netzverbindungen.
  • 5) Schaffe die Stimulator- und Abtastgrundelemente für die "Start"-Eingabe und die "Tätig"- und "Fertig"-Ausgänge zu und von dem Steuern der Maschine mit endlichen Zuständen.
  • 6) Spezifiziere, daß das Taktnetz, das zu betreiben ist, ein Realizer-Taktgenerator ist.
  • 7) Gib die Grundelemente und die Netze in das Eingabe-Ausgestaltungsfile ein.
  • 3.7.2 Realizer-Berechnungsoperator
  • Der Realizer-Berechnungsoperator konfiguriert das Realizer-System und bewirkt die Ausführung der realisierten Rechenfunktion, die ursprünglich durch das Eingabeprogramm spezifiziert wurde. Der Realizer-Berechnungsoperator liest indem Konfigurationsfile und dem Entsprechungs-Tabellenfile, der von der Ausgestaltungskonversion erzeugt wurden und liest einen von dem Verwender vorgegebenen File von Ausgangsdaten zu der Richtfunktion und schreibt einen File von Ausgabedaten von der Rechenfunktion.
  • Um die realisierte Rechenfunktion auszuführen:
  • 1) Lies den Ausgestaltungs-Konfigurationsfile und verwende diesen zum Konfigurieren aller Logik- und Verbindungschips des Realizers, wie dies in dem Konfigurationsabschnitt beschrieben ist.
  • 2) Lies den Dateneingabefile und schreibe dessen Daten in den bzw. die Eingabedaten-Ausgestaltungsspeicher. Lösche den Ausgabe-Daten- Ausgestaltungsspeicher.
  • 3) Lies den Korrespondenz-Tabellenfile und erstelle Übereinstimmungen zwischen den Steuereingängen und -ausgängen und den Stimulatoren und Abtastern und ihren Host-Schnittstellenbusadressen.
  • 4) Gib den Taktgenerator frei und ordne die "Start"-Steuereingabe über seinen Stimulator unter Initiieren des Betriebs.
  • 5) Beobachte die "Fertig"-Steuerausgabe und wenn diese "wahr" wird, lies die Daten von dem Ausgabe-Ausgestaltungsspeicher und schreibe diese in den Ausgabe-Datenfile.
  • Zum Verwenden des Realizer-Rechensystems:
  • 1) Erstelle das Eingabeprogramm und den Eingabe- Datenfile unter Verwendung eines Texteditors oder anderer Mittel.
  • 2) Verwende den Realizer-Rechen-Compiler zum Erzeugen des Eingabe-Ausgestaltungsfiles.
  • 3) Verwende das Realizer-Ausgestaltungskonversionssystem, das in normaler Weise arbeitet, wie an anderer Stelle beschrieben, zum Erzeugen der Konfiguration und der Entsprechungstabellen-Files.
  • 4) Verwende den Rechenoperator des Realizers zum tatsächlichen Ausführen der Rechenfunktion.
  • 5) Lies die durch die realisierte Rechenfunktion berechneten Daten aus dem Ausgabedatenfile.
  • 4 Bevorzugtes Ausführungsbeispiel
  • Das bevorzugte Ausführungsbeispiel, das in dieser Beschreibung durchgehend erläutert worden ist, hat die folgenden Eigenschaften:
  • 4.1 Hardware
  • Die partielle Kreuzschienenverbindung wird hierarchisch auf drei Ebenen in dem gesamten Hardware-System verwendet. Figur 61a - c zeigt den allgemeinen Aufbau der Logikkarten, der Boxen und der Racks, die hierarchisch verbunden sind. Figur 62a - b zeigt den physikalischen Aufbau der Karten, der Boxen und des Racks.
  • Logische Karten (Fig. 61a):
  • - Jede logische Karte besteht aus 14 LChips, die über 32 X-Pegel-Kreuzschienenchips verbunden sind.
  • - Jedes LChip hat 128)I/O-Pins, die mit der Partial-Kreuzschiene der X-Ebene verbunden sind, 4 Verbindungen für jeden der 32 XChips. 14 zusätzliche I/O-Pins werden verwendet; 11 mit dem RBus verbunden, einer ist mit jedem der beiden Taktsignale verbunden, und einer ist mit dem Ausgestaltungs-Rückstellsignal verbunden. Xilinx XC3090 LCA werden als Logikchips verwendet.
  • - Jedes Xchip hat 56 I/O-Pins, die mit den Logikchips verbunden sind, 4 Verbindungen für jeden der 14 LChips. Jeder hat 8 zusätzliche I/O-Pin-Verbindungen für jeden der beiden YChips. Xilinx XC2018 LCA werden als XChips verwendet.
  • - Jede logische Karte hat 512 I/O-Pins für die X-Y-Pfade auf der rückwärtigen Ebene. Es hat weiter Verbindungen für den RBus und den Konfigurationsbus.
  • Boxen (Fig. 61b):
  • - Jede Box besteht aus einer bis acht Karten, die über 64 Kreuzschienenchips auf der Y-Ebene verbunden sind.
  • - Jeder YChip hat 64 I/O-Pins, die mit den Logikkarten verbunden sind, acht Verbindungen zu einem XChip auf jeder Karte. Es hat 8 zusätzliche I/O-Verbindungen zu einem ZChip. Xilinx XC2018 LCA werden als YChips verwendet.
  • - Die 64 YChips sind auf 8 YChip-Karten montiert, jede von denen hat 512 I/O-Pins für die X-Y-Pfade auf der rückwärtigen Ebene. Die 8 YChip-Karten und die 8 logischen Karten werden durch Drähte in der Rückebene des X-Y-Pfades der Box verbunden.
  • - Jede YChip-Karte hat ebenfalls 64 I/O-Pins auf einem Kabelverbinder für seine Y-Z-Pfade. Jede Box wird 8 solche Verbinder haben. Diese Verbindung wird auf einem einzigen Y-Z-Pfadkabel mit 512 Drähten von jeder Box gesammelt. Es hat auch Verbindungen für den Konfigurationsbus.
  • - Figur 62a zeigt den gegenständlichen Aufbau der Rückebene des X-Y-Pfades mit einer Host- Schnittstelle, 8 logischen karten und 8 YChip-Karten mit dem Kabel des Y-Z-Pfades.
  • Racks (Fig. 61c):
  • - Jedes Rack besteht aus einem bis acht Boxen, die durch 64 Kreuzschienenchips der Z-Ebene verbunden sind.
  • - Jedes ZChip hat 64 I/O-Pins, die mit den Boxen verbunden sind, acht Verbindungen mit einem Ychip in jeder Box. Xilinx XC2018 LCA werden als ZChips verwendet.
  • - Die Boxen eines Racks sind durcheine zusätzliche Box verbunden mit Verbindungen zu den Kabeln der Y-Z-Pfade von jeder Box anstelle der logischen Karten. Der gegenständliche Aufbau der Box der Z-Ebene ist in Fig. 62b gezeigt. Die 64 ZChips sind auf 8 ZChip-Karten montiert, van denen jede 512 I/O-Pins für die Y-Z-Pfade auf der Rückebene hat. Die 8 ZChip- Karten und die 8 Verbinder für die Kabel der Y-Z-Pfade sind durch Spuren in einer Rückebene des Y-Z-Pfades verbunden.
  • Speichermodule, alle bestehend aus 16 RAM-Chips und 10 LCA, sind, wie indem Speicherabschnitt beschrieben, anstelle von logischen Chip-LCA installiert, wo erforderlich. Sie werden für den Ausgestaltungsspeicher, den Vektorspeicher, Simulatoren und Abtaster verwendet, wie dies in dem Stimulus- und Antwartabschnitt definiert ist.
  • Vom Verwender beigestellt Hardware-Gerätemodule, jeweils bestehend aus 10 LCA, wie in dem Abschnitt oben beschrieben, werden anstelle von Logikchip-LCA installiert, wenn erforderlich.
  • Eine Box enthält die Host-Schnittstellenkarte, die eine Kabelverbindung mit einer I/O-Busschnittstellenkarte in dem Host-Computer hat. Es steuert den Host-Schnittstellenbus, der als RBus bezeichnet wird, der mit allen Logikchip-Orten verbunden ist, und dem Konfigurations- Steuerlogikblock auf jeder Logikkarte, YChip-Karte und ZChip-Karte für alle Steuer- und Datentransferfunktionen. Der RBus besteht aus einem Acht-Bit-Datenweg, einem Taktgeber und zwei Steuerleitungen, wie in dem Abschnitt beschrieben. Die Host-Schnittstellenkarte hat auch den Konfigurations-Buscontroller, zwei Taktgeneratoren und den Rückstell-Controller.
  • Der Konfigurationsbus mit einem 16-Datenpfad verbindet alle Logik- und Kreuzschienenchips mit der Host- Schnittstelle für alle Konfigurationsfunktionen. Alle 14 LChips der Karte sind in einer Konfigurationsgruppe und seine 32 XChips sind in zwei Gruppen aufgeteilt. Die 8 YChip-Karten in jeder Box sind jeweils eine Gruppe, wie jeweils 8 der ZChip-Karten.
  • 4.2 Software:
  • Das Ausgestaltungs-Konversionssystem besteht aus den folgenden Modulen, von denen jedes indem Abschnitt an seinem Anfang beschrieben ist:
  • - Ausgestaltungsleser, der die Mentor Graphics- Ausgestaltungs-Files, die die QuickSim-Logik- Grundelemente beinhaltet, liest.
  • - Grundelementen-Konverter, die die QuickSim- Grundelemente in Xilinx LCA-Grundelemente lesen. Tri-state und Drahtnetz-Treiber werden entsprechend der Kreuzschienen-Summierungskonfiguration konvertiert, beschrieben in dem Tri-State-Abschnitt.
  • - Partitionierern, basierend auf dem Gruppenbildungsverfahren, das in dessen Abschnitt beschrieben ist.
  • - Verbinder- und Netzlistensystem, das die drei Ebenen der Partial-Kreuzschiene verbindet und ein XNF-Formatnetz-Listenfile für jedes Logikund Kreuzschienenchip in dem System ausgibt.
  • - Xilinx LCA-Netzlisten-Konversionswerkzeug, bestehend aus XNF2LCA, APR und Makebits.
  • - Konfigurationsfile-Collektor
  • Applikationen
  • - Realizer-Logik-Simulationssystem, basierend auf Mentor Graphics Logfiles und unter Verwendung des RSIM-Batch-Simulation-Schnittstellenwerkzeug.
  • - Realizer-Fehlersimulationssystem, basierend auf Mentor Graphics Logfiles und unter Verwendung der RSIM-Batch-Simulations-Schnittstellenwerkzeug.
  • - Realizer-Logiksimulator-Evluationssystem, arbeitend als ein Evaluator für Mentor Graphics' QuickSim-Logiksimulator.
  • - Realizer-Prototyping-System mit einem virtuellen Realizer-Instrument, bestehend aus einem Logikanalysator.
  • - Realizer-Ausführungs-System.
  • - Realizer-Produktions-System unter Verwendung des Mentar Graphics Baard Station automatic PCB-Anordnung und Routing-Werkzeug.
  • - Realizer-Rechensystem, unter Verwendung der Pasqua 1-Sprache, des Flamel-Ausgestaltungssynthese-Compilers und des Mentor Graphics Design, Knowledge and Logic Consultant FSM und des logischen Synthesewerkzeugs.
  • Nach der Beschreibung und Darstellung der Prinzipien unserer Erfindung unter Bezugnahme auf ein bevorzugtes Ausführungsbeispiel ist es offenbar, daß die Erfindung in der Anordnung und in den Einzelheiten ohne eine Loslösung von diesen Prinzipien modifiziert werden kann. Obwohl die Erfindung als vorteilhaft mit einer Mehrzahl von elektronischen Ausgestaltungs-Automationswerkzeugen von Mentor-Graphics beschrieben worden ist, versteht es sich, daß die Erfindung in ähnlicher Weise mit einer Vielzahl anderer Ausgestaltung-Automationswerkzeugen verwendet werden kann.

Claims (18)

1. Ein Verfahren zum Betreiben eines Arrays (10) von elektrisch rekonfigurierbaren Gatterarrays (ERCGAs) (12a, 12b), die jeweils eine Mehrzahl von logischen Schaltelementen und Mittel zum reversiblen Erstellen von Verbindungswegen zwischen den logischen Schaltelementen aufweisen, wobei das Verfahren die Schritte des Bildens erster und zweiter ERCGAs (12a, 12b) aufweisen, die durch ein elektrisches Eingabesignal konfigurierbar sind, um eine gewünschte logische Konfiguration zu erstellen und die ersten und zweiten ERCGAs) so zu verbinden, daß das Array als ein logisches System für einen bestimmten Zweck dient, wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist: Bilden erster Eingabedaten, die für ein erstes digitales logisches Netzwerk repräsentativ sind, wobei die Eingabedaten aus booleschen Logikgattern bestehende Grundoperationen und Netze, die die Grundoperationen verbinden, aufweisen; automatisches Partitionieren (14) der ersten Eingabedaten in erste und zweite Abschnitte; Aufbringen des ersten Abschnitts der partitionierten ersten Daten auf den ersten ERCGA (12a), so daß ein erster Abschnitt des ersten digitalen logischen Netzwerks, das dadurch repräsentiert wird, eine tatsächliche Betriebsweise auf dem ersten ERCGA (12a) annimmt; Aufbringen des zweiten Abschnitts der partitionierten ersten Daten auf das zweite ERCGA (12b), so daß ein zweiter Abschnitt des ersten digitalen logischen Netzwerks, das dadurch repräsentiert wird, eine tatsächliche Betriebsweise auf dem zweiten ERCGA (12b) annimmt; Verbinden des ersten und des zweiten ERCGAs derart, daß wenigstens ein in den ersten Daten spezifiziertes Netz sich zwischen dem ersten und dem zweiten ERCGA (12a, 12b) erstreckt; Aufbringen der zweiten Eingabedaten, die für ein zweites digigales logisches Netzwerk, welches mit der Ausnahme hat, daß beide Grundfunktionen aufweisen, die von booleschen logischen Gattern bestehen, zu dem ersten digitalen logischen Netzwerk keinerlei Beziehung hat, und für Netze, die die Grundoperationen verbinden, und beide dazu da sind, eine tatsächliche Betriebsweise auf demselben ERCGAs anzunehmen, repräsentativ sind; automatisches Partitionieren der zweiten Eingabedaten in erste und zweite Abschnitte; Aufbringen des ersten Abschnitts der partitionierten zweiten Daten auf das erste ERCGA (12a) derart, daß ein erster Abschnitt des zweiten digitalen logischen Netzwerks, das dadurch repräsentiert wird, eine tatsächliche Betriebsweise auf dem ersten ERCGA (12a) annimmt; Aufbringen des zweiten Abschnitts der partitionierten zweiten Daten auf das zweite ERCGA (12b) derart, daß ein zweiter Abschnitt des zweiten digitalen logischen Netzwerks, das dadurch repräsentiert wird, eine tatsächliche Betriebsweise auf dem zweiten ERCGA (12b) annimmt; Verbinden des ersten und des zweiten ERCGAs (12a, 12b) derart, daß wenigstens ein in den zweiten Eingabedaten spezifiziertes Netz sich zwischen dem ersten und dem zweiten ERCGAs (12a, 12b) erstreckt.
2. Ein Simulationsverfahren nach Anspruch 1, mit den folgenden Schritten: Definieren (16) eines ersten zu simulieren digitalen logischen Netzwerks; Erzeugen (18) von ersten Eingabedaten, die für das erste digitale logische Netzwerk repräsentativ sind; Definieren in Software (20) eines Satzes eines ersten Stimulus zur Verwendung bei einer ersten Simulation; Konvertieren (22) des ersten Software-Stimulus in erste elektrische Signale; Aufbringen (24) des ersten elektrischen Signals als Eingabe zu dem ersten und dem zweiten ERCGA (12a, 12b), die miteinander verbunden sind; Empfangen (24) von ersten elektrischen Ausgabesignalen von den miteinander verbunden ersten und dem zweiten ERCGAs (12a, 12b); Konvertieren (22) der ersten elektrischen Ausgabesignale in eine Software-Farm; und Wiederholen der vorgenannten Schritte für ein zweites digitales logisches, von dem ersten unterschiedlichen Netzwerk.
3. Ein Rechenverfahren nach Anspruch 1, mit den folgenden Schritten: Verwenden eines Synthese-Werkzeugs (26) zum Wandeln eines ersten Rechnerprogramms (28) in einen Satz von ersten Eingabedaten, die für ein erstes digitales logisches Netzwerk, das in Übereinstimmung mit einem Algorithmus arbeitet, welches durch das erste Programm ausgedrückt wird, repräsentativ ist; Erzeugen (30) eines ersten Stimulus-Signals, das Eingabedaten für das erste Programm entspricht; Aufbringen (32) des ersten Reizsignals als Eingabe auf das erste und das zweite der mit einander verbundenen ERCGAs (12a, 12b); Empfangen (32) erster elektrischer Ausgabesignale von dem ersten und dem zweiten der miteinander verbundenen ERCGAs (12a, 12b), wobei die Ausgabessignale den Ausgabedaten für das erste Programm entsprechen; und Wiederholen der vorgenannten Schritte mit einem zweiten, von dem ersten unterschiedlichen Program.
4. Ein Verfahren nach Anspruch 3, bei dem der Schritt des Verwendens eines Synthese-Werkzeugs die folgenden Schritte aufweist: Verwenden eines Ausgestaltungs-Synthese-Werkzeugs (26a) zum Wandeln des ersten Rechnerprograms in eine Darstellung eines Systems, das aus Datenwegen und Endliche-Maschinen-Controllern besteht, das entsprechend einem Algorithmus arbeitet, der durch das erste Programm ausgedrückt wird; und Verwenden eines logischen Synthese-Werkzeugs (26b), um die Darstellung der Datenwege und der Endliche-Maschinen- Controller, die durch das Ausgestaltungs-Synthese- Werkzeug geschaffen wird, in einen Satz von ersten Eingabedaten zu wandeln.
5. Ein Verfahren nach einem der vorangehenden Ansprüche, das weiter aufweist:
(a) Schaffen von N ERCGAs (12a, ... , 12N), wobei N eine ganze Zahl größer als 2 ist,
(b) Partitionieren der ersten Eingabedaten in N-Abschnitte;
(c) Aufbringen jeden Abschnitts der partitionierten Daten zu dem ERCGA, dem es entspricht, so daß der Abschnitt des digitalen logischen Netzwerks, das dadurch repräsentiert wird, eine tatsächliche Betriebsweise auf dem ERCGA annimmt;
(d) Verbinden der N ERCGAs derart, daß jedes der ERCGAs mit wenigstens einem anderen der ERCGAs verbunden ist und derart, daß jedes der in den Eingabedaten spezifizierten Netze implementiert wird; und
(e) Wiederholen der Schritte (b) bis (d) für die zweiten Eingabedaten.
6. Ein Verfahren nach einem der vorangehenden Ansprüche, wobei die ERCGAs jeweils eine Mehrzahl von Anschlüssen aufweisen und wobei der Schritt des Verbindens aufweist: Vorsehen wenigstens eines zusätzlichen ERCGA (36a, 36b), das als eine rekonfigurierbare Verbindung dient; und Verbinden des (oder jedes der) der rekonfigurierbaren Verbindungs-ERCGA(s) (34a, 34b) mit wenigstens einem, nicht jedoch mit allen der Anschlüsse der ERCGAs (12a, 12b).
7. Ein Verfahren nach Anspruch 6, das weiter aufweist: Verbinden jedes der rekonfigurierbar verbundenen ERC- GA(s) (34a, 34b) mit wenigstens einem, nicht jedoch mit allen Anschlüssen jedes der ERCGAs (12a, 12b).
8. Ein Verfahren nach Anspruch 7, das weiter aufweist: Ausführen in einem einzigen Vorgang, nicht also nacheinander, die folgenden Schritte: automatisches Partitionieren der Eingabedaten und Herausheben eines Merkmals der Verbindungen, die dadurch erfordert werden, wodurch die Eingabedaten in einer solchen Art und Weise partitioniert werden können, daß die entsprechend erforderlichen Verbindungen vereinfacht werden.
9. Ein Verfahren nach Anspruch 8, das weiter die folgenden Schritte aufweist: Partitionieren der Eingabedaten durch Erstellen einer Ausgabe-Grundoperation und Addieren anderer Grundoperationen dazu, wodurch ein Cluster von Grundoperationen aufgebaut wird, wobei jede der Grundoperationen eine Anzahl von Anschlüssen aufweist, der Aufbau der Cluster den Schritt des Bewertes einer Vorteilsfunktion für jede einem Cluster nicht zugeordnete Grundoperation aufweist, und die Vorteilfunktion einen Ausdruck beinhaltet, die einer Grundfunktion mit der größten Anzahl von Anschlüssen einen größten Anfangsvorteil gibt.
10. Ein Verfahren nach Anspruch 8, weiter mit den folgenden Schritten: Partitionieren der Eingabedaten durch Erstellen einer Ausgabe-Grundoperation und Addieren weiterer Grundoperationen zu dieser, wodurch ein Cluster von Grundoperationen aufgebaut wird, wobei der Partitionierungsschritt das Addieren van Grundoperation zu einem Cluster über eine Verbindungsgrenze hinaus aufweist; und Entfernen der Grundoperationen von dem Cluster, bis die Verbindungsgrenze erfüllt wird.
11. Ein Verfahren nach Anspruch 8, wobei der Verbindungsschritt weiter beinhaltet: für eine Netzerstreckung zwischen zwei ERCGAs (12a, 12b): Prüfen einer Mehrzahl von zu untersuchenden rekonfigurierbaren Verbindungs-ERCGAs (34a, 34b), über die das Netz geführt werden kann; und Bewerten der geeigneten der Wege durch jedes dieser Verbindungs-ERCGA (34a, 34b) wenigstens teilweise basierend auf einem Ausmaß der Verwendung, mit der das ERCGA (34a, 34b) bereits belegt ist.
12. Ein Verfahren nach einem der Ansprüche 1 bis 4, weiter mit den folgenden Schritten:
(a) Vorsehen von N ERCGAs (12a, ..., N), wobei N eine ganze Zahl größer als 2 ist;
(b) topologisches Anordnen der N ERCGAs (12a, ..., N) in einem regelmäßigen, mehrdimensionalen Array (36), wodurch einander benachbarte ERCGAs erstellt werden;
(c) direktes Verbinden einander benachbarter ERCGAs (12a, ..., N) miteinander;
(d) Partitionieren der ersten Eingabedaten in N-Abschnitte;
(e) Aufbringen jeden Abschnitts der partitionierten Daten auf das ERCGA dem es entspricht, so daß der Abschnitt des digitalen logischen Netzwerks, das durch dieses repräsentiert wird, eine tatsächliche Betriebsform auf dem ERCGA annimmt;
(f) Verbinden der N-ERCGAs (12a, ..., N) miteinander, wie dies erforderlich ist, um die in den ersten Daten spezifizierten Netze zu implementieren, wodurch das Verbinden das Verbinden einander nicht benachbarter ERCGAs durch Erstellen von Verbindungen über ERCGAs (34a, ..., N), die zwischen den einander nicht benachbarten ERCGAs (12a, ..., N) intervenieren, aufweist; und
(g) Wiederholen der Schritte (d) bis (f) für die zweiten Eingabedaten.
13. Ein Verfahren nach Anspruch 12, das weiter den Schritt des Bestimmens, welches der Zwischen-ERCGAs (34a, 34b) und welche der Anschlüsse zu verwenden sind, um einander nicht-benachbarte ERCGAs (12a, 12b) zu verwenden sind, unter Verwendung eines automatischen Routen-Verfahrens, aufweist.
14. Ein Verfahren zur Störungssimulation nach einem der vorangehenden Ansprüche, das weiter das Simulieren von Störungen durch Einschließen der Störungen in dem digitalen logischen Netzwerk, das durch die Eingabedaten beinhaltet wird, aufweist.
15. Ein Verfahren nach einem der vorangehenden Ansprüche, das weiter das Betreiben der miteinander verbundenen ERCGAs (12a, 12b) in Verbindung mit einem elektronischen Ausgestaltungsautomations-System beinhaltet.
16. Ein Verfahren nach einem der vorangehenden Ansprüche, das weiter das Koppeln der miteinander verbundenen ERCGAs (12a, 12b) mit Speicherkreisen (40) und Betreiben der miteinander verbundenen ERCGAs (12a, 12b) in Verbindung mit den Schaltungen (40) aufweist.
17. Ein Verfahren nach einem der vorangehenden Ansprüche, das weiter das Verbinden eines zweidirektionalen Netzes durch Konvertieren des zweidirektionalen Netzes in eine Produktsumme unter Verwendung einer eindirektionalen Verbindung aufweist.
18. Ein Verfahren nach einem der vorangehenden Ansprüche, das weiter das Aufsummieren van Produkten in den ERCGAs (12a, 12b) aufweist.
DE68925121T 1988-10-05 1989-10-04 Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät Expired - Lifetime DE68925121T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US25446388A 1988-10-05 1988-10-05
PCT/US1989/004405 WO1990004233A1 (en) 1988-10-05 1989-10-04 Method of using electronically reconfigurable gate array logic and apparatus formed thereby

Publications (2)

Publication Number Publication Date
DE68925121D1 DE68925121D1 (de) 1996-01-25
DE68925121T2 true DE68925121T2 (de) 1996-06-13

Family

ID=22964407

Family Applications (2)

Application Number Title Priority Date Filing Date
DE68925121T Expired - Lifetime DE68925121T2 (de) 1988-10-05 1989-10-04 Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät
DE68929518T Expired - Lifetime DE68929518T2 (de) 1988-10-05 1989-10-04 Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE68929518T Expired - Lifetime DE68929518T2 (de) 1988-10-05 1989-10-04 Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät

Country Status (7)

Country Link
US (1) US5036473A (de)
EP (3) EP0651343B1 (de)
JP (6) JP3060018B2 (de)
AT (2) ATE131643T1 (de)
AU (1) AU4347189A (de)
DE (2) DE68925121T2 (de)
WO (1) WO1990004233A1 (de)

Families Citing this family (287)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5377123A (en) * 1992-06-08 1994-12-27 Hyman; Edward Programmable logic device
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5329470A (en) * 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
US5109353A (en) * 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
JPH02236779A (ja) * 1989-03-10 1990-09-19 Nec Corp スキャンパス接続方式
US5369593A (en) 1989-05-31 1994-11-29 Synopsys Inc. System for and method of connecting a hardware modeling element to a hardware modeling system
US5353243A (en) 1989-05-31 1994-10-04 Synopsys Inc. Hardware modeling system and method of use
US5257166A (en) * 1989-06-05 1993-10-26 Kawasaki Steel Corporation Configurable electronic circuit board adapter therefor, and designing method of electronic circuit using the same board
CA2018202A1 (en) * 1989-06-05 1990-12-05 Tomohiro Marui Configurable electronic circuit board, adapter therefor, and designing method of electronic circuit using the same board
US5233539A (en) * 1989-08-15 1993-08-03 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure, input/output structure and configurable logic block
US5255203A (en) * 1989-08-15 1993-10-19 Advanced Micro Devices, Inc. Interconnect structure for programmable logic device
US5260881A (en) * 1989-10-30 1993-11-09 Advanced Micro Devices, Inc. Programmable gate array with improved configurable logic block
US5231588A (en) * 1989-08-15 1993-07-27 Advanced Micro Devices, Inc. Programmable gate array with logic cells having symmetrical input/output structures
US5644496A (en) * 1989-08-15 1997-07-01 Advanced Micro Devices, Inc. Programmable logic device with internal time-constant multiplexing of signals from external interconnect buses
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5185706A (en) * 1989-08-15 1993-02-09 Advanced Micro Devices, Inc. Programmable gate array with logic cells having configurable output enable
US5400262A (en) * 1989-09-20 1995-03-21 Aptix Corporation Universal interconnect matrix array
US5377124A (en) * 1989-09-20 1994-12-27 Aptix Corporation Field programmable printed circuit board
US5249265A (en) * 1989-10-24 1993-09-28 International Business Machines Corporation Structure storage management in a graphics display device
EP0445454B1 (de) * 1990-03-08 1997-06-18 International Business Machines Corporation Hardware-Simulator
US5598344A (en) * 1990-04-06 1997-01-28 Lsi Logic Corporation Method and system for creating, validating, and scaling structural description of electronic device
DE69133311T2 (de) * 1990-10-15 2004-06-24 Aptix Corp., San Jose Verbindungssubstrat mit integrierter Schaltung zur programmierbaren Verbindung und Probenuntersuchung
US5301284A (en) * 1991-01-16 1994-04-05 Walker-Estes Corporation Mixed-resolution, N-dimensional object space method and apparatus
US5560006A (en) * 1991-05-15 1996-09-24 Automated Technology Associates, Inc. Entity-relation database
US20020130681A1 (en) 1991-09-03 2002-09-19 Cliff Richard G. Programmable logic array integrated circuits
US6759870B2 (en) 1991-09-03 2004-07-06 Altera Corporation Programmable logic array integrated circuits
WO1993009502A1 (en) * 1991-10-30 1993-05-13 I-Cube Design Systems, Inc. Field programmable logic module
WO1993009504A1 (en) * 1991-10-30 1993-05-13 I-Cube Design Systems Inc. Field programmable circuit board
US5202593A (en) * 1991-10-30 1993-04-13 I-Cube Design Systems Inc. Bi-directional bus repeater
US5428800A (en) * 1991-10-30 1995-06-27 I-Cube, Inc. Input/output (I/O) bidirectional buffer for interfacing I/O ports of a field programmable interconnection device with array ports of a cross-point switch
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
DE4211162C2 (de) * 1992-03-31 1996-03-21 Manfred Dipl Ing Zeiner Hardware-Emulationssystem
JP2781305B2 (ja) * 1992-05-08 1998-07-30 富士通株式会社 マルチポートramを含む論理シミュレーション方式
US5352123A (en) * 1992-06-08 1994-10-04 Quickturn Systems, Incorporated Switching midplane and interconnection system for interconnecting large numbers of signals
US5339262A (en) * 1992-07-10 1994-08-16 Lsi Logic Corporation Method and apparatus for interim, in-situ testing of an electronic system with an inchoate ASIC
US5629876A (en) * 1992-07-10 1997-05-13 Lsi Logic Corporation Method and apparatus for interim in-situ testing of an electronic system with an inchoate ASIC
US5392227A (en) * 1992-07-24 1995-02-21 Logic Modeling Corporation System and method for generating electronic circuit simulation models having improved accuracy
US5572710A (en) * 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5603043A (en) * 1992-11-05 1997-02-11 Giga Operations Corporation System for compiling algorithmic language source code for implementation in programmable hardware
US5535342A (en) * 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
US5497498A (en) * 1992-11-05 1996-03-05 Giga Operations Corporation Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation
DE69326669D1 (de) * 1992-11-18 1999-11-11 Canon Information Syst Inc Verfahren und Vorrichtung zur Prüfung einer Schnittstellenkarte
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5452229A (en) * 1992-12-18 1995-09-19 Lattice Semiconductor Corporation Programmable integrated-circuit switch
US5414638A (en) * 1992-12-18 1995-05-09 Aptix Corporation Programmable interconnect architecture
US5627842A (en) * 1993-01-21 1997-05-06 Digital Equipment Corporation Architecture for system-wide standardized intra-module and inter-module fault testing
US5729752A (en) * 1993-02-19 1998-03-17 Hewlett-Packard Company Network connection scheme
US5648913A (en) * 1993-03-29 1997-07-15 Xilinx, Inc. Frequency driven layout system and method for field programmable gate arrays
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
KR960702643A (ko) * 1993-05-28 1996-04-27 윌리암 에이. 호스킨스 동적 논리코어에 동적으로 상호접속된 필드 프로그램 가능 논리장치(field programmable logic device with dynamic interconnections to a dynamic logic core)
IL109921A (en) * 1993-06-24 1997-09-30 Quickturn Design Systems Method and apparatus for configuring memory circuits
JP3176482B2 (ja) * 1993-07-07 2001-06-18 富士通株式会社 論理シミュレーション装置
GB2280293B (en) * 1993-07-19 1997-12-10 Hewlett Packard Co Architecture for programmable logic
CA2126265A1 (en) * 1993-09-27 1995-03-28 Michael Robert Cantone System for synthesizing field programmable gate array implementations from high level circuit descriptions
US5495422A (en) * 1993-10-12 1996-02-27 Wang Laboratories, Inc. Method for combining a plurality of independently operating circuits within a single package
US5493505A (en) * 1993-10-28 1996-02-20 Nec Usa, Inc. Initializable asynchronous circuit design
US5502645A (en) * 1993-11-05 1996-03-26 Nec Usa, Inc. Behavioral synthesis for reconfigurable datapath structures
US5625567A (en) * 1993-11-12 1997-04-29 Viewlogic Systems, Inc. Electronic circuit design system and method with programmable addition and manipulation of logic elements surrounding terminals
US6067615A (en) * 1993-11-30 2000-05-23 Trw Inc. Reconfigurable processor for executing successive function sequences in a processor operation
US5497027A (en) * 1993-11-30 1996-03-05 At&T Global Information Solutions Company Multi-chip module packaging system
US5680583A (en) 1994-02-16 1997-10-21 Arkos Design, Inc. Method and apparatus for a trace buffer in an emulation system
US5761484A (en) * 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5604888A (en) * 1994-04-07 1997-02-18 Zycad Corporation Emulation system employing motherboard and flexible daughterboards
US6294928B1 (en) 1996-04-05 2001-09-25 Altera Corporation Programmable logic device with highly routable interconnect
US6181162B1 (en) 1994-04-10 2001-01-30 Altera Corporation Programmable logic device with highly routable interconnect
US5541862A (en) * 1994-04-28 1996-07-30 Wandel & Goltermann Ate Systems Ltd. Emulator and digital signal analyzer
US5920712A (en) * 1994-05-13 1999-07-06 Quickturn Design Systems, Inc. Emulation system having multiple emulator clock cycles per emulated clock cycle
US5815512A (en) * 1994-05-26 1998-09-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory testing device
US5499249A (en) * 1994-05-31 1996-03-12 At&T Corp. Method and apparatus for test generation and fault simulation for sequential circuits with embedded random access memories (RAMs)
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
CA2151527C (en) * 1994-06-13 2009-08-18 Michael E. Jay Method and apparatus for correlating educational requirements
US5638288A (en) * 1994-08-24 1997-06-10 Lsi Logic Corporation Separable cells having wiring channels for routing signals between surrounding cells
JP3168839B2 (ja) 1994-09-09 2001-05-21 株式会社日立製作所 論理エミュレーションシステム及び等価回路生成方法
US5737578A (en) * 1994-11-18 1998-04-07 International Business Machines Corp. Apparatus and method for partitioning multiport rams
US5659716A (en) * 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5548747A (en) * 1995-02-10 1996-08-20 International Business Machines Corporation Bit stack wiring channel optimization with fixed macro placement and variable pin placement
US5537341A (en) * 1995-02-10 1996-07-16 Jonathan Rose Complementary architecture for field-programmable gate arrays
US5673295A (en) * 1995-04-13 1997-09-30 Synopsis, Incorporated Method and apparatus for generating and synchronizing a plurality of digital signals
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
AU5860696A (en) * 1995-05-16 1996-11-29 Giga Operations Corporation Monitor cpu for a logic device
US6028446A (en) * 1995-06-06 2000-02-22 Advanced Micro Devices, Inc. Flexible synchronous and asynchronous circuits for a very high density programmable logic device
US5765026A (en) * 1995-06-16 1998-06-09 International Business Machines Corporation Method for implementing state machine using link lists by dividing each one of the combinations into an initial section, an immediate section, and a final section
US5819065A (en) * 1995-06-28 1998-10-06 Quickturn Design Systems, Inc. System and method for emulating memory
US5923865A (en) * 1995-06-28 1999-07-13 Quickturn Design Systems, Inc. Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing
US5821773A (en) * 1995-09-06 1998-10-13 Altera Corporation Look-up table based logic element with complete permutability of the inputs to the secondary signals
US5734869A (en) * 1995-09-06 1998-03-31 Chen; Duan-Ping High speed logic circuit simulator
US5777489A (en) 1995-10-13 1998-07-07 Mentor Graphics Corporation Field programmable gate array with integrated debugging facilities
US5754827A (en) * 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5854752A (en) * 1996-01-19 1998-12-29 Ikos Systems, Inc. Circuit partitioning technique for use with multiplexed inter-connections
US6570404B1 (en) 1996-03-29 2003-05-27 Altera Corporation High-performance programmable logic architecture
US5822564A (en) * 1996-06-03 1998-10-13 Quickturn Design Systems, Inc. Checkpointing in an emulation system
US5886904A (en) * 1996-09-23 1999-03-23 Quickturn Design Systems, Inc. Latch optimization in hardware logic emulation systems
US5841967A (en) * 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US6120550A (en) * 1996-10-28 2000-09-19 Altera Corporation Design file templates for implementation of logic designs
US5946219A (en) * 1996-10-30 1999-08-31 Atmel Corporation Method and system for configuring an array of logic devices
US6005410A (en) * 1996-12-05 1999-12-21 International Business Machines Corporation Interconnect structure between heterogeneous core regions in a programmable array
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
US6286093B1 (en) 1996-12-10 2001-09-04 Logic Express Systems, Inc. Multi-bus programmable interconnect architecture
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6141636A (en) * 1997-03-31 2000-10-31 Quickturn Design Systems, Inc. Logic analysis subsystem in a time-sliced emulator
US6389379B1 (en) 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6134516A (en) * 1997-05-02 2000-10-17 Axis Systems, Inc. Simulation server system and method
US6321366B1 (en) 1997-05-02 2001-11-20 Axis Systems, Inc. Timing-insensitive glitch-free logic system and method
US6421251B1 (en) 1997-05-02 2002-07-16 Axis Systems Inc Array board interconnect system and method
US5903744A (en) * 1997-05-15 1999-05-11 Logic Express System, Inc. Logic emulator using a disposable wire-wrap interconnect board with an FPGA emulation board
US5943490A (en) * 1997-05-30 1999-08-24 Quickturn Design Systems, Inc. Distributed logic analyzer for use in a hardware logic emulation system
US5960191A (en) 1997-05-30 1999-09-28 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect
WO1998057283A1 (en) * 1997-06-13 1998-12-17 Simpod, Inc. Concurrent hardware-software co-simulation
US5970240A (en) 1997-06-25 1999-10-19 Quickturn Design Systems, Inc. Method and apparatus for configurable memory emulation
US5884090A (en) * 1997-07-17 1999-03-16 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
US6092123A (en) * 1997-07-17 2000-07-18 International Business Machines Corporation Method and apparatus for changing functions of a hardware device using two or more communication channels
US6021442A (en) * 1997-07-17 2000-02-01 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
US5887184A (en) * 1997-07-17 1999-03-23 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
KR980004043A (ko) * 1997-10-01 1998-03-30 양세양 프로토타이핑 시스템 및 그 제어방법
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US9092595B2 (en) 1997-10-08 2015-07-28 Pact Xpp Technologies Ag Multiprocessor having associated RAM units
US6286114B1 (en) * 1997-10-27 2001-09-04 Altera Corporation Enhanced embedded logic analyzer
US6289494B1 (en) * 1997-11-12 2001-09-11 Quickturn Design Systems, Inc. Optimized emulation and prototyping architecture
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6178541B1 (en) * 1998-03-30 2001-01-23 Lsi Logic Corporation PLD/ASIC hybrid integrated circuit
US6185713B1 (en) * 1998-04-09 2001-02-06 Pmc-Sierra Ltd. Method and apparatus for improving stuck-at fault detection in large scale integrated circuit testing
US6502221B1 (en) 1998-07-14 2002-12-31 Nvidia Corporation Prototype development system
US6184707B1 (en) 1998-10-07 2001-02-06 Altera Corporation Look-up table based logic element with complete permutability of the inputs to the secondary signals
US6604230B1 (en) 1999-02-09 2003-08-05 The Governing Counsel Of The University Of Toronto Multi-logic device systems having partial crossbar and direct interconnection architectures
US6407576B1 (en) * 1999-03-04 2002-06-18 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
CN1378665A (zh) 1999-06-10 2002-11-06 Pact信息技术有限公司 编程概念
US6473726B1 (en) 1999-09-24 2002-10-29 Frederic Reblewski Method and apparatus for concurrent emulation of multiple circuit designs on an emulation system
US6947882B1 (en) * 1999-09-24 2005-09-20 Mentor Graphics Corporation Regionally time multiplexed emulation system
US6934674B1 (en) 1999-09-24 2005-08-23 Mentor Graphics Corporation Clock generation and distribution in an emulation system
US6647362B1 (en) 1999-09-24 2003-11-11 Frederic Reblewski Emulation system scaling
US7072818B1 (en) 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US6581191B1 (en) 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US6931572B1 (en) 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry
US6823497B2 (en) 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
US7065481B2 (en) 1999-11-30 2006-06-20 Synplicity, Inc. Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer
US6485309B2 (en) 1999-12-08 2002-11-26 Nortel Networks Limited Virtual midplane to enhance card interconnections using a matrix of interconnecting assemblies
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6748474B1 (en) 2000-02-25 2004-06-08 Telica, Inc. Midplane apparatus
US6754862B1 (en) 2000-03-09 2004-06-22 Altera Corporation Gaining access to internal nodes in a PLD
US6697957B1 (en) 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
GB2381910B (en) * 2000-05-11 2005-03-02 Quickturn Design Systems Inc Emulation circuit with a hold time algorithm logic analyzer and shadow memory
US7379859B2 (en) * 2001-04-24 2008-05-27 Mentor Graphics Corporation Emulator with switching network connections
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US6567290B2 (en) * 2000-07-05 2003-05-20 Mosaic Systems, Inc. High-speed low-power semiconductor memory architecture
US7672827B1 (en) * 2000-08-28 2010-03-02 Cadence Design Systems, Inc. Method and system for simulation of analog/digital interfaces with analog tri-state ioputs
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6561812B1 (en) 2000-10-30 2003-05-13 Learncity, Inc. System and method of correlating learning materials with educational objectives
AU2001213969A1 (en) * 2000-11-24 2002-06-03 Italtel S.P.A. A prototyping system
US7222315B2 (en) * 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US20020173942A1 (en) * 2001-03-14 2002-11-21 Rochit Rajsuman Method and apparatus for design validation of complex IC without using logic simulation
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6720796B1 (en) 2001-05-06 2004-04-13 Altera Corporation Multiple size memories in a programmable logic device
US20040023558A1 (en) * 2001-06-07 2004-02-05 Fowler Michael L. Mid-connect architecture with point-to-point connections for high speed data transfer
US20030002541A1 (en) * 2001-06-07 2003-01-02 Fowler Michael L. Mid-connect architecture with point-to-point connections for high speed data transfer
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US6681377B2 (en) 2001-09-18 2004-01-20 Quickturn Design Systems, Inc. Timing resynthesis in a multi-clock emulation system
US8686475B2 (en) * 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US6865726B1 (en) * 2001-10-22 2005-03-08 Cadence Design Systems, Inc. IC layout system employing a hierarchical database by updating cell library
US7305633B2 (en) 2001-10-30 2007-12-04 Mentor Graphics Corporation Distributed configuration of integrated circuits in an emulation system
US7035787B2 (en) 2001-10-30 2006-04-25 Mentor Graphics Corporation Emulation components and system including distributed routing and configuration of emulation resources
US7130788B2 (en) 2001-10-30 2006-10-31 Mentor Graphics Corporation Emulation components and system including distributed event monitoring, and testing of an IC design under emulation
WO2003050723A1 (en) * 2001-12-05 2003-06-19 Src Computers, Inc. An interface for integrating reconfigurable processors into a general purpose computing system
JP3540796B2 (ja) * 2001-12-28 2004-07-07 東京エレクトロンデバイス株式会社 演算システム
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20040019765A1 (en) * 2002-07-23 2004-01-29 Klein Robert C. Pipelined reconfigurable dynamic instruction set processor
WO2004010286A2 (en) * 2002-07-23 2004-01-29 Gatechange Technologies, Inc. Self-configuring processing element
US20040199894A1 (en) * 2002-07-23 2004-10-07 Klein Robert C. Interconnect structure for electrical devices
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7299427B2 (en) * 2002-08-30 2007-11-20 Lsi Corporation Radio prototyping system
WO2004023325A1 (en) * 2002-09-04 2004-03-18 Mentor Graphics (Holdings) Ltd. Polymorphic computational system and method
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US6971083B1 (en) 2002-11-13 2005-11-29 Altera Corporation Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions
US7036046B2 (en) * 2002-11-14 2006-04-25 Altera Corporation PLD debugging hub
US7260794B2 (en) * 2002-12-20 2007-08-21 Quickturn Design Systems, Inc. Logic multiprocessor for FPGA implementation
JPWO2004061722A1 (ja) 2002-12-27 2006-05-18 富士通株式会社 論理シミュレーション装置
EP1450278B1 (de) 2003-01-23 2013-04-24 Cadence Design Systems, Inc. Verfahren und Gerät zur Prüfung der Funtionsfähigkeit eines Schaltungsentwurfs
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
US7076751B1 (en) 2003-01-24 2006-07-11 Altera Corporation Chip debugging using incremental recompilation
JP4216087B2 (ja) 2003-02-10 2009-01-28 パナソニック株式会社 論理回路最適化方法、論理回路最適化装置、及び、論理回路合成装置
US7092692B2 (en) * 2003-03-31 2006-08-15 Agency For Science, Technology And Research Threshold voltage (Vth), power supply (VDD), and temperature compensation bias circuit for CMOS passive mixer
US7505891B2 (en) * 2003-05-20 2009-03-17 Verisity Design, Inc. Multi-user server system and method
US7286976B2 (en) 2003-06-10 2007-10-23 Mentor Graphics (Holding) Ltd. Emulation of circuits with in-circuit memory
EP1489531A1 (de) * 2003-06-20 2004-12-22 Robert Bosch Gmbh Simulationssystem und rechnergestützte Methode für Simulation und Verifikations eines Steuerungssystems
US20040267489A1 (en) * 2003-06-24 2004-12-30 Frederic Reblewski Data compaction and pin assignment
US7539900B1 (en) 2003-07-29 2009-05-26 Altera Corporation Embedded microprocessor for integrated circuit testing and debugging
EP3373170A1 (de) 2003-07-30 2018-09-12 Synopsys, Inc. Vorrichtung zur emulation von entwürfen für integrierte schaltkreise
US7693703B2 (en) * 2003-08-01 2010-04-06 Mentor Graphics Corporation Configuration of reconfigurable interconnect portions
EP1676208A2 (de) 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8872833B2 (en) * 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US7587649B2 (en) * 2003-09-30 2009-09-08 Mentor Graphics Corporation Testing of reconfigurable logic and interconnect sources
US7924845B2 (en) 2003-09-30 2011-04-12 Mentor Graphics Corporation Message-based low latency circuit emulation signal transfer
JP4656929B2 (ja) * 2003-11-18 2011-03-23 クイックターン・デザイン・システムズ・インコーポレイテッド エミュレーションシステムとシミュレータとの間でのシミュレーション及び可視化データ転送のための最適化インターフェース
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7190190B1 (en) 2004-01-09 2007-03-13 Altera Corporation Programmable logic device with on-chip nonvolatile user memory
WO2005073866A2 (en) * 2004-01-21 2005-08-11 Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
US7206967B1 (en) 2004-02-09 2007-04-17 Altera Corporation Chip debugging using incremental recompilation and register insertion
JP4371856B2 (ja) * 2004-03-04 2009-11-25 株式会社東芝 安全保護計装システムおよびその取扱方法
WO2005093575A1 (en) * 2004-03-09 2005-10-06 Seiyang Yang Dynamic-verification-based verification apparatus achieving high verification performance and verification efficency and the verification methodology using the same
US7200832B2 (en) * 2004-03-26 2007-04-03 Lsi Logic Corp Macro cell for integrated circuit physical layer interface
JP2005293427A (ja) * 2004-04-02 2005-10-20 Matsushita Electric Ind Co Ltd データ転送処理装置及びデータ転送処理方法
US7698118B2 (en) * 2004-04-15 2010-04-13 Mentor Graphics Corporation Logic design modeling and interconnection
US7738398B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems, Inc. System and method for configuring communication systems
US7739093B2 (en) * 2004-06-01 2010-06-15 Quickturn Design System, Inc. Method of visualization in processor based emulation system
US7493606B2 (en) 2004-08-03 2009-02-17 Université du Québec à Chicoutimi (UQAC) Method for compiling and executing a parallel program
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US20060089829A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Method and apparatus to efficiently access modeled memory in a logic simulation hardware emulator
WO2006101836A2 (en) * 2005-03-16 2006-09-28 Gaterocket, Inc. Fpga emulation system
US7577558B2 (en) * 2005-04-06 2009-08-18 Quickturn Design Systems, Inc. System and method for providing compact mapping between dissimilar memory systems
US8145469B2 (en) 2005-04-06 2012-03-27 Quickturn Design Systems, Inc. System and method for providing compact mapping between dissimilar memory systems
US8021193B1 (en) * 2005-04-25 2011-09-20 Nvidia Corporation Controlled impedance display adapter
US7793029B1 (en) 2005-05-17 2010-09-07 Nvidia Corporation Translation device apparatus for configuring printed circuit board connectors
US8453086B2 (en) 2005-06-03 2013-05-28 Cadence Design Systems, Inc. System and method for analyzing power consumption of electronic design undergoing emulation or hardware based simulation acceleration
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
JP4720436B2 (ja) * 2005-11-01 2011-07-13 株式会社日立製作所 リコンフィギュラブルプロセッサまたは装置
JP4647533B2 (ja) 2005-11-28 2011-03-09 富士通セミコンダクター株式会社 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム
US8417838B2 (en) * 2005-12-12 2013-04-09 Nvidia Corporation System and method for configurable digital communication
US8412872B1 (en) 2005-12-12 2013-04-02 Nvidia Corporation Configurable GPU and method for graphics processing using a configurable GPU
WO2007082730A1 (de) * 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
WO2007096372A1 (en) * 2006-02-21 2007-08-30 Mentor Graphics Corporation Memory tracing in an emulation environment
US8352242B2 (en) * 2006-02-21 2013-01-08 Mentor Graphics Corporation Communication scheme between programmable sub-cores in an emulation environment
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
US8612201B2 (en) 2006-04-11 2013-12-17 Cadence Design Systems, Inc. Hardware emulation system having a heterogeneous cluster of processors
WO2008031851A1 (en) * 2006-09-13 2008-03-20 Ecole Polytechnique Federale De Lausanne (Epfl) Methods for hardware reduction and overall performance improvement in communication system
US7636796B2 (en) * 2006-09-15 2009-12-22 Microsoft Corporation Smart interconnect for modular multi-component embedded devices
US7865856B1 (en) * 2007-03-12 2011-01-04 Tela Innovations, Inc. System and method for performing transistor-level static performance analysis using cell-level static analysis tools
US7730438B2 (en) * 2007-05-31 2010-06-01 Synopsys, Inc. Methods and apparatuses for designing multiplexers
US8103855B2 (en) * 2007-09-22 2012-01-24 Navosha Corporation Linking functional blocks for sequential operation by DONE and GO components of respective blocks pointing to same memory location to store completion indicator read as start indicator
US8724483B2 (en) * 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8352235B1 (en) 2007-10-31 2013-01-08 Cadence Design Systems, Inc. Emulation of power shutoff behavior for integrated circuits
US8453019B2 (en) * 2007-11-06 2013-05-28 Nvidia Corporation Method and system for a free running strobe tolerant interface
US8214192B2 (en) 2008-02-27 2012-07-03 Mentor Graphics Corporation Resource remapping in a hardware emulation environment
US8516185B2 (en) * 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8108194B2 (en) 2008-04-25 2012-01-31 Cadence Design Systems, Inc. Peak power detection in digital designs using emulation systems
JP2010177881A (ja) * 2009-01-28 2010-08-12 Fujitsu Ltd 信号発生タイミング制御プログラム及び集積回路動作試験装置
US8687639B2 (en) * 2009-06-04 2014-04-01 Nvidia Corporation Method and system for ordering posted packets and non-posted packets transfer
US8532975B2 (en) * 2009-06-12 2013-09-10 Cadence Design Systems, Inc. System and method implementing a simulation acceleration capture buffer
US8473661B2 (en) * 2009-08-14 2013-06-25 Cadence Design Systems, Inc. System and method for providing multi-process protection using direct memory mapped control registers
US8255847B1 (en) * 2009-10-01 2012-08-28 Altera Corporation Method and apparatus for automatic hierarchical design partitioning
US9176909B2 (en) 2009-12-11 2015-11-03 Nvidia Corporation Aggregating unoccupied PCI-e links to provide greater bandwidth
US8397195B2 (en) * 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
US8638792B2 (en) * 2010-01-22 2014-01-28 Synopsys, Inc. Packet switch based logic replication
US9331869B2 (en) * 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
CN102033772A (zh) * 2010-12-28 2011-04-27 复旦大学 用于fpga映射的电路改写指令***
CN103748957A (zh) * 2011-06-06 2014-04-23 爱立信调制解调器有限公司 通用的多-无线电接入技术
US8838120B2 (en) 2011-06-06 2014-09-16 Ericsson Modems Sa Methods and systems for a generic multi-radio access technology
EP2719249B1 (de) * 2011-06-06 2018-08-08 Telefonaktiebolaget LM Ericsson (publ) Generische mehrfunk-zugangstechnologie
US8959010B1 (en) 2011-12-08 2015-02-17 Cadence Design Systems, Inc. Emulation system with improved reliability of interconnect and a method for programming such interconnect
US9330031B2 (en) 2011-12-09 2016-05-03 Nvidia Corporation System and method for calibration of serial links using a serial-to-parallel loopback
US8743735B1 (en) 2012-01-18 2014-06-03 Cadence Design Systems, Inc. Emulation system for verifying a network device
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
US9292639B1 (en) 2014-10-30 2016-03-22 Cadence Design Systems Inc. Method and system for providing additional look-up tables
US9647688B1 (en) 2014-12-19 2017-05-09 Cadence Design Systems, Inc. System and method of encoding in a serializer/deserializer
US9379846B1 (en) 2014-12-19 2016-06-28 Cadence Design Systems, Inc. System and method of encoding in a serializer/deserializer
US9798842B1 (en) 2015-01-30 2017-10-24 Altera Corporation Circuit design instrumentation for state visualization
US9588176B1 (en) 2015-01-30 2017-03-07 Altera Corporation Techniques for using scan storage circuits
US9697318B2 (en) 2015-10-08 2017-07-04 Altera Corporation State visibility and manipulation in integrated circuits
US9702933B1 (en) 2015-10-22 2017-07-11 Cadence Design Systems, Inc. System and method for concurrent interconnection diagnostics field
US9697324B1 (en) 2015-11-05 2017-07-04 Cadence Design Systems, Inc. System for concurrent target diagnostics field
US10176100B1 (en) 2015-12-21 2019-01-08 Cadence Design Systems, Inc. Cache coherency process
US9495501B1 (en) * 2016-01-29 2016-11-15 International Business Machines Corporation Large cluster persistence during placement optimization of integrated circuit designs
US10747932B2 (en) * 2018-08-09 2020-08-18 International Business Machines Corporation Smart placement, visualization and optimization methodology for component placement and planning
US11461522B1 (en) * 2018-12-06 2022-10-04 Cadence Design Systems, Inc. Emulation system supporting computation of four-state combinational functions
DE102020201236A1 (de) * 2020-01-31 2021-08-05 Geze Gmbh Wandverschlusssystem
US11429160B2 (en) 2020-02-03 2022-08-30 Dell Products L.P. Adaptable multiple card sizes of riser cage structure
CN115185507A (zh) * 2022-05-20 2022-10-14 中核武汉核电运行技术股份有限公司 一种算法组态工具
CN117194346B (zh) * 2023-11-06 2024-01-23 上海合见工业软件集团有限公司 一种下载文件清除方法、电子设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58205870A (ja) * 1982-05-26 1983-11-30 Nippon Telegr & Teleph Corp <Ntt> 論理回路シミユレ−シヨン装置
JPS6124250A (ja) * 1984-07-13 1986-02-01 Nippon Gakki Seizo Kk 半導体集積回路装置
US4703435A (en) * 1984-07-16 1987-10-27 International Business Machines Corporation Logic Synthesizer
US4642487A (en) * 1984-09-26 1987-02-10 Xilinx, Inc. Special interconnect for configurable logic array
US4706216A (en) * 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
JPH0668756B2 (ja) * 1985-04-19 1994-08-31 株式会社日立製作所 回路自動変換方法
US4935734A (en) * 1985-09-11 1990-06-19 Pilkington Micro-Electronics Limited Semi-conductor integrated circuits/systems
JPS6274158A (ja) * 1985-09-27 1987-04-04 Hitachi Ltd 回路変換方式
US4722084A (en) * 1985-10-02 1988-01-26 Itt Corporation Array reconfiguration apparatus and methods particularly adapted for use with very large scale integrated circuits
DE3685629T2 (de) * 1985-10-23 1993-02-11 Pilkington Micro Electronics Integrierte geschaltete uebertragungsschaltung.
US4700187A (en) * 1985-12-02 1987-10-13 Concurrent Logic, Inc. Programmable, asynchronous logic cell and array
US4744084A (en) * 1986-02-27 1988-05-10 Mentor Graphics Corporation Hardware modeling system and method for simulating portions of electrical circuits
US4724307A (en) * 1986-04-29 1988-02-09 Gtech Corporation Marked card reader
GB8621357D0 (en) * 1986-09-04 1986-10-15 Mcallister R I Hinged barrier semiconductor integrated circuits
US4768196A (en) * 1986-10-28 1988-08-30 Silc Technologies, Inc. Programmable logic array
US4786904A (en) * 1986-12-15 1988-11-22 Zoran Corporation Electronically programmable gate array having programmable interconnect lines
US4849928A (en) * 1987-01-28 1989-07-18 Hauck Lane T Logic array programmer
US4908772A (en) * 1987-03-30 1990-03-13 Bell Telephone Laboratories Integrated circuits with component placement by rectilinear partitioning
US4815003A (en) * 1987-06-19 1989-03-21 General Electric Company Structured design method for high density standard cell and macrocell layout of VLSI chips

Also Published As

Publication number Publication date
EP0437491B1 (de) 1995-12-13
AU4347189A (en) 1990-05-01
US5036473A (en) 1991-07-30
JP3247663B2 (ja) 2002-01-21
JP3060018B2 (ja) 2000-07-04
JP3162687B2 (ja) 2001-05-08
JP2000236249A (ja) 2000-08-29
JP3162681B2 (ja) 2001-05-08
WO1990004233A1 (en) 1990-04-19
JPH04502985A (ja) 1992-05-28
JP2000151387A (ja) 2000-05-30
EP0437491A1 (de) 1991-07-24
ATE131643T1 (de) 1995-12-15
DE68929518T2 (de) 2005-06-09
JP2000236250A (ja) 2000-08-29
JP3281352B2 (ja) 2002-05-13
JP2000036737A (ja) 2000-02-02
EP0651343A1 (de) 1995-05-03
EP1462964A3 (de) 2006-06-07
DE68929518D1 (de) 2004-06-03
ATE265712T1 (de) 2004-05-15
JP3354143B2 (ja) 2002-12-09
EP1462964A2 (de) 2004-09-29
EP0651343B1 (de) 2004-04-28
DE68925121D1 (de) 1996-01-25
JP2002189766A (ja) 2002-07-05

Similar Documents

Publication Publication Date Title
DE68925121T2 (de) Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät
US5657241A (en) Routing methods for use in a logic emulation system
DE60128014T2 (de) Intelligenter Prüfadapter
DE69332391T2 (de) Struktur und Methode zur Versorgung einer wieder konfigurierbaren Emulation-Schaltung
DE69808286T2 (de) Emulationssytem mit zeitmultiplexverbindung
DE69826859T2 (de) Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem
DE69033360T2 (de) Simulation von ausgewählten Logik-Schaltungsentwürfen
DE69724245T2 (de) Verfahren zur plazierung von taktpuffern in einem taktverteilungssystem
DE602004000228T2 (de) Integrierte Halbleiterschaltungsanordnung mit Signalregenerator für Prüfsignale und dazugehörige automatische Entwurfs-Vorrichtung, -Verfahren und -Programme
DE19903633A1 (de) Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware
DE69225527T2 (de) Verfahren und System zur automatischen Bestimmung der logischen Funktion einer Schaltung
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE69520706T2 (de) Herstellungsverfahren für einen elektrischen Vorrichtungs-Adapter
DE69030792T2 (de) Methode und Gerät zur Wechselwirkung-Emulation zwischen einer anwendungsspezifischen integrierten Schaltung (ASIC) während der Entwicklung und ein Zielsystem
DE69533567T2 (de) Vorrichtung und Verfahren zum Auffinden von False-Timing-Paths in digitalen Schaltkreisen
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE102020130212A1 (de) Verfahren zum deterministischen Clustering und Packing für Random-Logik auf programmierbaren integrierten Schaltungen
DE60003847T2 (de) Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung
DE4335690A1 (de) Architektur eines und Verfahren zum Konfigurieren eines Parallelrechners
WO1994017487A2 (de) Architektur eines und verfahren zum konfigurieren eines parallelrechners

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: QUICKTURN DESIGN SYSTEMS, INC., (N.D. GESETZEN D.

8310 Action for declaration of annulment
8313 Request for invalidation rejected/withdrawn