DE112013000758B4 - Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger - Google Patents

Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger Download PDF

Info

Publication number
DE112013000758B4
DE112013000758B4 DE112013000758.4T DE112013000758T DE112013000758B4 DE 112013000758 B4 DE112013000758 B4 DE 112013000758B4 DE 112013000758 T DE112013000758 T DE 112013000758T DE 112013000758 B4 DE112013000758 B4 DE 112013000758B4
Authority
DE
Germany
Prior art keywords
fpga
clocks
dut
accelerator
clock
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.)
Active
Application number
DE112013000758.4T
Other languages
English (en)
Other versions
DE112013000758T5 (de
Inventor
c/o IBM Corporation Asaad Sameh W.
c/o IBM Corporation Kapur Mohit
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000758T5 publication Critical patent/DE112013000758T5/de
Application granted granted Critical
Publication of DE112013000758B4 publication Critical patent/DE112013000758B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Abstract

Verfahren zum Erzeugen von Taktsignalen für einen zyklusgenauen FPGA-gestützten Hardware-Beschleuniger, der zum Simulieren von Operationen einer zu prüfenden Einheit (DUT) verwendet wird, wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Frequenzen erzeugen, wobei diese mehreren Einheiten-Frequenzen ein definiertes Frequenzverhältnis aufweisen, wobei das Verfahren aufweist:Zuordnen der Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger, wobei der auf FPGA gestützte Hardware-Beschleuniger mehrere Beschleuniger-Taktgeber enthält, die mehrere Beschleuniger-Taktsignale zum Betreiben des FPGA-gestützten Hardware-Beschleunigers erzeugen, um die Operationen der DUT zu simulieren; undErzeugen von Beschleuniger-Taktsignalen des FPGA-gestützten Hardware-Beschleunigers bei mehreren Beschleuniger-Frequenzen, wobei diese mehreren Beschleuniger-Frequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf Simulieren des Betriebs integrierter Schaltungen und insbesondere auf vor Ort programmierbare Gate-Arrays zum Simulieren des Betriebs von integrierten Schaltungen.
  • Da On-Chip-Systeme und Mehrprozessor-Kerne auf einem einzigen Chip allgemein üblich werden, wird das Simulieren dieser komplexen Chips zu einem kostenintensiven Problem. Bei einer der Techniken, die zum Simulieren dieser komplexen Systeme entwickelt wurden, handelt es sich um Hardware-Beschleuniger, die sich auf vor Ort programmierbare Gate-Arrays (FPGAs) stützen. Diese Hardware-Beschleuniger arbeiten nach dem Prinzip des Aufteilens des Chip-Aufbaus (zu prüfende Einheit - DUT) in kleine Blöcke. Diese Blöcke werden dann in verschiedenen FPGAs implementiert. Diese FPGAs werden untereinander in der gleichen Weise wie bei dem ursprünglichen DUT-Design verbunden. Die Chip- oder DUT-Simulationen können dann an dieser spezialisierten FPGA-Hardware und nicht an einem herkömmlichen Simulator ablaufen. Herkömmliche Simulatoren werden vollständig in Software geschrieben und laufen auf einem Universal-Computer. Hardware-Simulatoren können üblicherweise einen Geschwindigkeitsvorteil von mehreren Größenordnungen gegenüber herkömmlichen Simulatoren bereitstellen.
  • Das Beschleunigen der Simulation kann aus mehreren Gründen erwünscht sein. Die Anzahl von Simulationen, die auszuführen sind, um einen großen digitalen Chip zu bewerten, ist sehr groß. Um diese Simulationen in einer angemessenen Zeit unter Verwendung von Software auszuführen, muss eine große Anzahl von Computern bei den entsprechenden damit verbundenen Kosten verwendet werden. Ein beschleunigter Simulator verringert diese Anzahl. Des Weiteren ist es häufig erforderlich, eine Schaltung während einer sehr langen Zeitdauer zu simulieren, bis der Punkt erreicht wird, der von Interesse ist. Bei dieser langen Simulation handelt es sich um einen sequenziellen Prozess, der für eine Software-Umsetzung mehrere Tage benötigen kann, und der nicht dadurch beschleunigt werden kann, indem einfach eine größere Anzahl von Computern verwendet wird.
  • Die WO 1998/054 664 A1 beschreibt ein Hardware-Emulationssystem, welches das die Hardwarekosten durch Zeitmultiplexen mehrerer Entwurfssignale auf physikalische Logikchipstifte und gedruckte Leiterplatten reduziert. Das rekonfigurierbare Logiksystem der WO 1998/054 664 A1 umfasst mehrere umprogrammierbare Logikvorrichtungen und mehrere umprogrammierbare Verbindungsvorrichtungen. Die Logikvorrichtungen und die Verbindungsvorrichtungen sind so miteinander verbunden, dass sich mehrere Entwurfssignale gemeinsame E/A-Pins und Leiterplattenspuren teilen. Ferner wird ein Logikanalysator für das Hardware-Emulationssystem beschrieben. Die zum Ausführen von Funktionen des Logikanalysators erforderlichen Logikschaltungen sind in die programmierbaren Ressourcen in den Logikchips des Emulationssystems programmiert.
  • Der Artikel „A cycle-accurate, cycle-reproducible multi-FPGA system for accelerating multi-core processor simulation“ von Asaad, S. et al. in Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays ACM, 2012, S. 153-162, beschreibt eine zyklusgenaue und zyklusreproduzierbare FPGA-Plattform dafür ausgelegt ist, die logische Verifizierung des Bluegene / Q-Rechenknoten-ASIC zu beschleunigen, einem in IBMs 45-nm-SOI-CMOS-Technologie implementierten Multiprozessor-SOC. Es werden Design-Partitionierung, Taktung und Synchronisation, Debugging-Unterstützung sowie ein Ansatz zur Konstruktion einer solchen FPGA-Plattform ohne Beeinträchtigung der Zyklusgenauigkeit und -reproduzierbarkeit beschreiben.
  • Der Erfindung liegt die Aufgabe zugrunde, ein verbessertes Verfahren zum Erzeugen von Taktsignalen für einen zyklusgenauen FPGA-gestützten Hardware-Beschleuniger zum Simulieren von Operationen einer zu prüfenden Einheit zu schaffen.
  • Die der Erfindung zugrunde liegende Aufgabe wird jeweils mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • Eines von mehreren Entwicklungs-Problemen, die beim Aufbau von Beschleunigern zur Hardware-Simulation auftreten, ist die Zyklusgenauigkeit. Der FPGA-gestützte Hardware-Beschleuniger muss mit dem Verhalten der DUT zyklusweise exakt übereinstimmen, was bedeutet, dass, wenn die DUT auf einem Software-Simulator simuliert wird oder wenn die DUT auf einem einzigen Chip oder auf mehreren Chips aufgebaut ist, alle drei Systeme - der Hardware-Simulator, der Software-Simulator und der DUT-Chip - bei jedem Taktzyklus der DUT in demselben Zustand sein sollten. Dies wird zu einem erheblichen Problem bei der Entwicklung von Hardware-Beschleunigern, da der DUT-Aufbau unterschiedliche Speicherarten enthalten kann - Register-Arrays, SRAMs, eingebettete oder externe DRAMs. Alle diese DUT-Speichertypen müssen dem FPGA-On-Chip-Speicher oder dem externen Speicher zugeordnet sein, der mit dem FPGA verbunden ist.
  • Ein weiteres Entwicklung-Problem beim Aufbau von Hardware-Simulations-Beschleunigern ist die Zyklusreproduzierbarkeit, die folgendermaßen definiert ist: mehrere Ausführungen, die von derselben Ausgangsbedingung begonnen werden, sollen für alle DUT-Zustände einen identischen Verlauf ergeben. Jedes Mal, wenn eine Simulation bei exakt gleichem Stimulus ausgeführt wird, sollten durch den Simulator exakt dieselben Ergebnisse erzielt werden. In einigen Fällen kann das System möglicherweise auf verschiedenen Optimierungsstufen betrieben werden. Auf der höchsten Optimierungsstufe verläuft die Simulation sehr schnell ab und wird verwendet, um festzustellen, dass alles in Ordnung ist. Wenn jedoch etwas nicht in Ordnung ist und das durch die optimierte Simulation angezeigt wird, ist es erwünscht, diese Simulation auf einer niedrigeren Optimierungsstufe zu reproduzieren, die eine gute Ablaufverfolgung für ein Austesten bei der Schaltung ergibt. Die beiden Simulationen sollten sich exakt gleich verhalten, andernfalls wäre es nicht möglich, die Schaltung auf diese Weise auszutesten. Auch wenn diese Eigenschaft der Zyklusreproduzierbarkeit üblicherweise bei Software-Umsetzungen des Simulators in einfacher Weise sichergestellt werden kann, wird sie zu einem erheblichen Problem, wenn die Software-Technik durch eine Technik mit Hardware-Beschleunigern ersetzt wird. In einem oder in mehreren Fällen stellt dieser Aspekt eine der schwerwiegenderen Einschränkungen dar, inwieweit es möglich ist, die Simulation einer digitalen Schaltung zu beschleunigen.
  • Eine Zyklusreproduzierbarkeit ist wesentlich, um ein wirksames Austesten der Simulation zu ermöglichen, und diese Anforderung schränkt ein, wie Takterzeugung und Zurücksetzen des gesamten Beschleunigungssystems umgesetzt werden. Die Anforderung nach Zyklusreproduzierbarkeit vergrößert außerdem das schwer zu lösende Problem, den DUT-Speicher auf der Beschleuniger-Plattform abzubilden. Da der Speicher der DUT einen großen Teil des Systemzustands ausmacht, muss der gesamte adressierbare Inhalt dieses Speichers in geeigneter Weise initialisiert und vorgehalten werden, damit er mit dem der Software-Simulation und der endgültigen Chip-Umsetzung übereinstimmt.
  • Es ist zu erwarten, dass FPGA-gestützte Simulations-Beschleuniger denselben Grad der Austestmöglichkeit bieten, den auch ein Software-gestützter Simulator bereitstellt, und zwar: Einzelschritt-Ausführung, Einfügen von Haltepunkten und Erzeugen von Signalmustern (waveform generation).
  • KURZDARSTELLUNG
  • Ausführungsformen der Erfindung stellen ein Verfahren, System und Computerprogrammprodukt bereit, um Taktsignale für einen zyklusgenauen FPGA-gestützten Hardware-Beschleunigern zu erzeugen, der zum Simulieren einer zu prüfenden Einheit (DUT) verwendet wird. Bei einer Ausführungsform enthält die DUT mehrere Einheiten-Taktgeber, die mehrere Einheiten-Taktsignale bei mehreren Frequenzen und bei einem definierten Frequenzverhältnis erzeugen; und der FPGA-gestützte Hardware-Beschleuniger enthält mehrere Beschleuniger-Taktgeber, die mehrere Beschleunigern-Taktsignale erzeugen, um den FPGA-gestützten Hardware-Beschleunigern zum Simulieren der Operationen der DUT zu betreiben. Bei einer Ausführungsform beinhaltet das Verfahren Zuordnen von Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger und Erzeugen von Beschleuniger-Taktsignalen bei mehreren Frequenzen und bei dem definierten Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber, um die Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten.
  • Bei einer Ausführungsform handelt es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber, bei den Einheiten-Taktgebern handelt es sich um Taktgeber, die angehalten werden können, und die freilaufenden Taktgeber sind mit den Taktgebern, die angehalten werden können, phasenverriegelt.
  • Bei einer Ausführungsform beinhaltet das Zuordnen von Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger ein Ausführen von definierten synchronen Ereignissen und von definierten asynchronen Ereignissen an dem FPGA; wobei alle definierten asynchronen Ereignissen, die an dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des FPGA-gestützten Hardware-Beschleunigers aufrechtzuerhalten.
  • Bei einer Ausführungsform beinhaltet das Verfahren des Weiteren ein Verwenden des FPGA-gestützten Hardware-Beschleunigers zum Steuern der Frequenzen der mehreren Einheiten-Taktgeber.
  • Bei einer Ausführungsform wird der FPGA-gestützte Hardware-Beschleuniger zum Erzeugen der mehreren Einheiten-Taktsignale verwendet.
  • Bei einer Ausführungsform wird eine Einzeltaktquelle in dem FPGA-gestützten Hardware-Beschleuniger zum Erzeugen aller Einheiten-Taktsignale verwendet.
  • Bei einer Ausführungsform weist das Verfahren des Weiteren ein Anhalten und ein anschließendes Neustarten der Einheiten-Taktgeber zu bestimmten Zeitpunkten. Wenn die Einheiten-Taktgeber neu gestartet werden, weisen die Einheiten-Taktgeber Anlaufphasen auf, wobei die Anlaufphasen aller Einheiten-Taktgeber gleich sind, um eine Zyklusreproduzierbarkeit bei der DUT bereitzustellen.
  • Bei einer Ausführungsform weisen die mehreren Frequenzen der Einheiten-Taktgeber eine Frequenz des kleinsten gemeinsamen Vielfachen auf. Ein Einzelgeneratortakt wird zum Erzeugen eines Generator-Taktsignals auf der Frequenz des kleinsten gemeinsamen Vielfachen verwendet, wobei alle Einheiten-Taktsignale aus diesem Generator-Taktsignal erzeugt werden.
  • Bei einer Ausführungsform weist der FPGA-Hardware-Beschleuniger eine Vielzahl von FPGAs auf, wobei ein erstes der FPGAs Signale über mehrere Leitungen zu einem zweiten der FPGAs überträgt. Die maximale Frequenz für die DUT wird folgendermaßen ermittelt:
    • C ist gleich der Anzahl der Vielfalt von Leitungen;
    • Cw ist eine definierte maximale Frequenz eines definierten Zyklus, bei dem die C Leitungen betrieben werden können, um die Signale von dem ersten FPGA zu dem zweiten FPGA zu übertragen;
    • P ist eine definierte maximale Anzahl der Signale, die von dem ersten FPGA zu dem zweiten FPGA übertragen werden;
    • M = P/C;
    • L ist die Anzahl der definierten Zyklen, die erforderlich sind, damit die Signale von dem ersten FPGA zu dem zweiten FPGA übertragen werden; und
    • die DUT wird bei einer Frequenz betrieben, die kleiner als eine definierte maximale Einheiten-Frequenz Ca oder gleich dieser ist, wobei gilt: Ca ist kleiner als oder gleich Cw/(M+L).
  • Bei einer Ausführungsform enthält die DUT einen DUT-Speicher, der einen oder mehrere Leseanschlüsse und einen oder mehrere Schreibanschlüsse aufweist, und ein Wert Nd wird so eingestellt, dass er gleich dem größeren Wert von der Anzahl der Leseanschlüsse und der Anzahl der Schreibanschlüsse des DUT-Speichers ist. Die DUT weist eine Datenbreite von Wd auf, und der auf FPGA-Hardware gestützte Beschleuniger weist eine Datenbreite von Wt auf. Der auf FPGA-Hardware gestützte Beschleuniger enthält einen oder mehrere Ziel-Speicher, und At ist eine vorgegebene Anzahl, die die Anzahl der definierten Taktzyklen darstellt, die in Anspruch genommen werden, um eine Lese- oder eine Schreiboperation an dem Speicher des auf FPGA-Hardware gestützten Beschleunigers auszuführen. Der DUT-Takt Ca' und der Ziel-Speicher-Takt genügen der folgenden Gleichung: Ca' ist kleiner als oder gleich Cm/((Wd/vVt)(At + Nd). Die Gleichungen:
    • Ca' ist kleiner als oder gleich Cm/((Wd/VVt)(At + Nd); und
    • Ca ist kleiner als oder gleich Cw/(M + L),
    werden gleichzeitig gelöst.
  • Bei einer Ausführungsform enthält der FPGA-Hardware-Beschleuniger eine Vielzahl von FPGAs, und jedes der FPGAs ist einem Ziel-Speicher zugehörig und enthält eine Taktgeneratorschaltung zum Erzeugen eines FPGA-Taktsignals. Die DUT wird in definierte Zyklen bei einer definierten Frequenz betrieben. Bei einer Ausführungsform beinhaltet das Zuordnen von Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger ein Verwenden der FPGA-Taktsignale zum Betreiben der Speicher, die der Vielzahl von FPGAs zugehörig sind. Das Erzeugen der Beschleuniger-Taktsignale beinhaltet ein Verwenden der Taktgeneratorschaltungen der Vielzahl von FPGAs zum Erzeugen der FPGA-Taktsignale bei einer Frequenz, die größer ist als die definierte Frequenz, um die Speicher, die der Vielzahl von FPGAs zugehörig sind, bei einer Frequenz zu betreiben, die größer ist als die definierte Frequenz.
  • Bei einer Ausführungsform enthält jedes aus der Vielzahl von FPGAs eine Vielzahl von Ausgabepuffern zum Empfangen des FPGA-Takts von den Taktgeneratoren des jeweiligen FPGA und zum Erzeugen von Ausgabe-Taktsignalen bei unterschiedlichen Frequenzen.
  • Bei einer Ausführungsform enthält jedes aus der Vielzahl von FPGAs des Weiteren einen Taktteiler zum Empfangen des FPGA-Taktsignals von dem Taktgenerator des jeweiligen FPGA zum Erzeugen einer Vielzahl von Austastsignalen (gating signals) und zum Anwenden eines entsprechenden aus der Vielzahl von Austastsignalen auf jeden der Ausgabepuffer des jeweiligen FPGA zum Steuern der Frequenz des Ausgabe-Taktsignals, das durch den jeweiligen Ausgabepuffer erzeugt wird. Ein erster der Ausgabepuffer des jeweiligen FPGA empfängt ein erstes der Austastsignale von dem Takt-Teiler des jeweiligen FPGA und verwendet das erste Austastsignal zum Erzeugen des Ausgabe-Taktsignals des ersten Ausgabepuffers bei einer ersten Frequenz. Ein zweiter der Ausgabepuffer des jeweiligen FPGA empfängt ein zweites der Austastsignale von dem Taktteiler des jeweiligen FPGA und verwendet das zweite Austastsignal zum Erzeugen des Ausgabe-Taktsignals des zweiten Ausgabepuffers bei einer zweiten Frequenz.
  • Figurenliste
    • 1 zeigt ein Simulationssystem, das eine Vielzahl von vor Ort programmierbaren Gate-Array- (FPGA-) Einheiten gemäß einer Ausführungsform der Erfindung enthält.
    • 2 stellt eine beispielhafte Architektur einer FPGA-Einheit dar.
    • 3 veranschaulicht ein Takterzeugungs-Teilsystem in einem FPGA gemäß einer Ausführungsform der Erfindung.
    • 4 zeigt verschiedene Taktimpulse, die in dem Teilsystem von 3 erzeugt werden.
    • 5 zeigt eine Ausführungsform eines Hardware-Beschleunigers gemäß dieser Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Einem Fachmann ist klar, dass Ausführungsformen der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Ausführungsformen der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Des Weiteren können Ausführungsformen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem materiellen Ausdrucksmedium verkörpert wird, das computerlesbaren Programmcode aufweist, der in dem Medium ausgeführt wird.
  • Jede Kombination aus einem oder mehreren computernutzbaren oder computerlesbaren Medien kann genutzt werden. Bei dem computernutzbaren oder computerlesbaren Medium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung, eine Einheit oder ein Ausbreitungsmedium handeln, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Mediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, ein Übertragungsmedium wie jene, die das Internet oder ein Intranet unterstützen, oder eine magnetische Speichereinheit. Es wird angemerkt, dass es sich bei dem computernutzbaren oder computerlesbaren Medium sogar um Papier oder ein anderes geeignetes Medium handeln kann, auf dem das Programm gedruckt ist, da das Programm elektronisch erfasst werden kann, indem das Papier oder das andere Medium optisch abgetastet, dann gegebenenfalls compiliert, interpretiert oder andersartig in geeigneter Weise verarbeitet und anschließend in einem Computerspeicher gespeichert wird. Im Kontext dieses Dokuments kann computernutzbares oder ein computerlesbares Speichermedium jedes Medium sein, das das Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten, speichern, übertragen, verbreiten oder transportieren kann. Das computernutzbare Medium kann ein sich ausbreitendes Datensignal mit computerlesbarem Programmcode enthalten, der darin z.B. im Basisband oder als Teil einer Trägerwelle verkörpert wird. Der computernutzbare Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, Hochfrequenz- (HF-) Medien usw., ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Die vorliegende Erfindung wird hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen. Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, der Befehlsmittel enthält, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
  • Die Computerprogrammbefehle können außerdem in einen Computer oder andere programmierbare Datenverarbeitungsvorrichtungen geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer oder in der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, bereitstellen.
  • Die vorliegende Erfindung bezieht sich auf ein Verwenden von vor Ort programmierbaren Gate-Arrays (FPGAs) zum Simulieren des Betriebs integrierter Schaltungen. Ausführungsformen der Erfindung beziehen sich insbesondere auf ein Erzeugen von Taktsignalen oder Impulsen für einen Hardware-Beschleuniger, der sich auf einen zyklusgenauen FPGA mit reproduzierbarem Zyklus stützt, wobei das FPGA zu Modellieren einer integrierten Schaltung verwendet wird.
  • FPGAs werden häufig zum Simulieren digitaler Schaltungen verwendet. Der VHDL- oder Verilog-Code (oder ein anderer ähnlicher Code), der die digitale Logikschaltung beschreibt, kann für eine FPGA-Plattform synthetisiert und anschließend für eine sehr große Anzahl von Zyklen betrieben werden, um deren Verhalten zu beobachten. Große digitale Schaltungen sind üblicherweise viel größer als jene, die mit einem einzelnem FPGA simuliert werden können, und die Simulation einer großen digitalen Schaltung kann möglicherweise FPGAs im Bereich zwischen 10 und 100 FPGAs erforderlich machen. Des Weiteren kann die Simulation einer großen digitalen Schaltung verschiedene Typen von Operationen, z.B. Einzelschritt, Erzeuge Signalverlauf oder Modifiziere Registerwerte oder zum Ausführen einer, einiger oder aller anderen Operationen, die einer modernen Simulationsumgebung gemeinsam sind, erfordern.
  • Ein Simulator, der unter Verwendung einer großen Anzahl von FPGAs umgesetzt ist, erfordert üblicherweise, dass alle diese FPGAs so koordiniert werden, dass sich die unterschiedlichen Teile der zu prüfenden digitalen Schaltung im Gleichschritt befinden und im Gleichschritt bleiben, selbst wenn möglicherweise asynchrone Simulationsereignisse auftreten. Eine Abrufanforderung von einem FPGA muss sich beispielsweise bis zum Ende des aktuellen Zyklus bis zu allen FPGAs in dem Simulator verbreiten, so dass zyklusgenaue Informationen erhalten bleiben und in dem Simulator abgetastet (oder auf andere Weise) ausgelesen werden können. Das stellt eine Möglichkeit dar, wie Aussagen, Druckkommentare und Einzelschrittverarbeitung neben weiteren Funktionen in dem Simulator umgesetzt werden können.
  • Mehrere Schaltungen und Synchronisationsprotokolle können in einer FPGA-Simulator-Infrastruktur umgesetzt werden, die ein zyklusweises Synchronisieren einer großen Anzahl von FPGAs ermöglichen, Einzelschrittverarbeitung zulassen, ermöglichen, dass ein FPGA in dem System die Simulation am Ende des aktuellen Zyklus anhält, und/oder unabhängig davon, wie sie betrieben werden, eine Zyklusreproduzierbarkeit garantieren.
  • Die für die Synchronisation verwendeten Schaltungen können in die folgenden Kategorien klassifiziert werden: Anlaufschaltungen mit schnellem Takt, ununterbrochen betriebene Schaltungen und Schaltungen, die lediglich während einer Simulation betrieben werden. Anlaufschaltungen erzeugen einen globalen synchronen Zustand am Beginn der Simulation. Sie beinhalten globale Rücksetz-Synchronisation, globale Takt-Synchronisation, Aktualisierung der seriellen Verbindung und dergleichen. Ununterbrochen betriebene Schaltungen beginnen den Betrieb, nachdem die Anlaufschaltungen eine anfängliche Synchronisation beendet haben, und werden unabhängig davon, ob die Simulation abläuft, weiterhin betrieben. Diese Schaltungen beinhalten die eigentlichen seriellen Verbindungen, das Abtasten des Taktgeber-Quittungsbetriebs, das Verarbeiten von Simulationsbefehlen und dergleichen. Sie beinhalten alle funktionalen Taktgeber, die angehalten werden können, Simulationszähler und dergleichen.
  • In 1 enthält ein beispielhaftes System gemäß einer Ausführungsform der Erfindung eine Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102, die gemäß einer Verbindungstopologie untereinander verbunden sind und Teile eines Ziel-Systems sowie ein Steuermodul, das mit der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102 verbunden ist, zuordnet. Bei einem nicht einschränkenden Beispiel enthält das Steuermodul einen Host-Steuercomputer 116, der Host-Steuersoftware ausführt, ein globales vor Ort programmierbares Steuer-Gate-Array 110, das mit dem Host-Steuercomputer verbunden ist, und wenigstens ein erstes lokales vor Ort programmierbares Gate-Array 114, das mit dem globalen vor Ort programmierbaren Steuer-Gate-Array und wenigstens einem ersten Teil der vor Ort programmierbaren Ziel-Gate-Arrays 1023 verbunden ist.
  • In einigen Fällen kann das System von 1 des Weiteren eine Gruppe von freilaufenden seriellen Punkt-zu-Punkt-Datenübertragungsverbindungen 112 enthalten. Die Gruppe von freilaufenden seriellen Punkt-zu-Punkt-Datenübertragungsverbindungen verbindet die Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102 gemäß der Verbindungstopologie. Bei einigen Ausführungsformen ahmt die Verbindungstopologie die des Ziel-Systems nach. Einige Ausführungsformen können wenigstens ein vor Ort programmierbares Router-Gate-Array 104 enthalten, das wenigstens einen Teil der vor Ort programmierbaren Ziel-Gate-Arrays 102 verbindet.
  • Das globale vor Ort programmierbare Steuer-Gate-Array 110 ist so eingerichtet, dass es die Simulation des Zielsystems unter der Steuerung der Host-Steuersoftware auslöst, anhält und im Einzelschrittbetrieb ausführt. Das wenigstens erste lokale vor Ort programmierbare Steuer-Gate-Array 114 ist so eingerichtet, dass es den wenigstens ersten Teil der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays direkt steuert und System-Steuerbefehle von dem globalen vor Ort programmierbaren Steuer-Gate-Array und zu diesem weiterleitet.
  • Bei einigen Ausführungsformen können zwei oder mehrere lokale vor Ort programmierbare Steuer-Gate-Arrays 114 vorhanden sein, die mit dem globalen vor Ort programmierbaren Steuer-Gate-Array 110 verbunden sind, und jedes lokale vor Ort programmierbare Steuer-Gate-Array kann ein oder mehrere der vor Ort programmierbaren Ziel-Gate-Arrays 102 steuern. Bei einigen Ausführungsformen kann das lokale vor Ort programmierbare Steuer-Gate-Array 110 ferner so eingerichtet sein, dass es Dienst-Anforderungsereignisse von den lokalen vor Ort programmierbaren Steuer-Gate-Arrays empfängt und diese zusammenführt, und eine Simulation für Dienst- oder Fehlerberichtsereignisse anhält, die von der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays ausgehen. Die lokalen vor Ort programmierbaren Steuer-Gate-Arrays können außerdem für eine direkte Steuerung von (einem oder mehreren) entsprechenden Teilen der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102 zuständig sein. Bei einigen Ausführungsformen beinhaltet eine direkte Steuerung der entsprechenden Teile der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays durch die lokalen vor Ort programmierbaren Steuer-Gate-Arrays ein Herunterladen einer Konfiguration des vor Ort programmierbaren Ziel-Gate-Array und ein Initialisieren des Speicherabbilds.
  • Zu zusätzlichen Elementen gehören ein symmetrisches Taktverteilungsnetzwerk 106, das so eingerichtet ist, dass es ein Referenz-Taktsignal 107 verteilt, und ein symmetrisches Rücksetz-Verteilungsnetzwerk 108, das mit dem Steuermodul verbunden ist und so eingerichtet ist, dass es ein Rücksetzsignal zu der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays verteilt. Das Steuermodul und das symmetrische Rücksetz-Verteilungsnetzwerk sind gemeinsam so eingerichtet, dass sie eine Simulation des Zielsystems mit der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays auslösen und steuern.
  • In den 1 und 2 befindet sich eine Vielzahl Lokaltakt-Steuerzustands-Maschinen 226 in den vor Ort programmierbaren Ziel-Gate-Arrays 102. Die Lokaltakt-Steuerzustands-Maschinen sind mit dem symmetrischen Taktverteilungsnetzwerk verbunden und erhalten von diesem das Referenz-Taktsignal. Die Vielzahl von Lokaltakt-Steuerzustands-Maschinen ist so eingerichtet, dass sie eine Gruppe von synchronisierten freilaufenden Taktgebern und Taktgebern 227, 229, die angehalten werden können erzeugen, um eine zyklusgenaue und zyklusreproduzierbare Ausführung der Simulation des Ziel-Systems aufrechterhalten.
  • Bei einer oder mehreren Ausführungsformen verteilt das symmetrische Taktverteilungsnetzwerk 106 das Referenz-Taktsignal 107 bei einem geringen Versatz. Das symmetrische Rücksetz-Verteilungsnetzwerk 108 verteilt das Rücksetzsignal bei einem geringen Versatz; wobei es sich bei dem Rücksetzsignal bei einer oder mehreren Ausführungsformen um ein pegelempfindliches Rücksetzsignal handelt. Der hier verwendete Ausdruck „geringer Versatz“ bezieht sich auf das Referenz-Taktsignal in der Weise, dass der gesamte Versatz des symmetrischen Rücksetz-Verteilungsnetzwerks 108 vom frühesten Eintreffen bis zu spätesten Eintreffen klein ist in Bezug auf die Zyklusdauer des Referenz-Taktsignals, deshalb kann garantiert werden, dass es überall faktisch in demselben Taktzyklus eintrifft.
  • Bei einigen Ausführungsformen handelt es sich bei dem Referenz-Taktsignal 107 um die höchste Taktfrequenz in der Vorrichtung; und bei anderen Ausführungsformen stellt das Referenz-Taktsignal 107 ein Referenzsignal zum Erzeugen einer höchsten Taktfrequenz in der Vorrichtung dar. In den letzteren Fällen enthält die Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102 des Weiteren eine Vielzahl von Phasenregelschleifen (phase-locked loops), die aus dem Referenzsignal die höchste Taktfrequenz erzeugen. Einige Ausführungsformen enthalten wenigstens eine externe Speichereinheit 224, auf die von der Vielzahl von vor Ort programmierbaren Ziel-Gate-Arrays 102 zugegriffen werden kann und die Testcode zum Ausführen der Simulation des Zielsystems enthält. Zusätzliche Einzelheiten über auf FPGA gestützte Hardware-Beschleunigern, die bei Ausführungsformen der Erfindung verwendet werden können, sind in der US-Patentanmeldung Nr. 12/941 834 „Method And Infrastructure For Cycle-Reproducible Simulation On Large Scale Digital Circuits On A Coordinated Set Of FPGAs“ beschrieben, die am 8. November 2010 eingereicht wurde und hier in ihrer Gesamtheit durch Bezugnahme eingeschlossen ist.
  • Bei einer Ausführungsform des Betriebs des Simulationssystems 100 werden Momentaufnahmen in regelmäßigen Intervallen gesammelt, um eine Periode zu identifizieren, von der ein Fehler stammt, und anschließend wird ein vollständigeres Signalmuster in der identifizierten Periode, in der der Fehler auftritt, über eine Simulationswiederholung bei einer feineren Granularität erhalten. Anstelle der Verwendung eines vollständigen Verlaufs der Simulation, was eine lange Zeit in Anspruch nimmt, kann beispielsweise eine Momentaufnahme jeweils nach einer vorgegebenen Anzahl von Zyklen (z.B. mehrere tausend) aufgenommen werden und die erste Momentaufnahme, bei der der Fehler auftritt, kann ermittelt werden. Ein vollständiger Verlauf kann (durch zyklusweise Momentaufnahmen) zwischen der letzten Momentaufnahme vor dem Beobachten des Fehlers und der ersten Momentaufnahme, bei der der Fehler bemerkt wird, ausgeführt werden.
  • Zum Erreichen dieser Simulation ist es wichtig, sowohl Zyklusgenauigkeit als auch Zyklusreproduzierbarkeit zu erzielen. Das stellt ein erhebliches Problem bei der Entwicklung von Hardware-Beschleunigern dar und schränkt ein, wie die Taktversorgung und das Zurücksetzen des Beschleunigungssystems umgesetzt werden.
  • Das Entwickeln einer Takterzeugungsschaltung und eines Verteilungsnetzwerks für einen FPGA-gestützten Hardware-Beschleuniger ist ein mehrdimensionales Problem. Die DUT, die dem FPGA-Beschleuniger zugeordnet werden soll, kann selbst mehrere Taktgeber aufweisen. Für eine Zyklusgenauigkeit müssen sämtliche DUT-Taktgeber untereinander das exakt gleiche Verhältnis in der zugeordneten Version des Entwurfs aufweisen, wie es auch bei der ASIC-Umsetzung der Fall wäre. Diese lineare Abwärtsskalierung ist erforderlich, um verschiedene Funktionen zu realisieren. Es seien C1, C2, C3, Cn die N Taktgeber, die in der DUT vorhanden sind. Bei Ausführungsformen der Erfindung verwendet der FPGA-Beschleuniger eine einzige Taktquelle, um sämtlich DUT-Taktsignale zu erzeugen. Wenn bei anderen Ausführungsformen der Erfindung der Beschleuniger mehrere Taktquellen verwendet, stammen diese Taktquellen von einem einzelnen Referenz-Taktgeber. Wenn diese Bedingung nicht eingehalten wird, können unterschiedliche Taktgeber unterschiedliche Anlaufphasen aufweisen. Diese Phasen-Mehrdeutigkeit bei DUT-Taktphasen beim Anlaufen verursacht einen Verlust der Zyklusreproduzierbarkeit. Um einen einzelnen Generatortakt zu erhalten, der sämtliche DUT-Taktgeber erzeugt, sollte der Generatortakt somit die folgende Formel erfüllen: Cgc = das kleinste gemeinsame Vielfache von  ( C 1,  C 2,  C 3,  Cn )
    Figure DE112013000758B4_0001
  • Wobei Cgc einen hypothetischen Generatortakt für DUT- (ASIC-) Frequenzen darstellt. Zum Berechnen des entsprechenden Generatortakts für den FPGA-Hardware-Beschleuniger müssen zusätzliche Randbedingungen berücksichtigt werden.
  • Bei Ausführungsformen der Erfindung erfüllt eine DUT, die Bereiche asynchroner Taktgeber aufweist, ebenfalls die Gleichung (1). Selbst wenn C1, C2, Cn zueinander asynchron sind, kann eine einzelne Taktgeneratorfrequenz Cgc verwendet werden, um in dem Hardware-Beschleuniger alle Takte zu erzeugen. Das ist erforderlich, um eine Zyklusreproduzierbarkeit des Simulators aufrechtzuerhalten. Ein Fehlen dieser Eigenschaft kann es schwierig oder unmöglich machen, Fehler in der DUT konsistent zu reproduzieren, wenn sie in einem Hardware-Beschleuniger simuliert wird.
  • Wie oben festgestellt muss die DUT möglicherweise auf mehrere FPGAs aufgeteilt werden. Ein Hardware-Beschleuniger kann hunderte derartige FPGAs aufweisen, die miteinander verbunden sind. Infolge von Pin-Einschränkungen an dem FPGA werden bei Ausführungsformen der Erfindung Signale an dem sendenden FPGA gemultiplext und an dem empfangenden FPGA werden sie demultiplext. Um jede Abweichung von der Zyklusgenauigkeit zu vermeiden, kann der Multiplexer/Demultiplexer oder SerDes als eine Leitung zu der restlichen DUT-Logik erscheinen. Um das zu erreichen, wird der SerDes im Vergleich zu der DUT bei einer viel höheren Rate getaktet. Der Frequenzunterschied zwischen der SerDes-Leitungsrate und der DUT-Taktrate kann genutzt werden, um ein leitungsähnliches Verhalten zu erhalten.
  • Es sei C die Anzahl von Leitungen, die zum Übertragen von Signalen auf der gedruckten Leiterplatte (PCB) zwischen zwei FPGAs zur Verfügung stehen. Das wird gewöhnlich durch die Systemkosten und/oder die Einschränkung an der Anzahl von FPGA-E/A-Pins und Signalübertragungs-Ressourcen entschieden, die auf der gedruckten Leiterplatte zur Verfügung stehen. Es sei P die maximale Anzahl von Funktionssignalen, die zwischen den beiden FPGAs geleitet werden sollen. Somit ist das Worst-Case-Multiplex-Verhältnis M für ein homogenes System definiert als: M = P / C
    Figure DE112013000758B4_0002
  • Der Ausdruck homogen bezeichnet einen Multiplexer mit einem einzigen Multiplex-Verhältnis M, das im System überall verwendet wird. Ausführungsformen der Erfindung stellen Techniken zur Leistungsverbesserung dar, bei denen heterogene Systeme betrachtet werden.
  • Es sei Cw die maximale Taktfrequenz, bei der die C Leitungen auf der PCB betrieben werden können. Cw wird durch verschiedene Faktoren beschränkt wie z.B. die Qualität des Materials der gedruckten Leiterplatte, Sender/Empfänger-Aufbau, Packungsdichte, Übersprechen zwischen Leitungen, Zwischenzeichen-Störungen usw. Es sei L die Anzahl von Cw-Zyklen , die erforderlich sind, um das Signal zwischen den beiden FPGAs zu übertragen. Somit repräsentiert L die Latenzzeit der Verbindung und beinhaltet die Ausbreitungsdauer zwischen den beiden FPGAs, Ausbreitungsverzögerungen in Ausgabe-Treibern und Eingabe-Empfängern der beiden FPGAs und alle zusätzlichen Zyklen, um Taktphasenunterschiede zwischen zahlreichen FPGAs auszugleichen.
  • Durch die drei Variablen M, Cw und L, die oben beschrieben wurden, wird die maximale Taktfrequenz festgelegt, bei der die DUT in dem Beschleuniger betrieben werden kann. Diese soll mit Ca bezeichnet werden. Ca < = Cw / ( M + L )
    Figure DE112013000758B4_0003
  • Gleichung (3) kann außerdem verwendet werden, um die Grundlage für ein zyklusgenaues Verhalten dieser Verbindungen zu bilden. Solange die Latenzzeit von Übertragung und Empfang kleiner ist als die Periode des DUT-Zyklus, wird die gesamte Verbindung wie eine Leitung zu der DUT erscheinen.
  • Bei Ausführungsformen der Erfindung werden lediglich natürliche Werte für die DUT-Taktfrequenz Ca verwendet, d.h., Ca gehört zu der Menge natürlicher Zahlen. Durch diese Bedingung wird die Gleichung 3 von einer linearen Funktion zu einer Treppenfunktion transformiert.
  • Für ein System, das ein homogenes Multiplex-Verhältnis M (aus Gleichung (2)) verwendet, muss der Datenaustausch über mehrere FPGAs innerhalb eines einzelnen Zyklus des Takts Ca (von Gleichung 3) abgeschlossen sein.
  • Es sei Cd die maximale Frequenz aller DUT-Taktgeber. Cd = maximum ( C 1,  C 2,  C 3,  Cn )
    Figure DE112013000758B4_0004
  • Aus den Gleichungen 1, 3 und 4 kann der Generatortakt für einen Hardware-Beschleuniger mit homogenem Multiplex-Verhältnis berechnet werden als: Cga = Cgc * Ca / Cd
    Figure DE112013000758B4_0005
  • Die Gleichungen 1 bis 5 vereinfachen die Berechnung und Umsetzung des Takterzeugungsnetzwerks, sie weisen jedoch die Einschränkung auf, dass das gesamte System auf der Grundlage des Worst-Case-Multiplex-Verhältnisses skaliert wird.
  • Um den oben genannten Einschränkungen Rechnung zu tragen, können die Signale, die FPGA-Grenzen überschreiten, gemäß ihrer Taktbereiche in mehrere Gruppen unterteilt werden, wobei für die SerDes-Verbindungen optimale Multiplex-Verhältnisse vorgesehen werden. Um das zu erreichen, wird die Gleichung (3) für jeden Taktbereich berechnet und gleichzeitig gelöst.
  • Die FPGA-gestützten Hardware-Beschleuniger benötigen Zugriff auf einen Speicher. Für den Speicher könnte der Speicher der DUT oder ein zusätzlicher Austest-Speicher in Frage kommen. Es wird der Fall betrachtet, bei dem ein DUT-Speicher einem Speicher zugeordnet wird, der in der Form von SRAM oder DRAM auf einer Leiterplatte eines FPGA-Hardware-Beschleunigers vorhanden ist. Dieser Speicher wird als Ziel-Speicher bezeichnet.
  • Bei der Zuordnung des DUT-Speichers zum Zielspeicher spielen mehrere Faktoren eine Rolle, die die Berechnung von Beschleuniger-Taktgebern beeinflussen. Zu diesen Faktoren gehören Zuordnen von mehreren Lese/Schreib-Anschlüssen im DUT-Speicher zu einem einzelnen Lese/Schreib-Anschluss des Zielspeichers, Berücksichtigen von Unterschieden der Datenbreite zwischen der DUT und dem Zielspeicher usw.
  • Wie bei SerDes-Verbindungen muss auch der Zielspeicher übergetaktet (hyper clocked) werden, um eine Zyklusgenauigkeit zwischen der DUT und den Zielspeicher-Modellen aufrechtzuerhalten. Zum Ableiten der Frequenzbeziehung zwischen einem übergetakteten (hyper clocked) Zielspeicher und der DUT-Taktfrequenz sei Cm die maximale Taktfrequenz, bei der der Zielspeicher betrieben werden kann. Der DUT-Speicher, der zugeordnet werden soll, soll Nd Lese- oder Schreibanschlüsse aufweisen, unabhängig davon, welcher Wert größer ist. Nd > = 1
    Figure DE112013000758B4_0006
  • Es sei angenommen, dass Zielspeicher einen einzelnen Lese/Schreibanschluss aufweisen und dass die Datenbreite des DUT-Speichers Wd und die des Zielspeichers Wt ist. Wd > = Wt
    Figure DE112013000758B4_0007
  • Es sei At soll die Worst-Case-Anzahl von Zyklen sein, die für den Takt Cm benötigt werden, um einen Lese- oder Schreibvorgang an dem Zielspeicher auszuführen.
  • Zum Aufrechterhalten der Zyklusgenauigkeit müssen der DUT-Takt Ca' und der Zielspeicher-Takt die folgende Gleichung erfüllen: Ca ' < = Cm / ( ( Wd / Wt ) * ( At + Nd ) )
    Figure DE112013000758B4_0008
  • Es wird angemerkt, dass Ca' aus Gleichung 8 dieselbe Frequenz darstellen könnte wie Ca aus Gleichung 3, und deshalb sollten diese Gleichungen gleichzeitig gelöst werden, um eine optimale Lösung zu erhalten. Die möglichen Lösungen für Gleichung 8 müssen ebenfalls in der Menge der natürlichen Zahlen liegen.
  • Nachdem alle Taktfrequenzen berechnet wurden, besteht das nächste Problem darin, die Takt-Erzeugungs- und Verteilungsmechanismen zu entwerfen. In einem Beschleuniger könnten möglicherweise hunderte FPGAs vorhanden sein, die miteinander verbunden sind. Das führt zu zwei unterschiedlichen Szenarien:
    1. 1. Zentralisierte Taktgeneratorschaltung in einem FPGA, die alle Taktsignale zu den restlichen FPGAs in dem System verteilt. Diese Technik hat komplexe Mehrfachtaktverteilungsnetzwerke zur Folge.
    2. 2. Verteilen eines einzelnen Referenztakts Cga zu allen FPGAs in dem System und lokales Nachbilden der Takterzeugungsschaltung in jedem FPGA.
  • Bei Ausführungsformen der Erfindung kommt der zweite Ansatz zur Verwendung, da er ein Verteilen eines einzigen Takts in dem System erfordert.
  • Bei den meisten handelsüblichen FPGAs werden zum Erzeugen von Takten Phasenregelkreise (PLLs) bereitgestellt. Wenn der PLL zum Erzeugen aller Taktsignale verwendet wird, stellt das Verteilen dieser Signale mit FPGA und das Ausführen einer Mehrfrequenz-Zeitablaufanalyse trotzdem ein komplexes Problem dar. Bei Ausführungsformen der Erfindung werden Vorschläge einer zweiteiligen Lösung verwendet:
    1. 1. Verwenden des PLL von jedem FPGA zum Verringern von Jitter in dem Generatortaktsignal Cga und zum Erzeugen aller Hyper-Takte, die erforderlich sind, um dem Multiplexer/Demultiplexer sowie den Speicher des FPGA zu betreiben.
    2. 2. Die reine Version des durch den PLL erzeugten Signals Cga kann dann verwendet werden, um alle DUT-Takte unter Verwendung von Phasenhalteschemas zu erzeugen, wobei sich die Phasenhalteschemas auf das Austasten der Impulse vom Generatortakt beziehen, um einen DUT-Takt mit niedrigerer Frequenz zu erhalten.
  • 3 veranschaulicht die Takterzeugung in einem FPGA. Die Verwendung des Phasenhalteschemas löst mehrere Probleme. Sie macht erstens die Zeitablaufanalyse einfacher und schneller. Zweitens kann das Austastsignal zum Halten der Taktphase außerdem mit einem Signal verknüpft werden, das ein Beginnen und Anhalten von DUT-Takten ermöglicht.
  • Wie in Gleichung (1) und Gleichung (5) veranschaulicht handelt es sich bei den Generatortaktfrequenzen um kleinste gemeinsame Vielfache der DUT-Taktfrequenzen. Deswegen kann das Austastsignal, das zum Phasenhalten benötigt wird, durch einfaches Teilen des Generatortakts erhalten werden.
  • 3 zeigt im Einzelnen den PLL 302, den Taktteiler 304 und die Ausgabepuffer 306, 310. Der PLL empfängt zwei Eingaben, das Referenztaktsignal Cga und ein Rückführsignal. Der PLL gibt drei Taktsignale aus. Zwei dieser Ausgabesignale werden an den SerDes und dem Speicher zugeführt, und das dritte Ausgabesignal wird an dem Taktteiler 304 zugeführt.
  • Der Taktteiler empfängt die Ausgabe vom PLL 302 und erzeugt die gewünschten Austastsignale C1, C2, ..., CN. Jeder Ausgabepuffer 306, 310 empfängt das Taktsignal vom PLL 302 und ein zugehöriges Austastsignal vom Taktteiler. Jeder Ausgabepuffer 306, 310 gibt ein Taktsignal aus, wobei die zeitliche Steuerung dieses Ausgangssignals durch das Austastsignal erfolgt, das dem Ausgabepuffer vom Taktteiler 304 zugeführt wird. Einer der PLL-Ausgänge wird außerdem über den Puffer 312 zum PLL zurückgeführt, um den Zeitablauf der PLL-Ausgaben zu steuern.
  • 4 veranschaulicht den zeitlichen Verlauf der Signale Cga, Gate C1 und C2. Gate C1 hat eine Frequenz, die halb so groß wie die Frequenz von Cga ist. Jeder Impuls von Gate C1 wird verwendet, um ein Taktsignal vom Puffer C1 auszugeben, so dass die Frequenz des Puffers C1 dieselbe ist wie die Frequenz des Signals Gate C1.
  • Alle PLLs in unterschiedlichen FPGAs können zu unterschiedlichen Zeitpunkten einrasten. Außerdem kann der Einrastzeitpunkt eines einzelnen PLL in einem FPGA über mehrere Leistungszyklen nicht vorhergesagt werden. Diese beiden Zeitablauf-Unsicherheiten bewirken den Verlust an Zyklusreproduzierbarkeit des Hardware-Beschleunigers. Um eine Zyklusreproduzierbarkeit aufrechtzuerhalten werden bei Ausführungsformen der Erfindung Zeitsteuerereignisse getrennt:
    1. 1. Nach einem Leistungszyklus, Warten bis alle PLLs einrasten.
    2. 2. Ausgeben eines systemweiten Rücksetzsignals, das über ein Netzwerk mit geringem Versatz verteilt wird. Dieses Rücksetzsignal markiert das Ende der PLL-Verriegelungsphase und den Beginn des Verbindungstrainings sowie der Speicher-Trainingsphase.
    3. 3. Abwarten während einer festen Zeitdauer und Lesen der Zustände von Verbindungen und Speicher.
    4. 4. Ausgeben eines systemweiten Startsignals von DUT-Operationen.
  • Zusätzliche Einzelheiten, die bei Ausführungsformen der Erfindung verwendet werden können, um Zyklusgenauigkeit und Zyklusreproduzierbarkeit aufrechtzuerhalten, werden in der gleichzeitig anhängigen Anmeldung Nr. (Attorney Docket YOR920120158US1) „Cycle Accurate And Cycle Reproducible Memory For An FPGA Based Hardware Accelerator“ beschrieben, die hiermit eingereicht wurde und hier in ihrer Gesamtheit durch Bezugnahme eingeschlossen ist.
  • Somit wird das Problem der Unsicherheit in Bezug auf das Beenden bestimmter Ereignisse gelöst, indem diese Ereignisse auf feste Zeitintervalle beschränkt werden. Des Weiteren wird die Eigenschaft der Zyklusreproduzierbarkeit zu Operationen verlagert, die die DUT betreffen. Sämtliche Infrastruktur-Ereignisse wie Verbindungstraining, Speicherschnittstellentraining werden in separaten festen Zeitintervallen abgewickelt, die beendet werden, bevor der erste DUT-Taktzyklus ausgegeben wird.
  • 5 zeigt den Blockschaltplan des Hardware-Beschleunigers 500 gemäß einer Ausführungsform der Erfindung. Dieser Beschleuniger enthält einen Quarz 502 zum Liefern des Generatortakts, einen Taktverteilungschip 504, der den Generatortakt über symmetrische Takt-Baumstrukturen mehreren FPGAs 506 zuführt. Der Beschleuniger 500 enthält außerdem ein Steuer-FPGA 510, das die oben beschriebenen diskreten Zeitablaufereignisse erzeugt.
  • Eine Verwendung eines Taktteilers zum Erzeugen der DUT-Takte (C1, C2, C3, Cn) aus dem Generatortakt (CGa) hat einen weiteren Vorteil - der Zustand des Teilers ist stets bekannt. Bei Ausführungsformen der Erfindung werden diese Zustandsinformationen verwendet, um die DUT-Taktgeber zu starten und anzuhalten. Um Funktionen wie Einfügen eines Haltepunkts und Einzelschrittverarbeitung zu unterstützen, werden die Taktgeber an einem beliebigen DUT-Zyklus angehalten und nach einer beliebigen abgelaufenen Zeitdauer in demselben Zustand der DUT, in dem die Takte angehalten wurden, neu gestartet. Um das zu erreichen, wird bei diesen Ausführungsformen der Erfindung ein DUT-Zykluszähler verwendet. Dieser Zähler kann unter Verwendung des Takts mit der höchsten Frequenz in der DUT getaktet werden. Der Zähler wird nur dann betrieben, wenn die DUT-Taktgeber laufen. Dieser Zähler ist in der Steuer-FPGA sowie in jedem FPGA des Systems vorhanden.
  • Zum Umsetzen einer Funktion des Einfügens eines Haltepunkts, eine Funktion, die auch in herkömmlichen Software-Simulatoren vorhanden ist, wird der Haltepunktwert in dem Steuer-FPGA eingestellt, und ein Startsignal wird an alle FPGAs gesendet. Das Steuer-FPGA kann dann das Fortschreiten eines Zählerwerts überwachen, bis er den Haltepunkt erreicht. Nachdem der Zählerwert den Haltepunkt erreicht hat, sendet das Steuer-FPGA ein Signal zum Anhalten der DUT-Taktgeber. Das Steuer-FPGA zeichnet außerdem den Zustand des Taktteilers auf.
  • In Ausführungsformen der Erfindung muss dieser Taktteiler stets freilaufend sein, um eine feste Phasenbeziehung zwischen den freilaufenden Hyper-Taktgebern und den DUT-Taktgebern, die angehalten werden können, sicherzustellen. Die Hyper-Takte sollten freilaufend sein, um jedes Mal, wenn die DUT-Taktgeber angehalten werden, ein erneutes Training der Verbindungs- und Speicherschnittstelle zu verhindern. Nach dem Erreichen des Haltepunkts kann der Benutzer die Taktgeber bei Bedarf neu starten. Das Steuer-FPGA wartet, bis der Taktteiler denselben Zustand erreicht wie zu dem Zeitpunkt, als die DUT-Takte angehalten wurden, und nachdem dieser Zustand erreicht wurde, werden die DUT-Taktgeber neu gestartet. Dadurch werden Funktionen ermöglicht wie z.B. Schrittverarbeitung und Haltepunkteinsetzung, ohne dass Zyklusgenauigkeit oder Zyklusreproduzierbarkeit verloren geht. Während der Zeit, in der DUT-Takte angehalten sind, kann der vollständige Zustand der DUT für ein weiteres Austesten extrahiert werden.

Claims (25)

  1. Verfahren zum Erzeugen von Taktsignalen für einen zyklusgenauen FPGA-gestützten Hardware-Beschleuniger, der zum Simulieren von Operationen einer zu prüfenden Einheit (DUT) verwendet wird, wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Frequenzen erzeugen, wobei diese mehreren Einheiten-Frequenzen ein definiertes Frequenzverhältnis aufweisen, wobei das Verfahren aufweist: Zuordnen der Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger, wobei der auf FPGA gestützte Hardware-Beschleuniger mehrere Beschleuniger-Taktgeber enthält, die mehrere Beschleuniger-Taktsignale zum Betreiben des FPGA-gestützten Hardware-Beschleunigers erzeugen, um die Operationen der DUT zu simulieren; und Erzeugen von Beschleuniger-Taktsignalen des FPGA-gestützten Hardware-Beschleunigers bei mehreren Beschleuniger-Frequenzen, wobei diese mehreren Beschleuniger-Frequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten.
  2. Verfahren nach Anspruch 1, wobei: es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber handelt; es sich bei den Einheiten-Taktgebern um Taktgeber handelt, die angehalten werden können; und die freilaufenden Taktgeber mit den Taktgebern, die angehalten werden können, phasenverriegelt sind.
  3. Verfahren nach Anspruch 1, wobei: das Zuordnen der Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger ein Ausführen definierter synchroner Ereignisse und definierter asynchroner Ereignisse an dem FPGA beinhaltet; und alle der definierten asynchronen Ereignisse, die an dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des FPGA-gestützten Hardware-Beschleunigers aufrecht zu erhalten.
  4. Verfahren nach Anspruch 1, das ferner aufweist: Verwenden einer einzigen Taktquelle in dem FPGA-gestützten Hardware-Beschleuniger, um alle der mehreren Einheiten-Taktsignale zu erzeugen; und Verwenden des FPGA-gestützten Hardware-Beschleunigers zum Steuern der Frequenzen der mehreren Einheiten-Taktsignale.
  5. Verfahren nach Anspruch 1, das ferner aufweist: Anhalten und Neustarten der Einheiten-Taktgeber an festgelegten Zeitpunkten; und wobei: die Einheiten-Taktgeber Anlaufphasen aufweisen, wenn die Einheiten-Taktgeber neu gestartet werden; die Anlaufphasen aller Einheiten-Taktgeber gleich sind, um eine Zyklusreproduzierbarkeit in der DUT bereitzustellen; die mehreren Frequenzen der Einheiten-Taktgeber eine Frequenz des kleinsten gemeinsamen Vielfachen aufweisen; und das Verfahren ferner aufweist: Verwenden eines einzigen Generator-Taktgebers zum Erzeugen eines Generator-Taktsignals bei der Frequenz des kleinsten gemeinsamen Vielfachen; und Erzeugen aller der mehreren Einheiten-Taktsignale aus dem Generator-Taktsignal.
  6. Verfahren nach Anspruch 1, wobei: der FPGA-Hardware-Beschleuniger viele FPGAs aufweist; ein erstes der FPGAs Funktionssignale zu einem zweiten der FPGAs über eine Vielzahl von Leitungen sendet; C gleich der Anzahl von der Vielzahl von Leitungen ist; Cw eine definierte maximale Frequenz eines definierten Taktzyklus ist, bei der die Leitungen C betrieben werden können, um die Funktionssignale von dem ersten FPGA zu dem zweiten FPGA zu senden; P eine definierte maximale Anzahl der Funktionssignale ist, die von dem ersten FPGA zu dem zweiten FPGA übertragen werden; wobei M ein Multiplex-Verhältnis ist mit M = P/C; L die Anzahl der definierten Taktzyklen ist, die für die Funktionssignale erforderlich sind, damit sie von dem ersten FPGA zu dem zweiten FPGA übertragen werden; und das Verfahren ferner das Betreiben der DUT bei einer Frequenz beinhaltet, die kleiner als eine definierte maximale Einheitenfrequenz Ca oder gleich dieser ist, wobei gilt: Ca ist kleiner als oder gleich Cw/(M+L).
  7. Verfahren nach Anspruch 6, wobei: die DUT einen DUT-Speicher enthält, der einen oder mehrere Lese-Anschlüsse und einen oder mehrere Schreib-Anschlüsse aufweist Nd auf den größeren Wert von der Anzahl der Lese-Anschlüsse und der Anzahl der Schreib-Anschlüsse des DUT-Speichers eingestellt wird; die DUT eine Datenbreite Wd aufweist und der auf FPGA-Hardware gestützte Beschleuniger eine Datenbreite Wt aufweist; der auf FPGA gestützte Hardwarebeschleuniger einen oder mehrere Zielspeicher aufweist; At eine vorgegebene Zahl ist, die die Anzahl der definierten Taktzyklen darstellt, die zum Ausführen einer Lese- oder Schreiboperation in den einen oder mehreren Zielspeichern des auf FPGA gestützten Hardwarebeschleunigers in Anspruch genommen werden; eine DUT-Taktfrequenz Ca' und eine Taktfrequenz Cm des Zielspeichers die folgende Gleichung erfüllen: Ca' ist kleiner als oder gleich Cm/((Wd/Wt)(At + Nd); und das Verfahren des Weiteren das gleichzeitige Lösen der folgenden Gleichungen beinhaltet: Ca' ist kleiner als oder der gleich Cm/((Wd/Wt)(At + Nd), und Ca ist kleiner als oder der gleich Cw/(M + L).
  8. Verfahren nach Anspruch 1, wobei: der FPGA-Hardware-Beschleuniger eine Vielzahl von FPGAs enthält; jedes der FPGAs einem Zielspeicher zugehörig ist und eine Taktgeneratorschaltung zum Erzeugen eines FPGA-Taktsignals enthält; das Verfahren des Weiteren das Betreiben der DUT in definierten Zyklen bei einer definierten Frequenz beinhaltet; das Zuordnen von Operationen der DUT zu dem auf FPGA gestützten Hardware-Beschleuniger ein Verwenden der FPGA-Taktsignale zum Betreiben der Speicher beinhaltet, die der Vielzahl von FPGAs zugehörig sind; und das Erzeugen der Beschleuniger-Taktsignale ein Verwenden der Taktgeneratorschaltungen der Vielzahl von FPGAs zum Erzeugen der FPGA-Taktsignale bei einer Taktfrequenz beinhaltet, die größer ist als die definierte Frequenz, um die Speicher, die der Vielzahl von FPGAs zugehörig sind, bei einer Speicherbetriebsfrequenz zu betreiben, die größer ist als die definierte Frequenz.
  9. Verfahren nach Anspruch 8, wobei jedes aus der Vielzahl von FPGAs eine Vielzahl von Ausgabepuffern zum Empfangen der FPGA-Taktsignale von den Taktgeneratoren von jedem FPGA und zum Erzeugen von Ausgabe-Taktsignalen bei unterschiedlichen Frequenzen enthält.
  10. Verfahren nach Anspruch 9, wobei: jedes aus der Vielzahl von FPGAs des Weiteren einen Taktteiler zum Empfangen des FPGA-Taktsignals von dem Taktgenerator des jeweiligen FPGA, zum Erzeugen einer Vielzahl von Austastsignalen und zum Anwenden eines entsprechenden Austastsignals von den Austastsignalen auf jeden der Ausgabepuffer des jeweiligen FPGA enthält, um die Frequenz des Ausgabe-Taktsignals zu steuern, das durch jeden der Ausgabepuffer erzeugt wird; ein erster Ausgabepuffer jedes FPGA ein erstes Austastsignal von dem Taktteiler des jeweiligen FPGA empfängt und das erste Austastsignal zum Erzeugen des Ausgabe-Taktsignals des ersten Ausgabepuffers bei einer ersten Frequenz verwendet; und ein zweiter Ausgabepuffer jedes FPGA ein zweites Austastsignal von dem Taktteiler des jeweiligen FPGA empfängt und das zweite Austastsignal zum Erzeugen des Ausgabe-Taktsignals des zweiten Ausgabepuffers bei einer zweiten Frequenz verwendet.
  11. Takterzeugungssystem zum Erzeugen von Taktsignalen für einen zyklusgenauen auf FPGA gestützten Hardware-Beschleuniger, der verwendet wird zum Simulieren von Operationen einer zu prüfenden Einheit (DUT), wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Frequenzen erzeugen, wobei die mehreren Einheiten-Frequenzen ein definiertes Frequenzverhältnis aufweisen, und wobei die Operationen der DUT dem auf FPGA gestützten Hardware-Beschleuniger zugeordnet werden, wobei das Takterzeugungssystem beinhaltet: mehrere Beschleuniger-Taktgeber zum Erzeugen mehrerer Beschleuniger-Taktsignale zum Betreiben des auf FPGA gestützten Hardware-Beschleunigers, um die Operationen der DUT zu simulieren; und eine oder mehrere Takt-Steuereinheiten zum Betreiben der Beschleuniger-Taktgeber des FPGA gestützten Hardware-Beschleunigers zum Erzeugen der Beschleuniger-Taktsignale bei mehreren Beschleuniger-Frequenzen, wobei die mehreren Beschleuniger-Frequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem auf FPGA gestützten Hardware-Beschleuniger aufrechtzuerhalten.
  12. System nach Anspruch 11, wobei: es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber handelt; es sich bei den Einheiten-Taktgebern um Taktgeber handelt, die angehalten werden können; und die freilaufenden Taktgeber mit den Taktgebern, die angehalten werden können, phasenverriegelt sind.
  13. System nach Anspruch 11, wobei: definierte synchrone Ereignisse und definierte asynchrone Ereignisse in den FPGA ausgeführt werden; und alle definierten asynchronen Ereignisse, die in dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des auf FPGA gestützten Hardware-Beschleunigers aufrechtzuerhalten.
  14. Takterzeugungssystem nach Anspruch 11, wobei sich die mehreren Beschleuniger-Taktgeber und die Taktgeber-Steuereinheiten in dem auf FPGA gestützten Hardware-Beschleuniger befinden.
  15. Takterzeugungssystem nach Anspruch 11, wobei: der FPGA-Hardware-Beschleuniger eine Vielzahl von FPGAs enthält; jedes der FPGAs einem Zielspeicher zugehörig ist und eine Takterzeugungsschaltung zum Erzeugen eines FPGA-Taktsignals enthält; die DUT in definierten Zyklen bei einer definierten Frequenz betrieben wird die Beschleuniger-Taktgeber die Speicher betreiben, die der Vielzahl von FPGAs zugehörig sind; ein oder mehrere Takt-Steuereinheiten die Taktgeneratorschaltungen der Vielzahl von FPGAs verwenden, um die FPGA-Taktsignale bei einer TaktFrequenz zu erzeugen, die größer ist als die definierte Frequenz, um die Speicher, die der Vielzahl von FPGAs zugehörig sind, bei einer Speicherbetriebsfrequenz zu betreiben, die größer als die definierte Frequenz ist; und jedes aus der Vielzahl von FPGAs eine Vielzahl von Ausgabepuffern zum Empfangen des FPGA-Taktsignals von den Taktgeneratoren des jeweiligen FPGA und zum Erzeugen von Ausgabe-Taktsignalen bei unterschiedlichen Frequenzen enthält.
  16. Herstellungsgegenstand, der aufweist: wenigstens ein materielles computerlesbares Medium, das eine computerlesbare Programmcodelogik aufweist, die darin materiell verkörpert ist, um Taktsignale für einen zyklusgenauen FPGA-gestützten Hardware-Beschleuniger zu erzeugen, der zum Simulieren von Operationen einer zu prüfenden Einheit (DUT) verwendet wird, wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Frequenzen erzeugen, wobei die mehreren Einheiten-Frequenzen ein definiertes Frequenzverhältnis aufweisen, wobei die computerlesbare Programmcodelogik beim Ablaufen ausführt: Zuordnen von den Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger, wobei der auf FPGA gestützte Hardware-Beschleuniger mehrere Beschleuniger-Taktgeber enthält, die mehrere Beschleuniger-Taktsignale zum Betreiben des FPGA-gestützten Hardware-Beschleunigers erzeugen, um die Operationen der DUT zu simulieren; und Erzeugen der Beschleuniger-Taktsignale des FPGA-gestützten Hardware-Beschleunigers bei mehreren Beschleuniger-Frequenzen, wobei die mehreren Beschleuniger-Frequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten.
  17. Herstellungsgegenstand nach Anspruch 16, wobei es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber handelt; es sich bei den Einheiten-Taktgebern um Taktgeber handelt, die angehalten werden können; die freilaufenden Taktgeber mit den Taktgebern, die angehalten werden können, phasenverriegelt sind; das Zuordnen von den Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger ein Ausführen von definierten synchronen Ereignissen und definierten asynchronen Ereignissen in dem FPGA beinhalten; und alle definierten asynchronen Ereignisse, die in dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des auf FPGA gestützten Hardware-Beschleunigers aufrechtzuerhalten.
  18. Herstellungsgegenstand nach Anspruch 16, wobei die computerlesbare Programmcodelogik beim Ablaufen des Weiteren ausführt: Neustarten der Einheiten-Taktgeber an spezifizierten Zeitpunkten, und wobei: die Einheiten-Taktgeber Anlaufphasen aufweisen, wenn die Einheiten-Taktgeber neu gestartet werden; und die Anlaufphasen aller Einheiten-Taktgeber gleich sind, um eine Zyklusreproduzierbarkeit in der DUT bereitzustellen.
  19. Herstellungsgegenstand nach Anspruch 16, wobei: der FPGA-Hardware-Beschleuniger viele FPGAs aufweist; ein erstes FPGA Funktionssignale zu einem zweiten FPGA über eine Vielzahl von Leitungen überträgt; C gleich der Anzahl von der Vielzahl von Leitungen ist; Cw eine definierte maximale Übertragungsfrequenz eines definierten Signalübertragungszyklus ist, bei der die C Leitungen betrieben werden können, um die Funktionssignale von dem ersten FPGA zu dem zweiten FPGA zu übertragen; P eine definierte maximale Anzahl der Funktionssignale ist, die von dem ersten FPGA zu dem zweiten FPGA übertragen werden; wobei M ein Multiplex-Verhältnis ist mit M = P/C; L die Anzahl der definierten Zyklen ist, die erforderlich sind, damit die Funktionssignale von dem ersten FPGA zu dem zweiten FPGA übertragen werden; und die computerlesbare Programmcodelogik beim Ablaufen des Weiteren ausführt: Betreiben der DUT bei einer Frequenz, die kleiner als eine definierte maximale Einheiten-Frequenz Ca oder gleich dieser ist, wobei gilt: Ca ist kleiner als oder gleich Cw/(M+L) und wobei: jedes der FPGAs einem Zielspeicher zugehörig ist und eine Taktgeneratorschaltung zum Erzeugen eines FPGA-Taktsignals enthält; die DUT in definierten DUT-Zyklen bei einer definierten DUT-Frequenz betrieben wird; das Zuordnen von den Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger beinhaltet das Verwenden der FPGA-Taktsignale zum Betreiben der Speicher, die der Vielzahl von FPGAs zugehörig sind; und das Erzeugen der Beschleuniger-Taktsignale beinhaltet ein Verwenden der Taktgeneratorschaltungen der Vielzahl von FPGAs zum Erzeugen der FPGA-Taktsignale bei einer Taktfrequenz, die größer ist als die definierte DUT-Frequenz, um die Speicher, die der Vielzahl von FPFAs zugehörig sind, bei einer Speicherbetriebsfrequenz zu betreiben, die größer ist als die definierte DUT-Frequenz.
  20. Verfahren zum Verwenden eines Hardware-Beschleunigers auf der Grundlage eines vor Ort programmierbaren Gate-Array (FPGA) zum Simulieren von Operationen einer zu prüfenden Einheit (device-under-test, DUT), wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Frequenzen erzeugen, wobei die mehreren Einheiten-Frequenzen ein definiertes Frequenzverhältnis aufweisen, wobei das Verfahren aufweist: Zuordnen von den Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger, wobei der FPGA-gestützte Hardware-Beschleuniger mehrere Beschleuniger-Taktgeber enthält, die mehrere Beschleuniger-Taktsignale zum Betreiben des FPGA-gestützten Hardware-Beschleunigers erzeugen, um die Operationen der DUT zu simulieren; Erzeugen der Beschleuniger-Taktsignale des FPGA-gestützten Hardware-Beschleunigers bei mehreren Beschleuniger-Frequenzen, wobei die mehreren Beschleuniger-Frequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten; und Verwenden des FPGA-gestützten Hardware-Beschleunigers zum Steuern der Frequenzen der mehreren Einheiten-Taktgeber.
  21. Verfahren nach Anspruch 20, wobei: es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber handelt; es sich bei den Einheiten-Taktgebern um Taktgeber handelt, die angehalten werden können; und die freilaufenden Taktgeber mit den Taktgebern, die angehalten werden können, phasenverriegelt sind.
  22. Verfahren nach Anspruch 20, wobei das Zuordnen von den Operationen der DUT zu dem FPGA-gestützten Hardware-Beschleuniger ein Ausführen von definierten synchronen Ereignissen und definierten asynchronen Ereignissen in dem FPGA beinhaltet; und alle definierten asynchronen Ereignisse, die in dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des FPGA-gestützten Hardware-Beschleunigers aufrechtzuerhalten.
  23. Zyklusgenauer FPGA-gestützter Hardware-Beschleuniger zum Simulieren von Operationen einer zu prüfenden Einheit (DUT), wobei die DUT mehrere Einheiten-Taktgeber enthält, die mehrere Einheiten-Taktsignale zum Betrieb der DUT bei mehreren Einheiten-Taktfrequenzen erzeugen, wobei die mehreren Einheiten-Taktfrequenzen ein definiertes Frequenzverhältnis aufweisen, wobei der FPGA-gestützte Hardware-Beschleuniger aufweist: eine Vielzahl von FPGAs, wobei jedes FPGA einem Zielspeicher zugehörig ist; mehrere Beschleuniger-Taktgeber in den FPGAs zum Erzeugen mehrerer Beschleuniger-Taktsignale zum Betreiben der Vielzahl von FPGAs, um die Operationen der DUT zu simulieren; und ein oder mehrere Takt-Steuereinheiten zum Betreiben der Beschleuniger-Taktgeber zum Erzeugen der Beschleuniger-Taktsignale des FPGA-gestützten Hardware-Beschleunigers bei mehreren Beschleuniger-Taktfrequenzen, wobei die mehreren Beschleuniger-Taktfrequenzen das definierte Frequenzverhältnis der Frequenzen der mehreren Einheiten-Taktgeber aufweisen, um eine Zyklusgenauigkeit zwischen der DUT und dem FPGA-gestützten Hardware-Beschleuniger aufrechtzuerhalten.
  24. FPGA-gestützter Hardware-Beschleuniger nach Anspruch 23, wobei: es sich bei den Beschleuniger-Taktgebern um freilaufende Taktgeber handelt; es sich bei den Einheiten-Taktgebern um Taktgeber handelt, die angehalten werden können; die freilaufenden Taktgeber mit den Taktgebern, die angehalten werden können, phasenverriegelt sind; definierte synchrone Ereignisse und definierte asynchrone Ereignisse in den FPGA ausgeführt werden; und alle definierten asynchronen Ereignisse, die in dem FPGA ausgeführt werden, in festen Zeitintervallen auftreten, um eine Zyklusreproduzierbarkeit des FPGA-gestützten Hardware-Beschleunigers aufrechtzuerhalten.
  25. FPGA-gestützter Hardware-Beschleuniger nach Anspruch 23, wobei: die Einheiten-Taktgeber zu spezifizierten Zeitpunkten angehalten und neu gestartet werden können; die Einheiten-Taktgeber Anlaufphasen aufweisen, wenn die Einheiten-Taktgeber neu gestartet werden; und die Anlaufphasen aller Einheiten-Taktgeber gleich sind, um eine Zyklusreproduzierbarkeit in der DUT bereitzustellen, wobei die mehreren Frequenzen der Einheiten-Taktgeber eine Frequenz des kleinsten gemeinsamen Vielfachen aufweisen; und das Verfahren des Weiteren aufweist: Verwenden eines einzelnen Generatortakts zum Erzeugen eines Generatortaktsignals bei der Frequenz des kleinsten gemeinsamen Vielfachen; und Erzeugen von allen der mehreren Einheiten-Taktsignale aus dem Generatortaktsignal.
DE112013000758.4T 2012-03-30 2013-03-19 Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger Active DE112013000758B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/435,614 US9230046B2 (en) 2012-03-30 2012-03-30 Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US13/435,614 2012-03-30
PCT/US2013/032903 WO2013148409A1 (en) 2012-03-30 2013-03-19 Generating clock signals for a cycle accurate, cycle reproducible fpga based hardware accelerator

Publications (2)

Publication Number Publication Date
DE112013000758T5 DE112013000758T5 (de) 2014-12-18
DE112013000758B4 true DE112013000758B4 (de) 2019-09-26

Family

ID=49236190

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000758.4T Active DE112013000758B4 (de) 2012-03-30 2013-03-19 Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger

Country Status (4)

Country Link
US (3) US9230046B2 (de)
DE (1) DE112013000758B4 (de)
GB (1) GB2514503B (de)
WO (1) WO2013148409A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11009550B2 (en) 2013-02-21 2021-05-18 Advantest Corporation Test architecture with an FPGA based test board to simulate a DUT or end-point
US10162007B2 (en) 2013-02-21 2018-12-25 Advantest Corporation Test architecture having multiple FPGA based hardware accelerator blocks for testing multiple DUTs independently
US9952276B2 (en) * 2013-02-21 2018-04-24 Advantest Corporation Tester with mixed protocol engine in a FPGA block
US10161993B2 (en) 2013-02-21 2018-12-25 Advantest Corporation Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block
US9513334B2 (en) * 2013-03-15 2016-12-06 Microsemi SoC Corporation System on a chip FPGA spatial debugging using single snapshot
US10430215B1 (en) * 2015-06-25 2019-10-01 Cadence Design Systems, Inc. Method and system to transfer data between hardware emulator and host workstation
US10771081B2 (en) * 2016-01-15 2020-09-08 Hewlett Packard Enterprise Development Lp Multi-core circuit with mixed signaling
WO2018078451A1 (en) * 2016-10-25 2018-05-03 Reconfigure.Io Limited Synthesis path for transforming concurrent programs into hardware deployable on fpga-based cloud infrastructures
CN107688681B (zh) * 2016-12-23 2020-10-09 北京国睿中数科技股份有限公司 一种提供动态配置参数的硬件加速器验证方法
TWI744581B (zh) * 2018-12-18 2021-11-01 新唐科技股份有限公司 電子裝置以及供電方法
US10976361B2 (en) 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
US11137910B2 (en) 2019-03-04 2021-10-05 Advantest Corporation Fast address to sector number/offset translation to support odd sector size testing
US11237202B2 (en) 2019-03-12 2022-02-01 Advantest Corporation Non-standard sector size system support for SSD testing
US10877178B2 (en) * 2019-05-03 2020-12-29 Institute Of Geology And Geophysics, Chinese Academy Of Sciences Method for suppressing airborne transient electromagnetic in-band vibration noise
US10884847B1 (en) * 2019-08-20 2021-01-05 Advantest Corporation Fast parallel CRC determination to support SSD testing
CN116415539A (zh) * 2021-12-30 2023-07-11 长鑫存储技术有限公司 时钟树的版图及其形成方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998054664A1 (en) 1997-05-30 1998-12-03 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666521A (en) 1992-12-07 1997-09-09 Intel Corporation Method and apparatus for performing bit block transfers in a computer system
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
JPH1040682A (ja) 1996-07-23 1998-02-13 Mitsubishi Electric Corp 半導体記憶装置
JP3673027B2 (ja) 1996-09-05 2005-07-20 沖電気工業株式会社 テスト対象の半導体記憶回路を備えた半導体記憶装置
AUPO647997A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6182258B1 (en) 1997-06-03 2001-01-30 Verisity Ltd. Method and apparatus for test generation during circuit design
US20060117274A1 (en) 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6229852B1 (en) 1998-10-26 2001-05-08 Sony Corporation Reduced-memory video decoder for compressed high-definition video data
KR100337006B1 (ko) * 1998-11-17 2002-05-17 김 만 복 전자회로 설계검증장치 및 방법
US6233277B1 (en) 1999-04-02 2001-05-15 Sony Corporation Reduced-memory video decoder for compressed high-definition video data
US6697957B1 (en) 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
WO2001086513A2 (en) 2000-05-11 2001-11-15 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
US6993469B1 (en) 2000-06-02 2006-01-31 Arm Limited Method and apparatus for unified simulation
US6557161B2 (en) * 2001-06-28 2003-04-29 Sun Microsystems, Inc. Method for prototyping asynchronous circuits using synchronous devices
US7035755B2 (en) * 2001-08-17 2006-04-25 Credence Systems Corporation Circuit testing with ring-connected test instrument modules
US20030061341A1 (en) * 2001-09-26 2003-03-27 Infineon Technologies North America Corp. Media cross conversion interface
EP1302775A1 (de) * 2001-10-16 2003-04-16 Italtel s.p.a. System zur Erzeugung von Taktsignalen für ein Prototypgerät
US7774190B1 (en) * 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US20040078179A1 (en) * 2002-10-17 2004-04-22 Renesas Technology Corp. Logic verification system
US7310760B1 (en) * 2002-12-11 2007-12-18 Chung Sun Apparatus and method for initializing an integrated circuit device and activating a function of the device once an input power supply has reached a threshold voltage
US7392442B2 (en) 2003-03-20 2008-06-24 Qualcomm Incorporated Built-in self-test (BIST) architecture having distributed interpretation and generalized command protocol
US7366652B2 (en) * 2003-06-16 2008-04-29 Springsoft, Inc. Method of programming a co-verification system
US7120571B2 (en) * 2003-06-16 2006-10-10 Fortelink, Inc. Resource board for emulation system
US7072825B2 (en) * 2003-06-16 2006-07-04 Fortelink, Inc. Hierarchical, network-based emulation system
US7356454B2 (en) 2003-10-17 2008-04-08 Ud Technology Corporation Method and apparatus for emulation of logic circuits
US7117143B2 (en) 2003-12-11 2006-10-03 Fortelink, Inc. Clock distribution in a circuit emulator
CA2540365C (en) 2004-02-05 2016-04-05 Research In Motion Limited Memory interface controller
US7788078B1 (en) 2004-02-27 2010-08-31 Synopsys, Inc. Processor/memory co-exploration at multiple abstraction levels
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7269805B1 (en) * 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
US7088632B2 (en) 2004-05-26 2006-08-08 Freescale Semiconductor, Inc. Automatic hidden refresh in a dram and method therefor
WO2006087806A1 (ja) * 2005-02-18 2006-08-24 Fujitsu Limited クロック生成装置、クロック生成方法、クロック生成プログラム、動作検証装置、動作検証方法及び動作検証プログラム
US8000954B2 (en) 2005-03-16 2011-08-16 Gaterocket, Inc. FPGA emulation system
US8145469B2 (en) 2005-04-06 2012-03-27 Quickturn Design Systems, Inc. System and method for providing compact mapping between dissimilar memory systems
US20070129926A1 (en) 2005-12-01 2007-06-07 Verheyen Henry T Hardware acceleration system for simulation of logic and memory
US20070129924A1 (en) 2005-12-06 2007-06-07 Verheyen Henry T Partitioning of tasks for execution by a VLIW hardware acceleration system
WO2007096376A1 (en) 2006-02-21 2007-08-30 Mentor Graphics Corporation Communication scheme between programmable sub-cores in an emulation environment
WO2007098804A1 (en) 2006-02-28 2007-09-07 Mentor Graphics Corp. Memory-based trigger generation scheme in an emulation environment
US8067948B2 (en) * 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
CN100399341C (zh) 2006-03-31 2008-07-02 电子科技大学 一种矢量模式软硬件协同仿真/验证方法
US7856545B2 (en) 2006-07-28 2010-12-21 Drc Computer Corporation FPGA co-processor for accelerated computation
JP2008065640A (ja) 2006-09-07 2008-03-21 Toshiba Corp シミュレーション装置およびそのシミュレーション制御方法
US7587697B1 (en) 2006-12-12 2009-09-08 Tabula, Inc. System and method of mapping memory blocks in a configurable integrated circuit
US7984400B2 (en) 2007-05-09 2011-07-19 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
CN101093521B (zh) 2007-07-24 2011-09-21 中兴通讯股份有限公司 一种fpga仿真装置及其方法
US7774109B2 (en) 2007-09-19 2010-08-10 Gm Global Technology Operations, Inc. Method and apparatus for managing torque inputs to an electro-mechanical transmission
IL187046A0 (en) 2007-10-30 2008-02-09 Sandisk Il Ltd Memory randomization for protection against side channel attacks
US7576584B2 (en) 2007-12-14 2009-08-18 Analog Devices, Inc. Clock generators for generation of in-phase and quadrature clock signals
US7827359B2 (en) 2007-12-14 2010-11-02 Spansion Llc Clock encoded pre-fetch to access memory data in clustering network environment
US8108194B2 (en) 2008-04-25 2012-01-31 Cadence Design Systems, Inc. Peak power detection in digital designs using emulation systems
US7930162B1 (en) 2008-05-05 2011-04-19 Xilinx, Inc. Accelerating hardware co-simulation using dynamic replay on first-in-first-out-driven command processor
US8296120B2 (en) 2008-06-20 2012-10-23 Utah State University FPGA simulated annealing accelerator
US8058905B1 (en) * 2009-01-31 2011-11-15 Xilinx, Inc. Clock distribution to facilitate gated clocks
CN102054056B (zh) 2009-11-06 2012-11-14 复旦大学 一种现场可编程门阵列的抗辐射性能快速模拟方法
US9537488B1 (en) * 2010-05-13 2017-01-03 Altera Corporation Apparatus for configurable interface and associated methods
KR20110136309A (ko) 2010-06-14 2011-12-21 삼성전자주식회사 Fpga 접속 제어 보드 및 이를 이용한 테스트 장치
US8578226B2 (en) * 2010-08-17 2013-11-05 Eigenix Apparatus and system for implementing variable speed scan testing
US8640070B2 (en) * 2010-11-08 2014-01-28 International Business Machines Corporation Method and infrastructure for cycle-reproducible simulation on large scale digital circuits on a coordinated set of field-programmable gate arrays (FPGAs)
US8356272B2 (en) * 2011-05-12 2013-01-15 S2C Inc. Logic verification module apparatus to serve as a hyper prototype for debugging an electronic design that exceeds the capacity of a single FPGA
US9002693B2 (en) * 2012-01-02 2015-04-07 International Business Machines Corporation Wire like link for cycle reproducible and cycle accurate hardware accelerator
US9286423B2 (en) * 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
US8595683B1 (en) * 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment
US10558477B2 (en) * 2016-11-16 2020-02-11 International Business Machines Corporation Array clocking in emulation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998054664A1 (en) 1997-05-30 1998-12-03 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ASAAD, Sameh, et al.: A cycle-accurate, cycle-reproducible multi-FPGA system for accelerating multi-core processor simulation. In: Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays. ACM, 2012. S. 153-162. *

Also Published As

Publication number Publication date
US11093674B2 (en) 2021-08-17
GB201415050D0 (en) 2014-10-08
US10176281B2 (en) 2019-01-08
GB2514503B (en) 2017-03-22
US20160063155A1 (en) 2016-03-03
WO2013148409A1 (en) 2013-10-03
DE112013000758T5 (de) 2014-12-18
US20130262073A1 (en) 2013-10-03
US9230046B2 (en) 2016-01-05
GB2514503A (en) 2014-11-26
US20190147130A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
DE112013000758B4 (de) Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger
DE112013001809T5 (de) Zyklusgenauer und zyklusreproduzierbarer Speicher für einen Hardware-Beschleuniger auf der Grundlage von FPGAs
DE10392497T5 (de) Herstellungsverfahren und Herstellungsvorrichtung zum Vermeiden eines Prototypen-Aufschubs bei der ASIC/SOC-Herstellung
EP0186724B1 (de) Prüf- und Diagnoseeinrichtung für Digitalrechner
DE112006002097T5 (de) Vorsehen genauer Zeitsteuerung zwischen mehreren standardisierten Prüfinstrumentenchassis
US8640070B2 (en) Method and infrastructure for cycle-reproducible simulation on large scale digital circuits on a coordinated set of field-programmable gate arrays (FPGAs)
DE19815534A1 (de) Verfahren und System zum Entwurf und zur Simulation digitaler Rechner-Hardware
DE112012004728T5 (de) Verfahren, Programm und System zur Simulationsausführung
DE69634227T2 (de) Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung
DE102020102820A1 (de) Zeitstempel-Ausrichtung über mehrere Rechenknoten
DE10345150B3 (de) Verfahren, Vorrichtung und System zum Analysieren digitaler Schaltungen
DE102013114341B4 (de) Ein System, ein Verfahren und ein Computerprogrammprodukt zur automatischen Zwei-Phasen-Taktung
DE112006002098T5 (de) Vorsehen genauer Zeitsteuerung innerhalb eines standardisierten Prüfinstrumentenchassis
DE102017117322A1 (de) Verfahren zur Herstellung eines Halbleiterbauelementes mittels computergestütztem Entwurf von Testszenarien
DE112018007913B4 (de) Kommunikationsvorrichtung, kommunikationssystem, kommunikationsverfahren und kommunikationsprogramm
AT501880B1 (de) Speicherprogrammierbare steuerung
EP3739479B1 (de) Verfahren zur fehlersuche in der programmlogik eines systems verteilter programmierbarer gatteranordnungen
DE102016105384A1 (de) Nutzen eines Prozessors mit einem Fehler der Tageszeituhr
EP3142032B1 (de) Verfahren zum ändern der konfiguration eines programmierbaren logikbausteins
DE202016008563U1 (de) Konfigurationssystem zum Konfigurieren eines für das Testen eines Steuergeräts eingerichteten Testgeräts
DE112018007890T5 (de) Kommunikationsvorrichtung, kommunikationssystem, kommunikationsverfahren und kommunikationsprogramm
DE112018002344T5 (de) Entwicklungsunterstützungsvorrichtung
DE102019216684B4 (de) Verfahren zur Timinganalyse von Anwendungssoftware für ein eingebettetes System, Vorrichtung zur Datenverarbeitung, Computerprogramm und computerlesbarer Datenträger
BE1029108B1 (de) System und verfahren zur prototypenverifikation für integrierten schaltkreis auf der grundlage von fpga
WO2016205842A1 (de) Vorrichtung und verfahren zur integration von softwarekomponenten in ein verteiltes zeitgesteuertes echtzeitsystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017500000

Ipc: G06F0030000000

R020 Patent grant now final