DE69737757T2 - System und Verfahren zur Speicher-Emulation - Google Patents

System und Verfahren zur Speicher-Emulation Download PDF

Info

Publication number
DE69737757T2
DE69737757T2 DE69737757T DE69737757T DE69737757T2 DE 69737757 T2 DE69737757 T2 DE 69737757T2 DE 69737757 T DE69737757 T DE 69737757T DE 69737757 T DE69737757 T DE 69737757T DE 69737757 T2 DE69737757 T2 DE 69737757T2
Authority
DE
Germany
Prior art keywords
memory
address
emulation
circuit
bits
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
DE69737757T
Other languages
English (en)
Other versions
DE69737757D1 (de
Inventor
John E. Soquel Chilton
Tony R. Scotts Valley Sarno
Ingo Sunnyvale Schaefer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Application filed by Quickturn Design Systems Inc filed Critical Quickturn Design Systems Inc
Publication of DE69737757D1 publication Critical patent/DE69737757D1/de
Application granted granted Critical
Publication of DE69737757T2 publication Critical patent/DE69737757T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

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

Description

  • Hintergrund der Erfindung
  • a. Bereich der Erfindung
  • Diese Erfindung betrifft den Bereich der Schaltkreisemulationssysteme. Insbesondere betrifft die Erfindung ein System zum Emulieren von Speicherschaltkreisdesigns innerhalb eines Emulationssystems.
  • b. Eine Beschreibung des Standes der Technik
  • So wie Schaltkreisdesigns fortfahren, an Geschwindigkeit und Komplexität zuzunehmen, wird das Testen der Entwicklung von Schaltkreisdesigns an verschiedenen Stadien der Entwicklung sogar kritischer. Logikemulatoren testen komplexe Schaltkreisdesigns, während die Designs entwickelt werden. Logikemulatoren können softwarekonfigurierbare Hardware enthalten, welche die Funktionen des Schaltkreisdesigns emuliert. Das Schaltkreisdesign ist durch einen Datensatz spezifiziert, der die Funktion und das Verhalten des Schaltkreisdesigns beschreibt.
  • Speicherschaltkreisdesigns sind eine Komponente von Schaltkreisdesigns, die emuliert werden muss. Schaltkreisdesigns können viele unterschiedliche Arten von Speicherschaltkreisdesigns enthalten, wie zum Beispiel einen wahlfreien Zugriffsspeicher (RAM) des Einfachport-Typs und Videospeicher mit wahlfreiem Zugriff (VRAM) des Multiport-Typs. Die Größe dieser Speicherschaltkreisdesigns kann ferner in der Höhe und der Breite variieren. Zum Beispiel kann ein Speicherschaltkreisdesign 3072 Einträge (3k hoch) haben, während jeder Eintrag vierundzwanzig Bits breit sein kann. Ein anderes Schaltkreisdesign kann 128 Einträge hoch sein, während jeder Eintrag 128 Bits breit sein kann.
  • In früheren Logikemulatoren hatten Designer ihre eigenen Arbeitsversionen des Speicherschaltkreisdesigns zu verdrahten. Dann koppelten die Designer den verdrahteten Speicherschaltkreis mit dem Logikemulator. Dies ist aus einer Anzahl von Gründen unerwünscht. Erstens kann ein Designer die Softwarebeschreibung des Schaltkreisdesigns nicht einfach direkt in dem Logikemulator verwenden, weil die Speicherschaltkreisdesigns entfernt oder auf andere Weise deaktiviert werden müssen. Zweitens müssen die Designer die physikalischen Speicherschaltkreise bauen, um den Emulator zu koppeln. Dies ist eine zeitverzehrende, fehlerträchtige und kostspielige Prozedur, die die Möglichkeit des Designers, auf einfache Weise neue Speicherschaltkreisdesigns auszuprobieren, einschränkt. Drittens muss der Logikemulator direkt mit der verdrahteten Version des Speicherschaltkreisdesigns gekoppelt sein. Dies fügt dem Emulator Unkosten hinzu und bindet Hardware-Schnittstellen-Resourcen, die verwendet werden könnten, den Logikemulator mit anderen externen Schaltkreisen zu koppeln.
  • Das US-Patent 5 448 522 beschreibt ein System, das eine Multiport-Speicherschaltkreis-Emulation unter Verwendung von Tag-Registern unterstützt. Es werden viele Kopien des Speicherarrays geschaffen, um so viele Leseports und Schreibports zu implementieren wie Multiportspeicherschaltkreise implementiert werden. Dies hat jedoch eine Anzahl von Nachteilen. Zum Beispiel, weil viele Vervielfachungen des Speicherarrays benötigt werden, werden große Mengen an Speicher in dem Emulator verwendet. Außerdem müssen Einspeicherungen in ein Duplikat des Speicherarrays aufgespürt und in den anderen Duplikation des Speicherarrays wiedergegeben werden. Dies erfordert zusätzliche, in dem Speicherarray zu verwendende Logik.
  • Beispiele von Emulationssystemen werden in Maliniak L.: "LOGIC EMULATOR MEETS THE DEMANDS OF CPU DESIGNERS", ELECTRONIC DESIGN, US, PENTON PUBLISHING, CLEVELAND, OH, Band 41, Nr. 7, 1. April 1993 (1993-04-01), Seiten 36-38, 40, und in US 5 025 364 A beschrieben.
  • Was daher benötigt wird, ist eine verbesserter Logikemulator.
  • Eine Zusammenfassung der Erfindung
  • Die Erfindung ist in Anspruch 1 bzw. in Anspruch 12 definiert. Besondere Ausführungsbeispiele der Erfindung werden in den abhängigen Ansprüchen dargelegt.
  • Ein System zum Emulieren von Speicherschaltkreisdesigns wird beschrieben. Das System emuliert viele Speicherschaltkreisdesigns simultan. Die Adressräume der Speicherschaltkreisdesigns werden auf den Adressraum des Emulationsspeichers des Systems abgebildet (mapped). Die Adressräume werden auch über viele Zeitperioden hin abgebildet. Daher kann das System Speicherschaltkreise mit vielen Ports emulieren.
  • Ein System und ein Verfahren zum Emulieren von Speicherschaltkreisdesigns wird beschrieben. Das System enthält einen Zeitscheibenlogikemulator. Der Zeitscheibenlogikemulator emuliert die in einem Zyklus des Zieldesigns ausgeführten Funktionen durch Emulieren von Teilen der Funktionen in einem Satz von Zeitscheiben. Das heißt, ein Satz von Zeitscheiben repräsentiert einen einzelnen Taktzyklus in dem Zieldesign.
  • Das System emuliert viele unterschiedliche Arten von in dem Zieldesign enthaltenen Speicherdesigns. Das System enthält einen Emulationsspeicher. Die Speicherdesigns werden mittels eines programmierbaren Adresserzeugungsblocks auf den Emulationsspeicher abgebildet. Für eine gegebene Zeitscheibe erzeugt der programmierbare Adresserzeugungsblock eine Adresse, die einen Teil einer Speicherdesignadresse oder die ganze Speicherdesignadresse auf eine Emulationsspeicheradresse abbildet. Der programmierbare Adresserzeugungsblock erlaubt vielen Speicherdesigns, auf einen einzelnen Emulationsspeicher abgebildet zu werden, und erlaubt einem einzelnen Speicherdesign, auf viele Emulationsspeicher abgebildet zu werden. Daher kann das System über viele Zeitscheiben viele unterschiedliche Arten von Speichern emulieren.
  • Obgleich in der Beschreibung und in den Figuren viele Einzelheiten enthalten sind, ist die Erfindung durch den Rahmen der Ansprüche definiert. Nur in diesen Ansprüchen gefundene Beschränkungen gelten für die Erfindung.
  • Kurze Beschreibung der Zeichnungen
  • Die Figuren veranschaulichen die Erfindung auf beispielhafte und nicht auf einschränkende Art und Weise. Gleiche Bezugszeichen bezeichnen ähnliche Elemente.
  • 1 zeigt ein Emulationssystem mit Emulationsspeicherschaltkreisen.
  • 2 zeigt einen Emulationsspeicherschaltkreis zur Verwendung in dem Emulationssystem.
  • 3 zeigt ein Ausführungsbeispiel eines Verfahrens zum Emulieren eines Schaltkreisdesigns, das Speicherschaltkreisdesigns aufweist.
  • 4 zeigt ein Ausführungsbeispiel eines Verfahrens zum Abbilden von Speicherschaltkreisdesigns auf die Emulationsspeicher.
  • 5 zeigt ein Beispiel des Abbildens von Speicherschaltkreisdesigns auf einen Emulationsspeicheradressraum.
  • Die Beschreibung
  • a. Ein Emulationssystem
  • 1 zeigt ein Emulationsschaltkreisdesign, das unterschiedliche Arten von Speicherdesigns enthält. Das Emulationssystem enthält ein Computersystem 100 und einen Logikemulator 150.
  • Das Computersystem 100 enthält einen Prozessor 110, einen Computerspeicher 105, und eine externe Schnittstelle 120, welche alle zusammengekoppelt sind. Der Prozessor 110 ist zum Ausführen von Prozessen, und zum Steuern des Computerspeichers 105 und der externen Schnittstelle 120. Der Computerspeicher 105 speichert Programme und Daten. Die externe Schnittstelle 120 kommuniziert mit dem Logikemulator 150. Die Daten enthalten ein Schaltkreisdesign 190. Das Schaltkreisdesign 190, auch bekannt als das Zieldesign, repräsentiert einen durch den Logikemulator zu emulierenden Schaltkreis 150. In einem Ausführungsbeispiel enthält das Schaltkreisdesigns 190 eine VHDL-Beschreibung eines Schaltkreises. In einem anderen Ausführungsbeispiel enthält das Schaltkreisdesign 190 eine Verilog-Beschreibung eines Schaltkreises. Wichtigerweise enthält das Schaltkreisdesign 190 eine Anzahl von Speicherschaltkreisdesigns 195. Die Speicherschaltkreisdesigns 195 können unterschiedlichen Typs sein. Beispielsweise können die Speicherschaltkreisdesigns 195 einfache RAM-Speicher-Designs, Cache-Speicher-Designs vom Multiport-Typ, EEPROMs und Registerdateien enthalten. Die Vielfalt und Anzahl von Speicherdesigns, die in dem Schaltkreisdesign 190 enthalten sein können, ist ein kommerziell wichtiger Aspekt eines Ausführungsbeispiels der Erfindung. Designer können einfacher als vorherige Systeme mehr Designs emulieren.
  • In einem Ausführungsbeispiel kann das Computersystem 100 eine Arbeitsstation von Sun Microsystems aus Mountain View, CA, enthalten. In anderen Ausführungsbeispielen enthält das Computersystem 100 andere Computer, wie beispielsweise einen IBM-PC-Kompatiblen, eine Arbeitsstation von Hewlet-Packard, Inc, eine Arbeitsstation von Silicon Graphics, Inc. In einem anderen Ausführungsbeispiel sind das Computersystem 100 und der Logikemulator 150 in einem Computersystem enthalten.
  • Der Logikemulator 150 emuliert die Funktionen des Schaltkreisdesigns 150. Der Logikemulator 150 ist in dem US-Patent Nr. 5 819 065 , ausgestellt am 6. Oktober 1988, ausführlicher beschrieben. In einem Ausführungsbeispiel emuliert der Logikemulator 150 Funktionen des Schaltkreisdesigns 190 unter Verwendung einer Zeitschachtelung (Zeitscheibenverfahren) genannten Technik. Zeitschachtelung erlaubt dem Logikemulator 150, viele Taktzyklen zu verwenden, um eine in einem Taktzyklus des Schaltkreisdesigns 190 ausgeführte Funktion zu emulieren. Die Ausgaben aus einem Emulatortaktzyklus werden in die Emulationsschaltkreise zurückgeführt, um neue Ausgaben zu erzeugen. Die Emulationsschaltkreise werden zwischen Emulator taktzyklen rekonfiguriert, dem Emulator 150 erlaubend, die Funktionen des Schaltkreisdesigns 190 zu emulieren.
  • Der Logikemulator 150 enthält eine Anzahl von Prozessorplatinen 160. Jede Prozessorplatine 160 enthält eine Anzahl von mit einer Platinenschnittstelle 162 gekoppelten integrierten Schaltkreisen 170. Die integrierten Schaltkreise 170 können über die Prozessorplatinen 160 Informationen austauschen und können daher zusammenarbeiten, um das Schaltkreisdesign 190 zu emulieren. In einem Ausführungsbeispiel kann ein integrierter Schaltkreis 170 viele kleine Speicherdesigns emulieren, und viele integrierte Schaltkreise 170 können ein großes Speicherdesign emulieren.
  • Der integrierte Schaltkreis 170 enthält eine Anzahl von Schaltkreisblocks mit den folgenden Verbindungen. Die Eingänge des integrierten Schaltkreises 170 sind mit einem Routing- und Logikblock 172, einem Rückwandplatinenselektor 174, und den Steuer- und Ausgangsschaltkreisen 171 gekoppelt. Der Routing- und Logikblock 172 und die Rückwandplatinenselektoren 174 sind mit einem Ausgangsselektor 176 gekoppelt. Der Ausgang des Ausgangsselektors ist mit einem Register 178, einem Rückkopplungsselektor 179, einem Emulationsspeicher 180, und dem Ausgang des integrierten Schaltkreises 170 gekoppelt. Die Steuer- und Ausgangsschaltkreise 171 sind auch mit dem Ausgang des integrierten Schaltkreises 170 gekoppelt.
  • Die Steuer- und Ausgangsschaltkreise 171 empfangen Steuersignale von den Eingängen des integrierten Schaltkreises 170. Die Steuer- und Ausgangsschaltkreise 171 erzeugen Steuersignale zum Steuern der Schaltkreise innerhalb des integrierten Schaltkreises 170. Die Steuer- und Ausgangs schaltkreise 171 enthalten auch einen programmierbaren Speicher zum Ausgeben programmierter Ausgaben.
  • Die Rückwandplatinenselektoren enthalten zweiunddreißig 32:1-Selektoren. Dies erlaubt dem integrierten Schaltkreis 170, jeden der zweiunddreißig Rückwandplatinen-Eingaben (aus der Platinenschnittstelle 162) in beliebiger Reihenfolge zu empfangen.
  • Der Routing- und Logikblock 172 enthält viele Gruppen von Selektoren, Registern und programmierbaren Logikblocks. Während einer Emulation eines Schaltkreisdesigns 190 wird der Routing- und Logikblock 172 kontinuierlich programmiert und umprogrammiert, während er mit Eingaben gefüttert wird und aus seinen Ausgängen Feedback gibt. Daher führt der Routing- und Logikblock 172 einen großen Teil des Emulationsprozesses aus. Während einer Emulation wird der Routing- und Logikblock 172 dazu programmiert, Adressen und Daten für den Emulationsspeicher 180 zu erzeugen.
  • Das Register 178 speichert, für eine spätere Verwendung, Ausgaben aus dem Ausgangsselektor 176 (zum Beispiel, zur programmierbaren Parallelverarbeitung (Pipelining)).
  • Der Rückkopplungsselektor 179 wählt aus zwischen einem unmittelbaren Feedback aus dem Ausgangsselektor 176 oder aus dem Ausgang des Registers 178.
  • Der Emulationsspeicher 180 versetzt den Emulator 150 dazu in die Lage, viele unterschiedliche Arten von Speicherdesigns zu emulieren. Der Emulationsspeicher 180 empfängt Eingaben aus dem Ausgangsselektor 176 und erzeugt Ausgaben, die in den Ausgangsselektor 176 zurückgeführt werden.
  • b. Ein Emulationsspeicher
  • 2 zeigt ein Ausführungsbeispiel des Emulationsspeichers aus 1. In einem Ausführungsbeispiel ist der Emulationsspeicher 180 in dem integrierten Schaltkreis 170 integriert. In einem anderen Ausführungsbeispiel ist der Emulationsspeicher 180 in einem separaten Schaltkreis oder auf vielen integrierten Schaltkreises integriert.
  • Der Emulationsspeicher 180 enthält die Schaltkreise mit den folgenden Verbindungen. Der Emulationsdatenselektor 200 und die Emulationsadressselektoren werden mit dem Eingang des Emulationsspeichers 180 gekoppelt. Der Ausgang des Emulationsdatenselektors 200 ist mit dem Dateneingang (zweiunddreißig Bit Wdaten) des 4K×32-RAM 230 gekoppelt. Der Ausgang des Emulationsadressselektors 210 ist mit dem Emulationsaddressregister 220 gekoppelt. Der Ausgang des Emulationsadressregisters 220 ist mit den Adress- (zwölf Bits) und Schreibberechtigungs- (vier Bits) Eingängen des RAM 230 gekoppelt. Der RAM 230 hat auch eine Chipauswahlleitung. Der Ausgang des RAM 230 (zweiunddreißig Bit Rdaten) ist mit dem Speicherausgangsselektor 240 gekoppelt. Der Ausgang des Speicherausgangsselektors 240 ist mit dem Ausgang des Emulationsspeichers 180 gekoppelt.
  • Der Emulationsdatenselektor enthält zweiunddreißig 32:1-Selektoren. Die zweiunddreißig Eingangsleitungen kommen aus dem zweiunddreißig Bit breiten Eingangsdatenbus des Emulationsspeichers 180. Die zweiunddreißig 32:1-Selektoren erlauben den Emulationsdatenselektoren 200, eine beliebige Eingangsleitung mit einem beliebigen WDaten-Eingang zu koppeln. Dies schafft Flexibilität in dem System, indem erlaubt wird, dass Daten für den RAM 230 über eine beliebige der zweiunddreißig Datenleitungen erzeugt werden.
  • Die Emulationsadressselektoren 210 enthalten sechzehn 35:1-Selektoren. Jeder 35:1-Selektor hat fünfunddreißig Eingangsleitungen, die die zweiunddreißig Eingangsleitungen des Emulationsspeichers 180, einen Erdungsleitung, eine VCC-Leitung und eine entsprechende Ausgangsleitung aus den Emulationsadressregistern 220 enthalten. Beispielsweise hat der 35:1-Selektor, der das Adress 224-Bit sieben für die Emulationsadressregister 220 ausgibt, die folgenden Eingänge: Die Bits 31-0 aus dem Eingangsbus des Emulationsspeichers 180, VCC, Masse, und das durch das Emulationsadressregister 220 ausgegebene Adress 224-Bit sieben. Daher wählt der Emulationsdatenselektor 200, dass seine Ausgabe von den Eingaben in den Emulationsspeichers 180 ist, zurückgeführt aus dem Emulationsadressregister 220, setzt Werte (0 oder 1 aus den VCC- und Erdungsleitungen), oder Kombinationen von diesen Leitungen.
  • Die Emulationsadressregister 220 speichern die Ausgabe aus den Emulationsadressselektoren 210. Der Ausgang des Emulationsadressregisters 220 enthält eine Zwölf-Bit-Adressleitung 224 und vier Schreibberechtigungsleitungen. Die Adresse 224 wählt die Adresse eines Zweiunddreißig-Bit-Eintrags in dem RAM 230, während die vier Schreibberechtigungen 222 auswählen, welche von den vier Bytes des Eintrags zu schreiben sind. Daher kann unter Verwendung der Kombination des Adresse 224 und der Schreibberechtigung 222 jedes Bit in dem RAM 230 selektiv eingespeichert werden.
  • Die Emulationsadressregister 220 erlauben dem Emulationsspeicher 180, während einer Emulation eine Adresse über viele Zeitscheiben zu speichern. Zum Beispiel, angenommen, dass in einer Zeitscheibe nur die sechszehn am wenigsten signifikanten Bits eines zweiunddreißig Bit-Dateneintrags durch den Routing- und Logikblock 172 erzeugt werden. Auch angenommen, dass die Adresse für diesen Eintrag auch erzeugt ist. Die Emulationsadressregister 220 können diese Adresse während der ersten Zeitscheibe speichern aber nur die zwei niedrigsten Bytes eines Eintrags in dem RAM 230 freigegeben. Während der nächsten Zeitscheibe werden durch den Routing- und Logikblock 172 die oberen sechszehn Informationsbits erzeugt. Es wird dieselbe Adresse verwendet, aber nur die oberen beiden Bytes des Eintrags in dem RAM 230 werden freigegeben. Daher muss für viele Speicherzugriffe in derselben Speicherstelle die Adresse nicht wiedererzeugt werden.
  • Der Ausgang des RAM 230 (Rdaten) ist mit den Speicherausgangsselektoren 240 gekoppelt. Die Speicherausgangsselektoren enthalten zweiunddreißig 32:1-Multiplexer. Die zweiunddreißig 32:1-Multiplexer erlauben jeder Datenleitung aus dem RAM 230 mit einer beliebigen Datenleitung des Ausgangs des Emulationsspeichers 180 gekoppelt zu werden.
  • Die Emulationsdatenselektoren 200, die Emulationsadressselektoren 210, die Emulationsadressregister 220, die Selektoren 240, und die Chipauswahl des RAMs 230 werden alle durch die Steuer- und Ausgangsschaltkreise 171 gesteuert.
  • Der RAM 230 enthält einen statischen 4K×32 wahlfreien Zugriffsspeicher, der einen Leseport und einen Schreibport hat. Der RAM 230 ist eine Durchschreibe-Speicher (write trough) (falls ein Wert X während eines Taktzyklus geschrieben wird, erscheint während dieses Taktzyklus der Wert X in der Ausgabe des RAMs 230). In anderen Ausführungsbeispielen werden anderen Arten von Speichern an Stelle von und/oder zusätzlich zu dem RAM 230 verwendet, wie beispielsweise ein 16K×64 EEPROM oder ein 1M×1 DRAM. In andern Ausführungsbeispielen ersetzen unterschiedliche Arten von Speichern den RAM 230 auf in unterschiedlichen Emulationsspeichern 180 in unterschiedlichen integrierten Schaltkreisen 170. Außerdem muss der RAM 230 nicht in dem integrierten Schaltkreis 170 enthalten sein. Daher ist in einem Ausführungsbeispiel der RAM 230 von dem integrierten Schaltkreis 170. Für diese andere Arten von Speichern werden bei den Emulationsdatenselektoren 200, den Emulationsadressselektoren 210, den Emulationsadressregistern 220 und den Speicherausgangsselektroren 240 entsprechende Änderungen gemacht.
  • c. Ein Ausführungsbeispiel eines Verfahren des Emulierens einer Anzahl von Speicherdesigns
  • 3 zeigt ein Ausführungsbeispiel eines Verfahrens des Emulierens einer Anzahl von Speicherschaltkreisdesigns 195. Dieses Ausführungsbeispiel kann in dem Computersystem 100 und dem Emulator 150 implementiert werden. Allgemein bilden diese Ausführungsbeispiele die Speicherschaltkreisdesigns 195 auf einen oder mehrere Emulationsspeicher 180 ab. Das Abbilden umfasst Identifizieren des Speicherschaltkreisdesigns 195 und Bestimmen einer effektiven Korrelation zwischen den Adressräumen der Speicherschaltkreisdesigns 195 und dem Adressräumen der Emulationsspeicher 180.
  • Bei Block 310 identifiziert das Computersystem 100 die Speicherschaltkreisdesigns 195 innerhalb des Schaltkreisdesigns 190. Dies kann durch Analysieren der verhaltensmäßigen Beschreibung des Zielspeicherdesigns geschehen. Das Computersystem 100 identifiziert die Breite in Bits und die Höhe in Einträgen jedes Speicherschaltkreisdesigns. Daher wird jedes Speicherschaltkreisdesign durch die Anzahl der Einträge in dem Speicherschaltkreisdesign und der Anzahl der Bits in jedem Eintrag identifiziert. Außerdem werden die Anzahl und der Typ von Ports für jedes Speicherschaltkreisdesign identifiziert. Beispielsweise kann das Computersystem 100 ein Speicherschaltkreisdesign als ein Dualport-RAM mit 1K Einträgen und zweiunddreißig Bit breiten Einträgen identifizieren.
  • Als nächstes wird bei Block 320 ein Test gemacht, um zu ermitteln, ob alle Speicherarten verarbeitet wurden. Falls nicht, dann werden Block 323 und Block 325 ausgeführt.
  • Bei Block 323 wird die Breite jedes Speicherschaltkreisdesigns bis zur nächsten Schreibberechtigungsgrenze des RAMs 230 hin aufgefüllt. Zum Beispiel, falls ein Speicherschaltkreisdesign Einträge hat, die nur vier Bits breit sind, aber die Schreibberechtigungen für den RAM 230 auf Acht-Bit-Grenzen gesetzt sind, dann wird die Breite des Speicherschaltkreisdesigns auf acht Bits erhöht. Dieser Block gleicht daher die minimale Granularität des RAMs 230 mit der Breite der Einträge des Speicherschaltkreisdesigns ab. In dem Fall von Nur-Lese-Speichern ist ein Auffüllen nicht in allen Fällen notwendig, da die Ausgangsselektoren 240 den Speicherwerten erlauben, als individuelle Bits abgerufen zu werden.
  • Als nächstes wird bei Block 325 die Größe in Bits jedes Speicherschaltkreisdesigns bestimmt. Dies wird durch Multiplizieren der aufgefüllten Breite mit der Anzahl der Einträge ausgeführt. Beispielsweise hat für den Emulationsspeicher 180 in 2 ein 1K×32-Speicherschaltkreisdesign 32768 Bits, während ein 1K×4 Speicherschaltkreisdesign 8192 Bits hat (1K×8 – die Breite ist auf acht aufgefüllt).
  • Nachdem alle Speicherschaltkreisdesigns verarbeitet wurden, werden dann bei Block 330 die Speicherschaltkreisdesigns 195 nach Größe sortiert. Die größten Speicher sind oben auf der sortierten Liste.
  • Als nächstes, bei Block 340, testet das Computersystem 100, um zu bestimmen, ob alle Speicherschaltkreisdesigns 195 auf die Emulationsspeicher 180 abgebildet wurden. Falls nicht alle Speicherschaltkreisdesigns 195 abgebildet wurden, dann wird Block 343 und Block 345 ausgeführt. Daher werden Block 343 und Block 345 für jedes der Speicherschaltkreisdesigns 195 durchgeführt, beginnend mit dem größten Speicherschaltkreisdesign 195.
  • Bei Block 343 wird der Adressraum eines besonderen Speicherschaltkreisdesigns auf den Adressraum der Emulationsspeicher 180 abgebildet. Der Adressraum der Emulationsspeicher 180 wird als ein großer Speicherraum (eine Speicherpalette) behandelt. Dann wird jedes Speicherschaltkreisdesign einem entsprechenden Bereich auf der Speicherpalette zugeordnet. 4 zeigt Block 343.
  • Bei Block 345 werden, falls notwendig, zusätzliche Zeitscheiben für unterschiedliche Unterräume zugeteilt. Idealerweise bilden alle Speicherschaltkreisdesigns 195 direkt auf einen Teil eines RAM 230 ab. Jedoch können zusätzliche Zeitscheiben notwendig sein, wo das Speicherschaltkreisdesign für einen Multiportspeicher ist. In der ersten Zeitscheibe kann der Emulationsspeicher 180 den Zugriff mittels des ersten Ports emulieren, und in der zweiten Zeitscheibe kann der Emulationsspeicher 180 den Zugriff mittels des zweiten Ports emulieren. In einem Ausführungsbeispiel werden daher für jeden Port des Speicherschaltkreisdesigns über einen Port hinaus zusätzliche Zeitscheiben hinzugefügt.
  • Ferner können zusätzliche Zeitscheiben für Speicherschaltkreisdesigns 195 hinzugefügt werden, die breiter sind als die Breite des RAMs 230. Zum Beispiel, angenommen, das Speicherschaltkreisdesign ist vierundsechzig Bit breit, das RAM 230 ist zweiunddreißig Bits breit. Weiter angenommen, der Abbildungsblock 343 schafft zwei Adressunterräume, um den Adressraum des Speicherschaltkreisdesigns zu repräsentieren. Weiter angenommen, die zwei Adressunterräume werden auf einen einzelnen RAM 230 Adressraum abgebildet. Dann werden die zweiunddreißig Bits niedriger Ordnung eines Eintrags für das Speicherschaltkreisdesign in der ersten Zeitscheibe in den RAM 230 geschrieben und die zweiunddreißig Bits hoher Ordnung dieses Eintrags in der zweiten Zeitscheibe in den RAM 230 geschrieben.
  • Ein anderer Grund zum Hinzufügen zusätzlicher Zeitscheiben entsteht, wo Adressräume von unterschiedlichen Speichern auf den Adressraum desselben RAMs 230 abgebildet werden und es einen Konflikt zum Zugriff auf den RAM 230 gibt. Zum Beispiel, falls zwei Speicherschaltkreisdesigns 195 in den Adressraum desselben RAMs 230 abgebildet werden und das Schaltkreisdesign 190 definiert, dass beide von diesen Speicherschaltkreisdesigns innerhalb desselben Taktzyklus abzurufen sind, dann können zusätzliche Zeitscheiben erforderlich sein.
  • Nachdem alle Speicherschaltkreisdesigns 195-Adressräume auf die Emulationsspeicher 180 abgebildet wurden, wird bei Block 350 der Emulator durch das Computersystem 100 programmiert. Dies umfasst Laden der Steuer- und Ausgangsschaltkreise 171 mit den Steuerungsprogrammen. Ein Teil der Ladung enthält die Steuersignale, um sicherzustellen, dass der Routing- und Logikblock 172 und die anderen Komponenten des integrierten Schaltkreises 170 die korrekte Adress- und Dateninformation zu dem Emulationsspeicher 180 liefern, um die Speicherschaltkreis-Adressräume auf den Adressraum des Emulationsspeichers 180 abzubilden. Als nächstes wird die Emulation durchgeführt. Dies enthält Versorgen des Emulators 150 mit den Testvektoren zum Trainieren des Schaltkreisdesigns 190.
  • 4 zeigt ein Ausführungsbeispiel eines Verfahrens des Abbildens des Speicherschaltkreisdesigns auf den Adressraum des Emulationsspeichers 180.
  • Bei Block 410 wird der Adressraum des Speicherschaltkreises zunächst durch die Höhe des RAMs 230 geteilt, um einen oder mehrere partielle Adressunterräume zu erzeugen. Block 410 löst das Problem des Anpassens eines Speicherschaltkreises mit einer Höhe größer als die Höhe des RAMs 230 in den Adressraum des Emulationsspeichers 180 durch Verteilen des Adressraums des Speicherschaltkreises über mehrere RAMs 230.
  • Bei Block 420 werden, falls erforderlich, die partiellen Adressunterräume dann weiter aufgeteilt. Die in Block 410 geschaffenen partiellen Adressunterräume werden dann durch die Breite des RAM 230 geteilt, um Adressunterräume zu schaffen. Daher löst der Block 410 das Problem des Fittens eines Speicherschaltkreisdesigns mit einer Breite größer als die Breite des RAMs 230 in den Adressraum des Emulationsspeichers durch Verteilen des Adressraums des Speicherschaltkreisdesigns über mehrere Einträge in den RAMs 230. Die Einträge können in einem oder mehreren RAMs 230 sein.
  • Bei Block 430 bestimmt das Computersystem die Beziehung zwischen den Adressunterräumen und dem Emulationsadressraum. Die umfasst Zuweisen eines bestimmten Unterraums zu einem bestimmten Teil des RAMs 230 in dem Logikemulator.
  • d. Beispiele des Abbildens von Speicherdesigns auf einen Emulationsspeicher
  • 5 zeigt ein Beispiel einer Anzahl von Speichern in einem Design, dass auf die Emulationsspeicher 180 abgebildet wurde. Wichtigerweise, wie oben bemerkt, behandeln die Softwaretools den Adressraum der Emulationsspeicher 180 als eine große Speicherpalette. Die Speicherschaltkreisdesigns 195 werden in diese Speicherpalette 500 abgebildet.
  • In diesem Beispiel enthält das Schaltkreisdesign 190 die folgenden Speicherschaltkreisdesigns 195: einen 8K×64 Bit Speicher 510, einen 3K×24 Dualportspeicher 520, einen 4×256 Bit Speicher 530, 128×128 Speicher 540 und einen 32×32 Bit Speicher 550. Diese Schaltkreisdesigns 195 werden auf die Speicherpalette 500 abgebildet unter Verwendung der Schritte in 3.
  • Für die Zwecke dieses Beispiels repräsentiert des Speicherpalette 500 nur einen Adressraum eines sechsfachen 4K×32. In einem System enthält die Speicherpalette 500 viel größere Speicherräume. Die Speicherpalette 500 enthält, veranschaulichend, 4K×32 Bit Grenzen, die den physikalischen Adressraum des RAMs 230 repräsentieren.
  • Den in 3 und 4 beschriebenen Ausführungsbeispielen folgend werden die Speicherschaltkreisdesigns 195 auf die Speicherpalette 500 wie folgt abgebildet.
  • Zunächst, bei Block 310, werden alle Speicherschaltkreisdesigns 195 identifiziert. Als nächstes werden für jedes Speicherschaltkreisdesign 195 Block 323 und Block 345 ausgeführt. Block 323 füllt in diesem Beispiel den 1K×4 Speicher 530 auf einen 1K×8 Speicher 530 auf, wo die Schreibberechtigungsgrenzen des RAMs 230 auf Bytegrenzen liegen. Daher haben die folgenden Speicher die folgenden, in Tabelle 1 gezeigten Größen.
    Speicherschaltkreisdesign 195 Größe in Bits
    8K×64 Speicher 510 52488
    32×32 Speicher 550 1024
    128×128 Speicher 540 16382
    3K×24 Speicher 520 73728
    1K×4 Speicher 530 8192
    Tabelle 1
  • Tabelle 2 zeigt die sortierte Liste des Speicherschaltkreisdesigns 195 nach dem Ausführen des Blocks 330.
    Speicherschaltkreisdesign 195 Größe in Bits
    8K×64 Speicher 510 524288
    3K×24 Speicher 520 73728
    128×128 Speicher 540 16382
    1K×4 Speicher 530 8192
    32×32 Speicher 550 1024
    Tabelle 2
  • Als nächstes wird jedes der Speicherschaltkreisdesigns 195 auf die Speicherpalette 500 abgebildet. Bei Block 410 wird der Adressraum des 8K×64 Speichers 510 in zwei partielle Unterräume von jeweils 4K×64 gebrochen. Bei Block 420 werden die zwei partiellen Unterräume weiter in vollständige Unterräume von jeweils 4k×32 gebrochen. Bei Block 430 werden diese vier vollständigen Unterräume auf den ersten verfügbaren Adressspeicher der Speicherpalette abgebildet (der Adressraum der ersten vier Emulationsspeicher 180). Block 410 und Block 420 werden ausgeführt für den 3K×24 Speicher 520, resultierend in einen Adressunterraum von 3K×24. Dieser Adressunterraum wird, bei Block 430, auf den nächsten verfügbaren Teil der Speicherpalette 500 abgebildet. Als nächstes wird der 128×128 Speicher durch Block 410 und Block 420 gegeben. Block 410 resultiert in einen partiellen 128×128 Adressunterraum. Block 420 ergibt vier vollständige 128×32 Adressunterräume. Das Computersystem 100 bildet dann diese Unterräume auf den nächsten verfügbaren Adressunterraum ab. Das Computersystem 100 bildet dann diese Unterräume auf den nächsten verfügbaren Raum in der Speicherpalette 500 ab. Block 410 und Block 420 werden dann ausgeführt für den 1K×4 Speicher 530, resultierend in einen Adressunterraum von 1K×8. Weil es immer noch Raum in dem Adressraum des fünften Emulationsspeichers 180 gibt, wird der 1K×8 Adressunterraum auf den Raum nächst dem 1K×24 Adressunterraum abgebildet. Als nächstes wird der 32×32 Speicher 550 durch den Block 410 und Block 420 gegeben. Diese werden auf die nächsten verfügbaren Bereiche des Speicherpalette 500 abgebildet.
  • Tabelle 3 zeigt die Ergebnisse von Block 345. Nachdem das Abbilden für ein Speicherschaltkreisdesign 195 ausgeführt ist, wird dann Block 345 ausgeführt. Tabelle 3 zeigt die Ergebnisse der Zeitscheibenallokation.
  • In der Zeitscheibenallokation ergibt eine Anzahl von Konflikten zusätzliche Zeitscheiben, die erforderlich sind. Ein Konflikt entsteht, wo viele Adressunterräume für ein Speicherschaltkreisdesign in denselben RAM 230 (beispielsweise einem 128×128 Speicher 540) abgebildet werden. Ferner entsteht ein Konflikt, wo zwei oder mehr Speicherschaltkreisdesigns 195 in demselben Taktzyklus des Speicherdesigns 190 (beispielsweise ein 3K×24 Speicher 520, ein 1K×4 Speicher 530 und ein 32×32 Speicher 550) einzuspeichern oder auszulesen sind. Für dieses Beispiel wird angenommen, dass jedes Speicherschaltkreisdesign 195 in jedem Taktzyklus des Schaltkreisdesigns 190 einzuspeichern oder auszulesen ist. In vielen Schaltkreisdesigns 190 ist dies nicht wahr und wird nicht in einen Konflikt resultieren und wird daher nicht mehrere Zeitscheiben zum Auflösen erfordern.
    Speicher-Schaltkreis-Design 195 Adress-Raum Unterraum RAM 230 Adressraum des Emulations-Speichers 180 Zeitscheibe
    8K×64 Speicher 510 1FFF-0: FFF-0:Bits 31-0 0 0FFF-0:Bits 31-0 1
    Bits 63-0 FFF-0:Bits 63-32 1 0FFF-0:Bits 31-0 1
    1FFF-1000:Bits 31-0 2 0FFF-0:Bits 31-0 1
    1FFF-1000:Bits 63-32 3 0FFF-0:Bits 31-0 1
    3K×24 Speicher 520 BFF-0: BFF-0:Bits 23-0 4 BFF-0:Bits 23-0 1-Port
    Bits 23-0 0
    2-Port
    2
    128×128 Speicher 540 7F-0: Bits 7F-0:Bits 31-0 5 7F-0:Bits 31-0 1
    127-0 7F-0:Bits 63-32 5 FF-80:Bits 31-0 2
    7F-0:Bits 95-64 5 17F-100:Bits 31-0 3
    7F-0:Bits 127-96 5 1FF-80:Bits 31-0 4
    1K×4 Speicher 530 3FF-0: 3FF-0:Bits 7-0 4 3FF-0:Bits 32-24 3
    Bits 3-0
    32×32 Speicher 550 1F-0:Bits 1F-0:Bits 31-0 4 C1F-C00:Bits 31-0 4
    31-0
    Tabelle 3
  • Andere Ausführungsbeispiele haben verschiedene Verbesserungen über den oben beschriebenen grundlegenden Abbildungsalgorithmus hinaus. Beispielsweise werden in einem Ausführungsbeispiel die Speicherschaltkreisdesigns 195, die in demselben Taktzyklus des Schaltkreisdesigns 190 abgerufen werden, auf unterschiedliche RAMs 230 abgebildet, um ein Hinzufügen von zusätzlichen Zeitscheiben zu vermeiden. In einem anderen Ausführungsbeispiel werden die Sätze von aus dem Speicherschaltkreisdesign 195 geschaffenen Unterräumen, die breiter als zweiunddreißig Bits sind, über mehrere RAMs 230 abgebildet. Dies reduziert die Anzahl von benötigten Zeitscheiben auf Kosten der möglicherweise verdoppelten Arbeit des Routing- und Logikblocks 172.

Claims (18)

  1. Emulationsspeicher (180) für einen Logikemulator (150) zum Emulieren der Funktion eines Zielschaltkreisdesigns (190), der einen Satz von Zielspeichern (195) enthält, wobei der Emulationsspeicher (180) aufweist: einen Speicherschaltkreis (230) mit einem Adressport und einem Datenport; einen Adressschaltkreis (210, 220) mit einem Adressausgangsport, der mit dem Adressport gekoppelt ist, wobei der Adressschaltkreis (210, 220) programmierbar ist, wobei der Emulationsspeicher (180) dazu eingerichtet ist, in Antwort auf das Empfangen einer Vielzahl von Zielspeicher-Zugriffsfunktions-Befehlen zum Abrufen von Zielspeicheradressen in einem Zyklus des Zielschaltkreisdesigns (190), das Folgende durchzuführen: Abbilden (343) der Zielspeicheradressen auf Speicheradressen in dem Adressraum des Speicherschaltkreises (230) über eine Vielzahl von Zeitscheiben, wobei die Vielzahl von Zeitscheiben einen einzelnen Taktzyklus in dem Satz von Zielspeichern (195) repräsentiert, und Hinzufügen (345), falls notwendig, von zusätzlichen Zeitscheiben in die Vielzahl von Zeitscheiben, um dem Logikemulator (150) zu erlauben, auf den Adressraum in dem Satz von Zielspeichern (195) zuzugreifen; und Durchführen (350) einer Vielzahl von Speicherzugriffsfunktionen auf den Speicherschaltkreis (230) über die Vielzahl von Zeitscheiben unter Verwendung der Speicherschaltkreisspeicheradressen, die Vielzahl von Speicherzugriffsfunktionen auf den Speicherschaltkreis (230) die empfangene Vielzahl von Zielspeicher-Zugriffsfunktions-Befehlen emulierend.
  2. Emulationsspeicher (180) gemäß Anspruch 1, wobei der Speicherschaltkreis (230) einen viertausendsechsundneunzig mal zweiunddreißig Bit wahlfreien Zugriffsspeicher enthält, wobei der Adressport ein Zwölf-Bit Eingangsport ist, wobei der Datenport zweiunddreißig Bits breit ist und einen Schreibport und einen Leseport enthält, und wobei der Speicherschaltkreis (230) ferner vier Schreibberechtigungsports enthält.
  3. Emulationsspeicher (180) gemäß Anspruch 1, wobei der Speicherschaltkreis (230) auf einem ersten Halbleitersubstrat integriert ist und der Adressschaltkreis (210, 220) auf einem zweiten Halbleitersubstrat integriert ist.
  4. Emulationsspeicher (180) gemäß Anspruch 1, ferner aufweisend einen programmierbaren Routing- und Logikschaltkreis (172) zum Abbilden eines Satzes von Datenwerten, die mit dem Satz von Adressen korrespondieren, auf einen Satz von Emulationsspeicher-Datenwerten.
  5. Emulationsschaltkreis (180) gemäß Anspruch 1, wobei der Adressschaltkreis (210, 220) eine Vielzahl von Emulationsadressen-Auswahlschaltkreisen (210) enthält, jeder Emulationsadressen-Auswahlschaltkreis (210) zum Erzeugen eines einzelnen Adressbits einer einzelnen Emulationsspeicheradresse.
  6. Emulationsspeicher (180) gemäß Anspruch 5, wobei der Adressschaltkreis (210, 220) ein Adressregister (220) enthält, das mit dem Adressen-Auswahlschaltkreis (210) gekoppelt ist und die einzelne Emulationsspeicheradresse speichert, ein Ausgang des Adressregisters (220) mit dem Adressausgangsport korrespondierend.
  7. Emulationsspeicher (180) gemäß Anspruch 1, wobei der Satz von Zielspeichern (195) einen ersten Zielspeicher eines ersten Typs und einen zweiten Zielspeicher eines zweiten Typs enthält, der erste Zielspeicher und der zweite Zielspeicher zum Empfangen von Adressen während eines einzelnen Zyklus des Zieldesigns, und wobei der Adressschaltkreis (210, 220) zum Erzeugen einer ersten Emulationsadresse ist, die mit einer ersten Zielspeicheradresse korrespondiert, während eines ersten Zyklus des Emulationsspeichers (180), und einer zweiten Zielspeicheradresse, die mit einer zweiten Zielspeicheradresse korrespondiert, während eines zweiten Zyklus des Emulationsspeichers (180).
  8. Emulationsspeicher (180) gemäß Anspruch 1, ferner enthaltend einen ersten Speicherschaltkreis und einen zweiten Speicherschaltkreis, jeder Speicherschaltkreis zum Speichern eines N-Worts von Daten, und wobei der Satz von Zielspeichern ein erstes Zielspeicherdesign zum Speichern eines M-Worts von Daten enthält, wo M größer ist als N, und wobei der Adressschaltkreis (210, 220) enthält eine erste Adresse zum Erzeugen eines ersten Satzes von Emulationsadressen für den ersten Speicher, korrespondierend mit N Datenworten des M-Worts von Daten, und wobei der Adressschaltkreis (210, 220) einen zweiten Adressschaltkreis enthält zum Erzeugen eines Satzes von zweiten Emulationsadressen für den zweiten Speicher, korrespondierend mit M-N Datenworten M-Worts von Daten.
  9. Emulationsspeicher (180) gemäß Anspruch 8, wobei N 4096 ist und M 6144 ist und der erste Satz von Emulationsadressen mit Wort Null bis Wort 4095 der M Datenworte korrespondiert und wobei der zweite Satz von Emulationsadressen mit Wort 4096 bis Wort 6143 korrespondiert.
  10. Emulationsspeicher (180) gemäß Anspruch 1, ferner enthaltend einen ersten Speicherschaltkreis zum Speichern eines N Bit breiten Datenworts, und wobei der Satz von Ziel speichern (195) ein erstes Zielspeicherdesign zum Speichern eines M Bit breiten Datenworts enthält, wo M größer ist als N, und wobei der Adressschaltkreis enthält einen ersten Adressschaltkreis zum Erzeugen einer ersten Emulationsadresse für den ersten Speicher, korrespondierend mit N Bits des M Bit breiten Datenworts, und wobei der erste Adressschaltkreis zum Erzeugen einer zweiten Emulationsadresse für den ersten Speicherschaltkreis, korrespondierend mit M-N Bits des M Bit breiten Datenworts, ist.
  11. Emulationsspeicher (180) gemäß Anspruch 10, wobei N zweiunddreißig ist und M vierundsechzig ist.
  12. Verfahren zum Emulieren der Funktion einer Zielschaltkreisvorrichtung (190), die einen Satz von Zielspeichern (195) enthält, unter Verwendung eines Logikemulators (150), der Logikemulator (150) enthaltend eines Speicherschaltkreis (230) und einen Adressschaltkreis (210, 220), der Speicherschaltkreis (230) aufweisend einen Adressport und einen Datenport, der Adressschaltkreis (210, 220) aufweisend einen Adressausgabeport, der mit dem Adressport gekoppelt und programmierbar ist, das Verfahren aufweisend: in Antwort auf das Empfangen einer Vielzahl von Zielspeicher-Zugriffsfunktions-Befehlen zum Abrufen von Zielspeicheradressen in einem Zyklus des Zielschaltkreisdesigns (190), Abbilden (343) der Zielspeicheradresse auf Speicheradressen in dem Adressraum des Speicherschaltkreises (230) über eine Vielzahl von Zeitscheiben, die Vielzahl von Zeitscheiben einen einzelnen Taktzyklus in dem Satz von Zielspeichern (195) repräsentierend, und Hinzufügen (345), falls erforderlich, von zusätzlichen Zeitscheiben in die Vielzahl von Zeitscheiben, um dem Logikemulator (150) zu erlauben, auf den Adressraum in dem Satz von Zielspeichern (195) zuzugreifen; und Durchführen (350) einer Vielzahl von Speicherzugriffsfunktionen auf den Speicherschaltkreis (230) über die Vielzahl von Zeitscheiben unter Verwendung der Speicherschaltkreis-Speicheradressen, die Vielzahl von Speicherzugriffsfunktionen auf den Speicherschaltkreis (230) die empfangende Vielzahl von Zielspeicher-Zugriffsfunktions-Befehlen emulierend.
  13. Verfahren gemäß Anspruch 12, ferner enthaltend, vor dem Abbilden, Sortieren des Satzes von Speicherdesigns nach der Größe.
  14. Verfahren gemäß Anspruch 12, wobei der Speicherschaltkreis (230) eines Satz von Emulationsspeichern enthält, jeder Emulationsspeicher N Bits groß, und wobei ein erstes Speicherdesign M Bits groß ist, M größer als N, das Abbilden ferner aufweisend: Abbilden von N Bits niedriger Ordnung des ersten Speicherdesigns auf einen ersten Emulationsspeicher; und Abbilden von M-N Bits hoher Ordnung des ersten Speicherdesigns auf einen zweiten Emulationsspeicher.
  15. Verfahren gemäß Anspruch 14, wobei N 131072 Bits ist.
  16. Verfahren gemäß Anspruch 12, wobei der Speicherschaltkreis (230) einen Emulationsspeicher mit einem 32 Bit Wort enthält und wobei ein erstes Schaltkreisdesign ein 64 Bit breites Wort aufweist und wobei das Abbilden ferner aufweist: Abbilden der Bits 31-0 des 64 Bits breiten Worts auf ein erstes Wort eines ersten Paars von Worten in dem Emulationsspeicher; und Abbilden der Bits 63-32 des 64 Bit breiten Worts auf ein zweites Wort des ersten Paars von Worten.
  17. Verfahren gemäß Anspruch 12, ferner aufweisend Partitionieren jedes Speicherdesigns mit einer Größe größer als eine vorbestimmte Größe in einen Satz von partitionierten Speicherdesigns.
  18. Verfahren gemäß Anspruch 17, wobei die vorbestimmte Größe gleich der Anzahl von Bytes in einem Emulationsspeicherschaltkreis innerhalb des Speicherschaltkreises ist.
DE69737757T 1996-02-06 1997-02-05 System und Verfahren zur Speicher-Emulation Expired - Lifetime DE69737757T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US597197 1996-02-06
US08/597,197 US5819065A (en) 1995-06-28 1996-02-06 System and method for emulating memory

Publications (2)

Publication Number Publication Date
DE69737757D1 DE69737757D1 (de) 2007-07-12
DE69737757T2 true DE69737757T2 (de) 2008-01-31

Family

ID=24390505

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737757T Expired - Lifetime DE69737757T2 (de) 1996-02-06 1997-02-05 System und Verfahren zur Speicher-Emulation

Country Status (4)

Country Link
US (1) US5819065A (de)
EP (1) EP0789311B1 (de)
JP (1) JP3995751B2 (de)
DE (1) DE69737757T2 (de)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031842A (en) * 1996-09-11 2000-02-29 Mcdata Corporation Low latency shared memory switch architecture
US6141636A (en) * 1997-03-31 2000-10-31 Quickturn Design Systems, Inc. Logic analysis subsystem in a time-sliced emulator
US6173419B1 (en) * 1998-05-14 2001-01-09 Advanced Technology Materials, Inc. Field programmable gate array (FPGA) emulator for debugging software
US6279146B1 (en) 1999-01-06 2001-08-21 Simutech Corporation Apparatus and method for verifying a multi-component electronic design
JP3943277B2 (ja) * 1999-03-23 2007-07-11 セイコーエプソン株式会社 マイクロコンピュータ及び電子機器
US6618698B1 (en) * 1999-08-12 2003-09-09 Quickturn Design Systems, Inc. Clustered processors in an emulation engine
US6611796B1 (en) * 1999-10-20 2003-08-26 Texas Instruments Incorporated Method and apparatus for combining memory blocks for in circuit emulation
US6230114B1 (en) 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6477624B1 (en) * 1999-11-08 2002-11-05 Ondotek, Inc. Data image management via emulation of non-volatile storage device
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
TWI220192B (en) * 2001-11-06 2004-08-11 Mediatek Inc Memory access method and apparatus in ICE system
US20030188278A1 (en) * 2002-03-26 2003-10-02 Carrie Susan Elizabeth Method and apparatus for accelerating digital logic simulations
US6871328B1 (en) * 2002-11-14 2005-03-22 Altera Corporation Method for mapping logic design memory into physical memory device of a programmable logic device
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
US8145469B2 (en) 2005-04-06 2012-03-27 Quickturn Design Systems, Inc. System and method for providing compact mapping between dissimilar memory systems
US7577558B2 (en) * 2005-04-06 2009-08-18 Quickturn Design Systems, Inc. System and method for providing compact mapping between dissimilar memory systems
DE502005001065D1 (de) * 2005-05-02 2007-08-30 Accemic Gmbh & Co Kg Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
US8359187B2 (en) * 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US7609567B2 (en) 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
JP5242397B2 (ja) * 2005-09-02 2013-07-24 メタラム インコーポレイテッド Dramをスタックする方法及び装置
US7493519B2 (en) * 2005-10-24 2009-02-17 Lsi Corporation RRAM memory error emulation
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
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 삼성전자주식회사 에뮬레이션 시스템 및 그 방법
JP5043500B2 (ja) * 2006-05-12 2012-10-10 三星電子株式会社 状態回復を有する回路エミュレーション
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US20100161308A1 (en) * 2008-12-22 2010-06-24 Unity Semiconductor Corporation Multi-structured memory
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
US11487925B1 (en) 2021-07-02 2022-11-01 Changxin Memory Technologies, Inc. Simulation method, apparatus, and device, and storage medium
CN115563909A (zh) * 2021-07-02 2023-01-03 长鑫存储技术有限公司 仿真方法、装置、设备及存储介质

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3955180A (en) * 1974-01-02 1976-05-04 Honeywell Information Systems Inc. Table driven emulation system
US4277827A (en) * 1979-01-02 1981-07-07 Texas Instruments Incorporated Microprocessor based system for the development and emulation of programmable calculator control read only memory software
US4281392A (en) * 1979-05-01 1981-07-28 Allen-Bradley Company Memory circuit for programmable machines
US4306286A (en) * 1979-06-29 1981-12-15 International Business Machines Corporation Logic simulation machine
US4357678A (en) * 1979-12-26 1982-11-02 International Business Machines Corporation Programmable sequential logic array mechanism
US4400794A (en) * 1981-11-17 1983-08-23 Burroughs Corporation Memory mapping unit
US4656580A (en) * 1982-06-11 1987-04-07 International Business Machines Corporation Logic simulation machine
US4527249A (en) * 1982-10-22 1985-07-02 Control Data Corporation Simulator system for logic design validation
US4583169A (en) * 1983-04-29 1986-04-15 The Boeing Company Method for emulating a Boolean network system
US4587625A (en) * 1983-07-05 1986-05-06 Motorola Inc. Processor for simulating digital structures
WO1985002033A1 (en) * 1983-11-03 1985-05-09 Prime Computer, Inc. Digital system simulation method and apparatus
US4642759A (en) * 1984-04-02 1987-02-10 Targa Electronics Systems Inc. Bubble memory disk emulation system
US4782461A (en) * 1984-06-21 1988-11-01 Step Engineering Logical grouping of facilities within a computer development system
US4697241A (en) * 1985-03-01 1987-09-29 Simulog, Inc. Hardware logic simulator
US4819150A (en) * 1985-04-05 1989-04-04 Unisys Corporation Array for simulating computer functions for large computer systems
US4958315A (en) * 1985-07-02 1990-09-18 The United States Of America As Represented By The Secretary Of The Navy Solid state electronic emulator of a multiple track motor driven rotating magnetic memory
US4769817A (en) * 1986-01-31 1988-09-06 Zycad Corporation Concurrent fault simulation for logic designs
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
US4862347A (en) * 1986-04-22 1989-08-29 International Business Machine Corporation System for simulating memory arrays in a logic simulation machine
US5088033A (en) * 1986-04-28 1992-02-11 Xerox Corporation Data processing system emulation in a window with a coprocessor and I/O emulation
US4787061A (en) * 1986-06-25 1988-11-22 Ikos Systems, Inc. Dual delay mode pipelined logic simulator
US5126966A (en) * 1986-06-25 1992-06-30 Ikos Systems, Inc. High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs
US4787062A (en) * 1986-06-26 1988-11-22 Ikos Systems, Inc. Glitch detection by forcing the output of a simulated logic device to an undefined state
JPS63223869A (ja) * 1987-03-13 1988-09-19 Hitachi Ltd プログラム生成方法
US5329471A (en) * 1987-06-02 1994-07-12 Texas Instruments Incorporated Emulation devices, systems and methods utilizing state machines
US5025364A (en) * 1987-06-29 1991-06-18 Hewlett-Packard Company Microprocessor emulation system with memory mapping using variable definition and addressing of memory space
JP2589713B2 (ja) * 1987-11-20 1997-03-12 株式会社日立製作所 データプロセッサ及びデータ処理システム
US4868822A (en) * 1988-02-19 1989-09-19 John Fluke Mfg. Co., Inc. Memory emulation method and system for testing and troubleshooting microprocessor-based electronic systems
US5377123A (en) * 1992-06-08 1994-12-27 Hyman; Edward Programmable logic device
US4914612A (en) * 1988-03-31 1990-04-03 International Business Machines Corporation Massively distributed simulation engine
AU4347189A (en) * 1988-10-05 1990-05-01 Mentor Graphics Corporation Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5329470A (en) * 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
US5109353A (en) * 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
US4984213A (en) * 1989-02-21 1991-01-08 Compaq Computer Corporation Memory block address determination circuit
US5031129A (en) * 1989-05-12 1991-07-09 Alcatel Na Network Systems Corp. Parallel pseudo-random generator for emulating a serial pseudo-random generator and method for carrying out same
US5068812A (en) * 1989-07-18 1991-11-26 Vlsi Technology, Inc. Event-controlled LCC stimulation
US5084824A (en) * 1990-03-29 1992-01-28 National Semiconductor Corporation Simulation model generation from a physical data base of a combinatorial circuit
US5259006A (en) * 1990-04-18 1993-11-02 Quickturn Systems, Incorporated Method for substantially eliminating hold time violations in implementing high speed logic circuits or the like
US5345580A (en) * 1990-11-29 1994-09-06 Kabushiki Kaisha Toshiba Microprocessor device and emulator device thereof
FR2670299B1 (fr) * 1990-12-07 1993-01-22 Thomson Composants Militaires Circuit integre avec controleur de test peripherique.
US5114353A (en) * 1991-03-01 1992-05-19 Quickturn Systems, Incorporated Multiple connector arrangement for printed circuit board interconnection
US5321828A (en) * 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
US5291584A (en) * 1991-07-23 1994-03-01 Nexcom Technology, Inc. Methods and apparatus for hard disk emulation
US5325365A (en) * 1991-10-04 1994-06-28 John Fluke Mfg. Co., Inc. In a memory emulation test apparatus, a method of and system for fast functional testing of memories in microprocessor-based units
JP2941135B2 (ja) * 1992-01-24 1999-08-25 富士通株式会社 疑似lsi装置及びそれを用いたデバッグ装置
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US5475624A (en) * 1992-04-30 1995-12-12 Schlumberger Technologies, Inc. Test generation by environment emulation
JP3620860B2 (ja) * 1992-06-05 2005-02-16 株式会社メガチップス シミュレーション装置
US5352123A (en) * 1992-06-08 1994-10-04 Quickturn Systems, Incorporated Switching midplane and interconnection system for interconnecting large numbers of signals
US5331571A (en) * 1992-07-22 1994-07-19 Nec Electronics, Inc. Testing and emulation of integrated circuits
US5572710A (en) * 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5515525A (en) * 1993-09-28 1996-05-07 Bull Hn Information Systems Inc. Emulating the memory functions of a first system on a second system
US5640542A (en) * 1993-10-29 1997-06-17 Intel Corporation On-chip in-circuit-emulator memory mapping and breakpoint register modules
US5473765A (en) * 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
US5448522A (en) * 1994-03-24 1995-09-05 Quickturn Design Systems, Inc. Multi-port memory emulation using tag registers
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation

Also Published As

Publication number Publication date
US5819065A (en) 1998-10-06
DE69737757D1 (de) 2007-07-12
EP0789311B1 (de) 2007-05-30
EP0789311A3 (de) 2001-03-28
JPH1055288A (ja) 1998-02-24
JP3995751B2 (ja) 2007-10-24
EP0789311A2 (de) 1997-08-13

Similar Documents

Publication Publication Date Title
DE69737757T2 (de) System und Verfahren zur Speicher-Emulation
DE68921776T2 (de) Prozessorssimulation.
DE3850901T2 (de) Datenverarbeitungsanordnung mit Mitteln zur angrenzenden Adressierung eines Speichers.
DE68921775T2 (de) Prozessorssimulation.
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
DE3650532T2 (de) Speicher mit programmierbarem Zugang
DE68923437T2 (de) Adressenübersetzung für Seiten mehrfacher Grösse.
DE69114333T2 (de) Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen.
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE3851554T2 (de) Steuerungsanordnung für gemeinschaftlichen Speicher.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE3685711T2 (de) Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen.
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE69634227T2 (de) Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
EP2765528A1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
EP1090357A4 (de) Funktionelle verifikation von integriertem kreislaufentwurf
DE69029815T2 (de) Zentralisierte referenz- und änderungstabelle für eine virtuelle speicheranordnung
DE68927306T2 (de) Emulationssystem, fähig zur Anpassung an Mikrorechner mit verschiedenen On-Chip-Speicherkapazitäten
DE3688446T2 (de) Mikroprozessorunterstützte Speicher-zu-Speicher-Transfervorrichtung.
DE3919802C2 (de) Speichersteuersystem für ein Multiprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition