DE60003847T2 - Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung - Google Patents

Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung Download PDF

Info

Publication number
DE60003847T2
DE60003847T2 DE60003847T DE60003847T DE60003847T2 DE 60003847 T2 DE60003847 T2 DE 60003847T2 DE 60003847 T DE60003847 T DE 60003847T DE 60003847 T DE60003847 T DE 60003847T DE 60003847 T2 DE60003847 T2 DE 60003847T2
Authority
DE
Germany
Prior art keywords
cells
data
cell
matrix
block
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
DE60003847T
Other languages
English (en)
Other versions
DE60003847D1 (de
Inventor
Meged Ofer
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.)
Cellot Inc
Original Assignee
Cellot Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cellot Inc filed Critical Cellot Inc
Publication of DE60003847D1 publication Critical patent/DE60003847D1/de
Application granted granted Critical
Publication of DE60003847T2 publication Critical patent/DE60003847T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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]

Description

  • Technisches Gebiet der Erfindung
  • Die Erfindung betrifft den Entwurf und die Prüfung von Schaltkreisen und die Architektur von Bauelementen.
  • Technischer Hintergrund der Erfindung
  • Bekannte Entwurfs- und Fertigungsverfahren von integrierten Schaltkreisen (ICs) und Bausteinen, die ICs enthalten, einschließlich der Implementierung von digitalen Signalprozessoren (DSP) oder anwendungsspezifischen integrierten Schaltkreisen (ASIC) erfordern langwierige Entwicklungszyklen und sind kostenaufwendig. Insbesondere ist wegen der Länge der Entwicklungsperiode, die langwierige Entwurfs-, Verifikations- und Testarbeiten erfordert, eine lange Zeit bis zur Markteinführung integrierter Schaltkreise erforderlich. Während der Verifikation und Prüfung des Produkts können Entwurfsfehler erkannt werden, die korrigiert und behoben werden müssen, wodurch die Entwicklungskosten und die Entwicklungszeit stark erhöht werden, besonders wenn Entwurfsfehler am Ende des Prozesses erkannt werden, zum Beispiel nach der Produktauslieferung.
  • Hardwareprodukte sind teuer, da die bis zum Vertrieb erforderliche Zeit die ingenieurtechnischen Kosten, den Marktverlust und so weiter beeinflußt. Kosten müssen auch die indirekten Kosten von Testgeräten, die während der Entwicklung eingesetzt werden, den Aufwand für bei der Fertigung eingesetzte Testgeräte, die Größe der Lagerbestände und die Kosten in Verbindung mit der Einstellung von Fachingenieuren beinhalten.
  • Die Simulationsgenauigkeit ist schlecht. Eine Simulation ist erforderlich, um die gewünschte Funktionstüchtigkeit der Anwendung zu simulieren, während eine weitere zur Simulation der Laufzeitfunktion der Implementierung erforderlich ist. Wenn eine Simulation von hochauflösenden Verzögerungen erforderlich ist, wird die Simulation umständlich. Außerdem sind Simulationen sehr langsam, oft mehrere hundert- oder tausendmal langsamer als der Echtzeitbetrieb.
  • Ein weiterer Nachteil bekannter Entwurfs- und Entwicklungsverfahren ist, daß die Größe von Prototypen und elektronischen Nicht-ASIC-Karten praktisch anwendbare Dimensionen übersteigen kann. Die Fähigkeit zum Testen von High-End-Systemen auf Chip-Produkten ist wegen der sehr hohen Dichte integrierter Schaltkreise begrenzt, was die Sondierung von interessierenden Punkten im Schaltkreis sehr schwierig macht. Ebenso schwierig sind Tests von fertigen Produkten, die hochintegrierte Schaltkreise enthalten, und die Verifikation der kompletten Funktionsfähigkeit komplexer Schaltkreise.
  • Bereits konstruierte Produkte lassen sich schlecht an moderne Chipfertigungstechnologien anpassen, um die Kompatibilität von Anwendungen mit neueren Technologien sicherzustellen. Dies hat Auswirkungen nicht nur auf den Anwendungsentwickler, sondern macht es auch für den Chiphersteller schwierig, neue Geometrien zu verwenden und dabei die Entwickler in die Lage zu versetzen, ihre bereits existierenden Anwendungen zu verwenden.
  • ASICs werden eingesetzt, um eine Anwendung unter Verwendung einer kleineren Fläche zu implementieren, wobei die Anwendung in ausreichender Menge vertrieben wird, um die Kundenanpassung zu rechtfertigen. Typischerweise wird die Anwendung zunächst mit Hilfe herkömmlicher Entwurfsverfahren entwickelt, und nach Feststellung der Integrität des Entwurfs wird sie in einen anwendungsspezifischen integrierten Schaltkreis (ASIC) umgewandelt. Dies ist ein zeitraubender und kostenaufwendiger Prozeß.
  • Typischerweise wird die Anwendungsgeschwindigkeit durch Implementieren der Anwendung in Hardware auf Kosten der funktionellen Flexibilität verbessert, da die meisten Hardware-Implementierungen einer spezifischen Anwendung zugeordnet und nicht erweiterungs- oder änderungsfähig sind.
  • Ein weiterer, mit der Industrie verbundener Nachteil sind der relative Mangel an qualifiziertem Personal und die Schwierigkeit, den Entwurf und die Entwicklung zu untergliedern, damit diese unter mehreren Ingenieuren aufgeteilt werden können, um den Entwicklungszyklus verkürzen zu können.
  • Alle diese Beschränkungen bewirken zusammen eine längere Dauer und höhere Kosten des Entwicklungs- und Fertigungszyklus. Um die Komplexität und die Mühe zu demonstrieren, die mit den herkömmlichen Entwurfs- und Fertigungsverfahren zur Implementierung von logischen integrierten Schaltkreisen oder diese enthaltenden Bausteinen verbunden sind, werden nachstehend verschiedene Implementierungsmethoden beschrieben.
  • 1 zeigt ein Ablaufdiagramm, das den herkömmlichen Prozeß für die Hardware-Implementierung von integrierten Schaltkreis-Chips (IC-Chips) auf Elektronikkarten darstellt. Während des Kartenentwicklungsprozesses 7 wird eine Karte zur Ausführung einer benötigten Anwendung entwickelt. Nach diesem Prozeß ist die Karte bereit für Produktionstätigkeiten. Die Idee und die Konzeption bezüglich der Anwendung werden während der Anwendungsdefinition 10 definiert, an die sich die Schnittstellendefinition 12 anschließt. Manchmal wird die Schnittstelle durch die Systemumgebung bestimmt, zum Beispiel in einer PC-Anwendungskarte. Manchmal kann die Herstellerfirma der Karte die Schnittstelle auswählen; zum Beispiel werden in einem Einschubrahmen voller Karten die meisten Karten die gleiche Schnittstelle aufweisen. Manchmal ist die Schnittstelle einzigartig und muß im gleichen Prozeß wie die übrige Karte entworfen werden.
  • Die Technologieauswahl 16 wird durch Echtzeiterfordernisse, Flexibilität, Größe und Anzahl der Aufgaben beeinflußt. Die Hardware-Implementierung wird wegen ihrer besseren Echtzeitleistung für eine Anwendung gewählt. Die Hardware-Implementierung ist die schnellste (Echtzeit-) Lösung, kann aber nur eine begrenzte Anzahl von Aufgaben ausführen, ist nicht flexibel und ist groß. Die bis zur Vermarktung erforderliche Zeit ist sehr lang. Der Prozeß von der Entwicklung bis zur Fertigung kann Monate bis zu mehr als einem Jahr dauern, wobei neun Monate als ein sehr gutes Ergebnis angesehen werden. Die Entwicklungs- und Fertigungsprozesse sind kostspielig.
  • Der für die Anwendung verfügbare Raum ist ein wichtiger Parameter für den Technologieauswahlprozeß. Normalerweise gilt, je kleiner, desto besser. Wenn die Größe entscheidend ist, kann die Karte in einen ASIC umgewandelt werden, in welchem Fall sich die Entwicklungszeit wegen der Notwendigkeit der ASIC-Umwandlung um mehrere Monate verlängert. Neun Monate sind eine normale Verlängerungszeit. In der Praxis leidet die ASIC-Umwandlung an allen obenerwähnten Problemen.
  • In den meisten Fällen, besonders für den Entwurf von komplexer digitaler Hochgeschwindigkeits-Hardware, ist eine Simulation 18 der Anwendung erforderlich. Manchmal wird die Simulation als Teil des Anwendungsdefinitionsprozesses angesehen und nicht als Teil der Dauer des Hardwareentwicklungsprozesses gezählt. Der Simulationsprozeß kann Tage bis zu mehreren Monaten dauern, je nach der Komplexität der Anwendung. Der Zweck der Simulation besteht darin, nachzuweisen, daß die Idee und die erwogene Implementierung ausführbar sind. Wenn zum Beispiel eine Idee zur Sprachkompression über Nachrichtenverbindungen existiert, wird der Kompressionsalgorithmus unter Verwendung einer höheren Programmiersprache, wie z. B. "C++", und anderer Software-Werkzeuge, wie z.B. "Matlab" (von Mathworks, Natick, Massachusetts), erstellt. Es gibt keine einfache Verknüpfung zwischen Simulation und Implementierung. Manchmal werden mehr als eine Simulation ausgeführt, und zur Erhöhung der Simulationsgeschwindigkeit werden unter Umständen Workstations benötigt.
  • Dann ist der Schnittstellenentwurf 20 erforderlich. Im Fall einer Standardschnittstelle, zum Beispiel einer PCI-Schnittstelle in einer PC-Karte, braucht diese in den meisten Fällen nicht neu entworfen zu werden, und bei der Implementierung kann ein serienmäßiger, vorgefertigter Chipsatz verwendet werden. Im Falle einer anwendereigenen Schnittstelle könnte der Hardware-Entwickler bevorzugen, die Entwicklung der Schnittstelle von der Entwicklung der Anwendung zu trennen, um die Schnittstelle auch für andere Anwendungen einsetzen zu können, wie z. B. die Schnittstelle für einige Karten im gleichen Gestell. In einem solchen Fall würde die Zeit bis zur Markteinführung nicht durch die für die Entwicklung und Imple mentierung der Schnittstelle benötigte Zeit beeinflußt werden. Nur wenn die Schnittstelle außergewöhnlich ist, wird sie Teil der gesamten Implementierungsentwicklung.
  • Der Elektronikentwurf 22 ist das Verfahren, das die Lösung in einen Satz von elektronischen integrierten Schaltkreiselementen umsetzt. Der Entwickler denkt an eine Bibliothek solcher Bauelemente, die bestimmte Funktionen ausführen können, und wählt die benötigten ICs aus, die zur Implementierung der Anwendung zusammenzuschalten sind. Der Elektronikentwurfsprozeß ist kompliziert, da sich der Ingenieur an eine Menge unterschiedlicher Komponenten und die Art und Weise ihrer Verwendung erinnern muß. Mit Verbesserung der Technologie kommen neue Komponenten mit komplizierten Funktionen hinzu. Manchmal bleibt der Elektroniker zurück. Höhere Entwurfssprachen sind implementiert worden, aber der größte Teil der Entwurfsarbeit muß immer noch auf modulare Weise ausgeführt werden. Je komplizierter die Anwendung, desto mehr Zeit wird für den Entwurf benötigt.
  • Zeichnungen sind die Schnittstelle zwischen dem Anwendungstechniker und den computerisierten Werkzeugen, die zur Fertigung der Karte eingesetzt werden. Dies ist die "Sprache", die der Ingenieur zum "Niederschreiben" seiner Implementierungsideen benutzt. Der Zeichnungsprozeß 24 setzt den Entwurf in Schemazeichnungen um. Je komplizierter die Anwendung, desto mehr Zeit wird für die Zeichnungen benötigt. Bei Verwendung eines programmierbaren Bauelements kann eine höhere Entwurfssprache (HDL) benutzt werden, um einen Teil der Zeichnungen zu ersetzen.
  • Wenn die Implementierung nicht trivial ist, erfolgt eine Simulation 25 des Entwurfs, und die Zeitsteuerung wird überprüft. Der Entwickler versucht eine Korrelation zwischen dem Ergebnis der Anwendungssimulation 18 und der gegenwärtigen Simulation herzustellen. Wird irgendein Fehler gefunden, dann wird der Entwurf modifiziert, und die Schritte 22 und 24 müssen wiederholt werden.
  • Nach Fertigstellung des Entwurfs erhält man die Komponenten 26. Manchmal ist zur Beschaffung eines bestimmten Bauelements eine ziemlich lange Zeit erforderlich, wodurch sich die Herstellung des Prototyps verzögert. Je komplexer die Anwendung, desto mehr Komponenten werden verwendet, desto länger ist die zur Produktion erforderliche Zeit und desto größer ist der Lagerbestand an Komponenten.
  • Das Layout 28 ist der Prozeß, der den gezeichneten Entwurf in eine gefertigte Baugruppe umsetzt. Je komplexer die Anwendung, desto mehr Komponenten werden eingesetzt und desto länger ist die Layout-Zeit.
  • Es folgt die Leiterplattenfertigung 30. Für jede Anwendung muß eine andere Leiterplatte bzw. Platine hergestellt werden, wodurch sich die Menge der eingesetzten Arbeitskräfte und der Bedarf an kostspieligen Ausrüstungen für die Überprüfung und Fertigung von Karten vergrößern.
  • Die Komponenten werden auf der gefertigten Karte installiert. Layoutfehler können Probleme bei der Installation verursachen. Zum Beispiel unterscheiden sich die Werkzeuge für die Installation der Prototypen gewöhnlich von denen, die für die Fertigung eingesetzt werden. Konkret wird bei der Installation in der Entwicklungsphase eine geringere Automatisierung angewandt, und die Wahrscheinlichkeit einer defekten Karte ist größer. Um die Installationsdauer zu verkürzen, werden kostspielige Spezialausrüstungen eingesetzt, beispielsweise Chipeinbaugeräte mit hohem Rastermaß.
  • Test und Fehlerbeseitigung 34 sind die längsten Perioden im Gesamtentwicklungsprozeß. Fünfzig bis fünfundsiebzig Prozent der für einen komplexen Entwurf aufgewandten Zeit entfällt auf die Überprüfung. Die Überprüfung bzw. Verifikation wird schnell zum größten Technologiehindernis.
  • Fehler können bei jeder der obigen Aufgaben gemacht werden. Zum Beispiel kann ein enger Abstand zwischen Leiterbahnen einer gedruckten Schaltung zu einem Kurzschluß führen. Schlimmer ist es, wenn diese Fehlerart nicht im Fehlersuchprozeß entdeckt wird, da sie unter Umständen später gefunden wird, wenn ihre Reparatur kostspieliger ist. Fehler können auch bei der Kartendefinition gemacht werden, und so weiter. Dies bedeutet, daß sich wiederholende Prozesse auftreten. Normalerweise werden vor der ersten Produktionscharge drei Versionen des Prototyps hergestellt. Zum Testen der Elektronik karte werden kostenaufwendige Testeinrichtungen benötigt, zum Beispiel: Signalgeneratoren, Rauschgeneratoren, Logikanalysatoren, Oszilloskope, dB-Meßgeräte, Addierer, Leitungssimulatoren und andere.
  • Im Abschnitt 36 von der Forschung und Entwicklung bis zum Produktionsprozeß wird die Dokumentation mit allen für die Fertigung der Karte benötigten Details erstellt. Obwohl dieser Prozeß beginnen kann, bevor die letzte Version des Prototyps fertig ist, verlängert der Prozeß die Zeit bis zur Markteinführung. Automatische Geräte zur Kartenüberprüfung (wie z. B. eine Nagelbett-Testanordnung) und zur Funktionsüberprüfung werden erzeugt. Maschinen zum automatischen Einbau von Komponenten werden programmiert, und so weiter.
  • Der obige Prozeß führt zu einem langen Entwicklungsund Fertigungszyklus. Je später ein Fehler gefunden wird, desto schwieriger und teurer ist die Reparatur. Wenn daher ein ASIC benötigt wird, werden beträchtliche Anstrengungen unternommen, um fehlerfreie Ergebnisse sicherzustellen. Normalerweise werden einige Chargen hergestellt, bevor die Elektronik in einen ASIC umgewandelt wird.
  • Sobald die Kartendokumentation fertiggestellt ist, alle Komponenten beschafft, die Chipeinbaumaschinen programmiert worden sind und so weiter, kann der Kartenproduktionsprozeß 37 beginnen. Dort schließt sich dann die Überprüfung 38 der Produzierten Karten an, wobei die Karte mit oder ohne ihre Elektronik getestet wird. Die Funktionsprüfung 40 ist der Prozeß zur Überprüfung der Karte für die vorgesehene Anwendung. Es ist recht kompliziert und zeitraubend, automatische Geräte zur Prüfung jeder Funktion der Anwendung herzustellen. Wenn das Ergebnis befriedigend ist, kann die Kartenauslieferung 42 an den Kunden erfolgen.
  • Wenn am Ende des Prozesses ein Fehler gefunden oder eine Aktualisierung benötigt wird, sind Reparaturen und Aktualisierungen 44 sehr schwierig, teuer und zeitraubend. Im schlimmsten Fall muß der größte Teil des Prozesses wiederholt werden.
  • Wie oben erwähnt, beeinflussen Echtzeitbedürfnisse, Flexibilität, Größe und Anzahl der Aufgaben die Auswahl der Technologie. Ein Schaltkreis kann als Prozessor für digitale Signalverarbeitung implementiert werden, wenn Flexibilität benötigt wird und/oder eine große Anzahl von Aufgaben auszuführen sind, aber nicht gleichzeitig. Diese Lösung ist in Echtzeit langsamer als eine äquivalente Hardware-Implementierung. Die DSP-Implementierung hat etwa die gleiche Größe wie die Hardware-Implementierung, aber im allgemeinen lassen DSP-Implementierungen nicht die Option der Umwandlung in einen ASIC zu.
  • Obwohl der oben beschriebene Hardware-Entwicklungsprozeß auch für die DSP-Karte implementiert werden muß, beeinflußt er aus verschiedenen Gründen selten die Zeit bis zur Markteinführung. Erstens ist die Hardware-Implementierung einfach, da die DSP-Anbieter Lösungen für den Hardware-Entwurf vorschlagen. Nur eine nichtstandardisierte Schnittstelle muß entworfen werden. Zweitens kann, sobald eine Karte fertig und die Schnittstelle festgelegt ist, eine vorgefertigte Karte für die neue Anwendung verwendet werden. Normalerweise erfordert der Entwicklungsprozeß des Programmierungscodes mehr Zeit als der Entwicklungsprozeß der DSP-Karte. Nichtsdestoweniger muß die Karte mindestens einmal entwickelt werden. Außerdem sind andere Probleme in Angriff zu nehmen als diejenigen, die sich auf die Hardware-Implementierung beziehen, wie z. B., welche Art der digitalen Signalverarbeitung (DSP) auszuwählen ist, ob die DSP die Bedürfnisse der Anwendungen der nächsten Generation erfüllen wird, und so weiter.
  • Da sich die Industrie an das Gordon-Mooresche Gesetz hält und die Anzahl der Transistoren auf einer Chipfläche alle 18 Monate durch Verkleinerung der Merkmalsgröße (Transistoren und Zwischenverbindungen) verdoppelt, veralten Produkte mit jeder neuen Halbleitergeneration. Daher wird häufig eine neue DSP/CPU-Entwicklung benötigt. Im allgemeinen tun Anbieter ihr Bestes, um die Kompatibilität der Software zu ermöglichen, aber in der Praxis wird Umsetzungszeit benötigt. Dieser Umsetzungsprozeß beeinflußt die Kosten ebenso wie die Zeit bis zur Markteinführung.
  • Die DSP-Implementierung hat Vorteile gegenüber der Hardware-Implementierung im Simulationsstadium, da sowohl die Simulation als auch die Implementierung in einer höheren Programmiersprache geschrieben werden können, wie z. B. in "C". In der Praxis gibt es kein effizientes Konvertierungsmittel von der Simulation in den DSP-Code. Mit anderen Worten, die Simulation simuliert nicht die exakte Implementierung, besonders wenn bei der DSP-Codierung die Assemblersprache verwendet wird. Außerdem sind die Forschungs- und Entwicklungskosten hoch. Die Kostenkalkulation muß die Entwicklung der Karte und die Entwicklung der Software berücksichtigen. Auf dem Markt herrscht ein Mangel an DSP-Experten; daher sind die Lohnkosten hoch.
  • In der Produktion ist die automatische Funktionsprüfung immer noch schwer ausführbar; wenn aber nach der Auslieferung ein Fehler oder eine Aktualisierung festgestellt wird, kann dies immer noch durch Änderung der Software am Kundenstandort behoben werden, obwohl dies in der Praxis bei weitem nicht trivial ist. Der einfache Teil ist das Laden des überarbeiteten Codes in die Implementierung.
  • Manchmal wird eine kombinierte Implementierung bevorzugt. Wenn z. B. in einer DSP-Implementierung ein Filter benötigt wird, kann das Filter in der Hardware implementiert werden, und der Rest der Anwendung wird in dem DSP implementiert. Die Vorteile und Nachteile jedes Teils bleiben erhalten.
  • Programmierbare Logikbausteine (PLD) ermöglichen eine flexible Implementierung, sind aber in der Anwendungsfähigkeit für eine gegebene Chipfläche begrenzt. Eine Simulationssprache ist in eine höhere Entwurfssprache (HDL/VHDL) konvertiert worden, um den Entwickler zu befähigen, Implementierungen zu erzeugen. Nichtsdestoweniger befähigen diese Softwaresprachen den Nutzer, die Hardware in modularer Form zu erzeugen: daher bleiben sie weit hinter Sprachen wie C++ zurück. Die Simulation ist nicht genau, die Fehlersuche ist kompliziert, und das Produkt ist kostspielig. Wenn die Größe ein kritischer Faktor ist, wird die Anwendung sehr häufig unter Verwendung einiger PLDs der oberen Leistungsklasse als "schneller Prototyp" implementiert und dann in ASIC umgesetzt. In diesem Fall erfolgt die ASIC-Entwicklung üblicherweise in mehreren Iterations schritten, wodurch der Preis erhöht und die Zeit bis zur Markteinführung verlängert wird.
  • Der ASIC-Entwicklungsprozeß wird z. B. von Texas Instruments Incorporated (Dallas, Texas, USA, 75380-9066) beschrieben, deren WEB-Adresse lautet: http://www.ti.com/sc/docs/asic/cad/cad.htm.
  • Außerdem wird auf http://www.verisity.com/html/spechased.html verwiesen, die zu Verisity Design, Inc., Mountain View, CA, USA, gehört. Ebenso sind weitere Informationen zur Automatisierung des Elektronikentwurfs unter der Adresse http://www.wsdmag.com/library/penton/archives/wsd/January1998/261.htm zu finden, wo bestätigt wird, daß die Technologie der Automatisierung des Elektronikentwurfs (EDA) hinter der Entwicklungsgeschwindigkeit der Halbleiterfertigung zurückgeblieben ist.
  • In der Patentliteratur sind einige von den Nachteilen angesprochen worden, die mit dem Entwurfs-, Fertigungs- und Prüfungsprozeß verbunden sind. US-A-5 815 726 (Cliff, Richard G.) mit dem Titel "Coarse-grained look-up table architecture" (Grobe Nachschlagetabellen-Architektur), veröffentlicht am 29. Sept. 1998, abgetreten an die Altera Corporation, offenbart eine programmierbare Logikbaustein-Architektur. Zur Verbindung von Signalen zu und von den Logikmatrixblöcken weisen die globalen Verbindungsmittel Schaltkästen, Langleitungen, Doppelleitungen, Einzelleitungen und halb und teilweise besetzte Multiplexerbereiche auf. Der Logikmatrixblock weist zwei Funktionsblockebenen auf. Auf einer ersten Ebene sind acht Funktionsblöcke mit vier Eingängen vorhanden. Auf einer zweiten Ebene sind zwei Funktionsblöcke mit vier Eingängen und vier sekundäre Funktionsblöcke mit zwei Eingängen vorhanden. In einer Ausführungsform werden diese Funktionsblöcke unter Verwenung von Nachschlagetabellen (LUT) implementiert. Der Logikmatrixblock weist kombinatorische und Registerausgänge auf und enthält außerdem Speicherblöcke zur Implementierung von sequentiellen oder Register-Logikfunktionen. Der Logikmatrixblock weist eine Übertragskette zur Implementierung von Logikfunktionen auf, die Übertragsbits erfordern, und kann auch so kon figuriert werden, daß er einen Direktzugriffsspeicher implementiert.
  • US-A-5 909 450 (Wright, Adam) mit dem Titel "Tool to reconfigure pin connections between a DUT and a tester" (Werkzeug zur Rekonfiguration von Anschlußbelegungen zwischen einem zu prüfenden Bauelement (DUT) und einem Prüfgerät), veröffentlicht am 1. Juni 1999, abgetreten an die Altera Corporation, offenbart ein Verfahren zur Prüfung von integrierten Schaltkreisen. Auf eine Datenbank von erwünschten Verbindungen zwischen einem Prüfgerät und einem zu prüfenden Bauelement (DUT) für verschiedene Abwärts-Bondstellen wird von einem Multiplexer zugegriffen, der die gewünschten Verbindungen aufbaut. Das System stellt ohne manuellen Eingriff des Benutzers, der in herkömmlichen Simulatorsystemen erforderlich war, automatisch die richtige Verbindung für jede Abwärtsbondstelle her.
  • US-A-S 821 773 (Norman, Kevin A. et al.) mit dem Titel "Look-up table based logic element with complete permutability of the Inputs to the secondary signals" (Nachschlagetabellengestützter Logikbaustein mit vollständiger Permutierbarkeit der Eingangssignale zu den Sekundärsignalen), veröffentlicht am 13. Oktober 1998, abgetreten an die Altera Corporation, offenbart ein Logikelement für einen programmierbaren Logikbaustein. Das Logikelement weist eine Nachschlagetabelle zur Implementierung von logischen Funktionen, einen programmierbaren Verzögerungsblock, einen als Halteschaltung oder Flipflop konfigurierbaren Speicherblock und einen diagnostischen Schattenspeicher auf. Durch Steuerung der Sekundärfunktionen des Speicherblocks sind mehrere Eingänge zum Logikelement und Komplemente dieser Eingänge verfügbar.
  • US-A-6 018 490 (Cliff, Richard G. et al.) mit dem Titel "Programmable logic array integrated circuits" (Integrierte Schaltkreise mit programmierbarer Logikmatrix), veröffentlicht am 25. Januar 2000, abgetreten an die Altera Corporation, offenbart einen integrierten Schaltkreis mit programmierbarer Logikmatrix, der eine Anzahl von programmierbaren Logikbausteinen aufweist, die in mehreren Logikmatrixblöcken zu Gruppen zusammengefaßt sind. Die Logikmatrixblöcke sind in einer zweidimensionalen Matrix auf dem Schaltkreis angeordnet. Ein Leiternetzwerk ist für die Verbindung jedes Logikbausteins mit jedem anderen Logikbaustein vorgesehen. Außerdem können aneinander angrenzende oder nahe gelegene Logikbausteine für Spezialzwecke miteinander verbunden werden, wie z. B. zur Herstellung einer Übertragskette zwischen Logikbausteinen und/oder zum Zusammenschalten von zwei oder mehreren Bausteinen, um komplexere Logikfunktionen bereitzustellen, ohne von dem allgemeinen Verbindungsnetzwerk Gebrauch machen zu müssen. Ein weiteres Netzwerk von sogenannten schnellen oder universellen Leitern ist für die Verteilung von allgemein verwendeten Logiksignalen, wie z. B. Takt- und Löschsignalen, über den gesamten Schaltkreis vorgesehen. Multiplexer können auf verschiedene Arten verwendet werden, um die Anzahl der zwischen Signalleitern erforderlichen programmierbaren Verbindungen zu verringern.
  • US-A-6 058 492 (Sample, Stephen P. et al.) mit dem Titel "Method and apparatus for design verification using emulation and Simulation" (Verfahren und Vorrichtung zur Entwurfsprüfung unter Anwendung von Simulation und Emulation), veröffentlicht am 2. Mai 2000, abgetreten an Quickturn Design Systems, Inc., offenbart ein Verfahren und eine Vorrichtung zur Kombination von Emulation und Simulation eines Logikentwurfs. Das Verfahren und die Vorrichtung können bei einem Logikentwurf angewandt werden, der Beschreibungen der Gate-Ebene, Verhaltensbeschreibungen, Strukturbeschreibungen oder eine Kombination daraus aufweist. Die Emulations- und Simulationsabschnitte werden so kombiniert, daß die Datenübertragungszeit zwischen den beiden Abschnitten minimiert wird. Die Simulation wird durch einen oder mehrere Mikroprozessoren ausgeführt, während die Emulation in rekonfigurierbarer Hardware ausgeführt wird, wie z. B. in frei programmierbaren Verknüpfungsfeldern. Wenn Mehrfachmikroprozessoren verwendet werden, dann werden unabhängige Teile des Logikentwurfs für die Ausführung in den multiplen synchronisierten Mikroprozessoren ausgewählt. Rekonfigurierbare Hardware führt auch Ereigniserkennungs- und Ablaufplanungsoperationen zur Unterstützung der Simulation und zur Verkürzung der Verarbeitungszeit aus.
  • US-A-5 815 715 (Ku.cedilla.uk et al.) mit dem Titel "Method for designing a product having hardware and software components and product therefor" (Entwurfsverfahren für ein Produkt mit Software- und Hardwarekomponenten und Produkt dafür), veröffentlicht am 29. September 1998, abgetreten an Motorola, Inc., offenbart ein Computersystem und ein Verfahren zum Entwurf des Computersystems unter Verwendung von Hardware- und Softwarekomponenten. Das Computersystem weist programmierbare Coprozessoren mit dem gleichen Architekturstil auf. Jeder Coprozessor weist eine Ablaufsteuerungseinheit und ein programmierbares Verbindungsnetzwerk sowie eine unterschiedliche Anzahl von Funktionseinheiten und Speicherelementen auf. Das Computersystem wird unter Verwendung eines Compilers entworfen, um aus einem Teil eines Anwendersoftware-Codes einen Hauptmikroprozessor-Code und einen Coprozessor-Code zu erzeugen. Der Compiler benutzt den Hauptmikroprozessor-Code zur Bestimmung der Arbeitsgeschwindigkeit des Hauptmikroprozessors und den Coprozessor-Code zur Bestimmung der Arbeitsgeschwindigkeit des Coprozessors und wählt entweder den Hauptmikroprozessor oder den Coprozessor zur Abarbeitung des Teils des Anwendersoftware-Codes aus. Dann erzeugt der Compiler einen Code, der als Software-Programm dient.
  • US-A-6 058 452 (Rangasayee, Krishna) mit dem Titel "Memory cells configurable as CAM or RAM in programmable logic devices" (Als CAM oder RAM konfigurierbare Speicherzellen in programmierbaren Logikbausteinen), veröffentlicht am 2. Mai 2000, abgetreten an die Altera Corporation, offenbart einen programmierbaren Logikbaustein mit Assoziativspeicher. Der programmierbare Logikbaustein kann einen rekonfigurierbaren Speicher mit zwei Betriebsarten aufweisen, der sich für den Betrieb als Assoziativspeicher in einer ersten Betriebsart und als Direktzugriffsspeicher in einer zweiten Betriebsart eignet. Um einen Benutzer selektiv zu befähigen, den Speicher mit zwei Betriebsarten entweder als Assoziativspeicher oder als Direktzugriffsspeicher zu konfigurieren, können Betriebsartensteuerschaltungen vorgesehen werden.
  • US-A-6 078 736 (Guccione, Steven A.) mit dem Titel "Method of designing FPGAs for dynamically reconfigurable compu ting" (Entwurfsverfahren für frei programmierbare Verknüpfungsfelder (FPGA) für dynamisch rekonfigurierbare Computer), veröffentlicht am 20. Juni 2000, abgetreten an Xilinx, Inc., offenbart ein Verfahren zum Entwurf von frei programmierbaren Verknüpfungsfeldern für rekonfigurierbare Computer mit einer Software-Umgebung für rekonfigurierbare Coprozessor-Anwendungen. Diese Umgebung weist einen Standardcompiler für höhere Programmiersprachen (d. h. Java) und eine Gruppe von Bibliotheken auf. Das FPGA wird direkt von einem Hauptprozessor aus konfiguriert, wobei Konfiguration, Rekonfiguration und der Laufzeitbetrieb des Wirtes in einem einzigen Codeabschnitt unterstützt werden. Entwurfskompilierungszeiten in der Größenordnung von Sekunden und eingebaute Unterstützung für parametrierte Zellen sind wesentliche Merkmale des erfindungsgemäßen Verfahrens.
  • US-A-6 031 391 und US-A-6 097 211 (Couts-Martin, Chris et al.) beide mit dem Titel "Configuration memory integrated circuit" (Integrierter Schaltkreis mit Konfigurationsspeicher), veröffentlicht am 29. Februar 2000 bzw. am 1. August 2000 und abgetreten an die Altera Corporation, offenbaren einen Konfigurationsspeicher zur Informationsspeicherung, der systemintern programmierbar ist. Die Programmierung des Konfigurationsspeichers kann unter Verwendung von JTAG-Anweisungen (IEEE-Standard 1149.1) ausgeführt werden. Ferner kann die Konfiguration eines programmierbaren Logikbausteins, der die Konfigurationsdaten im Konfigurationsspeicher benutzt, mit einer JTAG-Anweisung ausgelöst werden. In das Konfigurationsspeicherpaket sind Pull-up-Widerstände eingebaut.
  • US-A-S 894 228 (Reddy, Srinivas et al.) mit dem Titel "Tristate structures for programmable logic devices" (Dreizustandsstrukturen für programmierbare Logikbausteine), veröffentlicht am 13. April 1999 und abgetreten an die Altera Corporation, offenbart eine programmierbare Logikbausteinarchitektur, die Dreizustandsstrukturen aufweist. Die programmierbare Logikbausteinarchitektur stellt Dreizustandsstrukturen bereit, die logisch oder programmierbar gesteuert werden können, oder beides. Über diese Dreizustandsstrukturen können die Logikelemente mit der programmierbaren Zwischenverbindung ge koppelt werden, wo sie mit anderen Logikelementen des programmierbaren Logikbausteins gekoppelt werden können. Unter Verwendung dieser Dreizustandsstrukturen können die Signalwege der Architektur dynamisch rekonfiguriert werden.
  • US-A-6 026 230 (Lin, Sharon Sheau-Pyng et al.) mit dem Titel "Memory Simulation System and method" (Speichersimulationssystem und -verfahren), veröffentlicht am 15. Februar 2000 und abgetreten an Axis Systems, Inc., offenbart ein System mit vier Betriebsarten: (1) Software-Simulation, (2) Simulation mittels Hardware-Beschleunigung, (3) Schaltkreisemulation (ICE) und (4) Analyse nach der Simulation. Auf einer hohen Ebene kann das System in jeder der obigen vier Betriebsarten oder in verschiedenen Kombinationen dieser Betriebsarten realisiert werden. Im Kern dieser Betriebsarten ist ein Softwarekern enthalten, der den Gesamtbetrieb dieses Systems steuert. Die Hauptsteuerschleife des Kerns führt die folgenden Schritte aus: System initialisieren, aktive Prüfstandprozesse/-komponenten auswerten, Taktkomponenten auswerten, Taktflanke erkennen, Register und Speicher aktualisieren, kombinatorische Komponenten weiterleiten, Simulationszeit weiterzählen und die Schleife so lange fortführen, wie aktive Prüfstandprozesse vorhanden sind. Der Speicherbereichszuordnungs-Aspekt der Erfindung liefert eine Struktur und ein Schema, wo die zahlreichen Speicherblöcke, die mit dem Entwurf des Benutzers verbunden sind, in die SRAM-Speicherbausteine im Simulationssystem abgebildet werden, statt innerhalb der Logikbausteine, die zum Konfigurieren und Modellieren des Nutzerentwurfs verwendet werden. Das Speicherbereichszuordnungs- oder Speichersimulationssystem enthält eine Speicherzustandsmaschine, eine Beurteilungszustandsmaschine und deren zugeordnete Logik zur Steuerung und Kopplung mit: (1) dem Hauptcomputersystem und seinem zugeordneten Speichersystem, (2) den mit den FPGA-Bussen im Simulationssystem gekoppelten SRAM-Speicherbausteinen und (3) den FPGA-Logikbausteinen, die den gerade auszutestenden konfigurierten und programmierten Nutzerentwurf enthalten.
  • US-A-6 020 759 (Heile, Francis B.) mit dem Titel "Programmable logic array device with random access memory configurable as product terms" (Programmierbarer Logikmatrixbau stein mit RAM-Speicher, der in Form von Produkttermen konfigurierbar ist), veröffentlicht am 1. Februar 2000 und abgetreten an die Altera Corporation, offenbart einen nachschlagetabbellengestützten programmierbaren Logikbaustein, der mit Speicherschaltungen ausgestattet ist, die entweder als Direktzugriffsspeicher ("RAM") oder zur Ausführung einer Produktterm-Logik (p-Term-Logik) betrieben werden kann. Jede einzelne Zeile des Speichers ist getrennt adressierbar, um Daten in den Speicher einzuschreiben oder im RAM-Betrieb Daten aus dem Speicher auszulesen. Als Alternative sind mehrere Zeilen des Speichers parallel adressierbar, um p-Terme parallel aus dem Speicher auszulesen. Die erfindungsgemäßen Speicherschaltungen sind besonders gut als Ergänzung zu programmierbaren Logikbausteinen zum Nachschlagetabellentyp verwendbar, da die p-Term-Fähigkeit der Speicherschaltungen eine rationelle Methode zur Ausführung von Logikfunktionen mit breiter Eingangsfächerung bietet, die sonst Bäume von multiplen Nachschlagetabellen erfordern würden.
  • US-A-6 028 809 (Schleicher, James) mit dem Titel "Programmable logic device incorporating a tri-stateable logic array block" (Programmierbarer Logikbaustein mit Dreizustands-Logikmatrixblock), veröffentlicht am 22. Februar 2000 und abgetreten an die Altera Corporation, offenbart eine programmierbare Logik, die einen Multifunktionsblock mit mehreren integral verbundenen Funktionseinheiten enthält, wobei mindestens eine der Funktionseinheiten innerhalb des Multifunktionsblocks eine Logikeinheit mit drei Zuständen ist. Der programmierbare Logikbaustein enthält außerdem einen Dreizustandsbus, der funktionsfähig mit der Dreizustands-Logikeinheit verbunden ist, die Logiksignale mit drei Zuständen zu dem Dreizustandsbus senden sowie Logiksignale mit drei Zuständen vom Dreizustandsbus empfangen kann. Der Dreizustandsbus transportiert Dreizustands-Datensignale und Adreßwählsignale, die eine gewünschte Einheit von den Dreizustands-Logikeinheiten innerhalb des programmierbaren Logikbausteins anwählen.
  • US-A-6 085 317 (Smith, Stephen J.) mit dem Titel "Reconfigurable Computer architecture using programmable logic devices" (Rekonfigurierbare Computerarchitektur mit Verwendung programmierbarer Logikbauelemente), veröffentlicht am 4. Juli 2000 und abgetreten an die Altera Corporation, offenbart eine rekonfigurierbare Computerarchitektur mit Verwendung von Logikbausteinen. Die Computerfunktion kann durch Konfigurieren einer ersten programmierbaren Logikeinheit als Systemsteuergerät realisiert werden. Das Systemsteuergerät lenkt bzw. steuert die Implementierung eines Algorithmus in einer zweiten programmierbaren Logikeinheit gleichzeitig mit dem Rekonfigurieren einer dritten programmierbaren Logikeinheit. Nach einem anderen Aspekt kann das Computersystem ein Paar unabhängige Zweiwegbusse aufweisen, die jeweils so eingerichtet sind, daß sie das Systemsteuergerät und die mehreren programmierbaren Logikbausteine elektrisch miteinander verbinden. Bei dieser Anordnung kann ein erster Bus zum Rekonfigurieren eines ausgewählten programmierbaren Logikbausteins nach Anweisung vom Systemsteuergerät verwendet werden, während der zweite Bus durch einen funktionsfähigen programmierbaren Logikbaustein genutzt wird.
  • US-A-6 034 536 und US-A-6 091 258 (McClintock, Cameron et al.), beide mit dem Titel "Redundancy circuitry for logic circuits" (Redundanzschaltungen für Logikschaltkreise), veröffentlicht am 7. März 2000 bzw. am 18. Juli 2000 und abgetreten an die Altera Corporation, offenbaren redundante Schaltungen für einen Logikschaltkreis, wie z. B. einen programmierbaren Logikbaustein. Die redundanten Schaltungen ermöglichen die Reparatur des Logikschaltkreises durch Austausch eines defekten Logikbereichs auf dem Schaltkreis durch einen redundanten Logikschaltkreis. Zeilen und Spalten von Logikbereichen können durch Umspeichern von Zeilen und Spalten logisch umdefiniert werden. Der Logikschaltkreis enthält dynamische Steuerschaltungen, um Programmierungsdaten in einer durch Redundanzkonfigurationsdaten definierten Reihenfolge zu verschiedenen Logikbereichen zu lenken. Die Redundanz kann unter Verwendung von vollständig oder teilweise redundanten Logikbereichen implementiert werden. Logikbereiche können umgespeichert werden, um einen teilweise redundanten Logikbereich auf einen Logikbereich umzudefinieren, der einen Defekt enthält. Der Defekt kann dann durch Umspeichern oder Verschieben von Zeilen oder Spalten repariert werden. Ein Logikschaltkreis, der gefaltete Zeilen von Logikbereichen enthält, kann repariert werden, indem eine defekte Halbzeile durch eine redundante Halbzeile ersetzt wird.
  • US-A-6 069 489 (Iwanczuk, Roman et al.) mit dem Titel "FPGA having fast configuration memory data readback" (FPGA mit Schnellwiedergabe von Konfigurationsspeicherdaten), veröffentlicht am 30. Mai 2000 und abgetreten an Xilinx, Inc., offenbart einen FPGA-Konfigurationsspeicher, der in Spaltenrahmen unterteilt ist, die jeweils eine eindeutige Adresse aufweisen. Konfigurationsdaten werden in ein Konfigurationsregister geladen, das die Konfigurationsdaten rahmenweise parallel überträgt. In einer bevorzugten Ausführungsform ermöglichen ein Eingaberegister, ein Schatteneingaberegister und eine Multiplexer-Anordnung die effiziente Übertragung von Konfigurationsdaten unter Verwendung einer größeren Anzahl von Eingabebits als bei herkömmlichen FPGAs. Eine flexible äußere Schnittstelle ermöglicht die Verbindung mit Busgrößen, die von einer vorgegebenen maximalen Breite bis zu einem ausgewählten Bruchteil dieser Breite variieren. Die Übertragung von Konfigurationsdaten wird durch Verwendung von Schattenregistern zur rahmenweisen Steuerung solcher Daten in Speicherzellen mit minimaler Verzögerung und durch Verwendung einer Multiplexer-Anordnung zur Ausnutzung eines breiteren Konfigurationsdatenübertragungsbusses effizienter gemacht. Die Geschwindigkeit der Konfigurationswiedergabe wird im wesentlichen an die Geschwindigkeit der Konfigurationsdateneingabe angeglichen, indem eine Konfigurationsregisterlogik verwendet wird, die eine bidirektionale Datenübertragung unterstützt. Unter Verwendung des vorgeschlagenen FPGA-Konfigurationsspeichers kann ein Bitstrom, der für einen alten Baustein ausgelegt ist, für einen neuen Baustein mit zusätzlichen Konfigurationsspeicherzellen verwendet werden.
  • US-A-5 477 475 (Sample, Stephen P.) mit dem Titel "Method for emulating a circuit design using an electrically reconfigurable hardware emulation apparatus" (Verfahren zur Emulation eines Schaltkreisentwurfs unter Verwendung einer elek trisch rekonfigurierbaren Hardware-Emulationsvorrichtung), veröffentlicht am 19. Dezember 1995 und abgetreten an Quickturn Design Systems, Inc., offenbart ein System zur physikalischen Emulation von elektronischen Schaltkreisen oder Systemen mit einem Dateneingabeplatz, wo ein Benutzer Daten eingeben kann, welche die Schaltkreis- oder Systemkonfiguration repräsentieren. Diese Daten werden in eine Form umgewandelt, die sich für die Programmierung einer Matrix von programmierbaren Gate-Elementen eignet, die mit einer reich verschalteten Architektur ausgestattet sind. Es werden Vorkehrungen für den äußeren Anschluß von Bauelementen mit VLSI-Schaltkreisen oder anderen Abschnitten eines Nutzerschaltkreises oder Nutzersystems getroffen. Durch Verwendung von unbenutzten Leiterbahnen in den programmierbaren Gate-Arrays wird ein Netzwerk von internen Sondierungsverbindungen zur Verfügung gestellt.
  • US-A-5 821 773 (Norman et al.) mit dem Titel "Look-up table based logic element with complete permutability of the Inputs to the secondary signals" (Nachschlagetabellengestütztes Logikelement mit vollständiger Permutierbarkeit der Eingangssignale mit den Sekundärsignalen), veröffentlicht am 13. Oktober 1998 und abgetreten an die Altera Corporation, offenbart ein Logikelement für einen programmierbaren Logikbaustein. Das Logikelement weist eine Nachschlagetabelle zur Implementierung von Logikfunktionen, einen programmierbaren Verzögerungsblock, einen als Halteschaltung oder Flipflop konfigurierbaren Speicherblock und einen diagnostischen Schattenspeicher auf. Es sind mehrere Eingänge zu dem Logikelement und Komplemente dieser Eingänge verfügbar, um die Sekundärfunktionen des Speicherblocks zu steuern.
  • US-A-4 984 192 (Flynn) mit dem Titel "Programmable state machines connectable in a reconfiguration switching network for performing real-time data processing" (Programmierbare, in einem Schaltnetz durchschaltbare Ablaufsteuereinheiten zur Ausführung einer Echtzeit-Datenverarbeitung), veröffentlicht am B. Januar 1991 und abgetreten an Ultrasystems Defense Inc., offenbart ein programmierbares Element (PE) zur Implementierung von programmierbaren Logikschaltkreisen. Das programmierbare Element weist ein Ablaufadressenregister, ein Ladeadres senregister und einen Direktzugriffsspeicher (RAM) auf. Der RAM wird unter Verwendung des Ladeadressenregisters mit einer Zustandsübergangstabelle initialisiert. Nach der RAM-Initialisierung und bei jedem Taktübergang wird das Ablaufadressenregister mit externen Eingaben und einem aktuellen Zustand geladen. Der aktuelle Zustand wird als Ausgabe des nächsten RAM-Zustands von internen Rückkopplungsleitungen vom RAM-Ausgang zu den Eingängen des Ablaufadressenregisters empfangen. Die RAM-Ausgabe wird in einen nächsten Zustand, der in den internen Rückkopplungsleitungen gespeichert wird, und Elementdaten-Ausgaben zu einem Ziel außerhalb des programmierbaren Elements unterteilt. Ein Zustandsprozessor (SP) zur Implementierung komplexer programmierbarer Logikschaltkreise weist mehrere programmierbare Elemente und einen Matrixschalter auf. Der Matrixschalter liefert eine externe Rückkopplung für programmierbare Elemente. Außerdem kann jede programmierbare Ausgabe zu irgendeinem Eingang eines programmierbaren Elements übertragen werden. Ein hierarchisches Netzwerk von Zustandsprozessoren zur Implementierung von programmierbaren Logiksystemen weist mehrere Zustandsprozessoren und mehrere Matrixschalter auf. Innerhalb des hierarchischen Netzwerks kann jeder Zustandsprozessoreingang jede Zustandsprozessorausgabe empfangen.
  • Es wird besonders auf 13 verwiesen, wo eine oder mehrere Matrizen mit entsprechenden Zustandsprozessoren verbunden sind und selbst untereinander durch eine Zentralmatrix verbunden sind.
  • Außerdem wird auf 20.1 auf den Seiten 491 und 492 von U. Tietze, Ch. Schenk, "Halbleiter-Schaltungstechnik", Springer-Verlag, 1980, verwiesen, die ein Bauelement zeigt, das dem Oberbegriff des Hauptanspruchs entspricht.
  • In keiner dieser Literaturstellen wird eine Bauelementarchitektur gelehrt, die ein Zusammenschalten von Zellen durch eine programmierbare Matrix auf eine solche Weise ermöglicht, daß Zellen innerhalb ähnlicher Zellen konfiguriert werden können, wodurch auf rekursive Weise eine Selbstähnlichkeit zwischen einem programmierbaren Logikbaustein und seinen Logikkomponenten eingeführt wird.
  • Zusammenfassung der Erfindung
  • Eine Aufgabe der Erfindung besteht darin, eine verbesserte Bauelementarchitektur bereitzustellen, die sich besonders für den Entwurf von digitalen Schaltkreisen eignet und eine hohe Flexibilität zuläßt und die Zeit vom Entwurf bis zum fertigen Produkt verkürzt.
  • Zu diesem Zweck wird nach einem allgemeinen Aspekt der Erfindung ein universeller Hardwarebaustein bereitgestellt, der aufweist:
    eine erste Gruppe von mehreren Zellen zur Datenspeicherung; und
    eine erste programmierbare Matrix, die mit Eingängen und Ausgängen der mindestens einen Zellengruppe verbunden ist, wodurch mehrere Hardwareanwendungen implementiert werden können, indem selektiv Daten in den Zellen gespeichert und die Matrix selektiv so programmiert wird, daß mindestens eine der Zellen mit mindestens einer (anderen) von den Zellen verbunden wird;
    dadurch gekennzeichnet, daß
    mindestens eine der Zellen eine zweite Gruppe von mehreren Zellen zum Speichern von Daten aufweist; und
    eine zweite programmierbare Matrix, die mit Eingängen und Ausgängen der zweiten Zellengruppe verbunden ist, wobei jede Zelle der ersten Zellengruppe und der zweiten Zellengruppe eine ähnliche Architektur wie der gesamte universelle Hardwarebaustein aufweisen kann, und
    daß auf mindestens eine Zelle, die nicht Teil der ersten Zellengruppe ist, über einen Anschluß bzw. Port der mindestens einen Zelle direkt zugegriffen werden kann.
  • Eine derartige Bauelementarchitektur ermöglicht die Kombination von Zellen zu größeren Zellen, die selbst zu größeren Zellen kombiniert werden können, wobei dieser Prozeß nach Bedarf wiederholt wird; sowie die Konfiguration der kombinierten Zellen als Hardwareanwendung durch Herunterladen von Daten zu den Teilzellen. Vorzugsweise sind die Zellen als Nachschlagetabellen mit adressierbaren Speicherplätzen konfigurierbar, in denen die gespeicherten Daten eine durch die Nachschlagetabelle implementierte Funktion definieren. Die Funktion kann selbst unter Verwendung einer höheren Programmiersprache programmiert werden und kann zusammen mit dem Code zur Implementierung einer gewünschten Konnektivität der Zellen formatiert werden. Die formatierten Daten werden dann zu den Zellen im Baustein herunter geladen. Nach dem Herunterladen führt der Baustein die vorprogrammierte Funktionsfähigkeit auf eine Weise aus, die nicht mehr von dem höheren Programmcode abhängig ist, der bei der Implementierung der gewünschten Funktion verwendet wurde. Als Ergebnis ist der Betrieb des Bausteins von der Leistungsfähigkeit des höheren Programmcodes unabhängig. Zur Simulation des Bausteins kann ein identischer Code benutzt werden, wodurch Entwurf und Simulation des Bausteins stark erleichtert werden und die Zeit vom Entwurf bis zum Vertrieb stark verkürzt wird.
  • Die Erfindung bietet außerdem Werkzeuge für Entwurf, Simulation und Fehlersuche des Hardwarebausteins. Die Werkzeuge können auch die Umwandlung des gesamten oder eines Teils des Bausteins in einen ASIC unterstützen, nachdem festgestellt wurde, daß der fertige Baustein anforderungsgemäß funktioniert, obwohl der Wert einer solchen Umwandlung abnimmt, da die Lebenserwartung des Produkts sinkt.
  • Kurze Beschreibung der Zeichnungen
  • Um die Erfindung zu verstehen und zu erkennen, wie sie in der Praxis ausgeführt werden kann, wird nachstehend – lediglich anhand eines nicht als Einschränkung gedachten Beispiels – eine bevorzugte Ausführungsform unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Dabei zeigen:
  • 1 ein Ablaufdiagramm, das ein herkömmliches Verfahren zur Hardware-Implementierung von IC-Chips auf Elektronikkarten darstellt;
  • 2 schematisch die erfindungsgemäße Bauelementarchitektur; die 3 und 4 zeigen schematisch alternative Konfigurationen von Zellen zur Verwendung in dem in 2 dargestellten Baustein;
  • 5 zeigt schematisch ein Detail der in 4 dargestellten Zelle einschließlich der Hilfsschaltungen;
  • 6 zeigt schematisch die Konnektivität, die zur Erzeugung einer Zelle erforderlich ist, die aus zwei Zellen gebildet wird, um einen größeren Adressenbus zu erhalten;
  • 7 zeigt schematisch eine Matrix, die Ausgänge der Zelle D mit Eingängen der Zelle A verbindet;
  • 8 zeigt schematisch eine gesättigte Matrix, die in der Schaltung von 7 verwendet werden kann;
  • 9 zeigt schematisch eine ungesättigte Matrix, die in der Schaltung von 7 verwendet werden kann;
  • 10 zeigt schematisch einen Zähler mit Verwendung einer in 3 dargestellten Zelle;
  • 11 zeigt schematisch einen Vorwärts-Rückwärts-Zähler, der eine in 3 dargestellte Zelle verwendet;
  • 12 zeigt schematisch ein Schieberegister mit Verwendung von drei zusammengeschalteten Zellen, wie sie in 3 dargestellt sind;
  • 13 zeigt schematisch eine mögliche Topologie eines einzelligen Schieberegisters, das in dem in 12 dargestellten Schieberegister verwendet wird;
  • 14 zeigt schematisch, wie zwei Zellen der in 5 darstellten Art zu einem Dreizustandselement zusammengeschaltet werden können;
  • 15 zeigt schematisch einen RAM-Server nach einer ersten Ausführungsform unter Verwendung von zwei Zellen des in 5 dargestellten Typs;
  • 16 zeigt ein mögliches Impuls- bzw. Taktdiagramm für den in 15 dargestellten RAM-Server;
  • 17 zeigt schematisch einen RAM-Server nach einer zweiten Ausführungsform mit Verwendung von zwei Zellen des in 5 dargestellten Typs;
  • 18 zeigt ein mögliches Impuls- bzw. Taktdiagramm für den in 17 dargestellten RAM-Server;
  • 19 zeigt schematisch ein Schieberegister, das im Zeitschachtelungs-Anwendungsmodus arbeitet;
  • 20 zeigt ein Impuls- bzw. Taktdiagramm, das die Zeitsteuerungsfunktion für das in 19 dargestellte Schieberegister darstellt;
  • 21 zeigt schematisch eine RAM-Server-Kombination, die in einem Zeitschachtelungs-Anwendungsmilieu arbeitet;
  • 22 zeigt schematisch die Konnektivität, die zur Erzeugung einer aus zwei Zellen gebildeten Zelle erforderlich ist, um einen größeren Datenbus zu erhalten;
  • 23 zeigt schematisch die Konnektivität, die während des Ladens der Zellen mit Daten erforderlich ist;
  • 24 zeigt schematisch ein Bauelement, das für die Ausführung eines 8-Bit-Befehls konfiguriert ist;
  • 25 zeigt eine unabhängige RAM-Zelle ohne Zwischenspeicher;
  • 26 zeigt schematisch ein nichtoptimiertes Addierglied mit Verwendung der in 25 dargestellten Zelle;
  • 27 zeigt schematisch ein verbessertes Addierglied mit Verwendung der in 25 dargestellten Zelle;
  • 28 zeigt schematisch einen Zwischenspeicher, der unabhängig von dem in 25 dargestellten RAM verwendet werden kann;
  • 29 zeigt schematisch ein Bauelement, wo ein Taktfreigabesignal zur Einstellung der effektiven Taktfrequenz verwendet wird;
  • 30 zeigt schematisch eine Architektur mit mehreren Multichipmodulen (MCM), die ein schnelles Umschalten zwischen verschiedenen Zuständen der programmierbaren Matrix ermöglicht;
  • 31 zeigt ein Ablaufdiagramm, das die nach einem ersten Verfahren angewandten Hauptarbeitsschritte zur Ableitung von Konstruktionsdaten für die Implementierung des erfindungsgemäßen Bauelements darstellt;
  • 32 zeigt ein Ablaufdiagramm, das die nach einem zweiten Verfahren angewandten Hauptarbeitsschritte zur Verwendung einer Bibliothek für die Ermittlung und Speicherung von Konstruktionsdaten darstellt;
  • 33 zeigt ein Ablaufdiagramm, das die nach einem dritten Verfahren angewandten Hauptarbeitsschritte zur Ableitung von Konstruktionsdaten für die Implementierung des erfindungsgemäßen Bauelements darstellt;
  • 34 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Implementierung des erfindungsgemäßen Bauelements angewandt werden;
  • 35 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Simulation einer Anwendung unter Verwendung des erfindungsgemäßen Bauelements angewandt werden;
  • 36 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Emulation einer Anwendung unter Verwendung des erfindungsgemäßen Bauelements angewandt werden;
  • 37 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Verwendung des erfindungsgemäßen Bauelements angewandt werden, um den ASIC-Entwurf zu erleichtern;
  • 38 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Vermeidung des Einsatzes defekter Zellen in dem Bauelement während der Implementierung einer Anwendung unter Verwendung des Bauelements angewandt werden;
  • 39 zeigt ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die nach einem Verfahren zur Fehlerbeseitigung von defekten Zellen in dem Bauelement während des Echtzeitbetriebs einer Anwendung unter Verwendung des Bauelements angewandt werden;
  • Die 40 und 41 zeigen Ablaufdiagramme, die erfindungsgemäße Prozesse für die Hardware-Implementierung von IC-Chips auf Elektronikkarten darstellen.
  • Ausführliche Beschreibung der Erfindung
  • 2 zeigt schematisch die Grundarchitektur eines erfindungsgemäßen Bauelements 100. Die Architektur des Bauelements ist eine Ansammlung von Zellen 101, die über mindestens eine programmierbare Matrix 102 zusammengeschaltet sind. Eine Zelle 103 kann aus kleineren Zellen 101 aufgebaut werden. Ebenso kann jede der Zellen 101 oder 103 zusammen mit der dazugehörigen Matrix 102 Teil eines Blocks sein, wie z. B. von 104 und 105. Jeder Block hat die gleiche Architektur wie das gesamte Bauelement 100. Jeder Block kann als Einzelzelle konfiguriert sein. Obwohl zwischen dem Ausgang eines Blocks und dem Eingang des gleichen oder eines anderen Blocks irgendeine Verbindung hergestellt werden kann, ist eine bestimmte Verbindung zwischen den inneren Zellen von zwei Blöcken unter Umständen nicht immer möglich. Dies ermöglicht die Zuordnung eines Blocks zu einer "Ebene", welche die Anzahl der Blöcke ist, die den Block enthalten. So ist z. B. ein Block der Ebene 0 das Bauelement selbst; Blöcke der Ebene 1 bilden das Bauelement; und Blöcke der Ebene 2 bilden Blöcke der Ebene 1. Bei dieser Aussage ist zu beachten, daß 2 schematisch ist, und daß es unerheblich ist, ob die programmierbare Matrix 102 innerhalb oder außerhalb der Begrenzung des Blocks dargestellt wird, da in jedem der beiden Fälle alle Zellen innerhalb eines Blocks mit mindestens einer programmierbaren Matrix verbunden sein müssen. Die Anschlüsse einer innerhalb eines Blocks liegenden Zelle, die eine Verbindung nach außerhalb des Blocks ermöglichen, sind als Anschlußkanal bzw. Port des Blocks definiert.
  • Ferner ist zu beachten, daß ein Block eine oder mehrere Zellen bilden könnte. Ebenso ist das Bauelement 100 selbst ein Block, der mehrere Zellen enthält, die durch eine programmierbare Matrix miteinander verbunden sind, und jeder Block hat folglich eine ähnliche Architektur wie das Bauelement 100 und kann in der Tat als Bauelement angesehen werden. Das Bauelement 100 enthält daher mehrere gleichartige Bauelemente und kann als Zelle angesehen werden, die aus mehreren gleichartigen Zellen besteht.
  • Der Name "Block" ermöglicht eine Unterscheidung zwischen dem kompletten Bauelement 100 und einer Komponente davon mit ähnlicher Architektur; auch wenn diese Unterscheidung nur für die Patentbeschreibung gilt, um eine klare Darstellung zu erleichtern. Was die Patentansprüche betrifft, wird nicht zwischen dem kompletten Bauelement und irgendeiner Komponente davon mit ähnlicher Architektur unterschieden. Tatsächlich liegt ein wesentliches Merkmal der Erfindung in der Tatsache, daß die Architektur einer Komponente des Bauelements der Architektur des Bauelements als Ganzem ähnlich sein kann. Aus dem gleichen Grunde kann ein Block, da er selbst ein Bauelement ist, auf verschiedene Weise realisiert werden, und daher kann ein Bauelement zwei oder mehrere Blöcke mit unterschiedlichen Strukturen enthalten.
  • Zu beachten ist, daß die Matrix 102 keine einzelne Einheit zu sein braucht, sondern in Abschnitte unterteilt sein kann. Ebenso wird man erkennen, daß der Block 105 mehrere Zellengruppen enthält, von denen zwei als 106 und 107 gekennzeichnet sind, die jeweils eine möglicherweise unterschiedliche Anzahl von Zellen 101 enthalten und beide durch eine einzige Matrix 108 versorgt werden. Der Block 105 zusammen mit seinen Teilzellen und etwaigen anderen Teilelementen wird gleichfalls durch eine zweite Matrix 109 versorgt, die außerhalb des Blocks 105 dargestellt ist. Jede der Matrizen 108 und 109 ist typischerweise von identischer Struktur mit der Matrix 102, und es ist Verabredungssache, ob sie innerhalb oder außerhalb des Blocks dargestellt wird. Folglich ist die Art und Weise, in der die Matrix in den Figuren abgebildet wird, schematisch und dient nur zur Erläuterung. Außerdem ist zu beachten, daß ein Teil der in einer Matrix verfügbaren Verbindungen in einer anderen Matrix nachgebildet werden könnten. Jede derartige Kopie wird in der Implementierung entfernt. Wie weiter unten anhand von 8 erläutert wird, ist die Matrix in der Praxis einfach eine Gruppe von Schaltern (wie z. B. CMOS-Schalter), die jeweils durch ein Flipflop gesteuert werden, so daß durch Einschreiben einer logischen "1" oder "0" in das entsprechende Flipflop der Schalter geschlossen oder geöffnet werden kann, wodurch die Stellen gemäß irgendeiner erforderlichen Topologie zusammengeschaltet werden können. Die Flipflops, die sich auf alle Schalter der Matrix beziehen, sind in Gruppen angeordnet und mit Hilfsschaltungen verknüpft, die ermöglichen, daß jedes der Flipflops zum Einschreiben von Daten angewählt werden kann. Folglich können die Flipflops und die dazugehörigen Hilfsschaltungen durch einen RAM realisiert werden und werden als "Matrixsteuerungsspeicher" bezeichnet. Wahlweise können im Matrixsteuerungsspeicher enthaltene Daten auch gelesen werden.
  • Die dargestellte Bauelementarchitektur kann an "Fraktalstrukturen" erinnern, die in der Mathematik zur Beschreibung irgendeiner Klasse von komplexen geometrischen Formen benutzt werden, welche die Eigenschaft der Selbstähnlichkeit aufweisen.
  • Die Eingabeanschlüsse und die Ausgabeanschlüsse des Bauelements sind mit der programmierbaren Matrix verbunden: die Eingabeanschlüsse mit dem Matrixeingang; die Ausgabeanschlüsse mit dem Matrixausgang. Um direkt vom Eingang oder vom Ausgang auf eine untere Ebene zuzugreifen, sollte der Anschlußkanal des Blocks benutzt werden.
  • 3 zeigt schematisch eine Zelle 110 nach einer ersten Ausführungsform. Die Zelle 110 weist einen Direktzugriffsspeicher (RAM) 111 mit (n+m) Adressenleitungen 112 auf, die als zwei getrennte Adressenbusse dargestellt sind, obwohl sie als ein einziger Adressenbus funktionieren, dessen minimale Adreßbitzahl (m+n) gleich 1 sein kann. Ein Datenbus 113 ermöglicht das Auslesen von Daten, die in adressierbaren Speicherplätzen des RAM 111 gespeichert sind, und nimmt eine Anzahl von Datenbits D auf, deren minimale Anzahl ebenfalls gleich 1 ist. Auf dem Datenbus erscheinende Daten werden durch einen Zwischenspeicher 114 gespeichert, dessen Ausgang 115 einen Ausgang der Zelle 110 bildet. Der RAM 111 kann mit den gewünschten Daten geladen werden.
  • 4 zeigt schematisch eine Zelle 120 nach einer zweiten Ausführungsform. Die Zelle 120 weist einen RAM 121 mit (n+m) Adressenleitungen 122 auf, die wieder als zwei getrennte Busse dargestellt sind, obwohl sie als ein einziger Adressenbus arbeiten, dessen minimale Adreßbitzahl (m+n) gleich 1 sein kann. Ein Datenbus 123 ermöglicht das Auslesen von Daten, die in adressierbaren Speicherplätzen des RAM 121 gespeichert sind, und nimmt eine Anzahl von Datenbits D auf, deren minimale Anzahl ebenfalls gleich 1 ist. In diesem Fall bilden die auf dem Datenbus 123 erscheinenden Daten ein Ausgangssignal der Zelle 120. Die auf dem Adressenbus 122 erscheinende Adresse wird durch einen entsprechenden Zwischenspeicher 124 gespeichert. Der RAM 121 kann auf eine weiter unten beschriebene Weise mit den gewünschten Daten geladen werden. Obwohl am Ein gang des RAM 121 zwei Zwischenspeicher 124 dargestellt sind, werden sie als "der Zwischenspeicher" der Zelle 120 bezeichnet, wobei zwischen der tatsächlichen Anzahl der Zwischenspeicher, die zum Speichern der Adresse benutzt werden, nicht unterschieden wird.
  • Die in 3 und 4 dargestellten RAM-Speicher 111 und 121 ebenso wie die Zwischenspeicher 114 und 124 sind Teil des in 2 dargestellten Bauelements 100. In einer bestimmten, an die Praxis angepaßten Ausführungsform wurde der RAM auf IDT6116 von Integrated Device Technology, Santa Clara, Californien, USA 95054, modelliert, und der Zwischenspeicher wurde auf dem Register SN74HC374 von Texas Instruments Incorporated, Dallas, Texas, USA 75380-9066, modelliert. In beiden Konfigurationen der Zelle können die Werte von n, m und d nach Bedarf entsprechend einer Anwendung zugewiesen werden, die unter Verwendung des Bauelements implementiert werden soll.
  • 5 zeigt schematisch eine detailliertere Darstellung der Logikzelle von 4. Die Figur zeigt eine Zelle 130, die einen RAM 131 mit einem (m+n)-Bit-Adressenbus 132 und einem d-Bit-Datenbus 133 aufweist. Ein Zwischenspeicher bzw. eine Halteschaltung 134a und 134b dient zum Halten der Adresse auf dem Adressenbus 132. Wieder ist zu beachten, daß der Adressenbus und der Zwischenspeicher 134 nur zur Erläuterung unterteilt dargestellt sind. Funktionell gibt es nur einen einzigen Adressenbus, und die Zwischenspeicher können als ein einziger Zwischenspeicher angesehen werden. Logiksignale OE und OE werden durch einen Zwischenspeicher 136 gehalten, der auch als Teil oder als Erweiterung des Zwischenspeichers 134 angesehen werden kann, und über Hilfsschaltungen 137 der Ausgangsfreigabe (OE) des RAM 131 zugeführt und können bewirken, daß der RAM drei Zustände annehmen kann. Logiksignale CS und CS werden gleichfalls durch den Zwischenspeicher 136 gehalten und über die Hilfsschaltungen 137 zugeführt, um zu ermöglichen, daß der RAM 131 aktiviert oder deaktiviert wird. Die Anzahl der Paare von CS- und CS-Signalen ist so gewählt, daß die Abbildung des gesamten Blocks (oder Bauelements) in eine einzige Zelle ermöglicht wird. Den Zwischenspeichern 134 und 136 wird ein Taktsignal zugeführt und kann durch ein Taktfrei gabesignal CE aktiviert oder deaktiviert werden, das gleichfalls über eine Matrix zugeführt werden kann. Die Signale OE, OE, CS1, CS1, CS2, CS2, CS3, CS3, CS4, CS4 und so weiter, und CE sind so beschaffen, daß sie, wenn sie nicht angelegt sind, auf Standardwerte gesetzt werden, so daß ein aktives L-Signal auf L und ein aktives H-Signal auf H gesetzt wird, d. h. auf ihre aktivierten Zustände. Dagegen wird der Standardwert von WE, wenn das Signal nicht angelegt ist, auf seinen deaktivierten Zustand gesetzt. Wenn der RAM nicht aktiviert ist (die Chipfreigabe ist nicht aktiv), dann befindet er sich im Dreizustandsmodus und unter Schreibsperre.
  • Nachstehend wird eine mögliche Zeitsteuerungs-Implementierung für das Bauelement beschrieben, das auf der Zelle von 5 basiert.
  • (a) Für alle Zellen wird ein einziger "Haupttakt" verwendet.
  • (b) es gibt kein "Schreibsignal", da der Haupttakt das "Schreibsignal" ist. Das Schreibsignal ist aktiv oder nicht, in Abhängigkeit vom "Schreibfreigabesignal".
  • (c) Da die Signale "Ausgabefreigabe" und das Signal "Schreibfreigabe" gleichfalls durch den Haupttakt blockiert werden, gibt es daher kein Zeittaktwettrennen bzw. keinen Konflikt zwischen "Schreibsignal" und irgendeinem anderen Signal.
  • (d) Es gibt keinen Konflikt zwischen der Zwischenspeicherfunktion und der Schreibfunktion, da der Anfang der Zwischenspeicherfunktion das Ende der Schreibfunktion ist. Nichtsdestoweniger kann es wünschenswert sein, die Impulsdauer des Schreibsignals ein wenig zu verkürzen, um die Sicherheitsspanne zu vergrößern und dabei den gleichen Zyklus beizubehalten, welche der Zeit zwischen zwei aufeinanderfolgenden Taktimpulsen an den Zwischenspeichern entspricht.
  • (e) Wenn ein Schreibsignal auftritt, können Daten vom Eingang des Bauelements oder von anderen Zellen über die Matrix der erforderlichen Zelle zugeführt werden. Im letzteren Fall werden die entsprechenden Datenbusse der beiden Zellen miteinander verbunden. Die Ausgabefreigabe des RAM, in den gerade Daten eingeschrieben werden, ist deaktiviert (im Dreizu standsmodus), und die Ausgabefreigabe des RAM, aus dem Daten ausgelesen werden, ist aktiv.
  • (f) OE- und Chipfreigabesignale werden bereitgestellt, wie oben unter Bezugnahme auf 5 beschrieben. Das OE-Signal kann für die Schreiboperation, den Multiplexbetrieb zwischen den Zellen usw. verwendet werden; und die Chipfreigabesignale können für die Erzeugung größerer Zellen benutzt werden, wie weiter unten unter Bezugnahme auf 6 beschrieben wird.
  • Für Bauelemente, die sich für Anwendungen eignen, wo überhaupt keine Schreiboperation benötigt wird, kann der Taktzyklus kürzer sein, um schnellere (Echtzeit-)Anwendungen zu erzeugen, und der L-H-Übergang des Haupttaktsignals kann auftreten, wenn der Zellenausgang betriebsbereit ist. Dies wird aus der Beschreibung von RAM-Server-Kombinationen deutlicher, die in 15 und 17 dargestellt sind, sowie aus den in 16 und 18 dargestellten Taktdiagrammen.
  • 6 zeigt ein Beispiel für die Verbindung von zwei Zellen, die jeweils eine n-Bit-Adresse aufweisen, um eine Verbundzelle 140 von doppelter Größe zu bilden, d. h. mit der doppelten Anzahl von adressierbaren Speicherplätzen, die durch einen (n+1)-Bit-Adressenbus adressiert werden. Soweit die Komponenten jeder Teilzelle identisch mit denen sind, die oben unter Bezugnahme auf 5 beschrieben wurden, werden in 6 gleiche Bezugszeichen benutzt. Folglich enthält die Verbundzelle 140 zwei RAM-Speicher, die mit 131a und 131b bezeichnet werden und beide einen n-Bit-Adressenbus 132a bzw. 132b aufweisen. Daher werden die niedrigstwertigen Bits der kombinierten Adresse über entsprechende Zwischenspeicher 134a bzw. 134b den entsprechenden RAM-Speichern 131a und 131b zugeführt. Zur Veranschaulichung wird die (n+1)-Bit-Adresse, die der kombinierten Zelle zugeführt wird, von einem RAM 142 abgeleitet, der einen m-Bit-Adressenbus und einen (n+1)-Bit-Datenbus aufweist, wobei eine m-Bit-Adresse dem Bus über einen m-Bit-Zwischenspeicher 143 zugeführt wird. Die Datenbusse 133 der beiden RAM-Speicher 131a und 131b werden über die Matrix verbunden, wobei jeder Datenausgang drei Zustände annehmen kann, so daß nur die Daten in einem aktivierten RAM ausgegeben wer den. Das höchstwertige Bit (MSB) des (n+1)-Bit-Adressenbusses wird benutzt, um zu steuern, welcher der beiden RAM-Speicher 131a und 131b Daten zum Datenbus 133 übermittelt. Zu diesem Zweck wird es an den CS1-Eingang des Zwischenspeichers 131a angelegt, der den RAM 131a steuert, und an den CS1-Eingang des Zwischenspeichers 136b, der den RAM 131b steuert.
  • Die Funktionsweise des Schaltkreises ist die folgende. Wenn das MSB der Daten vom RAM 142, das dem MSB der kombinierten (n+1)-Bit-Adresse zugeführt wird, gleich 0 ist, dann wird der RAM 131a freigegeben, und der RAM 131b wird gesperrt. Wenn umgekehrt das MSB der Daten vom RAM 142, das dem MSB der kombinierten (n+1)-Bit-Adresse zugeführt wird, gleich 1 ist, dann wird der RAM 131a gesperrt, und der RAM 131b wird freigegeben. Unter Rückgriff auf die in 5 dargestellten Hilfsschaltungen 137 wird das CS1-Eingangssignal einem ersten logischen UND-Gatter 145 zugeführt, dessen Ausgang nur dann aktiv ist, wenn alle Eingänge freigegeben sind. Wie oben festgestellt, werden alle nicht durch die Matrix verbundenen Eingänge automatisch freigegeben, so daß der Ausgang des logischen UND-Gatters 145 aktiv ist, wenn CS1 freigegeben ist, und inaktiv, wenn CS1 gesperrt ist. Ebenso wird das Eingangssignal CS1 einem ersten logischen aktiven UND-Gatter 146 zugeführt, dessen Ausgang nur dann aktiv ist, wenn alle seine Eingänge freigegeben sind (aktives L). Da alle nicht durch die Matrix verbundenen Eingänge automatisch freigegeben werden, ist der Ausgang des logischen UND-Gatters 146 wieder aktiv, wenn CS1 freigegeben ist, und inaktiv, wenn CS1 gesperrt ist. Wenn daher das MSB gleich L ist, dann wird das Signal CS1 des RAM 131a freigegeben, und der RAM 131a ist funktionsfähig, und wenn das MSB gleich H ist, dann wird das Signal CS1 des RAM 131b freigegeben, und der RAM 131b ist funktionsfähig. Wenn folglich der RAM 131a aktiv ist, dann ist der RAM 131b inaktiv, und wenn umgekehrt der RAM 131a inaktiv ist, dann ist der RAM 131b aktiv.
  • Auf genau die gleiche Weise können zwei RAM-Speicher 140 kombiniert werden, in welchem Falle die Signale CS2 und CS2 gleichfalls zur Aufnahme der beiden höchstwertigen Bits der Adresse benutzt werden. Eine solche Erweiterung kann nach Belieben wiederholt werden, um einen RAM zu erzeugen, der so viele adressierbare Speicherplätze aufweist, wie eine bestimmte Anwendung benötigt. Zu beachten ist auch, daß die beiden RAM-Speicher 131a und 131b in 6 mit Adressenbussen von gleicher Größe dargestellt sind. Dies braucht jedoch nicht der Fall zu sein, und eine Anwendung kann, und wird nicht selten, eine Topologie vorschreiben, wo RAM-Speicher mit Adressenbussen von unterschiedlicher Größe kombiniert werden.
  • Das "Taktfreigabe"-Signal kann als Eingabe für die Zelle angesehen werden, obwohl es hauptsächlich für Zwecke der Fehlersuche während des Entwurfs benutzt wird.
  • 7 zeigt schematisch eine Matrix 150, die Ausgänge 151 von D-Zellen mit Eingängen 152 von A-Zellen verbindet. 8 zeigt schematisch eine gesättigte Matrix 155 mit vier Eingangsleitungen und drei Ausgangsleitungen, die in der Schaltung von 7 verwendet werden kann. Die Matrix 155 muß in der Lage sein, jede der Zellenausgangsleitungen 151 mit jeder der Zelleneingangsleitungen 152 in dem Block zu verbinden. Jeder Zellenausgang 151 wird mit einem entsprechenden, durch alphabetische Zeichen a, b, c, d bezeichneten Eingang der Matrix 155 verbunden. Die Matrix 155 dient dazu, die Verbindung jedes Zellenausgangs 151 mit einem oder mehreren Zelleneingängen 152 zu ermöglichen, die durch numerische Zeichen 1, 2, 3 bezeichnet werden. Es gibt praktisch keinen Grund dafür, jeden Zellenausgang 151 mit allen möglichen Zelleneingängen 152 verbinden zu können und auf diese Weise die Verwendung einer Matrix zuzulassen, die nicht. gesättigt ist, wie in 9 dargestellt. Die Verwendung der gesättigten Matrix, wie in 8 dargestellt, vereinfacht jedoch die Automatisierung, und der Betrieb ist in Echtzeit schneller. Obwohl die Zelle aus kleineren Zellen hergestellt werden könnte und in einigen Anwendungen die größere Zelle nicht aufgebaut wird, sind der Ausgang und der Eingang der größeren Zelle vorgegeben.
  • Die Arbeitsweise der gesättigten Matrix 155 ist die folgende. Jeder der Eingänge a, b, c, d ist mit jedem der Ausgänge 1, 2, 3 über entsprechende Schalter verbunden. So sind die Eingänge a, b, c, d über die Schalter a1, b1, c1, d1 mit dem Ausgang 1 verbunden. Ebenso sind die Eingänge a, b, c, d über die Schalter a2, b2, c2, d2 mit dem Ausgang 2 verbunden; und sie sind über die Schalter a3, b3, c3, d3 mit dem Ausgang 3 verbunden. Um den Eingang a mit dem Ausgang 1 zu verbinden, wird der Schalter a1 geschlossen. Um c mit 3 zu verbinden, wird der Schalter c3 geschlossen. Um b sowohl mit 1 als auch mit 3 zu verbinden, werden die Schalter b1 und b3 beide geschlossen. Um sowohl b als auch d sowohl mit 2 als auch mit 3 zu verbinden, werden die Schalter b2, b3, d2 und d3 geschlossen, und so weiter.
  • Jeder Schalter weist eine Steuerleitung (nicht dargestellt) auf, die den Schalter in die "geschlossene" oder "geöffnete" Stellung bringt und mit einem 1-Bit-Speicher verbunden ist, der den Zustand des Schalters speichert. Da in der Praxis sehr viele Schalter vorhanden sind, sind alle Bits, die jeden Schalterzustand speichern, in einer Speicherstruktur angeordnet. Mit anderen Worten, es gibt eine Speichereinheit, welche die Zustände der Schalter speichert. Jedes Bit im Speicher ist mit einer Steuerleitung verbunden, im Speicher sind ebenso viele Bits vorhanden wie Speicher in der Matrix. Auf diese Weise funktioniert der Speicher als Matrixsteuerungsspeicher, um zu steuern, ob der Zustand jedes Schalters geschlossen oder offen ist. In dem obigen Beispiel verbindet die Matrix 155 einen 4-Bit-Datenbus mit einem 3-Bit-Adressenbus. Man wird jedoch einsehen, daß die Matrix 155 ebenso gut mit den Leitungen a, b, c, d, welche die Ausgänge darstellen, und den die Eingänge bildenden Leitungen 1, 2, 3 verbunden sein kann, um einen 3-Bit-Datenbus mit einem 4-Bit-Adressenbus zu verbinden.
  • 9 zeigt schematisch ein Beispiel einer ungesättigten Matrix 156, die mehrere, miteinander verbundene gesättigte Matrizen 155 aufweist, wie in 8 dargestellt, wobei jede Matrix ihren eigenen Speicher aufweist, um jeden von ihren Schaltern zu steuern. Alle Speicher sind als ein großer Speicher organisiert, der als Matrixsteuerungsspeicher funktioniert. Die Programmierung der Matrix wird ausgeführt, indem der Matrixsteuerungsspeicher mit den entsprechenden Daten geladen wird, wie weiter unten beschrieben, und die gewünschte Topologie des Bauelements einstellt.
  • Eine solche Matrix 156, die so konstruiert ist, daß sie eine begrenzte, aber ausreichende Anzahl von Verbindungen aufweist, wird gegenüber einer äquivalenten gesättigten Matrix mit der gleichen Anzahl von Schaltverbindungen bevorzugt, da sie Chipraum einspart, obwohl der Code für die Wahl der Verbindungen (Leitungsführungen) etwas komplizierter ist. Unter der Annahme, daß jede Matrix 155 gesättigt ist, und mit den Bezeichnungen:
    D = Anzahl der Eingangsleitungen zur Matrix,
    A = Anzahl der Ausgangsleitungen der Matrix,
    X = Anzahl der Eingangsmatrizen 155,
    Y = Anzahl der Ausgangsmatrizen 155, und
    Z = Anzahl der Matrizen 155 in der mittleren Spalte werden daher X, Y und Z wie folgt berechnet:
    Figure 00350001
    wobei "Obergrenze" bedeutet, daß ein nicht ganzzahliger Wert auf die nächsthöhere ganze Zahl aufgerundet wird.
  • Jede der Eingangsmatrizen ist mit jeder der Matrizen in der mittleren Spalte verbunden. Jede der Ausgangsmatrizen ist mit jeder der Matrizen in der mittleren Spalte verbunden. Um Einschränkungen durch Querverbindungen zu verhindern, kann Z vergrößert werden. Selbst dann sind die Anzahl der Schalter und der dazugehörige Speicher sehr viel kleiner als die Schalterzahl und der dazugehörige Speicher in einer gesättigten Matrix mit der gleichen Anzahl von Eingangsanschlüssen und Ausgangsanschlüssen. Dies ist besonders wichtig, wenn eine einzige Matrix verwendet wird, um alle Zellen in allen Ebenen zu verbinden. Wegen der Tendenz, eine Kombination von Zellen zur Bildung größerer Zellen zu versuchen, wird man feststellen, daß die Wahrscheinlichkeit, daß der Endanwender zwei Zellen im gleichen Block verbindet, größer ist als die Wahrscheinlichkeit, daß er zwei Zellen in verschiedenen Blöcken verbindet.
  • Bei Verwendung einer solchen einzigen Matrix ist es daher ratsam, während des Entwurfs des Bauelements in Betracht zu ziehen, mit welchen Eingangs- und Ausgangsmatrizen Zellenanschlüsse verbunden werden, da der Endanwender es vorziehen kann, aus diesen Zellen größere Zellen zu bilden. Außerdem ist zu beachten, daß, wenn statt dessen getrennte Matrizen in jedem Block vorgesehen werden, die kumulative Verzögerung für bestimmte Verbindungen wahrscheinlich größer ist als bei Verwendung einer einzigen Matrix. Ferner muß die Notwendigkeit in Betracht gezogen werden, in der Matrix Verbindungen zum Eingang und Ausgang des Bauelements zusätzlich zu den Zwischenverbindungen zwischen den Ausgängen der Zellen und den Eingängen der Zellen herzustellen.
  • Um zu verstehen, wie das Bauelement eingesetzt werden kann, um lediglich durch Auswahl einer erforderlichen Topologie und Herunterladen von Daten in die Speicherelemente jeder Zelle verschiedene Hardwareanwendungen zu implementieren, werden nachstehend verschiedene Beispiele beschrieben. Um die Erläuterung zu erleichtern, basieren einige Beispiele auf der in 3 dargestellten Zelle 110, obwohl das Bauelement bei Verwendung der Zelle 120 von 4 auf die gleiche Weise arbeitet. In den folgenden Beispielen werden Komponenten, die der in 3 dargestellten Zelle und der in 8 dargestellten Matrix gemeinsam sind, durch gleiche Bezugszeichen bezeichnet.
  • Beispiel 1 – Zähler
  • 10 zeigt schematisch einen Zähler 160, der eine Zelle 110 verwendet, die einen RAM 111 mit einem n-Bit-Datenausgabebus 113 aufweist, der einem n-Eingabezwischenspeicher 114 zugeführt wird, dessen Ausgang 115, der den Ausgang der Zelle bildet, mit dem Eingang der Matrix 155 verbunden ist. Jede der n-Ausgangsleitungen der Zelle ist über die Matrix 155 mit einer entsprechenden Adressenleitung des RAM-Adressenbusses 112 verbunden. Der RAM wird mit den folgenden Daten geladen:
    Figure 00370001
  • Im stationären Zustand gibt es eine "Nummer" am Ausgang 115 des Zwischenspeichers 114, welche die "Adresse" des RAM 111 definiert. Daher werden die "Daten" des RAM – die Eingabe des Zwischenspeichers – durch die Tabelle festgesetzt. Für alle Adressen außer der letzten ist das Datenelement in jedem adressierbaren Speicherplatz des RAM gleich dessen Adresse plus eins, und dieses Element wird zur neuen Adresse des nächsten Taktimpulses. Auf diese Weise hält der Zwischenspeicher 114 in jedem Takt des RAM die Adresse des nächsten adressierbaren Speicherplatzes, dessen Datenelement gleich dem aktuellen Datenelement plus eins ist. Nach einer Verzögerungszeit ist der RAM bereit für einen neuen Takt, der Zyklus wiederholt sich, und das Ausgabeelement wird schrittweise inkrementiert.
  • Beispiel 2 – Vorwärts-Rückwärts-Zähler
  • 11 zeigt schematisch einen Vorwärts-Rückwärts-Zähler 165, der im wesentlichen mit dem in 10 dargestellten Zähler identisch ist, mit der Ausnahme, daß der RAM 111 so konstruiert ist, daß er zwei Tabellen in seinen entsprechenden adressierbaren Speicherplätzen speichert. Dies erfordert natürlich, daß der RAM doppelt so groß ist wie derjenige, der in dem Zähler von 10 verwendet wird, oder daß der Bereich des Zählers halb so groß ist. In jedem Fall wird ein Bit der Adresse benutzt, um in dem RAM einen neuen Bereich zur Datenspeicherung festzusetzen, der, wenn er in die übrigen Bits des Adressenbusses eingespeist wird, auf eine neue Adresse zeigt, deren Datenwert gleich der Adresse minus eins ist. Der neue Bereich in dem RAM wird mit den folgenden Daten geladen:
    Figure 00380001
  • Das Vorwärts-Rückwärts-Signal wird außerdem von der Matrix 155 übertragen, ebenso wie alle Eingaben der Zellen.
  • Beispiel 3 – Verzögerung
  • Um eine Verzögerung zu erzielen, ist der RAM redundant. Daher kann der RAM 111 einfach so kodiert werden, daß er die Adresse zu den Daten überträgt, z. B. ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter. Bei jedem Taktsignal wird das Datenelement am Eingang der Zelle gehalten und über den RAM direkt nach außen übertragen, und es wird eine Verzögerung um einen Takt erzielt. Die Konnektivität einer solchen Verzögerung wird außerdem in dem Schieberegister verwendet, das weiter unten im Beispiel 4 beschrieben und in 13 dargestellt wird.
  • Beispiel 4 – Schieberegister
  • 12 zeigt schematisch ein Schieberegister 170, das drei Zellen in einem Block verwendet und entsprechende RAM-Speicher 111a, 111b und 111c aufweist, die jeweils einen n-Bit-Datenausgabebus aufweisen, der einem entsprechenden n-Bit-Eingabezwischenspeicher bzw. -speicherflipflop 114a, 114b bzw. 114c zugeführt wird, dessen Ausgänge 115a, 115b bzw. 115c zu einem 3n-Bit-Ausgabedatenbus 115 zusammengeführt werden, der den Ausgang der Zelle bildet. Die Matrix 155 ist so programmiert, daß sie die (n-1) niedrigstwertigen Bits (LSB) jedes Ausgabedatenbusses 115a, 115b und 115c mit Adreßbits der entsprechenden RAM-Speicher 111a, 111b bzw. 111c verbindet. Ebenso wird das höchstwertige Bit (MSB) jedes Ausgabedatenbusses 115a, 115b bzw. 115c durch die Matrix 155 dem LSB des nächsten RAM-Speichers zugeführt, mit Ausnahme des MSB des Datenbusses 115c, das direkt durch das Schieberegister abgeworfen wird, obwohl es von der Anwendung verwendet werden kann. Die Daten in jedem RAM werden so codiert, daß die Adresse einfach zu den Daten übertragen wird, z. B. ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter, ebenso wie bei der im obigen Beispiel 3 beschriebenen Verzögerung. Die Topologie des Schieberegisters ist so ausgelegt, daß die erforderliche Verschiebung erzeugt wird, und die Matrix 155 ist so programmiert, daß die notwendige Konnektivität erzielt wird.
  • Man wird erkennen, daß die Konnektivität der Matrix 155 der Deutlichkeit halber in 12 nicht dargestellt ist. Damit jedoch die Arbeitsweise des Schieberegisters 170 klar ist, werden nachstehend unter Bezugnahme auf 13 nur die Konnektivität und die Arbeitsweise des RAM-Speichers 111a erläutert, wobei zur Bezeichnung der in 12 dargestellten Komponenten gleiche Bezugszeichen verwendet werden.
  • 13 zeigt ein einzelliges Schieberegister 175 mit einem RAM 111a, der einen 8-Bit-Adressenbus (d. h. n=8) aufweist, und dessen Daten jeweils durch einen Zwischenspeicher 114a gespeichert und durch die Matrix (nicht dargestellt) mit dem nächsthöherwertigen Bit im Adressenbus des RAM-Speichers verbunden werden. Wenn daher die Adreßbits durch A0, A1, A2, ... A7, wobei A0 das LSB und A7 das MSB ist, und die Datenbits durch D0, D1, D2,... D7 bezeichnet werden, wird das niedrigstwertige Datenbit D0 mit dem Adreßbit A1, das Datenbit D1 mit dem Adreßbit A2 verbunden, und so weiter. Das höchstwertige Datenbit D7 wird abgeworfen oder der nächsten Stufe des Schieberegisters zugeführt, wenn mehrere einzellige Schieberegister in Kaskade zu schalten sind, wie in 12.
  • Wie oben festgestellt, werden die Daten im RAM 111a so codiert, daß einfach jedes Adreßbit zu dem entsprechenden Datenbit übertragen wird; z. B. ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter. Auf diese Weise werden die Daten in jeder Adressenleitung einfach durch den RAM 111a aus gegeben und durch den Zwischenspeicher 114a gehalten. Beim nächsten Taktimpuls wird jetzt jedes Datenbit durch die Matrix der nächsten Adressenleitung zugeführt, wodurch in aufeinander folgenden Taktimpulsen Datenelemente, die dem LSB-Adreßbit a0 zugeführt werden, das Schieberegister durchlaufen.
  • Ein alternatives Verfahren, das verwendet werden kann, um ein einzelliges Schieberegister zu implementieren, besteht darin, die Matrix für eine direkte Übertragung der Zeilen zu programmieren, so daß D1 mit dem Adreßbit A1, das Datenbit D2 mit dem Adreßbit A2 usw. verbunden wird. In diesem Fall wird die Verschiebung ausgeführt, indem der RAM mit den folgenden Daten geladen wird.
    Figure 00400001
    und so weiter. Wenn ein umgekehrte Verschiebung erforderlich ist, dann wird der RAM mit den folgenden Daten geladen:
    Figure 00400002
    und so weiter.
  • Man wird erkennen, daß sowohl in dem 3-zelligen Schieberegister von 12 als auch in dem einzelligen Schieberegister von 13 die niedrigstwertige Adressenleitung auch mit der Matrix verbunden ist. Sie wird jedoch in beiden Figuren als "abgetrennt" dargestellt, um die Schiebeoperation hervorzuheben.
  • Außerdem sind die folgenden Punkte zu beachten. Die Höchstgeschwindigkeit dieses Schieberegisters wird durch den Takt bestimmt, dessen Frequenz die Summe aus der Verzögerung einer Zelle und der Verzögerung der Matrix berücksichtigen muß. Mit Rücksicht auf die frühere Diskussion der "Ebenen" sind außerdem die Eingabeanschlüsse und die Ausgabeanschlüsse des Bauelements mit der programmierbaren Matrix der "Ebene 1" verbunden: die Eingabeanschlüsse mit dem Matrixeingang; die Ausgabeanschlüsse mit dem Matrixausgang. Wenn die Anwendung auf der "Ebene 1" implementiert wird, dann kann der Eingabeanschluß, der das LSB des Schieberegisters überträgt, von einem der Eingabeanschlüsse des Bauelements ausgehen, und die Ausgabeanschlüsse 115 können den Ausgabeanschlüssen des Bauelements zugeführt werden. Wenn die Anwendung auf einer anderen "Ebene" als "1" implementiert wird, dann können nur die Anschlüsse vom Port des Blocks auf dieser Ebene zu den E/A-Anschlüssen des Bauelements geführt werden.
  • Beispiel 5 – Rauschgenerator
  • Ein Rauschgenerator kann auf der Basis des in 12 dargestellten Schieberegisters konstruiert werden. Wie dem Fachmann bekannt, kann ein Rauschgenerator gebildet werden, indem einige der Ausgänge des Schieberegisters einer XNOR-Operation unterworfen werden und das Ergebnis der XNOR-Operation zum LSB der Eingabeadresse zurückgeführt wird, um das Schieberegister zu durchlaufen. Die Adressen-Daten-Beziehung in den RAM-Speichern ist so programmiert, daß die XNOR-Operation erzielt wird. In dem einfachen Fall, wo zwei Datenbits des gleichen RAM-Speichers der XNOR-Operation zu unterwerfen sind, ist es einfach, die Daten in dem RAM entsprechend der gewünschten Wahrheitstabelle des Bauelements zu programmieren. Wenn jedoch XNOR-Operation zwischen Datenbits zweier getrennter RAM-Speicher auszuführen ist, dann muß eines dieser Datenbits durch die Matrix angelegt werden, um auch eine Eingabe zu dem anderen RAM zu bilden. Nehmen wir beispielsweise an, daß in dem Schieberegister 170, das in 12 dargestellt ist, die XNOR-Operation auf eines der Datenbits des RAM-Speichers 111a und eines der Bits des RAM-Speichers 111b anzuwenden ist. Die Matrix 155 sollte das erforderliche Datenbit im Ausgang 115b des RAM 111b an den Eingang 112a des RAM 111a anlegen, und das XNOR-Ergebnis muß zu einem der Datenaus gabebits 115a des RAM 111a übertragen werden. Als Ergebnis weist der RAM 111a weniger verbleibende Bits zur Ausführung der Schiebefunktion auf.
  • Beispiel 6 – Bildgenerator
  • Ein Bildgenerator/Signalgenerator ist eine weitere einfache Anwendung und verwendet typischerweise eine Zelle als Zähler, der an eine zweite Zelle angelegt wird, deren Daten so programmiert sind, daß entsprechend dem Zustand des Zählers das erforderliche Bild erzeugt wird. Wenn wir irgendeine Funktion f(t) betrachten, die berechnet oder aufgezeichnet werden kann, dann gibt der Zähler folglich aufeinanderfolgende Werte von t aus, während die zweite Zelle für jeden Wert von t, der ihrem Adressenbus zugeführt wird, den Wert der Funktion f(t) speichert. Die zweite Zelle kann so konfiguriert werden, daß Daten, die sich auf verschiedene Funktionen beziehen, in verschiedenen Abschnitten des RAM gespeichert werden, wobei diese nach Bedarf durch einen Auswahlcode ausgewählt werden, der in andere freie Adressenbits der Zellen eingespeist wird. Die Zählerzelle, die programmierbar ist, kann verschiedene Zyklen für die unterschiedlichen Signale (Bildmuster) einstellen. Wenn die Menge der Datenbits in der Zelle kleiner ist als die Anzahl der benötigten Bits, kann eine weitere Zelle benutzt werden, um den anderen Teil des Signals zu erzeugen: eine Zelle, die den MSB-Teil des Signals erzeugt, und die andere, die den LSB-Teil erzeugt.
  • Nachstehend werden verschiedene Beispiele dargestellt, in denen die in 4 dargestellte Zelle 120 benutzt wird.
  • Beispiel 7 – Dreizustandsfähigkeit der Zelle
  • 14 zeigt schematisch ein Zellenpaar 180a und 180b, das zwei RAM-Speicher 181a und 181b mit entsprechenden Datenausgabebussen 182a und 182b aufweist, die beide durch die Matrix (nicht dargestellt) mit einem gemeinsamen Datenbus 182 verbunden sind. Jeder Zellenausgang kann in einen Dreizustandsmodus gesteuert werden. Es ist ratsam, die Dreizustandsfähigkeit der Zelle zu verwenden, wenn Multiplexer benötigt werden. In einer Multiplexer-Implementierung werden die Ausgänge der anzuschließenden Zellen über die Matrix dem gleichem Punkt zugeführt. Der RAM 181a weist einen (n+m)-Adressenbus 183a und 183b auf, dessen entsprechende Adressenleitungen durch ein Paar Zwischenspeicher 184a bzw. 184b gehalten werden, während der RAM 181b einen k-Bit-Adressenbus 183c aufweist, dessen entsprechende Adressenleitungen durch einen Zwischenspeicher 184c gehalten werden. Zu beachten ist, daß der scheinbare Unterschied zwischen den Zwischenspeicherkonfigurationen der beiden RAM-Speicher nur auf dem Papier existiert, da k gleich m+n sein kann und die Zwischenspeicher 184a und 184b dann als ein einziger k-Bit-Zwischenspeicher arbeiten, analog zu dem Zwischenspeicher 184c. Die an die beiden RAM-Speicher 181a und 181b angelegten Ausgabefreigabesignale wählen aus, welcher RAM aktiv ist. Die Ausgabefreigabesignale werden auch über die Matrix zugeführt.
  • Wie aus 9 erkennbar, ist die Anzahl Z der Matrizen 155 in der mittleren Spalte die entscheidende Zahl zur Verhinderung von Querverbindungsbeschränkungen. Wenn jedoch die Ausgänge einiger Zellen an den gleichen Punkt anzuschließen sind, können Leitungen in dieser mittleren Spalte freigemacht werden. Daher können die Zellen 180a und 180b über eine Matrix in der ersten Spalte an einen gemeinsamen Ausgang der Matrix angelegt werden, wodurch der gemeinsame Ausgang dieser Matrix nur. über eine einzige Matrix in der zweiten Spalte an einen Ausgang der Matrix 156 angeschlossen werden kann und daher weniger Leitungen der Matrix benutzt werden. Dies ist dem Anschluß jeder der Zellen 180a und 180b an entsprechende Leitungen in der mittleren Matrix und dem anschließenden Ausführen der Querverbindung vorzuziehen.
  • Da die Matrix den Ausgang jeder Zelle, z. B. der Zelle 180a, an die Daten jedes anderen RAM-Speichers in dem Block anschließen kann, z. B. des RAM-Speichers in der Zelle 180b (die Daten jedes RAM-Speichers sind auch die Ausgabe seiner Zelle), wenn sich die andere Zelle 180b im Dreizustandsmodus befindet, während die erste Zelle 180a aktiv ist, kann eine Schreiboperation in den RAM 181b in der Zelle 180b ausgeführt werden. Der Schreibimpuls kann in jedem Zyklus aktiviert werden, aber die von der Matrix zugeführte Schreibfreigabe aktiviert oder deaktiviert den eigentlichen Schreibvorgang.
  • Beispiel 8 – "RAM-Server"-Kombination
  • 15 zeigt eine "RAM-Server"-Kombination 190, die einen Server 191 und einen RAM 192 einschließt und die weiter oben unter Bezugnahme auf 14 beschriebene Schreibfähigkeit nutzt. Der Server 191 ist eine Zelle, die eine Funktion ausführt, während der RAM 192 Ergebnisse des Servers speichert, die in anschließenden Server-Operationen verwendet werden sollen. Die erforderliche Konnektivität zwischen dem Server 191 und dem RAM 192 wird durch die Matrix bewirkt, die der Deutlichkeit halber in der Figur nicht dargestellt ist.
  • Ein Beispiel für die Verwendung der RAM-Server-Kombination ist das folgende. Der RAM-Server 191 empfängt einen Eingabestrom von Bytes und muß zählen, wie oft jedes Byte (von möglichen 256 verschiedenen Bytes) in einer Periode auftritt. (Dieses Beispiel ist ein Teil der Huffman-Code-Anwendung). Der Eingabestrom wird einem Eingang 193 der "RAM-Server"-Kombination 190 zugeführt, der wie folgt funktioniert. Der RAM 192 speichert die Ergebnisse pro Byte, und der Server 191 inkrementiert das Ergebnis um eins. Auf diese Weise empfängt der RAM 192 eine Serie von 8-Bit-Zahlen (zwischen 0 und 255), und der RAM-Server 190 kompiliert und speichert im RAM 192 ein Histogramm, das die Auftrittshäufigkeit jeder 8-Bit-Zahl darstellt.
  • Es treten die folgenden Operationen auf:
    • (a) Das aktuelle Byte wird abgetastet und in den RAM der Eingabezelle eingegeben, und die im RAM gespeicherte Zahl ist abrufbereit.
    • (b) Diese Zahl wird im Server der Zelle gehalten. Der Server ist so programmiert, daß er die Zahl erhöht (ähnlich dem in 10 dargestellten Zähler).
    • (c) Das erhöhte Datenelement wird im RAM der Zelle gespeichert.
  • 16 zeigt ein mögliches Taktdiagramm für die obige Implementierung, welches zeigt, daß die Operation in nur zwei Zyklen ausgeführt werden kann, da der Zyklus "Schreiben" im gleichen Zyklus ausgeführt werden kann, in dem ein neues Byte gehalten wird. Obwohl in dieser Zeitsteuerungslösung Echtzeit vergeudet wird, da der Haupttakt ein wenig größer sein sollte, um die Schreiboperation in zwei Zyklen zu aktivieren, kann dies trotzdem gerechtfertigt sein, da eine "RAM-Server"-Kombination manchmal die Implementierung einer Anwendung vereinfachen kann. Alle in 16 dargestellten erforderlichen Signale können durch andere Zellen erzeugt werden, die für die Ausführung der Strukturerzeugung konfiguriert sind, wie oben erläutert, und über die Matrix gespeist werden.
  • Wenn das Bauelement mit einem Taktzyklus entworfen wird, der zu kurz ist, um die obige Implementierung zuzulassen, kann eine RAM-Server-Kombination mit Dreitaktzyklus verwendet werden, wie sie nachstehend unter Bezugnahme auf 17 und das entsprechende, in 18 dargestellte Taktdiagramm beschrieben wird. In 17 ist also eine RAM-Server-Kombination 200 dargestellt, welche die gleiche Anwendung wie die oben unter Bezugnahme auf 15 beschriebene ausführt und einen Zellen-Server 201 aufweist, der mit einem Zellen-RAM 202 gekoppelt ist, welcher mit der Zelle in 5 identisch ist. In diesem Fall müssen im dritten Taktzyklus die Daten für die Schreiboperation invariant gehalten werden, um den gleichen Wert beizubehalten wie die Ausgabe des Zellen-Servers 201 während des vorhergehenden Taktzyklus. Da die Ausgabedaten des RAM-Speichers des Zellen-Servers 201 zum Adressenbus des Zellen-Servers 201 zurückgeführt werden, würden sie andernfalls durch den darin enthaltenen Zähler nochmals inkrementiert werden. Daher wird in diesem Fall im dritten Zyklus das Taktsignal deaktiviert. In diesem Fall wird jedoch auf das Taktfreigabesignal verzichtet, und statt dessen wird dem Eingang des Zellen-Servers 201 ein zusätzliches Adressenbit zugeführt, das in 17 als "Addiere Eins" dargestellt ist, als Anweisung, im dritten Zyklus keine Änderung auszuführen.
  • Ein drittes Zeitsteuerungsschema kann auf der Tatsache basieren, daß die Codierung der RAM-Adresse vor der Schreiboperation bereit ist, so daß zu erwarten ist, daß die Schreibdauer kürzer ist als die Lesedauer. Daher wird die Operation mit zwei Taktzyklen bevorzugt. Es kann jedoch eine Operation mit drei Taktzyklen implementiert werden, wie in 18 dargestellt. Der "L-H"-Taktübergang kann so "verschoben" werden, daß er nach dem Ende der Leseoperation erfolgt, wodurch ein schnellerer Taktzyklus erzeugt wird. Wie oben festgestellt, können die Eingabesignale durch andere Zellen erzeugt und durch die Matrix angelegt werden.
  • Aus den obigen Erläuterungen anhand von 17 folgt, daß die Taktfreigabe für den RAM-Server 201 nicht wesentlich ist, und daher kann auch dann, wenn in dem Bauelement keine Taktfreigabe erfolgt, der RAM-Server 201 dennoch implementiert werden. Die Entscheidung, ob eine Taktfreigabe erfolgt oder nicht, ist nicht so sehr von der Notwendigkeit abhängig, jeder Zelle ein weiteres logisches UND-Gatter für die Taktfreigabe hinzuzufügen, sondern vielmehr von der Notwendigkeit, die programmierbare Matrix zu vergrößern.
  • Die Erzeugung eines schnelleren Taktzyklus kann dazu führen, daß manche Anwendungen schneller ausgeführt werden, aber wenn dies bei der in 27 dargestellten "RAM-Server"-Anwendung der Fall ist, muß die Eingabe mit dem Dreizyklustakt synchronisiert werden; daher ist zu erwarten, daß sie langsamer ausgeführt wird.
  • Beispiel 9 – Timesharing
  • Um eine Anwendung zu implementieren, sind normalerweise mehrere Zellen erforderlich. Beim Timesharing (Zeitschachtelung) wird die gleiche Operation für mehrere unabhängige Eingaben ausgeführt, die der Implementierung nacheinander auf dem gleichen Eingabekanal zugeführt werden. Um eine Timesharing-Anwendung mühelos zu implementieren, ist jede einzelne Zellenausführungslogik durch die "RAM-Server"-Kombination zu ersetzen, die oben anhand von 15 oder 17 beschrieben wurde, wobei der "Server" als Zellenausführungslogik verwendet wird und der RAM dazu dient, den Zustand jedes Zeitschlitzes zu speichern. Der Eingang jedes RAM-Speichers ist mit einem globalen Zähler verbunden, der die Schlitze/Kanäle des die Anwendung verwaltenden Timesharings zählt. Der Zähler kann eine der Zellen oder ein Spezialzähler sein, der über die programmierbare Matrix mit allen RAM-Speichern der "RAM-Server"-Kombinationen verbunden wird, welche die zeitlich geschachtelte Implementierung ausführen. In der bevorzugten Architektur gibt es keinen Spezialzähler, weshalb, wenn Timesharing benö tigt wird, eine Zähleranwendung (eine oder mehrere Zellen) implementiert werden sollte.
  • 19 zeigt ein Beispiel für ein Schieberegister 210, das im Timesharing-Modus arbeitet und einen Timesharing-Zähler 211 verwendet. Das Schieberegister 210 weist zwei RAM-Server-Kombinationen 212, 214 bzw. 213, 215 auf, welche die L- bzw. H-Teile der kombinierten Schiebeoperation auf ähnliche Weise ausführen, wie weiter oben anhand von 12 beschrieben, wobei das höchstwertige Bit (MSB) des RAM 214 dem Eingang des Servers 213 zugeführt wird. Timesharing-Zellen 214 bzw. 215 sind mit den Servern 212 bzw. 213 verbunden, um die L- bzw. H-Teile bezüglich jedes Zeitschlitzes der Schieberegister-Abtastwerte zu speichern. Die RAM-Server 212, 214 und 213, 215 arbeiten, wie oben anhand von 15 oder 17 und ihrer Taktdiagramme in 16 bzw. 18 erläutert. Der Timesharing-Zähler 211 ist mit den Zwischenspeichern in den Zellen 214 und 215 auf eine Weise verbunden, die dem in 15 bzw. 17 darstellten Anschluß des Eingabebytes der RAM-Server 190 und 200 ähnlich ist. Die gesamte Operation weist nur dann zwei Zyklen auf, wenn der bevorzugte "Zweizyklen"-Betrieb gewählt wird, wie weiter oben unter Bezugnahme auf 16 erläutert wurde und nachstehend anhand von 20 weiter demonstriert wird.
  • Die Arbeitsweise der Anwendung ist die folgende. Die beiden "Server"-Zellen 212 und 213 realisieren die Schieberegister-Implementierung, wie oben erläutert. Der Timesharing-Zähler 211 arbeitet als globaler Zähler, der die Timesharing-Schlitze/Kanäle zählt.
  • 20 zeigt ein Taktdiagramm, das die Zeitsteuerungsoperation darstellt, wobei "N → 1" "Verschieben um 1" symbolisiert, wodurch dargestellt wird, daß die folgenden Operationen auftreten:
    • (a) Da für den globalen Zähler und für die Bereitstellung des Haupttaktsignals für den Rest der Implementierung der gleiche Takt verwendet wird, sollte der globale Zähler sein LSB-Bit nicht den Timesharing-Zellen 214 und 215 zuführen. Daher stellen die 'n' höchstwertigen Leitungen im globalen Zähler ei nen Zweizykluszähler dar. Das LSB kann benutzt werden, um das Ausgabefreigabesignal 'OE' der Timesharing-Zellen 214 und 215 und der RAM-Server 212 und 213 zu steuern.
    • (b) Wie aus 10 erkennbar, können mehr als eine Zelle zur Implementierung des Zählers verwendet werden (wenn die Anzahl der Datenbits kleiner ist als die benötigte Anzahl der 'n+1'-Bits).
    • (c) Im ersten Zyklus, wenn die alten Daten zu lesen sind, werden die Ausgänge der Timesharing-Zellen 214 und 215 freigegeben, und die Ausgänge der RAM-Server 212 und 213 werden deaktiviert.
    • (d) Im nächsten Zyklus werden die Ausgänge der Timesharing-Zellen 214 und 215 deaktiviert, während ihre Schreibfreigabesignale aktiviert und die Ausgänge der RAM-Server 212 und 213 aktiviert werden. Als Ergebnis werden jetzt die Daten, die dem aktuellen Zustand der RAM-Server 212 bzw. 213 entsprechen, in die Timesharing-Zellen 214 bzw. 215 in den Speicherplätzen eingeschrieben, die durch den Wert des Timesharing-Zählers 211 adressiert werden.
    • (e) Der Timesharing-Zähler, der als globaler Zähler arbeitet, wird in beiden Zyklen aktiviert.
  • Beispiel 10 – "RAM-Server" in Timesharing-Umgebung
  • 21 zeigt eine "RAM-Server"-Kombination 220, die in einer Timesharing-Umgebung arbeitet, um das weiter oben anhand von 15 beschriebene Beispiel zu implementieren. Die RAM-Server-Kombination 220 weist einen Zellen-Server 221 und einen Zellen-RAM 222 mit einem RAM 223 und einem Zwischenspeicher 224 auf, deren Funktion weiter oben unter Bezugnahme auf 15 der Zeichnungen erläutert wurde. Ein globaler Timesharing-Zähler 225 ist nur mit dem Zellen-RAM verbunden. Als Beispiel wird der RAM-Server 190, der weiter oben anhand von 15 der Zeichnungen beschrieben wurde, zusätzlich mit Timesharing versehen, um zu ermöglichen, daß getrennte Bereiche des RAM in dem Zellen-RAM 222 entsprechenden Timesharing-Schlitzen zugeordnet werden.
  • Es treten die folgenden Operationen auf:
    • (a) Der globale Zähler 225 wird inkrementiert, wobei seine 'n' höchstwertigen Bits (MSB) den aktuellen Schlitz definieren, der den Bereich (d. h. die 'n' höchstwertigen Bits der Adresse) innerhalb des RAM 223 definiert, aus dem Daten gelesen werden sollen.
    • (b) Die Zahl wird im RAM 223 in dem Speicherplatz innerhalb des definierten Bereichs gespeichert, auf den die 'k' niedrigstwertigen Bits der Adresse zeigen, die vom Zwischenspeicher 224 in den RAM 223 eingespeist wird. Der "Server" 221 wird programmiert, die Zahl zu inkrementieren.
    • (c) Die inkrementierte Zahl wird im Zellen-RAM 222 in dem Speicherplatz abgelegt, der durch den Wert des Timesharing-Zählers und die Zwischenspeicher-Eingabe adressiert wird.
  • Diese sich wiederholende Operation kann in zwei Zyklen ausgeführt werden, da das Schreiben im gleichen Zyklus erfolgen kann, in dem ein neues Byte und der Inhalt des Timesharing-Zählers gehalten werden.
  • Beispiel 11 – Erzeugen von Zellen mit größerer Datenbitmenge
  • Weiter oben ist anhand von 6 erläutert worden, wie eine Zelle aus zwei Zellen gebildet werden kann, um den Adressenbus der Zelle zu vergrößern. 22 zeigt, wie eine Zelle 230 aus zwei Zellen 231 und 232 gebildet werden kann, um den Datenbus der Zelle zu vergrößern. Die Adressenbusse der beiden Zellen 231 und 232 werden parallel geschaltet, wodurch die Adresse der beiden Zellen 231 und 232 identisch ist. Beide Zellen 231 und 232 werden so programmiert, daß das Ergebnis einer gewünschten Funktion zwischen den beiden Zellen aufgeteilt wird. Wenn nötig, können die Adressenbusse von mehr als zwei Zellen parallel geschaltet werden, wobei jeder Bus so programmiert wird, daß er verschiedene Abschnitte der ausgegebenen Funktion erarbeitet. Alle Verbindungen werden unter Benutzung der programmierbaren Matrix hergestellt. Zu beachten ist, daß es bei Verwendung der in 9 dargestellten Matrix viele Möglichkeiten gibt, die erforderlichen Verbindungen un ter Benutzung der Matrix herzustellen. Wenn die zu verknüpfenden Zellen mit der gleichen gesättigten Matrix in der Spalte 'X' verbunden werden, kann die Verbindung direkt in dieser Matrix ausgeführt werden, wodurch Matrixressourcen eingespart werden, indem keine Schalter von den 'Z'- oder 'Y'-Schaltern verwendet werden. Die Verbindung könnte auch in der Spalte 'Z' hergestellt werden, wodurch wieder eingespart wird, oder die Verbindung könnte in der Spalte 'Y' hergestellt werden.
  • Streng genommen läßt sich argumentieren, daß das Hinzufügen von Datenbits zu einer Zelle, deren gesamte Datenbits bereits genutzt werden, nicht durch Vergrößern der Zelle erreicht werden kann, da die Daten tatsächlich zwischen mehr als einer Zelle aufgeteilt werden. Es wird jedoch kein Unterschied zwischen den Teilzellen einer Verbundzelle und einer äquivalenten größeren Zelle gemacht.
  • Der Ladevorgang
  • Es gibt verschiedene Möglichkeiten zum Laden des Codes in die Zellen. Zum Beispiel kann die Matrix so programmiert werden, daß das gesamte Bauelement als ein RAM konfiguriert ist. Dann können durch einen Hauptrechner oder eine andere elektronische Implementierung Daten auf die gleiche Weise wie beim Schreiben in irgendeinen Speicher in diesen RAM geladen werden, wonach die Matrix wieder so programmiert werden kann, daß sie die erforderliche Konnektivität bewirkt.
  • 23 zeigt schematisch ein Bauelement 240, das für das Laden von Daten in dem Fall, wo der Hauptrechner (nicht dargestellt) nicht den gesamten Adressenraum des RAM abbilden kann, oder für Zwecke der Fehlersuche konfiguriert ist. Zu diesem Zweck ist das Bauelement in mehrere RAM-Speicher, von denen drei dargestellt und mit 241, 242 und 243 bezeichnet sind, und entsprechende Zwischenspeicher 244, 245 und 246 unterteilt, die mit dem Hauptrechner über eine programmierbare Matrix 250 verbunden sind. Eine Hilfsschaltung 251 ist mit den Zwischenspeichern 244, 245 und 246 verbunden und ist verantwortlich für das Einspeisen von Logiksignalen vom Hauptrechner, um Taktfreigabesignale (CE-Signale) in die Zwischenspeicher einzuspeisen.
  • Die Adressen- und Datenbits des Matrixsteuerungsspeichers (nicht dargestellt) werden an den Außenanschluß des Bauelements 240 angelegt. Diese Verbindung ermöglicht, daß der Hauptrechner die Matrix 250 programmiert (steuert), so daß der Hauptrechner den Speicher des Matrixsteuerungsspeichers in seinen Speicherbereich abbildet und die programmierten Konnektivitätsdaten dorthin herunterlädt, während die CE-Signale benutzt werden, um zwischen den RAM-Speichern zu "blättern".
  • Die für das Laden benutzten Stifte können bei Anwendungen, die keine Umschaltungen erfordern, die gleichen Stifte sein wie für die Eingabe/Ausgabe (E/A). Der Grund dafür ist, daß, wenn dem Matrixsteuerungsspeicher kein Schreibimpuls zugeführt wird, keine Änderung am Zustand der Schalter erfolgt. In einem solchen Fall müssen die E/A-Stifte während des Ladens abgetrennt (d. h. ausgeschaltet) werden.
  • Die Hilfsschaltung 251 wird verwendet, um bei der Fehlersuche den Takt der Zwischenspeicher freizugeben oder zu sperren. Wenn das Taktfreigabesignal (CE-Signal) an die Matrix 250 angelegt wird, wird die Hilfsschaltung 251 nicht benötigt, da das Taktfreigabesignal (CE-Signal) über die Matrix zugeführt werden kann, wodurch jede Zelle getrennt getaktet und der erwünschte Zustand geladen werden kann.
  • Für diese Logik gibt es keine Echtzeit-Überlegung, da sie typischerweise nicht für Echtzeitbetrieb entworfen wird. Wenn aber ein Echtzeit-"Taktfreigabe"-Signal benötigt wird, dann wird dessen Integration in die "Matrix der Ebene 1" empfohlen.
  • Überlegungen zur Auswahl einer bevorzugten Architektur Die Größe des Chips ist der kritische Parameter. Je kleiner die Zellen und je größer der Block, desto größer ist die Flexibilität, desto besser die Nutzung und desto besser die Leistungsfähigkeit, aber desto größer ist die Matrix. Um die Matrix zu verkleinern, werden Ebenen hinzugefügt. Wie oben festgestellt, kann eine Zelle aus anderen Zellen von niedrigerer Ebene aufgebaut werden, obwohl zu beachten ist, daß nicht alle Zellen in einer Ebene diese Fähigkeit haben müssen.
  • Ein erstes Beispiel einer möglichen Architektur für die 0,25 μm-Technologie sind 300 Zellen von 4096 Bytes (12 Bits Adresse, 8 Bits Daten) in Ebene 1, und 64 Zellen von 512 Bytes (9 Bits Adresse, 8 Bits Daten) in jedem Block der Ebene 2. Ein zweites Beispiel ist außerdem die Bildung von Blöcken der Ebene 2 aus 64 Zellen von 2048 Bytes bis zu 128 Zellen von 512 Bytes. In der Ebene 2 werden nicht mehr als zehn Blöcke implementiert. In der Ebene 0 werden alle Zellen in eine Zelle umgewandelt (ein Speicher oder eine Nachschlagetabelle).
  • Ein drittes Beispiel einer möglichen Architektur basiert auf 20 Zellen von je 64 KByte in nur einer Ebene. Da in der Ebene 0 alle Zellen in eine Zelle umgewandelt werden, ist in diesem Beispiel wieder die Matrix klein und kann daher gesättigt sein. Diese drei Beispiele demonstrieren einige Unterschiede zwischen möglichen Architekturen. In diesen drei Beispielen ist die Chipgröße annähernd die gleiche. In den ersten beiden vorgeschlagenen Architekturen kann die Ebene 1 aus nur etwa 18 Speichern mit Zellen von je 64 KByte bestehen; da es aber eine Menge kleinere Zellen gibt, ist die Nutzung besser, und es ist zu erwarten, daß das Gesamtergebnis besser als bei den meisten Anwendungen ist.
  • Echtzeitberechnungen unter Verwendung eines Beispiels für die Zellenverbindung
  • In der 0,25 μm-Technologie ist zu erwarten, daß die Zykluszeit einer Zelle typischerweise kürzer als 10 ns ist, was daher in der folgenden Berechnung als Beispiel angenommen wird. Alle Zellen sind synchronisiert und arbeiten parallel. Daher führt jede der Zellen in dem Bauelement in 10 ns einen Befehl aus. Dies bedeutet, daß, wenn alle durch die Zellen ausgeführten parallelen Befehle als eine Anweisung angesehen werden, die Verarbeitungsgeschwindigkeit 100 MIPS (100 Millionen Anweisungen pro Sekunde) beträgt.
  • 24 zeigt schematisch ein Bauelement 260, das einen 8-Bit-Befehl ausführt und dazu dient, auf der Basis von gewöhnlich angewandten Berechnungen einen besseren Zusammenhang mit der tatsächlichen Verarbeitungsleistung herzustellen. In dieser Konfiguration kann das Bauelement 260 einen 8-Bit- Befehl ausführen, der in einen Zwischenspeicher 261 eingegeben wird, und kann auf ein 8-Bit-Ergebnis eines früheren Befehls Bezug nehmen.
  • Angenommen, in einer 64 KByte-Architektur werden 100 Zellen mit einer Größe von je 4 KByte in Zellen umgewandelt, die einen 16-Bit-Adressenbus (d. h. 64 K) und einen 8-Bit-Datenbus aufweisen, dann sind 18 derartige Zellen vorhanden, wobei weitere Ersatzzellen übrig bleiben, die für Timesharing und andere kleine Aufgaben verwendet werden können. Angenommen, jede der 18 Zellen kann einen 8-Bit-Befehl ausführen, dann kann das komplette Bauelement 260 1800 MIPS ausführen, wobei jede Anweisung aus 8 Bits besteht. In der Praxis haben im allgemeinen nicht alle Zellen die Größe von 64K × 8, und es gibt eine größere Anzahl von kleineren Zellen, die gleichfalls parallel Befehle ausführen, wodurch die effektive Anzahl der MIPS weiter vergrößert wird.
  • Zu beachten ist, daß wegen der größeren Zellenzahl die Verzögerung um so größer sein kann, je höher die Arbeitsgeschwindigkeit (MIPS) ist. Als Beispiel betrachten wir den Rauschgenerator, der weiter oben unter Bezugnahme auf das in 12 dargestellte Schieberegister beschrieben wurde. Erst nach 3n-1 Zyklen (d. h. für n=8, nach 23 Zyklen) ist das Schieberegister mit den Eingabebits voll aufgefüllt, so daß sein Ausgangssignal als das erforderliche Rauschsignal verwendet werden kann. Wenn man daher annimmt, daß jeder Zyklus eine Dauer von 10 ns hat, dann beträgt die Gesamtverzögerung 230 ns. Danach wird alle 10 ns ein neuer Rauschabtastwert ausgegeben. Diese Art der Verzögerung ist in Hardware- und DSP-Implementierungen normal; z. B. bei der Implementierung eines Filters.
  • Verschiedene Zellenkonfigurationen
  • In der vorstehenden Beschreibung des Bauelements enthielten alle Zellen sowohl einen RAM als auch einen Zwischenspeicher. Nichtsdestoweniger kann die Bauelementarchitektur unter Verwendung von Zellen implementiert werden, deren Konstruktion sich von den oben beschriebenen unterscheidet. Wenn z. B. keine Rückkopplung benötigt wird, läuft eine auf dem Bauelement 100 betriebene Anwendung (dargestellt in 2) schneller auf dem gleichen Bauelement ohne die Zwischenspeicher.
  • Beispiel 12 – Autonome RAM-Zelle
  • 25 zeigt eine Zelle 270, die nur einen RAM 271 und eine dazugehörige Hilfsschaltung 272 aufweist, wie weiter oben anhand von 5 beschrieben. 26 zeigt ein 8-Bit-Addierglied 275, das eine solche Zelle verwendet und ein Paar 8-Bit-Eingabedatenbusse 276 und 277 für die Addition von zwei Operanden A und B sowie einen 9-Bit-Ausgabedatenbus aufweist, der das Additionsergebnis überträgt. In einer solchen Anwendung ist keine Zeitsteuerung erforderlich, da die Ausgabe einfach den Zustand der beiden Eingänge widerspiegelt und daher kein Zwischenspeicher erforderlich ist.
  • Das in 26 dargestellte 8-Bit-Addierglied 275 zeigt eine Grundlösung, wobei die 9-Bit-Summe von zwei 8-Bit-Eingaben in nur einen RAM der erforderlichen Größe einprogrammiert ist, der durch die Matrix konfiguriert wird. Die Anwendung in einer solchen Konfiguration verwendet das Äquivalent eines 64K-RAM-Speichers mit 9-Bit-Wörtern. Die Lösung kann optimiert werden, um den benutzten RAM-Speicherplatz zu vermindern.
  • 27 zeigt ein besser optimiertes Addierglied 280, das zwei Eingaben von je 18 Bit addiert und an seinem Ausgang eine 19-Bit-Summe erzeugt. Statt der Verwendung nur eines RAM-Speichers, wie in 26 dargestellt, werden mehrere Zellen 281, 282, 283 und 284 der ersten Stufe für die Addition der 18-Bit-Eingaben, die, wie erkennbar ist, in Operanden mit 5-Bit- und 3-Bit-Komponenten aufgeteilt werden, und für die Erzeugung von einem oder zwei Übertragsbits programmiert. Die Überträge und die entsprechenden Ausgaben der ersten Stufe werden dann mit Hilfe geeigneter Zellen 285, 286 und 287 der zweiten Stufe summiert. In einer solchen Anordnung tritt wegen der zwei Stufen, die zur Ausführung der Addition benutzt werden, eine zweistufige Verzögerung zwischen dem Einspeisen der Eingabeoperanden und der Ausgabe des Ergebnisses auf. Das LSB wird direkt über das Addierglied 281 der ersten Stufe einge speist und unterliegt keiner zusätzlichen Verzögerung. Wenn erforderlich ist, daß es der gleichen zweistufigen Verzögerung unterliegt wie die übrigen Bits, dann kann es direkt über das Addierglied 284 der ersten Stufe eingespeist werden, um es einer zusätzlichen Verzögerung auszusetzen und dadurch an die Verzögerung der übrigen Ausgabebits anzupassen.
  • Eine solche Lösung eignet sich für die beiden Bauelemente, die oben unter Bezugnahme auf 5 und 25 beschrieben wurden. Wenn das 18-Bit-Addierglied so konfiguriert ist, wie in 27 dargestellt, verwendet die Anwendung das Äquivalent eines RAM-Speichers von weniger als 7 KByte, d. h. wesentlich weniger als das in 26 dargestellte, nicht optimierte 8-Bit-Addierglied, wenn auch aus den oben erwähnten Gründen eine Verzögerung mehr vorhanden ist als in der nicht optimierten Lösung.
  • Beispiel 13 – Aus Teilkomponenten bestehendes Bauelement
  • In den früheren Beispielen des in 12 dargestellten Laufzeit- oder Schieberegisters wird nur der Zwischenspeicher innerhalb der Zelle genutzt, und der RAM wird nicht benötigt. Im Gegensatz dazu gibt es, wie weiter oben anhand von 25 erläutert, Anwendungen, die RAM-Speicher, aber keine Zwischenspeicher erfordern. Daher können einige von den Zellen in ihre Komponenten zerlegt werden, so daß jede Komponente getrennt eingesetzt werden kann. Durch Kombination der Komponenten mit Hilfe der Matrix kann dennoch die ursprüngliche Zellenkonstruktion realisiert werden. Wenn dies gewünscht wird, kann eine Zelle zusätzliche Teilkomponenten enthalten.
  • 28 zeigt ein Beispiel eines Zwischenspeichers 290, der unabhängig von dem in 25 dargestellten RAM 270 verwendet werden kann, nötigenfalls aber damit kombiniert werden kann, um die in 5 dargestellte Zelle zu realisieren.
  • Beispiel 14 – Bauelement mit unabhängigen Taktsignalen
  • Wie oben erläutert, kann ein Block als ein Bauelement angesehen werden. Daher ist es nicht wesentlich, einen Takt für das komplette Bauelement zu haben, und jeder Block kann seinen eigenen, selbständigen Takt aufweisen. Wie gleichfalls früher erläutert, kann der Block in eine Zelle umgewandelt werden, so daß jede Zelle ihren eigenen, unabhängigen Takt aufweisen kann.
  • Wenn zwei Blöcke verschiedener Typen zu einem Bauelement kombiniert werden, kann ein Takt für einen Block, aber nicht für den anderen vorgesehen werden. Daher können eine Anzahl von Takteingangssignalen vom Eingang des Bauelements über die Matrix zu jedem Block oder jeder Zelle geleitet werden, um die volle Auswahl erforderlicher Taktantwortsignale bereitzustellen.
  • Beispiel 15 – Einzelschrittbetrieb
  • Der Einzelschrittbetrieb wird für Zwecke der Fehlersuche gebraucht und ermöglicht die Verfolgung des Implementierungszustands für jeden Operationsschritt. Ein solches Merkmal ermöglicht das Austesten einer Hardwareanwendung mit Verwendung des erfindungsgemäßen Bauelements auf analoge Weise wie bei der Korrektur von Softwareprogrammen mit Hilfe von Fehlersuchprogrammen. Ebenso wie ein Softwareprogramm, wann immer dies erforderlich ist, angehalten werden kann, seine Variablen verfolgt und geändert werden können und das Programm dann entweder von dem Punkt, wo es angehalten wurde, oder von irgendeinem anderen Punkt im Programm neu gestartet werden kann, bietet die Erfindung Werkzeuge, um das Hardwarebauelement auf analoge Weise auszutesten.
  • Wenn ein Bauelement von dem Typ ist, der kein Taktsignal aufweist, wie z. B. bei dem in 27 dargestellten Addierglied, und wenn die Implementierung keine Rückkopplung aufweist, dann wird der Einzelschrittbetrieb durch schrittweises Weiterschalten der Eingabe erreicht. Wenn die Implementierung eine Rückkopplung aufweist, können nur die stationären Zustände ohne Zusatzwerkzeuge verfolgt werden. Eine weitere Möglichkeit könnte die Verwendung eines Adreßbits sein, um die Zellen zu einem anderen Speicherbereich zu übertragen, in dem der aktuelle Zustand gehalten werden kann.
  • Wenn ein Bauelement ein Taktsignal aufweist und ein Einzeltaktbetrieb benötigt wird, muß eine Synchronisation zwischen der langsamen Eingabesteuerung und der schnellen Hardware-Reaktion erzielt werden. Eine Möglichkeit ist die Verwen dung eines langsameren externen Taktsignals als Takt für das Bauelement.
  • 29 zeigt eine weitere Lösung, wobei das Taktsignal nicht extern eingespeist werden kann und das Taktfreigabesignal (CE) zur Einstellung der effektiven Taktfrequenz benutzt wird. Die Zelle ist so programmiert, daß sie die folgenden Zustände aufweist:
    im Eingangssignal (xy): x ist das externe CE-Signal, y ist die Rückkopplung;
    im Ausgangssignal (ab): a ist das interne CE-Signal, b=y ist die Rückkopplung.
  • Figure 00570001
  • Dadurch wird sichergestellt, daß für jeden langen Impuls einer externen Taktfreigabe nur ein Impulsäquivalent für einen Einzeltaktimpuls erzeugt wird.
  • Beispiel 16 – Doppelpufferspeicher
  • Die meisten von den oben beschriebenen Echtzeit-Anwendungen basieren auf einem fest eingebauten Matrixkoppler. Die zur Änderung der Leitungsführung erforderliche Zeit ist zu lang für einen kontinuierlichen Echtzeitbetrieb von typischen Bauelementobjekten. Durch Nutzung von mehr als einem Bauelement, die mit einem Hauptrechner verbunden sind, können jedoch neue Anwendungsarten erzielt werden. Betrachten wir z. B. eine Situation, wo drei Bauelemente mit einem Hauptrechner verbunden sind, die jeweils so zu programmieren sind, daß sie eine bestimmte Operation ausführen. Der Hauptrechner weist einen Speicher auf, der den Code speichert, der in jedes Bauelement geladen werden muß, um dessen Betrieb zu ermöglichen. Während ein Bauelement die Anwendung ausführt, wird ein zweites als normaler Speicher mit dem Hauptrechner verbunden, wodurch frühere Ergebnisse von dort ausgelesen werden können oder ein neuer Code in das Bauelement geladen werden kann, und gleichzeitig kann der Code zur Herstellung der erforderlichen Verbindungen und zum Laden der erforderlichen Daten in das dritte Bauelement geladen werden. Nach Abschluß einer Anwendung durch das gegenwärtig laufende Bauelement ändert sich der Zustand jedes Bauelements, und der Hauptrechner wird mit dem Bauelement verbunden, das gerade seine Aufgabe beendet hat, um das Ergebnis zu lesen und eine neue Implementierung zu laden. Auf diese Weise kann jede Implementierung in einer Hardware ausgeführt werden, die viel schneller ist als in einer normalen Zentraleinheit (CPU) mit Verwendung von Software, während das Herunterladen von neuen Daten in die Bauelemente, das zeitraubend ist, parallel zum Betrieb eines anderen Bauelements ausgeführt werden kann und daher eine transparente Operation darstellt, die keinen zusätzlichen Echtzeitaufwand erfordert.
  • Obwohl in der obigen Implementierung mehrere Bauelemente verwendet werden, könnte die Implementierung auch unter Verwendung einiger Zellengruppen innerhalb des gleichen Bauelements ausgeführt werden. Wenn nur zwei Bauelementgruppen aktiv sind, dann ist dies aus der Perspektive des Hauptrechners, der nur Speicher "sieht", ähnlich einer Hardware-Implementierung mit doppeltem Puffer.
  • Dieses Verfahren kann nützlich sein, wenn eine sehr schnelle Echtzeitverarbeitung benötigt wird (wie in konfigurierbaren Computern). Der Hauptrechner ändert die zu implementierende Aufgabe nach Bedarf in einem Bauelement, während er in dem anderen Bauelement das Ergebnis der früheren Anweisung abfragt.
  • Eine praktische Implementierung einer solchen Anwendung weist mindestens ein Bauelement mit je einem aktiven und inaktiven Zustand auf. Der Hauptrechner ist mit jedem Bauelement gekoppelt und weist einen Speicher auf, in dem entsprechende formatierte Daten gespeichert sind, die in jedes der Bauelemente geladen werden müssen, um zu ermöglichen, daß das jewei lige Bauelement eine erforderliche Operation ausführt, wenn es sich in einem aktiven Zustand befindet, oder um es dem Hauptrechner zu ermöglichen, das entsprechende Bauelement zu laden, wenn es sich im inaktiven Zustand befindet. Dadurch kann unter Verwendung der mindestens zwei Bauelemente ein konfigurierbarer Computer implementiert werden, wobei der Hauptrechner so angepaßt ist, daß er mindestens eine Aufgabe verwaltet, indem er so viele Bauelemente aktiviert, wie für die Ausführung jeder Aufgabe erforderlich sind.
  • Beispiel 17 – Architektur mit mehreren Multichipmodulen (MCM)
  • In der oben anhand von 9 beschriebenen ungesättigten Matrix und in dem Beispiel, das oben unter dem Titel "Betrachtungen zur Auswahl einer bevorzugten Architektur" diskutiert wurde, gibt es etwa 1M Schalter. Dies bedeutet, daß die Matrix etwa 10% der gesamten Chipfläche belegt. 30 zeigt schematisch eine Architektur mit mehreren Multichipmodulen (MCM), die durch Bereitstellen eines zusätzlichen Matrixsteuerungsspeichers aufgebaut wird, so daß jeder Schalter 295 in der Matrix 296 über ein entsprechendes Schalterpaar geöffnet oder geschlossen wird, die als A1, B1, A2, B2 bis AN, BN bezeichnet werden und durch entsprechende Zweiwegeschalter 297 in einem Schaltmodul 298 ausgewählt werden, die alle durch eine einzige Steuerung 299 für einen Multiplexbetrieb zwischen jedem der Bits A1, B1, A2, B2 ... AN, BN der beiden Matrixsteuerungsspeicher bezeichnet werden. Jeder der Multichipmodule wird mit Daten geladen, um eine entsprechende Konnektivität zu definieren, wodurch im wesentlichen momentan verschiedene vorkonfigurierte Konnektivitäten implementiert werden können, indem einfach die Steuereinrichtung so betätigt wird, daß ein gewünschter MCM ausgewählt wird, so daß ein schnellerer Echtzeitbetrieb möglich wird. Diese Architektur ermöglicht außerdem die Wiederverwendung der gleichen Zellen in einem Bauelement, so daß diese zum Implementieren einer Anwendung und als Speicher des Computers benutzt werden können. Zeitsteuerungs- oder Hauptrechner-Anweisungen oder Anwendungs-Anweisungen (z. B. wenn die Aufgabe beendet ist) können zwischen entsprechenden Zeitabschnitten umschalten, in denen die Zellen der Anwen dung dienen ("Arbeitsperiode") oder dem Hauptrechner als dessen Speicher dienen. Nach jeder "Arbeitsperiode" empfängt der Hauptrechner eine Erlaubnis zum Zugriff auf seinen Speicher.
  • Durch diese Architektur wird die kollektive Größe der Matrix und der Matrixsteuerungskomponenten um einen Faktor von etwa 4 vergrößert. Angenommen, es wird eine 0,25 μm-Technologie verwendet, und gegenwärtig sind 0,18 und 0,13 μm-Geometrien verfügbar, dann ist dieses Beispiel eine ausführbare Konstruktion.
  • Diese Architektur kann die gleiche Nutzung erzielen wie der oben in Beispiel 16 beschriebene Doppelpufferspeicher. Obwohl in beiden oben beschriebenen Beispielen 16 und 17 die Verwendung eines Hauptrechners beschrieben wird, kann ein Baustein, der das Bauelement nutzt, die gleiche Funktionsfähigkeit realisieren.
  • Fehlersuchanschluß
  • Ein Anschluß, der mit der programmierbaren Matrix verbunden ist, kann jedes Zellenausgangssignal beobachten, indem das Zellenausgangssignal über die Matrix zu dem Anschluß übermittelt wird. Um ein Zelleneingangssignal zu beobachten, kann eine kleine freie Zelle (oder ein zugeordneter Zwischenspeicher, der als Zelle wirkt) benutzt werden. Die Daten in dieser Zelle werden so eingestellt, daß das Eingangssignal zum Ausgang übertragen wird, wie bei dem Schieberegister von 12 erläutert, und das Ausgangssignal der Zelle dann zu dem Anschluß übermittelt wird.
  • Dieser Anschluß kann so eingestellt werden, daß er im Echtzeitbetrieb jedes Eingangssignal oder Ausgangssignal des gesamten Bauelements prüft.
  • Anmerkungen:
    • 1. In den meisten Fällen braucht der Eingang der Zelle nicht geprüft zu werden, da, wenn dieser Eingang mit irgendeinem Ausgang verbunden ist, der Ausgang zu dem Anschluß geführt werden kann. Wenn der Anschluß mit den E/A-Stiften des Bauelements verbunden ist, kann er durch die Matrix zu dem Anschluß weitergeleitet werden.
    • 2. Für niedrigere Ebenen gilt: nur die "Anschlüsse" der niedrigeren Ebenen können an den E/A-Stiften in Echtzeit geprüft werden.
  • Einzelschritt
  • Um das Bauelement anzuhalten, braucht man lediglich das Taktsignal zu den Zellen zu stoppen. Wenn irgendeine logische Verarbeitung erfaßt wird und der Nutzer diese Logik so einstellt, daß der Betrieb der Hardware im Schaltkreisemulationsmodus gestoppt wird, dann hält die Anwendung an. Wenn der Nutzer dies wünscht, kann der Matrixsteuerungsspeicher verändert werden, um die Matrix zu zwingen, irgendeine Zelle zu den E/A-Stiften zu übermitteln. Er kann auch in Speicher umgewandelt und als normaler Speicher gelesen werden. Auf diese Weise kann jedes einzelne Logikbit im gesamten Bauelement geprüft werden. Nach dem Test kann der Matrixsteuerungsspeicher in seinen Ausgangszustand zurückgesetzt werden, und die Operation kann von dem gleichen Punkt, wo sie angehalten wurde, weiterlaufen.
  • Anmerkungen:
  • Wenn die Simulation stoppt, kann jedes einzelne Logikbit im gesamten Bauelement geprüft werden, einschließlich derjenigen in niederen Ebenen, da bei einer Umwandlung dieser Ebene in einen Speicher alle Ausgangszellen mit dem Anschluß der Ebene verbunden sind. Die zu prüfenden Bits werden durch die Adresse des neu erzeugten Speichers ausgewählt.
  • Technologieanpassung
  • Die Fähigkeit der Halbleiterindustrie, immer mehr Funktionen auf einem Chip zu integrieren, nimmt ständig zu. Die Technologie des Bauelements basiert auf Zellen, und je mehr Zellen verwendet werden, desto größer ist die Leistungsfähigkeit der Anwendung. Da die Architektur so beschaffen ist, daß Zellen zu größeren Zellen kombiniert werden können, gewährleisten die folgenden Methoden, daß jede Implementierung automatisch von einer neuen Technologie ausgeht, wenn eine größere Chipausnutzung verfügbar ist:
    • 1. Die Anzahl der Zellen darf nicht verringert werden.
    • 2. Die Querverbindungsbeschränkung der Matrix darf nicht erhöht werden (d. h. in dem obigen, in 9 dargestellten Beispiel darf Z nicht vermindert werden).
    • 3. Eine kleine Zellengröße kann durch eine größere Zellengröße ersetzt werden.
    • 4. Niedere Ebenen dürfen hinzugefügt werden (Ebenen für kleinere Zellen hinzufügen). Zu beachten ist, daß Zellen in den niederen Ebenen wieder in höhere Zellen umgewandelt werden können.
    • 5. Die Taktzykluszeit darf nicht verlängert werden.
    • 6. Zellenblöcke können von niederen Ebenen zu höheren Ebenen verschoben werden, wodurch eine Vergrößerung der Matrix erforderlich wird.
    • 7. Die Anzahl der Eingangsstifte darf nicht vermindert werden.
    • 8. Die Anzahl der Ausgangsstifte darf nicht vermindert werden.
  • Tatsächlich folgt aus dem Vorstehenden, daß bei einer Verbesserung der Technologie die Leistungsfähigkeit des Bauelements nicht vermindert werden sollte. Wenn man dies nicht vergißt, wird sichergestellt, daß jede Anwendung automatisch mit der neuen Technologie kompatibel sein kann. Zu beachten ist außerdem: da bei der Simulation die Funktionen in Zellen unterteilt werden, ändert die Simulation selbst sich nicht. Das geladene Programm muß jedoch verändert werden, da sowohl die Speicherstruktur (des Matrixsteuerungsspeichers) als auch das "Speicherbild" des gesamten Bauelements sich ändern. Mit anderen Worten, erforderlich ist lediglich, daß die Daten, die in die Zellen geladen werden, neu formatiert werden müssen.
  • Prüfung der Hardware
  • Die Implementierung braucht nicht geprüft zu werden, um sicherzustellen, daß die Hardware einwandfrei arbeitet. Um alle RAM-Speicher zu testen, wird das gesamte Bauelement in einen RAM umgewandelt, und alle seine Speicherplätze werden unter Anwendung von Lese/Schreib-Operationen geprüft, ebenso wie beim herkömmlichen Speicher. Zum Beispiel: "00", "AA", "55", "FF", "Adresse in Daten" usw. Jetzt werden die Matrixverbindungen kontrolliert, indem über alle möglichen Anschlüsse Si gnale angelegt werden. Auf die gleiche Weise werden alle E/A-Stifte kontrolliert.
  • Die obigen Angaben sind eine Erläuterung der Fähigkeit zur Prüfung der gesamten Hardware ohne die Anwendung. Dafür gibt es weitere Möglichkeiten. Zum Beispiel könnten die Signale unter Verwendung des Bildgenerators intern erzeugt und durch das Bauelement selbst geprüft werden.
  • Autonome Karte
  • Wenn eine autonome bzw. Standalone-Karte benötigt wird, z. B. wenn kein Hauptrechner verfügbar ist, dann sind die gleichen Lösungen geeignet, die auf dem Gebiet der digitalen Signalprozessoren (DSP) gebräuchlich sind. Zum Beispiel: Löschbarer programmierbarer Festwertspeicher (EPROM)
    • 1. Ein EPROM mit den Daten für den Matrixsteuerungsspeicher und für die Zellen wird auf der Karte installiert. Sobald die Stromversorgung eingeschaltet ist, kopiert das Bauelement die Matrixsteuerungsdaten aus dem EPROM in den Matrixsteuerungsspeicher. Die Implementierung der elektronischen Schaltung zum Kopieren vom Speicher zu Speicher ist dem Fachmann bekannt.
    • 2. Sobald das letzte Bit in den Matrixsteuerungsspeicher kopiert worden ist, sieht das Bauelement wie ein einziger Speicher aus. Die elektronische Schaltung kopiert jetzt aus dem EPROM in den neu erzeugten Speicher. Die Zellen werden auf diese Weise mit ihren Daten geladen.
    • 3. Schließlich kopiert die elektronische Schaltung aus dem EPROM wieder in den Matrixsteuerungsspeicher, um die für die Anwendung benötigten Querverbindungen herzustellen.
  • Wenn die verwendete Architektur des Bauelements die gleiche ist, wie in den obigen Beispielen unter dem Titel "Überlegungen zur Auswahl einer bevorzugten Architektur" diskutiert, beträgt die Größe des EPROM etwa 10 MBit.
  • Andere Lösungen
  • Andere, dem Fachmann bekannte Lösungen, wie z. B. ein EEPROM oder ein RAM mit Reservebatterie, können auf die gleiche Weise verwendet werden wie der EPROM. Die Integration des EPROM in das Bauelement wird nicht empfohlen, da sie die Herstellungskosten des Bauelements beträchtlich erhöht.
  • Eine Batteriereservestromversorgung direkt für das Bauelement kann nützlich sein, wenn dadurch sichergestellt werden soll, daß die Batterie nur dann aktiv ist, wenn das Bauelement nicht aktiv ist. Andernfalls ist die Verlustleistung hoch.
  • Entwicklung von selbsterhaltenden Anwendungen
  • Da die Hardwareanwendungen gespeichert und als Software-Code wiederverwendet werden können, kann jede wiederverwendbare Aufgabe gespeichert und aufgerufen werden, wenn sie benötigt wird. Wenn z. B. ein Filter implementiert und ausgetestet worden ist, könnte ein Programm die Filterparameter abfragen und den Bauelementcode automatisch generieren. Dies bedeutet, daß die Anzahl der für Arbeitsgruppen verfügbaren "Standard"-Aufgabenimplementierungen um so größer und die Zeit bis zur Markteinführung um so kürzer ist, je mehr die Bauelement-Technologie genutzt wird. Ferner kann die Bibliothek der Anwendungen immer noch genutzt werden, wenn sich die Chipfertigungstechnologie verbessert, wie oben erläutert.
  • Zusatzkomponenten des Bauelements
  • Zusatzkomponenten, die in keiner direkten Beziehung zur Architektur des Bauelements stehen, können auf dem Bauelement vorgesehen werden, um:
    • 1. einen internen Takt für den synchronisierten Takt und zeitliche Zuordnungen zu erzeugen,
    • 2. die Verwendung eines externen Takts zu ermöglichen,
    • 3. die Zeitsteuerung für den "Schreibzyklus" zu erzeugen. Dies ist eine feste Zeitsteuerung, da die Schreiboperation durch die von der Matrix übermittelte "Schreibfreigabe" und die Nutzung der Ausgabefreigabe der Zelle aktiviert oder deaktiviert wird. Daher kann sie vom Haupttakt aus gesteuert werden.
    • 4. die E/A-Signale zu puffern.
  • Dem Fachmann ist bekannt, wie diese Funktionen zu realisieren sind.
  • Weitere Möglichkeiten zur Implementierung des Bauelements Einige Vorteile der Bauelementarchitektur hängen mit der Tatsache zusammen, daß die Zelleneingangssignale und die Zellenausgangssignale, wie sie beispielsweise in 5 dargestellt sind, synchronisiert werden. Es können jedoch bestimmte nichtsynchronisierte Operationen implementiert werden. Zum Beispiel ist zu beachten, daß kleine Zellen so schnell sind, daß ihre Zyklusdauer halb so lang ist wie die Zyklusdauer der normalen Zelle. Diese schnelleren Zellen könnten in kleineren Blöcken mit einem schnelleren Takt geschaltet werden. Da ihre Zyklusdauer halb so lang wie die Zyklusdauer der normalen Zelle ist, kann das Ausgangssignal dieser Blöcke leicht mit den übrigen Blöcken synchronisiert werden.
  • Schnellere Zellen können auf kleineren Zellen auf einer höheren Ebene implementiert werden. Daher kann diese Anschlußart in die Gesamtarchitektur passen. Tatsächlich sind in Abschnitten, wo keine Rückkopplung implementiert ist, die Zwischenspeicher der Zellen redundant. Nur der letzte Zwischenspeicher am Ende der rückkopplungsfreien Zellen wird benötigt.
  • Ebenso können Anwendungen existieren, wo mehrere Zwischenspeicher in Kaskadenschaltung eingesetzt werden können, um eine vorgeschriebene Verzögerung bzw. Laufzeit zu liefern. Daher kann die Zelle zum Teil durch RAM-Speicher ohne dazugehörige Zwischenspeicher und/oder durch Zwischenspeicher ohne dazugehörige RAM-Speicher realisiert werden. Falls trotzdem eine direkte Zuordnung eines Zwischenspeichers zu einem RAM erforderlich ist, kann dies unter Verwendung der Matrix erfolgen, wie weiter oben erläutert. Obwohl dies komplizierter ist und technische Bearbeitungszeit für den Durchschnittsingenieur verschwenden kann, ist es unter Umständen wertvoll, wenn eine Expertengruppe, die an dieser Art von Architektur arbeitet, neue Bibliotheken zum Nutzen aller ausarbeitet.
  • Einfachheit
  • Da die Anwendung in kleine Teile unterteilt wird, führt sie den Anwendungstechniker zu einer einfachen Lösung, die auch einfach zu implementieren ist.
  • Parallele Nutzung von Arbeitskräften
  • Wenn ein Systemingenieur die Grundzüge der Lösung entwickelt, kann er oder sie die Funktionen vereinbaren, die innerhalb der Funktionszellen auszuführen sind. Dann kann jede Implementierung der Zelle unabhängig codiert werden. Dies bedeutet, daß jeder Zellenimplementierungscode von einem anderen Ingenieur entwickelt werden kann.
  • Ablaufdiagramme
  • 31 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die mit einem ersten Verfahren zur Gewinnung von Konstruktionsdaten verbunden sind, welche die Funktionalität einer Hardwareanwendung unter Verwendung des erfindungsgemäßen Bauelements definieren. Mit "Konstruktionsdaten" sind die Daten gemeint, die eine Topologie darstellen, die eine Konnektivität zwischen Zellen und/oder Teilelementen definiert und darin zu speichernde Daten einschließt. Wie wir gesehen haben, wird eine Topologie für die Implementierung der gewünschten Anwendung gewählt, wonach Daten zur Speicherung in den Zellen formuliert und/oder Teilelemente durch die ausgewählte Topologie definiert werden.
  • 32 zeigt ein alternatives Verfahren zur Ermittlung von Konstruktionsdaten, das zumindest eine Teilfunktionalität einer gewünschten Hardwareanwendung unter Verwendung des erfindungsgemäßen Bauelements definiert. Es wird auf eine Bibliothek zugegriffen, die vorkonfigurierte Dateien speichert, die jeweils Konstruktionsdaten in Verbindung mit einer entsprechenden Funktionalität enthalten, und eine oder mehrere Dateien werden aus der Bibliothek ausgewählt, um eine oder mehrere Funktionalitäten der Anwendung zu realisieren. Wahlweise können früher gewonnene Konstruktionsdaten in der Bibliothek gespeichert werden, indem entweder in der Bibliothek nicht enthaltene Funktionalitäten hinzugefügt oder vorhandene Konstruktionsdaten darin ausgetauscht werden. Die Konstruktionsdaten, die auf diese Weise in Verbindung mit dem Bauelement in der Bibliothek gespeichert werden, definieren eine Bauelementarchitektur, die eine gewünschte Funktionalität oder Teilfunktionalität der Anwendung realisiert. Zum Beispiel könnte aus einem 10-Bit-Addierglied, dessen Konstruktionsdaten in der Bibliothek gespeichert sind, in Verbindung mit den notwendigen zusätzlichen Konstruktionsdaten ein 12-Bit-Addierglied aufgebaut werden. Wenn erforderlich, können dann die Konstruktionsdaten des resultierenden 12-Bit-Addierglieds in der Bibliothek gespeichert werden, um später als Standardmerkmal verfügbar zu sein. Dies ermöglicht die Wiederverwendung einer Bibliothek von vorher entworfenen Konstruktionsdaten und macht auf diese Weise die wiederholte Erzeugung der gleichen Konstruktionsdaten für jede Anwendung überflüssig. Daher können in dem obigen Beispiel die Konstruktionsdaten für das erzeugte 12-Bit-Addierglied einmal gespeichert werden und erübrigen damit die Notwendigkeit für den Konstrukteur, diese Funktionalität jedesmal, wenn ein 12-Bit-Addierglied erforderlich ist, neu zu entwerfen. Dies führt nicht nur zu einer beträchtlichen Einsparung an Entwicklungszeit, sondern ermöglicht auch, was nicht weniger wichtig ist, daß fachkundige Entwickler optimierte Lösungen entwickeln und diese Lösungen für eine Gemeinschaft von Entwicklern zur Verfügung stellen. Diese Einrichtung ist auch von Nutzen für Arbeitsgruppen und ermöglicht es den Mitgliedern, Entwürfe auszutauschen, beispielsweise über das Internet.
  • 33 zeigt ein weiteres Verfahren zur Gewinnung von Konstruktionsdaten, wobei eine Computersimulation der Hardwareanwendung ausgeführt wird, indem ein Computer so programmiert wird, daß er die mindestens eine Zelle und/oder das mindestens eine Teilelement implementiert und unter Verwendung der Konstruktionsdaten eine vorkonfigurierte Topologie implementiert. Die Konstruktionsdaten können nötigenfalls geändert werden, und die Simulation kann wiederholt werden, bis die Computersimulation zufriedenstellend ist. Die Hardwareanwendung kann dann durch Herunterladen der Bauelementdaten; die aus den Simulations-Konstruktionsdaten abgeleitet werden, implementiert werden. Wie oben festgestellt, kann der Computer unter Anwendung einer höheren Programmiersprache programmiert werden, wodurch Techniken, die herkömmlicherweise zum Tätigkeitsbereich fachkundiger Entwurfsingenieure gehören, nun für Programmierer verfügbar sind. Außerdem dient das Programm le diglich zur Definition der Konstruktionsdaten: sobald eine funktionsfähige Implementierung der Anwendung verfügbar ist und die Daten in deren Zellen heruntergeladen sind, ist nicht mehr relevant, wie die Daten definiert wurden. Das heißt, daß ein funktionsfähiges Bauelement ungeachtet dessen, ob der zur Konstruktion und zum Herunterladen der Daten in das Bauelement benutzte Programmcode optimiert war oder nicht, mit gleicher Effizienz funktionieren wird.
  • Bei der Programmierung des Computers zur Ausführung der Simulation können die Simulations-Konstruktionsdaten auf zwei Arten hergeleitet werden. Nach einem Verfahren werden durch den Computer laufend Momentanabtastwerte zumindest eines Teils der Simulations-Konstruktionsdaten berechnet. Nach einem anderen Verfahren wird jedoch zumindest ein Teil der Simulations-Konstruktionsdaten vorkonfiguriert und gespeichert, und Momentanabtastwerte davon werden nach Bedarf durch den Computer abgerufen. Durch ein solches Verfahren wird die Notwendigkeit vermieden, die Simulations-Konstruktionsdaten in Echtzeit zu berechnen, da die Daten vorgegeben sind und abgerufen werden, wodurch die Anzahl der Computer-Operationscodes, die zur Ableitung der Konstruktionsdaten erforderlich sind, wesentlich reduziert wird.
  • 34 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die mit einem Verfahren zur Implementierung einer Hardwareanwendung unter Verwendung des erfindungsgemäßen Bauelements verbunden sind. Auf das Wesentliche reduziert, werden formatierte Daten ermittelt und in das Bauelement heruntergeladen. Die formatierten Daten können aus vorgegebenen Konstruktionsdaten abgeleitet und dann zum Herunterladen in das Bauelement formatiert werden. Die Konstruktionsdaten selbst können ermittelt werden, indem eines der Verfahren angewandt wird, die oben unter Bezugnahme auf die 31, 32 oder 33 beschrieben worden sind.
  • Simulator und Werkzeuge
  • sDie folgenden Beispiele behandeln jede Gruppe von mehreren synchronisierten Zellen als selbständige Einheiten. Die Integration dieser Einheiten wird auf eine dem Fachmann bekannte Weise erreicht.
  • Simulator
  • Bei einer normalen Implementierung werden Signale in die Anwendung eingegeben, die Signale werden verarbeitet und als Ergebnisse werden Signale von der Anwendung ausgegeben. Bei einer Simulation werden "virtuelle" Signale in ein Computerprogramm eingegeben, das die Funktion der Implementierung simuliert und "virtuelle" Ausgabesignale erzeugt. Die Simulation komplizierter Implementierungen ist ziemlich verwickelt. Der schwierige Teil besteht darin, die Verzögerung zwischen den Signalen zu simulieren, da die Auflösung der Computer"Zeit" festgelegt ist. Je besser die Auflösung des Simulators, desto langsamer ist die Simulation.
  • Da alle Zellen synchronisiert sind, ist es kein Problem, die exakte Funktion der Hardware auf die gleiche Weise zu simulieren, wie sie in Wirklichkeit arbeitet. Jede Zelle in einer Anwendung, die unter Verwendung des erfindungsgemäßen Bauelements konstruiert wird, führt eine Aufgabe aus. Die Aufgabe kann als Umrechnungstabelle (Nachschlagetabelle) implementiert werden. Die durch die Tabellendaten dargestellte Aufgabe kann in einer höheren Programmiersprache geschrieben werden. Die Kollektion aller in den verschiedenen Tabellen gespeicherten Daten wird als Geräte- bzw. Bauelementcode bezeichnet.
  • Beispiele:
  • Es folgen einige Beispiele unter Verwendung der "C"-Sprache als Pseudocode, wobei es sich versteht, daß irgendeine andere Programmiersprache angewandt werden könnte.
  • Ein Beispiel für die Implementierung irgendeiner Aufgabe wäre:
    Figure 00690001
    Figure 00700001
  • Die Daten der Zelle werden getrennt durch die Funktion int iCell1(int iAddress) implementiert. Beispielsweise könnten die Daten für den Computer, der weiter oben unter Bezugnahme auf 10 beschrieben wurde, in "C" wie folgt implementiert werden:
    Figure 00700002
  • Da die Aufgaben unter Verwendung von Software ausgeführt werden, kann der gleiche Code, der Zellenfunktionalitäten implementiert, im Simulator und bei der Erzeugung der Daten eingesetzt werden, die in das Bauelement herunterzuladen sind. Da in jedem Zyklus der Hardware-Implementierung nur eine Operation in einer Zelle ausgeführt wird, kann die Operation auf dem Computer "eins zu eins" simuliert werden. Um die Ope rationen zu simulieren, sind alle Operationen in eine Schleife einzubeziehen, die einen Hardware-Zyklus simuliert.
  • Zum Beispiel könnte der Code für den Simulator der folgende sein:
    Figure 00710001
  • Die folgenden Unterschiede zwischen diesem Code und dem vorhergehenden Code sind zu beachten:
    • 1. Die Matrixoperation ist hinzugefügt worden; anstelle der Inkrementierung der "Adresse" erhält die "Adresse" den neuen Wert von den Daten.
    • 2. Das Datenelement wird nicht in einem Tabellenelement erfaßt. Das Datenelement spiegelt nur die Einzeloperation wider, die in einem Zyklus ausgeführt wird.
    • 3. Mehrere Zellen könnten auf die gleiche Weise und in der gleichen Schleife implementiert werden. In diesem Beispiel sollte die Matrixoperation für alle Zellen zum Ende der Schleife verschoben werden.
  • Daher ist es ziemlich leicht, den Prozeß zu automatisieren und zu veranlassen, daß der Simulator die ladefähigen Daten erzeugt, die durch den Bauelement-Code "laufend" ange fordert werden. Wenn die Simulation auf diese Weise arbeitet, sagt man, daß sie im "kompilierten Modus" arbeitet.
  • Wichtig ist, zu beachten, daß der gesamte Code, der vom Nutzer verändert werden muß, d. h. der Code für die Zellen und für die Matrix, für den Simulator und die geladenen Daten der gleiche ist. Folglich kann nicht nur der Simulator eine "Einszu-eins"-Simulation der Anwendung ausführen, sondern darüber hinaus ist, wenn die Simulation richtig arbeitet, die Erzeugung der geladenen Daten ein automatischer Vorgang ohne zusätzliche menschliche Fehler.
  • Der Bauelement-Code ist eine Tabelle von Adresse-Datenelement-Beziehungen. Damit der Simulator schneller läuft, kann der durch die Tabellen dargestellte Bauelement-Code vorher berechnet und vom Simulator in Form von Umrechnungstabellen benutzt werden, wodurch die "laufende" Berechnung des Tabellenwerts durch den Simulator überflüssig wird und Operationscodes eingespart werden. Wenn die Simulation auf diese Weise arbeitet, sagt man, daß sie im "realen Modus" arbeitet. In diesem Falle würde der Code auf die folgende Weise erzeugt werden:
    Figure 00720001
    Figure 00730001
  • Die beiden Simulationsmethoden können in Kombination angewandt werden. So kann eine Zelle durch "laufende" Berechnung der Zellendaten simuliert werden, während eine andere Zelle vorher berechnete Daten abrufen kann. Im "kompilierten Modus" ist die Fehlersuche einfacher, aber im "realen Modus" ist sie schneller.
  • Beispielsweise könnte die Erzeugung des Zellencodes wie folgt aussehen:
    Figure 00730002
    Figure 00740001
  • Dieser Code könnte für jede Zelle implementiert werden, während der Funktionscode (Cell1(int), Cell2(int)... Celln(int)) getrennt implementiert wird.
  • Beispielsweise könnte die Erzeugung des Simulatorcodes wie folgt aussehen:
    Figure 00740002
    Figure 00750001
    Figure 00760001
  • Anmerkung:
  • Das iAddressForCelln kann nur Teil der tatsächlichen Adresse der Zelle sein. Die Matrix kann einen Teil des Datenelements mit einem Teil der Adresse verknüpfen (bitweise Verknüpfung). Offensichtlich können die Matrixzeilen in eine andere enthaltene Datei, ein Unterprogramm oder eine Klasse aufgeteilt werden, die durch den Hauptrechner zu benutzen sind, der diese Matrixoperation in die "Matrixsteuerungsspeicher"-Daten umwandelt.
  • Simulationsgeschwindigkeit
  • Die nachstehende Diskussion behandelt den Vergleich zwischen der Geschwindigkeit des Bauelements und der Geschwindigkeit der Simulation, welche die gleiche Funktionalität implementiert. Um den Geschwindigkeitsfaktor des Computers, der den Simulator betreibt, aus der Geschwindigkeitsschätzung zu entfernen, wird in der folgenden Diskussion angenommen, daß der Computer mit der gleichen Geschwindigkeit arbeitet wie das Bauelement.
  • Kompilierter Simulatormodus
  • Zur Simulation der Anwendung ist jede von den Zellen, die der Implementierung einer vorgegebenen Funktion zugeordnet sind, für die Implementierung eines erforderlichen Algorithmus zu simulieren. Im folgenden werden die 300 Zellen entsprechend der Architektur ausgewählt, die oben unter der Abschnittsüberschrift "Überlegungen zur Auswahl einer bevorzugten Architektur" beschrieben wurde. Da die Bauelementzellen parallel arbeiten und der Simulator schrittweise arbeitet, arbeitet daher der Simulator mindestens 300 mal langsamer als die Bauelementhardware. In dem oben definierten "kompilierten Modus" werden die Zellendaten durch Implementierung der vorgegebenen Funktion berechnet, während der Simulator läuft. Selbst eine einfache Funktion wird unter Verwendung von typischerweise mindestens 30 Operationscodes implementiert, wodurch sich die Simulation um einen Faktor von mindestens 9000 gegenüber der Hardware verlangsamt. Wenn man jetzt die Erzeugungszeit für das Eingabesignal und die Verarbeitungszeit für die beobachteten Eingabe- und Ausgabesignale hinzufügt, wird der Faktor höher. Das heißt, daß jedes Verfahren wichtig ist, das die Simulationsgeschwindigkeit erhöhen kann.
  • In der Praxis würde die Simulation viel langsamer laufen, da der Computer langsamer als die Hardware wäre und die in den Zellenfunktionen aufgerufenen Unterprogramme viel größer wären.
  • Da eine begrenzte Anzahl von Operationen zu simulieren ist (in der obenerwähnten bevorzugten Architektur, die 300 Zellen enthält) ist dennoch zu erwarten, daß der Simulator viel schneller läuft als bisher vorgeschlagene Simulatoren.
  • Realer Modus
  • Im "realen Modus" werden die in der Zelle zu speichernden Daten berechnet, bevor die Simulation ausgeführt wird und während die Simulation zur Ausführung des gewünschten Algorithmus benutzt wird, der durch die Zellen implementiert werden soll. Auf diese Weise kann die Anzahl der Operationscodes, die zur Ausführung der Simulation erforderlich sind, stark reduziert werden, und der Simulator läuft viel schneller. Aus diesem Grunde ist der Betrieb des Simulators im "realen Modus" viel schneller als der Grundfaktor von 30, da:
    • 1. die Geschwindigkeitseinsparung um so größer ist, je größer das Unterprogramm für die Zellenfunktion ist;
    • 2. die Einsparungen um so größer sind, je größer die Zelle ist. Der Grund dafür ist, daß größere Zellen eine Anzahl von Zellen kombinieren und die Gesamtzahl der zu simulierenden Zellen verringern. Die Simulation einer großen Zelle oder einer kleinen Zelle erfordert im "realen Modus" die gleiche Zeit.
    • 3. Obwohl eine kleinere Anzahl von Zellen die Simulatorgeschwindigkeit auch im kompilierten Modus erhöht, da in den meisten Fällen größere Zellen einen umfangreicheren Code verwenden als kleinere Zellen, kann dieser Vorteil verloren gehen.
  • Schließlich kann erwartet werden, daß der "reale Modus" bei den Anwendungen im oberen Leistungsbereich, die erwartungsgemäß auf dem Bauelement laufen sollen, einige Dutzend bis einige hundert mal schneller arbeitet. Diese Anzahl wird nach der mittleren Anzahl von Operationscodes in einer Aufgabe einer Zelle, multipliziert mit der mittleren Anzahl kleinerer Zellen berechnet, die in der Anwendung zur Erzeugung größerer Zellen verwendet werden.
  • Emulatormodus
  • Im Emulatormodus läuft die Simulation mit der durch die Erzeugung von "virtuellen Signalen" abgeleiteten Taktgeschwindigkeit. Die Anwendung könnte in Echtzeit laufen, aber die durch den Simulator erzeugten "virtuellen Signale" legen die Maximalgeschwindigkeit fest.
  • Schaltkreisemulatormodus (ICE-Modus)
  • Im Schaltkreisemulatormodus arbeitet der Simulator im Echtzeitbetrieb.
  • Eingabe- und Ausgabesignale des Simulators Signale werden durch die Zellen im Bauelement erzeugt, wie weiter oben in Beispiel 6 bei der Beschreibung der Strukturerzeugung erläutert wurde. Äquivalente Signale können ebenso gut durch den Computer erzeugt und verarbeitet werden, und es besteht kein Unterschied zwischen der Art und Weise, wie Signale in jedem Fall erzeugt oder verwendet werden können. Trotzdem werden die computerisierten Signale als "virtuelle" Signale bezeichnet und können daher an einem mit dem Computer gekoppelten Bildmonitor beobachtet werden.
  • Es gibt einige Vorteile, die der Benutzer beim Betrachten der "virtuellen" Signale erzielen kann:
    • 1. Darstellung der Signale, wie sie sind (Logikanalysator-Stil).
    • 2. Darstellung der Datenliste (Listenmodus).
    • 3. Umwandlung der Signale vor der Beobachtung. Zum Beispiel ist bei der Pulscodemodulation (PCM) ein Signal nach "einer Regel" (einer der PCM-Regeln) so beschaffen, daß jedes zweite Bit invertiert ist. Der Benutzer kann die invertierten Bits vor dem Betrachten invertieren, so daß das Ergebnis leichter verständlich ist. Der Benutzer kann den PCM-Code in Linearcode umwandeln, wodurch dieser noch leichter zu verstehen ist.
    • 4. Der Benutzer kann Bytes oder Wörter in ihre "analoge" Form umwandeln und sie am Bildschirm darstellen (Oszilloskop-Modus).
  • Die Ausgabesignale werden durch die Anwendung erzeugt. Sie können auf die gleiche Weise verarbeitet werden wie die Eingabesignale.
  • 35 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die mit einem Verfahren zur Simulation eines erfindungsgemäßen Hardware-Bauelements verbunden sind. Ein für schrittweisen Betrieb angepaßter Emulationsmodul wird konstruiert, der das Bauelement und eine E/A-Schnittstelle einschließt. Formatierte Daten werden in das Bauelement innerhalb des Emulationsmoduls heruntergeladen, um eine gewünschte Hardwareanwendung zu erzeugen, und die E/A-Schnittstelle wird an einen Computer angeschlossen, der ein Steuergerät bildet und gleichfalls an der Emulation beteiligt ist. Durch den Computer wird ein Eingangssignalwert erzeugt und über die E/A-Schnittstelle in das Emulationsmodul geladen. Ein Ausgabesignalwert wird zur Analyse über die E/A-Schnittstelle aus dem Emulationsmodul erfaßt. Da das Emulationsmodul nach einem Verfahren für Schrittbetrieb eingerichtet ist, erwartet es einen nachfolgenden Eingangssignalwert, der vom Computer autorisiert wird, nachdem der vorhergehende Ausgangssignalwert analysiert und als richtig befunden wurde. Nach einem anderen Verfahren verwendet das Bauelement im Emulationsmodul einige unbenutzte Zellen (möglicherweise in einem anderen Bauelement, das diesem Zweck zugeordnet ist), um den Ausgangssignalwert auf die gleiche Weise wie für die Schaltkreisemulation zu analysieren, wie weiter unten unter Bezug nahme auf 36 der Zeichnungen beschrieben wird. Der gesamte Prozeß wird nach Bedarf Signalwert für Signalwert wiederholt. In einer alternativen Konfiguration kann der Computer durch einen Logikanalysator ersetzt werden, und ein Signalgenerator kann den Eingangssignalwert erzeugen.
  • Der Schrittbetrieb der Emulation ist erforderlich, damit der Computer oder ein anderer Logikanalysator Zeit zur Analyse des aktuellen Ausgangssignalwerts haben kann und möglicherweise im Falle eines Fehlers den weiteren Betrieb abbrechen kann, bevor der nachfolgende Eingangssignalwert angelegt wird. Der gewünschte Schrittbetrieb kann erreicht werden, indem von außen ein Taktfreigabesignal eingespeist wird, um das Taktsignal in die Anwendung einzuspeisen, und intern das Taktfreigabesignal deaktiviert wird, um zu verhindern, daß die Einspeisung des anstehenden Taktsignals durch die Anwendung überschrieben wird.
  • Emulatoren
  • Es wird eine Mehrzweckemulator-PC-Karte mit einem oder mehreren universellen Hardware-Bauelementen implementiert. Der Code wird in das Bauelement geladen. Die durch den Computer erzeugten "virtuellen" Eingangssignale werden über den PC-Bus (z. B. einen PCI-Bus) zu den Eingängen der Karte übertragen. Ein freier Teil des Bauelements oder ein anderes Bauelement wird so programmiert, daß es einen gewünschten logischen Zustand erfaßt, wobei die Logik die gleiche ist wie für den Logikanalysator, aber so flexibel, wie der Benutzer wünscht. Das Ausgangssignal wird über den PC-Bus zurückübertragen und auf dem Benutzerbildschirm beobachtet. Der Takt der Emulationskarte kann manipuliert, verlangsamt, angehalten oder schrittweise weitergeschaltet werden, wenn dies erforderlich ist, um das Signal auf dem Bildschirm zu beobachten. Das Taktsignal kann von dem durch die Software gesteuerten PC in das zum Bauelement externe Taktsignal eingespeist werden, um maximale Geschwindigkeit und Flexibilität zu erreichen.
  • Wenn langdauernde reale Signale eingegeben werden müssen, die Stunden oder länger dauern können, dann sollte der Schaltkreisemulator verwendet werden. Es wird die gleiche Mehrzweckemulator-PC-Karte verwendet, aber ein Anschluß für die PC-Karte sollte auf der Benutzerkarte implementiert werden. Dieser Anschluß überträgt die E/A-Signale in die Emulatorkarte. Der Emulator speichert die Eingangssignale und führt logische Operationen an den Ausgangs- und Eingangssignalen aus. Sobald die Ergebnisse dieser logischen Verarbeitung erfaßt sind, stoppt der Prozeß (durch Deaktivieren des Taktsignals), und der Benutzer kann die gespeicherten Signale in den Simulator/Emulator einspeisen, um die Anwendung auszutesten.
  • 36 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die mit einem Schaltkreisemulationsverfahren zur Prüfung des Bauelements im Emulationsmodul während eines Echtzeitbetriebs des Bauelements verbunden sind. Mindestens eine der E/A-Schnittstellen des zu prüfenden Moduls wird mit einer Steuereinheit verbunden, und das Bauelement wird so konfiguriert, daß es Abtastwerte an bestimmten Punkten des Bauelements über einen Anschlußkanal an mindestens einer der Schnittstellen ausgibt. Die Abtastwerte werden in der Steuereinheit abgetastet, um in Echtzeit einen zeitlichen Ablauf von Abtastwerten des Bauelements zu ermitteln, und die Steuereinheit dient zur Analyse mindestens einer Teilmenge der neuesten Abtastwerte. Wenn notwendig, wird der Betrieb des zu prüfenden Bauelements arretiert, um eine oder alle folgenden Operationen zu ermöglichen:
    • (i) Untersuchung der Vorgeschichte von Abtastwerten des Bauelements,
    • (ii) Untersuchung eines momentanen aktuellen Zustands des arretierten Bauelements,
    • (iii) Herunterladen eines anderen Zustands des arretierten Bauelements,
    • (iv) Fortsetzung des Echtzeitbetriebs des Bauelements, und
    • (v) Neustart des Echtzeitbetriebs des Bauelements.
  • Eine einzige Entwicklungsumgebung
  • Vom Anfang des Prozesses bis zur Fertigungsphase wird die gleiche Entwicklungsumgebung verwendet. Die Entwicklungsumgebung kann kostenaufwendige Testgeräte ersetzen, da es sehr einfach ist, "virtuelle" Signale in der PC-Software-Umgebung zu verarbeiten, wie unter der Überschrift "Simulation" erläutert. Sie kann als Simulator, Emulator und Schaltkreisemulator verwendet werden, und sie kann als das Programm benutzt werden, das die Karte in der Fertigungsabteilung überprüft.
  • Qualität des Kundencodes
  • Der Anwendungstechniker definiert die Lösung, nämlich: was in jeder Zelle zu programmieren ist, und wie die Konnektivität zwischen den Zellen aussehen sollte. Dann wird der Code für die Zellen geschrieben. Die Qualität des Codes hinsichtlich des Echtzeitbetriebs ist für die Qualität des in das Bauelement geladenen "Codes" nicht wichtig. Nehmen wir z. B. an, daß die in 10 dargestellte Zähler-Implementierung den folgenden Code verwendet:
    Figure 00820001
    Figure 00830001
  • Obwohl der Code in der zweiten Implementierung viel langsamer ist, werden identische Daten in das Bauelement geladen. Auf diese Weise wird das an den Endverbraucher abgegebene Produkt nicht durch einen unerfahrenen Programmierer beeinflußt.
  • Das obige Merkmal kann dazu dienen, die Verfügbarkeit von Entwicklern zu erhöhen, da sowohl Softwaretechniker als auch Hardwaretechniker die Implementierungen durchführen können. Der Systemingenieur – derjenige, der die Lösung entwickelt – kann leicht durch Anwendung der Simulation kontrolliert werden.
  • Zu beachten ist, daß der Simulator zwar im "kompilierten Modus" mit einem schlechteren Code langsamer arbeitet, daß aber der Unterschied im kombinierten Modus nicht bemerkt wird, da in dem Teil des Bauelements, das den "realen Modus" nutzt, kein Unterschied auftritt (weil die zur Erzeugung der Tabellen erforderliche Zeit vernachlässigbar ist).
  • 37 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die mit einem Verfahren zum Entwurf eines anwendungsspezifischen Hardware-Bauelements mit einer gewünschten Funktionalität verbunden sind. Es werden formatierte Daten gewonnen, die in Verbindung mit dem erfindungsgemäßen Bauelement eine Bauelementarchitektur definieren, welche die gewünschte Funktionalität realisiert. Die programmierbare Matrix oder die Matrizen der Bauelementarchitektur werden durch feste Verbindungen ersetzt, welche die Konnektivität der einen oder der mehreren programmierbaren Matrizen realisieren, und die Speicherelemente in mindestens einigen der Zellen in der Bauelementarchitektur werden durch entsprechende feste Steuerebenen zur Realisierung der darin gespeicherten Daten ersetzt. Auf diese Weise wird erreicht, daß sich die Architektur zur direkten Implementierung des anwendungsspezifischen Hardware-Bauelements eignet.
  • Eine derartige Methode ermöglicht die schnelle Entwicklung von anwendungsspezifischen integrierten Schaltkreisen (ASIC), die unter Umständen gegenüber dem programmierbaren Bauelement bevorzugt werden, um die Chipfläche für Hardwareanwendungen zu reduzieren, die für die Massenfertigung vorgesehen sind. Andererseits dient das erfindungsgemäße Bauelement nur als ein Mittel zur Entwicklung des ASIC und zur Gewinnung der erforderlichen formatierten Daten, die dann modifiziert werden. Das ASIC ist nicht selbst ein universelles Hardware-Bauelement und ist nicht programmierbar.
  • So wird bei einer ASIC-Umsetzung jedes Bit in jedem RAM, der als Anwendungs-RAM verwendet wird, durch einen "1"oder "0"-Treiber ersetzt. Dadurch wird die Größe des RAM vermindert, und der RAM wird in eine nicht programmierbare Tabelle umgewandelt. Jeder zum Speichern benutzte RAM bleibt unberührt. Obwohl mehr Einsparungen erzielt werden können, werden gewöhnlich nur die obigen Maßnahmen empfohlen, da die zusätzlichen Einsparungen die "Zeit bis zum ASIC" (zur Umsetzung in einen ASIC erforderliche Zeit) verlängern und kostenaufwendiger sind. Die obigen Maßnahmen können als ein automatisches Werkzeug implementiert werden.
  • Nachstehend wird ein Beispiel der zusätzlichen Einsparungen angegeben, die durch Verwendung eines ASIC zur Implementierung eines Teils der Funktionalität der Anwendung erzielt werden können. Ein 8-Bit-Vorwärts/Rückwärts-Zähler kann unter Anwendung herkömmlicher Verfahren mit acht Flipflops und einigen Logikschaltungen implementiert werden. Der gleiche erfindungsgemäße 8-Bit-Vorwärts/Rückwärts-Zähler wird in einer 9-Bit-Adresse und einer 8-Bit-Datenzelle implementiert und erfordert einen RAM-Speicher von 4096 Bits. Ungeachtet der Tatsache, daß aus diesem Beispiel, oberflächlich gesehen, hervorgehen kann, daß die Erfindung sehr verschwenderisch mit Speicherplatz umgeht, ist bei einer komplizierten Anwendung die durch die Erfindung erreichte Gesamtimplementierung tatsächlich "chipflächensparend"; eine Zählerumwandlung kann etwa 0,3% der gesamten ASIC-Chipgröße einsparen. Als Beispiel wird eingeschätzt, daß der "Huffman-Code" für eine vollständige ElÜbertragungsleitung implementiert werden kann, die den TX- und den RX-Algorithmus für jeden der 32 Kanäle implementiert, der die adaptiven Tabellen pro Kanal aufnimmt. Diese Anwendung kann auf etwa 250 mm2 Chipfläche in der 0,25 μm-Technologie implementiert werden. Ein weiteres Beispiel ist ein 8-Bit-FIR-Filter mit 8 Abgriffen, das weniger als 3% des vollständigen Bauelements verbraucht. Ferner ist zu beachten, daß die erfindungsgemäße Methode der ASIC-Umsetzung erweitert werden kann, um zu ermöglichen, daß bestimmte Grundfunktionalitäten des ASIC, wie z. B. der obenerwähnte Zähler, unter Anwendung herkömmlicher Verfahren in Form einer Bibliothek verfügbar gemacht werden. In diesem Fall kann der Benutzer unter Verwendung vorher konvertierter Funktionalitäten eine bessere Umsetzung implementieren, ohne den nicht behebbaren Zeitaufwand (NRE-Zeit) des ASIC zu vergeuden.
  • Unter Umständen möchte man die Flexibilität des universellen Hardware-Bauelements mit den Vorteilen von ASICs kombinieren, wenn ein ASIC auf einer Serie verschiedener Leiterplatten zu montieren ist, die jeweils eine andere Funktionalität aufweisen. In diesem Fall wird nur ein Teil der einen oder mehreren programmierbaren Matrizen der Bauelementarchitektur durch festgeschaltete Verbindungen ausgetauscht, welche die Konnektivität der ersetzten Verbindungen realisieren, und die Speicherelemente werden nur in einigen Zellen in der Bauelementarchitektur durch entsprechende festgeschaltete Steuerebenen zur Realisierung der darin gespeicherten Daten ersetzt.
  • Ein solches Verfahren kann für den Entwurf kritischer Teile oder für die Anpassung von Unterschieden zwischen Implementierungen wünschenswert sein. Zum Beispiel gibt es bei der Implementierung der Telefoniesignalgabe kleine Unterschiede zwischen verschiedenen Ländern.
  • Nutzung defekter Chips
  • Da der Preis des Chips auf die Chipgröße bezogen ist, und da etwa 250 mm2 als ziemlich groß angesehen wird, kann der Chip-Preis durch die folgende Methode gesenkt werden. Da das Bauelement auf Zellen basiert, und da es für die Anwendung nicht erheblich ist, welche Zelle zur Implementierung irgendeiner gegebenen Aufgabe ausgewählt wird, wird ein Test des Bauelements ausgeführt. Wenn eine Zelle als defekt befunden wird, kann die Zelle als defekt gekennzeichnet werden, um nicht verwendet zu werden.
  • Dann wird die Matrix getestet. Wenn eine Verbindung als defekt befunden wird, sollte diese Verbindung nicht benutzt werden. Zu beachten ist, daß manchmal ein defekter Verbindungsweg zum Verlust einer Zelle führt, und daß manchmal die Verbindung entbehrlich ist.
  • Da nur einige hundert Zellen vorhanden sind und die Schalter der Matrix in der "Reihenfolge des Matrixsteuerungsspeichers" sortiert sind, ist es ziemlich einfach, ein kurzes Codestück zu erzeugen, um den defekten Teil zu markieren. Dieser Code wird aus der defekten Adresse und dem Datenelement des Matrixsteuerungsspeichers und aus der Nummer der defekten Zelle erzeugt.
  • Wenn die Zeitsteuerung defekt ist, dann ist das gesamte Bauelement defekt. Obwohl die Eingabe/Ausgabe auf die gleiche Weise überprüft werden könnte, wird die Verwendung des Bauelements nicht empfohlen, wenn die Eingabe/Ausgabe defekt ist.
  • Nutzung zum Erzielen einer höheren Zuverlässigkeit
  • Die Idee besteht darin, eine Ersatzzelle oder einige Ersatzzellen im Bauelement zu haben und sie anstelle einer defekten Zelle einzusetzen. Die Matrix weist bereits "Ersatzverbindungen" auf. Zum Beispiel:
  • Wenn ein Hauptrechner an das Bauelement angeschlossen ist, kann das oben beschriebene Verfahren in einer Anwendung wie folgt benutzt werden:
    • 1. Eine oder mehrere Ersatzzellen werden ausgelassen.
    • 2. Ein eingebautes Testprogramm kontrolliert diese freien Zellen über einen Anschlußkanal (ähnlich einer RAM-Kontrolle).
    • 3. Diese Zelle wird mit der Aufgabe einer anderen Zelle geladen, welche die gleiche Konnektivität wie die freie Zelle annehmen kann.
    • 4. Das Eingangssignal der Zelle wird zum gleichen Eingang der anderen Zelle geführt.
    • 5. Das Ausgangssignal der Zelle wird zum gleichen Ausgang der anderen Zelle geführt. Jetzt arbeiten beide Zellen parallel, und daher wird keine Kollision auftreten (wenn kein Fehler auftritt).
    • 6. Die andere Zelle wird als Ersatzzelle geschaltet.
  • Ein Matrixfehler kann wie ein Zellenfehler "aussehen". Um dies zu testen, kann ein anderer Verbindungsweg benutzt werden. Wenn eine solche andere Verbindung nicht vorhanden ist, wird die Zelle als "defekt" gekennzeichnet. Ein "Zellen-RAM" in Timesharing-Konfiguration kann erst nach einem vollen Zyklus abgeschaltet werden.
  • 38 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die mit dem obigen Verfahren bei der Implementierung einer Hardwareanwendung bei Verwendung des erfindungsgemäßen Bauelements verbunden sind. Vor dem Herunterladen der formatierten Daten in das Bauelement werden die formatierten Daten benutzt, um gerätespezifische erweiterte formatierte Daten zu erzeugen, welche die formatierten Daten und eine Defektliste etwaiger defekter Zellen und/oder Verbindungen einschließen. Vor dem Test ist die Defektliste leer. Daher kann eine leere Defektliste das Fehlen defekter Zellen oder Verbindungen anzeigen, kann aber auch einfach bedeuten, daß das Bauelement noch nicht getestet worden ist. Die gerätespezifischen erweiterten formatierten Daten können, wenn erforderlich, weitere gerätespezifische Informationen enthalten. Zellen und Verbindungen in dem Bauelement werden getestet, die Defektliste wird entsprechend aktualisiert, und die formatierten Daten innerhalb der gerätespezifischen erweiterten formatierten Daten werden nötigenfalls geändert, um die Verwendung irgendwelcher getesteter Zellen oder Verbindungen zu vermeiden, die als defekt befunden wurden.
  • 39 zeigt ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die mit einem Verfahren zur automatischen Echtzeit-Defekterkennung und -korrektur eines erfindungsgemäßen Bauelements verbunden sind. Gerätespezifische erweiterte formatierte Daten, wie oben in Bezug auf 38 erläutert, werden verwendet, um eine unbenutzte Zelle festzustellen, die nicht in der Defektliste steht. Wenn eine solche unbenutzte Zelle festgestellt wird, dann werden die unbenutzte Zelle und ihre Verbindungen getestet, und wenn die unbenutzte Zelle und/oder irgendwelche von ihren Verbindungen defekt sind, werden die gerätespezifischen erweiterten formatierten Daten aktualisiert, und eine weitere unbenutzte Zelle, die nicht defekt ist, wird lokalisiert. Wenn eine freie Zelle festgestellt wird, die getestet und als funktionsfähig befunden wurde, werden die gerätespezifischen erweiterten formatierten Daten verwendet, um eine benutzte Zelle zur Prüfung auszuwählen, welche die gleiche Konnektivität wie die unbenutzte Zelle annehmen kann. Unter Verwendung der gerätespezifischen erweiterten formatierten Daten werden die ausgewählte Zelle und ihre Verbindungen auf die funktionsfähige freie Zelle kopiert. Die ausgewählte Zelle wird jetzt abgetrennt, und die gerätespezifischen erweiterten formatierten Daten werden entsprechend aktualisiert. Auf diese Weise wird die Definition der zu prüfenden benutzten Zelle auf eine freie Zelle kopiert, deren Funktionsfähigkeit festgestellt wurde. Als Ergebnis arbeitet jetzt die freie Zelle als die ursprüngliche benutzte Zelle, die jetzt abgetrennt ist. Vor dem Abtrennen arbeiten beide Zellen parallel, aber die Zeit, während der dies zulässig ist, ist vernachlässigbar. Wenn die ursprüngliche Zelle oder eine ihrer Verbindungen defekt wären, wird durch den Kopiervorgang ihre Funktionalität auf die freie Zelle der Defekt behoben, da die freie Zelle als funktionsfähig bekannt ist. Der gesamte Zyklus kann nach Bedarf wiederholt werden.
  • 40 zeigt ein Ablaufdiagram, das den Prozeß für die erstmalige Herstellung einer Leiterkarte zusammenfaßt, die ein erfindungsgemäßes Hardware-Bauelement trägt, wenn keine vorentwickelte Karte verfügbar ist oder wenn eine neue Schnittstelle benötigt wird. Die Definition der Anwendung (die auch Teil des Kartenentwicklungsprozesses ist) wird den Entwurf selten beeinflussen, da, sobald die Schnittstelle fertig ist, die resultierende Karte für viele verschiedene Anwendungen eingesetzt werden kann.
  • Folglich definiert die Anwendungsdefinition 300 die Anwendung allgemein, und daran schließt sich eine Simulation 301 an. Der Simulationsprozeß erfordert die Erzeugung der Anwendungssimulation, wie weiter oben unter Bezugnahme auf 33 ausführlich beschrieben. Der Zweck der Simulation besteht darin, sicherzustellen, daß die Idee ausführbar ist, und den Code zu erzeugen, der auf dem Bauelement ausgeführt werden soll. Wenn z. B. ein Bauelement entworfen werden muß, um Sprache über Nachrichtenverbindungen zu komprimieren, wird der Kompressionsalgorithmus unter Verwendung einer höheren Programmiersprache aufgeschrieben, wie z. B. "C++"; oder unter Verwendung von Werkzeugen, die für diesen Zweck bereitgestellt werden, wie oben beschrieben. Wenn dies gewünscht wird, können diese Werkzeuge in Kombination mit bekannten Werkzeugen angewandt werden, wie z. B. dem oben erwähnten "Matlab". Sobald die Simulation zufriedenstellend ist, ist der Code für das Bauelement fertig. Die Simulation ist eine "Eins-zu-eins"-Simulation, womit gemeint ist, daß außer der Fähigkeit zum Simulieren der Funktion exakt simuliert wird, wie der Code auf dem Bauelement läuft. Wenn daher die Anwendung auf dem Simulator funktioniert, wird die Anwendung auf der Leiterplatte funktionieren; wenn die Anwendung nicht auf dem Simulator funktioniert, wird sie auf der Leiterplatte nicht funktionieren.
  • Die "Eins-zu-eins"-Simulationsfähigkeit beruht auf der Architektur des Bauelements, welche die Erzeugung einer exakten aktuellen Kopie des Bauelements im Computer ermöglicht, der die Simulation ausführt. Daher erzeugen "synthetische" oder aufgezeichnete "virtuelle" Signale, die in den Eingang der Kopie des Bauelements im Computer eintreten, die exakten "virtuellen" Ausgangssignale, die durch das Bauelement erzeugt würden. Diese "virtuellen" Signale können verarbeitet und geprüft werden.
  • Der Simulator kann in den folgenden Betriebsarten betrieben werden:
    • – Kompilierter Modus, wodurch die Simulation mit Hilfe von Unterprogrammen ausgeführt wird, die in einer höheren Programmiersprache zur Ausführung des gewünschten Algorithmus geschrieben werden, der durch die Zelle implementiert werden soll.
    • – Realer Modus, wodurch die in der Zelle zu speichernden Daten vor der Ausführung der Simulation berechnet und während der Simulation zur Ausführung des gewünschten Algorithmus benutzt werden, der durch die Zelle implementiert werden soll. Auf diese Weise kann die Anzahl der Operationscodes, die zur Ausführung der Simulation erforderlich sind, stark reduziert werden, und der Simulator läuft viel schneller.
    • – Eine Kombination der obigen Moden. Der Teil der Anwendung, der gerade geprüft wird, läuft in dem mit der höheren Programmiersprache kompilierten Modus, während der Rest im realen Modus läuft. Dieser Modus ist vorgesehen, um die Maximalgeschwindigkeit für die Fehlersuche zu erreichen.
    • – Emulationsmodus: Der Simulator wird durch das Hardware-Bauelement beschleunigt. Im Emulationsmodus benutzt der Simulator Zellen im Bauelement und weist ähnliche Fähigkeiten wie ein Logikanalysator auf. Mit anderen Worten, die Emulation kann bei irgendeinem logischen Muster oder einer Sequenz anhalten und das Ergebnis jeder Verbindung innerhalb des Bauelements am Bildschirm anzeigen. Sie kann auch im Einzelschrittbetrieb arbeiten. Dies ist eine Hardware, die der Fähigkeit zur Verfolgung durch ein Software-Programm mit Hilfe eines Fehlersuchprogramms analog ist.
    • – Unter Verwendung des Schaltkreisemulationsmodus (ICE-Modus) wird die Emulation mit Fähigkeiten zum Abtasten von Eingangssignalen kombiniert. Die Karte arbeitet in Echtzeit unter Verwendung ihres schaltkreisinternen Bauelements.
  • Da der Simulator eine "Eins-zu-eins"-Simulation implementiert, wird der größte Teil des Tests und der Fehlersuche in der Simulationsphase ausgeführt. Test und Fehlersuche 302 sind erforderlich, um reale langdauernde Signale zu prüfen, die Stunden oder Tage dauern können und daher die Anwendung des ICE-Modus erfordern. Dies hat Auswirkungen auf die Simulationsgeschwindigkeit, wie oben erläutert.
  • Die Fehlersuche wird wie folgt ausgeführt: ein Teil des Bauelements wird so programmiert, daß jeder logische Zustand erfaßt wird, der typischerweise einen Fehler anzeigt, dessen Ursache zu analysieren und zu korrigieren ist. Gleichzeitig erfaßt ein weiterer Teil des Bauelements aufeinanderfolgende Abtastwerte des Eingangssignals in einem Umlaufpufferspeicher.
  • Wenn ein Fehler festgestellt wird, stoppt die Emulation, und die aufgezeichneten Eingangssignale, die den Fehler verursacht haben, können in den Simulator eingespeist werden, um das Problem zu lösen. Es können mehr als eine Zelle erforderlich sein, um das Eingangssignal zu erfassen: mindestens eine Zelle für den Zähler des Umlaufpufferspeichers, und weitere für den Puffer.
  • Nach einem anderen Fehlersuchverfahren erzeugt das virtuelle Bauelement im Computer irgendeinen gewünschten Zustand, der in das Bauelement geladen wird, und der Test wird von diesem Punkt an im Emulations- oder ICE-Modus aufgeführt.
  • Sobald Tests und Fehlersuche beendet sind, kann die Forschung und Entwicklung bis zur Produktionsphase 303 beginnen. Im Falle von Anwendungserzeugungsprozessen, die vorkonstruierte Karten auf der Basis von Mehrzweckbauelementen verwenden, erfordert der Prozeß von der Forschung und Entwicklung bis zur Produktion nicht mehr als die Übergabe des durch den Simulator 301 erzeugten Bauelement-Codes von der Forschungs- und Entwicklungsabteilung an die Produktionsabteilung.
  • Daran schließt sich die Kartenherstellung 304 an. Im Falle von Anwendungserzeugungsprozessen unter Verwendung von vorkonstruierten Karten auf der Basis von Mehrzweckbauelementen ist die Kartenproduktion ein unabhängiger Prozeß, der beginnen kann, bevor die Anwendung fertiggestellt ist. Dies ist schematisch in 41 dargestellt, die im übrigen mit 40 identisch ist, mit Ausnahme des Fehlens des Kartenentwicklungsprozesses 305 in 41. Im Anschluß an die Kartenproduktion 304 wird ein Überprüfungs- bzw. Verifikationsprozeß 306 ausgeführt. Die Verifikation der Karte ist der Prozeß zum Überprüfen der Karte zusammen mit der Elektronik. Die neue Bauelementarchitektur ist so beschaffen, daß die Karte getestet werden kann, um sicherzustellen, daß die Anwendung ohne den Anwendungscode darauf laufen kann. Daher gibt es keine Verknüpfung zwischen der Beendigung der Arbeit in der Forschungs- und Entwicklungsgruppe und dem Beginn/der Beendigung des Kartenverifikationsprozesses in der Produktionsabteilung.
  • Die Kartenauslieferung 307 an den Kunden kann erfolgen, bevor die Anwendung fertiggestellt ist. In einem späteren Sta dium, wenn die Anwendung fertiggestellt ist, kann der Bauelement-Code in Form von geeignet formatierten Daten zum Herunterladen in das Bauelement an den Kunden übermittelt werden.
  • Etwaige Fehler, die nach der Auslieferungsphase festgestellt werden, können mit Hilfe der oben beschriebenen Simulations- und Fehlersuchwerkzeuge behoben werden, und der neue Code kann an den Kunden ausgeliefert werden. Die Aktualisierungs- oder Fehlerbeseitigungsphase 308 ist in 40 als Teil des Entwicklungsprozesses dargestellt, was darauf schließen läßt, daß der Entwickler entscheiden kann, in welcher Phase das Produkt auszuliefern ist, wobei in Betracht gezogen wird, daß nach der Auslieferung Änderungen vorgenommen werden können.
  • Der erfindungsgemäße Entwicklungsprozeß ist ein sogenanntes "Spiralmodell" des Entwicklungsprozesses, im Gegensatz zu dem gebräuchlicheren "Wasserfall"-Prozeß, der gegenwärtig angewandt wird. Das Spiralmodell und seine Vorteile werden z. B. auf der Website http//www.cstp.umkc.edu/personal/cjweber/spiral.html beschrieben.
  • Die in 5 dargestellte "Kartenentwicklungsphase" 305 ist ähnlich derjenigen, die oben unter Bezugnahme auf 1 beschrieben wurde. Der einzige Unterschied besteht darin, daß keine Anwendung zu implementieren ist, weshalb die Implementierung leichter ist und weniger Zeit erfordert. Daher brauchen nur die Schnittstelle und die Außenanschlüsse des bzw. der Bauelemente entworfen zu werden. In den meisten Fällen dürfte der Kartenerzeugungsprozeß aus den folgenden Gründen die Entwicklungszeit bis zur Vermarktung nicht beeinflussen:
    • – Die Implementierung ist einfach, da nur die Schnittstelle (wenn diese nicht standardisiert ist) die Anzahl der Bauelemente (gewöhnlich 1) und die Stiftausgänge entworfen zu werden brauchen. Mit anderen Worten,
    • – sobald eine Karte fertig und die Schnittstelle festgelegt ist, kann für die neuen Anwendungen eine vorgefertigte Karte (oder ein vorgefertigter Kartenentwurf) verwendet werden.
  • Wenn eine neue Anwendung mit einer nichtstandardisierten, außergewöhnlichen Schnittstelle hergestellt werden soll, ist trotzdem zu erwarten, daß der Kartenfertigungsprozeß länger dauert als der Implementierungsprozeß, und die Einsparung der bis zur Vermarktung erforderlichen Zeit verringert sich. Daher sollte man sich bemühen, universelle, serienmäßige, vorgefertigte Mehrzweckkarten für die bekannten Schnittstellen vorzubereiten, um für verschiedene Anwendungen bereit zu sein.
  • Die Erfindung liefert folglich eine hochflexible umprogrammierbare Bauelementarchitektur, die für die Implementierung einer riesigen Anzahl verschiedener Anwendungen zugänglich ist und eine leichte Erweiterung sowie gemischte Architekturen zuläßt. Zuverlässigkeit und Einfachheit des Entwurfs sind durch die "Eins-zu-eins"-Simulation gewährleistet, wodurch während der Computersimulation einer Anwendung Daten verwendet werden, die mit denen identisch sind, die zur Implementierung der Anwendung in das Bauelement heruntergeladen werden. Simulation und Emulation können mit Hilfe eines gewöhnlichen Personalcomputers unter Anwendung bekannter höherer Programmierverfahren ausgeführt werden, wodurch kostenaufwendige Spezialarbeitsplätze überflüssig werden. Als Ergebnis der einzigartigen Bauelementarchitektur können die Hardware-Entwicklung und -anwendung für einen Parallelbetrieb unterteilt werden, wie bereits beschrieben, und eignen sich für ein modulares Arbeitsgruppenverfahren. Diese Flexibilität erhöht sich durch die Fähigkeit zum Zugriff auf Bibliotheken von vorkonstruierten Konstruktionen und formatierten Daten.
  • Es sind zwar verschiedene Ausführungsformen beschrieben worden, aber für den Fachmann wird offensichtlich sein, daß ein besonders vorteilhaftes Merkmal der Erfindung in ihrer Flexibilität und Anwendungsmethode liegt. Daher dienen die Beispiele nur zur Erläuterung, und der Umfang der Erfindung soll alle Varianten umfassen, die innerhalb des Umfangs der Patentansprüche liegen.
  • Ebenso, ist die Erfindung zwar unter besonderer Beachtung der Entwicklung von digitalen elektronischen Schaltkreisen beschrieben worden, aber Fachleute werden erkennen, daß die Erfindung auch auf die Erzeugung biologischer Hardware, pneumatischer Hardware, mechanischer Hardware Anwendung finden kann, in der die Grundkomponenten der Erfindung, die Zellen und die programmierbaren Matrizen, unter Anwendung der entsprechenden Technologie implementiert werden. Daher wird in den Patentansprüchen der Begriff "Hardware" so verwendet, daß er elektronische Hardware, biologische Hardware, pneumatische Hardware, mechanische Hardware und jede andere Hardware einschließt, in der Zellen mit der Fähigkeit zur Datenspeicherung implementiert werden können, und in der programmierbare Matrizen implementiert werden können.
  • Man wird auch erkennen, daß das erfindungsgemäße System ein geeignet programmierter Computer sein kann. Ebenso zieht die Erfindung ein Computerprogramm, das durch einen Computer lesbar ist, für die Ausführung des erfindungsgemäßen Verfahrens in Betracht. Die Erfindung zieht ferner einen maschinenlesbaren Speicher, der ein Programm von durch die Maschine ausführbaren Anweisungen materiell verkörpert, für die Ausführung des erfindungsgemäßen Verfahrens in Betracht.
  • In den nachstehenden Patentansprüchen werden alphabetische Zeichen, die zur Bezeichnung von Anspruchsschritten verwendet werden, nur zur Bequemlichkeit angegeben und implizieren keine bestimmte Reihenfolge in der Ausführung der Schritte.

