DE69634227T2 - Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung - Google Patents

Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung Download PDF

Info

Publication number
DE69634227T2
DE69634227T2 DE69634227T DE69634227T DE69634227T2 DE 69634227 T2 DE69634227 T2 DE 69634227T2 DE 69634227 T DE69634227 T DE 69634227T DE 69634227 T DE69634227 T DE 69634227T DE 69634227 T2 DE69634227 T2 DE 69634227T2
Authority
DE
Germany
Prior art keywords
outputs
shift register
coupled
inputs
logic
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
DE69634227T
Other languages
English (en)
Other versions
DE69634227D1 (de
Inventor
Ingo Schaefer
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Application granted granted Critical
Publication of DE69634227D1 publication Critical patent/DE69634227D1/de
Publication of DE69634227T2 publication Critical patent/DE69634227T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Description

  • Die Erfindung betrifft im allgemeinen digitale Emulationssysteme und insbesondere ein digitales Emulationssystem unter Verwendung mehrerer Logikprozessoren mit einem verbesserten Signal-Routing.
  • Mit zunehmendem Anstieg der Geschwindigkeit und Komplexität beim Design elektronischer Schaltungen wird es zunehmend kritisch, die Schaltungsanordnungen in den verschiedenen Entwicklungsstufen bei ihrer Entwicklung zu testen. Hardwareemulatoren stellen ein Mittel zum Test komplexer Schaltungsanordnungen bei ihrer Entwicklung dar. Derartige Emulatoren bieten typischerweise eine konfigurierbare Hardware, die mittels Software gesteuert wird, um die Funktionen einer sich im Entwurf befindenden Schaltung auszuführen. Die Schaltungsanordnung wird durch eine Gruppe von Daten spezifiziert, die die Schaltungsstruktur und ihr Verhalten definiert.
  • Emulatoren arbeiten unter der Steuerung durch Software. Die Schaltungsanordnung wird „kompiliert", um das Programm zu erzeugen, das den Emulator steuert. Der Prozeß des Kompilierens der Anordnung zur Herstellung des Programms für den Emulator ist ein kritischer und langwieriger Prozeß. Der Grund für eine lange Kompilierungszeit besteht teilweise darin, daß es das Ziel ist, ein Programm zu erzeugen, das die Schaltungsanordnung so schnell wie möglich emuliert. Bei Emulatoren ist die Geschwindigkeit besonders wichtig, da der Emulator die Funktionen der emulierten Schaltung nicht so schnell ausführen kann, wie die tatsächliche Schaltung selbst. Es ist erstrebenswert, den Emulator mit Geschwindigkeiten zu betreiben, die so nahe wie möglich an der Zielbetriebsgeschwindigkeit der emulierten Schaltung liegen, um die Anordnung mit externen Schaltungen oder anderen Vorrichtungen korrekt verbinden zu können und die Schaltung auf zeitliche Koordinierungsprobleme zu testen.
  • Ein anderer Grund, warum der Kompilierungsschritt komplex und zeitaufwendig ist, besteht darin, daß Beschränkungen bei der Hardware des Emulators eine Optimierung des Programms bezüglich der Geschwindigkeit, ohne daß viele Berechnungen bei der Kompilierung durchgeführt werden müssen, erschweren. Da ein Emulator die Funktionsweise in einem breiten Bereich von Schaltungsanordnungen ausführen muß, sollte er so flexibel wie möglich sein. Das bedeutet, daß das Emulationssystem Logikprozeßhardware enthalten muß, die bei unterschiedlichen Anordnungen wieder verwendbar ist. Ein derartiges Emulationssystem würde eine große Anzahl von allgemein verwendbaren Prozeßelementen enthalten, die dazu verwendet werden, die Funktion der emulierten Schaltung indirekt auszuführen. Beispielsweise würde man zur Emulation einer Multiplizierer-Schaltung eher einen allgemein verwendbaren Emulator zur Ausführung mehrerer Boolescher Logikgleichungen verwenden als einen speziellen Hardware-Multiplizierer für denselben Zweck, der dann bei der Emulation von Schaltungsanordnungen, die keine Multipliziererfunktionen enthalten, unbrauchbar wäre. Um diese Gleichungen zu lösen, müssen viele Steuerelemente oder andere Vorrichtungen im Emulator mit Signalen versorgt werden. Des weiteren müssen die Ausgangssignale der Steuerelemente oder anderen Komponenten wirkungsvoll zu den verschiedenen Komponenten des Emulators geleitet werden.
  • Obwohl der Kompilierungsschritt kompliziert und aufwendig ist, ist es notwendig, diesen Schritt so kurz wie möglich zu gestalten, so daß ein Entwickler nicht lange auf eine Emulierung der letzten Änderung der Anordnung warten muß. Dies ist insbesondere dann von Bedeutung, wenn Emulatoren beim Entwurf und bei der Entwicklung integrierter Schaltungen verwendet werden. Viele Änderungen werden schrittweise vorgenommen, wobei jede einen Kompilierungsschritt erfordert, bevor die Emulation fortgesetzt werden kann. Dies impliziert, daß die Dauer des Kompilierungsschrittes verkürzt werden sollte, um die Effizienz des Emulators zu verbessern.
  • Das Dokument US-A-4 306 286 offenbart eine Simulationsmaschine mit einem Array speziell konstruierter paralleler Prozessoren, die ohne eine Begrenzung der Zahl der Prozessoren zu einem Array zusammengesetzt werden können.
  • Das Dokument EP-A-0 336 243 offenbart eine Simulationsmaschine zur Simulation eines Logiknetzes in mehreren Hierarchie-Ebenen mit mehreren Logikeinheiten, die über ein Kabelnetz mit mehreren Schaltungseinheiten verbunden sind.
  • Im Dokument EP-A-0 449 579 wird eine Logiksimulationsmaschine beschrieben, die eine Host-Schnittstelle umfaßt, die einen FIFO-Puffer aufweist, der sich zwischen der Logiksimulationsmaschine und dem Host-Rechner zur Pufferung von Daten befindet, bis ein Empfänger zum Empfang der Daten bereit ist.
  • In Anbetracht der obengenannten Nachteile ist es erstrebenswert, einen Simulator herzustellen, der kurze Kompilierungszeiten gewährleistet und ein zur Emulation einer Schaltungsanordnung mit hoher Geschwindigkeit geeignetes Emulationsprogramm erzeugt.
  • Abriß der Erfindung
  • Die vorliegende Erfindung verwendet eine verbesserte Routing- und Verarbeitungsarchitektur, die einen Austausch von Signalen zwischen mehreren Prozessoren in einer integrierten Schaltung oder zwischen integrierten Schaltungen zuläßt. Die Verwendung von Wählmitteln, die mit Schieberegistern gekoppelt sind, die wiederum zusätzliche Wählmittel mit Ausgängen zu Logikeinheiten oder Logikprozessoren versorgen, gewährleistet eine flexible Architektur, während ebenfalls ein einheitliches Programmier-Modell gewährleistet wird, das zu kurzen Kompilierungszeiten führt.
  • Gemäß einer bevorzugten Ausführungsform wird ein Emulationssystem zur Emulation einer Schaltungsanordnung auf einem Chip hergestellt und umfaßt erste mit mehreren Eingangssignalen gekoppelte Wählmittel. Einige der Eingangssignale zu den ersten Wählmitteln umfassen Ausgangssignale von den Logikprozessoren auf demselben Chip wie die ersten Wählmittel, während andere Eingangssignale von Logikprozessoren oder anderen integrierten Schaltungen stammen. Es werden Schieberegister oder „Pipelines" vorgesehen, deren Eingangssignale die Ausgangssignale der ersten Wählmittel sind. Die Schieberegister gewährleisten eine Speicherung der Signale von den ersten Wählmitteln gemäß den Programmschritten eines zur Steuerung des Emulationssystems verwendeten Programms.
  • Zweite, mit den Ausgängen der Pipelines gekoppelte Wählmittel werden dazu verwendet, die Signale, die an einen einzelnen Logikprozessor angelegten werden sollen, weiter auszuwählen. Die Ausgänge der zweiten Wählmittel werden den Eingängen der Logikprozessoren zugeführt. Diese Anordnung von Wählmitteln, Schieberegistern und Logikprozessoren gewährleistet ein einheitliches Routing-Schema, das zu Vorteilen sowohl bezüglich der Geschwindigkeit der Kompilierung vor der Emulationsphase als auch der Ausführungsgeschwindigkeit während der Emulationsphase führt.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm auf Systemebene einer einzelnen integrierten Schaltung im Emulator gemäß der vorliegenden Erfindung;
  • 2 zeigt ein erweitertes Diagramm des Routings einiger Funktionsblöcke in 1;
  • 3 zeigt weitere Einzelheiten der Schaltung der ersten Funktionsblöcke in 1;
  • 4 zeigt ein erweitertes Diagramm der Logik im Logikeinheit-Block aus 1;
  • 5 zeigt weitere im Bezug zur Eingangsstiftschaltung aus 4 stehende Einzelheiten;
  • 6 zeigt weitere Einzelheiten im Emulationsspeicherblock aus 1;
  • 7 zeigt eine Konfiguration auf Platinenebene der zwölf Logikeinheit-Chips gemäß der vorliegenden Erfindung;
  • 8A zeigt ein Beispiel einer zu emulierenden Schaltung;
  • 8B zeigt das Zeitablauf-Diagramm für die Schaltung aus 8A;
  • 9 ist eine Darstellung eines zur Verwendung beim Emulationssystem-Compiler gemäß der vorliegenden Erfindung geeigneten Computersystems;
  • 10 ist eine Darstellung grundlegender Untersysteme im Computersystem aus 9;
  • 11 zeigt eine Technologieabbildung der Schaltung aus 8A;
  • 12 zeigt Zuweisungen von Logikfunktionen zu Logikprozessoren;
  • 13 zeigt Zuweisungen von Logikprozessoren zu Zeitschlitzen und Busleitungen;
  • 14 zeigt die Zuordnung von Eingängen zu Busleitungen;
  • 15 ist eine Eingangs-/Ausgangs-Abbildung für Prozessoren im Zeitschlitz 1;
  • 16 ist eine Eingangs-/Ausgangs-Abbildung für Prozessoren im Zeitschlitz 2;
  • 17 zeigt die MUX-Einstellungen für die 1K:1-Wählmittel im Zeitschlitz 1;
  • 18 zeigt die MUX-Einstellungen für die 1K:1-Wählmittel im Zeitschlitz 2;
  • 19 zeigt die Einstellungen für die 48:1-Multiplexer im Zeitschlitz 0;
  • 20 zeigt die Einstellungen für die 48:1-Multiplexer im Zeitschlitz 1; und
  • 21 zeigt die Einstellungen für die 48:1-Multiplexer im Zeitschlitz 2.
  • Beschreibung der bevorzugten Ausführung
  • 1 ist ein Blockdiagramm auf Systemebene eines einzelnen „Chips" in einer bevorzugten Ausführungsform des Emulators gemäß der vorliegenden Erfindung. Der gezeigte Aufbau auf Systemebene, wie z.B. der Chip 100 in 1, wird auf einer einzelnen integrierten Schaltungsbaugruppe (IC) hergestellt, die als der Hydra-Chip bezeichnet wird. Die zusätzlichen 27 zeigen Einzelheiten auf Platinenebene und Blockebene des Logikemulatorsystems. Obwohl eine spezielle Ausführungsform eines Emulators zum Zweck der Veranschaulichung erläutert wird, ist der Umfang der Erfindung nicht auf diese spezielle Ausführungsform beschränkt.
  • In 1 umfaßt der Chip 100 verschiedene Unterschaltungen zur Durchführung spezieller Funktionen. Die Unterschaltungen sind in 1 als Blöcke, wie beispielsweise Steuerungsdaten 102 gezeigt. Bei der Erläuterung des Emulationssystems wird die Architektur des Logikemulationssystems im unmittelbar nachfolgenden Abschnitt dargestellt. Als nächstes wird eine detaillierte Erläuterung ausgewählter Unterschaltungen im Logikemulationssystem mit einer Fokussierung auf Unterschaltungen 106112 vorgestellt, die das Wählmittel- und Schieberegister-Routing von Daten zu den Hydra-Logikeinheiten („HLU") betreffen, die dem Logikemulationssystem bezüglich seiner Eignung variable Daten allgemein und einheitlich zwischen den HLUs zu routen, spezielle Vorteile verleihen. In einem nachfolgenden Textabschnitt wird ein Beispiel einer Kompilierung einer Schaltung zur Ausführung im Emulationssystem vorgestellt.
  • I. Architektur des Logikemulationssystems
  • In 1 werden Steuerungsdaten 102 zur Speicherung der Mikrocode-Steuerungswörter verwendet, die den Betrieb des Hydra-Chips („chip") steuern. Bei der bevorzugten Ausführungsform sehen die Kontrolldaten 102 64 Kontrollstifte vor, wovon jeder ungefähr 10.000 Bits in der Breite umfaßt. Mittels Steuerungsleitungen werden verschiedene Zahlen von Bits in jedem Steuerungswort zu anderen Funktionsblöcken auf dem Chip geroutet, um beispielsweise n:1-Wählmittel, Schieberegister, Durchgangsgates, eine Signalumkehr, wie im nachfolgenden erläutert wird, zu steuern. Zur Vereinfachung der Darstellung sind die Steuerungsleitungen in 1 weggelassen. Jedoch ist ersichtlich, daß die Steuerungswörter auf im Stand der Technik bekannte Weise zur Steuerung der verschiedenen Vorrichtungen und Funktionsblöcke verwendet werden können.
  • Die Steuerungsdaten 102 werden mit bis zu 64 Steuerungswörtern des durch einen Compiler erzeugten Steuerungsprogramms geladen. Bei dem Compiler handelt es sich um Software, die als Eingabe eine Beschreibung einer zu emulierenden Schaltung erhält und ein Steuerungsprogramm in der Form von Gleichungen und einer Steuerungslogik ausgibt, um den Chip dazu zu veranlassen, die gewünschte Schaltung zu emulieren. Die Wörter des Steuerungsprogramms werden bei jedem Emulationszyklus ausgeführt, wobei ein Emulationszyklus ein Zyklus der emulierten Schaltung ist. Das bedeutet, daß beim Emulieren einer Schaltung, die mit 1 MHz arbeitet, der Emulationszyklus 1,0 μs ist. Das bedeutet, daß alle Programmschritte innerhalb von 1 μS beendet sein müssen. Da ein Maximum von 64 Programmschritten zulässig ist, würde der Emulatortakt mit maximal 46 MHz laufen. Falls weniger als 64 Programmschritte vorhanden sind, kann die Geschwindigkeit des Emulatortaktes entsprechend verringert werden.
  • Der Emulator umfaßt die Möglichkeit, jeden Programmschritt auf bis zu drei zusätzliche Emulatortaktzyklen zu verlängern. Dies ist bei einem Verbinden des Emulators mit Zielhardware nützlich, die eine längere Zugriffszeit erfordert. Wenn die Programmschritte verlängert werden, wird dadurch verständlicherweise der Gesamtprogrammzyklus entsprechend ausgedehnt.
  • Bei dem RAM 104 mit programmierbaren Ausgängen handelt es sich um einen 16 × 256 – Bit-Direktzugriffsspeicher (RAM), so daß der Chip mit einer Möglichkeit versehen ist, vordefinierte Ausgangswerte an eine externe Schaltung zu senden. Wie in 1 gezeigt ist, gehen vom Chip 12 Bits zur Außenumgebung aus, die für eine Verbindung mit externen Schaltungen verwendet werden können. Die weiteren vier Bits jedes Wortes sind Bits zum „internen Gebrauch", die zur Steuerung von Chip-Funktionen verwendet werden. Das RAM mit programmierbaren Ausgängen 104 ermöglicht, daß der Compiler „konfektionierte" Ausgangswerte zur Ausgabe zu festgelegten Zeitpunkten in einem emulierten Taktzyklus definieren kann. Es existieren 256 gemäß dem Emulatortakt in einer Reihenfolge sequenzierte Adressen. Des weiteren gibt es vier mal so viele Orte für Wörter im RAM 104 wie Orte für Steuerungsdatenwörter in den Steuerungsdaten 102, da der Chip zuläßt, die Steuerungsdatenzyklen auf bis zu drei zusätzliche Zyklen auszudehnen. Somit kann jedes der 64 Steuerungswörter für bis zu vier Zyklen auf den Ausgangsleitungen der Steuerungsdaten 102 gehalten werden. Unterdessen werden die Adreß-Orte des RAMs 104 immer noch inkrementiert. Dies ermöglicht es, daß die Werte in einem Steuerungswortzyklus vom RAM 104 ausgegeben werden, wenn das Steuerungswort ausgedehnt wird. Die Geschwindigkeit, mit der der RAM 104 sequenziert ist, beträgt beim vorliegenden Beispiel 64 MHz.
  • Die Funktionsblöcke 106112 bilden das Herz der Routing- und Prozeß-Fähigkeit des Chips. Diese Blöcke werden nachfolgend in Einzelheiten erläutert. Im wesentlichen gewähren die Blöcke 106110 die Multiplexierungs- und Schieberegister-/Speicherungs-Fähigkeit für Variablenwerte, die den HLUs 112 zur Verarbeitung zugeführt werden.
  • Der Funktionsblock 112 umfaßt 8 Logikeinheiten, wovon jede aus vier Hydralogic-Prozessoren („Prozessor") mit vier Ausgängen bei einer Gesamtzahl von 32 Ausgängen besteht. Diese Ausgänge von den acht internen Logikeinheiten sind als Eingänge zum 3:1-Wählmittel 114 umfaßt. Die anderen Eingänge des 3:1-Wählmittels 114 umfassen Signale von der Rückwand (die als BPlane in bezeichnet wird) über 32:1-Wählmittel 112. Dies ermöglicht, daß jedes der 32 Rückwandsignale zu einem beliebigen Eingang des 3:1-Wählmittels 114 geleitet werden kann. Die Rückwandsignale sind Zwischenplatinensignale. Der Aufbau des Logikemulationssystems auf Platinenebene wird nachfolgend in Verbindung mit 7 erläutert. Die dritte Gruppe von Eingängen zum 3:1-Wählmittel 114 kommt vom Speicher 124. Der Speicher 124 ist mit dem Ausgang des 3:1-Wählmittels 114 verbunden, um zu ermöglichen, daß das Emulationssystem einen RAM oder mehrere RAMs in der Schaltungsanordnung des Benutzers emulieren kann. Die Ausgänge des 3:1-Wählmittels 114 werden zum 2:1-Wählmittel 120 und zu Anschlußfeldern im Chip zugeführt. Das 2:1-Wählmittel 120 hat die Funktion, die Signale zu den Eingängen der HLUs über die Routing-Anordnung der Blöcke 106110 zurückzugeben. Somit ermöglicht das 3:1-Wählmittel 114, daß das System unter drei getrennten Signalquellen zur Ausgabe zu Prozessoren sowohl innerhalb als auch außerhalb des Chips, auf dem die Prozessorfunktion des emulierten Systems gemäß der vorliegenden Erfindung hergestellt ist, wählen kann.
  • Bei der bevorzugten Ausführungsform handelt es sich bei dem Speicher 124 um einen 4K × 32-Bit-RAM. Der RAM wird mit mittels HLUs auf dem und außerhalb des Chips erzeugten Signalen über die Rückwand adressiert. Eines oder mehrere Bits der Adresse können zur Verwendung bei jedem Emulatorzyklus erhalten und gespeichert werden. Die Adresse wird stückweise über einen oder mehrere Zyklen aufgebaut und verknüpft, so daß das System eine hohe Flexibilität beim Emulieren der Adreßlogik in der emulierten Schaltungsanordnung aufweist. Die Strukturen zum Verknüpfen und Anwenden der Adresse sind in 1 nicht gezeigt. Datenwerte für den RAM werden von den Ausgängen der HLUs, von der Rückwand oder vom RAM selbst erhalten.
  • Das Register 116 gewährleistet das Speichern der Ausgangswerte von den HLUs, so daß sie um einen Emulatorzyklus oder mehr verzögert werden können. Ob die momentanen Variablenwerte oder die gespeicherten Variablenwerte aus dem Register 116 ausgegeben werden, wird durch das Einzelmodus-Bit 118 bestimmt, das zur Steuerungsleitung des 2:1-Wählmittels 120 hinzugefügt ist. Das Einzelmodus-Bit 118 wird von einem der vier Bits zum „internen Gebrauch" des RAM 104 erhalten, wie oben erläutert ist. Daher ist es bei jedem Emulator-Taktzyklus veränderbar.
  • Die 32:1-Wählmittel 126, UND-Gatter 128 und der RAM 130 ermöglichen, daß Signale von den HLUs wählbar zur Rückwand zur Verwendung durch Prozessoren auf anderen Platinen ausgegeben werden können. Die Signale werden auf dem Rückwand-Bus unter Verwendung von Treibern mit offenem Kollektor plaziert, so daß die Signale von jedem Chip effektiv mit der Rückwand „festverdrahtet ODER-verknüpft" sind. Der RAM 130 wird vom Compiler geladen und dazu verwendet, bei jedem emulierten Taktzyklus spezielle Signale zur Rückwand freizugeben, da eines von allen verwendeten Steuerungswörtern im RAM 130 bei jedem emulierten Taktzyklus einmal aufeinanderfolgend adressiert wird.
  • Die 32:1-Wählmittel 132 werden zusammen mit Treibern 134 und dem RAM 136 verwendet, um Unterbrechungspunktsteuerungssignale auszugeben. Der RAM 136 hat eine ähnliche Funktionsweise wie der RAM 130, da er vom Compiler als Teil des Emulatorprogramms geladen wird und seine Adresse einmal bei jedem Emulatortaktzyklus inkrementiert wird. Unterbrechungspunkte werden implementiert, indem die HLUs Gleichungen zur Überprüfung auf Signal-(d.h. Variablen-)-Zustände evaluieren und nach einem Erfassen der gewünschten Kombination ein hohes Signal ausgeben, das vom 32:1-Wählmittel 132 gewählt wird. Das 32:1-Wählmittel 132 wird so gesteuert, wie die anderen Wählmittel aus 1 mit der Ausnahme des Wählmittels 120, das durch Steuerungssignale von den Steuerungsdaten 102 gesteuert wird.
  • Als nächstes wird das Routing und die Verarbeitung der Blöcke 106112 in Einzelheiten erläutert.
  • A. Routing
  • Die Funktionsblöcke 106112 bilden den Kern des Routings und der Verarbeitung des Hydra-Chips 100. Da der Chip pro emuliertem Zyklus mehrere Emulator-Zyklen verwendet, ist es von besonderer Bedeutung, daß die Daten schnell und einfach zwischen den verschiedenen lokalen und entfernten Prozessoren (d.h. Prozessoren auf dem und außerhalb des Chips) geleitet werden können, so daß mehrere Iterationen einer Datenverarbeitung mit denselben Logikeinheiten (die im nachfolgenden erläutert werden) wirkungsvoll erzielt werden können.
  • In 1 werden 256 48:1-Wählmittel verwendet, um unter 32 internen Signalleitungen und 352 externen Signalleitungen zu wählen. Die 32 internen Signalleitungen werden von den Ausgängen der acht HLUs 112 rückgekoppelt, während die externen Signalleitungen von 11 externen Prozessoren stammen, die jeweils mit dem Diagramm aus 1 identisch sind, um 11 × 32 = 352 Signale bereitzustellen. Somit beträgt die Gesamtzahl der in die 256 48:1-Wählmittel 106 eintretenden Signale 352 + 32 = 384. Jedes der 384 Signale wird zu 32 Eingängen in den 256 48:1-Wählmitteln verteilt. Somit beträgt die Gesamtzahl von Eingängen in der Gruppe von 48:1-Wählmitteln 82 × 384 = 12 288.
  • Die 48:1-Wählmittel geben 256 Signale zu 256 Schieberegistern 108 aus. Das Routing erfolgt eins-zu-eins mit jedem 48:1-Wählmittelausgang, mit dem ein einzelner 64-stufiger oder 64-Bit-Schieberegistereingang versorgt wird. Die Kombination eines 48:1-Wählmittels und eines Schieberegisters wird als eine „Pipeline" bezeichnet. Jede Stufe jedes Schieberegisters wird ausgegeben, so daß die Zahl der Ausgänge von der Schieberegistergruppe 64 × 256 = 16.384 Ausgänge beträgt. Die 16.384 Ausgänge werden den 128 1K:1-Wählmitteln zugeführt.
  • Die Ausgänge der 1K:1-Wählmittel werden zu 8 HLUs 112 gesandt. Jede HLU empfängt die Ausgänge von 16 1K:1-Wählmitteln.
  • 2 zeigt ein erweitertes Diagramm des Routings der Blöcke 106112. In 2 werden 384 Signale bei 150 zu Pipelines bei 154 geliefert. Die Zwischenverbindungen zwischen den 384 Signalen und den Pipelines liegt bei 152. Gemäß einem bevorzugten Zwischenverbindungsschema wird jedes der 384 Signale zu den 32 verschiedenen Eingängen der 48:1-Wählmittel verteilt. Die bevorzugte Zwischenverbindung ermöglicht ein Routing jedes Signals zu 16 Paa ren von 64-Bit-Schieberegistern. Die Paare sind so voneinander getrennt, daß die Eingangssignalverzweigungen den kleinsten möglichen Überlapp aufweisen.
  • Die Verbindungen zwischen den Pipelines bei 154 und den Wählmitteln bei 158 sind so, daß aufeinanderfolgende Gruppen von 8 1K:1-Wählmitteln dieselben 1.024 Ausgänge von einer Gruppe von 16 Schieberegistern empfangen. Beispielsweise empfängt in der ersten Gruppe von 8 1K:1-Wählmitteln (Wählmittel 0–7), jedes Wählmittel dieselben 1.024 Ausgänge von den Schieberegistern 0–15. In der nächsten Gruppe von 8 1K:1-Wählmitteln (Wählmittel 8–15), empfängt jedes Wählmittel dieselben 1.024 Ausgänge von den nächsten 16 Schieberegistern (Schieberegister mit den Nummern 16–31) usw.
  • Die Verbindungen bei 160 zwischen den 1K:1-Wählmitteln bei 158 und den HLUs bei 162 werden durch Verwenden von 16 der 1K:1-Wählmittel Modulo 16 zugeordnet. Beispielsweise ist HLU 0 mit den 1K:1-Wählmitteln 0, 16, 32, 48, ..., 112 verbunden. HLU 1 ist mit den 1K:1-Wählmitteln 1, 17, 33, 49, ..., 113 verbunden.
  • 3 zeigt weitere Einzelheiten der Schaltung der Funktionsblöcke 106 und 108 aus 1. Insbesondere zeigt 3 die Einbeziehung eines „Schatten"-Schieberegisters 180, eines 64:1-Wählmittels 182 und eines 2:1-Wählmittels 184. Das 48:1-Wählmittel 186 und das Schieberegister 188 sind dieselben, wie die oben erläuterten und in 1 als 106 bzw. 108 gezeigten, Komponenten.
  • Die Verwendung eines Schatten-Schieberegisters 180 gewährleistet bestimmte Vorteile bezüglich der Eignung des Emulationssystems gemäß der vorliegenden Erfindung Logikelemente, wie beispielsweise Flipflops zu behandeln, bei welchen der Zustand des Logikelements, der während des momentanen emulierten Taktzyklus berechnet wurde, bis zum nächsten emulierten Taktzyklus nicht als ein Eingangssignal zu anderen Logikelementen erforderlich ist. Das Schieberegister 188 wird dazu verwendet, Ergebnisse von Berechnungen in jedem der 64 (maximalen) Schritte im Emulationsprogramm zu speichern. Jedoch tritt dort, wo beispielsweise ein Flipflopausgangssignal oder ein beliebiges anderes „registriertes" Signal bis zum nächsten Zyklus nicht erforderlich ist, ein Spezialfall auf. Diese registrierten Signale müssen für einen Gebrauch bis zum Ende des momentanen emulierten Taktzyklus nicht aktualisiert werden. Jedoch wird das Schattenregister zur Speicherung der Werte dieser Arten registrierter Variablen vom Zeitpunkt, zu dem sie erzeugt wurden, bis zum Zeitpunkt, zu dem sie als Ein gaben in Logikfunktionen erforderlich sind, verwendet. Am Ende des Programmzyklus, d.h. nachdem alle Programmschritte für den momentanen Zyklus ausgeführt wurden, werden die Werte vom Schatten-Schieberegister 180 ins Schieberegister 188 kopiert, so daß die neuen Werte für diese registrierten Variablen für eine Verwendung als Eingaben für den nächsten Programmzyklus verfügbar sind. Das Kopieren wird durch Laden des Schieberegisters 188 mit den parallelen Ausgängen des Schatten-Schieberegisters 180 durchgeführt. Dies ermöglicht ein zeitunabhängiges Routen aller „registrierten" Signale durch den Emulator, da die Signale bis zum folgenden Programmzyklus nicht erforderlich sind.
  • Wie in 3 zu sehen ist, werden Werte vom 48:1-Wählmittel 186 sowohl zum Schatten-Schieberegister 180 und wahlweise zum Schieberegister 188 über das 2:1-Wählmittel 184 geroutet. Wenn der Wert vom 48:1-Wählmittel 186 eine registrierte Variable ist, wird die registrierte Variable lediglich ins Schatten-Schieberegister 180 kopiert und nicht ins Schieberegister 188. Stattdessen erhält das Schieberegister 188 einen Wert vom 64:1-Wählmittel 182, der während des vorhergehenden Programmzyklus erzeugt wurde, so daß beliebige registrierte Variablen, die sich während des momentanen Programmzyklus ändern, bis zum nächsten Programmzyklus nicht aktualisiert werden.
  • Das 64:1-Wählmittel 182 ermöglicht das Zurückrouten von Werten von beliebigen Orten im Schieberegister 188 zur Stufe 0 des Schieberegisters. Dies ermöglicht einen flexiblen Zugriff auf Variablenwerte, die in einem Programmzyklus berechnet werden. Die Auswahl der Variable durch das 64:1-Wählmittel 182 erfolgt durch die 6 gezeigten Steuerungsleitungen, die mit dem 64:1-Wählmittel verbunden sind und von den Steuerungsdaten gesteuert werden. Andere Steuerungssignale, wie beispielsweise die 5 Eingangs-Multiplexer-(MUX)-Leitungen zum 48:1-Wählmittel 186 und die einzelne Steuerungsleitung zum 2:1-Wählmittel 184 gehen ebenfalls von den Steuerungsdaten aus.
  • B. Verarbeitung
  • Als nächstes werden die 4 und 5 zur Darstellung von Einzelheiten der zur Verarbeitung im Emulationssystem gemäß der vorliegenden Erfindung verwendeten Hydra-Logikeinheiten erläutert.
  • In 4 ist ein erweitertes Diagramm der Logik im Block 112 aus 1 gezeigt. In 4 ist eine der 8 HLUs auf dem Chip gezeigt. 16 Eingänge von den 16 der 1K:1-Wählmittel treten bei 202 in die HLU ein. Die invertierten Signale werden ebenfalls zugeführt, so daß die Gesamtzahl von 32 Signalen durch die dunkel schattierte Linie wiedergegeben wird. Die 16 Signale sind durch Umkehrschaltungen und Durchgangsgates, die auch Eingangsstifte genannt werden und in größerem Maßstab und in weiteren Einzelheiten in 5 gezeigt sind, mit den ODER-Gliedern 206212 verbunden. Jedes der 16 Signale kann durch jeden der Eingangsstifte durchgeführt werden, so daß jedes beliebige der Signale an jeden beliebigen der Eingänge der ODER-Glieder 206212 angelegt werden kann. Man beachte, daß jede Leitung zu den ODER-Gliedern mit einem NOR-Glied, wie beispielsweise dem NOR-Glied 214 versehen ist, so daß jeder Eingang zu den NOR-Gliedern wählbar durch Anlegen eines Null- oder niedrigen Signals gesperrt werden kann.
  • Die ODER-Glieder 206212 werden dazu verwendet, Produktsummen-Ausdrücke zu berechnen, um Boolesche Gleichungen zu lösen, die die Funktionen der Schaltungsanordnung des Benutzers emulieren. Der Compiler wandelt die Nutzungsschaltungsanordnung in Boolesche Gleichungen um, die dann in mehrere Programmschritte umgewandelt werden. Die Programmschritte werden in die Emulationsarchitektur in Form von Mikrocode-Wörtern in den Steuerungsdaten 102 aus 1 und Steuerungssignalen in verschiedenen gewählten RAMs im System geladen.
  • Wieder mit Bezugnahme auf 4, wird eine Registeremulationslogik 220 am Ausgang jedes ODER-Glieds vorgesehen. Die Register-Emulationslogik 220 liefert spezialisierte Steuerungssignale, die ermöglichen, daß der Emulator eine Emulation von sequentiellen Elementen, wie beispielsweise Registern und Latches auf wirksame Weise abwickeln kann. Signale, wie beispielsweise „Reset", „Preset", „Clock" und „Q-1" geben Signale ihrer gut bekannten Gegenstücke in sequentiellen Standardvorrichtungen wieder. Diese Signale werden aus den 16 Eingangssignalen und ihren invertierten Signalen unter Verwendung von beispielsweise bei 222 gezeigten 34:1-Wählmitteln erhalten. Man beachte, daß die 34:1-Wählmittel das Auswählen eines hohen oder niedrigen Signals zusätzlich zu den 16 Eingangssignalen und ihren Umkehrungen erlauben. Das Signal „Q-1" ist normalerweise der dem Wert vorhergehende Wert, der in einem emulierten Register gespeichert wurde.
  • Das invertierte Steuerungsbit der Registeremulationslogik 220 erlaubt die Invertierung des Datensignals gemäß den Steuerungsdaten. Die P/R-Steuerungssignale bestimmen, ob die Steuerung durch ein Voreinstellen oder Zurücksetzen erfolgen soll, wenn sowohl ein Voreinstellen als auch ein Zurücksetzen zum selben Zeitpunkt auftreten. Die P/R-Steuerungsleitungen, wie auch die beiden Steuerungsbits, sind zur Steuerung des RAM mit dem 2:1-Wählmittel der Registeremulationslogik 220 gekoppelt. Das 2:1-Wählmittel gewährleistet einen Bypass der Registeremulationslogik, wenn diese nicht benötigt wird.
  • 6 zeigt weitere Einzelheiten im Funktionsblock 124, dem Emulationsspeicher aus 1. Die Emulationsspeicherschaltung gewährleistet einen wirksamen Weg zur Speicherung und Verwendung beim Adressieren des Emulationsspeichers der von den HULs erzeugten Werte.
  • 7 zeigt den Aufbau von 12 Hydra-Chips auf Platinenebene. 7 umfaßt eine Rückwand 250, auf der zusätzliche ähnliche Platinen untergebracht werden können. Bei den Vorrichtungen (16646) handelt es sich um Register-Transceiver, während es sich bei den Vorrichtungen (74FB2033) um Rückwand-Schnittstellen-Transceiver handelt.
  • 2. Betriebsweise des Logikemulationssystem-Compilers
  • 8A zeigt eine Schaltung 300 als ein Beispiel einer Schaltung, die ein Nutzer emulieren möchte. Bei der Schaltung 300 handelt es sich um einen 4-Bit-Binärzähler mit Ausgängen Q0–3, Anschlußzähleingängen C0–3 und RESET und CLOCK-Signalen. Die Anschlußzähleingänge C0–3 werden zur Bestimmung, wann das Zurücksetzen des Zählers erfolgt, verwendet. Wenn der Zählwert in Q0–3 mit dem im C0–3 bestimmten Wert übereinstimmt, wird der Zähler auf 0 zurückgesetzt und beginnt wieder mit dem Aufwärtszählen.
  • 8B zeigt das Zeitablaufdiagramm für die Schaltung aus 8A. In 8B wird gezeigt, daß von den Ausgängen Q0–3 verschiedene Werte (0, 1, 2 und 3) zu unterschiedlichen Zeitpunkten entsprechend den anderen Signalen CLOCK, RESET und den Anschlußzählbits C0–3 ausgegeben werden. Beispielsweise geben bei 302 die Ausgänge Q0–3 den Wert 0 aus. Bei 304 geben die Ausgänge Q0–3 den Wert 1 aus. Bei 306 werden die Ausgänge Q0–3 auf den Wert 0 zurückgesetzt, da die Anschlußzählbits C0–3 einen Anschlußzählwert von 1 bei 308 festlegen. In ähnlicher Weise ist gezeigt, daß Q0–3 bis zum momentan für die nachfolgenden Abschnitte des Zeitablaufdiagramms festgelegten Anschlußzählwert inkrementieren. Man beachte, daß sich der Zählwert an der Vorderkante von CLOCK ändert und daß der Zählwert immer dann 0 wird, wenn RESET hoch ist.
  • 9 ist eine Darstellung eines zum Gebrauch mit dem Emulationssystem-Compiler gemäß der vorliegenden Erfindung geeigneten Computersystems. In 9 ist lediglich ein Beispiel vieler möglicher Arten von Computern oder zur Verwendung bei der vorliegenden Erfindung geeigneter Strukturen gezeigt. In 9 ist ein Computersystem 1 gezeigt, daß eine Anzeigevorrichtung 3, einen Anzeigeschirm 5, ein Gehäuse 7, eine Tastatur 9 und eine Maus 11 umfaßt. Die Maus 11 und die Tastatur 9 sind „Nutzereingabevorrichtungen". Andere Beispiele für Nutzereingabevorrichtungen sind ein Berührungsbildschirm, ein Lichtstift, ein Track Ball, Datenhandschuh, etc.
  • 10 ist eine Darstellung grundlegender Untersysteme im Computersystem 1 aus 9. In 10 werden die Untersysteme durch Blöcke, wie beispielsweise den Zentralprozessor 52, den Systemspeicher 54 etc. wiedergegeben. Die Untersysteme sind über einen Systembus 50 miteinander verbunden. Zusätzliche Untersysteme, wie beispielsweise ein Drucker, eine Tastatur, eine Festplatte und andere sind ebenfalls gezeigt. Andere Anordnungen von Untersystemen und Zwischenverbindungen sind ebenfalls möglich.
  • Der Compiler akzeptiert eine elektronische Beschreibung der Schaltung 300 als Eingabe. Bei der bevorzugten Ausführungsform werden viele Formate zur elektronischen Beschreibung einer Schaltung, wie beispielsweise die Verilog-Sprache zur Beschreibung von Hardware, akzeptiert. Der Compiler führt Schritte eines „Technologie-Mappings" der Schaltung durch, um Betriebsschritte der Schaltung zu Prozessoren im Emulationssystem abzubilden. Die Betriebsschritte werden in Gleichungen umgewandelt, die einer oder mehrere Prozessoren innerhalb eines Zyklus der emulierten Schaltung lösen können. Der Compiler führt auch den Schritt einer „Zeitplanung" der Lösung der Gleichungen durch, um sicherzustellen, daß die Ergebnisse von Gleichungen, die als Eingaben in andere Gleichungen benötigt werden, vor der Ausführung der anderen Gleichungen erhalten werden. Die Schritte des Technologie-Mappings bzw. der Technologieabbildung und der Zeitplanung werden bei der vorliegenden Erfindung in vorteilhafter Weise durch Verwenden der oben im Abschnitt I beschriebenen einheitlichen Logikeinheiten und Routing-Architektur ausgeführt.
  • Der Compiler verwendet die Ergebnisse des Technologie-Mappings und die Zeitplanungsschritte zur Ausgabe eines Emulationsprogramms, das in den Steuerungsspeicher, Multiplexerauswahl-RAM und andere Teile des Emulationssystems zur Steuerung des Emulationssystems geladen wird, um die Gleichungen zu lösen. Man beachte, daß die Lösung der Gleichungen durch Ausführen von bis zu 64 Programmschritten in einer einzigen emulierten Taktperiode (d.h. der Periode von CLOCK in 8B) vollzogen wird. Die Kompilationsprozedur wird aufgrund der einheitlichen Verbindbarkeit von Signalen im Emulationssystem, woraus ein „flaches" Programmiermodell folgt, effizienter gestaltet. Dadurch wird sichergestellt, daß nach einem Technologie-Mapping folgende Zeitplanungsschritte die Routing-Fähigkeit der emulierten Anordnung nicht beeinflussen. Mit anderen Worten sind die Schritte des Technologie-Mappings und der Zeitplanung von der Routing-Phase der Kompilierung und voneinander vollkommen unabhängig.
  • 11 zeigt ein Technologie-Mapping der Schaltung aus 8A. In 11 wurde die Schaltung in sieben mit A–G bezeichnete Logikfunktionen unterteilt. Man beachte, daß jede Logikfunktion eine Unterfunktion beim Betrieb der Schaltung aus 11 ist und jede Logikfunktion mit einem Logikprozessor realisiert werden kann. Jede Unterfunktion weist klar definierte Eingänge und Ausgänge auf und kann innerhalb jedes Emulationszyklus bzw. Programmschritts berechnet werden. Es bestehen höchstens drei logische „Stufen" oder Abhängigkeiten von Signalen, die zu unterschiedlichen Zeitpunkten in einem Emulationszyklus ankommen könnten.
  • Die Schaltung aus 8A ist einfach genug, daß das Technologie-Mapping und die Zeitplanung, wie im Diagramm aus 11, manuell erreicht werden können. Zu Darstellungszwecken wurden bei diesem Beispiel sieben Logikfunktionen gewählt. Man beachte, daß die Logikfunktionen F und G eine zur Schaltung hinzugefügte Funktionalität umfassen. Diese Funktionalität trägt Flankenübergängen im Taktsignal CLOCK präzise Rechnung. Da die Q0–3 erzeugenden Register für die positive Flanke sensitiv sind, umfassen die Logikfunktionen F und G ein mit der emulierten Detektionslogik für die positive Flanke gekoppeltes emuliertes Verzögerungselement zur Erzeugung eines einen positiven CLOCK-Flanken-Übergang kennzeichnenden Signals.
  • In 12 sind Zuordnungen der Logikfunktionen zu Logikprozessoren (pro Chip sind 32 Logikprozessoren oder 8 Logikeinheiten vorgesehen, wie oben in Verbindung mit der Archi tektur aus den 1 bis 7 erörtert wurde), die Eingänge zu jeder Logikfunktion, der früheste Zeitpunkt, zu dem ein Eingang benötigt wird (angegeben in Programmschritten), die Ausgabe der Logikfunktion und der späteste Zeitpunkt, zu dem die Ausgabe der Logikfunktion verfügbar sein muß, gezeigt. Beim vorliegenden Beispiel wird jede Logikfunktion in 11 einem getrennten Prozessor zugeordnet. Jede HLU ist in der Lage, vier getrennte Produktsummenausdrücke zu bilden und vier Ausgaben zu erzeugen (d.h. vier Prozessoren). Somit kann beispielsweise eine einzelne HLU dazu verwendet werden, die Logikfunktionen A–D abzuarbeiten, während eine zweite HLU die Logikfunktionen E, F und G abarbeiten kann. Jedoch, wie im nachfolgenden erläutert wird, läßt das vorliegende Beispiel zu, daß alle Berechnungen innerhalb von drei Programmschritten von einer einzigen HLU abgearbeitet werden. Aufgrund der Einheitlichkeit des Routings im Emulator sind die Zuordnungen von HLUs und Prozessoren innerhalb von HLUs bezüglich der Routing-Fähigkeit vollkommen willkürlich.
  • Wieder mit Bezug auf 12 umfaßt die Logikfunktion A die Signale QO, CLEAR und CLOCK_POSEDGE. Die Signale QO und CLEAR sind Eingaben von der externen Nutzerschaltung, die mit dem Emulationssystem so verbunden ist, wie sie es mit der tatsächlichen emulierten Schaltung wären. Das Signal CLOCK_POSEDGE wird als ein Ausgangssignal von der Logikfunktion G erzeugt, um die ansteigende Flanke des Taktes zu kennzeichnen. Man beachte, daß CLOCK_POSEDGE aus dem Signal CLOCK erzeugt wird, bei dem es sich um den Takt des Nutzers von der emulierten Schaltung handelt. Bei der Logikfunktion A wird das Signal QO beim Programmschritt 0, das Signal CLEAR beim Programmschritt 2, während das Signal CLOCK_POSEDGE ebenfalls beim Programmschritt 2 benötigt wird. Die Ausgabe der Logikfunktion A ist QO, das spätestens beim nächsten Programmzyklus erzeugt werden muß.
  • Beim vorliegenden Beispiel gibt es nur drei Programmschritte, die die „Zeitfenster" 0, 1 und 2 belegen. Jeder Programmschritt wird während einer Taktperiode des Emulatortaktes ausgeführt. Der Emulatortakt wird im allgemeinen so schnell wie möglich betrieben, da eine emulierte Schaltung unvermeidbar so aufgebaut ist, daß sie mit einer höheren Geschwindigkeit als der Geschwindigkeit des Emulationsprogrammzyklus betrieben werden kann. Wie erwähnt, können die Programmschritte auf bis zu vier Emulatortaktzyklen ausgedehnt werden, wenn beispielsweise Verzögerungen im Emulator erfordern, daß das Emulationssystem für mehr als einen Zyklus in einem vorbestimmten, einem speziellen Programmschritt entsprechenden Zustand bleibt.
  • In 12 sind die verbleibenden Logikfunktionen B–G ähnlich wie die Logikfunktion A bestimmt.
  • In 13 sind Zuordnungen von Logikprozessoren zu Zeitfenstern und Busleitungen gezeigt. Beispielweise ist der Ausgangswert QO dem Zeitschlitz 2 und der Busleitung 355 zugeordnet. Wie oben erläutert, gibt es 384 Busleitungen (O bis 383), welche Eingänge zu den 48:1-Wählmitteln darstellen. Die Busleitungen 352 bis 383 enthalten Ergebnisse, die von den Logikeinheiten 0–7 stammen. Bei der vorliegenden, beispielhaften Schaltungsanordnung wird ausschließlich die Logikeinheit 0 verwendet und alle Signale werden in einem einzigen die Logikeinheit enthaltenden Chip erzeugt und verwendet. In diesem Fall ist für die Emulation kein Datenaustausch zwischen Chips notwendig. Man beachte, daß die Signale CLEAR, CLOCK_DELAYED und CLOCK_POSEDGE im Zeitschlitz erzeugt werden, während die Signale QO-3 im Zeitschlitz 2 erzeugt werden.
  • 14 zeigt die Zuordnung von Eingangssignalen zu Busleitungen. Die Signale CO-3, RESET und CLOCK geben die sechs externen Eingänge zum Emulator wieder. Es wird davon ausgegangen, daß jeder der Eingänge am Beginn des Programmzyklus, d.h. beim Programmschritt 0, wenn sie abgetastet werden, frei und gültig ist.
  • In 13 und 14 sind die Ergebnisse des Zeitplanungsschrittes im Kompilationsprozeß wiedergegeben. Das Zeitplanungsproblem hat sicherzustellen, daß die Ausgangswerte, die für eine gegebene Berechnung benötigt werden, zur Verfügung stehen, bevor die Berechnung den Wert benötigt. Mit anderen Worten muß jede zur Erzeugung eines Wertes notwendige Berechnung vor dem Zeitpunkt ausgeführt oder terminiert werden, zu dem nachfolgende Berechnungen diesen Wert verwenden können. Beim vorliegenden einfachen Beispiel handelt es sich dabei um ein triviales Problem, dessen Lösung in den 13 und 14 dargestellt ist. Es kann sich jedoch dabei um einen sehr zeitaufwendigen Schritt im Kompilierungsprozeß handeln, wenn die emulierte Schaltung groß ist. Ein Vorteil der vorliegenden Erfindung besteht darin, daß der Zeitplanungsschritt im Gegensatz zu früheren Emulationssystemen und Compilern, die Routing-Fähigkeit der emulierten Anordnung nicht beeinflußt. Das ist teilweise deshalb der Fall, weil es sich bei den Prozessoren im Emulationssystem gemäß der vorliegenden Erfindung um ersetzbare Artikel handelt, weil kein Vorteil darin besteht, bezüglich der Eingangs- oder Ausgangs-Routing-Fähigkeit einen bestimmten Prozessor einem anderen gegen über zu bevorzugen, da das gesamte Routing auf Ebene des Hydra-Chips unter den Prozessoren einheitlich ist.
  • 15 und 16 zeigen Eingangs- und Ausgangsabbildungen für die unterschiedlichen Prozessoren im Zeitschlitz 1 bzw. 2. In 15 ist zu erkennen, daß die Signale CLEAR, CLOCK_DELAYED und CLOCK_POSEDGE aus den Werten CO-3, RESET, QO-3, CLOCK und CLOCK_DELAYED erzeugt werden. Das Ausgangssignal CLOCK_DELAYED wird unter Verwendung einer Registeremulationslogik, wie der bei 220 in 4 gezeigten, erzeugt. Ähnlich zeigt 16 die Abbildung für im Zeitschlitz 2 berechnete Signale.
  • 17 und 18 zeigen die MUX-Einstellungen für die 1K:1-Wählmittel, die für die Verarbeitung gemäß dem vorliegenden Beispiel relevant sind. Für den Zeitschlitz 0 sind keine Einstellungen gezeigt, da die Signale für die Logikverarbeitung bis zum Zeitschlitz 1 nicht erforderlich sind.
  • 1921 zeigen die MUX-Einstellungen für die 48:1-MUXe in den Zeitschlitzen 0, 1 und 2.
  • In der vorhergehenden Beschreibung wurde die Erfindung mit Bezugnahme auf eine spezielle, beispielhafte Ausführungsform derselben beschrieben.

Claims (7)

  1. Emulationssystem zur Emulierung einer Schaltungsanordnung, wobei das Emulationssystem einen Logikprozessor (112) zur Lösung von Gleichungen zur Emulierung der Schaltungsanordnung umfaßt und der Logikprozessor (112) Logikprozessoreingänge und -ausgänge aufweist, wobei das Emulationssystem umfaßt: ein erstes Wählmittel (106) mit ersten Wählmitteleingängen und -ausgängen, wobei einer oder mehrere Ausgänge des Logikprozessors (112) mit den ersten Wählmitteleingängen gekoppelt sind und das erste Wählmittel (106) eine Untergruppe von Signalen an den ersten Wählmitteleingängen wählt und die gewählten Signale an die ersten Wählmittelausgänge anlegt; ein Register (108) mit Registereingängen und -ausgängen, wobei die Registereingänge mit den Ausgängen der ersten Wählmittel (106) gekoppelt sind und das Register (108) die von den Wählmitteln (106) empfangenen Signale speichert; ein zweites Wählmittel (110) mit zweiten Wählmitteleingängen und -ausgängen, wobei die zweiten Wählmitteleingänge mit den Registerausgängen gekoppelt sind, um die Registerausgänge wählbar an die zweiten Wählmittelausgänge anzulegen, und die Eingänge des Logikprozessors (112) mit den Ausgängen der zweiten Wählmittel (110) gekoppelt sind.
  2. Emulationssystem nach Anspruch 1, wobei das Register (108) ein erstes Schieberegister (188) mit einem ersten Schieberegistereingang und einem ersten Schieberegisterausgang aufweist, der erste Schieberegistereingang mit einem ersten Wählmittelausgang gekoppelt ist und der erste Schieberegisterausgang mit einem zweiten Wählmitteleingang gekoppelt ist.
  3. Emulationssystem nach Anspruch 2, das des weiteren umfaßt: eine Emulatortaktquelle, die ein Emulatortaktsignal zur Synchronisation des Betriebs des Emulationssystems ausgibt; einen Steuerungsspeicher, der mit der Emulatortaktquelle gekoppelt ist, wobei im Steuerungsspeicher Daten gespeichert werden, die einen oder mehrere Programm schritte definieren, wobei die Programmschritte entsprechend dem Emulatortaktsignal sequentiell geordnet werden; und wobei das Schieberegister (188) einen mit der Emulatortaktquelle gekoppelten Takteingang umfaßt, so daß Daten im Schieberegister (188) mit dem Emulatortaktsignal synchronisiert verschoben werden.
  4. Emulationssystem nach Anspruch 2 oder 3, wobei das erste Schieberegister (188) erste parallele Schieberegistereingänge und -augänge umfaßt; und das Register (108) des weiteren ein zweites Schieberegister (180) mit zweiten parallelen Schieberegisterausgängen, einem zweiten Schieberegistereingang und -ausgang umfaßt, wobei der zweite Schieberegistereingang mit einem ersten Wählmittelausgang, der zweite Schieberegisterausgang mit einem zweiten Wählmitteleingang und die zweiten parallelen Schieberegisterausgänge mit den ersten parallelen Schieberegistereingängen gekoppelt sind.
  5. Emulationssystem nach einem der vorhergehenden Ansprüche, wobei das erste Wählmittel (106), das Register (108), das zweite Wählmittel (110) und der Logikprozessor (112) gemeinsam auf einem einzelnen integrierten Schaltungschip (100) hergestellt sind; und eines oder mehrere erste Wählmitteleingangssignale mit außerhalb des einzelnen integrierten Schaltungschips (100) angeordneten Signalquellen gekoppelt sind.
  6. Emulationssystem nach einem der vorhergehenden Ansprüche, wobei das erste Wählmittel (106) 256 48:1 Multiplexer umfaßt; das Register (108) 256 Schieberegister umfaßt, wovon jedes einen Eingang und einen Ausgang aufweist, wobei die Ausgänge der 48:1 Multiplexer im ersten Wählmittel (106) eineindeutig mit den Schieberegistern gekoppelt sind, die Schieberegister jeweils 64 Stufen und 64 Bits paralleler Ausgangsleitungen bei einer Gesamtzahl von 64 × 256 = 16.384 parallelen Schieberegisterausgangsleitungen aufweisen; das zweite Wählmittel (110) 128 1024:1 mit den parallelen Schieberegisterausgangsleitungen gekoppelte Multiplexer umfaßt, so daß Gruppen von 8 1024:1 Wählmitteln dieselben 1024 Ausgänge von einer Gruppe von 16 Schieberegistern empfangen; und der Logikprozessor (112) 8 Prozessoren umfaßt, wobei jeder Prozessor 16 Eingänge umfaßt und die Prozessoreingänge mit den Ausgängen der 128 1024:1 Multiplexer gekoppelt sind, so daß die 128 1024:1 Multiplexer gemäß einer Modulo-16 Zuordnung mit Prozessoren gekoppelt sind.
  7. Emulationssystem nach einem der vorhergehenden Ansprüche, wobei die Schaltungsanordnung durch logische Gleichungen beschrieben ist, die Schaltungsanordnung ein Schaltungstaktsignal mit einer Schaltungsfrequenz umfaßt und der Emulator aufweist: ein Takterzeugungsmittel, das mit dem Schaltungstaktsignal zur Erzeugung eines Emulatortaktsignals gekoppelt ist, das um ein ganzzahliges Vielfaches n schneller als die Schaltungsfrequenz ist, wobei n eine Zahl größer als 1 ist; Verarbeitungsmittel zur Generierung von Lösungen für logische Gleichungen, mit welchen die Schaltungsanordnung emuliert wird; und mit dem Verarbeitungsmittel gekoppelte Kontrollmittel zur Kontrolle der Lösung der Logikgleichungen, wobei das Kontrollmittel des weiteren mit dem Emulatortaktsignal gekoppelt ist und bewirkt, daß eine oder mehrere Logikgleichungen jeweils nach n Zyklen des Emulatortaktes gelöst werden.
DE69634227T 1995-06-28 1996-06-24 Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung Expired - Lifetime DE69634227T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US496239 1995-06-28
US08/496,239 US5923865A (en) 1995-06-28 1995-06-28 Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing

Publications (2)

Publication Number Publication Date
DE69634227D1 DE69634227D1 (de) 2005-03-03
DE69634227T2 true DE69634227T2 (de) 2005-12-29

Family

ID=23971827

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69634227T Expired - Lifetime DE69634227T2 (de) 1995-06-28 1996-06-24 Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung

Country Status (4)

Country Link
US (1) US5923865A (de)
EP (1) EP0755016B1 (de)
JP (1) JP3896177B2 (de)
DE (1) DE69634227T2 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141636A (en) * 1997-03-31 2000-10-31 Quickturn Design Systems, Inc. Logic analysis subsystem in a time-sliced emulator
US6279146B1 (en) 1999-01-06 2001-08-21 Simutech Corporation Apparatus and method for verifying a multi-component electronic design
JP2001222564A (ja) * 2000-02-09 2001-08-17 Hitachi Ltd 論理エミュレーションシステム
US7379859B2 (en) * 2001-04-24 2008-05-27 Mentor Graphics Corporation Emulator with switching network connections
US7043417B1 (en) 2000-09-06 2006-05-09 Quickturn Design Systems, Inc. High speed software driven emulator comprised of a plurality of emulation processors with improved multiplexed data memory
US6842728B2 (en) * 2001-03-12 2005-01-11 International Business Machines Corporation Time-multiplexing data between asynchronous clock domains within cycle simulation and emulation environments
US7738399B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems Inc. System and method for identifying target systems
US7738398B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems, Inc. System and method for configuring communication systems
US7739093B2 (en) * 2004-06-01 2010-06-15 Quickturn Design System, Inc. Method of visualization in processor based emulation system
US7353162B2 (en) * 2005-02-11 2008-04-01 S2C, Inc. Scalable reconfigurable prototyping system and method
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
US11214973B1 (en) 2012-06-15 2022-01-04 Aquastar Pool Products, Inc. Low profile circular drain with water stop for swimming pool and diverter for use therein
US9540837B2 (en) 2012-06-15 2017-01-10 Olaf Mjelde Low profile circular drain with water stop for swimming pools
US11078681B1 (en) 2012-06-15 2021-08-03 Aquastar Pool Products, Inc. Low profile circular drain with water stop for swimming pool and diverter for use therein
US10949588B1 (en) * 2016-11-10 2021-03-16 Synopsys, Inc. High speed, low hardware footprint waveform
US10796048B1 (en) * 2017-06-16 2020-10-06 Synopsys, Inc. Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator
US10934730B2 (en) 2018-01-15 2021-03-02 Hayward Industries, Inc. In-floor swimming pool drain and sump assembly

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3955180A (en) * 1974-01-02 1976-05-04 Honeywell Information Systems Inc. Table driven emulation system
US4306286A (en) * 1979-06-29 1981-12-15 International Business Machines Corporation Logic simulation machine
US4357678A (en) * 1979-12-26 1982-11-02 International Business Machines Corporation Programmable sequential logic array mechanism
US4656580A (en) * 1982-06-11 1987-04-07 International Business Machines Corporation Logic simulation machine
US4527249A (en) * 1982-10-22 1985-07-02 Control Data Corporation Simulator system for logic design validation
US4583169A (en) * 1983-04-29 1986-04-15 The Boeing Company Method for emulating a Boolean network system
US4587625A (en) * 1983-07-05 1986-05-06 Motorola Inc. Processor for simulating digital structures
WO1985002033A1 (en) * 1983-11-03 1985-05-09 Prime Computer, Inc. Digital system simulation method and apparatus
US4782461A (en) * 1984-06-21 1988-11-01 Step Engineering Logical grouping of facilities within a computer development system
US4697241A (en) * 1985-03-01 1987-09-29 Simulog, Inc. Hardware logic simulator
US4819150A (en) * 1985-04-05 1989-04-04 Unisys Corporation Array for simulating computer functions for large computer systems
US4769817A (en) * 1986-01-31 1988-09-06 Zycad Corporation Concurrent fault simulation for logic designs
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
US4862347A (en) * 1986-04-22 1989-08-29 International Business Machine Corporation System for simulating memory arrays in a logic simulation machine
US5126966A (en) * 1986-06-25 1992-06-30 Ikos Systems, Inc. High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs
US4787061A (en) * 1986-06-25 1988-11-22 Ikos Systems, Inc. Dual delay mode pipelined logic simulator
US4787062A (en) * 1986-06-26 1988-11-22 Ikos Systems, Inc. Glitch detection by forcing the output of a simulated logic device to an undefined state
JPS63223869A (ja) * 1987-03-13 1988-09-19 Hitachi Ltd プログラム生成方法
US5329471A (en) * 1987-06-02 1994-07-12 Texas Instruments Incorporated Emulation devices, systems and methods utilizing state machines
US5377123A (en) * 1992-06-08 1994-12-27 Hyman; Edward Programmable logic device
US4914612A (en) * 1988-03-31 1990-04-03 International Business Machines Corporation Massively distributed simulation engine
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
EP1462964A3 (de) * 1988-10-05 2006-06-07 Quickturn Design Systems, Inc. Verfahren zur Stimulierung einer funktionellen logischen Schaltung mit einem logischen Stimulus
US5109353A (en) * 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
US5329470A (en) * 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
US5031129A (en) * 1989-05-12 1991-07-09 Alcatel Na Network Systems Corp. Parallel pseudo-random generator for emulating a serial pseudo-random generator and method for carrying out same
US5068812A (en) * 1989-07-18 1991-11-26 Vlsi Technology, Inc. Event-controlled LCC stimulation
US5084824A (en) * 1990-03-29 1992-01-28 National Semiconductor Corporation Simulation model generation from a physical data base of a combinatorial circuit
JPH05205005A (ja) * 1990-03-30 1993-08-13 Internatl Business Mach Corp <Ibm> ロジック・シミュレーション・マシン用ホスト・インタフェース
US5259006A (en) * 1990-04-18 1993-11-02 Quickturn Systems, Incorporated Method for substantially eliminating hold time violations in implementing high speed logic circuits or the like
US5345580A (en) * 1990-11-29 1994-09-06 Kabushiki Kaisha Toshiba Microprocessor device and emulator device thereof
FR2670299B1 (fr) * 1990-12-07 1993-01-22 Thomson Composants Militaires Circuit integre avec controleur de test peripherique.
US5114353A (en) * 1991-03-01 1992-05-19 Quickturn Systems, Incorporated Multiple connector arrangement for printed circuit board interconnection
US5321828A (en) * 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
JP2941135B2 (ja) * 1992-01-24 1999-08-25 富士通株式会社 疑似lsi装置及びそれを用いたデバッグ装置
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US5475624A (en) * 1992-04-30 1995-12-12 Schlumberger Technologies, Inc. Test generation by environment emulation
JP3620860B2 (ja) * 1992-06-05 2005-02-16 株式会社メガチップス シミュレーション装置
US5352123A (en) * 1992-06-08 1994-10-04 Quickturn Systems, Incorporated Switching midplane and interconnection system for interconnecting large numbers of signals
US5331571A (en) * 1992-07-22 1994-07-19 Nec Electronics, Inc. Testing and emulation of integrated circuits
US5572710A (en) * 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5448522A (en) * 1994-03-24 1995-09-05 Quickturn Design Systems, Inc. Multi-port memory emulation using tag registers
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation

Also Published As

Publication number Publication date
EP0755016A3 (de) 2000-09-13
EP0755016B1 (de) 2005-01-26
JPH09101975A (ja) 1997-04-15
JP3896177B2 (ja) 2007-03-22
US5923865A (en) 1999-07-13
EP0755016A2 (de) 1997-01-22
DE69634227D1 (de) 2005-03-03

Similar Documents

Publication Publication Date Title
DE69634227T2 (de) Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung
DE69737757T2 (de) System und Verfahren zur Speicher-Emulation
DE10045568B4 (de) Ereignisgestütztes Halbleiterprüfsystem
DE69817581T2 (de) System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen
DE60113780T2 (de) Verfahren und Vorrichtung zum Verfolgen von Hardwarezustanden mit dynamischen rekonfigurierbaren Testschaltungen
EP1720100B1 (de) Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
DE602004011320T2 (de) Verfahren und struktur zur entwicklung eines testprogramms für integrierte halbleiterschaltungen
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE4305442A1 (de) Vorrichtung zum Testen eines elektronischen Gerätes
DE4420610A1 (de) Verfahren und Vorrichtung zum Konfigurieren von Speicherschaltkreisen
DE4418892C2 (de) Mikrocomputer
DE3606650A1 (de) Hardware logik-simulator
DE60221462T2 (de) Vorrichtung und Verfahren zur High-Level-Synthese, Verfahren zur Produktion von logischen Schaltungen unter Verwendung des Verfahrens zur High-Level-Synthese,und Aufzeichnungsmedium
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
EP0186724A1 (de) Prüf- und Diagnoseeinrichtung für Digitalrechner
DE60102694T2 (de) Modulares computersystem und -verfahren
DE19815534A1 (de) Verfahren und System zum Entwurf und zur Simulation digitaler Rechner-Hardware
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE4211162C2 (de) Hardware-Emulationssystem
DE10296464T5 (de) Verfahren und Gerät zur Validierung des Entwurfes einer komplexen integrierten Schaltungen
DE19808988A1 (de) Durch Software rekonfigurierbares Target-Eingabe/Ausgabesystem eines Schaltungsemulationssystems
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition