-
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.