DE3685711T2 - Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen. - Google Patents
Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen.Info
- Publication number
- DE3685711T2 DE3685711T2 DE8686902631T DE3685711T DE3685711T2 DE 3685711 T2 DE3685711 T2 DE 3685711T2 DE 8686902631 T DE8686902631 T DE 8686902631T DE 3685711 T DE3685711 T DE 3685711T DE 3685711 T2 DE3685711 T2 DE 3685711T2
- Authority
- DE
- Germany
- Prior art keywords
- simulation
- processor
- instruction
- logic
- processors
- 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 - Fee Related
Links
- 238000004088 simulation Methods 0.000 claims description 124
- 230000006870 function Effects 0.000 claims description 67
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 description 36
- 238000012546 transfer Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 230000002457 bidirectional effect Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
- US-Patentanmeldungen mit direktem oder indirektem Bezug zu dem Erfindungsgegenstand liegen wie folgt vor: Serien-Nr. 720 574, eingereicht am 5. April 1985 von Frederick G. Fellenser et al., mit dem Titel "Logische Simulationsprozessoren in einer Anordnung zur Simulation von Rechnerfunktionen für große Rechnersysteme".
- Die Erfindung betrifft eine Anordnung von Prozessorelementen und insbesondere eine solche Anordnung, die geeignet ist, gleichzeitig verschiedene Funktionen zu simulieren, welche in einem Prozessor und anderen Elementen eines Rechnersystems auftreten. Die Funktionen können ganze Subsysteme bis herunter zu einzelnen Gates (Gattern) umfassen.
- Bevor der Entwurf eines Computersystems in Form eines Prototypen realisiert wird, ist es üblich, die Funktionen der verschiedenen Elemente zu simulieren, um eine leichtere Fehlerdiagnose zu ermöglichen, die Überarbeitungszyklen zu reduzieren und auch im praktischen Betrieb die Veränderungsmöglichkeiten zu verbessern. Die Prüfung der Entwürfe durch solche Simulationen reduziert die durch Entwurfsfehler auftretenden Kosten.
- Bisher sind Simulationen des Entwurfes in den meisten Fällen mittels einer Programmsteuerung auf Mehrzweckcomputern durchgeführt worden. Programmsimulationen können jedoch oftmals eine Rechenzeit von bis zu Tausenden von Stunden erfordern, und zwar insbesondere bei großen Rechnersystemen mit einer großen Zeitdauer zwischen dem Beginn der Systemdefinition über den Schaltungsentwurf bis zur Fertigstellung eines Prototypen der Hardware des Systems.
- Aus diesem Grund sind für bestimmte Zwecke Systeme gebaut worden, mit denen spezifisch der Entwurf der Systemlogik auf Hardwareebene mit einer erheblichen Reduktion der Simulationszeiten (um einen Faktor 10 bis 1000) simuliert werden kann. Besondere Hardwaresimulatoren sind z.B. beschrieben worden in DeNeau, THE YORKTOWN SIMULATION ENGINE, IEEE Reports of the Nineteenth Design Automation Conference, sowie in Abramovici et al., A LOGIC SIMULATION MACHINE, ebenfalls in den genannten Conference Reports.
- Die Spezialrechner zur Systemsimulation sind bisher meistens als Inselgeräte entworfen worden, die entweder eine Parallelstruktur, eine Pipelinestruktur oder eine Kombination beider Strukturen aufweisen und sehr komplexe Steuereinheiten erfordern. Die Mehrzahl der Simulationsrechner für spezielle Anwendungsfälle ist an Forschungslaboratorien entworfen und gebaut worden, um die Entwurfssimulation zu untersuchen. Es besteht jedoch auch der Bedarf, Simulationsrechner für spezielle Anwendungsfälle zur Verfügung zu haben, die in einem Designzentrum in Verbindung mit einer Fertigungsanlage eingesetzt werden können, so daß Änderungen des Entwurfs und Systemverbesserungen leichter durchgeführt werden können.
- Die US-A-4 306 286 offenbart eine Anordnung von Basisprozessoren zur Simulation komplexer logischer Funktionen, die aus einfachen logischen Funktionen aufgebaut sind. Die Anordnung enthält eine Mehrzahl von Basisprozessoren sowie Knotenpunktprozessoreinrichtungen, die mit jedem Basisprozessor zur Übertragung von Informationen über Wertänderungen verbunden sind. Jeder der Basisprozessoren enthält eine logische Einheit zur Ausführung von verschiedenen einfachen logischen Funktionen unter Verwendung entsprechender Funktionsspeicher. Die Basisprozessoren enthalten Wertetabellen zur Speicherung gegenwärtiger Signalwerte, wobei die Wertetabelle mit der logischen Einheit verbunden ist, um einzelne der gegenwärtigen Signalwerte zu der entsprechenden logischen Einheit zu übertragen. Jeder Basisprozessor enthält weiterhin einen Befehlsspeicher zur Speicherung einer Folge von Befehlen, die jeweils eine bestimmte einfache auszuführende Funktion spezifizieren, sowie einer Adresse der Wertetabelle, um einen der gegenwärtigen Tabellen- Signalwerte abzurufen. Der Befehlsspeicher ist mit der Wertetabelle und der logischen Einheit verbunden, um die Ausführung einer spezifischen einfachen Funktion auf einen gegebenen gegenwärtigen Signalwert aus der Wertetabelle in Abhängigkeit von der in einem gegebenen Befehl enthaltenen Adresse zu steuern. Bei dieser Vorrichtung wird ein Speicher zur Ausführung der einfachen logischen Funktionen verwendet.
- In der US-A-4 096 566 ist eine Anordnung zur Berechnung von Einheiten offenbart, welche eine Mehrzahl von Knotenpunkt-Prozessoreinrichtungen aufweist, die miteinander und mit den Recheneinheiten verbunden sind, um eine baumähnliche Struktur zur Übertragung von Befehlen zu bilden. Eine Knotenpunkt-Prozessoreinrichtung dient als Wurzel des Baumes, die Recheneinheiten dienen als Blätter, so daß jede Knotenpunkt-Prozessoreinrichtung entweder eine Knotenpunkt-Prozessoreinrichtung auf niedrigerer Ebene oder eine Recheneinheit steuert.
- Der Erfindung liegt folglich die Aufgabe zugrunde, einen verbesserten Simulationsrechner für spezielle Zwecke anzugeben.
- Weiterhin soll ein solches Spezialrechnersystem nur eine wesentlich geringere Steuerkomplexität aufweisen.
- Schließlich wird ein System geschaffen, welches als Hilfssystem von einem Mehrzweck-Hauptrechner betrieben werden kann.
- Zur Erreichung der oben genannten Aufgaben und Ziele schlägt die Erfindung eine große Anzahl von logischen Prozessoren vor, welche die logischen Gleichungen, die Zustandselemente und die Speichereinrichtungen simulieren, und die jeweils getrennt programmierbar und in einer baumähnlichen Struktur angeordnet sind. Eine Mehrzahl von Netzwerkprozessoren bildet Zwischenknoten der baumartigen Netz struktur und dient zur Weiterleitung und Verteilung von Signalen. Ein Steuerprozessor dient zur Koordination des Simulationsprozesses, zur Einschaltung von externen Triggersignalen, zur Steuerung von Signalüberwachungen und zur Einsteuerung von Fehlermechanismen. Der Steuerprozessor bildet auch das externe Interface mit einem Hauptsystem, welches durch einen Mehrzweckrechner gebildet sein kann.
- Ein Kennzeichen der Erfindung besteht folglich in einer baumähnlichen Anordnung von Prozessorelementen, die jeweils logische Gleichungen, Zustandselemente und Speicheranordnungen mit einer hierarchischen Steuerung simulieren.
- Erfindungsgemäß ist eine Anordnung logischer Simulationsprozessoren vorgesehen, die zur Simulation komplexer logischer Funktionen dienen, welche aus einfachen logischen Funktionen gebildet werden. Die Anordnung umfaßt eine Mehrzahl logischer Simulationsprozessoren, eine Mehrzahl von Knotenpunkt-Prozessoreinrichtungen, die miteinander und mit der Mehrzahl logischer Simulationsprozessoren verbunden sind, um eine baumähnliche Anordung zur Übertragung von Informationen zu bilden, wobei eine Knotenpunkt-Prozessoreinrichtung als Wurzel des Baumes und die logischen Simulationsprozessoren als Blätter des Baumes dienen, so daß jede Knotenpunkt-Prozessoreinrichtung entweder eine Knotenpunkt-Prozessoreinrichtung auf niedrigerer Ebene oder einen logischen Simulationsprozessor steuert; wobei jeder Simulationsprozessor eine Funktionseinheit mit Schaltungen aufweist, die verschiedene logische Gatter zur Ausführung verschiedener einfacher logischer Funktionen umfassen; wobei jeder der logischen Prozessoren weiterhin eine Wertetabelle aufweist, die zur Speicherung gegenwärtiger Signalwerte dient und mit der Funktionseinheit verbunden ist, um einzelne der gegenwärtigen Signalwerte zu den entsprechenden Funktionseinheiten zu führen; wobei jeder der logischen Simulationsprozessoren weiterhin eine Befehlstabelle aufweist, die zur Speicherung einer Befehlsfolge dient, die jeweils eine bestimmte einfache auszuführende Funktion spezifiziert, und in der eine Adresse der Wertetabelle gespeichert ist, um auf einen gegebenen gegenwärtigen Signalwert zuzugreifen, und die weiterhin mit der Wertetabelle und der Funktionseinheit verbunden ist, um die Ausführung einer spezifizierten einfachen Funktion auf einen gegebenen gegenwärtigen Signalwert zu steuern, der von der Wertetabelle in Abhängigkeit von einer in einem gegebenen Befehl vorhandenen Adresse erhalten wurde. Die Anordnung umfaßt ferner eine Mehrzahl von als Rückstellstapel angeordneten Registern, wobei das oberste Register des Stapels mit der Funktionseinheit verbunden ist, um den Ausgang einer ausgeführten einfachen Funktion zu erhalten und um das zu der Funktionseinheit geführte Ausgangssignal als zweites Eingangssignal zur Ausführung einer zweiten einfachen Funktion zu übertragen.
- Die oben erwähnten Aufgaben, Vorteile und Eigenschaften der Erfindung werden im folgenden anhand der Zeichnungen genauer beschrieben werden. Es zeigen:
- Figur 1 ein schematisches Blockschaltbild einer Anordnung, bei der die Erfindung Anwendung findet;
- Figur 2 ein schematisches Blockschaltbild eines der logischen Simulationsprozessoren, die in einer entsprechenden Anordnung verwendet werden;
- Figur 3 ein schematisches Blockschaltbild eines erfindungsgemäßen Bus-Steuermoduls;
- Figur 4 ein schematisches Blockschaltbild der Steuereinheiten eines Knotenpunkt- oder Netzwerk-Simulationsprozessors der Simulationsanordnung; und
- Figur 5 eine schematische Darstellung der logischen Schaltung der Daten- Funktionseinheit.
- Gemäß Figur 1 ist eine Anordnung von Spezialprozessoren zur Ausführung logischer Simulationen gezeigt. Mit dieser Anordnung können funktionale Simulationen von sehr großen und komplexen Systementwürfen im implementierten Zustand bei Geschwindigkeiten durchgeführt werden, die um mehrere Größenordnungen höher sind, als die mit Programmsimulatoren erreichbaren Geschwindigkeiten. Wie in Figur 1 zu erkennen ist, hat die Anordnung im wesentlichen eine baumähnliche Struktur.
- Logische Simulationsprozessoren (LSP) 10, welche die Blätter des Baumes bilden, simulieren die logischen Gleichungen und die Zustandselemente und können auch Speicherstrukturen simulieren. Netzwerk-Simulationsprozessoren (NSP) 11 bilden Zweige oder Zwischenknoten des Baumes und dienen sowohl zur Führung bzw. Verteilung von Signalen, als auch zur Ausführung von anderen Funktionen, die weiter unten beschrieben werden sollen. Verschiedene Busse dienen zur Verbindung der Simulationsprozessoren untereinander. Der Zugriff der entsprechenden Prozessoren auf ihren Zwischenbus wird durch ein Bus-Steuermodul (BCM) 13 gesteuert. Jeder der entsprechenden Prozessoren enthält sein eigenes Programm und seine eigenen Daten und kommuniziert mit anderen Prozessoren durch den Austausch von Änderungsinformationen in dem Baum sowohl nach oben als auch nach unten.
- Ein Simulations-Steuerprozessor 12 koordiniert den Simulationsvorgang, die Anwendung von externen Steuersignalen, sowie die Steuerung der Signalüberwachung und der Einsteuerung von Fehlermechanismen, was weiter unten ausführlich beschrieben werden soll.
- Der Simulations-Steuerprozessor 12 enthält auch das externe Interface von der Anordnung zu einem Hauptsystem, welches in einem allgemein erhältlichen Prozessorsystem bestehen kann. Bei der erfindungsgemäßen Ausführungsform kann jede Anordnung bis zu etwa 300 getrennt programmierbare Prozessorelemente enthalten, und jeder Simulations-Steuerprozessor kann bis zu drei Simulationsanordnungen steuern.
- Durch die baumähnliche Struktur der erfindungsgemäßen Anordnungen kann jede Anordnung von verschiedenen Teilen des Baums abgegrenzt sein, um Funktionen auf Gateebene zu simulieren, was im folgenden beschrieben werden soll. Die Größe jedes Teils hängt von der Komplexität der zu simulierenden logischen Funktionen ab. Weiterhin kann durch jeden Prozessor in dem abgetrennten Bereich eine auftretende Signalveränderung angezeigt werden, so daß durch den Ausgang der Simulation dem Computerentwickler die verschiedenen Zustände angezeigt werden, die die verschiedenen Elemente während jeder gegebenen Taktzeit bei Ausführung der logischen Funktion durchlaufen.
- Alle logischen Simulationsprozessoren 10 gemäß Figur 1 sind identisch und in Figur 2 dargestellt. Gemäß dieser Figur sind die wesentlichen Elemente der logischen Simulationsprozessoren eine Datenfunktionseinheit 20, eine Wertetabelle 21 und eine Befehlstabelle 22. Die Datenfunktionseinheit 20 ist durch einen 1 Bit großen Stapelprozessor gebildet und hat einen Last-in-first-out- Stapel mit 21 Elementen (Rückstellstapel), dessen oberstes Register in Figur 2 durch ein S-Register 23 dargestellt ist. Der Stapel 23 wird durch verschiedene Befehle des unten beschriebenen Befehlssatzes beeinflußt. Getrennt von den logischen Operatoren enthält der Befehlssatz Funktionen zur Überprüfung von Änderungen in den Signalwerten und zur Erfassung von Flanken oder Änderungen in dem simulierten Taktsignal aufgrund der Simulation der logischen Funktion.
- Die in der Wertetabelle 21 gespeicherten Werte können als ein Schema oder ein Diagramm angesehen werden, welches eine gerade simulierte Funktion darstellt, die durch eine Folge von in der Befehlstabelle 22 gespeicherten Befehlen implementiert wird.
- Die Wertetabelle 21 besteht im wesentlichen aus drei einzelnen Tabellen, die jeweils 1 Bit breit und 16 K tief sind. Diese Tabellen werden mit Adressen adressiert, die auf Signalnamen Bezug nehmen und in entsprechenden Befehlen gespeichert sind, die in die Befehlstabelle 22 geladen wurden. Diese drei Wertetabellen sind in Figur 2 aus Gründen der Übersichtlichkeit nicht dargestellt, was jedoch die Verständlichkeit für einen Fachmann nicht beeinträchtigt. Die aktuelle Wertetabelle (Vp) enthält die laufenden Werte aller Signale, die während des laufenden Simulationszyklus zu übertragen sind. Die nächste Wertetabelle (Vn) enthält die anfänglichen Werte aller Signale zum Zeitpunkt des Beginns des nächsten Simulationszyklus. Wenn die momentan ausgeführte Funktion keine Verzögerung erfordert, sind Vn und Vp zu allen Zeiten identisch. Einheitsverzögerungen wird durch Schreiben eines neuen Signalwertes nur in Vn Rechnung getragen, so daß seine Ausbreitung bis zum Beginn des nächsten Simulationszyklus verzögert wird. Die dritte Wertetabelle (Vf) dient zur Einführung eines Fehlers in die Funktionslogik.
- Zusätzlich zu der zur Steuerung der Datenfunktionseinheit 20 dienenden Befehlsfolge kann die Befehlstabelle 22 weiterhin die internen Zustände der Speicher mit wahlfreiem Zugriff enthalten, wenn ein solcher Speicher simuliert wird. Wenn eine logische Funktion simuliert wird, haben die Simulatorbefehle folgende allgemeine Form:
- (Adresse) (n_c) (f) (op_code),
- wobei die Adresse die Adresse eines Befehls in der Befehlstabelle 22 oder eine Wertetabellenadresse in Abhängigkeit von dem gegenwärtig ausgeführten op_code darstellt; n_c stellt entweder den normalen oder den komplementären Wert des implementierten Eingangssignals oder den normalen oder komplementären Wert des momentanen obersten Registers des Stapels dar; f stellt eine Veränderungsfunktion des op_codes dar, der wiederum die durch die Datenfunktionseinheit 20 auszuführende Operation beinhaltet. Wie weiter unten noch beschrieben werden wird, enthält die Datenfunktionseinheit 20 eine Schaltung für nahezu jeden op_code. Ansonsten kann der op_code durch eine Kombination dieser Schaltungen implementiert werden. Der Ausgang der Datenfunktionseinheit 20 wird normalerweise in dem obersten Stapelregister 23 gespeichert, während die Eingänge der Datenfunktionseinheit 20 von der Wertetabelle 21 und dem Register 23 zugeführt werden.
- Der durch den in Figur 2 gezeigten logischen Simulationsprozessor verwendete Befehlssatz ist in vier Typen aufgeteilt. Die größte Befehlsgruppe sind Schiebebefehle, welche die Wertetabelle 21 und das oberste Register 23 des Stapelspeichers als Quellen für die Eingänge der Datenfunktionseinheit 20 verwenden und immer einen Ergebniswert in das oberste Register 23 des Stapelspeichers schieben. Für einige dieser Arten von op_code- Funktionen wird nur das Register 23 als Quelle für die Befehlseingänge verwendet. Wie oben bereits erwähnt wurde, ist der Adressteil des Befehls einer Stelle in der Wertetabelle 21 zugeordnet und mit einem Signalnamen versehen. Diese Befehlsgruppe umfaßt alle logischen Funktionen wie z.B. UND, ODER, XOR (EXKLUSIV ODER) und verschiedene Kombinationen davon. Zusätzlich enthält diese Befehlsgruppe den Schiebebefehl, der den Signalwert in das oberste Stapelregister 23 lädt, sowie einen Auswahloperator SEL, welcher eine Multiplexfunktion mit zwei Eingängen ausführt, bei der einer der zwei Werte aus dem Register 23 ausgewählt wird. Wenn der erste Wert wahr ist, wird der zweite Wert ausgewählt, anderenfalls wird ein dritter Wert gewählt. Das Ergebnis bleibt am obersten Ende des Stapels stehen. Zu dieser Gruppe gehört weiterhin ein Mehrheitsoperator MAJ, mit welchem eine Mehrheitsfunktion mit drei Eingängen ausgeführt wird, deren Ergebnis am oberen Ende des Stapelregisters 23 stehen bleibt.
- Die nächste Befehlsgruppe sind Speicherbefehle. Diese Befehle verwenden die Inhalte des Registers 23 als Eingang und speichern das Ergebnis in entweder der gegenwärtigen oder der nächsten Stelle der Wertetabelle 21, die durch den Adressteil des Befehls, den Signalnamen spezifiziert wird. Bei diesem Befehlstyp wird die op code-Funktion außer acht gelassen. Der Verzögerungsoperator DLY führt die Einheitsverzögerung aus, bei der die Stapel-Dateneinheit, bei Anforderung in invertierter Form, mit dem gegenwärtigen Zustandswert des Signalnamens verglichen wird. Wenn sie nicht gleich sind, wird das zur Datenübertragung erforderlich Flip-Flop (SRFF) der Flip-Flop-Gruppe 29 gesetzt, und der nächste Zustandswert des Signalnamens wird durch den obersten Wert des Stapels ersetzt, welcher dann in dem Stapel gelöscht wird. Wenn ein Datentransfer erforderlich ist, so wird dieser durch den das Netzwerk steuernden Simulationsprozessor eingeleitet, durch den das Flip-Flop SWFF in der Flip-Flop-Gruppe 29 gemäß Figur 2 gesetzt wird. Dadurch wird durch den Multiplexer 21 in Figur 2 ein Wert aus der nächsten Wertetabelle Vn anstelle aus der gegenwärtigen Wertetabelle Vp ausgewählt.
- Zwei wichtige Operatoren in dieser Gruppe sind die interne Änderungsüberprüfung des gegenwärtigen Wertes des Signalnamens (CHKI) und die externe Änderungsüberprüfung des Wertes des Signalnamens (CHKE). Die interne Änderungsüberprüfung dient zur Überprüfung des gegenwärtigen Wertes des Signalnamens. Der erste (oberste) Wert des Stapels wird - sofern erforderlich invertiert - mit dem gegenwärtigen Zustandswert des Signalnamens verglichen. Wenn keine Gleichheit besteht, wird das interne Änderungs-Flip-Flop (ICFF) der Flip-Flop-Gruppe 29 gesetzt und der gegenwärtige Zustandswert des Signalnamens durch den obersten Wert des Stapels ersetzt, der dann aus dem Stapel entfernt wird. Die externe Änderungsüberprüfung des Signalnamens ist ähnlich mit der Ausnahme, daß nach Auftreten einer Änderung der Signalname und sein neuer Wert zu dem entsprechenden steuernden Netzwerk-Simulationsprozessor übertragen wird. Der externe Überprüfungsoperator ist für gegenüber dem logischen Simulationsprozessor gemäß Figur 2 externen Signalen zu verwenden.
- Die dritte Befehlsgruppe, die verwendet werden kann, dient zur Simulation von Speichern mit wahlfreiem Zugriff und umfaßt zwei Operatoren, von denen einer zum Lesen/Schreiben der Befehlstabelle dient, wenn diese in ihrem simulierten Speicherzustand verwendet wird. Mit dem zweiten Operator werden Befehlsstellen reserviert, um Daten für den simulierten Speicher mit wahlfreiem Zugriff zu speichern.
- Die letzte Befehlsgruppe betrifft Steuerbefehle, die den obersten Wert des Stapels als Eingangssignal verwenden können, ihr Ergebnis dient jedoch zur Änderung des Steuerflusses des logischen Simulationsprozessors. Die op_code-Funktion ist eine Zweigfunktion, und das Befehls-Adressfeld ist ein Befehlsteil (ein Befehlsname).
- Die zwei Operatoren dieser letzten Gruppe sind der Zweigoperator (BRCH) und der Schleifen-Ende-Operator (ENDL). Wenn die Zweigfunktion "1" (wahr) ist, ist die Adresse des nächsten auszuführenden Befehls der mit diesem Operator verbundene Befehlsname. Im anderen Fall wird die Ausführung mit dem nächsten Befehl fortgesetzt, der dem Zweigoperator unmittelbar folgt. Der Schleifen- Ende-Operator (ENDL) dient zur Kennzeichnung des Endes einer Iteration des laufenden Codes in der Befehlstabelle 22 von Figur 2. Der Operator überträgt die laufende Inhalte des internen Änderungs-Flip-Flops zu dem externen Änderungs-Flip-Flop und setzt das erstere zurück.
- Die erfindungsgemäße Simulation einer Funktion erfolgt durch sequentielle Abarbeitung des in der Befehlstabelle 22 gespeicherten Befehlssatzes durch Inkrementierung des Inhaltes des N-Registers 27. Diese sequentielle Abarbeitung wird so oft wiederholt, bis keine Änderungen in den entsprechenden in der Wertetabelle 21 gespeicherten Signalwerten mehr erfaßt werden. Dies bedeutet, daß die gerade simulierte Funktion einen statischen oder stabilen Zustand erreicht hat. Der logische Simulationsprozessor gemäß Figur 2 wartet dann so lange, bis eine externe Signaländerung erfaßt wird, die entweder eine Änderung eines der Eingänge durch Änderung eines in der Wertetabelle 21 gespeicherten Wertes verursacht oder bei gesetztem Datentransfer-Flip-Flop SWFF gemäß Figur 2 zu einer Auswahl der nächsten Zustands-Wertetabelle Vn anstelle der momentanen Zustands-Wertetabelle Vp durch den Multiplexer 21a führt. Die Simulation der Funktion wird dann wiederholt. Wenn ein Zweigbefehl auftritt, wird seine Adresse zur Adressierung der Befehlstabelle 22 mittels des Multiplexers 26 verwendet. Die Befehlstabelle 22 kann auch, wie in Figur 2 gezeigt, von dem S-Register 23 adressiert werden.
- Die Aufspürung von Änderungen und deren Meldung an die Simulationssteuerung 12 gemäß Figur 1 wird durch drei Flip-Flops der Flip-Flop-Gruppe 29 von Figur 2 gesteuert, und zwar insbesondere durch das Flip-Flop ICFF für interne Änderungen, das Flip-Flop ECFF für externe Änderungen und das für den Datentransfer erforderliche Flip- Flop SRFF. Die Flip-Flops für interne und externe Änderungen werden immer dann gesetzt, wenn eine Änderung des gegenwärtigen Wertes eines internen Signals erfaßt wird. Am Ende jeder Iteration der Befehlsfolge wird der laufende Wert des Flip-Flops für interne Änderungen in das Flip-Flop für externe Änderungen geladen und das erstere rückgesetzt. Das Flip-Flop für externe Änderungen wird weiterhin immer dann gesetzt, wenn ein Befehl zur Übertragung der gegenwärtigen/nächsten Zustands-Wertetabellen empfangen wird und das für den Datentransfer erforderliche Flip-Flop (SRFF) gesetzt wird. Dieses SRFF Flip-Flop wird immer dann gesetzt, wenn durch eine Einheits-Verzögerungsfunktion erfaßt wird, daß der nächste Zustandswert nicht gleich dem momentanen Zustandswert ist. Es wird beim Beginn jeder Iteration des Codes rückgesetzt. Diese letzteren Funktionen werden durch den Verzögerungsoperator DLY, den internen Änderungsoperator CHKI und den Schleifen-Ende-Operator ENDL implementiert, was oben beschrieben wurde.
- Wenn es erforderlich ist, Taktzustandselemente zu simulieren, kann ein eine Wertänderung anzeigendes Informationssignal zu dem logischen Simulationsprozessor gemäß Figur 2 gesendet werden, um den Wert eines geeigneten momentanen Zustandswertes zu ändern, der einem gegebenen Befehl zugeordnet ist. Wenn dieser geänderte Wert mit dem oben beschriebenen Vergleichsvorgang zusammentrifft, wird das Flip-Flop für externe Änderungen gesetzt und auf diese Weise der Simulations-Steuereinheit mitgeteilt, daß sich der Taktsignalwert geändert hat.
- Wie in Figur 1 gezeigt ist, steht jeder logische Simulationsprozessor 10 mit seinem Steuernetzwerk-Simulationsprozessor oder Knotenpunkt 11 über ein entsprechendes Bus-Steuermodul 13 in Verbindung. Gemäß Figur 2 werden Informationen von dem dort gezeigten logischen Simulationsprozessor auf einen Ausgangsbus LGOB (local global output bus) gegeben und von seinem entsprechenden Bus- Steuermodul auf einem Eingangsbus LGIB (local global input bus) empfangen. Die Übertragung über die Busse wird durch einen weiteren Bus LBC (local bus control bus) gesteuert, der auch die Ausgänge der Steuer-Flip- Flops 29 und das zu dem Flip-Flop SWFF geführte Transfersignal umfaßt.
- In Figur 3 ist ein Schaltbild der entsprechenden Bus- Steuermodule 13 von Figur 1 gezeigt. Die für alle Schnittstellen gültige grundsätzliche Regel besteht darin, daß jeder Knotenpunkt zu allen seinen örtlichen Knoten übertragen kann und daß durch einen örtlichen Knoten zunächst ausdrücklich eine Freigabe angefordert werden muß, um zu seinem nächsten globalen Knoten zu senden.
- Die allgemeine Form der übertragenen Botschaften sieht wie folgt aus:
- (Flag) (Initialisierung) (Signalname) (Wert).
- Das Flag und das Initialisierungs-Bit bilden einen "op_code" zur Steuerung des Netzwerk-Simulationsprozessors. Wenn eine Übertragung entlang des Baumes nach unten zu einem logischen Simulationsprozessor erfolgt, haben diese Bits eine der drei folgenden Bedeutungen: Information über Simulationsänderung, Leseanforderung des logischen Simulationsprozessors und Schreibanforderung des logischen Simulationsprozessors. Wenn die Übertragung entlang des Baumes nach oben zu der Simulationssteuereinheit 12 gemäß Figur 1 erfolgt, so haben diese Bits wiederum eine der drei folgenden Bedeutungen: Information über Simulationsänderung, Leseantwort des logischen Simulationsprozessors, sowie Anzeige einer Off- Line/Fehlerbedingung durch ein getrenntes Flag-Bit.
- Wenn die Übertragung entlang des Baumes nach oben erfolgt, so ist der Botschaft eine Bezeichnung ihrer Quelle vorangestellt, im Falle der Übertragung entlang des Baumes nach unten ist die Information durch eine Benennung ihrer Bestimmung angeführt.
- Wenn gemäß Figur 3 ein bestimmter logischer Simulationsprozessor zur Übertragung über das in Figur 3 gezeigte Bus-Steuermodul freigegeben worden ist, wird der entsprechende Ausgangsbus LGOB durch den Multiplexer 35 ausgewählt, welcher in Folge zwei Worte empfängt, die zu dem örtlichen Wort 0 Register 36 bzw. dem örtlichen Wort 1 Register 37 geführt werden. Wie oben bereits beschrieben wurde, bezeichnet das örtliche Wort 0 eine Quelle, während das örtliche Wort 1 die zu übertragende Information darstellt. Diese zwei Worte werden dann mittels eines Multiplexers 38 in Folge zu dem steuernden Netzwerk-Simulationsprozessor geführt. Zwar sind die entsprechenden örtlichen Ausgangsbusse LGOB am Eingang des Multiplexers 35 15 Bit breit dargestellt, sie umfassen tatsächlich jedoch eine Breite von 16 Bits, von denen jedoch ein Bit nicht verwendet wird, da es als Prüfbit reserviert ist, welches durch einen Paritätsgenerator 39 erzeugt wird.
- Wenn Informationen entlang des Baumes nach unten übertragen werden, wird die Bezeichnung der Bestimmung von dem globalen Wort 0 Register 40 und die Information durch das globale Wort 1 Register 41 empfangen. Die Worte werden dann aufeinanderfolgend auf den örtlichen globalen Eingangsbus (LGIB) des von dem Mulitplexer 42 ausgewählten logischen Simulationsprozessors geführt. Paritäts-Prüfschaltungen 43 und 45 überprüfen die Parität und melden dem steuernden Netzwerk-Simulationsprozessor das Auftreten eines Fehlers.
- Eine interne Steuereinheit 46 steuert die entsprechenden Eingangs- und Ausgangsbusse von dem ausgewählten logischen Simulationsprozessor sowie ihre Steuersignale von den Flip-Flops 29 gemäß Figur 2. Die interne Steuereinheit 46 enthält zwei Flip-Flops für jede der Schaltungen, an der sie anliegen. Dieses sind die Fehler- und Off-Line-Flip-Flops. Diejenige Einrichtung, deren Off- line-Flip-Flop gesetzt ist, wird durch die Bus-Steuereinheit ignoriert. Wenn von der Bus-Steuereinheit eine Information empfangen wird, die an eine Einrichtung gerichtet ist, deren Off-Line-Flip-Flop gesetzt ist, so wird zu der entsprechenden Sendereinheit ein Fehler-Flag übertragen. Wenn durch die Einrichtung ein interner Fehler oder ein Fehler einer Übertragung von einer Bus- Steuereinheit erfaßt wird oder wenn die Bus-Steuereinheit einen Übertragungsfehler von einer ihrer Einrichtungen erfaßt, so setzt diese sowohl das Off-Line-Flip- Flop als auch das Fehler-Flip-Flop dieser Einrichtung und erzeugt ein Fehler-Flag. Dieser Vorgang ist auch Bestandteil des steuernden Netzwerk-Simulationsprozessors. In diesem Fall werden das Off-Line-Flip-Flop und das Fehler-Flip-Flop zur internen Verfolgung der Fehler zu ihrem Netzwerk-Simulationsprozessor sowie für Fehler- Flag-Informationen verwendet, die als Ergebnis von durch die Bus-Steuereinheit erfaßten Paritätsfehlern oder von durch eine örtliche Einrichtung gemeldeten Fehlern auftreten. Im Gegensatz zu der Bus-Steuereinheit erzeugt der Netzwerk-Simulationsprozessor jedoch kein Fehler- Flag.
- Die in Figur 1 gezeigten Netzwerk-Simulationsprozessoren 11, die die verschiedenen Knoten des Baumes bilden, haben alle die gleiche Struktur, die im Detail in Figur 4 gezeigt ist. Es handelt sich dabei um einen kleinen tabellengesteuerten Prozessor, dessen Hauptfunktion darin besteht, Informationen über Änderungen zwischen den verschiedenen lokalen Simulationsprozessoren 10 von Figur 1 zu übertragen. Jeder Netzwerk-Simulationsprozessor steuert entweder einen Netzwerk-Simulationsprozessor auf einer niedrigeren Ebene oder logische Simulationsprozessoren, wobei jeder logische Simulationsprozessor und jeder Netzwerk-Simulationsprozessor durch einen und nur einen Netzwerk-Simulationsprozessor gesteuert wird. Wie in Figur 1 gezeigt, ist die auf diese Weise gebildete Wurzel des Baumes mit der Simulations-Steuereinheit 12 verbunden.
- Der in Figur 4 gezeigte Prozessor enthält ein Netzverbindungs-File 50, welches aus einer verbundenen Liste aller Quellen und Verbraucher der Signale besteht, die dieser weiterleitet. Das Netzwerk-Verbindungs-File 50 ist in eine Anzahl fester Bereiche aufgeteilt. Der erste Bereich oder Abschnitt enthält Tabellen für jede der unmittelbar gesteuerten Einrichtungen. Der zweite Bereich dient als Warteschlange, in der Signale von einer Steuereinheit einer höheren Ebene während eines laufenden Vorganges durch den Netzwerk-Simulationsprozessor gemäß Figur 4 zwischengespeichert werden. Ein dritter Bereich enthält eine einzige Tabelle für Signale, die für den Prozessor gemäß Figur 4 von allgemeiner Bedeutung sind, insbesondere Signale, die zu der diesen Prozessor steuernden Einrichtung geführt werden müssen. Die Aufteilung des Netzwerk-Verbindungs-Files 50 unterscheidet sich geringfügig von einem Netzwerk-Simulationsprozessor zu einem anderen, und zwar in Abhängigkeit davon, welcher Typ von Einrichtung gesteuert wird. In dieser Beschreibung sind "örtliche Signale" solche Signale, deren Werte von der zu steuernden Einrichtung empfangen und/oder zu dieser gesendet werden, während "globale" Signale solche sind, deren Werte von der steuernden Einrichtung empfangen und/oder zu dieser gesendet werden. Das Netzwerk-Verbindungs-File 50 jedes Netzwerk-Simulationsprozessors kann eine beliebige Anzahl lokaler Signale, jedoch nicht mehr als ein globales Signal umfassen.
- Der Netzwerk-Simulationsprozessor gemäß Figur 4 wird ereignisabhängig betrieben. Dieser übernimmt eine Änderung des Wertes einer Signalquelle, berechnet die neuen sich ergebenden Werte für die Verbraucher in diesem Teil des Netzwerkes, welchen er steuert und leitet diese Werte erforderlichenfalls dann zu den betroffenen Einrichtungen weiter. Wie in Figur 1 gezeigt, empfängt und sendet jeder Netzwerk-Simulationsprozessor örtliche Meldungen von und zu einem Bus-Steuermodul 13 einer niedrigeren Ebene und sendet und empfängt weiterhin globale Meldungen zu bzw. von einem Bus-Steuermodul 13 einer höheren Ebene. Diese Meldungen können entweder die oben beschriebenen Änderungsinformationen oder solche Befehle sein, die zum Laden der Werte- und Informationstabellen des örtlichen Simulationsprozessors 10 erforderlich sind, welcher die Blätter des Baumes in Figur 1 bildet.
- Gemäß Figur 4 werden Daten sowohl von den Steuereinrichtungen auf niedrigerer Ebene als auch von denjenigen auf höhere Ebene über Eingabe-/Ausgaberegister 51a...e empfangen. Die Eingangsdaten von der globalen oder Steuereinrichtung werden mit einem globalen Datenregister 51a empfangen. Eingangsdaten von einer gesteuerten Einrichtung werden mit einem Wort 0 Register 51b und einem Wort 1 Register 51c empfangen, die weiterhin auch zur Übertragung von Ausgangsdaten zu einer gesteuerten Einrichtung dienen, was im einzelnen weiter unten beschrieben werden wird. Ein Zwischenregister 51d dient zur Angabe eines zweidirektionalen Speicherplatzes während des Zugriffs auf das Netzwerk-Verbindungs-File 50, während ein Startadressenregister 51e eine Adresse zum Starten der Netzwerk-Verbindungs-File-Operation angibt, was im einzelnen unten beschrieben werden wird. Das Wort 0 Register 51b und das Wort 1 Register 51c werden auch zur Übertragung von Ausgangsdaten zu dem Steuermodul des globalen Bus oder des Steuerbus verwendet.
- Wie oben angegeben wurde, nimmt der Prozessor gemäß Figur 4 eine Änderung des Wertes einer Signalquelle entgegen, berechnet den neuen sich ergebenden Wert für die Verbraucher in dem betreffenden abgetrennten Teil des Netzwerkes, welches durch den Netzwerk-Simulationsprozessor gemäß Figur 4 gesteuert wird und überträgt diese Werte dann zu den betroffenen Steuereinrichtungen, welche die logischen Simulationsprozessoren oder die Netzwerk-Simulationsprozessoren sein können. Der neue geladene Wert wird mit einem Algorithmus unter der Steuerung des NSP-Steuerbereiches 52a berechnet. Ein Zustandsregister 52b gibt den Status an, in dem sich der NSP-Steuerbereich befindet.
- Im folgenden soll der Berechnungs-Algorithmus beschrieben werden. Wenn sich in einem bestimmten abgegrenzten Netzwerk kein globaler zweidirektionaler Knotenpunkt befindet, wird der zu ladende Wert durch Summierung (ODER- oder UND-Verknüpfung) aller lokalen Quellenwerte (bei Annahme einer verdrahteten ODER-Logik) berechnet. Wenn sich dieser Wert von dem gegenwärtigen Wert unterscheidet, wird er zu allen Verbrauchern (jede der gesteuerten Einrichtungstabellen in dem Netzwerk-Verbindungs-File 50) geführt, um nachfolgend zu den betroffenen Einrichtungen übertragen zu werden. Wenn in dem abgegrenzten Netzwerk ein globaler zweidirektionaler Knotenpunkt vorhanden ist und sich die Änderung auf eine lokale Quelle bezieht, so werden die lokalen Quellen in der oben beschriebenen Weise summiert, und der globale Verbraucher wird ohne Änderung des Wertes der lokalen Verbraucher auf diesen Wert gesetzt. Wenn in dem betreffenden abgegrenzten Netzwerk ein globaler zweidirektionaler Knotenpunkt vorhanden ist und die Änderung eine globale Quelle betrifft, wird der globale Quellenwert zu allen lokalen Verbrauchern übertragen. Ein Knotenpunkt ist dann zweidirektional, wenn sowohl die Signale für Ladewerte als auch für Quellenwerte gesetzt sind, was weiter unten beschrieben werden wird.
- Die Berechnung wird unter Verwendung des Namens des Signales durchgeführt, für welches die Veränderungsmeldung empfangen worden ist (die 14 niedrigstwertigen Bits von Wort 1), gekennzeichnet durch den Namen der Einrichtung, von der dieses empfangen wurde, als Startpunkt in dem Netzwerk-Verbindungs-File 50 sowie durch Verschiebung der verbundenen Einträge, bis der ursprüngliche Signalname wieder angetroffen wird. Sowohl zur Berechnung des neuen Ladewertes, als auch zu seiner Verteilung können mehr als einen Durchlauf der Liste (jedoch nicht mehr als zwei Durchgänge) erfordern. Die Anzahl der erforderlichen Durchgänge kann durch besondere Markierung der Quellenknoten in einem einzigen Quellennetz als solchem minimiert werden, wobei die Startadresse aus dem Register 51e und die zweidirektionale Speicherzellenadresse - sofern eine in dem Register 51d vorhanden ist - verwendet werden. Aufgrund des Startadressenregisters 51e und des Zwischenregisters 51d sowie der Tatsache, daß die Einträge in dem Netzverbindungs-File 50 in geordneter Weise verbunden sind, werden keine vollständigen Durchläufe auftreten.
- Z.B. werden bei einer globalen-zu-lokalen Operation 16 Bits der globalen Eingangsdaten von dem globalen Datenregister 51a zu der Eingabeschlange (nicht gezeigt) in dem Netzwerk-Verbindungs-File 50 übertragen. Wenn der NSP-Steuerbereich 52a nicht gerade andere Funktionen abarbeitet, dient er zur Übertragung des Ausganges der Eingabe-Warteschlange zu dem Wort 1 Register 51c als Startadresse in dem Netzwerk-Verbindungs-File 50. Es dient zum Wiederauffinden eines 20-Bit-Datenwortes, welches in das Wort 1 Register 51c und ein Datenerweiterungsregister 54a eingespeichert wird. Der während der Übertragung von der Eingabeschlange zu dem Wort 1 Register 51c (Bit 14) eingespeicherte Wert wird in einem internen Flip-Flop zwischengespeichert. Bit 15 dient als Paritätsbit. Die 14 niedrigstwertigen (letzten) Bits des Wort 1 Registers 51c dienen nun als Verbindungsadresse in dem Netzwerk-Verbindungs-File 50. Die nächsten zwei Bits (14 und 15) stellen den Code einer gültigen Quelle dar, Bit 16 bezeichnet einen gültigen Verbraucher, Bit 17 den Quellenwert, Bit 18 den Verbraucherwert und Bit 19 ist ein Paritätsbit. Der Quellenwert in dem ersten Netzwerk-Verbindungs-File-Eintrag wird auf den in dem internen Flip-Flop (oben beschrieben) zwischengespeicherten Wert gesetzt. Der Quellencode wird daraufhin abgefragt, ob eine einzige Quelle, eine simulierte verdrahtete UND- oder ODER-Funktion oder ein zweidirektionaler Knotenpunkt vorliegt. In Abhängigkeit von diesem Quellencode wird an diesem Punkt entweder eine neue sich ergebende Quelle bestimmt oder mit einer anderen Verbindung in dem Netzwerk-Verbindungs-File 50 fortgefahren. Wenn die sich ergebende Quelle gefunden wird und wenn eine Änderung festgestellt wird, dient das Startadressenregister 51e zur Modifizierung der Verbraucher.
- Der Netzwerk-Simulationsprozessor gemäß Figur 4 kann zur gleichen Zeit nur eine Änderung bearbeiten. Wenn eine solche Änderung bearbeitet wird oder von außerhalb eine Anforderung zur Annahme einer solchen vorliegt, wird ein NSP-Flip-Flop in der örtlichen Quellen-Steuereinheit 53 gesetzt, welches anzeigt, daß die Simulations-Steuereinheit zu dieser Zeit keine Informationen annehmen kann. Der Ausgang dieses Flip-Flops wird durch die in Figur 1 gezeigte Simulations-Steuereinheit 12 verwendet und stellt einen der Ausdrücke in der Gleichung dar, mit der bestimmt wird, wann sich eine laufende Simulation stabilisiert hat. Weitere Ausdrücke in dieser Gleichung sind ein Besetztsignal des logischen Simulationsprozessors, ein Anforderungssignal des logischen Simulationsprozessors für Datenübertragung, sowie ein lokales Fehlersignal von dem Ausfallregister 54c.
- Wenn ein Datentransfersignal angefordert wird, überträgt die Simulations-Steuereinheit 12 gemäß Figur 1 ein Datentransfersignal, welches von der globalen Steuereinheit 55 empfangen wird. Ferner kann die Simulation auch durch Aussenden eines Stopsignals unterbrochen werden, welches bei Empfang durch den betroffenen logischen Simulationsprozessor dessen Simulation unterbricht, wenn dieser zu einem Schleifenende-Befehl (ENDL) in seiner Befehlstabelle gelangt.
- Wenn der Prozessor gemäß Figur 4 bei gesetztem Flag eine Änderungsmeldung empfängt, welche eine Meldung von einer von diesem gesteuerten Einrichtung bezeichnet, so wird die Identifikation der Einrichtung, von der die Information von dem Wort 0 Register 51b empfangen wurde angehängt und zu seiner globalen Steuereinheit übertragen, ohne daß der Inhalt interpretiert wird. Wenn der Prozessor eine solche Meldung von seiner globalen Steuereinheit erhält, wird sie zu der adressierten Einrichtung übertragen. Solche Meldungen können nicht an den Netzwerk-Simulationsprozessor gemäß Figur 4 adressiert werden. Sie sind nur für die logischen Simulationsprozessoren 10 sowie die Simulations-Steuereinheit 12 gemäß Figur 1 vorgesehen.
- Die Schnittstelle des Bus-Steuermoduls mit der globalen Seite eines Netzwerk-Simulationsprozessors erhält für diesen Prozessor eine On-Line/Off-Line-Kennzeichnung. Wenn durch einen On-Line-Prozessor ein interner Fehler erfaßt wird, sendet dieser ein entsprechendes Indikationssignal zu diesem Bus-Steuermodul. Das Bus-Steuermodul speichert diesen Fehler in einem Register, setzt den Netzwerk-Simulationsprozessor off-line und überträgt die Fehleranzeige wie ein entsprechendes Bus-Steuermodul für einen logischen Simulationsprozessor zu der Simulations- Steuereinheit.
- Wenn eine Meldung zu einem Off-Line-Netzwerk-Simulationsprozessor gesendet wird, so empfängt dieser Prozessor zwar die Meldung, er kann diese jedoch weder global noch lokal übertragen, da das Bus-Steuermodul alle von diesem Prozessor ausgehenden Signale blockiert. Das Bus- Steuermodul wird vielmehr ein Fehlerflag signalisieren.
- Ein Teil einer logischen Schaltung der Datenfunktionseinheit 20 gemäß Figur 2 ist in Figur 5 gezeigt. Der op_code-Teil eines Befehls wird von einem Multiplexer 62 empfangen, um die Ausgänge der logischen Schaltungen für die ersten acht Befehle, die oben beschrieben wurden, auszuwählen. Eine Eingangsfunktion, die auch ein Wert aus der Wertetabelle 21 aus Figur 2 sein kann, wird zu allen logischen Gattern 63a,...d, 63f, einer Auswahlfunktion 63h, welche im wesentlichen eine Multiplexsimulation ausführt, sowie zu den Gattern 63j,...m geführt. Der Ausgang des Multiplexers 62 liegt an dem S Register 23 an, welches das oberste Register in einem Rückstellstapel oder FILO (first in-last out) Stapel ist, was mit Bezug auf Figur 2 beschrieben wurde. Spezial-Logikschaltungen für andere Funktionen sind in Figur 5 nicht gezeigt.
- Die anderen Eingänge der logischen Gatter sind die Bits 0, 1 oder 2 des S Registers 23, die durch den Multiplexer 61 gemäß dem an diesen angelegten Eingangs- Funktionscode ausgewählt werden.
- Zum Zwecke der Simulation von Computerfunktionen für große Computersysteme sind eine Anordnung verschiedener Typen von Prozessoren sowie auch die einzelnen Prozessoren beschrieben worden. Die Funktionen können einfache UND, ODER und andere Funktionen oder auch komplexe arithmetischer logischer Einheiten und sogar Speicher mit wahlfreiem Zugriff sein. Die Simulationsanordnung ist baumähnlich strukturiert, wobei die Blätter des Baumes die einzelnen logischen Simulationsprozessoren darstellen und die anderen Prozessoren als Knotenpunkte dienen, die Meldungen bezüglich Änderungen von Werten zwischen den verschiedenen logischen Simulationsprozessoren übertragen. Jeder logische Simulationsprozessor ist getrennt programmierbar, und zwar unter hierarchischer Steuerung durch einen Simulations-Steuerprozessor an der Wurzel des Baumes, der verschiedene Simulationen überwacht und auch eine externe Schnittstelle zu einem Hauptrechnersystem, welches ein Computer für allgemeine Zwecke sein kann, bildet.
Claims (5)
1. Anordnung von logischen Simulations-Prozessoren zur
Simulation komplexer logischer Funktionen, die aus
einfachen logischen Funktionen gebildet werden, mit
einer Mehrzahl von logischen Simulations-Prozessoren
(10),
einer Mehrzahl von Knotenpunkt-Prozessoreinrichtungen
(11), die miteinander und mit der Mehrzahl logischer
Simulations-Prozessoren (10) zur Bildung einer
Prozessoranordnung verbunden sind, wobei
jeder der logischen Simulations-Prozessoren (10) eine
Funktionseinheit (20) mit Schaltungen mit verschiedenen
logischen Gattern zur Ausführung verschiedener einfacher
logischer Funktionen aufweist,
jeder der logischen Prozessoren (10) weiterhin eine zur
Speicherung von gegenwärtigen Zahlenwertsignalen
vorgesehene Wertetabelle (21) aufweist, die mit der
Funktionseinheit (20) verbunden ist, um einzelne der
gegenwärtigen Zahlenwertsignale zu den entsprechenden
Funktionseinheiten zu führen, und
jeder der logischen Simulations-Prozessoren (10)
weiterhin Befehlstabellen (22) zur Speicherung einer Folge von
Befehlen aufweist, die jeweils eine bestimmte einfache
auszuführende Funktion spezifizieren, sowie eine Adresse
der Wertetabelle (21), um auf ein gegebenes
gegenwärtiges Zahlenwertsignal zuzugreifen, wobei die
Befehlstabelle
mit der Wertetabelle (21) und der
Funktionseinheit (20) gekoppelt ist, um die Ausführung einer
spezifischen einfachen Funktion bei einem gegebenen
gegenwärtigen Zahlenwertsignal zu steuern, das von der
Wertetabelle (21) in Abhängigkeit von einer in einem
gegebenen Befehl enthaltenen Adresse empfangen worden ist,
dadurch gekennzeichnet, daß die Prozessoranordnung
- eine baumartige Struktur zur Übertragung von
Informationen aufweist, wobei eine der
Knotenpunkt-Prozessoreinrichtungen (11) als Wurzel des Baums und die
logischen Simulations-Prozessoren (10) als Blätter
des Baumes dienen, so daß jede
Knotenpunkt-Prozessoreinrichtung (11) entweder
Knotenpunkt-Prozessoreinrichtungen (11) mit niedrigerer Hierarchie oder die
logischen Simulations-Prozessoren (10) steuert und
- eine Mehrzahl von Registern aufweist, die als
Rückstellstapel (23) angeordnet sind, wobei das oberste
Register dieses Stapelspeichers (23) mit der
Funktionseinheit (20) gekoppelt ist, um das Ergebnis der
Ausführung einer einfachen Funktion zu erhalten und
dieses Ergebnis zu der Funktionseinheit (20) als
zweites Eingangssignal zur Ausführung einer zweiten
einfachen Funktion zu übertragen.
2. Anordnung nach Anspruch 1,
dadurch gekennzeichnet, daß jeder der logischen
Simulations-Prozessoren (10) eine Ablaufsteuerung aufweist,
die jeweils mit der entsprechenden Befehlstabelle (22)
verbunden ist, um eine Folge von Ausführungen einfacher
Funktionen durch die entsprechende Funktionseinheit mit
den gegenwärtigen Zahlenwertsignalen zu steuern, die
durch jeden der Befehle der Befehlssequenz adressiert
sind.
3. Anordnung nach Anspruch 2,
dadurch gekennzeichnet, daß jeder logische Simulations-
Prozessor (10) eine sich intern ändernde Flip-Flop-
Schaltung aufweist, die in der Funktionseinheit (20)
realisiert ist und Vergleichseinrichtungen zum Vergleich
eines gegenwärtigen Zahlenwertsignales, welches von der
Wertetabelle (21) empfangen wurde mit einem
Zahlenwertsignal, welches von dem Rückstellstapel (23) erhalten
wurde, aufweist, wobei die Vergleichseinrichtungen mit
der sich intern ändernden Flip-Flop-Schaltung verbunden
sind, um diese Flip-Flop-Schaltung zu setzen, wenn die
zwei Signale nicht gleich sind und das gegenwärtige
Zahlenwertsignal in der Wertetabelle (21) durch das von dem
Rückstellstapel (23) empfangene Zahlenwertsignal zu
ersetzen.
4. Anordnung nach Anspruch 3,
dadurch gekennzeichnet, daß jede Befehlsfolge einen
Sequenzende-Befehl und jeder logische
Simulations-Prozessor (10) Einrichtungen aufweist, die mit der
Befehlstabelle (22) verbunden sind, um die Befehlsfolge zu
wiederholen, wenn der Sequenzende-Befehl erfaßt wird und
das intern sich ändernde Flip-Flop gesetzt worden ist.
5. Anordnung nach Anspruch 4,
dadurch gekennzeichnet, daß jeder logische Simulations-
Prozessor (10) weiterhin eine sich extern ändernde Flip-
Flop-Schaltung aufweist, die Einrichtungen zum Setzen
der sich extern ändernden Flip-Flop-Schaltung enthält,
sowie zum Rücksetzen der sich intern ändernden Flip-
Flop-Schaltung, wenn die Befehlsfolge abgeschlossen ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/720,573 US4819150A (en) | 1985-04-05 | 1985-04-05 | Array for simulating computer functions for large computer systems |
PCT/US1986/000655 WO1986005900A1 (en) | 1985-04-05 | 1986-04-02 | An array for simulating computer functions for large computer systems |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3685711D1 DE3685711D1 (de) | 1992-07-23 |
DE3685711T2 true DE3685711T2 (de) | 1993-01-21 |
Family
ID=24894496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8686902631T Expired - Fee Related DE3685711T2 (de) | 1985-04-05 | 1986-04-02 | Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4819150A (de) |
EP (1) | EP0217922B1 (de) |
JP (1) | JPS62502151A (de) |
CA (1) | CA1246743A (de) |
DE (1) | DE3685711T2 (de) |
WO (1) | WO1986005900A1 (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5060150A (en) * | 1987-01-05 | 1991-10-22 | Motorola, Inc. | Process creation and termination monitors for use in a distributed message-based operating system |
US5093920A (en) * | 1987-06-25 | 1992-03-03 | At&T Bell Laboratories | Programmable processing elements interconnected by a communication network including field operation unit for performing field operations |
DE3855236D1 (de) * | 1987-08-17 | 1996-05-30 | Us Commerce | Verfahren zur behandlung der bösartigen und autoimmunen krankheiten beim menschen |
DE3808649A1 (de) * | 1988-03-15 | 1989-10-05 | Nixdorf Computer Ag | Steuereinrichtung fuer ein elektrisches bzw. elektromechanisches geraet |
JP3144950B2 (ja) * | 1993-04-28 | 2001-03-12 | 富士通株式会社 | 論理シミュレーション方式 |
US5680583A (en) * | 1994-02-16 | 1997-10-21 | Arkos Design, Inc. | Method and apparatus for a trace buffer in an emulation system |
US5561795A (en) * | 1994-05-13 | 1996-10-01 | Unisys Corporation | Method and apparatus for audit trail logging and data base recovery |
US5920712A (en) * | 1994-05-13 | 1999-07-06 | Quickturn Design Systems, Inc. | Emulation system having multiple emulator clock cycles per emulated clock cycle |
GB9413127D0 (en) * | 1994-06-30 | 1994-08-24 | Philips Electronics Uk Ltd | Data processing apparatus |
US5838908A (en) * | 1994-11-14 | 1998-11-17 | Texas Instruments Incorporated | Device for having processors each having interface for transferring delivery units specifying direction and distance and operable to emulate plurality of field programmable gate arrays |
US5561762A (en) * | 1995-06-06 | 1996-10-01 | Union Switch & Signal Inc. | Malicious fault list generation method |
US5923865A (en) * | 1995-06-28 | 1999-07-13 | Quickturn Design Systems, Inc. | Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing |
US5819065A (en) * | 1995-06-28 | 1998-10-06 | Quickturn Design Systems, Inc. | System and method for emulating memory |
US5822564A (en) * | 1996-06-03 | 1998-10-13 | Quickturn Design Systems, Inc. | Checkpointing in an emulation system |
US6134516A (en) * | 1997-05-02 | 2000-10-17 | Axis Systems, Inc. | Simulation server system and method |
US5960191A (en) * | 1997-05-30 | 1999-09-28 | Quickturn Design Systems, Inc. | Emulation system with time-multiplexed interconnect |
US5970240A (en) * | 1997-06-25 | 1999-10-19 | Quickturn Design Systems, Inc. | Method and apparatus for configurable memory emulation |
GB2336008B (en) * | 1998-04-03 | 2000-11-08 | Schlumberger Holdings | Simulation system including a simulator and a case manager adapted for organizing data files |
US6618698B1 (en) * | 1999-08-12 | 2003-09-09 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
US7096174B2 (en) * | 2001-07-17 | 2006-08-22 | Carnegie Mellon University | Systems, methods and computer program products for creating hierarchical equivalent circuit models |
US7575742B2 (en) | 2002-06-28 | 2009-08-18 | The United States Of America As Represented By The Secretary Of The Department Of Health And Human Services | Method of treating autoimmune diseases with interferon-beta and IL-2R antagonist |
US20070073999A1 (en) * | 2005-09-28 | 2007-03-29 | Verheyen Henry T | Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register |
US8589841B2 (en) * | 2012-04-05 | 2013-11-19 | International Business Machines Corporation | Automatic parity checking identification |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2296221A1 (fr) | 1974-12-27 | 1976-07-23 | Ibm France | Systeme de traitement du signal |
US4306286A (en) * | 1979-06-29 | 1981-12-15 | International Business Machines Corporation | Logic simulation machine |
JPS5975347A (ja) * | 1982-10-21 | 1984-04-28 | Toshiba Corp | 論理回路のシミユレ−シヨン装置 |
US4587625A (en) * | 1983-07-05 | 1986-05-06 | Motorola Inc. | Processor for simulating digital structures |
-
1985
- 1985-04-05 US US06/720,573 patent/US4819150A/en not_active Expired - Lifetime
-
1986
- 1986-04-02 WO PCT/US1986/000655 patent/WO1986005900A1/en active IP Right Grant
- 1986-04-02 EP EP86902631A patent/EP0217922B1/de not_active Expired - Lifetime
- 1986-04-02 JP JP61502128A patent/JPS62502151A/ja active Pending
- 1986-04-02 DE DE8686902631T patent/DE3685711T2/de not_active Expired - Fee Related
- 1986-04-03 CA CA000505826A patent/CA1246743A/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
US4819150A (en) | 1989-04-04 |
EP0217922A1 (de) | 1987-04-15 |
EP0217922B1 (de) | 1992-06-17 |
JPS62502151A (ja) | 1987-08-20 |
DE3685711D1 (de) | 1992-07-23 |
CA1246743A (en) | 1988-12-13 |
WO1986005900A1 (en) | 1986-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3685711T2 (de) | Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen. | |
EP0010198B1 (de) | Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE3508291C2 (de) | Datenverarbeitungssystem | |
DE3750236T2 (de) | Gerät zur In-line-Abfragesteuerung für Datenprozessorprüfung. | |
DE3650532T2 (de) | Speicher mit programmierbarem Zugang | |
DE3338333A1 (de) | Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur | |
DE3606650A1 (de) | Hardware logik-simulator | |
DE19510902A1 (de) | Emulation eines Mehrtor-Speichers unter Verwendung von Markierregistern | |
DE60209631T2 (de) | Verfahren zur Programmierung einer Automatisierungsapplikation | |
DE1499722B1 (de) | Einrichtung zur modifizierung von informationswoertern | |
DE3851554T2 (de) | Steuerungsanordnung für gemeinschaftlichen Speicher. | |
DE2501853A1 (de) | Prozessor fuer ein datenverarbeitungssystem | |
DE19814415A1 (de) | Logikanalyse-Untersystem in einem Zeitscheibenemulator | |
DE69225527T2 (de) | Verfahren und System zur automatischen Bestimmung der logischen Funktion einer Schaltung | |
DE69816714T2 (de) | Instrumentationsanordnung für eine Maschine mit nichtuniformen Speicherzugriffen | |
DE69130513T2 (de) | Verfahren zur Durchführung boolescher Operationen zwischen zwei beliebigen Bits von zwei beliebigen Registern | |
DE3919802C2 (de) | Speichersteuersystem für ein Multiprozessorsystem | |
DE1191145B (de) | Elektronische Zifferrechenmaschine | |
DE3037475A1 (de) | Schnittstellenschaltungsanordnung fuer eine datenverarbeitungsanlage | |
DE69122001T2 (de) | Integrierte Schaltung mit einer Standardzelle, einer Anwendungszelle und einer Prüfzelle | |
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE19530669A1 (de) | Verfahren zum automatischen Auswählen eines taktsteuernden Signalpfads in umprogrammierbaren Systemen zur Hardware-Emulation | |
EP0347970B1 (de) | Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens | |
DE60221515T2 (de) | Speichersystem für schleifenbeschleunigung nach wunsch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |