DE69826859T2 - Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem - Google Patents

Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem Download PDF

Info

Publication number
DE69826859T2
DE69826859T2 DE69826859T DE69826859T DE69826859T2 DE 69826859 T2 DE69826859 T2 DE 69826859T2 DE 69826859 T DE69826859 T DE 69826859T DE 69826859 T DE69826859 T DE 69826859T DE 69826859 T2 DE69826859 T2 DE 69826859T2
Authority
DE
Germany
Prior art keywords
logic
chips
signals
signal
chip
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
DE69826859T
Other languages
English (en)
Other versions
DE69826859D1 (de
Inventor
P. Stephen SAMPLE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quickturn Design Systems Inc
Original Assignee
Quickturn Design Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25345974&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69826859(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Quickturn Design Systems Inc filed Critical Quickturn Design Systems Inc
Application granted granted Critical
Publication of DE69826859D1 publication Critical patent/DE69826859D1/de
Publication of DE69826859T2 publication Critical patent/DE69826859T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/25Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning

Landscapes

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

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen eine Vorrichtung zum Überprüfen elektronischer Schaltkreis-Designs und insbesondere Hardware-Emulationssysteme, in welchen mehrere Entwurfssignale auf einer einzelnen physikalischen Leitung zwischen programmierbaren Logik-Chips übertragen werden.
  • Hintergrund der Erfindung
  • Hardware-Emulationssysteme sind Vorrichtungen die eingerichtet sind zum Verifizieren von elektronischen Schaltkreis-Designs bevor die Designs als Chips oder Leiterplatten hergestellt werden. Diese Systeme sind typischerweise aus programmierbaren Logik-Chips (Logik-Chips) und programmierbaren Verbindungs-Chips (Verbindungs-Chips) aufgebaut. Der Ausdruck "Chip" der hierin verwendet wird bezieht sich auf integrierte Schaltkreise. Beispiele für Logik-Chips, welche umprogrammierbare Logik-Schaltkreise aufweisen, sind field-programmable gate arrays ("FPGAs"), welche serienmäßige Produkte und kundenspezifische Produkte aufweisen. Beispiele für Verbindungs-Chips, welche umprogrammierbare FPGAs aufweisen, sind Multiplexer-Chips, Crosspoint-Schalt-Chips und ähnliche. Verbindungs-Chips können entweder serienmäßige oder anwendungsspezifische Produkte sein.
  • Emulations-Systeme gemäß dem Stand der Technik wurden üblicherweise derart entworfen, dass jedes Signal in einem elektronischen Schaltkreis-Design, welches emuliert werden soll, auf eine oder mehrere physikalische Metallleitungen ("Verdrahtung") innerhalb eines Logik-Chips abgebildet wird. Signale, welche zwischen Logik-Chips geführt werden müssen, werden auf einen oder mehrere physikalische Anschlussstifte auf einem Logik-Chip, und eine oder mehrere physikalische Bahnen auf Leiterplatten, welche die Logik- und Verbindungs-Chips aufweisen, abgebildet.
  • Das eins-zu-eins Abbilden der Entwurfssignale auf physikalische Anschlussstifte und Bahnen in Emulations-Systemen gemäß dem Stand der Technik, führt zu dem Bedarf, dass das Emulations-System mindestens genauso viele Logik-Chip-Anschlussstifte und Leiterplatten-Bahnen aufweist, wie es Entwurfssignale gibt, welche zwischen den Logik-Chips geroutet werden sollen. Solch eine Anordnung erfordert die Verwendung sehr komplexer und teurer Baugruppen integrierter Schaltkreise, Leiterplatten und Platinen-Anschlüsse, um das Emulations-System zu konstruieren. Die hohen Kosten dieser Komponenten, welche ihrerseits die Kosten für das Hardware-Logikemulations-System erhöhen, ist ein Faktor, der die Zahl von Entwicklern, die man sich leisten kann, und folglich, den Nutzen, den man aus den Vorteilen, die ein Hardware-Emulationssystem bietet, limitiert.
  • Ferner erlaubt es die Herstellungstechnologie integrierter Schaltkreise, eine immer größer werdende Strukturauflösung zu verwenden. Also ist die Logik-Dichte der Logik-Chips (d.h., die Zahl der Logik-Gatter die hierin implementiert werden kann) dramatisch gestiegen. Der Anstieg der Zahl an Logik-Gattern, welche in einem einzigen Logik-Chip implementiert oder emuliert werden können, wurde jedoch nicht einer steigenden Zahl an Anschlussstiften (d.h., Leitungen), die für Eingänge, Ausgänge, Taktgeber und ähnliches an dem Chip-Gehäuse zur Verfügung stehen, gerecht. Die Zahl der Anschlussstifte an einem Gehäuse eines integrierten Schaltkreises wird durch den verfügbaren Umfang des Chips begrenzt. Außerdem, ist die Fähigkeit der Drahtbond-Montageeinrichtung, die verwendet wird, um die Bond-Pads auf dem integrierten Schaltkreis-Dice mit den Anschlussstiften des Gehäuses zu verbinden, mit der Zeitlangsam gestiegen. Also gibt es ein steigendes Ungleichgewicht zwischen der Menge an Logik, die auf einem Logik-Chip verfügbar ist, und der Zahl von Anschlussstiften die verfügbar sind, um die Logik an die Umgebung anzuschließen. Das führt zu einer schlechten durchschnittlichen Nutzbarkeit der logischen Kapazität der Logik-Chips, welche die Kosten eines Hardware-Emulationssystems erhöht, welche für das Emulieren eines elektronischen Schaltkreis-Designs mit gegebener Größe notwendig ist.
  • Zeit-Multiplexen ist eine Technik, welche für das gemeinsame Benutzen eines einzelnen physikalischen Drahtes oder Anschlussstiftes zwischen mehreren logischen Signalen in verschiedenen System-Typen verwendet wurde, in welchen die Kosten für jede physikalische Verbindung sehr hoch sind. Solche Systeme umfassen Telekommunikations-Systeme. Zeit-Multiplexen wurde jedoch üblicher weise nicht in Hardware-Emulationssystemen, wie beispielsweise in denen die von Quickturn Design Systems, Inc., Mentor Graphics Corporation, Aptix Corporation und anderen erhältlich sind, verwendet, da die Verwendung der Zeit-Multiplex-Verfahren gemäß dem Stand der Technik die Betriebsgeschwindigkeit bei der der emulierte Schaltkreis betrieben werden kann, bedeutend reduzierte. Außerdem, erschweren die Zeit-Multiplex-Techniken gemäß dem Stand der Technik die Einhaltung des korrekten asynchronen Verhaltens eines eingebetteten Designs in dem Hardware-Emulationssystem.
  • Wie erläutert, besteht eine Funktion des Hardware-Emulationssystems darin, die Funktionalität eines integrierten Schaltkreises zu verifizieren. Typischer weise wird das Design, wenn ein Schaltkreisentwickler oder Ingenieur einen integrierten Schaltkreis entwirft, in Form einer "Netzlisten"-Beschreibung des Designs repräsentiert. Die Netzlisten-Beschreibung (oder "Netzliste", wie von einem Fachmann bezeichnet), ist eine Beschreibung der Komponenten und der elektrischen Verbindungen zwischen den Komponenten des integrierten Schaltkreises. Die Komponenten weisen all diejenigen Elemente, wie beispielsweise kombinatorische Logik (z.B., Gatter) und sequentielle Logik (z.B., Flipflops und Puffer) auf, die für eine Implementierung eines Logik-Schaltkreises notwendig sind. Emulationssysteme gemäß dem Stand der Technik analysierten die Netzliste des Benutzer-Schaltkreises bevor die Netzliste in das Hardware-Emulationssystem implementiert wurde. Diese Analyse wies die Schritte zur Separation der verschiedenen Schaltkreis-Pfade des Designs in Takt-Pfade, Takt-Qualifier und Daten-Pfade auf. Ein Verfahren, um diese Analyse und Separation durchzuführen, wird in dem US-Patent mit der Nummer 5,475,830 von Chen und Kollegen, beschrieben, welche von dem gleichen Anmelder wie von dem der vorliegende Erfindung eingereicht wurde. Die Techniken, die in dem US-Patent mit der Nummer 5,475,830 offengelegt sind, wurden in Emulationssystemen gemäß dem Stand der Technik, wie in dem Hardware-Emulationssystem der Marke System-RealizerTM von Quickturn Design Systems, Inc., Mountain View, California, verwendet. Jedoch wurden die hierin offengelegten Techniken noch nicht in Kombination mit irgendeiner Form des Zeit-Multiplexens verwendet.
  • Andere Hardware-Emulationssysteme gemäß dem Stand der Technik, wie die, die von Virtual Machine Works (jetzt IKOS), ARKOS (jetzt Synopsis) und IBM erhältlich sind, haben versucht das Zeit-Multiplexen von Entwurfssignalen auf einen einzelnen physikalischen Logik-Chip-Anschlussstift und Leiterplatten-Bahn anzuwenden, um nach geringeren Hardware-Kosten für ein elektronisches Design einer bestimmten Größe, welches emuliert werden soll, zu streben. Diese Hardware-Emulationssysteme gemäß dem Stand der Technik modifizieren oder re-synthetisieren jedoch in einem Versuch die Takt-Pfade, um das korrekte Schaltkreis-Verhalten aufrecht zu erhalten. Wie vorherzusehen war gelingt dieser Änderungs- oder Re-Synthetisierungsprozess arbeitet vorhersagbar für synchrone Designs. Jedoch, kann diese Modifikation oder Re-Synthetisierung der Takt-Pfade in einem asynchronen Design zu ungenauen oder irreführenden Emulations-Ergebnissen führen. Da die meisten Schaltkreis-Designs asynchrone Takt-Architekturen aufweisen, ist die Notwendigkeit einer Modifikation oder Re-Synthetisierung der Takt-Pfade ein erheblicher Nachteil.
  • Zusätzlich haben Hardware-Emulationsmaschinen gemäß dem Stand der Technik, die das Zeit-Multiplexen verwenden, unter einer geringen Betriebsgeschwindigkeit gelitten. Dies ist eine Folge der Re-Synthetisierung der Takt-Pfade. In diesen Maschinen ist eine Anzahl von internen Maschinen-Zyklen erforderlich, um einen Takt-Zyklus eines Designs zu emulieren. Also, ist die effektive Betriebsgeschwindigkeit für das emulierte Design typischer weise um ein Vielfaches langsamer als die maximale Taktrate des Emulationssystems selbst. Falls mehrere asynchrone Takte in dem Design, welches emuliert werden soll, vorhanden sind, wird die Verlangsamung aufgrund der Notwendigkeit, den Status des emulierten Designs zwischen jedem Paar an Eingangstakt-Flanken zu ermitteln, noch schlechter.
  • Hardware-Emulations-Maschinen gemäß dem Stand der Technik, die das Zeit-Multiplexen verwenden, benötigen ferner eine komplexe Software, um den Fluss vieler Entwurfssignale über einen einzelnen physikalischen Logik-Chip-Anschlussstift oder Leiterplatten-Bahn zu synchronisieren. Jedes Entwurfs-Signal muss derart getimed werden, so dass es den korrekten Wert bei der Instanz aufweist, bei der es in anderen Teilen des Systems zum Berechnen anderer Entwurfssignale benötigt wird. Diese Timinganalyse-Software (auch bekannt als Scheduling-Software) trägt zu der Komplexität des Emulators und zu der Zeit bei, die benötigt wird, um ein Schaltkreis-Design in den Emulator zu kompilieren.
  • Außerdem, verwenden Hardware-Emulations-Maschinen gemäß dem Stand der Technik, welche das Zeit-Multiplexen verwenden, nur eine einfache Form des Zeit-Multiplexens, welches eine minimale Hardware benötigt aber eine große Menge an Energie verwendet (z.B., Strom) und welches ein komplexes System-Design erfordert.
  • Also, gibt es einen Bedarf für ein Hardware-Emulationssystem, welches eine hohe logische Kapazität, kurze Kompilier-Zeiten, weniger komplizierte Software, ein vereinfachtes mechanisches Design und einen reduzierten Energieverbrauch aufweist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung, wie sie gemäß Anspruch 1 definiert ist, offenbart und beansprucht einen neue Art eines Hardware-Emulationssystems offen, welches Hardware-Kosten durch Zeit-Multiplexen mehrerer Entwurfssignale auf physikalische Logik-Chip-Anschlussstifte und Leiterplatten-Bahnen, reduziert, welches aber nicht den Einschränkungen einer langsamen Betriebsgeschwindigkeit und einer schlechten asynchronen Leistung unterliegt. Zusätzliche Verfahren, um mehrere Signale auf eine einzelne physikalische Verbindung zu multiplexen, welche für das Hardware-Emulationssystem geeignet sind, die aber nicht den Nachteil eines hohen Energieverbrauchs und eines komplexen System-Designs aufweisen, werden ebenfalls offenbart.
  • In der bevorzugten Ausführungsform wird das Zeit-Multiplexen in einem Design auf Takt-Qualifier-Pfaden (ein Takt-Qualifier ist ein beliebiges Signal, welches dazu verwendet wird den Takt zu sperren) und Daten-Pfaden, aber nicht auf Takt-Pfaden durchgeführt (ein Takt-Pfad ist ein Pfad zwischen dem Takt-Signal und der Takt-Quelle, von welcher der Takt erlangt wird).
  • Das umkonfigurierbare Logik-System der vorliegenden Erfindung weist eine Mehrzahl von umprogrammierbaren Logik-Vorrichtungen auf, wobei jede einen internen Schaltkreis aufweist, der umprogrammierbar konfigurierbar ist, um zumindest kombinatorische Logik-Elemente und Speicher-Elemente bereit zustellen. Die programmierbaren Logik-Vorrichtungen weisen auch programmierbare Eingangs-/Ausgangs-Anschlüsse auf, welche umprogrammierbar mit ausgewählten funktionellen Elemente der Logik-Vorrichtungen verbunden werden können. Die umprogrammierbaren Logik-Vorrichtungen weisen Eingangs-Demultiplexer und Ausgangs-Multiplexer auf, welche an jedem Eingans-/Ausgangs-Anschluss implementiert sind. Die Eingangs-Demultiplexer empfangen ein zeitmultiplextes Signal und teilen es in ein oder mehrere interne Signale auf. Die Ausgangs-Multiplexer kombinieren ein oder mehrere interne Signale auf eine einzelne physikalische Verbindung.
  • Die Erfindung weist ferner eine Mehrzahl von umprogrammierbaren Verbindungs-Vorrichtungen auf, von denen jede Eingangs-/Ausgangs-Anschlüsse und einen internen Schaltkreis aufweist, welcher umprogrammierbar konfiguriert werden kann, um Verbindungen zwischen gewählten Eingans-/Ausgangs-Anschlüssen bereit zu stellen. Die umprogrammierbaren Verbindungs-Vorrichtungen weisen ferner Eingangs-Demultiplexer und Ausgangs-Multiplexer auf, die an jedem Eingans-/Ausgangs-Anschluss implementiert sind. Die Eingangs-Demultiplexer empfangen ein zeitmultiplextes Einganssignal und teilen es in ein oder mehrere Komponenten-Signale auf. Die Ausgangs-Multiplexer kombinieren ein oder mehrere Komponenten-Signale auf eine zweite einzelne physikalische Verbindung.
  • Die Erfindung weist ferner einen Satz von festgelegten elektrischen Leiterbahnen auf, welche die programmierbaren Eingangs-/Ausgangs-Anschlüsse der umprogrammierbaren Logik-Vorrichtungen mit den Eingans-/Ausgangs-Anschlüssen der umprogrammierbaren Verbindungs-Vorrichtungen verbinden.
  • In einem anderen Aspekt der vorliegenden Erfindung wird ein Logik-Analysator in das Logik-Emulationssystem integriert, welcher eine vollständige Transparenz des Designs währende der laufenden Emulation bereitstellt. Der Logik-Analysator der vorliegenden Erfindung ist derart verteilt, so dass seine Komponenten in viele der Ressourcen des Emulationssystems integriert sind. Der Logik-Analysator der vorliegenden Erfindung umfasst wenigstens das Aufweisen von Scan-Ketten, die in jeden der Logik-Chips auf den Logik-Boards programmiert sind. Die Scan-Ketten weisen mindestens ein Flipflop auf. Die Scan-Ketten sind während der laufenden Emulation mit ausgewählten Teilmengen der sequentiellen Logik-Elemente des Designs programmierbar verknüpfbar.
  • Der Logik-Analysator weist ferner mindestens eine Speicher-Einrichtung auf, welche mit der Scan-Kette in Kommunikation steht. Diese Speicher-Einrichtung speichert während der laufenden Emulation Daten von den sequentiellen Logik-Elementen des Logik-Designs. Der Steuer-Schaltkreis kommuniziert mit den Logik-Chips des Emulationssystems und generiert Logik-Analysator Takt-Signale, welche die Scan-Ketten takten. Der Kontroll-Schaltkreis generiert auch Trigger-Signale wenn vorbestimmte Kombinationen von Signalen in den Logik-Chips auftreten.
  • Die obigen und weitere bevorzugte Merkmale der Erfindung, welche verschiedene neuartige Details der Implementierung und Kombination der Elemente aufweisen, werden nun mit Bezug auf die beiliegenden Zeichnungen näher erläutert und in den Ansprüchen dargelegt. Es wird verstanden werden, dass die besonderen Verfahren und Schaltkreise, welche die Erfindung verkörpern, ausschließlich der Erläuterung dienen und nicht als Einschränkungen der Erfindung dargestellt werden. Wie der Fachmann verstehen wird, können die Prinzipien und Merkmale dieser Erfindung in mehreren und zahlreichen Ausführungsformen eingesetzt werden, ohne vom Anwendungsgebiet der Erfindung abzuweichen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Es wird Bezug auf die beiliegenden Zeichnungen genommen, in welchen erläuternde Ausführungsformen der Aspekte der Erfindung gezeigt werden, von denen neuartige Merkmale und Vorteile offensichtlich sein werden.
  • 1 ist ein Blockdiagramm, welches ein Teil-Crossbar-Netzwerk zeigt, welches das Zeit-Multiplexen mit einschließt.
  • 2 ist ein Timing-Diagramm, welches die Signal-Beziehungen für das Zwei-zu-eins-zeitmultiplexen zeigt.
  • 3 ist ein Blockdiagramm, welches den notwendigen Schaltkreis in einem FPGA zeigt, um Zwei-zu-einszeitmultiplexen durchzuführen.
  • 4 ist ein Blockdiagramm, welches das Ersatzschaltbild in einem Multiplexer-Chip zeigt.
  • 5 ist ein Timing-Diagramm, welches die notwendigen Signal-Beziehungen für das Vier-zu-eins-zeitmultiplexen zeigt.
  • 6 ist ein Blockdiagramm, welches die notwendige Logik in einem FPGA zeigt, um das Vier-zu-eins-zeitmultiplexen durchzuführen.
  • 7 ist ein Blockdiagramm, welches das Ersatzschaltbild in einem Multiplexer-Chip zeigt.
  • 8 ist ein Timing-Diagramm, welches die Signal-Beziehungen für ein Pulsweiten-Kodier-Schema zeigt, welches für ein Hardware-Emulationssystem geeignet ist.
  • 9 ist ein Timing-Diagramm, welches die Signal-Abhängigkeiten eines Phasen-Kodier-Schemas zeigt, welches für ein Hardware-Emulationssystem geeignet ist.
  • 10 ist ein Timing-Diagramm, welches die Signal-Abhängigkeiten für ein serielles Daten-Kodier-Schema zeigt, welches für ein Hardware-Emulationssystem geeignet ist.
  • 11 ist ein Blockdiagramm eines Logik-Boards einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 12 ist ein Blockdiagramm der Verbindung zwischen den verschiedenen Schaltkreis-Boards einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 13 ist ein Diagramm, welches die physikalische Konstruktion einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • 14 ist ein Blockdiagramm der Verbindung zwischen den verschiedenen Schaltkreis-Boards einer Version des vorliegenden bevorzugten Emulationssystems, welches weniger logische Kapazitäten aufweist.
  • 15 ist ein Diagramm, welches die physikalische Konstruktion des Emulationssystems der 14 zeigt, welches ein Logik-Board und ein I/O-Bord aufweist.
  • 16 ist ein Blockdiagramm eines I/O-Boards und eines Kern-Boards.
  • 17 ist ein Blockdiagramm eines Mux-Boards
  • 18 ist ein Blockdiagramm eines erweiterbaren Mux-Boards
  • 19 ist ein Blockdiagramm, welches zeigt, wie die Benutzer-Takte in dem bevorzugten Hardware-Emulationssystem der vorliegenden Erfindung verteilt werden.
  • 20 ist ein Blockdiagramm, welches die Steuerstruktur eines bevorzugten Hardware-Emulationssystems der vorliegenden Erfindung zeigt.
  • 20a ist ein Blockdiagramm des Logik-Analysators einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 20b ist ein Blockdiagramm, welches den Daten-Pfad für die Logik-Analysator-Signale einer bevorzugten Ausführung der vorliegenden Erfindung zeigt.
  • 20c ist ein Blockdiagramm, welches die Verteilung der Ereignisses des Logik-Analysators in den Logik-Chips einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • 20d ist ein Logik-Diagramm, welches zeigt, wie untersuchte Signale von Speicher-Elementen und externen Eingabe-Werten berechnet werden.
  • 21 ist ein Fluss-Diagramm, welches zeigt, wie eine bevorzugte Ausführungsform des Hardware-Emulationssystems der vorliegenden Erfindung programmiert ist.
  • 22 ist ein Fluss-Diagramm, welches die Sequenz der Schritte zeigt, die für die Kompilierung des Software-Hardware Modells notwendig sind, welche gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung durch einen Verhaltens-Prüfanlage-Kompilierer erzeugt wird.
  • 22a ist ein Blockdiagramm, welches ein Beispiel für einen Speicher-Schaltkreis zeigt, welcher durch den LCM-Speicher-Generator einer bevorzugten Ausführungsform der vorliegenden Erfindung generiert werden kann.
  • 23 ist ein Blockdiagramm einer Netzlisten-Struktur, die erzeugt wurde, um die speziellen Verbindungen der Co-Simulationslogik zu einem Mikroprozessor-Ereignis-Synchronisations-Bus gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darzustellen.
  • 24a ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24b ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O- Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24c ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24d ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24e ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24f ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24g ist ein schematisches Diagramm eine Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24h ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24i ist ein schematisches Diagramm einer Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24j ist ein schematisches Diagramm eine Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 24k ist ein schematisches Diagramm eine Zeitmultiplex-Zelle, welche abhängig vom Typ der I/O-Anschlussstifte des Logik-Chips in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingefügt werden kann.
  • 25 ist ein Blockdiagramm einer Ereignis-Detektions-Zelle einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 26 ist ein schematisches Diagramm, welches zeigt, wie die Ausgänge von UND-Bäumen paarweise unter Verwendung spezieller Ereignis-Multiplexer-Zellen, gemäß einer Ausführungsform der vorliegenden Erfindung, zeitgemultiplext werden.
  • 27 ist ein Blockdiagramm eines Ereignis-Detektor-Herunterlade-Schaltkreises einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
  • Zukehrend zu den Figuren, werden nun die vorliegenden bevorzugten Vorrichtungen und Verfahren der vorliegenden Erfindung erläutert.
  • 1 zeigt einen Teil der Teil-Crossbar-Verbindung für eine bevorzugte Ausführungsform des Hardware- Emulationssystems der vorliegenden Erfindung.
  • Ausführungsformen einer Teil-Crossbar-Verbindungs-Architektur wurden in den US-Patenten mit den Nummern 5,036,473, 5,448,496 und 5,452,231 von Butts et al, beschrieben, welche von dem gleichen Anmelder wie die vorliegende Erfindung eingereicht sind. In einer Teil-Crossbar-Verbindung werden die Eingans-/Ausgangs-Anschlussstifte jedes Logik-Chips in passende Teilmengen unterteilt, wobei auf jedem Logik-Chip die gleiche Unterteilung verwendet wird. Die Anschlussstifte jedes Mux-Chips (auch bekannt als Crossbar-Chips) sind mit der gleichen Teilmenge an Anschlussstiften jedes Logik-Chips verbunden. Also ist Crossbar-Chip 'n' mit der Teilmenge 'n' der Anschlussstifte eines jeden Logik-Chips verbunden. Es werden genauso viele Crossbar-Chips wie es Teilmengen gibt verwendet, und jeder Crossbar-Chip weist genauso viele Anschlussstifte wie die Anzahl an Anschlussstiften in den Teilmengen auf, welche die Anzahl an Logik-Chips timen. Jedes Logik-Chip/Crossbar-Chip Paar ist mittels so vieler Drähte, genannt Pfade, wie es Anschlussstifte in jeder Teilmenge gibt, verbunden.
  • Die Teil-Crossbar-Verbindung der 1 weist eine Anzahl an umprogrammierbaren Verbindungsblöcke 12 auf, welche in der bevorzugten Ausführungsform Multiplexer-Chips (Mux-Chips) sind. Der Teil-Crossbar-Anschluss der 1 weist ferner eine Anzahl von umprogrammierbar konfigurierbaren Logik-Chips 10 auf, welche in einer bevorzugten Ausführungsform fieldprogrammable gate arrays (FPGAs) sind. Jeder Mux-Chip 12 weist eine oder mehrere Verbindungen zu jedem Logik-Chip 10 auf. In der bevorzugten Ausführungsform, wie von Butts beschrieben, beansprucht jedes Entwurfs-Signal, welches von einem Logik-Chip zu einem Mux-Chip führt, eine physikalische Verbindung. Mit anderen Worten ist ein Signal über einen Anschlussstift eines Logik-Chips 10 mit einem Anschlussstift eines Mux-Chips 12 verbunden. In den Ausführungsformen der vorliegenden Erfindung kann jede physikalische Verbindung in der Teil-Crossbar-Architektur ein oder mehrere Entwurfssignale repräsentieren. Jeder Mux-Chip 12 weist einen Crossbar 22 zusammen mit einer Anzahl von Eingangs-Demultiplexern 24 und Ausgangs-Multiplexern 26 auf. Die Eingangs-Demultiplexer 24 nehmen ein zeit-gemultiplextes Eingangs-Signal und unterteilen es in ein oder mehrere Komponenten-Signale. Die Komponenten-Signale werden separat durch den Crossbar 22 geroutet. Anschließend werden sie in der gleichen oder einer unterschiedlichen Kombination von einem Ausgangs-Multiplexer-Schaltkreis wieder gemultiplext. In der bevorzugten Ausführungsform werden die zeit-gemultiplexten Signale nicht durch den Mux-Chip-Crossbar 22 geroutet. Durch das nicht Hindurch-Routen der zeit-gemultiplexten Signale durch den Mux-Chip-Crossbar 22 wird die Flexibilität des Routens durch das Teil-Crossbar-Netzwerk erhöht, da die Eingangssignale und Ausgangssignale zu den Mux-Chips in unterschiedlichen Kombinationen kombiniert werden können. Dies reduziert auch den Energieverbrauch des Mux-Chip 12, da die Frequenz des Zeit-Multiplexens typischer weise um einiges höher ist als die durchschnittliche Umschalt-Rate der Komponenten-Signale.
  • Die Logik-Chips 10 weisen ebenfalls eine Mehrzahl von Eingangs-Demultiplexern 34 und Ausgangs-Multiplexern 36 auf. Die Ausgangs-Multiplexer 36 nehmen ein oder mehrere interne Logik-Chip- 10 Signale und kombinieren sie auf eine einzelne physikalische Verbindung. Die Eingangs-Demultiplexer 34 nehmen ein zeit-gemultiplextes Signal und unterteilen es in ein oder mehrere interne Logik-Chip- 10 Signale. In der vorliegenden bevorzugten Ausführungsform, sind diese Multiplexer 36 und Demultiplexer 34 derart konstruiert, dass sie die internen konfigurierbaren Logik-Blöcke eines handelsüblich erhältlichen Standard-FPGA's verwenden. Jedoch können sie auch derart konstruiert sein, dass sie die Eingangs-/Ausgangs-Blöcke eines kundenspezifisch entworfenen umprogrammierbaren Logik-Chips für die Emulation verwenden.
  • 1 zeigt, lediglich zu erläuternden Zwecken, zwei Mux-Chips 12 mit jeweils vier Anschlussstiften und vier Logik-Chips 10 mit jeweils zwei Anschlussstiften. Die tatsächlichen Ausführungsformen bevorzugter Hardware-Emulationssysteme weisen mehrere von jedem Chip-Typs auf, wobei jeder Chip viel mehr Anschlussstifte aufweisen würde. Die tatsächliche Anzahl an Mux-Chips 12, Logik-Chips 10 und die Anzahl von Anschlussstiften auf jedem ist bloß eine Frage der Design-Wahl und ist von der gewünschten Gatter-Kapazität abhängig, die erzielt werden soll. In einer vorliegenden bevorzugten Ausführungsform weist jede Leiterplatte vierundfünfzig Mux-Chips 12 und siebenunddreißig Logik-Chips 10 auf. Die vorliegend bevorzugten Logik-Chips 10 sind die 4036XL FPGA's (auch bekannt als "Logik-Zellen-Array"), welche von der Xilinx Corporation hergestellt werden. Es ist zu bemerken, dass aber auch weitere umprogrammierbare Logik-Chips, wie die, die von der Altera Corporation, Lucent Technologies oder Actel erhältlich sind, verwendet werden können. In der vorliegenden bevorzugten Ausführungsform sind sechsunddreißig der Logik-Chips 10 jeweils mittels fünf Verbindungen mit jedem der vierundfünfzig Mux-Chips 12 verbunden. Das bedeutet, dass jeweils fünf der Anschlussstifte jedes dieser sechsunddreißig Logik-Chips 10, eine physikalische elektrische Verbindung zu fünf Anschlussstiften eines jeden der vierundfünfzig Mux-Chips 12 aufweisen. Der siebenunddreißigste Logik-Chip 10 bildet drei Verbindungen mit jedem dieser vierundfünfzig Mux-Chips 12. Das bedeutet, dass drei der Anschlussstifte dieses siebenunddreißigsten Logik-Chips 10 eine physikalische elektrische Verbindung zu drei Anschlussstiften eines jeden der vierundfünfzig Mux-Chips 12 aufweisen.
  • 2 zeigt ein Beispiel eines Timing-Diagramms für ein Zwei-zu-eins-zeitmultiplex-Emulationssystem, in welchem das interne Logik-Chip-Signal A 40 und das interne Logik-Chip-Signal B 42 zu einem einzelnen Ausgangssignal 46 gemultiplext werden. Ein Mux-Taktsignal 44 wird durch zwei geteilt, um das Geteilt-Taktsignal 50 zu erzeugen. Ein SYNC-Signal 48 wird für die Synchronisation des Mux-Takt-Teilers 68 (siehe 3) verwendet, so dass die fallende Flanke des Mux-Taktes 44 das Geteilt-Taktsignal 50 auf null setzt, falls das SYNC-Signal 48 low ist. Der geteilte Geteilt-Taktsignal 50 wird verwendet, um das interne Signal A 40 bei jeder steigenden Flanke abzutasten. Diese Abtastung wird in einem Speicher-Element, wie beispielsweise einem Flipflop oder Puffer (in 3 gezeigt) platziert. Das gleiche Geteilt-Taktsignal 50 wird verwendet, um das interne Signal B 42 bei jeder fallenden Flanke abzutasten. Diese Abtastung wird in einem weiteren Flipflop oder Puffer (in 3 gezeigt) platziert. In einer bevorzugten Ausführungsform kann das Mux-Taktsignal 44 zu dem Signal A 40 und zu dem Signal B 42 asynchron sein. Wenn das Geteilt-Taktsignal 50 high ist, wird das vorherig abgetastete Signal A 40 zu dem Ausgangs-Signal 46 übermittelt. Wenn das Geteilt-Taktsignal 50 low ist, wird das vorherig abgetastete Signal B 42 zum Ausgangs-Signal 46 übermittelt.
  • Unter Bezugnahme auf 3 wird die Logik, die in dem FPGA 10 der vorliegenden bevorzugten Ausführungsform implementiert ist, welche das Timing der Signale, die in 2 gezeigt ist, im Detail zeigt. Ein Zwei-zu-eins-takt-Teiler 68 teilt das Mux-Taktsignal 44, so dass das Geteilt-Taktsignal 50 erzeugt wird. Der Takt-Teiler 68 weist das Flipflop 68a, das UND-Gatter 68b und den Inverter 68c auf. Das Geteilt-Taktsignal 50 ist Eingang des Ausgangs-Multiplexers 68 (siehe Multiplexer 36 der 1), und des Eingangs-Demultiplexers 64 (siehe Demultiplexer 34 der
  • 1). Der Takt-Teiler 68 wird durch das SYNC-Signal 48 periodisch zurückgesetzt, um sicherzustellen, dass alle Takt-Teiler des Systems synchronisiert sind. Der Eingangs-Demultiplexer 64 setzt sich aus zwei Flipflops, 65a und 65b zusammen. Die Flipflops 65a und 65b werden mittels des Mux-Taktes 44 getaktet. Ein Flipflop (z.B. 65b) wird aktiviert, wenn das Geteilt-Taktsignal 50 high ist, und das andere (z.B. 65a) wird aktiviert, wenn das Geteilt-Taktsignal 50 low ist. Das Geteilt-Taktsignal 50 wird nicht direkt als Takt für die Flipflops 65a, 65b im Eingangs-Demultiplexer 64 und im Ausgangs-Multiplexer 66 verwendet, um eine gering Zeitversetzung der Signale in dem FPGA 10 zu erhalten. Der Ausgang eines der beiden Flipflops 65a oder 65b stellt dem Kern 62 des FPGA's 10 ein statisches gedemultiplextes Entwurfssignal bereit (der Kern 62 des FPGA's weist die konfigurierbaren Elemente auf, welche dazu verwendet werden um die Logik-Funktionen des Benutzer-Entwurfes zu implementieren). Der Ausgangs-Multiplexer 66 weist zwei Flipflops 67a, 67b auf, welche durch den Mux-Takt 44 getaktet werden. Der Ausgangs-Multiplexer 66 weist ferner den Zwei-zu-eins-Multiplexer 67c auf. Ein Flipflop (z.B., Flipflop 67b) wird aktiviert, wenn das Geteilt-Taktsignal 50 high ist, und das andere Flipflop (z.B., Flipflop 67a) wird aktiviert, wenn das Geteilt-Taktsignal 50 low ist. Der Zwei-zu-eins-Multiplexer 67c wählt entweder den Ausgang Q des Flipflops 67a oder des Flipflops 67b, damit diese auf dem Ausgabe-Anschlussstift erscheinen.
  • Der zugehörige Schaltkreis für den Mux-Chip 12 ist in 4 abgebildet. Im Gegensatz zu dem Schaltkreis in dem Logik-Chip 10, ist der Ausgangs-Multiplexer 76 (siehe Multiplexer 26 der 1) in dem Mux-Chip 12 ohne Flipflops konstruiert, und weist daher den Zwei-zu-eins-Multiplexer 76a auf. Dies ist möglich, da in der bevorzugten Ausführungsform die Verzögerungen durch den Mux-Chip 12 gering sind. Um zusätzliche Logik einzusparen weisen die Flipflops 74a, 74b in dem Eingangs-Demultiplexer 74 (siehe Demultiplexer 24 der 1) keine Aktivierungs-Eingänge auf. Stattdessen wird das Geteilt-Taktsignal 50 dazu verwendet, um die Flipflops 74a, 74b direkt zu takten. Ein Takt-Teiler 78 weist vorzugsweise ein Flipflop 78a, ein UND-Gatter 78b und einen Inverter 78c auf. Der Takt-Teiler 78, der Eingangs-Demultiplexer 74 und der Ausgangs-Multiplexer 76 funktionieren ähnlich den entsprechenden Elementen in 3.
  • Da im Voraus nicht bekannt ist, ob ein Eingangs-/Ausgangs-("I/O") Anschlussstift auf einem Mux-Chip 12 ein Eingang oder Ausgang für ein gegebenes Design ist, weisen alle I/O-Anschlussstifte in den Mux-Chips 12 jeweils einen Eingangs-Demultiplexer 74 und einen Ausgangs-Multiplexer 76 auf.
  • Unter Verwendung der Konzepte der vorliegenden Erfindung, ist es möglich, ein Vier-zu-eins-zeitmultiplexen durchzuführen, indem ein Anschlussstift für eine gewisse Zeitdauer ein Eingang und für eine gewisse Zeitdauer ein Ausgang ist. 5 zeigt ein Timing-Diagramm für das Vier-zu-eins-zeitmultiplexen. Ebenso wie für das Zwei-zu-einszeitmultiplexen, sind ein Mux-Taktsignal 44 und ein SYNC-Signal 48 vorhanden. Das Mux-Taktsignal 44 wird durch zwei geteilt, so dass das Geteilt-Taktsignal 50 erzeugt wird. Der Teiler wird, wenn das SYNC-Signal low ist und eine fallenden Flanke in dem Mux-Taktsignal auftritt, synchron zurückgesetzt. Darüber hinaus gibt es ein zusätzliches Richtungs-Signal 80, welches durch eine nochmaliges Teilen des Geteilt-Taktsignals 50 erzeugt wird. Das Richtungs-Signal 80 steuert zu jedem Zeitpunkt, ob der Anschlussstift entweder ein Eingang oder ein Ausgang ist. Wie später beschrieben wird, werden vier Aktivierungs-Signale E0 90, E1 92, E2 94, E3 96 zur Aktivierung individueller Flipflops in den Logik-Chips 10 verwendet. Diese vier Signale werden von dem Geteilt-Taktsignal 50 und dem Richtungs-Signal 80 abgeleitet.
  • Das Geteilt-Taktsignal 50 tastet das externe Signal 98 ab, um das interne Einganssignal E 86 und das interne Eingangssignal F 88 zu erzeugen, wenn das Richtungs-Signal 80 low ist. Wenn das Richtungs-Signal 80 low ist, kennzeichnet es, dass der Anschlussstift in der Eingangsrichtung betrieben wird. Das interne Eingangssignal E 86 wird durch Abtasten auf eine steigenden Flanke des Geteilt-Taktsignal 50 erzeugt. Das interne Eingangssignal F 88 wird durch Abtasten auf eine fallende Flanke des Geteilt-Taktsignals 50 erzeugt. Wenn das Richtungs-Signal 80 high ist, wird der Anschlussstift, der es empfängt, als ein Ausgang betrieben. Internes Ausgangssignal C 82 wird auf das externe Signal 98 ausgegeben, wenn das Geteilt-Taktsignal 50 low ist, und internes Ausgangssignal D (84) wird ausgegeben wenn das Geteilt-Taktsignal 50 high ist.
  • Unter Bezugnahme auf 6 wird die Logik, die in dem Logik-Chip 10 zur Erzeugung der Taktsignale der 5 implementiert ist, im Detail dargestellt. Ein Takt-Teiler 104 teilt das Mux-Taktsignal 44, um das Geteilt-Taktsignal 50 und das Richtungs-Signal 80 zu erzeugen. Der Takt-Teiler 104 weist die Flipflops 104a und 104b, die UND-Gatter 104c und 104d, einen Inverter 104e, ein EXKLUSIV-ODER-Gatter 104f und die UND-Gatter 104g104j auf. Der Takt-Teiler 104 wird periodisch durch das SYNC-Signal 48 zurückgesetzt, um sicher zu stellen, dass alle Takt-Teiler 104 innerhalb des Systems synchronisiert sind. Zusätzlich erzeugt der Takt-Teiler-Schaltkreis 104 die Aktivierungs-Signale E0 90, E1 92, E2 94 und E3 96. Diese Signale werden als Aktivierungen für die Eingänge/Ausgänge der Multiplexer-Schaltkreise 100 und 102 verwendet.
  • Der Eingangs-/Ausgangs-Multiplexer-Schaltkreis 100 weist ein dem Diagramm der 5 korrespondierende Timing auf. Das externe Signal 98 wird eingegeben, wenn das Richtungs-Signal 80 low ist. Das Signal E 86 und das Signal F 88 werden von dem externen Signal 98 abgetastet, wenn das Aktivierungs- Signal E0 90 und das Aktivierungs-Signal E1 92 aktiv sind, und werden jeweils in den Flipflops 100a und 100b platziert. Die Signale D 84 und C 82 werden in den Flipflops 100c und 100d gespeichert, wenn die Aktivierungs-Signale E2 94 und E1 92 aktiv sind. Ein bevorzugter Eingangs-/Ausgangs-Multiplexer-Schaltkreis 100 weist ferner einen Multiplexer 100e und einen Puffer 100f auf. Diese veranlassen die Signale D 84 und C 82, die vorher in den Flipflops 100c und 100d gespeichert wurden, nacheinander auf dem externen Signal 98 zu erscheinen, wenn das Richtungs-Signal 80 high ist.
  • Der Eingans-/Ausgangs-Multiplexer-Schaltkreis 102 ist ähnlich, bis auf dass das Timing modifiziert wurde, so dass das Signal 106 ausgegeben wird, wenn das Richtungs-Signal 80 low ist. Der Eingans-/Ausgangs-Multiplexer 102 weist vorzugsweise Flipflops 102a102d, einen Multiplexer 102e und einen Puffer 102f auf. Der Eingangs-/Ausgangs-Multiplexer 100 wird hierin als ein "Inout"-Multiplexer bezeichnet, während der Multiplexer 102 hierin als ein "Outin"-Multiplexer bezeichnet wird. Wenn Anschlussstifte in einem System zusammen verbunden werden, muss ein Inout-Anschlussstift immer mit einem Outin-Anschlussstift verbunden sein, so dass ein Anschlussstift sendet, während der andere empfängt (d.h., Empfangsbereit oder Empfangen eines Signals).
  • Der korrespondierende 4-Wege Zeit-Multiplexer-Schaltkreis wird für den Mux-Chip 12 in 7 gezeigt. Ein Takt-Teiler 132 erzeugt das geteilte Taktsignal 50 und das Richtungs-Signal 80. Der Takt-Teiler 132 weist die Flipflops 132a, 132b, die UND-Gatter 132c, 132d, einen Inverter 132e und ein EXKLUSIV-ODER-Gatter 132f auf. Wie in dem Logik-Chip 10, gibt es einen Inout-Multiplexer 120 und einen Outin-Multiplexer 122. Der Inout-Multiplexer 120 weist vorzugsweise die Flipflops 120a, 120b, einen Zwei-zu-eins-Multiplexer 120c und einen Puffer 120d auf. Der Inout-Multiplexer 120 weist das Timing gemäß 5 auf. Das externe Signal 98 ist ein Eingang, wenn das Richtungs-Signal 80 low ist und ein Ausgang, wenn das Richtungs-Signal 80 high ist. Die internen Signale 124 und 126 werden von dem externen Signal 98 abgetastet, wenn das Richtungs-Signal 80 low ist. Die internen Signale 128 und 130 werden auf das externe Signal 98 ausgegeben, wenn das Richtungs-Signal 80 high ist.
  • Der Outin-Multiplexer-Schaltkreis 122 ist ähnlich, bis auf dass das Timing modifiziert wurde, so dass ein Signal 134 ein Eingang ist, wenn das Richtungs-Signal 80 high ist, und ein Ausgang, wenn das Richtungs-Signal 80 low ist. Der Outin-Multiplexer 122 weist vorzugsweise die Flipflops 122a, 122b, einen Zwei-zu-eins-Multiplexer 122c und einen Puffer 122d auf. Ein Outin-Anschlussstift an einem Mux-Chip 12 muss einen Inout-Anschlussstift an einem anderen Mux-Chip 12 oder einem Logik-Chip 10 kontaktieren. Zusätzliche Konfigurations-Bits (nicht gezeigt in 7) ermöglichen es, jeden Anschlussstift eines Mux-Chips 12 programmierbar zu konfigurieren, um entweder nicht-gemultiplext, zwei-zu-eins gemultiplext, genauso wie ein Eingang oder ein Ausgang, oder vier-zu-eins gemultiplext, genauso wie ein Inout- oder ein Outin-Anschlussstift zu sein. Dies wird durch ein selektives Erzwingen des Richtungs-Signals 80 erreicht, immer low (für einen Zwei-zu-einseingang), immer high (für einen Zwei-zu-einsausgang), nicht invertiert (für einen Inout-vier-zu-eins-anschlussstift wie in 120) oder invertiert zu sein (für einen Outin-vier-zu-eins-anschlussstift wie in 122). Zusätzlich kann das externe Signal 98 direkt mit dem Kern-Signal 124 für einen nicht-gemultiplexten Eingang kontaktiert werden. Die Kern-Ausgänge 128 und 130 können direkt mit den Eingangs- und Aktivierungs-Anschlussstiften des Puffers 120 für eine nicht gemultiplexte Ausgabe verbunden werden.
  • Obwohl die bevorzugte Ausführungsform Zwei-zu-eins- und Vier-zu-eins-zeitmultiplexen mit einschließt, kann die offenbarte Technik dahingehend erweitert werden, das Multiplexen durch einen beliebigen anderen Faktor zu zulassen, den der Entwickler wählen könnte. Im Allgemein führen größere Multiplex-Faktoren zu einer herabgesetzten Emulations-Geschwindigkeit, lassen aber eine einfachere und kostengünstigere Hardware zu, da die physikalischen Drähte und Anschlussstifte von mehreren logischen Entwurfssignalen genutzt werden können.
  • Außerdem, gibt es viele andere Verfahren für das Multiplexen mehrerer Informations-Bits auf einen einzelnen physikalischen Draht, welche in einem Emulationssystem verwendet werden könnten. Beispiele dieser Techniken sind die Pulsweiten-Modulation, die Phasen-Modulation und die serielle Daten-Kodierung. Die Wahl, welche der Techniken in einer bestimmten Ausführungsform eingesetzt wird, ist eine Frage der Wahl des Entwicklers und hängt von der Abstimmung zwischen der Betriebsgeschwindigkeit, den Kosten, dem Energieverbrauch und der Komplexität der benötigten Logik, ab.
  • Ein Aspekt dieser komplexeren Kodierungs-Schemata, welcher in einem Hardware-Emulationssystem von Bedeutung ist, ist die Fähigkeit den Energieverbrauch zu reduzieren. Ein Hardware-Emulationssystem weist typischerweise mehrere tausend Verbindungspfade auf. Um eine Verzögerung durch das System zu minimieren, ist es wünschenswert, diese Verbindungspfade so schnell wie möglich zwischen unterschiedlichen logischen Entwurfssignalen umzuschalten. Der Energieverbrauch des Systems wird jedoch maßgeblich durch die Geschwindigkeit bestimmt, bei der die Verbindungspfade umgeschaltet werden. In einem großen System kann die Erzeugung und Verteilung der Energie und die Abfuhr der resultierenden Wärme die Komplexität und die Kosten des Systems bedeutend steigern. Es wird daher gewünscht, ein Multiplex-Schema aufzuweisen, welches schnell durchgeführt wird, aber nicht eine große Menge an Energie benötigt. Ein Möglichkeit, mit welcher die Energieverbrauch minimiert werden kann, ist, nur dann Entwurfssignale zu übertragen, wenn sich die Entwurfsdaten ändern und nicht die Entwurfssignale kontinuierliche zu übertragen, wie es in der vorliegenden bevorzugten Ausführungsform durchgeführt wird.
  • Ein anderer wichtiger Aspekt, der bei der Wahl des Kodierungs-Schemas beachtet werden sollte, ist die Fähigkeit, Verbindungen aufzuweisen, welche gegenseitig asynchron betrieben werden, oder asynchron zu einem Master-Multiplexer-Takt betrieben werden. In der einfachen Form des Zeitmultiplexens, wie oben für die vorliegende bevorzugte Ausführungsform beschrieben, muss ein Master-Multiplexer-Takt gering asynchron zu allen Logik-Chips 10 und Mux-Chips 12 in dem System verteilt werden. Zusätzlich muss der Master-Multiplexer-Takt langsam genug betrieben werden, so dass die Signale die Zeit haben, den längsten Verbindungspfad im System zu durchlaufen. Gleichzeitig dürfen keine Haltezeit-Verletzungen für die kürzeste Verbindung in dem System auftreten. Eine Haltezeit-Verletzung kann dann auftreten, wenn eine sendende Vorrichtung das Daten-Signal entfernt hat, bevor eine empfangende Vorrichtung dieses in einem Flipflop oder Puffer richtig gespeichert hat. Der Bedarf für einen leicht asynchronen Master-Takt erhöht die Komplexität und die Kosten des Emulationssystems erheblich. Zusätzlich bedeutet die Anforderung keine Haltezeit-Verzögerungen auf den kürzest möglichen Daten-Pfaden aufzuweisen, während eine ausreichenden Zeit für die Signale, die den längsten möglichen Daten-Pfad passieren, sicher zu stellen, dass der Multiplexer-Takt relativ langsam betrieben werden muss. Wie früher erklärt wurde, ist dies nicht wünschenswert, da dies die effektive Betriebsgeschwindigkeit des Emulationssystems begrenzt.
  • Die erfinderischen Konzepte die oben hinsichtlich der einfachsten Form des Zeit-Multiplexens beschrieben sind, sind in gleicher Weise auf komplexere Kodierungs-Schemata anwendbar, was im Folgenden ersichtlich wird. Kodierungs-Schemata, welche die Pulsweiten-Modulation, die Phasenschiebe-Modulation und die serielle Kodierung verwenden, können den Energieverbrauch reduzieren und die relativ geringe Betriebsgeschwindigkeit, welche der einfachsten Form des Zeit-Multiplexens immanent ist, wird erhöht. Der Nachteil all dieser Schemata (relativ zu dem einfachen Zeit-Multiplexen) ist, dass sie bedeutend mehr Kodierungs- und Dekodierungs-Logik benötigen, und aus diesem Grund wurde in der vorliegenden bevorzugten Ausführungsform das einfache Zeit-Multiplexen verwendet. Da die Kosten für digitale Logik relativ zu den Kosten für physikalische Anschlussstifte und Leiterplatten reduziert werden, werden ein oder mehrere dieser Komplexen Kodierungs-Schemata voraussichtlich in der Zukunft verwendet.
  • Unter Bezugnahme auf 8 wird eine Form einer Pulsweiten-Modulation gezeigt, die für ein Hardware-Emulationssystem geeignet wäre. Das externe Signal 146 ist normalerweise low. Wenn in den Entwurfsignalen 140 oder 142 eine Übergang auftritt, wird ein Puls in dem externen Signal 146 ausgesendet. Ein asynchrones Hochgeschwindigkeits-Taktsignal 144 wird an alle Chips in dem System verteilt. Im Gegensatz zu dem Mux-Taktsignal 44, welches in Bezug auf 2 früher beschrieben wurde, muss das asynchrone Taktsignal 144 nicht zwischen zwei beliebigen Chips oder sogar zwischen zwei Anschlussstiften desselben Chips synchronisiert werden. Folglich, wird, wie mit Bezug auf 2 früher beschrieben wurde, kein SYNC-Signal 48 benötigt. Ferner kann das asynchrone Taktsignal 144 mit einer beliebeigen Geschwindigkeit betrieben werden, solange die minimale Pulsweite die mit dem Externen Signal 144 hervorgerufen wird, die Verbindung ohne übermäßige Abschwächung passiert. Der Puls, der auf das externe Signal 146 emittiert wird, kann abhängig davon, ob die beiden Entwurfssignal 140 und 142, entweder die Werte 00, 01, 10 oder 11 aufgewiesen haben, als ein Signalübergang aufgetreten ist, eine Weite von einem, zwei, drei oder vier Takten aufweisen. Jedoch muss das asynchrone Taktsignal 144 ausreichend schnell sein, so dass immer fünf Taktzyklen zwischen aufeinander folgenden Flanken der Entwurfssignale 140 und 142 verstreichen, um sicherzustellen, dass keine Informationen verloren gehen. Die Daten-Signale 140 und 142 werden aus dem externen Signal 146 mittels des Zählens der Taktzyklen des asynchronen Taktes 144, die jedes Mal auftreten, wenn das externe Signal 146 high wird, wieder hergestellt. In einer tatsächlichen Ausführungsform wird der asynchrone Takt 144 mit der zweifachen oder dreifachen Geschwindigkeit wie der gezeigten betrieben, um sicherzustellen, dass wieder hergestellte Signale eindeutig unterschieden werden können. Ein zusätzlicher Schaltkreis wird ebenso hinzugefügt, um Daten sogar dann periodisch zu übertragen, wenn Übergänge des Entwurfssignals ausbleiben, um das Design richtig zu initialisieren.
  • Da in den Entwurfssignale 140 und 142 Übergänge im Mittel im Vergleich zum asynchronen Takt 144 relativ selten auftreten, ist der Energieverbrauch im Vergleich zum kontinuierlichen Zeit-Multiplexschema, welches früher beschrieben wurde, gering. Zusätzlich wird dieses Kodierungsschema nicht von der variierenden Anzahl an Verzögerungen zwischen dem sendenden Schaltkreis und dem empfangendem Schaltkreis beeinflusst.
  • Der Logik-Schaltkreis, der notwendig ist, um dieses Pulsweiten-Kodierungsschema zu implementieren, kann von einem Fachmann des Schaltkreis-Designs entworfen werden, und wird hier nicht weiter ausgeführt. Es ist jedoch zu bemerken, dass ein Fachmann, Logik-Schaltkreise entwerfen könnte, die viele verschiedene Variationen aufweisen könnten, während die gleiche Funktionsweise erhalten bliebe. Zum Beispiel könnten drei Entwurfssignale anstelle von zweien auf das externe Signal 146 kodiert werden. Auch können unterschiedliche Kodierungen der Signale 140 und 142 verwendet werden, oder der Default-Wert des externen Signals 146 könnte eins anstelle von null sein.
  • Das Pulsweiten-Modulations-Kodierungsschema, welches in Bezug auf 8 beschreiben wurde, leidet unter den folgenden Einschränkungen. In einem Pulsweiten-Modulations-Kodierungsschema, muss die Pulsweite von einer steigenden Flanke des externen Signals 146 zu einer fallenden Flanke des externen Signals 146 gemessen werden. Jedoch wird, wenn ein Signal viele Ebenen an Routing-Chips passiert, eine fallenden Flanke oft in einem unterschiedlichen Umfang als eine steigende Flanke verzögert werden. Es kann daher erforderlich sein die Geschwindigkeit des Signal-Multiplexens zu verlangsamen,, um sicherzustellen, dass die Signalwerte nachdem sie mehrere Ebenen an Route-Chips durchlaufen haben, noch unterschieden werden können.
  • Auch ist das Modulationsschema der 8 empfindlich gegen unvermeidbare momentane Signalübergänge oder Störimpulse auf dem externen Signal 146, welche zu übertragende falsche Signalwerte verursachen können.
  • Unter Bezugnahme auf 9 wird eine Form der Phasenmodulation gezeigt, welche für ein Hardware-Emulationssystem geeignet wäre. Ein interner phasensynchronisierter Schleifen-("PLL")Schaltkreis zählt kontinuierlich unter Verwendung des asynchronen Taktes 144 als einen Eingang, beginnend von null bis drei (als PLL-Zähler 150 in 9 gezeigt). Der PLL-Schaltkreis kann eines Typs sein, welcher üblich als eine digitalen phasensynchronisierten Schleife ("DPLL") bekannt ist, welche relativ einfach mittels Komplementär-Metalloxid-Halbleiter-Integrierter-Schaltkreis-Technologie ("CMOS") konstruiert werden kann. Wenn ein Übergang in den Entwurfssignalen 140 oder 142 auftritt, vollzieht das externe Signal 152 zu einem Zeitpunkt einen Übergang, welcher von dem Wert der Entwurfssignale 140 und 142 abhängt. Zum Beispiel werden das Signal A 140 und das Signal B 142 nach dem ersten Übergang des Signals A 140 high sein. Das externe Signal 152 vollzieht daher einen Übergang, wenn der PLL-Zähler bei dem Zählerstand drei (A, B = 11) ist. Später, nach einem Übergang in dem Signal B 142, ist das Signal A 140 high und das Signal B 142 low. In dem externen Signal 152 tritt daher ein Übergang auf, wenn der PLL-Zähler bei dem Zählerstand zwei (A, B = 10) ist. Der empfangende Schaltkreis weist einen Abgleich-PLL auf, welcher zum sendenden PLL durch SYNC-Pulse, welche periodisch gesendet werden, synchron gehalten wird, wenn keine Daten gesendet werden müssen. Ein SYNC-Puls besteht aus zwei Übergängen, die zu der Zeit null und zur der Zeit zwei des übertragenden PLL's auftreten. Ein SYNC-Puls kann von dem empfangenden PLL erkannt werden, da dies der einzige Zeitpunkt ist, in dem zwei Übergänge des externen Signals 152 innerhalb eines PLL-Zyklus auftreten. Der SYNC-Puls veranlasst den empfangenden PLL, seinen Zähler schrittweise anzupassen, so dass dieser mit dem übertragendem PLL synchronisiert wird, nachdem mehrere SYNC-Pulse aufgetreten sind. Der SYNC-Puls muss nur relativ selten im Vergleich zu den Übergängen des Signals A 140 und des Signals B 142 auftreten, so dass der Energieverbrauch nicht bedeutend erhöht wird. In einer tatsächlichen Ausführungsform würde der asynchrone Takt 144 relativ zu dem was in 9 gezeigt ist zwei bis dreimal schneller operieren, um eine ausreichende Auflösung aufzuweisen, um zwischen den unterschiedlichen Flanken-Übergangs-Zeiten des externen Signals 152 klar zu unterscheiden. Alternativ kann die phasensynchronisierte Schleife mit einem Vielfachen der Frequenz des asynchronen Taktes 144 ausgeführt werden, so dass die Auflösung erhöht wird. Ferner würde ein Schaltkreis eingefügt werden, um den Wert des Entwurfssignals A 140 und des Entwurfssignals B 142 periodisch zu übertragen, selbst wenn kein Übergang aufgetreten ist, so dass das Design richtig (genau) initialisiert wird.
  • Die Schaltkreise, die notwendig sind, um die digital phasensynchronisierten Schleifen und die übertragenden und empfangenden Schaltkreise, die in diesem Phasenkodierungs-Schema verwendet werden, zu implementieren, kann von einem Fachmann des Schaltkreisentwurfs entworfen werden, und wird somit hier nicht weiter ausgeführt.
  • Das oben diskutierte Phasenmodulations-Kodierungs-Schema weist einige Vorteile gegenüber dem Pulsweiten-Modulationsschema auf, welches früher erläutert wurde (siehe 8). Es werden weniger Übergänge des externen Signals 152 benötigt, als es für das externe Signal 146 in 8 der Fall ist, um Werte des Signals A 140 und des Signals B 142 zu übertragen. Das reduziert den Energieverbrauch von dem System. Ferner kann der Schaltkreis weniger anfällig gegen Rauschen ausgelegt werden, da Störimpulse oder kurze Impulse wie SYNC-Pulse behandelt werden und nur einen graduellen (abgestuften) Effekt auf den PLL-Zähler 150 aufweisen. Zusätzlich können separate PLL-Zähler verwendet werden, um steigende Flanken und fallende Flanken zu timen, da der SYNC-Puls immer eine steigende und eine fallende Flanke aufweist. Durch separates Timen der steigenden und fallenden Flanken, kann der asynchrone Takt 144 mit einer sehr hohen Frequenz betrieben werden, und das externe Signal 152 kann viele Zwischen-Route-Chips durchlaufen, ohne die Fähigkeit zu beeinträchtigen, das Signal A 140 und das Signal B 142 verlässlich wieder herzustellen. Der Hauptnachteil der Phasenmodulation jedoch ist, dass sie eine relativ große Menge an digitaler Logik erfordert, welche implementiert werden muss.
  • Viele Variationen des Phasenmodulations-Kodierungs-Schemas, welches hierin offen gelegt wurde, sind möglich, ohne von den Lehren dieser Erfindung abzuweichen. Zum Beispiel, könnte der PLL acht oder sechzehn Übergangszeiten erkennen anstelle von nur vier. Ferner könnten zusätzliche Entwurfssignale durch das Erzeugen von mehr als einer Flanke auf dem externen Signal 152 übertragen werden, jedes Mal wenn in einem Entwurfssignal ein Übergang aufgetreten ist. Zum Beispiel, könnten die Entwurfssignale A und B auf eine erste Flanke des externen Signals 152 übertragen werden, und die Entwurfssignale C und D könnten auf eine zweite Flanke des externen Signals 152 übertragen werden. Dies hat den Effekt, dass mehr Daten mit dem externen Signal 152 übertragen werden, allerdings mit einer geringeren Geschwindigkeit.
  • In Bezug auf 10 wird eine andere Form der Modulation gezeigt, welche für ein Hardware-Emulationssystem nützlich wäre. Diese Technik ist als serielle Datenkodierung bekannt. Viele gebräuchliche Protokolle, wie beispielsweise das RS232 verwenden eine Variation der seriellen Datenkodierung. Wenn das Entwurfssignal A 140 oder das Entwurfssignal B 142 einen Übergang ausführen, wird eine serielle Zeichenkette von Daten mit dem externen Signal 162 übertragen. Ein Start-Bit, welches immer den Wert null aufweist, deutet an, dass ein Übergang auftreten wird. Als nächstes werden die Werte des Signals A 140 und des Signals B 142 sukzessive übertragen. Am Ende wird ein Stop-Bit übertragen, welches immer den Wert eins aufweist. Der empfangende Schaltkreis verwendet das asynchrone Taktsignal 144, um von der fallenden Flanke des Start-Bits einen und einen halben Takt zu verzögern, bevor das externe Signal 162 abgetastet wird, um das Signal A 140 wieder herzustellen. Es verzögert dann einen zusätzlichen Takt, bevor das externe Signal 162 nochmals abgetastet wird, um das Signal B 142 wieder herzustellen. In einer tatsächlichen Ausführungsform würde der asynchrone Takt 144 bei einer relativen Frequenz betrieben, die einige male höher ist als die, die in 10 gezeigt ist, um das externe Signal 162 genau am Mittelpunkt abzutasten, wenn das Signal A 140 und das Signal B 142 übertragen werden.
  • Der Schaltkreis, der notwendig ist, um das serielle Datenkodierungsschema zu implementieren, könnte von einem Fachmann des Schaltkreisentwurfs entworfen werden, und wird hier nicht weiter ausgeführt.
  • Die Serielle Datenkodierung weist den Vorteil auf, dass relativ einfache Digital-Logik verwendet werden kann. Sie weist jedoch den Nachteil auf, dass mehrere Flanken auf dem externen Signal 162 benötigt werden, um jede Änderung des Entwurfsignals A 140 und des Entwurfssignals B 142 zu übertragen. Dies bedeutet, dass die Datenrate relativ gering, und der Energieverbrauch im Vergleich zu anderen Techniken relativ hoch ist.
  • Viele Variationen des seriellen Datenkodierungs-Schemas, das hierin offen gelegt wurde, können verwendet werden, ohne von den Lehren dieser Erfindung abzuweichen.
  • Zum Beispiel, können Werte für mehr als zwei Entwurfssignale übertragen werden, jedes Mal wenn ein Entwurfssignal einen Übergang ausführt.
  • Irgendeine der in den 810 gezeigten Kodierungs-Techniken, könnten durch den Zusatz einer Form von Fehlerüberprüfungs-Technik weiter verbessert werden. Da Entwurfsdaten nur dann übertragen werden, wenn sich ein Entwurfssignal ändert, führen Übertragungsfehler zu falschen Datenwerten, die durch die empfangenden Schaltkreise gespeichert werden, und zu der Wahrscheinlichkeit, dass das Emulationssystem unkorrekt betrieben wird. Übliche Fehlererkennungs- und Korrektur-Techniken, wie beispielsweise die Paritätsprüfung oder die zyklische Blockprüfung (CRC), können verwendet werden.
  • Die Systemaspekte einer bevorzugten Ausführungsform werden nun detaillierter offengelegt. Unter Bezugnahme auf 11 wird ein Blockdiagramm des Logik-Boards 200 einer bevorzugten Ausführungsform gezeigt, welches Logik-Chips (die in der bevorzugten Ausführungsform FPGAs sind) und Mux-Chips 12 mit einschließt. Das Logik-Board 200 weist eine Teil-Crossbar-Verbindung auf, ähnlich wie die, die in Butts et al offengelegt wurde. Der Hauptunterschied besteht darin, dass der Teil-Crossbar der vorliegenden bevorzugten Ausführungsform der vorliegenden Erfindung nicht vollständig einheitlich ist, da der Logik-Chip 204, welcher im Folgenden erläutert wird, weniger Verbindungen mit den Mux-Chips 12 als die anderen Logik-Chips aufweist. Die vorliegende bevorzugte Ausführungsform weist vierundfünfzig Mux-Chips 12 mit jeweils zweihundertsechzig I/O-Anschlussstiften und sechsunddreißig Logik-Chips 10 (FPGAs) mit jeweils zweihundertsiebzig I/O-Anschlussstiften auf. Die vorliegende bevorzugte Ausführungsform verwendet FPGAs mit der Teile-Nummer XC4036XY als Logik-Chips 10, die von der Xilinx Corporation, San Jose, California, U.S.A. hergestellt wurden. Jeder der sechsunddreißig Logik-Chips 10 weist fünf Verbindungen zu jedem der vierundfünfzig Mux-Chips 12 auf. Ein siebenunddreißigster Logik-Chip 204, hierin bekannt als Co-Simulations-(CoSim)Logik-Chip, weist drei Verbindungen zu jedem der vierundfünfzig Mux-Chips 12 auf. In der vorliegenden bevorzugten Ausführungsform ist dieser siebenunddreißigste Logik-Chip 204 ebenfalls ein FPGA, der von Xilinx hergestellt wurde, der die Teile-Nummer 4036XL aufweist. Zusätzliche Anschlussstifte (nicht gezeigt) auf den Mux-Chips 12 und den Logik-Chips 10 und 204 sind für das Herunterladen, die Takt-Verteilung und andere Systemfunktionen reserviert. Der Zweck des CoSim-Logik-Chips 204 wird im Folgenden erläutert. Eine beliebige Verbindung von den Mux-Chips 12 zu den Logik-Chips 10 kann durch eine adäquate Programmierung der Mux-Chips 12 und der Logik-Chips 10, nicht-gemultiplext, zwei-zu-eins gemultiplext oder vierzu-eins gemultiplext sein.
  • Zusätzlich zu den oben erläuterten Verbindungen steht der CoSim-Logik-Chip 204 in elektrischer Kommunikation mit einem Prozessor 206. In der vorliegenden bevorzugten Ausführungsform ist der Prozessor 206 ein von der IBM Corporation erhältlicher PowerPC 403GC-Chip. Der Prozessor 206 wird für die Co-Simulation verwendet, welche in dem US-Patent mit der Nummer 5,841,967, mit dem Titel "Method And Apparatus For Design Verification Using Emulation And Simulation", von Sample et al beschrieben ist. Der Prozessor 206 wird ferner für Diagnose-Funktionen und für das Herunterladen von Information von den Mux-Chips 12, den Logik-Chips 10, 204 und einem RAM 208 (im Folgenden erläutert) und einem SGRAM 210 (im Folgenden erläutert) verwendet. Der Prozessor 206 ist durch eine VME-Schnittstelle (nicht gezeigt) mit der Rückwandplatinen-Steckverbindung 220 verbunden. Zwölf der Logik-Chips 10 weisen ferner Verbindungen mit einem 32K mal 32 static random access memory (RAM) auf. Dieser RAM-Chip 208 wird für die Implementierung großer Speicher, welche Teil eines emulierten Schaltkreises sein können, verwendet. Das RAM 208 ist an einige der Leitungen angeschlossen, die auch die Logik-Chips 10 mit den Mux-Chips 12 verbinden. Auf diese Art und Weise, falls das RAM nicht benutzt wird, können die Verbindungen der Logik-Chips 10 zu den Mux-Chips 12 für einfache Verbindungsfunktionen verwendet werden und gehen nicht verloren. Falls das RAM 208 für die Implementierung eines Speichers benötigt wird, der Teil einer bestimmten Netzliste ist, weist der Logik-Chip 10, der mit ihr kommuniziert, eine einprogrammierte RAM-Kontrollfunktion auf.
  • Die Mux-Chip 12 weisen ferner Verbindungen zu einer Rückwandplatinen-Steckverbindung 220 und einem Turbo- Anschluss 202 auf. Die Rückwandplatinen-Steckverbindung und Turboverbindungen können entweder nicht-gemultiplext, zwei-zu-eins gemultiplext oder vier-zu-eins gemultiplext sein. Der Turbo-Verbinder 202 wird verwendet, um zwei Logik-Boards 200 in einem Sandwich (Kernverbund) miteinander elektrisch zu verbinden. Durch das Bereitstellen direkter Verbindungen zwischen zwei Logik-Boards in einem Paar, kann die Anzahl an Rückwandplatinen-Steckverbindungen, die für ein bestimmtes Design benötigt werden, reduziert werden. Der Rückwandplatinen-Verbinder muss entlang einer Kante auf dem Logik-Board angebracht sein und die Anzahl an möglichen Rückwandplatinen-Steckverbindungen wird durch die verfügbaren Anschluss-Typen begrenzt. Sind nicht genügend Rückwandplatinen-Steckverbindungen vorhanden, ist die Partitionierungs-Software nicht in der Lage effizient zu arbeiten, wodurch die Logik-Kapazität des Boards reduziert wird. Zwei Emulations-Boards, die in einem Sandwich miteinander verbunden sind, sind in 13 gezeigt. Falls ein kleineres Emulationssystem, welches weniger als zwei Emulations-Boards aufweist, gewünscht wird, wird ein spezielles Turbo-Rückschleifen-Board, welches keine darauf angeordnete Logik aufweist, verwendet. In solch einem System routet das Turbo-Rückschleifen-Board einfach die Signale von dem Turbo-Verbinder 202 zu der Rückwandplatinen-Steckverbindung 220. Ein Beispiel einer Konfiguration, die ein Turbo-Prüfschleifen-Board verwendet ist in 15 gezeigt.
  • Darüber hinaus weisen die Mux-Chips 12 jeweils acht Verbindungen zu einem Satz von synchronous Graphics RAMs(SGRAMs) 210 auf. Diese SGRAMs 210 werden verwendet, um den Daten-Pfad eines verteilten Logik-Analysators zu formen. Die Entwurfssignale können in den Logik-Chips 10 und CoSim-Logik-Chips 204 abgetastet und durch die Mux-Chips 12 geroutet werden und dann für eine zukünftige Analyse durch den Benutzer in den SGRAMs 210 gespeichert werden. Der Logik-Analysator wird weiter unten offengelegt.
  • Die Logik-Chips 10 und CoSim-Logik-Chips 204 sind ferner mit einem Ereignis-Bus 212 und an einen Takt-In-Bus 214 angeschlossen. Der Ereignis-Bus wird verwendet, um Ereignis-Signale innerhalb der Logik-Chips 10 und CoSim-Logik-Chips 204 zu dem Logik-Analysator-Steuerschaltkreis zu routen (in 20a gezeigt, nachstehend erläutert). Der Ereignis-Bus besteht aus vier Signalen und ist zwei-zu-eins zeitgemultiplext, um acht Ereignis-Signale bereit zu stellen. Die Signale auf dem Ereignis-Bus 212 werden gepuffert und dann zu zusätzlichen Anschlussstiften (nicht gezeigt) der Rückwandplatinen-Steckverbindung 220 geroutet.
  • Der Takt-In-Bus 214 setz sich aus acht zeitversetzten Sonder-Takt-Netzen zusammen, die zu allen Logik-Chips 10 und CoSim-Logik-Chips 204 geroutet werden (nachstehend erläutert). Der Takt-In-Bus 214 wird dazu verwendet, um Taktsignale zu verteilen, wie es in dem US-Patent mit der Nummer 5,475,830 erklärt ist. Die Takte des Takts in Bus 214 können direkt durch den Puffer 216 von den Signalen 218 herrühren, welche mit zusätzlichen Anschlussstiften (nicht gezeigt) auf der Rückwandplatinen-Steckverbindung 220 verbunden sind, oder sie können durch eine Kombination der Primär-Taktsignale 218 mit der Logik in dem CoSim-Logik-Chip 204 erzeugt werden. Wenn der CoSim-Logik-Chip 204 für das Implementieren von Takt-Logik verwendet wird, agiert er als ein "Takt-generierendes FPGA", wie dies in dem US-Patent mit der Nummer 5,475,830 erklärt ist.
  • Unter Bezugnahme auf 12 wird die Verbindung zwischen den Boards gezeigt. Die Logik-Boards 200 werden zu Paaren zusammengesetzt, welche durch den Turbo-Verbinder 202 miteinander verbunden sind. Die Logik-Boards sind ferner durch die Rückwandplatinen-Steckverbindung 220 (in 11 gezeigt) mit einer schaltenden Rückwandplatine 420 verbunden.
  • Die schaltende Rückwandplatine 420 weist Mux-Boards 400 auf, welche in einem rechten Winkel zu den Logik-Boards angeordnet sind. Eine Annordung von Logik-Boards und schaltenden Boards kann in dem US-Patent mit der Nummer 5,352,123 von Sample et al gesehen werden, welches von dem gleichen Anmelder wie die vorliegende Anmeldung eingereicht wurde. Die schaltende Rückwandplatine 420 ist auch mit I/O-Boards 300 verbunden (nur ein I/O-Board 300 ist in 12 gezeigt. Jedoch wird die Verwendung von mehr als einem I/O-Board 300 als ein Teil der vorliegenden Erfindung betrachtet). Das I/O-Board 300 dient als Funktion für das Routen und Puffern von Signalen von externen Vorrichtungen, die auf einem Kern-Board 500 oder einem externen System 540 enthalten sind. Sie weisen auch die Fähigkeit auf Anregungs-Signale zu allen externen Anschlussstiften bereit zustellen, so dass das emulierte Design in der Abwesendheit einer externen Vorrichtung oder eines Systems betrieben werden kann.
  • Die I/O-Boards 300 sind mittels des Kern-Boards 500 und eines Repeater-Pods 520 mit einem externen System 540 verbunden. Zur Vereinfachung der 12, wurde die tatsächlichen Anzahl an Boards und Verbindungen herabgesetzt. In einer vorliegenden bevorzugten Ausführungsform gibt es zweiundzwanzig Mux-Boards 400, ein bis zehn Paare von Logik-Boards 200 und bis zu acht I/O-Boards 300. Wenn in der vorliegenden bevorzugten Ausführungsform mehr als zwei I/O-Boards 300 verwendet werden, geht ein Paar an Logik-Boards 200 für jedes zusätzliche Paar an I/O-Boards verloren. In der vorliegenden bevorzugten Ausführungsform weist jedes I/O-Board ein zugehöriges Kern-Board 500 auf, welches bis zu sieben Repeater-Pods 520 aufweist, welche an Kabel angeschlossen sind. In der vorliegenden bevorzugten Ausführungsform puffert jeder Repeater-Pod achtundachtzig bidirektionale Signale.
  • 13 zeigt die physikalische Ausführung des bevorzugten Ausführungs-Systems. Die Mux-Boards 400 sind in einem rechten Winkel zu den Logik-Boards 200 und den I/O-Boards 300 angeordnet. Eine Leiterplatte 800 weist auf der einen Seite Anschlüsse für die Mux-Boards 400 und auf der anderen Seite Anschlüsse für die Logik-Boards 200 oder die I/O-Boards 300 auf. Zur Vereinfachung der Zeichnung sind nur ein Mux-Board 400 und drei Paare von Logik-Boards 200 gezeigt. Jedoch sind in einer vorliegenden bevorzugten Ausführungsform tatsächlich zweiundzwanzig Mux-Boards 400 und bis zu elf paare von Logik-Boards 200 oder I/O-Boards 300 vorhanden. Die I/O-Boards 300 sind mittels eines Verbinders 330 an die Kern-Boards 500 angeschlossen. Die Kern-Boards 500 weisen einen externen Verbinder 510 auf, welcher mittels eines Kabels mit dem Repeater-Pod 520 und mit dem externen System 540 verbunden ist (in 13 nicht gezeigt). Eine Netzteil-Platine 240 formt eine 48 Volt DC Hauptenergieversorgung auf eine Spannung von 3,3 Volt um, welche notwendig ist, um das Logik-Board zu versorgen. Diese Art der verteilten Spannungsumformung wird durch den hohen Energiebedarf des zeit-multiplexenden Schaltkreises notwendig. Zusätzlich enthält das System ein Steuer-Board 600 und ein CPU-Board 700 (siehe 20). In einer vorliegenden bevorzugten Ausführungsform ist das CPU-Board 700 ein VME-Bus-Power-PC-Prozessor-Board, welches von Themis Computer und anderen erhältlich ist. Andere ähnliche Prozessor-Boards wären geeignet. Die Auswahl eines bestimmten Prozessor-Boards, welches verwendet werden soll, hängt von dem Kompromiss zwischen den Kosten, der Geschwindigkeit, der RAM-Kapazität und anderen Faktoren ab. Das CPU-Board 700 stellt eine Netzwerk-Schnittstelle und eine Gesamt-Steuerung des Emulationssystems bereit. Das Steuer-Board 600 stellt die Takt-Verteilung, das Herunterladen und Testfunktionen für die anderen Boards, genauso wie zentralisierte Funktionen des Logik-Analysators und des Bitmustergenerators bereit (von welchem die Struktur und Funktion im Folgenden erläutert wird).
  • Eine kleinere Version des vorliegenden bevorzugten Emulationssystems kann ebenfalls konstruiert werden. Ein Blockdiagramm dieses Systems ist in 14 gezeigt. Das kleinere System weist keine schaltende Rückwandplatine 420 auf. Stattdessen werden die Logik-Boards 200 direkt miteinander und mit den I/O-Boards 300 verbunden. Dies ist möglich, da die Größe des Systems auf zwei Paare von Logik-Boards 200 und ein Paar von I/O-Boards 300 begrenzt ist. Die Rückwandplatinen-Anschlüsse sind in 14 oben gezeigt. Die Anschlussstifte von jedem Rückwandplatinen-Verbinder 220 (in 10 gezeigt) sind in vier gleiche Gruppen aufgeteilt. Jede Gruppe wird durch die Rückwandplatine zu einem der zwei Logik-Boards 200, welche nicht in dem gleichen Paar sind und zu jedem I/O-Board 300 geroutet. Es ist nicht notwendig, Verbindungen durch die Rückwandplatine zu dem anderen Logik-Board 200 oder I/O-Board 300 in dem selben Paar zu Verfügung zustellen, da diese Verbindung im Fall der Logik-Boards 200 durch den Turbo-Verbinder 202 zur Verfügung gestellt wird und im Fall der I/O-Boards 300 nicht notwendig ist. Das Verbindungsmuster, welches in 14 dargestellt ist, stellt einen ausreichenden Reichtum an Router-Fähigkeit zwischen den Boards bereit, vermeidet aber die hohen Kosten für eine schaltende Rückwandplatine 420. Wie in dem großen System, ist das I/O-Board 300 mittels des Kern-Boards 500 und des Repeater-Pods 520 mit einem externen System 540 verbunden. Zur Vereinfachung der Zeichnung, sind das Kern-Board 500, der Repeater-Pod 520 und das externe System 540 für das zweite I/O-Board nicht gezeigt, obwohl sie tatsächlich vorhanden sind. Mittels des Verwendens eines Satzes von zusätzlichen Boards, um Verbindungen zwischen den andernfalls unbenutzten Rückwandplatinen-Steckverbindungen und Turbo-Verbindern herzustellen, können Versionen des kleinen Systems mit ein bis vier Logik-Boards 200 und entweder einem oder zwei I/O-Boards 300 konstruiert werden. Diese zusätzlichen Boards sind ein Turbo-Rückschleifen-Board 260 und ein Rückwandplatinen-Rückschleifen-Board 280, welche in 15 gezeigt sind. Keines dieser Boards weist irgendeine digitale Logik auf ihnen auf. Sie routen einfach die Signale zwischen Verbindungen.
  • Eine physikalische Zeichnung des kleinen Systems mit einem Logik-Board und einem I/O-Board ist in 15 gezeigt. Eine Rückwandplatine 802 stellt die Verbindungen bereit, die in Bezug auf 14 früher erläutert wurden. Das I/O-Board 300 ist mittels des Verbinders 330 mit dem Kern-Board 500 verbunden. Die Kern-Boards 500 weisen einen externen Verbinder 510 auf, welcher mittels eines Kabels mit dem Repeater-Pod 520 und dem externen System 540 verbunden ist (in 15 nicht gezeigt). Eine Netzteil-Platine 240 formt eine 48 Volt DC Hauptenergieversorgung auf eine Spannung von 3,3 Volt um, welche notwendig ist, um das Logik-Board zu versorgen. Zusätzlich weist das kleine System ein Steuer-Board 600 und ein CPU-Board 700 wie in dem großen System auf, welche in Bezug auf 13 früher beschrieben wurden. Um Route-Verbindungen einzuhalten, wenn weniger als vier Logik-Boards verwendet werden, verbindet das Turbo-Rückschleifen-Board 260 Signale von unbenutzten Turbo-Verbinder 202 (in 11 gezeigt) des Logik-Boards 200 zu der Rückwandplatine 802. Das Turbo-Rückschleifen-Board 260 wird verwendet, wenn das System entweder ein oder drei Logik-Boards 200 aufweist. Ein zusätzliches Paar an Rückwandplatinen-Rückschleifen-Boards 280 wird verwendet, um Route-Verbindungen durch die Rückwandplatine einzuhalten, wenn unbenutzte Logik-Board-Steckplätze vorhanden sind. Dies tritt auf, wenn entweder ein oder zwei Logik-Boards in dem System vorhanden sind. Das Rückwandplatinen-Prüfschleifen-Board 280 verbindet die Gruppen von Rückwandplatinen-Signalen (in 14 gezeigt) miteinander, so dass keine Signale verloren gehen, wenn anderweitig unbesetzte (freie) Rückwandplatinen-Verbinder vorhanden sind.
  • Ein Blockdiagramm des I/O-Boards 300 und des Kern-Boards 500 ist in 16 gezeigt. Eine erste Zeile 301 an Mux-Chips 12 ist mit dem Rückwandplatinen-Verbinder 320 auf dem I/O-Board 300 angeschlossen. Zur Vereinfachung der Zeichnung werden nur drei Mux-Chips 12 in der ersten Zeile 301 gezeigt. In einer vorliegenden bevorzugten Ausführungsform gibt es jedoch vierzehn Mux-Chips 12 in der ersten Zeile 301. Eine zweite Zeile 303 von Mux-Chips 12 ist mit der ersten Zeile 301 von Mux-Chips 12, genauso wie mit den Feldeffekttransistoren (FETs) 308 und den Logik-Chips 304 verbunden. Noch mal wurde die Zeichnung vereinfacht, so dass sie wiederum zwei Mux-Chips 12 zeigt. In einer vorliegenden bevorzugte Ausführungsform gibt es zwölf Mux-Chips 12 in der zweiten Zeile 303. Die zwei Zeilen 301, 303 der Mux-Chips 12 werden benötigt, um eine ausreichende Route-Flexibilität zu erzielen, so dass jedes beliebige externe Signal mit jedem Anschlussstift des Repeater-Kabel-Verbinders 510 auf dem Kern-Board 500 verbunden werden kann. Der Logik-Chip 304 ist auch an das synchronous Graphics RAM (SGRAM) 302 angeschlossen. In einer vorliegenden bevorzugten Ausführungsform ist der Logik-Chip 304 ein FPGA. Obwohl nur ein Logik-Chip 304 und ein SGRAM 302 gezeigt sind, weist die vorliegende bevorzugte Ausführungsform sechs Logik-Chips 304 und drei SGRAMs 302 auf dem I/O-Board 300 auf. Die Logik-Chips 304 und die SGRAMs 302 stellen die Fähigkeit bereit, um Anregungsvektoren in dem Emulator auf jedem externen Verbindungs-Anschlussstift anzuregen. Wenn Anregungsvektoren angeregt werden, sind die FET's 308 ausgeschaltet (d.h., sind geöffnet), so dass die Anregung nicht mit Signalen von einem externen System in Konflikt tritt, welche durch die Repeater- Pods 520 an diese Verbinder 510 angeschlossen sind. Werden keine Anregungsvektoren angeregt, sind die Anschlussstifte der Logik-Chips 304 hochohmig geschaltet und die FET's 308 sind eingeschaltet (d.h., geschlossen), so dass Signale auf den Anschlüssen 510 Signale der zweiten Zeile von Mux-Chips 303 ansteuern oder empfangen können. In der vorliegenden bevorzugten Ausführungsform sind die Logik-Chips 304 die XC5215, welche von der Xilinx Corporation, San Jose, California erhältlich sind, obwohl andere programmierbare Logik-Chips mit zufrieden stellenden Ergebnissen verwendet werden können. Zusätzlich zu den Komponenten, die in 16 gezeigt sind, weist das I/O-Board 300 einen Prozessor-Chip (nicht gezeigt) auf, welcher mittels einer VME-Schnittstelle mit dem Rückwandplatinen-Verbinder 320 verbunden ist. In einer vorliegenden bevorzugten Ausführungsform, ist dieser Prozessor-Chip ein PowerPC 403GC der IBM Corporation, obwohl andere Mikroprozessor-Chips mit zufrieden stellenden Ergebnissen verwendet werden können. Der Prozessor-Chip ist mittels eines Prozessor-Bus 310 an die Logik-Chips 304 angeschlossen. Der Prozessor-Bus 310 dient für das Hochladen von Anregungs-Informationen in die SGRAMs 302. Der Prozessor wird für Diagnose-Funktionen und für das Hochladen und das Herunterladen von Informationen von den Mux-Chips 12, Logik-Chips 304 und SGRAMs verwendet.
  • Der Verbinder 330 verbindet das Kern-Board 500 mit dem I/O-Board 300. Zusätzlich zu den Logik-Signalen die von den FETs 308 kommen, erhält dieser Verbinder 330 JTAG-Signale und ist elektrisch mit dem VME-Bus verbunden. Die JTAG-Signale dienen für das Herunterladen und Testen der Repeater-Pods 520, welche in die Anschlüsse 510 eingesteckt werden können. In einer vorliegenden bevorzugten Ausführungsform wird der VME-Bus nicht mit dem Kern-Board 500 verwendet. Es wird jedoch in Erwägung gezogen, dass der VME-Bus mit anderen Board-Typen verwendet werden kann, welche in den Verbinder 330 gesteckt werden können. Zum Beispiel wird in Erwägung gezogen, dass ein großes Speicher-Board in den Verbinder 330 gesteckt werden könnte, um die Fähigkeit bereit zu stellen, Speicher größer zu emulieren, als sie in die RAMs 208 passen würden (in 11 gezeigt).
  • Unter Bezugnahme auf 17 wird ein Blockdiagramm eines Mux-Boards 400 gezeigt. Die Mux-Chips 12 sind mit dem Rückwandplatinen-Verbinder 420 in einer verteilten Art und Weise angeschlossen. Die Zeichnung der 17 wurde dahingehend vereinfacht, so dass sie nur vier Mux-Chips 12 zeigt. Jedoch, gibt es in einer vorliegenden bevorzugte Ausführungsform tatsächlich sieben Mux-Chips auf dem Mux-Board 400. Außerdem, gibt es viel mehr Verbindungen zu den Mux-Chips 12 als in 17 gezeigt sind. Diese zusätzlichen Verbindungen sind ähnlich zu den gezeigten angeordnet. Zusätzlich zu den in 17 gezeigten Mux-Chips 12, weist das Mux-Board 400 eine JTAG-Schnittstelle auf (nicht gezeigt), welche an den Rückwandplatinen-Verbinder 420 angeschlossen ist, welche erlaubt, dass vom Mux-Chip 12 heruntergeladen und diese getestet werden können.
  • Das Mux-Board der 17 ist für ein nicht erweiterbares Emulationssystem geeignet. Es wird jedoch oft gewünscht, dass mehrere Emulationssysteme zusammengeschlossen werden, um ein Emulationssystem mit einer größeren Kapazität zu formen. In diesem Fall wird eine erweiterbare Form des Mux-Boardes 400 verwendet. Ein Blockdiagramm eines erweiterbaren Mux-Boardes 402 ist in 18 gezeigt. Eine erste Zeile 404 an Mux-Chips 12 ist elektrisch an den Rückwandplatinen-Verbinder 420 angeschlossen. Die Zeichnung wurde dahingehend vereinfacht, so dass nur vier Mux-Chips 12 in der ersten Zeile 404 gezeigt sind. In einer vorliegenden bevorzugte Ausführungsform gibt es jedoch zehn Mux-Chips 12 in der ersten Zeile 404. Die erste Zeile 404 der Mux-Chips 12 ist elektrisch mit einer zweiten Zeile 406 von Mux-Chips 12 und einem Turbo-Verbinder 430 verbunden. Die zweite Zeile 406 von Mux-Chips 12 ist ferner mit dem Turbo-Verbinder 430 und einem externen Verbinder 440 elektrisch verbunden. Nur zwei Mux-Chips 12 sind in der zweiten Zeile 406 gezeigt, und nur zwei externe Verbinder 440 sind in 18 gezeigt. In einer vorliegenden bevorzugte Ausführungsform gibt es jedoch fünf Mux-Chips 12 in der zweiten Zeile 406. Außerdem, gibt es in der vorliegenden bevorzugte Ausführungsform sechs externe Verbinder 440. In der vorliegenden bevorzugten Ausführungsform weist jeder externe Verbinder 440 zweiundneunzig I/O-Anschlussstifte auf. Die Mux-Boards 402 werden paarweise zusammengesetzt, welche über den Turbo-Verbinder 430 miteinander verbunden sind. Der Turbo-Verbinder 430 agiert derart, dass er die effektive Schnittfläche zwischen einem Paar an Mux-Boards 402 und einem Paar an Logik-Boards 200 erweitert. Ohne den Turbo-Verbinder 430 ist die Schnittfläche für eine effektive Routing-Fähigkeit zwischen den externen Verbindern 440 und den Logik-Boards 200 zu gering.
  • Unter Bezugnahme auf 19 wird die Art und Weise erläutert, wie Taktungen von dem Benutzern in dem Emulationssystem verteilt werden.
  • Die Verteilung von Benutzer-Takten ist wichtig in dem Emulationssystem-Entwurf. Wie es in dem US-Patent mit der Nummer 5,475,830 behandelt wird, ist es notwendig, sicher zustellen, dass Benutzer-Takte vor Daten-Signalen zu den Logik-Chips 10 auf den Emulations-Boards 200 gelangen, wenn davon ausgegangen wird, dass sich die Benutzer-Takte und Daten-Signale zu dem selben Zeitpunkt in dem externen System 540 ändern (das externe System 540 ist in 12 und 14 gezeigt). Es ist möglich diese Notwendigkeit durch Verzögern der Daten-Signale zu erfüllen. Diese Lösung verlangsamt jedoch die maximale Betriebsgeschwindigkeit des Emulationssystems. Eine erstrebenswertere Alternative ist, das Benutzer-Takt-Verteilungs-Netzwerk so schnell wie möglich zu gestallten, so dass falls eine Verzögerung zu den Daten-Signalen hinzugefügt werden muss, diese minimal ausfällt.
  • 19 zeigt die Takt-Verteilung für ein bevorzugtes Hardware-Emulationssystem. Die Takte können über einen Takt-Verbinder 620 auf dem Steuer-Board 600, über einen Multi-Box-Takt-Verbinder 630 auf dem Steuer-Board 600 oder als normale Signal über den Verbinder 510 des Kern-Boards 500 in das System eintreten. Wie beschrieben, ist das Kern-Board 500 an das I/O-Board 300 angeschlossen. Der Einfachheit halber ist in 19 nur ein Verbinder 510 gezeigt. Jedoch gibt es in einer vorliegenden bevorzugten Ausführungsform sieben Verbinder 510 auf jedem Kern-Board 500. Das System kann auch mehrere I/O-Board/Kern-Board-Kombinationen aufweisen. Wie früher in Bezug auf 12 und 14 beschrieben, ist der Verbinder 510 mit dem Repeater-Pod 520 verbunden, welcher mit einem externen System 540 angeschlossen ist. Falls der Takt-Verbinder 630 verwendet wird, um Takte einzugeben, wird der Verbinder 620 ferner mittels eines Kabels an das externe System 540 angeschlossen. Der Takt-Verbinder 620 stellt ein schnelleres Verfahren für die Takte bereit, in das Emulationssystem einzutreten, während die Verbinder 510 auf den Kern-Boards 500 ein einfacheres Verfahren für den Benutzer bereitstellen.
  • Der Verbinder 510 auf dem Kern-Board 500 ist mittels des Verbinders 330 und den FETs 308 an eine zweite Zeile 303 von Mux-Chips 12 auf dem I/O-Board 500 angeschlossen, wie in Bezug auf 16 früher beschrieben wurde. Der Mux-Chip 12 der zweiten Zeile 303 verbindet mit dedizierten Takt-Anschlussstiften auf dem Rückwandplatinen-Verbinder 320 zusätzlich zu anderen Verbindern, wie früher beschrieben wurden. In einer vorliegenden bevorzugten Ausführungsform gibt es sechzehn dieser Anschlussstifte. Von dem I/O-Board-Rückwandplatinen-Verbinder 320 verbinden die Takte durch die Rückwandplatine 800 oder 802 zu dem Steuer-Board 600 (siehe 13). Auf dem Steuer-Board 600 wird ein Mux-Chip 12 dazu verwendet, um eine Kombination von Takten von den unterschiedlichen Potentialquellen zu wählen. Das System kann bis zu zweiunddreißig verschiedene Taktquellen aufweisen. Acht beliebige von diesen können auf einem Paar von Emulations-Boards 200 verwendet werden. Das erlaubt unterschiedlichen Paaren von Emulations-Boards 200, falls erforderlich, unterschiedliche Takte aufzuweisen, zum Beispiel dann, wenn mehr als ein Chip-Design in einem einzigen Hardware-Emulationssystem emuliert werden sollte. Die Takte werden durch ein programmierbares Verzögerungs-Element 604 und Puffer 614, dann durch die Rückwandplatine 800 oder 802 zu den Emulations-Boards 200 geroutet. Wie früher in Bezug auf 11 beschrieben wurde, können die Takte auf den Emulations-Boards 200 entweder durch den Puffer 216 oder den Takt-Generator-Logik-Chip 204 (d.h., CoSim-Logik-Chip) geroutet werden, bevor sie zu den Logik-Chips 10 gelangen.
  • Ein Logik-Analysator-Taktgenerator-Logik-Chip 602 auf dem Steuer-Board 600 kann ebenfalls Takte generieren. Dies findet typischer weise statt, wenn das System mit Testvektoren betrieben wird. Die Daten von dem getakteten RAM 612 sind Eingabe zu einem Zustandsautomaten, welcher in den Logik-Analysator-Taktgenerator-Logik-Chip 602 programmiert ist, welcher zulässt, dass unterschiedliche Taktmuster wie die Rückkehr zu Null, keine Rückkehr zu Null, Zweiphasen-Nicht-Überlappung usw., erzeugt werden können. Der Entwurf eines solchen Zustandsautomaten wird vom Fachmann des Steuerlogik-Entwurfs verstanden, und wird hier nicht weiter ausgeführt. Die vom Logik-Analysator-Taktgenerator-Logik-Chip 602 zweiunddreißig erzeugten Takte werden zu dem Taktauswahl-Mux-Chip 12 übermittelt. In einer vorliegenden bevorzugten Ausführungsform ist der Logik-Analysator Taktgenerator Logik- Chip 602 eine XC4036XL-Baugruppe, die von der Xilinx Corporation hergestellt wird, obwohl andere programmierbare Logik-Vorrichtungen mit zufrieden stellenden Ergebnissen verwendet werden können.
  • Der Multi-Box-Takt-Verbinder 630 kann entweder dazu dienen, um Eingangstakte oder um Ausgangstakte bereitstellen. Die Richtung wird mittels eines Puffers 608 gesteuert. In einem Multi-Box-Emulationssystem, d.h., ein Emulationssystem weist mehr als ein allein operierendes Emulationssystem auf, wird eine Box als Master und die anderen als Slave bezeichnet. Die Master-Box erzeugt die Takte auf ihrem Multi-Box-Takt-Verbinder 630, welche dann in alle anderen Slave-Emulationssysteme mittels ihrer Multi-Box-Anschlüsse 630 eingegeben werden. In einem Multi-Box-System ist das Verzögerungs-Element 604 in die Master-Box programmiert, um die unvermeidbaren Verzögerungen des Kabels zwischen den Master- und Folgeggeräten zu kompensieren.
  • Vom Fachmann wird erkannt werden, dass die 19 zwecks der Übersichtlichkeit beträchtlich vereinfacht wurde, und dass dort eine große Anzahl von Verbindungen und Komponenten nicht gezeigt sind. Die Notwendigkeit dieser zusätzlichen Komponenten und Verbindungen ist eine Frage der Design-Wahl.
  • Unter Bezugnahme auf 20 wird die Steuerstruktur des Hardware-Emulationssystems erläutert. Bisherige Hardware-Emulationssysteme haben allgemein unter unzureichenden Verarbeitungsfähigkeit gelitten. Dies führte zu langen Verzögerungen, wenn Daten zu oder von dem System übermittelt wurden, wenn Entwurfs-Daten in das System geladen werden, und wenn Hardware-Diagnosen ausgeführt werden. In einer bevorzugten Ausführungsform der vorliegenden Erfindung wird eine Zwei-Ebenen Prozessor-Architektur verwendet, um diese Problem zu verringern. Ein Hauptprozessor 700 ist an das Steuer-Board 600 angeschlossen. In einer vorliegenden bevorzugten Ausführungsform ist der Prozessor 700 eine Power PC VME-basierte Prozessor-Steckkarte, welche von Themis Computer erhältlich ist, obwohl andere ähnliche Karten mit zufrieden stellenden Ergebnissen verwendet werden können. Der Prozessor 700 ist elektrisch mit dem Ethernet und mit dem VME-Bus 650 auf dem Steuer-Board 600 verbunden. Der VME-Bus 650 ist mittels einer Schnittstelle (in 20 nicht gezeigt) mit der Rückwandplatine 800 oder 802, und dann mit den Logik-Boards 200 und den I/O-Boards 300 elektrisch verbunden. Der VME-Bus 650 ist ferner über die JTAG-Schnittstelle 600 auf dem Steuer-Board 600 und der Rückwandplatine 800 mit den Mux-Boards 400 verbunden.
  • Jedes Logik-Board 200 und I/O-Board 300 weist einen lokalen Prozessor mit einer VME-Schnittstelle und einem Speicher auf. Dieser Schaltkreis wird in Bezug auf das Logik-Board 200 erläutert, obwohl ein ähnlicher Schaltkreis auf jedem I/O-Board 300 existiert. Der Prozessor 206 (früher in 11 gezeigt) ist über eine VME-Schnittstelle 222 elektrisch mit dem VME-Bus 650 auf der Rückwandplatine 800 oder 802 verbunden. Er ist ferner elektrisch mit einem Controller 221 verbunden. In einer bevorzugten Ausführungsform weist der Controller 221 mehrere XC5215-FPGAs der Xilinx Corporation auf. Der Controller 221 stellt JTAG-Testsignale für andere Komponenten auf dem Logik-Board 200 bereit. Zusätzlich sind verschiedene Vorrichtungen, wie beispielsweise ein Flash-EEPROM 224 und ein dynamic RAM 226 an den Prozessor 206 angeschlossen. Die Prozessoren 206 können unabhängig voneinander ausgeführt werden, wenn Board-Ebenen-Diagnosen durchführt werden, Konfigurationsdaten in die Logik-Chips 10 geladen werden, oder wenn Daten zu oder von den Speichern 208 und 210 übermittelt werden (früher in 11 gezeigt.)
  • Unter Bezugnahme auf 20a wird der Logik-Analysator-Schaltkreis des bevorzugten Ausführungssystems im Detail erläutert. Der Logik-Analysator liegt verteilt vor. Das bedeutet, dass Teile des Logik-Analysators auf jedem Logik-Board 200 enthalten sind, während zentralisierte Funktionen auf den Steuer-Boards 600 enthalten sind.
  • Ereignisse, d.h., Kombinationen von Signalzuständen in dem der Emulation unterworfenen Entwurf werden innerhalb der Logik-Chips 10 und 204 auf den Logik-Boards 200 erzeugt. Diese werden zu Paaren kombiniert und auf den Signalen 236 ausgegeben, welche dann in einem speziellen Ereignis-Logik-Chip 232 miteinander UND-verknüpft werden (als UND-Gatter in 20a gezeigt). Die resultierenden kombinierten Ereignis-Signale werden durch die Flipflops 230 in acht Signale aufgeteilt (der Einfachheit halber sind in 20a nur zwei Flipflops 230 gezeigt). Die aufgeteilten Ereignis-Signale 240 gehen dann durch die Rückwandplatine 800 oder 802 (in 20a nicht gezeigt) zu dem Steuer-Board 600, wo sie mit Ereignissen von anderen Boards oder Boxen mittels des UND-Gatters 678 (welches Teil eines Logik-Chips ist) wieder UND-verknüpft werden. Der Verbinder 670 kann Ereignis-Signale von anderen Emulations-Boxen beisteuern. Die endgültigen Ereignissignale gehen zu dem Trigger-Generator-Logik-Chip 674 auf dem Steuer-Board 600, welcher eine Trigger-Bedingung und eine bedingte Erfassungs-Kondition berechnet und ein erfassendes Aktivierungssignal 238 generiert, welches die Erfassung der Daten auf den Logik-Boards 200 steuert. Die Ausgabe des Trigger-Generator-Logik-Chips 674 wird durch den Puffer 671 mittels des Verzögerungs-Elementes 676 zu dem Verbinder 672 gesendet. Die Ausgabe des Verzögerungs-Elementes 676 wird durch die Puffer 673 gepuffert und durch die Rückwandplatine 800 oder 802 zu einem Logik-Analysator-Speicher-Controller 234 auf den Logik-Boards 200 gesendet. Das Steuer-Board 600 generiert ebenfalls die Spur- und funktionalen Test-Takte und anderen Logik-Analysator-/Mustergenerator-Signale.
  • Unter Bezugnahme auf 20b wird der Daten-Pfad für die Logik-Analysator-Signale gezeigt. Die Datensignale werden in den Logik-Chips 10 und 204 gespeichert und hinein in die synchronous Graphics RAMs (SGRAMs) 210 auf den Emulations-Boards 200 gescannt. Der Logik-Analysator-Daten-Pfad ist über alle Logik-Boards 200 verteilt. Jeder Mux-Chip 12 auf den Logik-Boards 200 weist acht Anschlussstifte zu einem 256K × 32 SGRAM 210 auf. Das SGRAM 210 wird während die Emulation läuft mit großer Geschwindigkeit betrieben, um Logik-Analysator-Daten zu speichern. Die Daten werden irgendwo abhängig von der gewünschten Logik-Analyse-Geschwindigkeit, der Kanaltiefe und der Anzahl von Testsignalen von zwei-zu-eins zu vierundsechzig-zu-eins zeit-gemultiplext, wie beispielsweise in der nachfolgenden Tabelle gezeigt: Logik-Analysator-Tradeoffs
  • Figure 00490001
  • Die maximalen Geschwindigkeitszahlen, welche oberhalb gezeigt sind, sind approximiert und variieren abhängig vom Logik-Analysator-Design und von der Multiplex-Taktgeschwindigkeit.
  • Bei einer Rate von 0,5 MHZ ist eine ausreichende Anzahl von Kanälen verfügbar, so dass es möglich ist jedes Flipflop oder Latch gleichzeitig in dem emulierten Design zu untersuchen. Wenn ein Signal untersucht wird, wird der Wert des Signals bei dem zugehörigen Element oder Knoten ausgelesen. Üblicherweise wird dieser Wert dann in einem Speicher-Element (SGRAM 210) gespeichert. Mittels Rekonstruktion kombinierter Signale in einer Software kann der Benutzer einen beliebigen Satz für mehrere tausend Takte rund um eine Trigger-Bedingung betrachten, ohne dabei die Prober zu verschieben oder sogar den Emulator neu starten zu müssen. Wenn es gewünscht wird, ein kombiniertes Signal zu untersuchen, prüft die Software die Entwurfs-Netzliste. Ein Konus von Logik wird extrahiert, in welchem jeder kombinatorische Logik-Pfad, der zu dem gewünschten Signal führt, zurückverfolgt wird, bis er entweder bei einem untersuchten Speicher-Element (d.h., einem Flipflop oder Latch) oder einem externen Eingang des Designs endet. Die Logik-Funktion für das gewünschte Signal wird dann in Termen von allen Speicher-Elementen oder externen Eingängen die dazu beitragen erhalten. Schließlich wird der Wert des gewünschten Signals für jeden Zeitpunkt mittels Berechnen der Logik-Funktion unter Verwendung der zuvor gespeicherten Werte aller Speicher-Knoten und externen Eingänge abgeschätzt. Die Logik-Funktion wird an jedem Punkt, an dem sich ein Eingang des Logik-Konus ändert abgeschätzt. Dies wird als ein Teil der Debug-Software des Designs ausgeführt.
  • Zum Beispiel, kann das untersuchte Signal E in 20d durch Extraktion seines kombinatorischen Logik-Konus berechnet werden, welcher bei den Speicher-Elementen B, C, D und dem Design-Eingang A endet. Die Gleichung für das Signal E wird immer dann, wenn sich die Signale A, B, C und D ändern, evaluiert. Dann kann eine exakte Wellenform für das Signal E angezeigt werden, so als ob eine physikalischer Prober darauf platziert wurde. Diese vollständige Sichtbarkeit beschleunigt das Debuggen außerordentlich für komplexe Entwurfsprobleme. Eine vollständige Transparenz ist ebenfalls bei einer höheren Frequenz verfügbar, falls die Anzahl an Flipflops pro Logik-Chip 10 oder 204 begrenzt ist.
  • Bei höheren Betriebsgeschwindigkeiten, d.h., Betriebsgeschwindigkeiten höher als 0,5 MHZ, muss der Benutzer festlegen, welche Signale untersucht werden sollen. Jedoch, ist die Änderung des Signals, welches untersucht werden soll, schnell, da jedes Logik-Board 200 seine eigenen Logik-Analysator-Speicher 210 aufweist. Der Grund hierfür ist, dass die Prober nicht, wie gemäß den Emulationssystemen des Standes der Technik, über die Rückwandplatine gesendet werden müssen.
  • Noch mal unter Bezugnahme auf 20b wird im Inneren jedes Logik-Chips 10 oder 204, eine zu dem Entwurf des Benutzers zusätzlicher Logik-Schaltkreis 2000 hinzugefügt, welcher in die Logik-Chips 10 oder 204 programmiert wird. Falls ein anwendungsspezifischer Logik-Chip verwendet wird, könnte dieser Logik-Schaltkreis 2000 (d.h., fest verdrahtet) in diesem Chip entworfen werden. Eine Anzahl von dedizierten Scan-Registern kann in Abhängigkeit der Anzahl zu untersuchender Signale hinzugefügt werden. Die maximale Tiefe der Scan-Register ist durch die obige Tabelle festgelegt. Jedes dedizierte Scan-Register ist auch als Scan-Kette bekannt. Zwischen jedes Scan-Flipflop 2004 ist ein Zwei-zu-eins-multiplexer 2005 angeordnet. Der Ausgang jedes Multiplexers 2005 versorgt den Eingang D des Scan-Flipflops 2004, welches ihm nachfolgt. Der erste Eingang jedes Multiplexers 2005 wird mittels eines Knotens im Benutzerentwurf bereitgestellt. Der zweite Eingang zu jedem Multiplexer 2005 wird durch den Ausgang Q jedes vorangegangenen Scan-Flipflops 2004 bereitgestellt. Der Auswahleingang zu den Multiplexern 2005 ist der Spurtakt 2002, von welchem die Funktion im Folgenden erläutert wird. Die Scan-Flipflops 2004 werden durch das Mux-Taktsignal 44 getaktet. Eine Serie von Scan-Flipflops 2004 und Multiplexern 2005 formen zusammen ein Scan-Register oder eine Scan-Kette. Abhängig von der Länge der Scan-Ketten und der Anzahl von Signalen, die untersucht werden sollen, weist jeder Logik-Chip 10 oder 204, keine, eine, oder eine Mehrzahl von Scan-Ketten auf. Die Anzahl von Scan-Ketten in einem bestimmten Chip ist von der Anzahl an Flipflops oder Signalen, die untersucht werden sollen abhängig. Wie später erklärt wird, wird die Software den Scan-Ketten Signale zuordnen, um die Anzahl von Ketten zu minimieren, um dadurch das Chip-Routen zu vereinfachen. In einer bevorzugten Ausführungsform werden maximal zwölf Scan-Ketten und zwölf I/O-Anschlussstifte pro Logik-Chip 10 oder 204 benötigt, um alle Flipflops oder Register eines emulierten Designs zu untersuchen. Um die schnellst mögliche Logik-Analysator-Betriebsgeschwindigkeit zu erreichen, werden die Scan-Ketten und SGRAMs 210 mit der zweifachen Zeit-Multiplexer-Geschwindigkeit betrieben. Ein Daten-Bit wird für jeden Zyklus des Zeit-Multiplexer-Taktes an jedem Scan-Ausgabe-Anschlussstift 2006 ausgegeben.
  • Unter Bezugnahme auf 20c werden die Logik-Analysator-Ereignisse ferner auf den Logik-Boards 200 verteilt. Das verhindert die Notwendigkeit Entwurfssignale, die zu Ereignissen beitragen, über die Rückwandplatine 800 oder 802 zu routen. Die Ereignisse werden unter der Verwendung zusätzlicher dedizierter Logik 2000 detektiert, die in jeden Logik-Chip 10 oder 204 auf den Logik-Boards 200 eingefügt sind.
  • Die Signale, die zu Ereignissen beitragen, werden durch die gleichen Flipflops 2004 gelatched, die für die Logik-Analysator-Daten verwendet werden und vorher in 20b gezeigt wurden. Diese Signale werden dann zu JTAG-programmierbaren Flankendetektoren gesendet, welche CLB-Speicher 2018 (ein CLB-Speicher ist ein Speicher, der auf den Logik-Chips 10, 204 verfügbar ist) aufweisen, die dann unter Verwendung eines Breit-Flankendecoders 2012 miteinander UND-verknüpft werden, so dass acht Ereignissignale gebildet werden. Zwei der acht Ereignissignale innerhalb jedes Logik- Chips 10, 204 werden unter Verwendung des Multiplexers 2020 zu einem Anschlussstift kombiniert und an das Emulations-Board als Ereignissignale 236 (auch in 20a gezeigt) ausgegeben, wo sie wieder mit den Ereignissignalen anderer FPGA's UND-verknüpft werden. Die Board-Ebenen-Ereignissignale werden über die Rückwandplatine zu dem Steuer-Board übertragen, wo sie mit Ereignissignalen anderer Emulations-Boards und anderen Boxen UND-verknüpft werden. Die resultierende systemweiten Ereignissignale werden zu einem Trigger-Logik-Chip 674 auf dem Steuer-Board geleitet, wo sie dazu verwendet werden, um eine Erfassungsaktivierungssignale und andere Logik-Analysator-Steuersignale zu generieren.
  • Die Signale, die zu Ereignissen beitragen, können von dem Benutzer des Emulationssystems durch das Ausfüllen einer Eingabemaske, welche dem Benutzer zuvor auf dem Arbeitsplatzsystem angezeigt wird, welches an das Emulationssystem angeschlossen ist, vor dem Kompilieren definiert werden. Falls dies getan wird, werden während des Kompiliervorgangs ausreichend konfigurierbare Logik-Blöcke (CLBs) in den Logik-Chips 10, 204 (CLBs sind die Logik-bildenden Blöcke, die verwendet werden, um Funktionalität in den Logik-Chips 10, 204 zu implementieren) reserviert, um zu ermöglichen, dass all die notwendige Logik passend gemacht wird. Eine beliebige Anzahl von Signalen kann mit nur einer minimalen Auswirkung auf die Kapazität vordefiniert werden (ungefähr vier CLBs pro Signal). Nach dem vollständigen Kompilieren können ferner neue Signale hinzugefügt werden. Dies erfordert eine schrittweise Rekompilierung und nochmaliges Herunterladen, um zusätzliche Flankendetektoren zu erzeugen und um die neuen Signale zu routen. Sobald alle Signale, die zu Ereignissen beitragen, definiert wurden, besitzt der Benutzer eine vollkommene Flexibilität, um Ereigniskonditionen während des Betriebs der Emulation zu ändern. Anhaltepunkte, Trigger-Konditionen und bedingte Erfassungs-Konditionen können modifiziert werden, und der Logik-Analysator kann von neuem gestartet werden, ohne die Emulation zu stoppen. Dies wird durch die Verwendung der JTAG-Programmierung möglich gemacht, um die Ereignislogik einzustellen.
  • 20c zeigt einen Logik-Chip 10 oder 204 mit sämtlich eingefügter Ereignis- und Scan-Logik. Das Design wird in Scan-Register, welche die Scan-Flipflops 2004 und die Multiplexer 2005 aufweisen, in Ereignis-Register, welche das Flipflop 2010 aufweisen, in eine JTAG-Schnittstelle 2016 und 2014, einen Satz von Flankendetektoren 2018 und einem Breitflanken-Dekodierer 2012 aufgeteilt.
  • Die Ereignissignale können nicht in den Scan-Flipflops 2004 gespeichert werden, da sich die Inhalte ändern, wenn die Daten des Logik-Analysator herausgeschoben werden. Deshalb werden die Ereignis-Flipflops 2010 dazu verwendet, um den aktuellen und den vorherigen Zustand für alle Signale die zu Ereignissen beitragen, zu merken. Das Ereignis-Register 2010 wird einmal auf den nächsten Scan-Takt getaktet, nachdem das Scan-Register 2004 durch das Spur-Taktsignal geladen wurde (im Folgenden erläutert). Alternativ kann das Scan-Register 2004 ein paralleles Schatten-Register sein, und Tri-State-Puffer können dazu verwendet werden, um Scan-Daten auf einen Scan-Ausgangs-Anschlussstift zu laden.
  • Die Ausgaben der Ereignis-Flipflops 2010 werden als Eingaben für die Flankendetektoren 2018 verwendet. Die Flankendetektoren 2018 weisen Dual-Port-CLB Speicher auf. Jeder CLB-Speicher wird geladen, um die gewünschte Schwellen-/Flankendetektion für zwei Eingangssignale durchzuführen, und um eine Ereignis-Ausgabe zu erzeugen. Die Ausgaben aller CLB-Speicher, die sich auf ein Ereignis beziehen, werden unter der Verwendung der eingebauten Breiten-Dekodierer 2012 zusammen UND-verknüpft, so dass ein Ereignissignal für diesen Logik-Chip 10 gebildet wird. Die Ereignissignale werden dann unter Verwendung eines Multiplexers 2020 kombiniert und an einen Tri-State-Puffer 2022 an dem I/O-Anschlussstift ausgegeben. Jedes Mal, wenn ein Benutzer-Signal für irgendein Ereignis benötigt wird, wird es an alle acht Ereignisse angeheftet, so dass Ereignis-Definitionen zur Laufzeit geändert werden können.
  • Der CLB-Speicher, welcher in dem Flankendetektoren 2018 verwendet wird, wird über den JTAG-Bus programmiert. Dies wird mit einem Zähler 2016 und einem Dekoder 2014 unter Verwendung des Dual-Port-Speicher-Merkmals der Logik-Chips 10, 204 der bevorzugten Ausführungsform bewerkstelligt. Für eine große Anzahl an Ereignis-Schaltkreisen, kann die Erzeugung und Weiterleitung von Auswahlsignalen des Dekoders 2014 einen bedeutenden Anteil der Logik-Chip 10 -Gatter-Kapazität in Anspruch nehmen. Als eine Alternative kann ein Schieberegister erzeugt werden, welches alle Flankendetektor-Speicher 2018 aufweist. Diese Alternative verhindert jedoch einen zufälligen Zugriff.
  • Jedes Signal, welches zu einem Ereignis beiträgt, benötigt näherungsweise vier CLBs plus einen geringfügigen Overhead für die JTAG-Schnittstelle. Es wird angenommen, dass immer wenn ein Signal hinzugefügt wird, die notwendige Logik eingefügt wird, um ihr zu erlauben, dass sie als ein Teil eines beliebigen oder aller acht Ereignisse verwendet werden kann. Falls der Benutzer exakt definiert hat, für welches Ereignis das Signal verwendet werden soll, würde nur eine Hälfte eines CLBs benötigt, was allerdings die Fähigkeit bedeutend einschränken würde, Änderungen der Ereignis-Bedingungen während der laufenden Emulation vorzunehmen.
  • Der Flankendetektions-Speicher 2018 für jede Signal-/Ereignis-Kombination wird programmiert, um eine der folgenden Konditionen zu detektieren:
  • Ereignis-Bedingung
    Figure 00560001
  • Ein Logik-Analysator-Zyklus beginnt mit dem Spur-Taktsignal 2002. Der Spur-Takt 2002 ist ein nicht fest kontrolliertes Signal. Es ist lediglich garantiert gültig bei einer steigenden Flanke des Mux-Taktsignals (MUXCLK) 44. Der Spur-Takt 2002 verursacht eine synchrones Abtasten von Daten, welche in allen Scan-Ketten gespeichert werden sollen. Es startet auch die Ereignis-Berechnung. Die Board-Ebenen-Ereignisse werden zu dem Steuermodul 600 gesendet, wo sie miteinander UND-verknüpft werden, und dazu verwendet werden, um die Trigger-Erzeugungs-Zustandsautomat 674 zu steuern. Nach einigen Spur-Taktperioden erzeugt der Trigger-Generator ein Erfassungs-Aktivierungs-Signal 238, welches das Schreiben der Daten in das SGRAM 210 auf den Logik-Boards 200 steuert. Der Schaltkreis bleibt dann bis zum nächsten Spur-Takt 2002 inaktiv.
  • Die Logik-Analysator-Daten werden in den RAMs auf jedem Emulations-Board gespeichert. Wie früher dargestellt, weist jedes Logik-Board 200 vierundfünfzig Mux-Chips 12 auf, von welchen jeder acht Anschlussstifte, die an ein SGRAM 210 angeschlossen sind aufweist. Also gibt es 54·8 = 432 Datenkanäle in dem RAM. Die Logik-Analysator-Daten werden in Basiseinheiten, den sogenannten Datenübertragungsblöcken, gespeichert. Ein Datenübertragungsblock wird folgend auf jeden Spur-Takt 2002 generiert und weist all die Daten auf, die einmal von den Scan-Ketten der Logik-Chips 10 oder 204 heraus geschoben wurden. Ein Datenübertragungsblock kann zwei bis vierundsechzig RAM-Speicherzellen belegen und benötigt für seine Erzeugung zwei bis vierundsechzig Mux-Taktsignal-(MUXCLK) Zyklen. Ein typischer Datenübertragungsblock sieht wie folgt aus:
    Datenkanäle (432)
    Datenübertragungsblock 0 Daten 0 Daten 1 Daten 2 Daten 3
    Datenübertragungsblock 1 Daten 0 Daten 1 Daten 2 Daten 3
  • Ein minimaler Datenübertragungsblock würde nur zwei RAM-Speicherzellen belegen. Die Datenübertragungsblock-Länge ist immer ein Vielfaches von zwei. Folglich sind die zulässigen Längen der RAM-Speicherzelle, zwei, vier, acht, ... vierundsechzig. Um die Timing-Anforderungen des SGRAMs 210 einzuhalten, werden sequentielle Schreib-Vorgänge innerhalb eines Datenübertragungsblocks in gegenüberliegende Speicherbänke des Speichers vorgenommen. Für die minimale Datenübertragungsblock-Größe wird ein Wort von Daten in der unteren RAM-Speicherbank und ein Wort in der oberen RAM-Speicherbank gespeichert.
  • Der Logik-Board-Speicher weist eine Worttiefe von 256K auf. Der Speicher ist gleichmäßig in zweiunddreißig eigenständige Blöcke aufgeteilt, wobei jeder von denen 8192 Worte aufweist und abhängig von der Datenübertragungsblock-Länge zwischen 4096 und 128 Datenübertragungsblöcke aufweisen kann. Die Blöcke weisen eine feste Länge auf und beginnen immer mit 8K großen Wort-Grenzen. Innerhalb eines Blocks können die Datenübertragungsblöcke in einer zufälligen Reihenfolge gespeichert werden, aber es existiert keine Datenübertragungsblock-Überlappung zwischen den Blöcken. Alle Datenübertragungsblöcke eines späteren Blocks weisen einen höheren Zeitmarkenwert als alle Datenübertragungsblöcke eines früheren Blocks auf.
  • Die Tiefe des Logik-Board-Speichers 210 ist von der Wahl des Entwicklers und von der Tiefe der erhältlichen Speicher-Chips abhängig. Tiefere Speicher können in der Zukunft verwendet werden, wenn größere SGRAMs erhältlich sind.
  • Ein Zeitmarkenwert wird in einem Takt-RAM 612 (in 19 gezeigt) auf dem Steuer-Board 600, jedes Mal wenn ein Datenübertragungsblock auf den Logik-Boards 200 gespeichert wird, gespeichert.
  • Der Logik-Analysator unterstützt eine bedingte Erfassungsoption. Das bedeutet, dass individuelle Datenübertragungsblöcke in einem Speicher abhängig von dem Wert eines der Ereignissignale und/oder dem aktuellen Zustand der Trigger-Zustandsautomat geschrieben oder nicht geschrieben werden. Die bedingte Erfassung erlaubt eine effizientere Verwendung des Speichers, da ausschließlich wesentliche Daten gespeichert werden. Die bedingte Erfassung wird durch ein Erfassungs-Aktivierungssignal 238 gesteuert, welches auf dem Steuer-Board 600 erzeugt wird. Es existiert eine Leitungsverzögerung von ungefähr vier Spur-Takten nach einem Spur-Takt 2002, um ein Erfassungs-Aktivierungssignal zu generieren.
  • Aufgrund des verzögerten Erfassungs-Aktivierungssignals ist es nicht möglich zu der Zeit, wenn die Daten verfügbar sind, zu bestimmen, ob siegespeichert werden sollen oder nicht. Die Daten werden deshalb immer in einem Speicher gespeichert und später überschrieben, falls das Erfassungs- Aktivierungssignal anzeigt, dass sie nicht gut waren. Das hat zur Folge, dass die Daten, die in einem Speicher gespeichert werden sollen, tatsächlich in zufällige Reihenfolge gespeichert werden. Die korrekte Reihenfolge der Daten wird, nach dem der Logik-Analysator anhält, wieder hergestellt, indem die in dem Takt-RAM 612 gespeicherten Zeitmarken sortiert werden und ein Satz von Zeigern an jeden Logik-Board-Prozessor 206 verteilt wurde. Die Zeiger weisen die physikalischen Speicher-Ort jedes sequentiellen Datenmusters auf. Die Out-of-order-Daten werden, da es notwendig ist, auf einen Block des Speichers begrenzt, um den Übertrag auf die nächste Zeile des Speicher-Adress-Zählers handhaben zu können. Der älteste Datenblock muss sobald der Adress-Zähler wieder in die erste Speicherzelle des Blocks schreibt, verworfen werden.
  • Der Logik-Analysator-Logik-Steuer-Chip 674 auf dem Steuer-Board weist ebenfalls ein Block-Register auf, in welches fünf Datenbits nach jedem geschriebenen Block gespeichert werden (insgesamt einhundertsechzig Bits). Vier dieser Bits stellen den Wert des Erfassungs-Aktivierungssignals für jeden der letzten vier geschriebenen Datenübertragungsblöcke dar. Ein Extra-Bit spezifiziert, ob der Datenübertragungsblock in einer geordneten Reihenfolge geschrieben wurde. Dies ist gleichwertig damit, dass die Erfassungs-Aktivierung für jeden Spur-Takt während eines Blocks zulässig war.
  • Um Blöcke dazu zu zwingen nicht zu Überlappen, werden die letzten vier Datenübertragungsblöcke in jedem Block immer ohne Rücksicht auf den Status des Erfassungs-Aktivierungssignals geschrieben. Diese letzten vier Datenübertragungsblöcke können oder können nicht brauchbare Daten aufweisen. Der Steuermodul-Prozessor prüft die zugehörigen Erfassungs-Aktivierungs-Bits in dem Block-Register, um zu sehen, ob brauchbare Daten vorhanden sind oder nicht. Die Anzahl der aktuellen Datenübertragungsblöcke innerhalb eines Blocks kann daher um vier variieren.
  • Dies muss bei der Erstellung der Zeiger für die Emulations-Boards berücksichtigt werden. Die letzten vier Worte der Daten, die gespeichert wurden, bevor der Logik-Analysator gestoppt hat, können ebenfalls oder können ebenfalls nicht brauchbare Daten aufweisen. Dies kann durch das Leeren der Erfassungs-Aktivierungs-Leitung in das Block-Register festgestellt werden, nachdem der Logik-Analysator gestoppt hat.
  • Der Steuermodul-Prozessor 700 hat die Möglichkeit die Adresse des zuletzt gespeicherten Datenübertragungsblöcks von dem Logik-Analysator Steuer-Chip 674 auszulesen, bevor der Logik-Analysator gestoppt wurde. Dies wird dazu verwendet, um den zuletzt geschriebenen Daten-Block zu ermitteln. Der erste Daten-Block ist entweder Block 0, falls der Adress-Zähler nicht übergelaufen ist oder der nächst höhere. Ein zusätzliches Status-Bit ist notwendig, welches gesetzt wird, wenn der Adress-Zähler zum ersten Mal überläuft.
  • Der letzte Daten-Block, der geschrieben wird, wenn der Logik-Analysator gestoppt hat, wird wahrscheinlich einige alte Datenübertragungsblöcke aufweisen, welche im vorhergehenden Übertrag auf die nächste Zeile des Adress-Zählers geschrieben wurden. Diese müssen verworfen werden. Die Datenübertragungsblöcke die verworfen werden sollen, können durch eine Sortierung nach dem Zeitmarken-Wert festgestellt werden, und beliebige Datenübertragungsblöcke, die eine Zeitmarke aufweisen, als die früheste Zeitmarke in dem ersten Block gesetzt wurde, werden verworfen.
  • Zum Beispiel, angenommen dass die Datenübertragungsblock-Länge den Wert eins aufwies (anstelle von zwei bis vierundsechzig), existieren acht Datenübertragungsblöcke pro Block (anstelle von 4096), und der Speicher weist eine Tiefe von vierundzwanzig (anstelle von 262144) auf. Die Logik-Board- und Steuer-Board-Speicher weisen, nachdem der Logik-Analysator gestoppt hat, die folgenden Daten auf:
  • Figure 00610001
  • Der Adress-Zähler hat bei der Speicherzelle 2 angehalten und das Adress-Überlauf-Bit wurde gesetzt. Das bedeutet, dass der Block von Speicherzelle 0 bis 7 der letzte Block und der Block von Speicherzelle 8 bis 15 der erste Block ist. Bei der Betrachtung der Erfassungs-Aktivierungs-Bits, die für den ersten Block gespeichert sind, kann ermittelt werden, dass die Datenübertragungsblöcke am Ende des ersten Blocks bei den Speicherzellen 12 und 14 gut sind, und die Datenübertragungsblöcke am Ende des ersten Blocks bei den Speicherzellen 13 und 15 schlecht sind. Alle anderen Datenübertragungsblöcke in dem Block sind gut, andernfalls hätte der Adress-Zähler nicht zu dem nächsten Block inkrementiert. Nach der Sortierung nach der Zeitmarke und des Entfernens der schlechten Daten ist der erste Block:
  • Figure 00620001
  • Hinweis: Die letzten vier Datenübertragungsblöcke in einem Block werden immer in einer sortierten Reihenfolge vorliegen, so dass schlechte Datenübertragungsblöcke vor oder nach der Sortierung nach den Zeitmarken entfernt werden können.
  • Der zweite Block wird als nächstes bearbeitet. Der Datenübertragungsblock bei Adresse 23 ist im zweiten Block der bei der Adresse 16 beginnt schlecht. Dieser Block muss nicht sortiert werden, da das Sortierungsbit für diesen Block im Block-Register gesetzt ist. Nach dem Entfernen des schlechten Datenübertragungsblocks, sieht der Block wie folgt aus:
  • Emulations-Board Steuer-Board
    Figure 00630001
  • Der letzte Block, der bei der Adresse 0 startet wird nun bearbeitet. Als erstes wird der Datenübertragungsblock nach der Zeitmarke sortiert, um zu erhalten:
  • Emulations-Board Steuer-Board
    Figure 00630002
  • Als nächstes werden alle Datenübertragungsblöcke mit einer Zeitmarke früher als die erste Zeitmarke im ersten Block (10) verworfen. Dies führt zu nunmehr drei Datenübertragungsblöcken im Block.
  • Emulations-Board Steuer-Board
    Figure 00630003
  • Figure 00640001
  • Die Block-Register-Erfassungs-Aktivierungs-Bits für den letzten Datenübertragungsblock enthalten die letzten Werte von der Erfassungs-Aktivierungs-Pipeline auf. Der Registerinhalt für diesen Block ist 0111. Das bedeutet, dass der letzte Datenübertragungsblock bei der Adresse 1 schlecht ist, und dass die anderen zwei Datenübertragungsblöcke bei den Adressen 0 und 2 gut sind. Das niederwertige Bit ist bedeutungslos, da nur drei Datenübertragungsblöcke in diesen Block geschrieben wurden. Der letzte Block sieht dann wie folgt aus: Emulations-Board Steuer-Board
    Figure 00640002
    und der komplette Satz an wiederhergestellten Daten ist:
  • Emulations-Board Steuer-Board
    Figure 00650001
  • Die Software, die für die Programmierung des bevorzugten Ausführungssystems benötigt wird, wird nun erläutert. Die Software ist gegenüber der in den US-Patenten mit den Nummern 5,109,353, 5,036,473, 5,448,496 und 5,452,231 und 5,475,830 vorher offengelegten Software aktualisiert und unterscheidet sich daher. In 21 ist ein Flussdiagramm gezeigt.
  • Die Quell-Netzliste kann direkt durch eine Netzlisten-Importeur 1000 implementiert werden, der durch ein Logik-Synthese-Programm 1002, wie beispielsweise das Logik-Syntheseprogramm der Marke HDL-ICETM erzeugt werden, welches von Quickturn Design Systems Inc. erhältlich ist, oder durch einen Verhaltens-Prüfanlage-Kompilierer 1004 generiert werden. Der Netzlisten-Importeur 1000 ist im Stande, Gatter-Ebenen-Text-Netzlisten in einer Auswahl von Formaten, wie beispielsweise das EDIF und das Verflog aufzunehmen, und die Netzlisten in ein internes Netzlisten-Datenbankformat zu konvertieren, welches durch Datenbank-Logik-Bibliotheken dargestellt wird, welche hierarchisch definierte Zellen, gewöhnliche Zellen und spezielle Hardware-Zellen enthalten. Spezielle Hardware-Zellen weisen Speicher-Spezifikations-Zellen, Mikroprozessor-Zellen und Komponenten-Adapter-Zellen auf. Einige der hierarchisch definierten Zellen weisen einen Flag auf, was sie davor bewahrt, dass sie abgeflacht und zwischen mehreren Logik-Chips 10 aufgeteilt werden, um Taktprobleme bei dem Routen zwischen Chips zu vermeiden. Die Wahl des Design der Netzlisten-Import-Software ist eine Frage der Design-Wahl und wird hier nicht weiter erläutert. Wie erläutert wurde, ist eine abgeflachte Zelle eine, die keine hierarchischen Zellen enthält. Sie enthält nur die primitivsten Komponenten, wie beispielsweise einfache Logik-Gatter.
  • Der Logik-Synthetisierer 1002 der Marke HDL-ICETM, welcher der vorliegende bevorzugte Logik-Synthetisierer 1002 ist, nimmt Register-Übertragungsebenen-(RTL)Verilog- oder -VHDL-Netzlisten und konvertiert sie durch einen Logiksynthese-Prozess in das Datenbankformat, welches von dem Netzlisten-Importeur und anderen Kompilierungs-Schritten verwendet wird. Andere geeignete Syntheseprodukte sind kommerziell von der Synopsis Corporation und anderen erhältlich, obwohl der Logik-Synthetisierer der Marke HDL-ICETM einige Vorteile, wie beispielsweise eine bessere Integration und eine höhere Betriebsgeschwindigkeit aufweist.
  • Der Verhaltens-Prüfanlage-Kompilerer 1004 erlaubt Verhaltens-Prüfanlagen, die in Verilog oder VHDL beschrieben sind, emuliert zu werden. Parallele Code-Ausführung auf den Prozessoren 206 eines oder mehrerer der Logik-Boards 200 ist fest durch den Co-Simulations-Logik-Chip 204 an andere Logik gekoppelt, welche durch das Netzlisten-Importprogramm 1000 oder den Logik-Synthetisierer der Marke HDL-ICETM kommen kann. Das Ausführen von Code auf den Prozessoren 206 kann eine Verhaltens-(nicht synthetisierbare)Darstellung eines Logik-Designs sein, während sich andere Logik in einer Gatter-Ebenen-(synthetisierbaren)-RTL-Darstellung befindet.
  • Der Logikzellen-Speicher-(LCM)Generator 1006 ersetzt die Speicher-Spezifikations-Zellen von dem Benutzer-Design, welches unter Verwendung von Speichern, die in die Logic-Chips 10 eingebaut sind implementiert wird, mit hierarchisch definierten Zellen (Hart-Makros), welche die Speicherzellen-Implementierung definieren, und möglicherweise das Abbilden auf konfigurierbare Logik-Blöcke im inneren der Logik-Chips 10 und ihre relative Lage im inneren jedes Logik-Chips 10 aufweisen.
  • Benutzerdaten-Eingabeprogramm 1008 erlaubt dem Benutzer die Information, die für das kompilieren des Designs notwendig ist, einzugeben, wie beispielsweise Taktinformationen, Überprüfungsinformationen, spezielle Netzinformationen, usw.. Diese Informationen unterstützen das Emulationssystem bestimmte Bedingungen zu handhaben, welche Probleme während der Emulation hervorrufen können, wenn sie nicht in einer speziellen Art und Weise gehandhabt werden.
  • Ein Daten-Qualifizierungsprogramm 1010 verifiziert die Richtigkeit der Netzliste und der Benutzerdaten. Es findet häufige Netzlisten-Fehler, wie beispielsweise nicht getriebene Eingänge oder mehrere Ausgänge, die an ein Netz angeschlossen sind.
  • Ein Taktbaum-Extraktionsprogramm 1012 extrahiert den Taktbaum aus der hierarchischen Netzliste und erkennt Takt-Anschlüsse auf allen Ebenen der Design-Hierarchie. Eine Beschreibung des Ausführens dieses Schrittes wird im Detail in dem US-Patent mit der Nummer 5,475,830 offengelegt.
  • Ein Hierarchisches Partitionierungs-Planungs-Programm (HPP) 1014 wird für den physikalischen Chipmodul- Partitionierungs-Algorithmus verwendet. Es identifiziert die Teile des Designs, die auf jedes Logik-Board 200 abgebildet werden sollen.
  • DB-Partitionierungs-Setup 1016 präpariert die Datenbank für das parallele Ausführen des Chip-Partitionierungsprogramms für jeden Teil, der durch das HPP 1014 identifiziert wird.
  • Chip-Partitionierungsprogramm 1018 identifiziert die Cluster von Logik, die in jeden separaten Logik-Chip 10 implementiert werden soll.
  • NGD-Ausgabeprogramm 1020 erzeugt auf der Basis der Ergebnisse der Chip-Partitionierung korrespondierend zu jedem Chip NGD-Dateien. Das NGD ist ein Dateiformat, welches für verschiedene Software-Programme üblich ist, welche von der Xilinx Corporation erhältlich sind. Die NGD-Dateien weisen Logik- und Route-Informationen auf, welche notwendig sind, um ein Logik-Design in die Logik-Chips zu implementieren. Wie erläutert, werden in der vorliegenden bevorzugten Ausführungsform Logik-Chips von Xilinx eingesetzt. Das NGD-Ausgabeprogramm 1020 überträgt Datenbank-Informationen in das NGD-Format. Das NGD-Ausgabeprogramm 1020 startet ferner eine parallele Unterteilung, Platzierungs- und Route-(PPR)Aufgaben 1022 für die individuellen Logik-Chips 10 mit einer beliebigen I/O-Anschlussstiftbelegung. PPR-Programm 1022 ist ein von der Xilinx Corporation kommerziell erhältliches Programm, welches für die FPGA-Erzeugnisse von Xilinx Programmdateien erzeugt.
  • Physikalisches DB-Generationsprogramm 1026 präpariert die physikalische Datenbank, die von dem Board-Partitionierungsprogramm verwendet wird. Die physikalische Datenbank enthält für jedes Board des Systems Informationen über die physikalischen Verbindungen zwischen den Logik-Chips 10 und den Mux-Chips 12.
  • Board-Partitionierungsprogramm 1028 identifiziert die Platzierung von Logik-Gattern in die Logik-Chips 10 innerhalb jedes Paars von Logik-Boards 200. Es berücksichtigt die Einschränkungen der Speicher-Instanzen, welche auf jedem Logik-Board 200 implementiert werden können, die Einschränkungen der Überprüfungskanäle des Logik-Analysators, die Beschränkung auf einen Mikroprozessor pro Board, genauso wie die Einschränkungen der Rückwandplatine und des Turbo-Verbinders.
  • EBM Kompilierungsprogramm 1030 kombiniert alle verbleibenden Speicher-Spezifikations-Zellen, die dem gleichen Logik-Board zugeordnet sind, in nicht mehr als zwölf Gruppen entsprechend den RAMs 208 (vorherig in 11 gezeigt). Die I/O-Signale, die mit den SRAM-Chips 208 verbinden, sind mit entsprechenden Anschlussstift-Nummern markiert.
  • System-Routing-Modul 1032 wählt die physikalische Netze und die Zeitmultiplex-(TDM)Phasen, um logische Netze, die die Chip-Grenzen passieren, zu implementieren. Es ordnet allen I/O-Anschlussstiften Nummern und TDM-Phasen zu. Es erzeugt ebenfalls die Programmierungsdaten für die Mux-Chips 12 und Repeater-Pods 520.
  • NGD-Aktualisierungsprogramm 1034 startet schrittweise letzte PPR-Aufgaben 1036 für jeden Logik-Chip 10, wobei es die letzte Anschlussfähigkeit der TDM-Logik und I/O-Belegungen bereitstellt. Wenn die Aufgaben erfolgreich abgeschlossen sind, ist das Kompilieren beendet.
  • Die Details der Funktionalität verschiedener Programme wird im Folgenden erläutert.
  • Unter Bezugnahme auf 22 wird die Sequenz der Schritte, die für die Kompilierung eines Software-Hardware-Modells notwendig sind, welches von dem Verhaltens-Prüfanlage-Kompilierer 1004 erzeugt wird, gezeigt. Die Kompilierung startet mit dem Verilog- oder dem VHDL-Quell- Code des Benutzers. Als ein Ergebnis eines Import-Prozesses 1100, wird die Verhaltens-Datenbank-Darstellung 1102 erzeugt. Nachdem die Modell-Kompilierung abgeschlossen ist, führt dies zu einer logischen Darstellung eines Emulationsmodells 1114, und zu einem Satz von Programmen 1112, die in die Logikmodul-Prozessor-DRAMs 226, wie in 20 gezeigt, heruntergeladen werden können.
  • Die Verhaltens-Prüfanlage-Kompilier-Software 1004 weist vier Programme und eine Laufzeit-Support-Bibliothek auf.
  • Der Importer 1100 führt die Verilog- oder VHDL-Quelldateien des Benutzers aus, und erzeugt eine Verhaltens-Datenbankbibliothek 1102. Er akzeptiert eine Liste von Quelldatei-Namen und Speicherzellen und Dateinamen für Bibliotheken, in denen undefinierte Modulreferenzen aufgelöst werden. Die Quelldatei-Namen sind die Dateinamen, die von Verilog oder VHDL verwendet werden.
  • Der Vorprozessor 1104 formt die Verhaltens-Datenbankbibliothek 1102, welche durch den Importer 1100 erzeugt wurde, in eine neue Verhaltens-Datenbankbibliothek 1106 um. Er führt die Partitionierung des Verhaltenscodes in Cluster (ferner bezeichnet als Partition) durch, welche für eine Ausführung auf jedem verfügbaren Prozessor 206 ausgerichtet sind (siehe 11), und ermittelt die Ausführungsreihenfolge der Codefragmente und die Lage der Variablen in den Partitionen. Codefragmente sind unabhängige Stücke von Code, welche parallel in den Prozessoren 206 ausgeführt werden können. Die Vorprozessoren führen auch alle notwendigen Umformungen durch, um ein Haltezeiten verletzungsfreies Modell zu erzeugen. Siehe hierfür, beispielsweise, das US-Patent mit der Nummer 5.259,006 von Price et al, die Bekanntmachung, welche hiermit unter Bezug auf ihre Gesamtheit mit einbezogen wird.
  • Der Codegenerator 1110 liest die Verhaltens-Datenbankbibliothek 1106, wie sie durch den Vorprozessor 1104 umgeformt wurde aus, und erzeugt herunterladbare Programme für jeden der Cluster, die von dem Vorprozessor 1104 identifiziert werden. Diese Programme werden für ein Ausführen auf den Prozessoren 206 in die DRAMs 226 heruntergeladen.
  • Der Netzlistengenerator 1108 liest die Verhaltens-Datenbankbibliothek wie sie vom Vorprozessor 1104 umgeformt wurde aus, und erzeugt eine logische Datenbankbibliothek 1104 für eine Weiterbearbeitung durch die anderen Kompilier-Programme 10061036. Um spezielle Verbindungen des Co-Simulations-Logik-Chips 204 zu dem Mikroprozessorbus und zu dem Ereignissynchronisationsbus (siehe 11) darzustellen, wird der Netzlistengenerator 1108 eine Netzlistenstruktur erzeugen, die in 23 gezeigt ist. MP-Zelle 1200 ist eine spezielle Zelle entsprechend dem Prozessor 206, welche nicht durch ein Chip-Partitionierungsprogramm 1018 (ähnlich den LBM Zellinstanzen) geclustert wird. Periphere Controller-Zelle 1202 ist eine reguläre Zelle, welche Bibliothekskomponenten-Instanzen enthält und im Co-Simulations-Logik-Chip 204 platziert wird. Lediglich eine minimale Menge an Logik wird in dieser Zelle platziert, welche direkt mit dem Mikroprozessorbus interagiert (zusammenwirkt). Die Platzierung minimaler Mengen von Logik in die periphere Steuerzelle 1202 verhindert die Notwendigkeit einer Wartezustands-Programmierung. Die periphere Steuerzelle 1202 wird gekennzeichnet, um zu verhindern, dass das Chip-Partitionierungsprogramm 1018 sie zwischen mehreren Logik-Chips 10 aufteilt. Es ist die Zuständigkeit des Netzlisten-Generators 1108 sicher zustellen, dass die Kapazität dieser Zelle nicht die Kapazität eines einzelnen Logik-Chips 204 überschreitet, und dass die Anzahl der Verbindungen zwischen dieser Zelle und dem Rest der Netzliste nicht die Anzahl von Verbindungen zwischen dem Co-Simulations-Logik-Chip 204 und den Mux-Chips 12 überschreitet. Wie zuvor erläutert, weist der Co-Simulations-Logik-Chip 204 drei Anschlussstifte auf, die mit jedem der vierundfünfzig Mux-Chips 12 elektrisch kommunizieren. Das bedeutet, dass einhundertzweiundsechzig Verbindungen zwischen dem Co-Simulations-Logik-Chip 204 und den Mux-Chips 12 (3·54 = 162) verfügbar sind, wie in 11 gezeigt ist. Der Netzlistengenerator 1108 markiert ferner spezielle Netze, welche an die MP-Zelle 1200 mit den zugehörigen Anschlussstift-Nummer angeschlossen sind, welche den Systemvermittlungsknoten 1032 anleiten, korrekte physikalische Verbindungen für den Co-Simulations-Logik-Chip 204 zu erzeugen. Die ist erforderlich, da Verbindungen zwischen dem Prozessor 206 und dem Co-Simulations-Logik-Chip 204 bestimmten Anschlussstiften des Logik-Chips 204 zugeordnet sind
  • Der Verhaltens-Prüfanlage-Kompilierer 1004 wurde vollständig in dem US-Patent mit der Nummer 5,841,967, mit dem Titel Method And Apparatus For Design Verfification Using Emulation And Simulation, von Sample et al, offengelegt. Der Logik-Chip-Speicher-(LCM)Generator 1006 implementiert unter Verwendung der relational platzierten Makros (rpms) von Xilinx flache aber Speicher mit hoher Anzahl von Anschlüssen. Er unterstützt Speicher mit bis zu vierzehn Schreib-Ports, einer beliebigen Anzahl von Lese-Ports und einem zusätzlichen Schreib- und Lese-Port für den Fehler-Beseitigungs-Zugriff. Er verwendet synchrone Dual-Anschluss-RAM-Primitive, welche als Komponenten auf dem Logik-Chip 10 verfügbar sind.
  • 22a zeigt ein Beispiel eines Speicher-Schaltkreises, welcher von dem LCM Speichergenerator 1006 für das Platzieren in einem Logik-Chip 10 generiert werden könnte. Der Speicher-Schaltkreis der 22a weist die folgenden Komponenten auf Ein Schreib-Aktivierungs-Abtaster und -Vermittler 1050, synchronisiert die Schreibaktivierungs-Signale mit einem schnellen Takt und priorisiert die Schreiboperationen des Speicher-Schaltkreises, falls es Anfragen von mehreren Ports gleichzeitig gibt. Der Schreib-Aktivierungs-Abtaster und -Vermittler 1050 gibt eine Schreib-Adressen/Daten-Mux-Auswahl aus und schreibt Aktivierungssignale. Schreib-Aktivierungs-Abtaster und -Vermittler-Zellen werden in einer Referenzbibliothek in Form von Hart-Makros mit verschiedenen unterschiedlichen Schreib-Port-Konfigurationen von zwei bis sechzehn Schreib-Ports vorkompiliert.
  • Der Speicher-Schaltkreis der 22a weist ferner einen Lesezähler 1052 auf. Der Lesezähler 1052 wird verwendet, um die Leseanschlüsse des Speichers, der implementiert werden soll, zu durchlaufen. Diese Zähler werden ferner in einer Referenzbibliothek als Hart-Makrozellen mit verschiedenen Zahllängen vorkompiliert.
  • Der Speicher-Schaltkreis der 22a weist ferner einen Multiplexer 1053 auf, welcher entweder die Ausgabe des Lesezählers 1052 oder den Schreib-Aktivierungs-Abtaster und -Vermittler 1050 auf dessen Ausgang platziert. Die Ausgabe des Multiplexers 1053 ist das Steckplatzauswahlsignal SLOT SEL, welcher vier Drähte aufweist, die es erlauben, einen beliebeigen der sechzehn Steckplätze (oder Ports) auszuwählen. Der Speicher-Schaltkreis der 22a weist ferner Adress-Multiplexer und Daten-Multiplexer 1056 auf. Die Adress-Multiplexer und Daten-Multiplexer 1056 werden dazu verwendet, um den Schreib/Lese-Adress-Daten-Port und den Schreib-Daten-Port auszuwählen, wenn die dazugehörige Steckplatz- oder Anschluss-Zeit ankommt. Das Steckplatzauswahlsignal SLOT_SEL wird an den Auswahleingängen des Adress-Multiplexers und des Daten-Multiplexers eingeben, um diese Funktion auszuführen.
  • Der Speicher-Schaltkreis der 22a weist ferner einen Speicher 1058 auf. Der Speicher 1058 ist ein statischer RAM-Speicher, welcher als ein oder mehrere konfigurierbare Logik-Block(CLB)-Komponente von Xilinx erhältlich ist.
  • Der Speicher-Schaltkreis der 22a weist ferner einen Lesesteckplatz-Dekodierer 1054 auf. Der Lesesteckplatz-Dekodierer 1054 dekodiert das Steckplatzauswahlsignal SLOT_SEL (von welchem vier existieren) in bis zu sechzehn individuelle Drähte, die als die Takt-Aktivierungs-Eingänge der Ausgaberegister 1060 verwendet werden.
  • Unter nochmaliger Bezugnahme auf 21 hängt die Breite, die Tiefe und die Anzahl von Ports, die durch das LCM Speicher-Generationsprogramm 1006 generiert werden von den Anforderungen der Netzliste ab, die von dem Netzlisten-Importprogramm 1000, dem Synthetisierprogramm 1002 der Marke HDL-ICETM oder dem Verhaltens-Prüfanlage-Programm 1004 generiert wird. Die von Xilinx relational platzierten Makros (RPMS) werden unter der Verwendung von generischen Zellinstanzen als definierte Datenbankzellen erzeugt, genauso wie die Instanzen der speziellen FMAP- und HMAP-Zellen, um das Abbilden der Speicher-Schaltkreise in die jeweiligen Logikmodule der Logik-Chips 10 zu steuern. Die FMAP- und HMAP-Zellen sind spezielle primitive Komponenten, welche das Verhalten des PPR-Programms 1022 von Xilinx steuern. Wie in diesem bevorzugten Ausführungsbeispiel erläutert, sind dies die CLBs in den FPGAs von Xilinx. Diese Instanzen können auch eine RLOC-Eigenschaft aufweisen, welche die relative Lage eines Logikmoduls spezifiziert (ein CLB in diesem bevorzugten Ausführungsbeispiel), in welches die Logik platziert werden soll.
  • Die RPM-Zellen müssen gekennzeichnet werden (in diesem bevorzugten Ausführungsbeispiel wird diese Markierung auch als "NOFLAT" bezeichnet), um zu vermeiden, dass das Chip-Partitionierungsprogramm 1018 diese zwischen mehreren Logik-Chips aufspaltet. Die RPM-Zellen müssen ebenfalls vorkalkulierte Kapazitätswerte und eine Eigenschaft, die ihre Dimensionen angibt (die Anzahl der Logikmodule, z.B., CLBs, die horizontal und vertikal verwendet werden), aufweisen.
  • Das Daten-Qualifizierungs-Programm 1010 überprüft nicht die innerhalb der RPM-Zellen vorhandene Netzliste, da die parallele Verbindung von den FMAP- und HMAP-Primitiven zu den Logik-Primitiven ein Erscheinen einer Designregel-Verletzung erzeugen kann. Das NGD-Ausgabeprogramm 1020 verhindert RLOC-Werte in allen Primitiven in jeder RPM-Instanz. Dies erlaubt dem PPR 1022 in einem Chip RPMs in der Art und Weise zu platzieren, so dass die Randbedingungen, die durch die RLOC-Eigenschaften definiert sind erfüllt werden.
  • Zusätzlich dazu, dass dem Benutzer ermöglicht wird, Takt- und andere Design-Informationen eingeben zu können, berechnet das Benutzerdaten-Eingabeprogramm 1008 ferner zusätzlich den globalen Prober-Multiplexfaktor. Probes sind Punkte in einer Netzliste, welche während der Fehlerbeseitigung des Designs überwacht werden. Der Probe-Multiplexfaktor bestimmt die Länge der Scan-Ketten, welche zu den Logik-Chips 10 hinzugefügt werden. Der Benutzer kann entweder die Probes auflisten oder einen Vollständig-Sichtbar-Modus anfordern. Im Fall der vollständigen Sichtbarkeit ist der Multiplexfaktor vierundsechzig. Falls der Benutzer verlangt, dass nur eine bestimmte Liste von Signalen sichtbar ist, dann sollte der Multiplexfaktor wie folgt berechnet werden:
    (Anzahl von Probes)·(Abweichungsfaktor)/(432·(Anzahl von Logik-Boards))
  • Die Anzahl von Logik-Boards 200 muss bekannt sein, wenn die Berechnung durchgeführt wird. Der Abweichungsfaktor ist ein experimentell bestimmter Faktor, welcher dazu verwendet wird, um nach einer möglichen ungleichen Verteilung von Untersuchungssignalen zwischen den Logik-Boards 200 Ausschau zu halten. Die wahrscheinlichkeitstheoretische Betrachtung schlägt einen Wert zwischen 1,4 für große Systeme und 1,7 für Doppel-Board-Systeme vor. Für ein System mit B Boards ist er näherungsweise 1/(1 – 0,29·sqrt(B/(B – 1))). Dieser Faktor kann weiter heraufgesetzt werden, um mehr Raum für das schrittweise Hinzufügen von Probes ohne Neukompilieren von mehr als einem Logik-Board 200 bereit zustellen.
  • Die Logik-Analysator-Ereignisse dieses bevorzugten Ausführungsbeispiels werden durch die programmierbare Logik in den Logik-Chips 10 auf den Logik-Boards 200 berechnet. Deshalb sollten Kapazitäten in den Logik-Chips 10 für Ereigniskalkulationen reserviert werden. Somit ist, falls der Benutzer die Signal- und Ereignisdefinition bis nach der Kompilierung des Designs verzögert, eine schrittweise Neukompilierung betroffener Chips notwendig. In dem Fall, wenn die reservierte Kapazität für einen bestimmten Chip nicht ausreicht, müssen die Signale zu anderen Logik-Chips 10, die eine ausreichende Kapazität aufweisen, gesendet werden, um einen Ereignisdetektor zu erstellen, wie zuvor in 20 gezeigt. Dies kann zu einer längeren Kompilierzeit führen. Eine lange Kompilierzeit kann vor dem Kompilieren durch die Spezifizierung aller Signale, die dafür verwendet werden ein Ereignis zu erzeugen, vermieden werden. Es ist eigentlich nicht nötig an dieser Stelle Ereignisse oder Trigger zu definieren, da dies keinen Effekt auf die Kapazität aufweist. Die Ereignislogik-Funktion selbst, kann unter Verwendung des JTAG-Busses, der an die Steuer-Vorrichtung 221 (in 20 und 20c gezeigt) angeschlossen ist, in den Logik-Chip 10, während dieser ausgeführt werden, heruntergeladen werden.
  • Letztendlich muss der Benutzer während dieses Benutzerdaten-Eingabeschrittes 1008 den Zeit-Multiplexfaktor für nicht kritische Signale auswählen. Wie oberhalb erläutert, kann der Zeit-Multiplexfaktor entweder eins, zwei oder vier sein.
  • Die Chip-Unterteilungsprogramme 1016 und 1018 verwenden einen Cluster-basierten Algorithmus. Beispiele ähnlicher Algorithmen können, wie beispielsweise das System RealizerTM Emulationssystem von Quickturn Design Systems, Inc., in Hardware-Emulationssystemen gemäß dem Stand der Technik gesehen werden. In der vorliegenden bevorzugten Ausführungsform gibt es jedoch eine Anzahl von Unterschieden. Diese Unterschiede werden im Folgenden im Detail erläutert.
    • 1) Bestimmte Zellentypen benötigen eine spezielle Aufmerksamkeit, um ungenaue Unterteilungen, Clustern usw. zu vermeiden. "No-touch"-Zellen sind bestimmte Zellen, die nicht mit irgendeiner Logik geclustert werden müssen. Ein Beispiel für eine "No-touch"-Zelle ist die MP-Zelle, die in 23 gezeigt ist. "No-flat"-Zellen sind Zellen, die nicht unter mehreren Chips aufgeteilt werden müssen. Beispiele für "No-flat"-Zellen sind Register und feste Makros, bei denen eine Aufteilung Timing-Probleme einfließen lassen würde.
    • 2) Einige spezielle Netze weisen keine Treiber auf und können willkürlich abgetrennt werden. Zusätzlich zu POWER und GROUND ist ein Beispiel für solch ein spezielles Netz das Mux-Taktsignal (MUXCLK) 44, an welches Logik-Gatter angeschlossen werden können. Insbesondere erzeugen der Verhaltens-Prüfanlage-Kompilierer 1004 und der EBM-Kompilierer 1030 und der LCM-Kompilierer 1006 Logik, die an das MUXCLK angeschlossen ist.
    • 3) Die Anschlussstift-Ausgabebeschränkungen steuern die maximale Anzahl von Netzen, die ein Cluster aufweisen kann. Wenn davon ausgegangen wird, dass ein Cluster RI reguläre externe Eingabenetze, RO reguläre externe Ausgabenetze, CN kritische Netze, P untersuchte Signale aufweist und der Faktor des Zeitmultiplex-Verfahrens für die Proben T sei, wird die Anzahl von Anschlussstiften, die benötigt wird, um diesen Cluster auf einem Chip zu implementieren, wie folgt kalkuliert (alle Teilungsoperationen sind reine Teilungen mit ganzen Zahlen ohne Runden).
    • a. Ohne das Zeitmultiplexen der Logik-Signale, ist die Anzahl der Anschlussstifte RI + RO + CN + (P + T – 1)/T;
    • b. Mit dem Zwei-zu-eins-zeitmultiplexen der Logik-Signale, ist die Anzahl der Anschlussstifte (RI + 1)/2 + (RO + 1)/2 + CN + (P + T – 1)/T
    • c. Mit dem Vier-zu-eins-zeitmultiplexen der Logik-Signale, ist die Anzahl der Anschlussstifte max ((RI + 1)/2, (RO + 1)/2) + CN + (P + T – 1)/THinweis: Wenn der vollständige Transparenzmodus durch den Benutzer gewählt wird, wird angenommen, dass die Anzahl von Proben P gleich der Anzahl von Flipflops oder Registern ist.
    • 4) Die maximale Größe, die für einen Cluster erlaubt ist, basiert auf der Gatter-Kapazität des jeweiligen Logik-Chips 10. Zusätzlich zu den Logik-Gattern wird eine zusätzliche Kapazität für das Zeitmultiplex-Verfahren, die Untersuchungen und den Ereignisdetektions-Schaltkreis benötigt. Angenommen, dass ein Cluster von Logik RN reguläre (nicht kritische) externe Netze (RN ist gleichbedeutend zu RI + RO), P untersuchte Signale und E Signale aufweist, die in der Ereignisdetektion verwendet werden, dann ist die hinzugefügte Kapazität für das Zeitmultiplex-Verfahren, die Untersuchungen und den Ereignisdetektions-Schaltkreis wie folgt:
    • a. Ohne das Zeitmultiplexen der Logik-Signale, ist die zusätzliche Kapazität für den Logik-Analysator Flipflops: P + 2·E + logE Gatter: C1·P + C2·((E + 1)/2)·8 In der vorliegenden bevorzugten Ausführungsform sind die Konstanten C1 = 2, C2 = 4. Sie können später basierend auf experimentellen Ergebnissen angepasst werden.
    • b. Mit einem beliebigen Typ des Zeit-Multiplexens (2 : 1, 4 : 1 oder anderen Schemata) wird ein zusätzliche RN Flip/Flops zusätzlich zu denen die für den Logik-Analysator erforderlich sind benötigt.
    • 5) Die Unterteilung wird ebenso durch die Notwendigkeit der korrekten Implementierung des Taktbaums gesteuert, wie es in dem US-Patent mit der Nummer 5,475,830 erklärt ist. Jedem Netz im Design wird eine ganzzahlige sechzehn Bit Wahrscheinlichkeit zugeordnet, die mit CLKMASK bezeichnet wird. Das i-te Bit der CLKMASK sollte gesetzt werden, falls der i-te Takt des Benutzers dieses Netz in einer direkten Phase (nicht invertiert) erreicht. Das 8 + i-te Bit sollte gesetzt werden, falls der i-te Takt des Benutzers dieses Netz in einer invertierten Phase erreicht. Diese Information wird an das PPR-Programm 1022 geleitet, um die benötigte Verzögerungseinstellung durchzuführen.
  • Das NGD-Ausgabeprogramm 1020 gibt eine Netzliste in einem für das PPR-Programm 1022 geeigneten Format zum Weiterverarbeiten aus. Zusätzlich führt es eine Reihe von speziellen Funktionen aus, die sich auf Logik-Modifikationen beziehen, um das Zeitmultiplex- oder Fehlersuch- Logik einzufügen. Diese Funktionen sind:
    • • Die Erhaltung der relativ platzierte (RP) Makros: Relativ platzierte Makros in der Datenbank werden in den NGD-Dateien, die an das PPR übergeben werden bewahrt. RP-Makros sind Gruppen von logischen Gattern, die in feste Muster der CLBs innerhalb der FPGAs von Xilinx abgebildet wurden. Die RP-Makros werden in späteren Software-Schritten nicht neu zugewiesen, um ihre Taktcharakteristika zu bewahren.
    • • Das Einfügen von TDM-Zellen: Zeitmultiplex-Zellen werden zu jeder Grenze jedes Logik-Chips 10 hinzugefügt, bei der dieser an den Mux-Chip 12 angeschlossen ist. Vordefinierte Zellen werden verwendet, welche relativ zu der Lage der I/O-Anschlussstifte, die multiplext werden, platziert werden. Die 24a24k zeigen alle verschiedenen Unterschiede von TDM-Zellen, welche in Abhängigkeit der I/O-Anschlussstift-Typen eingefügt werden können. Für das Zeitmultiplexen werden die Anschlüsse eines Logik-Chips 10 und eines Mux-Chips 12 unter Verwendung der speziellen RPM-Zellen, die in den 24a24k gezeigt sind, in Gruppen zu je vier unterteilt. Für den Rest der Anschlüsse werden Gruppen von je zwei verwendet, oder es wird der reguläre nicht gemultiplexte I/O, der bereits auf einem Logik-Chip 10 oder Mux-Chip 12 vorhanden ist, verwendet. Der nicht gemultiplexte I/O wird immer für kritische Netzwerke verwendet.
    • • Einfügen von TDM-Steuerlogik: Die TDM-Steuerlogik generiert und verteilt die TDM-Steuersignale, welche MC, MS, MT, E0, E1, E2 und E3 sind, in die Schaltkreise, die in den 24a24k gezeigt sind. Diese Signale werden durch eine von drei speziellen Steuerzellen generiert, welche zusätzlich zu der Logik, die in den 24a24k gezeigt ist, in jeden Logik-Chip 10 eingefügt. Das Generieren dieser Signale wird unter der Verwendung der in 6 gezeigten Logik 104 oder der in 3 gezeigten Logik 68 ausgeführt. MC bezeichnet das Mux-Taktsignal 44; MS bezeichnet das Geteilt-Taktsignal 50; MT bezeichnet das Richtungs-Signal 80; und E0–E3 bezeichnen jeweils die Aktivierungssignale 90, 92, 94 und 96. Die speziellen Zellen weisen zwei Eingänge auf, MUXCLK 44 und SYNC- 48, welche an feste Anschlussstifte auf den Logik-Chips 10 angeschlossen sind. Ein Typ einer Steuerzelle (nicht gezeigt) wird für die Chips verwendet, die nicht das TDM verwenden, welche aber Logik aufweisen, die an das Mux-Taktsignal (MUXCLK) 44 angeschlossen ist. Diese Zelle gibt nur das Mux-Taktsignal (MUXCLK) 44 aus. Der zweite Typ (die in 3 gezeigte Logik 68) wird für Designs mit dem Zwei-zu-eins-TDM verwendet. Es gibt das Mux-Taktsignal (MUXCLK) 44 und die MS-(Geteilt-Takt)Signale 50 aus. Der dritte Typ der Steuerzelle (die in 6 gezeigte Logik 104) wird für das Vier-zu-eins-Zeitmultiplexen verwendet. Sie generiert das Mux-Taktsignal (MUXCLK) 44, MS (Geteilt-Takt) 50, MT (Richtung) 80, E0 90, E1 92, E2 94 und E3 96.
    • • Einfügen von Scan-Zellen für untersuchte Signale: Jedes untersuchte Signal muss mit dem Dateneingang einer Untersuchungszelle verbunden sein. Die Untersuchungszelle weist keine Ausgänge und zwei andere Eingänge auf. Einer dieser Eingänge ist elektrisch mit dem Mux-Taktsignal (MUXCLK) 44 verbunden. Der andere Eingang ist elektrisch mit dem Spur-Taktsignal 2002 verbunden, welches von einem Chip-Eingabe kommt. Die Untersuchungszellen weisen ein Flipflop 2004 und einen Multiplexer 2005 auf, wie in den 20b und 20c gezeigt.
    • • Generieren der Scan-Ketten-Spezifikationsdatei: Alle Instanzen von Untersuchungszellen müssen in einer Scan-Ketten-Spezifikationsdatei aufgelistet sein. Die Scan-Ausgaben 2006 (siehe 20b) des Chips müssen auch aufgelistet sein. Diese Ausgaben müssen in ein Datenbankmodell eines Logik-Chip-Clusters eingefügt sein, so dass der Systemrouter sie sehen kann und die dazugehörigen Verbindungen aufbauen kann. Die Anzahl an Ausgaben ist (P + T – 1)/T, wobei P die Anzahl von Untersuchungszellen und T ein Zeitmultiplex-Faktor für die Untersuchungssignale ist.
    • • Einfügen von Ereignisdetektionszellen für Signale die zu Ereignissen beitragen: Die Signale, die zu Ereignissen beitragen, werden in Paare unterteilt und jedes Paar ist mit den Eingängen I0 und I1 der acht Kopien einer Ereignisdetektionszelle 1300 verbunden, wie in 25 gezeigt. Eine bevorzugte Ausführungsform einer Ereignisdetektionszelle wurde zuvor in der 20c gezeigt. Die Ereignisdetektionszelle 1300 weist vier Flipflops 2010 und einen CLB-Speicher 2018 auf. Vier Multiplexer 2020 und vier Ausgabepuffer 2022 werden dazu verwendet, um vier gemultiplexte Ereignissignale 236 zu erzeugen (ebenfalls in den 20c und 20a gezeigt). Wenn die Anzahl der Signale ungerade ist, bleibt ein Eingang zu jeder der Ereignisdetektionszellen für die korrespondierenden acht Zellen unbenutzt.
    • • Generieren von acht abgestimmten UND-Bäumen für die Ereignisdetektorausgänge und der TDM-Logik, um die acht Ausgänge der UND-Bäume mit vier dedizierten Ereignis-Anschlussstiften zu verbinden: Die Ausgänge der Ereignisdetektionszellen 1300 werden unter der Verwendung von acht abgestimmten UND-Bäumen kombiniert, so dass eine Kopie der acht Zellen, die in dem vorherigen Schritt erzeugt wurden, in jedem der Bäume vorhanden ist. Die Ausgänge der Bäume werden unter der Verwendung spezieller Ereignis-Multiplexer-Zellen paarweise zeit-gemultiplext, wie in 26 gezeigt ist. Dieser Schaltkreis wurde auch in Bezug auf 20c beschrieben. Die UND-Gatter 2012 werden unter Verwendung von Breitkantendetektoren 2012 konstruiert, wie in 20c gezeigt ist. Die 26 zeigt diesen Schaltkreis detaillierter.
    • • Generieren von Ereignisdetektor-Herunterlade-Pfaden und einer Bereichsgrenzen-Scan-Steuervorrichtung: Ereignisdetektor-Herunterlade-Schaltkreis 1500 ist in der 27 gezeigt. Er weist einen Zähler 2016 und ein Schieberegister 2014 zusammen mit einer JTAG-Steuervorrichtung 1150 auf. Die JTAG-Steuervorrichtung 1150 ist als ein Standardteil der Logik-Chips 10 von Xilinx erhältlich. Dieser Schaltkreis wird ebenfalls zusammen mit dem Scan-Register und dem Ereignisdetektor in der 20c gezeigt. Der Ereignisdetektor-Herunterlade-Schaltkreis 1500 erzeugt die Signale WA 1502, WE 1504, DRCLK 1508 und TDI 1506 für alle Ereignisdetektoren (ebenfalls in der 20c gezeigt). Der Ereignisdetektor-Zähler 2016 generiert WA-Signale 1502 und einen Takt für das Schieberegister 2014, wobei dessen Länge von der Anzahl von Ereignisdekoder-Schaltkreisen abhängt. Der Schaltkreis ist in den 20c und 27 gezeigt. In einer bevorzugten Ausführungsform wird das Schieberegister 2014 basierend auf der Anzahl von Ereignisdetektoren generiert. Es ist dennoch akzeptabel eine maximale Anzahl von Ereignisdetektoren pro Chip zu definieren und das Design des Schieberegisters 2014 festzulegen. Das PPR-Programm 1022 wird die meiste der unbenutzten Logik trimmen.
  • Unter nochmaliger Bezugnahme auf 21 wird nun der Board-Unterteilungsschritt 1024 erläutert. Die Funktion des Board-Unterteilungsschritts 1024 besteht darin, Chip-Cluster (ein Cluster ist eine Sammlung von verbundenen Komponenten) mit der größt möglichen Anzahl von Chips zu finden, ohne dabei die Anzahl der Logik-Chips 10, 204 auf einem einzelnen Logik-Board (siebenunddreißig Chips) oder einem Paar von Logik-Boards (vierundsiebzig Chips) mit den folgenden Einschränkungen zu überschreiten:
    • 1. Die gesamte Anzahl von eingehenden und ausgehenden Netzen sollte die Anzahl der Summe der I/O-Verbindungen auf zwei Rückwandplatinen-Anschlüssen 220 für ein Paar von Logik-Boards 200 wie in 11 gezeigt (3608 in der vorliegenden bevorzugten Ausführungsform) multipliziert mit einem Ziel-Rückwandplatinen-Auslastungskoeffizient nicht überschreiten. Der Ziel-Rückwandplatinen-Auslastungskoseffizient wird experimentell bestimmt und hängt vom Erfolg des Systemsendeprogramms 1032 ab, was dieses im Stande ist im Durchschnitt zu erreichen. Es wird erwartet, dass der Rückwandplatinen-Auslastungskoseffizient-Sollwert annähernd neunzig Prozent ist.
    • 2. Die gesamte Anzahl der Chip-Ausgänge, die als Logik-Analysator-Kanäle markiert sind, sollte 864 (vierundfünfzig Mux-Chips 12 multipliziert mit acht SGRAM- 210 Anschlussstiften, von welcher die Gesamtheit mit zwei Logik-Boards 200 in einem Modul multipliziert wird) nicht überschreiten.
    • 3. Der vollständige Satz von EBM-Speicherinstanzen sollte in nicht mehr als vierundzwanzig Chips passen (zwölf für Module der halben Größe) (wie zuvor in Bezug auf 11 beschrieben, gibt es zwölf RAMs 208 auf einem Logik-Board 200 oder vierundzwanzig auf einem Paar von Logik-Boards) und die Anzahl der Logik-Chips 10, die für die EBM-Speicher-Zählungen entgegen der Gesamtheit von vierundsiebzig (siebenunddreißig für ein Modul halber Größe) benötigt werden.
    • 4. Die gesamte Anzahl von CPU-Zellinstanzen (d.h., die Anzahl von CPU-Instanzen des Benutzerdesigns) sollte zwei nicht überschreiten (eins für ein Modul halber Größe) (wie in Bezug auf 11 erläutert, ist ein Prozessor 206 pro Logik-Board 200 oder sind zwei auf einem Paar von Logik-Boards vorhanden).
    • 5. Zwei (einer für ein Modul halber Größe) der vierundsiebzig Chips 204 (siebenunddreißig für ein Modul halber Größe) können als Taktgenerator-Logik-Chips verwendet oder an die Mikroprozessorzellen angeschlossen sein. Falls Mikroprozessorzellen vorliegen sind keine Taktgenerator-Logik-Chips und umgekehrt vorhanden, da der CoSim-Logik-Chip 204 lediglich für eine Funktion zu einem Zeitpunkt verwendet wird. Jedoch ist es möglich, dass keiner von beiden vorhanden ist. In solch einem Fall können nur zweiundsiebzig (sechsunddreißig auf einem einzelnen Logik-Board 200) voll ausgelastete Logik-Chips 10 verwendet werden. Die beiden zusätzlichen CoSim-Logik-Chips 204 (einer für ein Modul halber Größe) können dann dazu verwendet werden, um weitere Benutzer-Logik zu implementieren, falls Cluster mit nicht mehr als einhundertzweiundsechzig I/O-Anschlussstiften verfügbar sind (siehe 11).
  • Nachdem die geeigneten Cluster identifiziert sind, werden die Cluster der vollständigen Größe weiter in zwei Emulations-Boards mit nicht mehr als 1868 (die Anzahl von Anschlussstiften auf dem Turbo-Anschluss 202) Zwischen-Board-Verbindungen unterteilt. Jedes Board darf nicht mehr als die Hälfte aller kritischen Cluster-Ressourcen (1804 eingehende und herausgehende Netze, zwölf EBM-Speicher, einen Mikroprozessor oder Taktgenerations-Logik-Chip 204, vierhundertzweiunddreißig Logik-Analysator-Kanäle, siebenunddreißig Logik-Chips 10, 204) aufweisen.
  • EBM-Kompilierungsschritt 1030 erzeugt die Speicherzelle-Instanzen, welche als Emulations-Speicherblöcke (EBM = emulation block memory) implementiert werden. Diese werden als spezielle Zellen erzeugt, um nicht in irgendeinen Logik-Cluster während der Chip-Unterteilung eingefügt zu werden. Ein Bewertungs-Unterprogramm schätzt ab, wie viele EBM-Chips 208 (siehe 11) ein bestimmter Satz von Speicherinstanzen benötigt. Dieses Unterprogramm wird von dem hierarchischen Unterteilungs-Planungsprogramm (HPP = hierarchical partition planning) 1014 (diese Verbindung ist nicht in 21 gezeigt) und Board-Unterteilungsprogramm 1028 aufgerufen, um genau einen Satz von Speicher-Instanzen, welche auf einem Board implementiert werden können, und die Anzahl von Logik-Chips 10, welche der Speicher-Steuer-Schaltkreis verbrauchen wird, zu bestimmen. Nachdem der Board-Unterteilungsprozess 1028 abgeschlossen ist, erzeugt der EBM-Speicher-Kompilierer 1030 einen Logik-Cluster, der jedem RAM-Chip 208 auf dem Logik- Board 200 zugeordnet ist. Alle Leitungen, die zu dem RAM-Chip 208 führen, werden als kritisch markiert, so dass das NGD-Ausgabeprogramm 1020 keine zeitmultiplexende Logik in diese einfügen wird. Sie weisen auch Eigenschaften auf, die ihre zugehörige Logik-Chip- 10 Anschlussstiftnummern aufweisen, so dass der Systemrouter 1032 korrekte I/O-Beschränkungen generieren kann. Die EBM Logik-Cluster weisen keine Untersuchungssignale auf und können keine Ereignisse generieren, da sie eine automatisch generierte Logik aufweisen, die nicht für den Benutzer zugänglich ist.
  • In einer bevorzugten Ausführungsform werden die EBM-Logik-Cluster vorkompiliert. Dies erlaubt die Platzierung und die Zeit zum Routen für diese Cluster einzusparen. Der EBM-Speicher-Kompilierer 1030 wurde vollkommen in dem US-Paten mit der Nummer 5,841,967 beschrieben.
  • Der Systemrouter 1032 markiert physikalische Drähte in den Logik-Chips 10, 204, den Mux-Chips 12 und den Logik-Boards 200 zu den Logik-Netzen (oder Signale in einem emulierten Design), Paaren von Logik-Netzen (beim Zwei-zu-eins-multiplexen) und zu den Gruppen aus vier Netzen (beim Vier-zu-eins-multiplexen). Dem folgend bestimmt er den Logik-Chip- 10 Anschlussstift und eine Phase des Zeitmultiplexens(TDM) zu jedem Signal, welches in jeden Logik-Chip 10 und 204 hinein- und herausgeht.
  • Es ist wichtig, wenn die System-Pfadplanung durchgeführt wird, den optimalen Pfad für die zeit-gemultiplexten Signale auszuwählen, um die Signalverzögerung zu minimieren. Der Algorithmus, um dieses durchzuführen ist der folgende:
  • 1. Zwei-zu-eins-zeitmultiplex (2-1 TDM):
  • Der optimale Pfad schaltet TDM-Phasen in jeden Mux-Chip 12 aber nicht auf dem Pfad von der physikalischen Netz-Quelle zu dem physikalischen Netz-Ziel. Beispiele für optimale Pfade sind:
    alpha/output/even-beta/input/even-beta/output/odd-alpha/input/odd,
    oder
    alpha/output/even-beta/input/even-beta/output/odd-muxbeta/input/odd-muxbeta/output/evenbeta/input/evenbeta/output/odd-alpha/input/odd
  • In dieser Beschreibung sind die Alpha-Chips den Logik-Chips 10 oder 204 äquivalent und die Beta-Chips sind den Mux-Chips 12 äquivalent. Dies bietet eine minimale Verzögerung von einem Zyklus zwischen den Logik-Chips 10 oder 204. Auf Begutachtung der Logik in der 3 und 4 hin, mag es den Anschein haben, dass die Verzögerung eine Hälfte eines Zyklus ausmacht. Es ist tatsächlich ein voller Zyklus, da ein Demultiplexer 34 in den Logik-Chips 10, 204 die Signale sehr nahe dem halben Ende eines Zyklus taktet, so dass das Signal, nachdem es empfangen ist, für den nächsten halben Zyklus in den Logik-Chips 10 oder 204 bleibt. Falls es dem Router 1032 misslingt einen optimalen Pfad zu finden, was bedeutet, dass in einer geeigneten Phase keine Mux-Ausgabe verfügbar ist, oder in einer geeigneten Phase keine Logik-Chip- 10 oder 204 Eingabe verfügbar ist, wird das Signal um einen weiteren halben Zyklus verzögert. Der Router versucht die Fehlschläge nicht im gleichen Netz anzusammeln, falls es überhaupt möglich ist. Kritische Netze werden nicht gemultiplext, um ihre Verzögerung zu minimieren.
  • 2. Vier-zu-eins-Zeitmultiplexen (4-1 TDM):
  • Jedes physikalische Netz weist immer einen Inout-Anschlussstift (IIOO-Sequenz) und einen Outin-Anschlussstift (OOII-Sequenz) auf. Nochmals schaltet der optimale Pfad eine Zeitmultiplex-Phase (TDM) im Mux-Chip 12, aber nicht auf dem Pfad von einer physikalische Netz-Quelle zu einem physikalischen Netz-Ziel. Beispiele für optimale Pfade sind:
    alpha/OI/O1-beta/IO/I1-beta/OI/O2-alpha/IO/2alpha/OI/O2-beta/IOI2-beta/IO/O3-alpha/OI/I3alpha/OI/O1-beta/IO/I1- beta/OI/O2-muxbeta/IO/I2-muxbeta/IO/O3-beta/OI/I3-beta/IO/O4-alpha/OI/I4
  • Dies ergibt eine minimale Verzögerung von einem halben Zyklus von alpha zu alpha. Jedoch weist ein halber Zyklus des Vier-zu-eins-zeitmultiplexens (4-1 TDM) die gleiche Dauer wie ein Zyklus des Zwei-zu-eins-zeitmultiplexens (2-1 TDM) auf. Folglich geht keine Geschwindigkeit beim Vier-zu-einszeitmultiplexen (4-1 TDM) im Vergleich zu dem Zwei-zu-eins-zeitmultiplexen (2-1 TDM) verloren, unter der Annahme, dass alle Netze optimal geroutet wurden. Jedoch bedeuten Fehler (d.h., der Fehlschlag einen optimalen Pfad zu finden, wie oben erläutert) beim Vier-zu-eins-zeitmultiplex-(4-1 TDM)Routenplanen schwerwiegendere Konsequenzen als beim Zwei-zu-eins-zeitmultiplex-(2-1 TDM)Routenplanen. Beispielsweise wird der Pfad:
    alpha/OI/O1-beta/IO/I1-beta/OI/O1-alpha/IO/I1 das Signal mit 1,25 Vier-zu-eins-zeitmultiplex-(4-1 TDM)Zyklen (oder 2,5 Zwei-zu-eins-zeitmultiplex-(2-1 TDM)Zyklen) verzögern, was zweieinhalb mal schlechter ist als eine optimale Verzögerung. In jeder Etappe durch einen Mux-Chip 12 kann der Router 1032 mit 0, 1/4, 1/2, oder 3/4 eines Vier-zu-eins-zeitmultiplex-(TDM)Zyklus fehlschlagen, abhängig davon welches Eingans-Ausgangs-Paar der Router auswählt. Der Router 1032 unternimmt jeden Versuch so wenig wie möglich fehlzuschlagen. Deshalb sollten kritische Netze nicht gemultiplext werden, um ihre Verzögerung zu minimieren.
  • Einige Logik-Chips 10 oder 204 weisen Eingans-/Ausgangs-Netze auf, die an bestimmten Anschlussstiften eingerastet sind. Beispiele sind die Mux-Taktsignale (MUXCLK) 44, die Spurtakt-Signale 2002, die Verbindungen zwischen dem Co-Simulations-Logik-Chip 204 und einem Prozessor 206 (siehe 11), die Verbindungen zwischen der Speichersteuer-Vorrichtung der Logik-Chips 10 und den RAM-Chips 208, die Ereignissignal-Ausgänge 236 usw. Diese Verbindungen müssen nicht geroutet aber müssen in Anschlussstift-Randbedingungsdaten der Logik-Chips 10, 204 integriert werden.
  • Zusätzliches Programmieren wird ebenfalls für einen Taktverteilungs-Schaltkreis (Mux-Chip 12) auf dem Steuermodul 600 (in 19 gezeigt) benötigt. Dies ist ein Teil eines Takt-Schaltkreises, der dazu verwendet wird, nicht mehr als acht Benutzertakte, die die Logikmodule erreichen, auszuwählen.
  • NGD-Aktualisierungsprogramm 1034 stellt die endgültige parallele Unterteilungs-, Platzierungs- und Route-(PPR)Software 1036 mit Informationen über tatsächliche Anschlussstift-I/O-Belegungen, die vom Systemrouter 1032 erzeugt werden, bereit. Für nicht zeit-gemultiplexte Designs ist dies bloß eine Zuordnung der Signale zu den I/O-Pads. Für zeit-gemultiplexte Designs wird ebenfalls TDM-Logik auf der Peripherie der Logik-Chips 10, 204 und den Mux-Chips 12 hinzugefügt.
  • Letztes paralleles Unterteilungs-, Platzierungs- und Route-(PPR)Programm 1036 gibt das PPA-Programm in einem schrittweisen Modus aus, um die I/O-Anschlussstifte zur Peripherie des Chips zurück zu routen. Wie früher dargelegt wurde, ist das PPA-Programm von der Xilinx Corporation erhältlich. Das Zurückrouten ändert die Konfigurationsdateien der Logik-Chips 10, 204, die im vorhergehenden PPA-Schritt 1022 erzeugt wurden, und legt den Anschlussstift so fest, als wäre er vom Systemroute-Schritt 1032 ermittelt worden.
  • Somit wurden ein bevorzugtes Verfahren und eine Vorrichtung zum Emulieren, Überprüfen und Analysieren eines integrierten Schaltkreises beschrieben. Obwohl die Ausführungsformen und Anwendungen dieser Erfindung gezeigt und erläutert wurden, was für den Fachmann offensichtlich ist, sind viel mehr Ausführungsformen und Anwendungen möglich, ohne von den hierin offengelegten erfinderischen Konzepten abzuweichen. Die Erfindung soll nicht, außer durch die angehängten Ansprüche beschränkt werden.