Claims (49)

  1. Universal-Hardware-Baustein (100) mit: einer ersten Vielzahl von Zellen zum Speichern von Daten; und einer mit Ein- und Ausgängen der ersten Vielzahl von Zellen verbundenen, ersten programmierbaren Matrix (109), wobei mehrere Hardware-Anwendungen durch selektives Speichern von Daten in den Zellen und selektives Programmieren der Matrix, um mindestens eine der Zellen mit mindestens einer der Zellen zu verbinden, implementierbar sind; dadurch gekennzeichnet, daß mindestens eine der Zellen eine zweite Vielzahl von Zellen zum Speichern von Daten aufweist; und eine mit Ein- und Ausgängen der zweiten Vielzahl von Zellen verbundene, zweite programmierbare Matrix (102, 108) bereitgestellt wird, wobei jede Zelle der ersten Vielzahl von Zellen und der zweiten Vielzahl von Zellen eine ähnliche Architektur aufweisen kann wie der gesamte Universal-Hardware-Baustein; und auf mindestens eine Zelle, die nicht Teil der ersten Vielzahl von Zellen ist, über einen Port der mindestens einen Zelle direkt zugegriffen werden kann.
  2. Baustein nach Anspruch 1, wobei die erste programmierbare Matrix (109) und die zweite programmierbare Matrix (102, 108) integral sind.
  3. Baustein nach Anspruch 1 oder 2, wobei mindestens ein Teil der gespeicherten Daten während der Ausführung der Hardware-Anwendung durch die Hardware-Anwendung dynamisch austauschbar ist.
  4. Baustein nach einem der Ansprüche 1 bis 3, ferner mit einem Speicher zum Speichern einer Kontrolleinstellung der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108).
  5. Baustein nach einem der Ansprüche 1 bis 3, ferner mit: mindestens zwei Speichern, in denen jeweils eine entsprechende Einstellung der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) gespeichert ist; und einem gesteuerten Multiplexer zum Auswählen zwischen den mindestens zwei Speichern; wobei die Topologie des Bausteins durch eine einfache Steuerung schnell geändert werden kann.
  6. Baustein nach Anspruch 5, wobei durch eine der Einstellungen mindestens ein Subset der Zellen als eine einzige Zelle konfiguriert wird, wodurch ein bequemer Zugriff auf darin gespeicherte Daten ermöglicht wird.
  7. Baustein nach einem der Ansprüche 1 bis 6 mit mindestens einen Eingang, der mit der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) verbunden ist.
  8. Baustein nach einem der Ansprüche 1 bis 7 mit mindestens einen Ausgang, der mit der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) verbunden ist.
  9. Baustein nach einem der Ansprüche 1 bis 8, wobei mindestens einige der Zellen durch mindestens ein Taktsignal synchronisiert sind, die durch die erste programmierbare Matrix (109) und/oder die zweite programmierbare Matrix (102, 108) jeweils unabhängig aktiviert oder deaktiviert werden können.
  10. Baustein nach Anspruch 9, wobei das mindestens eine Taktsignal mit der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) verbunden ist.
  11. Baustein nach einem der Ansprüche 1 bis 10, wobei die Zellen durch eine vorgewählte Topologie verbunden und Daten zum Implementieren einer gewünschten Hardware-Anwendung in den Zellen gespeichert sind.
  12. Baustein nach einem der Ansprüche 1 bis 11, wobei mindestens einige der Zellen aus Komponenten (270, 290) gebildet werden, die über die erste programmierbare Matrix (109) und/oder die zweite programmierbare Matrix (102, 108) miteinander verbunden und unabhängig voneinander verwendbar sind.
  13. Baustein nach Anspruch 12, ferner mit zusätzlichen der mindestens einigen Komponenten.
  14. Baustein nach einem der Ansprüche 1 bis 13, wobei die Zellen und/oder die Komponenten durch eine vorgewählte Topologie verbunden und Daten zum Implementieren einer gewünschten Hardware-Anwendung in den Zellen gespeichert sind.
  15. Baustein nach einem der Ansprüche 1 bis 14, wobei mindestens einige der Zellen (130) aufweisen: einen Direktzugriffsspeicher (RAM-Speicher) (131) mit einem Adressenbus (132) zum Zuführen einer erforderlichen Adresse zum RAM-Speicher, um auf einem Datenbus (133) des RAM-Speichers einen entsprechenden Datenwert auszugeben, der an einer durch die Adresse bestimmten Speicherstelle des RAM-Speichers gespeichert ist; Register (134a, 134b), die jeweils mit einem RAM-Speicher verbunden sind, zum Halten i) des auf dem Adressenbus übertragenen Signals, so daß ein Eingangssignal des Registers ein Eingangssignal der entsprechenden Zelle und ein Ausgangssignal des RAM-Speichers ein Ausgangssignal der entsprechenden Zelle bildet, oder ii) des auf dem Datenbus des RAM-Speichers übertragenen Signals, so daß ein Adressensignal des RAM-Speichers ein Eingangssignal der entsprechenden Zelle und ein Ausgangssignal des Registers ein Ausgangssignal der entsprechenden Zelle bildet; und eine Zusatzschaltung (137) zum Modifizieren des Betriebsverhaltens des RAM-Speichers und des Registers; wobei mindestens einige der Zellen mindestens teilweise als Look-Up-Tabelle betrieben werden.
  16. Anordnung mit: mindestens einem Baustein nach einem der Ansprüche 1 bis 15, die jeweils einen aktiven und einen inaktiven Zustand aufweisen; und einem Host-Rechner, der mit dem mindestens einen Baustein verbunden ist und einen Speicher aufweist, in dem jeweilige formatierte Daten gespeichert sind, die in jeden der Bausteine geladen werden müssen, um zu ermöglichen, daß der entsprechende Baustein eine erforderliche Operation ausführt, wenn er auf den aktiven Zustand eingestellt ist, oder dem Host-Rechner zu ermöglichen, den entsprechenden Baustein zu laden, wenn er auf den inaktiven Zustand eingestellt ist.
  17. Anordnung nach Anspruch 16, wobei der Host-Rechner ein Baustein nach einem der Ansprüche 1 bis 15 ist.
  18. Anordnung nach Anspruch 16 oder 17 mit mindestens zwei Bausteinen, wobei der Host-Rechner dazu geeignet ist, mindestens eine Aufgabe durch Aktivieren so vieler Bausteinen zu managen, wie erforderlich sind, um die mindestens eine Aufgabe auszuführen.
  19. Baustein nach Anspruch 15, wobei mindestens einige der Zellen verwendet werden, um eine Time-Sharing-Operation zu ermöglichen.
  20. Baustein nach Anspruch 19, wobei mindestens eine der mindestens einigen Zellen als Time-Sharing-Zähler verwendet werden und die übrigen der mindestens einigen Zellen verwendet werden, um einen momentanen Zustand einer entsprechenden Implementierung des Bausteins zu speichern.
  21. Modul mit mindestens einem Hardware-Baustein nach Anspruch 14 oder 15 und mindestens einer Ein-/Ausgabe-Schnittstelle.
  22. Verfahren zum Konstruieren einer unter Verwendung eines Bausteins nach einem der Ansprüche 1 bis 15 oder des Moduls von Anspruch 21 zu implementierenden Hardware-Anwendung, mit den Schritten: (a) Bereitstellen von Konstruktionsdaten, die eine Topologie darstellen, die eine Konnektivität zwischen Zellen und/oder Komponenten definiert und darin zu speichernde Daten enthalten, um eine Funktionalität der Hardware-Anwendung zu definieren; und (b) Herleiten formatierter Daten von den Konstruktionsdaten, die zum Herunterladen zum Baustein formatiert sind.
  23. Verfahren nach Anspruch 22, wobei Schritt (a) aufweist (i) Auswählen der Topologie; und (ii) Festlegen von in den durch die Topologie definierten Zellen und/oder Komponenten zu speichernden Daten.
  24. Verfahren nach Anspruch 22, wobei Schritt (a) aufweist: (i) Zugreifen auf eine Bibliothek vorkonfigurierter Dateien, die jeweils mit einer entsprechenden Funktionalität in Beziehung stehende Konstruktionsdaten enthalten; und (ii) Auswählen einer oder mehrerer der Dateien zum Realisieren einer oder mehrerer Funktionalitäten der Anwendung.
  25. Verfahren nach Anspruch 22, wobei Schritt (a) aufweist: (i) Ausführen einer Computersimulation der Hardware-Anwendung durch Programmieren eines Computers, um die mindestens eine Zelle und/oder die mindestens eine Komponente zu implementieren und eine vorkonfigurierte Topologie unter Verwendung der Konstruktionsdaten zu implementieren; und (ii) Ändern der Konstruktionsdaten und Wiederholen von Schritt (i) nach Erfordernis, bis die Computersimulation zufriedenstellend ist.
  26. Verfahren zum Bereitstellen von Konstruktionsdaten unter Verwendung eines Bausteins nach einem der Ansprüche 1 bis 15, wobei die Konstruktionsdaten eine Topologie darstellen, die eine Konnektivität zwischen Zellen und/oder Komponenten definiert und darin zu speichernde Daten enthalten, um eine Funktionalität einer Hardware-Anwendung zu definieren; wobei das Verfahren die Schritte aufweist (a) Auswählen der Topologie; und (b) Festlegen von in den durch die Topologie definierten Zellen und/oder Komponenten zu speichernden Daten.
  27. Verfahren zum Bereitstellen von Konstruktionsdaten unter Verwendung eines Bausteins nach einem der Ansprüche 1 bis 15, wobei die Konstruktionsdaten eine Topologie darstellen, die eine Konnektivität zwischen Zellen und/oder Komponenten definiert und darin zu speichernde Daten enthalten, um eine Funktionalität einer Hardware-Anwendung zu definieren; wobei das Verfahren die Schritte aufweist: (a) Zugreifen auf eine Bibliothek vorkonfigurierter Dateien, die jeweils mit einer entsprechenden Funktionalität in Beziehung stehende Konstruktionsdaten enthalten; und (b) Auswählen einer oder mehrerer der Dateien zum Realisieren mindestens einer Teilfunktionalität der Anwendung.
  28. Verfahren nach Anspruch 26 oder 27, ferner mit dem Schritt: (d) Hinzufügen der Konstruktionsdaten zu einer Bibliothek vorkonfigurierter Dateien, die jeweils mit einer entsprechenden Funktionalität in Beziehung stehende Daten enthalten.
  29. Verfahren nach einem der Ansprüche 24, 27 oder 28, wobei die Bibliothek an einem entfernten Ort gespeichert ist und der Schritt zum Zugreifen auf die Bibliothek über einen Kommunikationskanal ausgeführt wird.
  30. Verfahren nach Anspruch 26 oder 27, ferner mit den Schritten: (d) Ausführen einer Computersimulation der Hardware-Anwendung durch Programmieren eines Computers, um die mindestens eine Zelle und/oder die mindestens eine Komponente zu implementieren und eine vorkonfigurierte Topologie unter Verwendung der Konstruktionsdaten zu implementieren; und (e) Ändern der Konstruktionsdaten und Wiederholen von Schritt (d) nach Erfordernis, bis die Computersimulation zufriedenstellend ist.
  31. Verfahren nach Anspruch 23, wobei Schritt (b) das Programmieren des Computers unter Verwendung einer höheren Programmiersprache aufweist.
  32. Verfahren nach Anspruch 26, wobei die Schritte (b) und (c) das Programmieren des Computers unter Verwendung einer höheren Programmiersprache aufweisen.
  33. Verfahren nach Anspruch 25 oder 30, wobei momentane Abtastwerte eines Teils der Simulationskonstruktionsdaten durch den Computer kontinuierlich on the fly berechnet werden.
  34. Verfahren nach Anspruch 25 oder 30, wobei mindestens ein Teil der Simulationskonstruktionsdaten vorkonfiguriert und gespeichert ist und momentane Abtastwerte davon durch den Computer nach Erfordernis abgerufen werden.
  35. Verfahren nach einem der Ansprüche 22 bis 34, wobei mindestens ein Teil der Simulationskonstruktionsdaten vorkonfiguriert ist und vom Speicher abgerufen wird.
  36. Verfahren zum Implementieren einer Hardware-Anwendung, wobei das Verfahren die Schritte aufweist: (a) Verwenden des Bausteins nach einem der Ansprüche 1 bis 15; (b) Bereitstellen formatierter Daten, die von vorgegebenen Simulationskonstruktionsdaten hergeleitet werden und zum Herunterladen zum Baustein formatiert sind; und (c) Herunterladen der formatierten Daten zum Baustein.
  37. Verfahren nach Anspruch 36, wobei vor der Ausführung von Schritt (b) die Schritte ausgeführt werden (i) Konstruieren der Hardware-Anwendung nach einem der Ansprüche 22 bis 35 derart, daß die Simulationskonstruktionsdaten erzeugt werden; und (ii) Formatieren der Simulationskonstruktionsdaten derart, daß die formatierten Daten erzeugt werden.
  38. Verfahren zum Simulieren der Hardware-Anwendung nach Anspruch 14 oder 15, wobei das Verfahren dafür vorgesehen ist, auf dem Modul nach Anspruch 21 implementiert zu werden, und dazu geeignet ist, schrittweise ausgeführt zu werden, wobei das Verfahren die Schritte aufweist (a) Herunterladen der Daten in den mindestens einen Baustein in einem Emulationsmodul nach Anspruch 21; (b) Weiterleiten eines durch eine Steuereinheit erzeugten Eingangs-Abtastwertes über die mindestens eine Ein/Ausgabe-Schnittstelle an das Emulationsmodul; (c) Erfassen eines Ausgangs-Abtastwertes für eine Analyse vom Emulationsmodul über die mindestens eine Ein-/Ausgabe-Schnittstelle; (d) Empfangen eines Freigabesignals zum Freigeben der Eingabe eines anschließenden Eingangs-Abtastwertes in das Emulationsmodul; und (e) Wiederholen der Schritte (b) bis (d) nach Erfordernis.
  39. Verfahren nach Anspruch 38, wobei die Steuereinheit ein Computer ist.
  40. Verfahren nach Anspruch 39, wobei der Computer das Ausgangssignal empfängt, um es zu analysieren.
  41. Verfahren zum schrittweisen Ausführen einer Anwendung zur Verwendung mit dem Modul nach Anspruch 21, wobei das Verfahren die Schritte aufweist: (a) externes Zuführen eines Taktfreigabesignals, um der Anwendung das mindestens eine Taktsignal zuzuführen; und (b) internes Deaktivieren des Taktfreigabesignals, um die Zufuhr des mindestens einen Taktsignals zu verhindern, wenn durch die Anwendung die Gefahr einer Überlastung bevorsteht.
  42. Verfahren zur Verwendung mit einem im Modul von Anspruch 21 angeordneten Baustein zum Prüfen des Bausteins während eines Echtzeitbetriebs des Bausteins, wobei das Verfahren die Schritte aufweist: (a) Verbinden mindestens einer der Schnittstellen des zu prüfenden Moduls mit einer Steuereinheit; (b) Konfigurieren des zu prüfenden Bausteins, um Abtastwerte an spezifischen Punkten des Bausteins über mindestens eine der Schnittstellen abzunehmen; (c) Speichern der Abtastwerte in der Steuereinheit, um eine zeitliche Entwicklung oder Änderung der Abtastwerte des Bausteins in Echtzeit zu erhalten; (d) Verwenden der Steuereinheit zum Analysieren eines Subsets der zuletzt erhaltenen Abtastwerte; (e) gegebenenfalls Deaktivieren des Betriebs des zu prüfenden Bausteins, um zu ermöglichen, daß: (i) die zeitliche Entwicklung oder Änderung der Abtastwerte des Bausteins untersucht; (ii) ein momentaner Stromzustand des deaktivierten Bausteins untersucht; (iii) ein anderer Zustand zum deaktivierten Baustein heruntergeladen; (iv) der Echtzeitbetrieb des Bausteins wieder aufgenommen; und (v) der Echtzeitbetrieb des Bausteins neu gestartet werden kann.
  43. Verfahren nach Anspruch 42, wobei die Steuereinheit ein Computer ist, mit dem das Modul nach Anspruch 21 über die mindestens eine Ein-/Ausgabeschnittstelle verbunden ist.
  44. Verfahren zum Konstruieren eines anwendungsspezifischen Hardware-Bausteins mit einer gewünschten Funktionalität, wobei das Verfahren die Schritte aufweist: (a) Bereitstellen formatierter Daten, die in Verbindung mit einem Baustein nach Anspruch 14 oder 15 eine Bausteinarchitektur definieren, durch die die gewünschte Funktionalität realisiert wird; (b) Ersetzen der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) der Bausteinarchitektur durch feste Verbindungen, die die Konnektivität der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) realisieren; und (c) Ersetzen von Speicherelementen in mindestens einigen der Zellen in der Bausteinarchitektur durch entsprechende feste Ansteuerungspegel (Drive Levels) zum Realisieren der darin gespeicherten Daten; wobei die Architektur für eine direkte Implementierung des anwendungsspezifischen Hardware-Bausteins geeignet ist.
  45. Verfahren zum Konstruieren eines Hardware-Bausteins mit einer gewünschten Funktionalität, wobei ein Teil der Funktionalität durch einen anwendungsspezifischen Hardware-Baustein fest implementiert und ein Teil der Funktionalität umprogrammierbar ist, wobei das Verfahren die Schritte aufweist: (a) Bereitstellen formatierter Daten, die in Verbindung mit einem Baustein nach Anspruch 14 oder 15 eine Bausteinarchitektur definieren, durch die die gewünschte Funktionalität realisiert wird; (b) Ersetzen eines Teils der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) der Bausteinarchitektur durch feste Verbindungen, die die Konnektivität des Teils der ersten programmierbaren Matrix (109) und/oder der zweiten programmierbaren Matrix (102, 108) realisieren; und (c) Ersetzen von Speicherelementen in mindestens einigen der Zellen in der Bausteinarchitektur durch entsprechende feste Ansteuerungspegel (Drive Levels) zum Realisieren der darin gespeicherten Daten.
  46. Verfahren nach Anspruch 36, wobei, bevor die formatierten Daten zum Baustein nach Anspruch 14 oder 15 heruntergeladen werden, die Schritte ausgeführt werden: (i) Verwenden der formatierten Daten, um bausteinspezifische, erweiterte formatierte Daten zu erzeugen, die die formatierten Daten und eine Fehlerliste jeglicher fehlerhafter Zellen und/oder Verbindungen enthalten; (ii) Prüfen von Zellen und Verbindungen im Baustein und entsprechendes Aktualisieren der Fehlerliste; und (iii) Ändern der formatierten Daten in den bausteinspezifischen, erweiterten formatierten Daten nach Erfordernis, um die Verwendung jeglicher geprüfter und als fehlerhaft bewerteter Zellen und Verbindungen zu vermeiden.
  47. Verfahren für eine automatische Fehlererfassung und -korrektur zur Verwendung mit einem Baustein nach Anspruch 14 oder 15, wobei das Verfahren die Schritte aufweist: (a) Verwenden bausteinspezifischer, erweiterter formatierter Daten, die die formatierten Daten und eine Fehlerliste enthalten, die jegliche fehlerhaften Zellen und/oder Verbindungen anzeigt, um eine unbenutzte Zelle zu lokalisieren, die nicht in der Fehlerliste enthalten ist, wobei, wenn eine solche unbenutzte Zelle lokalisiert wurde, die Schritte ausgeführt werden: (i) Prüfen der unbenutzten Zelle und ihrer Verbindungen; (ii) Aktualisieren der bausteinspezifischen, erweiterten formatierten Daten und Wiederholen der Schritte ab Schritt (a), bis eine unbenutzte, nicht fehlerhafte Zelle lokalisiert wird, falls die unbenutzte Zelle und/oder irgendeine ihrer Verbindungen fehlerhaft ist; (iii) Verwenden der bausteinspezifischen, erweiterten formatierten Daten, um eine benutzte Zelle für eine Prüfung auszuwählen; (iv) Verwenden der bausteinspezifischen, erweiterten formatierten Daten, um die ausgewählte Zelle und ihre Verbindungen auf die unbenutzte Zelle zu kopieren; (v) Unterbrechen der Verbindung der ausgewählten Zelle und Aktualisieren der bausteinspezifischen, erweiterten formatierten Daten; und (vi) Wiederholen der Schritte ab Schritt (a) nach Erfordernis.
  48. Computerprogramm mit einer Computerprogrammcodeeinrichtung zum Ausführen aller Schritte der Verfahren nach einem der Ansprüche 22 bis 47, wobei das Programm auf einem Computer ausgeführt wird.
  49. Computerprogramm nach Anspruch 48, wobei das Programm auf einem computerlesbaren Medium gespeichert ist.
DE60003847T 1999-11-29 2000-11-28 Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung Expired - Lifetime DE60003847T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16768499P 1999-11-29 1999-11-29
US167684P 1999-11-29
PCT/IL2000/000797 WO2001039249A2 (en) 1999-11-29 2000-11-28 Universal hardware device and method and tools for use therewith

Publications (2)

Publication Number Publication Date
DE60003847D1 DE60003847D1 (de) 2003-08-14
DE60003847T2 true DE60003847T2 (de) 2004-05-27

Family

ID=22608375

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60003847T Expired - Lifetime DE60003847T2 (de) 1999-11-29 2000-11-28 Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung

Country Status (6)

Country Link
EP (1) EP1236222B1 (de)
JP (1) JP4642304B2 (de)
AT (1) ATE244930T1 (de)
AU (1) AU1727901A (de)
DE (1) DE60003847T2 (de)
WO (1) WO2001039249A2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904576B2 (en) 2002-08-09 2005-06-07 Synplicity, Inc. Method and system for debugging using replicated logic
US7213216B2 (en) 2002-08-09 2007-05-01 Synplicity, Inc. Method and system for debugging using replicated logic and trigger logic
US9009545B2 (en) 2013-06-14 2015-04-14 International Business Machines Corporation Pulsed-latch based razor with 1-cycle error recovery scheme
CN105824285B (zh) * 2016-03-14 2018-09-14 上海交通大学 用于单片机的可编程逻辑控制系统的编程设计方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4984192A (en) * 1988-12-02 1991-01-08 Ultrasystems Defense Inc. Programmable state machines connectable in a reconfiguration switching network for performing real-time data processing
TW396312B (en) * 1993-12-30 2000-07-01 At & T Corp Method and apparatus for converting field-programmable gate array implementations into mask-programmable logic cell implementations
US5543640A (en) * 1994-03-15 1996-08-06 National Semiconductor Corporation Logical three dimensional interconnections between integrated circuit chips using a two dimensional multi-chip module
US5778439A (en) * 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
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
US5991907A (en) * 1996-02-02 1999-11-23 Lucent Technologies Inc. Method for testing field programmable gate arrays
US6097211A (en) * 1996-07-18 2000-08-01 Altera Corporation Configuration memory integrated circuit
US5911059A (en) * 1996-12-18 1999-06-08 Applied Microsystems, Inc. Method and apparatus for testing software
GB2321989B (en) * 1997-02-05 2000-10-18 Altera Corp Redundancy circuitry for logic circuits
US6230304B1 (en) * 1997-12-24 2001-05-08 Magma Design Automation, Inc. Method of designing a constraint-driven integrated circuit layout
JP2000031284A (ja) * 1998-07-09 2000-01-28 Hitachi Ltd 検証用半導体集積回路および回路エミュレータ

Also Published As

Publication number Publication date
WO2001039249A3 (en) 2002-02-28
WO2001039249B1 (en) 2002-03-28
EP1236222A2 (de) 2002-09-04
AU1727901A (en) 2001-06-04
ATE244930T1 (de) 2003-07-15
WO2001039249A2 (en) 2001-05-31
JP4642304B2 (ja) 2011-03-02
EP1236222B1 (de) 2003-07-09
DE60003847D1 (de) 2003-08-14
JP2003516009A (ja) 2003-05-07

Similar Documents

Publication Publication Date Title
DE68929518T2 (de) Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
DE60104854T2 (de) System und Verfahren zum Testen integrierter Schaltungen
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
DE60100476T2 (de) Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors
DE69834892T2 (de) Eingebetteter Logikanalysator
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
EP0010173B1 (de) Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen
DE10034405B4 (de) Verfahren und System zum Programmieren von FPGAs auf PC-Karten ohne zusätzliche Hardware
DE60309931T2 (de) Verbindung mehrerer testzugriffsportsteuerungsvorrichtungen durch ein einzeltestzugriffsport
DE4420610A1 (de) Verfahren und Vorrichtung zum Konfigurieren von Speicherschaltkreisen
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE10238563A1 (de) System und Verfahren zum Testen von Schaltungen und Programmieren integrierter Schaltungsvorrichtungen
EP2990892B1 (de) Verfahren zum Verbinden einer Eingabe/Ausgabe-Schnittstelle eines für das Testen eines Steuergeräts eingerichteten Testgeräts
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE112015006067T5 (de) Intelligentes Funktionsmodul und speicherprogrammierbares Steuerungssystem
DE10231956A1 (de) Verfahren und Vorrichtung zur systeminternen Programmierung durch einen gemeinsamen Verbindungspunkt von programmierbaren logischen Bauelementen auf mehreren Schaltungsplatinen eines Systems
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE2902375A1 (de) Logikbaustein fuer integrierte digitalschaltungen
DE60003847T2 (de) Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
EP1469320A1 (de) Verfahren zur Generierung von Testersteuerungen
DE10347975B4 (de) Einrichtung der programmierbaren Logik

Legal Events

Date Code Title Description
8364 No opposition during term of opposition