Claims (8)

  1. Logik-Analysator, integriert in ein Hardware-Logik Emulations-System, dass ein Logik-Design emuliert, wobei das Logik-Emulations-System eine Mehrzahl an umprogrammierbaren Logik-Chips (10) und eine Mehrzahl an umprogrammierbaren Verbindungs-Chips (12) aufweist, wobei die Mehrzahl an umprogrammierbaren Logik-Chips (10) mittels der Mehrzahl an umprogrammierbaren Verbindungs-Chips (12) miteinander verbunden werden können, wobei das Logik-Design kombinatorische Logik-Elemente und sequentielle Logik-Elemente aufweist, wobei der Logik-Analysator aufweist: Mindestens eine Scan-Kette, programmiert in jeden der Mehrzahl an umprogrammierbaren Logik-Chips (10), wobei die mindestens eine Scan-Kette mindestens ein Flip Flop aufweist, wobei die mindestens eine Abtast-Kette programmiert ist in jeden der Mehrzahl an umprogrammierbaren Logik-Chips (10), die programmierbar verknüpfbar mit Ausgängen einer ausgewählten Teilmenge der sequentieller Logik-Elemente sind; mindestens eine Speicher-Einrichtung (210), wobei die mindestens eine Speicher-Einrichtung (210) mit jeder der mindestens einen Abtast-Kette verbunden ist, die mittels der Mehrzahl an umprogrammierbaren Verbindungs-Chips (12) in jeden der Mehrzahl an umprogrammierbaren Logik-Chips (10) programmiert ist, und welcher Daten der sequentiellen Logik-Elemente des Logik-Designs speichert; und ein Steuer-Schaltkreis (600), wobei der Steuer-Schaltkreis (600) mit der Mehrzahl an umprogrammierbaren Logik-Chips (10) kommuniziert, wobei der Steuer-Schaltkreis (600) Logik-Analysator Takt-Signale und Trigger-Signale generiert, wobei die Analysator Takt-Signale die mindestens eine Scan-Kette takten, wobei die Trigger-Signale generiert werden, wenn eine vorbestimmte Kombination von Signalen in der Mehrzahl der umprogrammierbaren Logik-Chips (10) auftritt.
  2. Logik-Analysator gemäß Anspruch 1 ferner aufweisend ein Mittel zum Ermitteln von Zuständen der kombinatorischen Logik-Elemente im Logik-Design aus Daten die in der mindestens einen Speicher-Einrichtung gespeichert sind.
  3. Logik-Analysator gemäß Anspruch 1, wobei jeder der Mehrzahl an umprogrammierbaren Logik-Chips (10) Field Programmable Gate Arrays aufweist.
  4. Logik-Analysator gemäß Anspruch 3, wobei jeder der mindestens einen Scan-Kette, welche in jeden der Mehrzahl an umprogrammierbaren Logik-Chips (10) programmiert ist, in konfigurierbare Logik-Zellen innerhalb der Field Programmable Gate Arrays programmiert ist.
  5. Logik-Analysator gemäß Anspruch 4, wobei jeder der mindestens einen Scan-Kette, welche in jeden der Mehrzahl an umprogrammierbaren Logik-Chips (10) programmiert ist, ist programmierbar verbunden mit den Ausgängen der ausgewählten Teilmenge der sequentiellen Logik-Elemente des Logik-Designs unter Verwendung von konfigurierbaren Routing-Ressourcen innerhalb der Field Programmable Gate Arrays.
  6. Logik Analysator gemäß Anspruch 1, wobei die mindestens eine Speicher-Einrichtung (210) mit der mindestens einen Scan-Kette durch die Mehrzahl an umprogrammierbaren Verbindungs-Chips kommuniziert.
  7. Logik Analysator gemäß Anspruch 1, wobei die umprogrammierbaren Logik-Chips (10) ein darin implementierte Ereignis-Logik aufweisen, die, die Kombinationen an vorbestimmten Signalen berechnet.
  8. Logik-Analysator gemäß Anspruch 3, wobei die Mehrzahl der Field Programmable Gate Arrays eine darin programmierte Ereignis-Logik aufweisen, welche die Kombinationen an vorbestimmten Signalen berechnet.
DE69826859T 1997-05-30 1998-05-18 Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem Expired - Lifetime DE69826859T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US865657 1997-05-30
US08/865,657 US5943490A (en) 1997-05-30 1997-05-30 Distributed logic analyzer for use in a hardware logic emulation system
PCT/US1998/010312 WO1998054649A1 (en) 1997-05-30 1998-05-18 Distributed logic analyzer for use in a hardware logic emulation system

Publications (2)

Publication Number Publication Date
DE69826859D1 DE69826859D1 (de) 2004-11-11
DE69826859T2 true DE69826859T2 (de) 2005-12-29

Family

ID=25345974

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69826859T Expired - Lifetime DE69826859T2 (de) 1997-05-30 1998-05-18 Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem

Country Status (10)

Country Link
US (2) US5943490A (de)
EP (1) EP0985175B1 (de)
JP (1) JP4225583B2 (de)
KR (1) KR20010013191A (de)
AT (1) ATE278986T1 (de)
CA (1) CA2291257A1 (de)
DE (1) DE69826859T2 (de)
IL (1) IL132984A0 (de)
TW (1) TW424199B (de)
WO (1) WO1998054649A1 (de)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687865B1 (en) 1998-03-25 2004-02-03 On-Chip Technologies, Inc. On-chip service processor for test and debug of integrated circuits
US6289400B1 (en) * 1998-04-15 2001-09-11 Infineon Technologies Ag Electrical control device with configurable control modules
US6202042B1 (en) * 1998-11-09 2001-03-13 International Business Machines Corporation Hardware simulator instrumentation
US6195629B1 (en) * 1998-11-09 2001-02-27 International Business Machines Corporation Method and system for selectively disabling simulation model instrumentation
US7079490B1 (en) * 1998-12-03 2006-07-18 Intel Corporation Integrated circuit with trace analyzer
US6434733B1 (en) * 1999-03-24 2002-08-13 Synopsys, Inc. System and method for high-level test planning for layout
US6470478B1 (en) 1999-06-29 2002-10-22 International Business Machines Corporation Method and system for counting events within a simulation model
US6947882B1 (en) * 1999-09-24 2005-09-20 Mentor Graphics Corporation Regionally time multiplexed emulation system
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6262594B1 (en) * 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US7240303B1 (en) 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US7072818B1 (en) * 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US6931572B1 (en) 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry
US7065481B2 (en) 1999-11-30 2006-06-20 Synplicity, Inc. Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer
US6581191B1 (en) * 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US6823497B2 (en) 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
EP1139108B1 (de) * 2000-03-02 2006-03-22 Texas Instruments Incorporated Abtastschnittstelle mit Zeitmultiplexmerkmal zur Signalüberlagerung
US6859897B2 (en) 2000-03-02 2005-02-22 Texas Instruments Incorporated Range based detection of memory access
US6961691B1 (en) * 2000-03-30 2005-11-01 Mentor Graphics Corporation Non-synchronized multiplex data transport across synchronous systems
DE10196175T1 (de) * 2000-05-11 2003-04-17 Quickturn Design Systems Inc Emulations-Schaltkreis mit einem Haltezeit-Algorithmus, Logikanalysierer und Shadow-Speicher
US6697957B1 (en) 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
US6437713B1 (en) * 2000-10-06 2002-08-20 Xilinx, Inc. Programmable logic device having amplitude and phase modulation communication
US7222315B2 (en) 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
US6978231B2 (en) 2000-12-05 2005-12-20 Derek Edward Williams Embedded hardware description language instrumentation
US7092864B2 (en) * 2000-12-29 2006-08-15 International Business Machines Corporation Signal override for simulation models
US7039574B1 (en) * 2000-12-29 2006-05-02 International Business Machines Corporation Naming and managing simulation model events
US6920418B2 (en) 2000-12-30 2005-07-19 International Business Machines Corporation Detecting events within simulation models
US20020128809A1 (en) * 2000-12-30 2002-09-12 International Business Machines Corporation Randomized simulation model instrumentation
US6941257B2 (en) * 2000-12-30 2005-09-06 International Business Machines Corporation Hierarchical processing of simulation model events
US7076595B1 (en) * 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
KR100794916B1 (ko) * 2001-09-14 2008-01-14 양세양 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법
WO2003032159A2 (en) * 2001-10-11 2003-04-17 Altera Corporation Error detection on programmable logic resources
US7130788B2 (en) 2001-10-30 2006-10-31 Mentor Graphics Corporation Emulation components and system including distributed event monitoring, and testing of an IC design under emulation
WO2003038613A1 (en) * 2001-10-30 2003-05-08 Mentor Graphics Corporation Emulating components and system including distributed emulation methods
US7305633B2 (en) * 2001-10-30 2007-12-04 Mentor Graphics Corporation Distributed configuration of integrated circuits in an emulation system
US7035787B2 (en) 2001-10-30 2006-04-25 Mentor Graphics Corporation Emulation components and system including distributed routing and configuration of emulation resources
US7359847B2 (en) * 2001-11-30 2008-04-15 International Business Machines Corporation Tracking converage results in a batch simulation farm network
US7827510B1 (en) 2002-06-07 2010-11-02 Synopsys, Inc. Enhanced hardware debugging with embedded FPGAS in a hardware description language
JP3610978B2 (ja) * 2002-06-13 2005-01-19 株式会社村田製作所 モジュール試験装置
KR100423891B1 (ko) * 2002-06-21 2004-03-22 삼성전자주식회사 트레이스 모듈을 구비한 마이크로프로세서
US20040078656A1 (en) * 2002-06-26 2004-04-22 Mike Ryken Method of saving/restoring processor state after entering/exiting debug mode
US6973631B2 (en) * 2002-07-18 2005-12-06 Incentia Design Systems Corp. Scan insertion with bypass login in an IC design
US7127695B2 (en) * 2002-07-18 2006-10-24 Incentia Design Systems Corp. Timing based scan chain implementation in an IC design
US7235316B2 (en) * 2002-08-07 2007-06-26 Mti Microfuel Cells Inc. Integrated heat management of electronics and fuel cell power system
EP1403652A1 (de) * 2002-09-30 2004-03-31 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Prüfung der Abbildung/Implementierung eines Modells eines logischen Schaltkreises auf einen/in einem Hardware-Emulator
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
JP2004234530A (ja) * 2003-01-31 2004-08-19 Fujitsu Ten Ltd マイクロコンピュータのロジック開発装置
US20040228411A1 (en) * 2003-05-12 2004-11-18 Sony Corporation Method and system for decoder clock control in presence of jitter
US8099273B2 (en) * 2003-06-05 2012-01-17 Mentor Graphics Corporation Compression of emulation trace data
US7184946B2 (en) * 2003-06-19 2007-02-27 Xilinx, Inc. Co-simulation via boundary scan interface
US6952813B1 (en) * 2003-07-30 2005-10-04 Xilinx, Inc. Method and apparatus for selecting programmable interconnects to reduce clock skew
US20050086042A1 (en) * 2003-10-15 2005-04-21 Gupta Shiv K. Parallel instances of a plurality of systems on chip in hardware emulator verification
DE10355187B4 (de) * 2003-11-26 2006-05-24 Infineon Technologies Ag Verfahren und Vorrichtung zur Timinganalyse einer Schaltung
US7738399B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems Inc. System and method for identifying target systems
US7739093B2 (en) * 2004-06-01 2010-06-15 Quickturn Design System, Inc. Method of visualization in processor based emulation system
US7412544B2 (en) 2004-06-18 2008-08-12 International Business Machines Corporation Reconfigurable USB I/O device persona
US7368941B2 (en) * 2005-02-23 2008-05-06 Cswitch Corporation Dedicated logic cells employing sequential logic and control logic functions
US7358765B2 (en) * 2005-02-23 2008-04-15 Cswitch Corporation Dedicated logic cells employing configurable logic and dedicated logic functions
US7353162B2 (en) * 2005-02-11 2008-04-01 S2C, Inc. Scalable reconfigurable prototyping system and method
US8205186B1 (en) 2005-04-11 2012-06-19 Synopsys, Inc. Incremental modification of instrumentation logic
US20060247909A1 (en) * 2005-04-27 2006-11-02 Desai Madhav P System and method for emulating a logic circuit design using programmable logic devices
US7751436B2 (en) * 2005-05-24 2010-07-06 Sony Corporation System and method for dynamically establishing PLL speed based on receive buffer data accumulation for streaming video
JP2007026170A (ja) * 2005-07-19 2007-02-01 Matsushita Electric Ind Co Ltd 半導体集積回路の自動レイアウト方法、自動レイアウトプログラム、および自動レイアウト装置
US7523297B1 (en) * 2005-09-16 2009-04-21 Sun Microsystems, Inc. Shadow scan decoder
US7600168B2 (en) * 2005-12-26 2009-10-06 Prolific Technology Inc. Apparatus with programmable scan chains for multiple chip modules and method for programming the same
US7739552B2 (en) * 2006-02-17 2010-06-15 Lanning Eric J Tapping a memory card
WO2007096376A1 (en) * 2006-02-21 2007-08-30 Mentor Graphics Corporation Communication scheme between programmable sub-cores in an emulation environment
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
KR101282963B1 (ko) * 2006-05-12 2013-07-08 삼성전자주식회사 에뮬레이션 시스템 및 그 방법
US7725304B1 (en) * 2006-05-22 2010-05-25 Cadence Design Systems, Inc. Method and apparatus for coupling data between discrete processor based emulation integrated chips
CN100410887C (zh) * 2006-09-18 2008-08-13 中国航天时代电子公司第七七一研究所 基于信号类别的分布式仿真测试系统体系的构建方法
US7606698B1 (en) * 2006-09-26 2009-10-20 Cadence Design Systems, Inc. Method and apparatus for sharing data between discrete clusters of processors
US7904288B1 (en) * 2006-11-06 2011-03-08 Cadence Design Systems, Inc. Hardware emulator having a variable input emulation group
US20080148214A1 (en) * 2006-12-15 2008-06-19 Yancey Jerry W Method and system for configuring FPGAs from VHDL code with reduced delay from large multiplexers
US8234624B2 (en) 2007-01-25 2012-07-31 International Business Machines Corporation System and method for developing embedded software in-situ
US8296121B2 (en) * 2007-04-25 2012-10-23 Cadence Design Systems, Inc. Method and apparatus for controlling power in an emulation system
US7904859B2 (en) * 2007-05-09 2011-03-08 Synopsys, Inc. Method and apparatus for determining a phase relationship between asynchronous clock signals
US8756557B2 (en) * 2007-05-09 2014-06-17 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US7930165B2 (en) * 2008-02-07 2011-04-19 Accemic Gmbh & Co. Kg Procedure and device for emulating a programmable unit providing system integrity control
US20090259457A1 (en) * 2008-04-14 2009-10-15 Mentor Graphics Corporaton Trace Routing Network
KR101524828B1 (ko) * 2008-04-23 2015-06-02 삼성전자주식회사 에뮬레이션 시스템 및 그 구동 방법
US8327198B2 (en) * 2009-08-14 2012-12-04 Intel Corporation On-die logic analyzer for semiconductor die
US9170901B2 (en) 2009-08-18 2015-10-27 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8745447B2 (en) * 2009-08-18 2014-06-03 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8473887B2 (en) * 2011-03-16 2013-06-25 Oracle America, Inc. Event scheduler for an electrical circuit design to account for hold time violations
CN102957424B (zh) * 2011-08-22 2016-08-24 上海华虹集成电路有限责任公司 用于ISO14443 TypeA协议的凹槽信号恢复电路
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
FR2991476B1 (fr) * 2012-06-01 2022-04-22 Flexras Tech Prototypage multi-fpga d'un circuit asic
US9405877B1 (en) 2014-12-22 2016-08-02 Cadence Design Systems, Inc. System and method of fast phase aligned local generation of clocks on multiple FPGA system
US9495492B1 (en) 2015-01-05 2016-11-15 Cadence Design Systems, Inc. Implementing synchronous triggers for waveform capture in an FPGA prototyping system
US9294094B1 (en) 2015-01-08 2016-03-22 Cadence Design Systems, Inc. Method and apparatus for fast low skew phase generation for multiplexing signals on a multi-FPGA prototyping system
US10116557B2 (en) * 2015-05-22 2018-10-30 Gray Research LLC Directional two-dimensional router and interconnection network for field programmable gate arrays, and other circuits and applications of the router and network
US10860763B1 (en) 2015-09-24 2020-12-08 Cadence Design Systems, Inc. Data routing and multiplexing architecture to support serial links and advanced relocation of emulation models
US9910810B1 (en) * 2015-10-23 2018-03-06 Cadence Design Systems, Inc. Multiphase I/O for processor-based emulation system
US10068041B2 (en) * 2016-02-01 2018-09-04 King Fahd University Of Petroleum And Minerals Multi-core compact executable trace processor
US10587534B2 (en) 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US10841246B2 (en) 2017-08-30 2020-11-17 Arista Networks, Inc. Distributed core switching with orthogonal fabric card and line cards
TWI665870B (zh) * 2018-02-01 2019-07-11 緯穎科技服務股份有限公司 電子系統及信號切換電路
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11573883B1 (en) * 2018-12-13 2023-02-07 Cadence Design Systems, Inc. Systems and methods for enhanced compression of trace data in an emulation system
US20200195586A1 (en) * 2018-12-18 2020-06-18 Arista Networks, Inc. Network devices with multiple switch cards
US10986423B2 (en) 2019-04-11 2021-04-20 Arista Networks, Inc. Network device with compact chassis
TWI698088B (zh) * 2019-08-22 2020-07-01 瑞昱半導體股份有限公司 應用於多個操作模式的電路
US10902175B1 (en) 2019-09-11 2021-01-26 International Business Machines Corporation Cross-hierarchical block pin placement
US11266007B2 (en) 2019-09-18 2022-03-01 Arista Networks, Inc. Linecard system using riser printed circuit boards (PCBS)
KR102319160B1 (ko) * 2020-07-14 2021-11-01 주식회사 엑시콘 반도체 디바이스 테스트 시스템
KR102471771B1 (ko) * 2020-11-20 2022-11-29 주식회사 에스디에이 고속 신호 특성 검증을 위한 지능형 프로브 카드

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3149460C2 (de) * 1981-12-14 1984-04-12 Rohde & Schwarz GmbH & Co KG, 8000 München Logikanalysator
US4924468A (en) * 1987-11-30 1990-05-08 Kontron Holding Ag Logic analyzer
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
DE68929518T2 (de) * 1988-10-05 2005-06-09 Quickturn Design Systems, Inc., Mountain View Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
US5329470A (en) * 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
US5109353A (en) * 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
US5377124A (en) * 1989-09-20 1994-12-27 Aptix Corporation Field programmable printed circuit board
US5352123A (en) * 1992-06-08 1994-10-04 Quickturn Systems, Incorporated Switching midplane and interconnection system for interconnecting large numbers of signals
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5483178A (en) * 1993-03-29 1996-01-09 Altera Corporation Programmable logic device with logic block outputs coupled to adjacent logic block output multiplexers
SE9303538L (sv) * 1993-10-28 1994-10-17 Skf Ab Flerradigt sfäriskt rullager
TW253031B (de) * 1993-12-27 1995-08-01 At & T Corp
US5550843A (en) * 1994-04-01 1996-08-27 Xilinx, Inc. Programmable scan chain testing structure and method
US5630048A (en) * 1994-05-19 1997-05-13 La Joie; Leslie T. Diagnostic system for run-time monitoring of computer operations
WO1996013902A1 (en) * 1994-11-01 1996-05-09 Virtual Machine Works, Inc. Programmable multiplexing input/output port
US5659716A (en) * 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5649176A (en) * 1995-08-10 1997-07-15 Virtual Machine Works, Inc. Transition analysis and circuit resynthesis method and device for digital circuit modeling
US5754827A (en) * 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US5777489A (en) * 1995-10-13 1998-07-07 Mentor Graphics Corporation Field programmable gate array with integrated debugging facilities
US5574388A (en) * 1995-10-13 1996-11-12 Mentor Graphics Corporation Emulation system having a scalable multi-level multi-stage programmable interconnect network
US5790832A (en) * 1996-04-23 1998-08-04 Mentor Graphics Corporation Method and apparatus for tracing any node of an emulation
US5841967A (en) * 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation

Also Published As

Publication number Publication date
US20020177990A1 (en) 2002-11-28
DE69826859D1 (de) 2004-11-11
JP2002501646A (ja) 2002-01-15
TW424199B (en) 2001-03-01
CA2291257A1 (en) 1998-12-03
EP0985175B1 (de) 2004-10-06
EP0985175A1 (de) 2000-03-15
JP4225583B2 (ja) 2009-02-18
IL132984A0 (en) 2001-03-19
WO1998054649A1 (en) 1998-12-03
US5943490A (en) 1999-08-24
KR20010013191A (ko) 2001-02-26
ATE278986T1 (de) 2004-10-15

Similar Documents

Publication Publication Date Title
DE69826859T2 (de) Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem
EP0983562B1 (de) Emulationssytem mit zeitmultiplexverbindung
US6694464B1 (en) Method and apparatus for dynamically testing electrical interconnect
JP3281352B2 (ja) 電気的に再構成可能なゲートアレイを用いて論理構成を構築する方法
DE69835106T2 (de) Eingebetteter logischer Analysator
US5452231A (en) Hierarchically connected reconfigurable logic assembly
DE60128014T2 (de) Intelligenter Prüfadapter
DE602004003475T2 (de) Testen von integrierten schaltungen
DE112019004358T5 (de) Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen
EP1430320B1 (de) Elektronischer baustein und verfahren zu dessen qualifizierungsmessung
WO2002041167A2 (en) Method and apparatus for dynamically testing electrical interconnect

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition